summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryo mama <pepper@scannerjammer.com>2015-08-07 18:33:30 -0700
committeryo mama <pepper@scannerjammer.com>2015-08-07 18:33:30 -0700
commit236fd1d9f2009083fbbfce7190c27fbf1d7c88b8 (patch)
tree6077ff15b4b770b4b292aaa14d9cbfff1ba82fae
parentc89619f1b1f908d0f330c468866cea669ce8bf6c (diff)
getting ready
l---------frontend/css/cssreset.css1
l---------frontend/css/general.css1
l---------frontend/css/images1
l---------frontend/css/jquery-ui-1.8.16.custom.css1
l---------frontend/css/main.css1
l---------frontend/css/normalize.css1
l---------frontend/css/overlay.css1
l---------frontend/css/result.css1
l---------frontend/css/sketch.css1
l---------frontend/css/smoothness:1
l---------frontend/css/unsemantic-grid-responsive.css1
-rwxr-xr-xfrontend/im/#ffdead-black_1319995689.jpgbin0 -> 5275 bytes
-rwxr-xr-xfrontend/im/.htaccess7
-rwxr-xr-xfrontend/im/1327390579392dumpfmfrankhatscolor2tablet_1327477683_1327478593_1327480237.gifbin0 -> 256256 bytes
-rwxr-xr-xfrontend/im/HTACCESS3
-rw-r--r--frontend/im/OLD/01/_1424365694_frankhats.gifbin0 -> 43 bytes
-rw-r--r--frontend/im/OLD/13/imgrid_1424839118_imgrid_1424839001_ymba2ut_pepper_pepper.pngbin0 -> 74045 bytes
-rw-r--r--frontend/im/OLD/26/imgrid_1424839138_imgrid_1424839001_ymba2ut_pepper_pepper.pngbin0 -> 74045 bytes
-rw-r--r--frontend/im/OLD/2a/imgrid_1424839194_imgrid_1424839001_ymba2ut_pepper_pepper.pngbin0 -> 74045 bytes
-rw-r--r--frontend/im/OLD/37/imBreak_1424908970_xx_abridged___.gifbin0 -> 313120 bytes
-rw-r--r--frontend/im/OLD/3a/imgrid_1424839041_imgrid_1424839001_ymba2ut_pepper_pepper.pngbin0 -> 74045 bytes
-rw-r--r--frontend/im/OLD/61/imgrid_1424839095_imgrid_1424839001_ymba2ut_pepper_pepper.pngbin0 -> 74045 bytes
-rw-r--r--frontend/im/OLD/61/imgrid_1424839214_imgrid_1424839001_ymba2ut_pepper_pepper.pngbin0 -> 74045 bytes
-rw-r--r--frontend/im/OLD/71/imgrid_1424839153_imgrid_1424839001_ymba2ut_pepper_pepper.pngbin0 -> 74045 bytes
-rw-r--r--frontend/im/OLD/8c/_1424361556_dvvidpw.gifbin0 -> 43 bytes
-rw-r--r--frontend/im/OLD/91/imgrid_1424839066_imgrid_1424839001_ymba2ut_pepper_pepper.pngbin0 -> 74045 bytes
-rw-r--r--frontend/im/OLD/9f/imgrid_1424839118_pepper.pngbin0 -> 2371 bytes
-rw-r--r--frontend/im/OLD/ba/imBreak_1424908974_xx_abridged___.gifbin0 -> 312820 bytes
-rw-r--r--frontend/im/OLD/bb/1423883560371dumpfmdatesdooduok_1424365488_mmi.gifbin0 -> 43 bytes
-rw-r--r--frontend/im/OLD/bb/1423883560371dumpfmdatesdooduok_1424365545_mmi.gifbin0 -> 43 bytes
-rw-r--r--frontend/im/OLD/bc/new_1424372778.gifbin0 -> 43 bytes
-rw-r--r--frontend/im/OLD/bc/new_1424372876.gifbin0 -> 43 bytes
-rw-r--r--frontend/im/OLD/cf/imgrid_1424839174_imgrid_1424839001_ymba2ut_pepper_pepper.pngbin0 -> 74045 bytes
-rwxr-xr-xfrontend/im/OLD/clearthedirectories51
-rw-r--r--frontend/im/OLD/d8/imgrid_1424839121_imgrid_1424839001_ymba2ut_pepper_pepper.pngbin0 -> 74045 bytes
-rw-r--r--frontend/im/OLD/e6/imBreak_1424908981_xx_abridged___.gifbin0 -> 220702 bytes
-rw-r--r--frontend/im/OLD/e9/_1424362273_dvvidpw.gifbin0 -> 43 bytes
-rw-r--r--frontend/im/OLD/ec/imgrid_1424839230_imgrid_1424839001_ymba2ut_pepper_pepper.pngbin0 -> 74045 bytes
-rw-r--r--frontend/im/OLD/f8/_1424370030.gifbin0 -> 43 bytes
-rwxr-xr-xfrontend/im/THEHTACCESS3
-rwxr-xr-xfrontend/im/api.html50
-rwxr-xr-xfrontend/im/arrow_pointing_left.pngbin0 -> 336 bytes
-rwxr-xr-xfrontend/im/asdf.html462
-rwxr-xr-xfrontend/im/colors.html5429
-rw-r--r--frontend/im/colors/css/jquery.fancybox.css274
-rw-r--r--frontend/im/colors/css/style.css264
-rw-r--r--frontend/im/colors/iframe.js25
-rw-r--r--frontend/im/colors/images/Thumbs.dbbin0 -> 7680 bytes
-rw-r--r--frontend/im/colors/images/bg.dither.gifbin0 -> 52 bytes
-rw-r--r--frontend/im/colors/images/blank.gifbin0 -> 43 bytes
-rw-r--r--frontend/im/colors/images/fancybox_loading.gifbin0 -> 6567 bytes
-rw-r--r--frontend/im/colors/images/fancybox_loading@2x.gifbin0 -> 13984 bytes
-rw-r--r--frontend/im/colors/images/fancybox_overlay.pngbin0 -> 1003 bytes
-rw-r--r--frontend/im/colors/images/fancybox_sprite.pngbin0 -> 1362 bytes
-rw-r--r--frontend/im/colors/images/fancybox_sprite@2x.pngbin0 -> 6553 bytes
-rw-r--r--frontend/im/colors/images/gradient.jpgbin0 -> 1079 bytes
-rw-r--r--frontend/im/colors/images/hoverbackground.jpgbin0 -> 661 bytes
-rw-r--r--frontend/im/colors/images/imcupbg.jpgbin0 -> 18738 bytes
-rw-r--r--frontend/im/colors/images/user_convo.pngbin0 -> 500 bytes
-rw-r--r--frontend/im/colors/images/vase.pngbin0 -> 9650 bytes
-rw-r--r--frontend/im/colors/images/vaseshim.pngbin0 -> 508 bytes
-rw-r--r--frontend/im/colors/index.html108
-rw-r--r--frontend/im/colors/js/ancient.js528
-rw-r--r--frontend/im/colors/js/colorpicker.js2
-rw-r--r--frontend/im/colors/js/data.js6
-rw-r--r--frontend/im/colors/js/jquery-1.10.1.js6
-rw-r--r--frontend/im/colors/js/jquery-1.10.1.min.map1
-rw-r--r--frontend/im/colors/js/jquery.fancybox.js2020
-rw-r--r--frontend/im/colors/js/jquery.mousewheel-3.0.6.pack.js13
-rw-r--r--frontend/im/colors/js/jquery.remember-state.js193
-rw-r--r--frontend/im/colors/js/jquery.remember-state.pack.js1
-rw-r--r--frontend/im/colors_iframe.js45
-rwxr-xr-xfrontend/im/df.html10
-rwxr-xr-xfrontend/im/df.pngbin0 -> 23215 bytes
-rwxr-xr-xfrontend/im/gallery/.htaccess2
-rwxr-xr-xfrontend/im/gallery/pep/.htaccess2
-rwxr-xr-xfrontend/im/gallery_style.css51
-rwxr-xr-xfrontend/im/gradient.html402
-rwxr-xr-xfrontend/im/imcupbg.jpgbin0 -> 18738 bytes
-rwxr-xr-xfrontend/im/index.html569
-rwxr-xr-xfrontend/im/new.gifbin0 -> 144 bytes
-rwxr-xr-xfrontend/im/newimagemaker.html289
-rw-r--r--frontend/im/shader/index.html2
-rw-r--r--frontend/im/thing1.gifbin0 -> 358198 bytes
-rw-r--r--frontend/im/thing2.pngbin0 -> 53371 bytes
-rwxr-xr-xfrontend/imbreak/_broken_by_janie_30e_semitrans1.pngbin0 -> 1217 bytes
-rwxr-xr-xfrontend/imbreak/cssreset.css7
-rwxr-xr-xfrontend/imbreak/imbreakfavico.icobin0 -> 1152 bytes
-rw-r--r--frontend/imbreak/img/ALPHA20IVY20201_1323328300.gifbin0 -> 151388 bytes
-rwxr-xr-xfrontend/imbreak/img/_broken_by_janie_147_greeks.gifbin0 -> 979368 bytes
-rwxr-xr-xfrontend/imbreak/img/_broken_by_janie_16b_justhost_155x75.gifbin0 -> 3946 bytes
-rwxr-xr-xfrontend/imbreak/img/_broken_by_janie_399_a_pair_of_siena_and_carved_white_marble_columns_20th_century_d5409361h.jpgbin0 -> 5398 bytes
-rwxr-xr-xfrontend/imbreak/img/columns.jpgbin0 -> 5398 bytes
-rwxr-xr-xfrontend/imbreak/img/firstlogo.gifbin0 -> 71127 bytes
-rwxr-xr-xfrontend/imbreak/img/generating.gifbin0 -> 6679 bytes
-rwxr-xr-xfrontend/imbreak/img/greeks.gifbin0 -> 979364 bytes
-rw-r--r--frontend/imbreak/img/imgrid_1328137237_ivy_pepper.gifbin0 -> 161764 bytes
-rwxr-xr-xfrontend/imbreak/img/ivy.gifbin0 -> 196165 bytes
-rwxr-xr-xfrontend/imbreak/img/ivy2.gifbin0 -> 151388 bytes
-rwxr-xr-xfrontend/imbreak/img/newmain.gifbin0 -> 248285 bytes
-rwxr-xr-xfrontend/imbreak/img/og.jpgbin0 -> 5398 bytes
-rwxr-xr-xfrontend/imbreak/img/on9TF_1322970909_1322970984_1323325278.gifbin0 -> 53535 bytes
-rwxr-xr-xfrontend/imbreak/img/title1.gifbin0 -> 71123 bytes
-rwxr-xr-xfrontend/imbreak/index.html274
-rwxr-xr-xfrontend/imbreak/jquery-ui-1.8.16.custom.css313
-rwxr-xr-xfrontend/imbreak/js/imbreak-main.js113
-rwxr-xr-xfrontend/imbreak/js/jcookie.js95
-rwxr-xr-xfrontend/imbreak/js/jquery-ui.min.js414
-rwxr-xr-xfrontend/imbreak/js/jquery.cookie.js96
-rwxr-xr-xfrontend/imbreak/js/jquery.min.js4
-rwxr-xr-xfrontend/imbreak/newindex.html74
-rwxr-xr-xfrontend/imbreak/semitrans1.pngbin0 -> 1213 bytes
-rwxr-xr-xfrontend/imbreak/thegif/1.gifbin0 -> 40908 bytes
-rwxr-xr-xfrontend/imbreak/thegif/2.gifbin0 -> 46199 bytes
-rwxr-xr-xfrontend/imbreak/thegif/2.jpgbin0 -> 31214 bytes
-rwxr-xr-xfrontend/imbreak/thegif/3.gifbin0 -> 38151 bytes
-rwxr-xr-xfrontend/imbreak/thegif/4.gifbin0 -> 37836 bytes
-rwxr-xr-xfrontend/imbreak/thegif/5.gifbin0 -> 37446 bytes
-rwxr-xr-xfrontend/imbreak/thegif/6.gifbin0 -> 58649 bytes
-rwxr-xr-xfrontend/imbreak/thegif/6.jpgbin0 -> 35595 bytes
-rwxr-xr-xfrontend/imbreak/thegif/6.sunbin0 -> 160831 bytes
-rwxr-xr-xfrontend/imbreak/thegif/three.gifbin0 -> 37898 bytes
-rwxr-xr-xfrontend/imdither/.gitignore2
-rwxr-xr-xfrontend/imdither/18.bmpbin0 -> 330 bytes
-rwxr-xr-xfrontend/imdither/bottle.py3605
-rwxr-xr-xfrontend/imdither/imdither.html291
-rwxr-xr-xfrontend/imdither/img/logo.pngbin0 -> 8810 bytes
-rwxr-xr-xfrontend/imdither/jquery.min.js18
-rwxr-xr-xfrontend/imdither/makeDither.py72
-rwxr-xr-xfrontend/imdither/pbutils.py238
-rwxr-xr-xfrontend/imdither/run.py35
-rwxr-xr-xfrontend/imdither/s3.py618
-rwxr-xr-xfrontend/imdither/urlDownload.py33
l---------frontend/img/ALPHA20IVY20201_1323328300.gif1
l---------frontend/img/_broken_by_janie_147_greeks.gif1
l---------frontend/img/_broken_by_janie_16b_justhost_155x75.gif1
l---------frontend/img/_broken_by_janie_399_a_pair_of_siena_and_carved_white_marble_columns_20th_century_d5409361h.jpg1
l---------frontend/img/athenafinal.gif1
l---------frontend/img/background.gif1
l---------frontend/img/blackplant.png1
l---------frontend/img/blackplant2.png1
l---------frontend/img/blackplant3.png1
l---------frontend/img/bros.png1
l---------frontend/img/brush.png1
l---------frontend/img/columns.jpg1
l---------frontend/img/eraser.png1
l---------frontend/img/facebookimage.png1
l---------frontend/img/firstlogo.gif1
l---------frontend/img/generating.gif1
l---------frontend/img/greeks.gif1
l---------frontend/img/harrisbros.png1
l---------frontend/img/imgrid.png1
l---------frontend/img/imgrid_1328137237_ivy_pepper.gif1
l---------frontend/img/impattern.png1
l---------frontend/img/ivy.gif1
l---------frontend/img/ivy2.gif1
l---------frontend/img/loading.gif1
l---------frontend/img/logo.gif1
l---------frontend/img/newmain.gif1
l---------frontend/img/og.jpg1
l---------frontend/img/oldathena.gif1
l---------frontend/img/on9TF_1322970909_1322970984_1323325278.gif1
l---------frontend/img/test.gif1
l---------frontend/img/thatbackground.gif1
l---------frontend/img/title1.gif1
-rwxr-xr-xfrontend/imgradient/bevelborder(2)295
-rwxr-xr-xfrontend/imgradient/colors.html5429
-rw-r--r--frontend/imgradient/colors_iframe.js82
-rwxr-xr-xfrontend/imgradient/css/custom-theme/images/ui-bg_diagonal-maze_75_ffffff_10x10.pngbin0 -> 81 bytes
-rwxr-xr-xfrontend/imgradient/css/custom-theme/images/ui-bg_diagonals-medium_75_cccccc_40x40.pngbin0 -> 192 bytes
-rwxr-xr-xfrontend/imgradient/css/custom-theme/images/ui-bg_glass_65_ffffff_1x400.pngbin0 -> 105 bytes
-rwxr-xr-xfrontend/imgradient/css/custom-theme/images/ui-bg_glass_75_dadada_1x400.pngbin0 -> 111 bytes
-rwxr-xr-xfrontend/imgradient/css/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.pngbin0 -> 110 bytes
-rwxr-xr-xfrontend/imgradient/css/custom-theme/images/ui-bg_gloss-wave_0_aaaaaa_500x100.pngbin0 -> 491 bytes
-rwxr-xr-xfrontend/imgradient/css/custom-theme/images/ui-bg_inset-hard_55_fbf9ee_1x100.pngbin0 -> 112 bytes
-rwxr-xr-xfrontend/imgradient/css/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.pngbin0 -> 123 bytes
-rwxr-xr-xfrontend/imgradient/css/custom-theme/images/ui-icons_222222_256x240.pngbin0 -> 4369 bytes
-rwxr-xr-xfrontend/imgradient/css/custom-theme/images/ui-icons_2e83ff_256x240.pngbin0 -> 4369 bytes
-rwxr-xr-xfrontend/imgradient/css/custom-theme/images/ui-icons_454545_256x240.pngbin0 -> 4369 bytes
-rwxr-xr-xfrontend/imgradient/css/custom-theme/images/ui-icons_888888_256x240.pngbin0 -> 4369 bytes
-rwxr-xr-xfrontend/imgradient/css/custom-theme/images/ui-icons_cd0a0a_256x240.pngbin0 -> 4369 bytes
-rwxr-xr-xfrontend/imgradient/css/custom-theme/jquery-ui-1.8.16.custom.css313
-rwxr-xr-xfrontend/imgradient/dirs.html256
-rwxr-xr-xfrontend/imgradient/dirs.py7
-rwxr-xr-xfrontend/imgradient/firstrun/blue-turquoise_1315104576.gifbin0 -> 27619 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/blue-turquoise_1315104586.gifbin0 -> 40953 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/blue-turquoise_1315104592.gifbin0 -> 40953 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/blue-turquoise_1315104597.gifbin0 -> 40953 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/blue-turquoise_1315104604.gifbin0 -> 30209 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/blue-turquoise_1315104609.gifbin0 -> 40953 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/green-black_1315122389.gifbin0 -> 26606 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/green-black_1315122400.gifbin0 -> 42529 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/green-black_1315122410.gifbin0 -> 140207 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/green-black_1315122420.gifbin0 -> 148464 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/green-black_1315122433.gifbin0 -> 150936 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/green-black_1315122439.gifbin0 -> 152250 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/green-black_1315122450.gifbin0 -> 39752 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/green-darkorchid_1315122486.gifbin0 -> 31822 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/pink-brown_1315117256_pepper.gifbin0 -> 115111 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/pink-brown_1315117275_pepper.gifbin0 -> 630 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/pink-brown_1315117282_pepper.gifbin0 -> 36839 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/pink-brown_1315117337_pepper.gifbin0 -> 2864 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/pink-brown_1315117344_pepper.gifbin0 -> 9356 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/red-black_1315104452_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/red-black_1315104469_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/red-black_1315104474_pepper.gifbin0 -> 28822 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/red-black_1315104486_pepper.gifbin0 -> 44167 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/red-black_1315104496_pepper.gifbin0 -> 49569 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/red-black_1315104503_pepper.gifbin0 -> 49569 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/red-black_1315104513_pepper.gifbin0 -> 50791 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/red-black_1315104557_pepper.gifbin0 -> 28206 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/red-black_1315104564_pepper.gifbin0 -> 28544 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/red-black_1315104570_pepper.gifbin0 -> 28206 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/red-black_1315104579_pepper.gifbin0 -> 28206 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/red-black_1315104583_pepper.gifbin0 -> 28206 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/red-black_1315105326_pepper.gifbin0 -> 47817 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/snow2-orange_1315118700.gifbin0 -> 116920 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/snow2-rosybrown1_1315117026_pepper.gifbin0 -> 29058 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/turquoise-black_1315109992.gifbin0 -> 30126 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/turquoise-black_1315109999.gifbin0 -> 110122 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/turquoise-black_1315110014.gifbin0 -> 30126 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/turquoise-black_1315110018.gifbin0 -> 116015 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/turquoise-black_1315116328_pepper.gifbin0 -> 30126 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/turquoise-indianred_1315106124_pepper.gifbin0 -> 30063 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/turquoise-indianred_1315106162_pepper.gifbin0 -> 37760 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/turquoise-indianred_1315106185_pepper.gifbin0 -> 47117 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/turquoise-indianred_1315106200_pepper.gifbin0 -> 40017 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/turquoise-turquoise1_1315165837_pepper.gifbin0 -> 145424 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/turquoise-turquoise1_1315165849_pepper.gifbin0 -> 65666 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315090214.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315090397.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315104253_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315104262_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315104264_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315104276_pepper.gifbin0 -> 5707 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315104281_pepper.gifbin0 -> 604 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315104287_pepper.gifbin0 -> 5707 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315104447_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315106725_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315113027.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315113031.gifbin0 -> 106725 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315113039.gifbin0 -> 630 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315113043.gifbin0 -> 37967 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315113054.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315113059.gifbin0 -> 105970 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315113066.gifbin0 -> 630 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315113070.gifbin0 -> 37967 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315113080.gifbin0 -> 3562 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315113215.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315113231_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315113240_pepper.gifbin0 -> 630 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315113554_pepper.gifbin0 -> 630 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315113558_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315114146_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315114150_pepper.gifbin0 -> 102899 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315114156_pepper.gifbin0 -> 630 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315114160_pepper.gifbin0 -> 37967 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315115826_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315115828_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315115830_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315115831_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315116319_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315117463_pepper.gifbin0 -> 102435 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315118264_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315118293_pepper.gifbin0 -> 106729 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315118571_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315119305_pepper.gifbin0 -> 106669 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315119637_pepper.gifbin0 -> 37967 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315120513_pepper.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315121913_pepper.gifbin0 -> 630 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315121922_pepper.gifbin0 -> 37967 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315121930_pepper.gifbin0 -> 5584 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315122356.gifbin0 -> 21455 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315122405.gifbin0 -> 28786 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-black_1315159828_pepper.gifbin0 -> 194 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-turquoise_1315113096.gifbin0 -> 3851 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-turquoise_1315113100.gifbin0 -> 3851 bytes
-rwxr-xr-xfrontend/imgradient/firstrun/white-turquoise_1315113101.gifbin0 -> 3851 bytes
-rwxr-xr-xfrontend/imgradient/index.html541
-rwxr-xr-xfrontend/imgradient/jquery-ui-1.8.16.custom.min.js84
-rwxr-xr-xfrontend/imgrid/3ddirs.txt256
-rwxr-xr-xfrontend/imgrid/backup.html466
-rwxr-xr-xfrontend/imgrid/colors/1.html59
-rwxr-xr-xfrontend/imgrid/colors/blackshim.pngbin0 -> 382 bytes
-rwxr-xr-xfrontend/imgrid/colors/colors/1.html59
-rwxr-xr-xfrontend/imgrid/colors/colors/blackshim.pngbin0 -> 382 bytes
-rwxr-xr-xfrontend/imgrid/colors/colors/grayshim.pngbin0 -> 399 bytes
-rwxr-xr-xfrontend/imgrid/colors/colors/hoverbutton.pngbin0 -> 1337 bytes
-rwxr-xr-xfrontend/imgrid/colors/colors/index.html3507
-rwxr-xr-xfrontend/imgrid/colors/colors/js/backgroundswitcher.js38
-rwxr-xr-xfrontend/imgrid/colors/colors/js/colordict.js3
-rwxr-xr-xfrontend/imgrid/colors/colors/js/colordictionaries2.js3
-rwxr-xr-xfrontend/imgrid/colors/colors/js/ditherbackground.gifbin0 -> 52 bytes
-rwxr-xr-xfrontend/imgrid/colors/colors/js/goldenfunctions.js33
-rwxr-xr-xfrontend/imgrid/colors/colors/js/hexrgbnametoggle.js148
-rwxr-xr-xfrontend/imgrid/colors/colors/js/hoverbackground.jpgbin0 -> 661 bytes
-rwxr-xr-xfrontend/imgrid/colors/colors/js/hovercss.js31
-rwxr-xr-xfrontend/imgrid/colors/colors/js/iftransparentcss.js25
-rwxr-xr-xfrontend/imgrid/colors/colors/js/jquery-1.6.4.min.js4
-rwxr-xr-xfrontend/imgrid/colors/colors/js/jquery.cookie.js96
-rwxr-xr-xfrontend/imgrid/colors/colors/js/setupdimensions.js173
-rwxr-xr-xfrontend/imgrid/colors/colors/js/wrkshp/colors.html5429
-rwxr-xr-xfrontend/imgrid/colors/colors/js/wrkshp/hexes1
-rwxr-xr-xfrontend/imgrid/colors/colors/js/wrkshp/maker.py33
-rwxr-xr-xfrontend/imgrid/colors/colors/js/wrkshp/names1
-rwxr-xr-xfrontend/imgrid/colors/colors/js/wrkshp/rgbs1
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/ScrollEffect.js86
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/ScrollEffectcomingsoon.js237
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/brush.anibin0 -> 12950 bytes
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/colordictOLD.js2
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/colorpicker.html254
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/colorpixx.css2047
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/colorpixx.js92
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/colors.html5429
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/colorsbest.html3606
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/divlist.js2
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/divlistmaker32
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/mapmaker.html3586
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/picker.js15
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/scrollio.html3850
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/separate126
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/todo.txt135
-rwxr-xr-xfrontend/imgrid/colors/colors/junk/withscroller.html3850
-rwxr-xr-xfrontend/imgrid/colors/colors/minimap.html3891
-rwxr-xr-xfrontend/imgrid/colors/colors/minoan.gifbin0 -> 16077 bytes
-rwxr-xr-xfrontend/imgrid/colors/colors/savior.html3582
-rwxr-xr-xfrontend/imgrid/colors/colors/test.html56
-rwxr-xr-xfrontend/imgrid/colors/colors/vase.gifbin0 -> 8214 bytes
-rwxr-xr-xfrontend/imgrid/colors/colors/vase.pngbin0 -> 9650 bytes
-rwxr-xr-xfrontend/imgrid/colors/colors/vaseshim.pngbin0 -> 508 bytes
-rwxr-xr-xfrontend/imgrid/colors/colors/whiteshim.pngbin0 -> 395 bytes
-rwxr-xr-xfrontend/imgrid/colors/grayshim.pngbin0 -> 399 bytes
-rwxr-xr-xfrontend/imgrid/colors/hoverbutton.pngbin0 -> 1337 bytes
-rwxr-xr-xfrontend/imgrid/colors/index.html3507
-rwxr-xr-xfrontend/imgrid/colors/js/backgroundswitcher.js38
-rwxr-xr-xfrontend/imgrid/colors/js/colordict.js3
-rwxr-xr-xfrontend/imgrid/colors/js/colordictionaries2.js3
-rwxr-xr-xfrontend/imgrid/colors/js/ditherbackground.gifbin0 -> 52 bytes
-rwxr-xr-xfrontend/imgrid/colors/js/goldenfunctions.js33
-rwxr-xr-xfrontend/imgrid/colors/js/hexrgbnametoggle.js148
-rwxr-xr-xfrontend/imgrid/colors/js/hoverbackground.jpgbin0 -> 661 bytes
-rwxr-xr-xfrontend/imgrid/colors/js/hovercss.js31
-rwxr-xr-xfrontend/imgrid/colors/js/iftransparentcss.js25
-rwxr-xr-xfrontend/imgrid/colors/js/jquery-1.6.4.min.js4
-rwxr-xr-xfrontend/imgrid/colors/js/jquery.cookie.js96
-rwxr-xr-xfrontend/imgrid/colors/js/setupdimensions.js173
-rwxr-xr-xfrontend/imgrid/colors/js/wrkshp/colors.html5429
-rwxr-xr-xfrontend/imgrid/colors/js/wrkshp/hexes1
-rwxr-xr-xfrontend/imgrid/colors/js/wrkshp/maker.py33
-rwxr-xr-xfrontend/imgrid/colors/js/wrkshp/names1
-rwxr-xr-xfrontend/imgrid/colors/js/wrkshp/rgbs1
-rwxr-xr-xfrontend/imgrid/colors/junk/ScrollEffect.js86
-rwxr-xr-xfrontend/imgrid/colors/junk/ScrollEffectcomingsoon.js237
-rwxr-xr-xfrontend/imgrid/colors/junk/brush.anibin0 -> 12950 bytes
-rwxr-xr-xfrontend/imgrid/colors/junk/colordictOLD.js2
-rwxr-xr-xfrontend/imgrid/colors/junk/colorpicker.html254
-rwxr-xr-xfrontend/imgrid/colors/junk/colorpixx.css2047
-rwxr-xr-xfrontend/imgrid/colors/junk/colorpixx.js92
-rwxr-xr-xfrontend/imgrid/colors/junk/colors.html5429
-rwxr-xr-xfrontend/imgrid/colors/junk/colorsbest.html3606
-rwxr-xr-xfrontend/imgrid/colors/junk/divlist.js2
-rwxr-xr-xfrontend/imgrid/colors/junk/divlistmaker32
-rwxr-xr-xfrontend/imgrid/colors/junk/mapmaker.html3586
-rwxr-xr-xfrontend/imgrid/colors/junk/picker.js15
-rwxr-xr-xfrontend/imgrid/colors/junk/scrollio.html3850
-rwxr-xr-xfrontend/imgrid/colors/junk/separate126
-rwxr-xr-xfrontend/imgrid/colors/junk/todo.txt135
-rwxr-xr-xfrontend/imgrid/colors/junk/withscroller.html3850
-rwxr-xr-xfrontend/imgrid/colors/minimap.html3891
-rwxr-xr-xfrontend/imgrid/colors/minoan.gifbin0 -> 16077 bytes
-rwxr-xr-xfrontend/imgrid/colors/savior.html3582
-rwxr-xr-xfrontend/imgrid/colors/test.html56
-rwxr-xr-xfrontend/imgrid/colors/vase.gifbin0 -> 8214 bytes
-rwxr-xr-xfrontend/imgrid/colors/vase.pngbin0 -> 9650 bytes
-rwxr-xr-xfrontend/imgrid/colors/vaseshim.pngbin0 -> 508 bytes
-rwxr-xr-xfrontend/imgrid/colors/whiteshim.pngbin0 -> 395 bytes
-rwxr-xr-xfrontend/imgrid/css/cssreset.css7
-rwxr-xr-xfrontend/imgrid/css/general.css91
-rwxr-xr-xfrontend/imgrid/css/jquery-ui-1.8.16.custom.css313
-rwxr-xr-xfrontend/imgrid/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.pngbin0 -> 180 bytes
-rwxr-xr-xfrontend/imgrid/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.pngbin0 -> 178 bytes
-rwxr-xr-xfrontend/imgrid/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.pngbin0 -> 120 bytes
-rwxr-xr-xfrontend/imgrid/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.pngbin0 -> 105 bytes
-rwxr-xr-xfrontend/imgrid/css/smoothness/images/ui-bg_glass_75_dadada_1x400.pngbin0 -> 159 bytes
-rwxr-xr-xfrontend/imgrid/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.pngbin0 -> 110 bytes
-rwxr-xr-xfrontend/imgrid/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.pngbin0 -> 119 bytes
-rwxr-xr-xfrontend/imgrid/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.pngbin0 -> 101 bytes
-rwxr-xr-xfrontend/imgrid/css/smoothness/images/ui-icons_222222_256x240.pngbin0 -> 4369 bytes
-rwxr-xr-xfrontend/imgrid/css/smoothness/images/ui-icons_2e83ff_256x240.pngbin0 -> 4369 bytes
-rwxr-xr-xfrontend/imgrid/css/smoothness/images/ui-icons_454545_256x240.pngbin0 -> 4369 bytes
-rwxr-xr-xfrontend/imgrid/css/smoothness/images/ui-icons_888888_256x240.pngbin0 -> 4369 bytes
-rwxr-xr-xfrontend/imgrid/css/smoothness/images/ui-icons_cd0a0a_256x240.pngbin0 -> 4369 bytes
-rwxr-xr-xfrontend/imgrid/css/smoothness/jquery-ui-1.8.16.custom.css313
-rwxr-xr-xfrontend/imgrid/dist/3dmap.jarbin0 -> 42525 bytes
-rwxr-xr-xfrontend/imgrid/dist/3dmap.jnlp38
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/gluegen-rt.jnlp63
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/applet-launcher.jarbin0 -> 65584 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-linux-amd64.jarbin0 -> 8213 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-linux-i586.jarbin0 -> 8086 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-macosx-ppc.jarbin0 -> 7167 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-macosx-universal.jarbin0 -> 8474 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-amd64.jarbin0 -> 8116 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-i586.jarbin0 -> 7909 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-sparc.jarbin0 -> 8345 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-sparcv9.jarbin0 -> 8456 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-windows-amd64.jarbin0 -> 8275 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-windows-i586.jarbin0 -> 6783 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/gluegen-rt.jarbin0 -> 25059 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/jogl-natives-linux-amd64.jarbin0 -> 253122 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/jogl-natives-linux-i586.jarbin0 -> 228834 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/jogl-natives-macosx-ppc.jarbin0 -> 136490 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/jogl-natives-macosx-universal.jarbin0 -> 444191 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-amd64.jarbin0 -> 191870 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-i586.jarbin0 -> 234616 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-sparc.jarbin0 -> 225183 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-sparcv9.jarbin0 -> 214380 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/jogl-natives-windows-amd64.jarbin0 -> 77832 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/jogl-natives-windows-i586.jarbin0 -> 62493 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/jogl.jarbin0 -> 1174256 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jar/testKeysbin0 -> 1289 bytes
-rwxr-xr-xfrontend/imgrid/dist/deployment/v1/jogl-awt.jnlp71
-rwxr-xr-xfrontend/imgrid/dist/http/commons-codec-1.4.jarbin0 -> 62139 bytes
-rwxr-xr-xfrontend/imgrid/dist/http/commons-logging-1.1.1.jarbin0 -> 64455 bytes
-rwxr-xr-xfrontend/imgrid/dist/http/httpclient-4.1.2.jarbin0 -> 376114 bytes
-rwxr-xr-xfrontend/imgrid/dist/http/httpclient-cache-4.1.2.jarbin0 -> 111811 bytes
-rwxr-xr-xfrontend/imgrid/dist/http/httpcore-4.1.2.jarbin0 -> 195688 bytes
-rwxr-xr-xfrontend/imgrid/dist/http/httpmime-4.1.2.jarbin0 -> 29817 bytes
-rwxr-xr-xfrontend/imgrid/dist/http/plugin.jarbin0 -> 1778787 bytes
-rwxr-xr-xfrontend/imgrid/dist/index.html24
-rwxr-xr-xfrontend/imgrid/dist/temp/HeightMap.jpgbin0 -> 2779 bytes
-rwxr-xr-xfrontend/imgrid/dist/temp/Texture.jpgbin0 -> 12198 bytes
-rwxr-xr-xfrontend/imgrid/dist/testKeysbin0 -> 1289 bytes
-rwxr-xr-xfrontend/imgrid/dist_embedded/3DMapAllWin.jarbin0 -> 5018834 bytes
-rwxr-xr-xfrontend/imgrid/dist_embedded/index.html16
-rwxr-xr-xfrontend/imgrid/favicon.icobin0 -> 1406 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/blackplant.pngbin0 -> 64921 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/copy.html327
-rwxr-xr-xfrontend/imgrid/greatgrids/facebookimage.jpgbin0 -> 20532 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/facebookimage.pngbin0 -> 72703 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/gallery.html404
-rwxr-xr-xfrontend/imgrid/greatgrids/greatgrids.icobin0 -> 12606 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/grids.icobin0 -> 3658 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/grids.pngbin0 -> 1379 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/hey.html300
-rwxr-xr-xfrontend/imgrid/greatgrids/images/LaL1S.jpgbin0 -> 105785 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/images/gg1.pngbin0 -> 266089 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/images/gg2.pngbin0 -> 965977 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/images/gg3.pngbin0 -> 934098 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/images/gg4.pngbin0 -> 645523 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/images/gg5.pngbin0 -> 382033 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/images/gg6.pngbin0 -> 676701 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/images/gg7.pngbin0 -> 69309 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/images/gg8.jpgbin0 -> 105785 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/images/gg8.pngbin0 -> 450435 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/index.html430
-rwxr-xr-xfrontend/imgrid/greatgrids/plain.html28
-rwxr-xr-xfrontend/imgrid/greatgrids/screen.html400
-rwxr-xr-xfrontend/imgrid/greatgrids/tinybackground.gifbin0 -> 52 bytes
-rwxr-xr-xfrontend/imgrid/greatgrids/tinybackground2.gifbin0 -> 54 bytes
-rwxr-xr-xfrontend/imgrid/img/athenafinal.gifbin0 -> 5831355 bytes
-rwxr-xr-xfrontend/imgrid/img/background.gifbin0 -> 189710 bytes
-rwxr-xr-xfrontend/imgrid/img/blackplant.pngbin0 -> 64921 bytes
-rwxr-xr-xfrontend/imgrid/img/blackplant2.pngbin0 -> 49197 bytes
-rwxr-xr-xfrontend/imgrid/img/blackplant3.pngbin0 -> 90183 bytes
-rwxr-xr-xfrontend/imgrid/img/bros.pngbin0 -> 284120 bytes
-rwxr-xr-xfrontend/imgrid/img/facebookimage.pngbin0 -> 5694 bytes
-rwxr-xr-xfrontend/imgrid/img/generating.gifbin0 -> 6679 bytes
-rwxr-xr-xfrontend/imgrid/img/harrisbros.pngbin0 -> 284176 bytes
-rwxr-xr-xfrontend/imgrid/img/imgrid.pngbin0 -> 171444 bytes
-rwxr-xr-xfrontend/imgrid/img/oldathena.gifbin0 -> 1007360 bytes
-rwxr-xr-xfrontend/imgrid/img/test.gifbin0 -> 138525 bytes
-rwxr-xr-xfrontend/imgrid/img/thatbackground.gifbin0 -> 110 bytes
-rwxr-xr-xfrontend/imgrid/index.html484
-rwxr-xr-xfrontend/imgrid/indexOLD.html140
-rwxr-xr-xfrontend/imgrid/indexnewold.html336
-rwxr-xr-xfrontend/imgrid/indexold.html322
-rwxr-xr-xfrontend/imgrid/intro.html106
-rwxr-xr-xfrontend/imgrid/jeremy.html398
-rwxr-xr-xfrontend/imgrid/jmd.html346
-rwxr-xr-xfrontend/imgrid/js/colordictbackup.js4
-rw-r--r--frontend/imgrid/js/colors_iframe.js45
-rwxr-xr-xfrontend/imgrid/js/imgrid-main.js121
-rwxr-xr-xfrontend/imgrid/js/jquery-1.6.4.min.js4
-rwxr-xr-xfrontend/imgrid/js/jquery-ui-1.8.16.custom.min.js84
-rwxr-xr-xfrontend/imgrid/js/maincopy.js109
-rwxr-xr-xfrontend/imgrid/js/popup.js69
-rwxr-xr-xfrontend/imgrid/js/sliders.js83
-rwxr-xr-xfrontend/imgrid/old.html461
-rwxr-xr-xfrontend/imgrid/oldindex.html307
-rwxr-xr-xfrontend/imgrid/safety.html488
-rwxr-xr-xfrontend/imgrid/sj6v1.zipbin0 -> 167449 bytes
-rw-r--r--frontend/imlandscape/README.md0
-rw-r--r--frontend/imlandscape/img/Heightmap.jpgbin0 -> 2779 bytes
-rw-r--r--frontend/imlandscape/img/Texture.jpgbin0 -> 12198 bytes
-rw-r--r--frontend/imlandscape/img/generating_background.gifbin0 -> 389693 bytes
-rw-r--r--frontend/imlandscape/index.html113
-rw-r--r--frontend/imlandscape/js/3D_Landscape.js248
-rw-r--r--frontend/imlandscape/js/Detector.js52
-rw-r--r--frontend/imlandscape/js/RequestAnimationFrame.js24
-rw-r--r--frontend/imlandscape/js/Three.js708
-rw-r--r--frontend/imlandscape/js/generating.js8
-rw-r--r--frontend/imlandscape/js/jquery.min.js4
-rw-r--r--frontend/imlandscape/js/keypress.js1132
-rw-r--r--frontend/imlandscape/js/pb.js71
-rw-r--r--frontend/imlandscape/js/username.js30
-rw-r--r--frontend/imlandscape/simple_proxy.py29
-rw-r--r--frontend/impattern/app.pl34
-rw-r--r--frontend/impattern/css/main.css101
-rw-r--r--frontend/impattern/css/normalize.css427
-rw-r--r--frontend/impattern/css/overlay.css43
-rw-r--r--frontend/impattern/css/result.css3
-rw-r--r--frontend/impattern/css/sketch.css45
-rw-r--r--frontend/impattern/css/unsemantic-grid-responsive.css1403
-rw-r--r--frontend/impattern/img/brush.pngbin0 -> 734 bytes
-rw-r--r--frontend/impattern/img/eraser.pngbin0 -> 616 bytes
-rw-r--r--frontend/impattern/img/impattern.pngbin0 -> 3577 bytes
-rw-r--r--frontend/impattern/img/loading.gifbin0 -> 135282 bytes
-rw-r--r--frontend/impattern/img/logo.gifbin0 -> 117877 bytes
-rw-r--r--frontend/impattern/impattern.html254
-rwxr-xr-xfrontend/impattern/index.html340
-rw-r--r--frontend/impattern/js/display_result.js1
-rw-r--r--frontend/impattern/js/inputs.js26
-rw-r--r--frontend/impattern/js/jquery.min.js18
-rw-r--r--frontend/impattern/js/overlay.js19
-rw-r--r--frontend/impattern/js/preview.js47
-rw-r--r--frontend/impattern/js/sketch.js219
-rw-r--r--frontend/impattern/js/urls.js3
-rw-r--r--frontend/impattern/js/username.js30
-rwxr-xr-xfrontend/impattern/makePattern.py111
-rw-r--r--frontend/impattern/myjson.json1
-rw-r--r--frontend/impattern/newimagefromjson.py26
-rw-r--r--frontend/impattern/old/bottle.py3605
-rw-r--r--frontend/impattern/old/index.html.old305
-rw-r--r--frontend/impattern/old/oldpatterns/1.pngbin0 -> 90 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/10.pngbin0 -> 2484 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/11.pngbin0 -> 2484 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/12.pngbin0 -> 2483 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/13.pngbin0 -> 2467 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/14.pngbin0 -> 2478 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/15.pngbin0 -> 2487 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/16.pngbin0 -> 2480 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/17.pngbin0 -> 2461 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/18.pngbin0 -> 2475 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/19.pngbin0 -> 2471 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/2.pngbin0 -> 2470 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/20.pngbin0 -> 2472 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/21.pngbin0 -> 2472 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/22.pngbin0 -> 2477 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/23.pngbin0 -> 2472 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/24.pngbin0 -> 2467 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/25.pngbin0 -> 2473 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/26.pngbin0 -> 2480 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/27.pngbin0 -> 2482 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/28.pngbin0 -> 2482 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/29.pngbin0 -> 2487 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/3.pngbin0 -> 2469 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/30.pngbin0 -> 2487 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/31.pngbin0 -> 2478 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/32.pngbin0 -> 2465 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/33.pngbin0 -> 2484 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/34.pngbin0 -> 2484 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/35.pngbin0 -> 2476 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/36.pngbin0 -> 2490 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/37.pngbin0 -> 2495 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/38.pngbin0 -> 2492 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/39.pngbin0 -> 2482 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/4.pngbin0 -> 2465 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/40.pngbin0 -> 2485 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/41.pngbin0 -> 2496 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/42.pngbin0 -> 2494 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/43.pngbin0 -> 2490 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/44.pngbin0 -> 2491 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/45.pngbin0 -> 2484 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/46.pngbin0 -> 2490 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/47.pngbin0 -> 2486 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/48.pngbin0 -> 2490 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/49.pngbin0 -> 2483 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/5.pngbin0 -> 2476 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/50.pngbin0 -> 2486 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/51.pngbin0 -> 2485 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/52.pngbin0 -> 2490 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/53.pngbin0 -> 2494 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/54.pngbin0 -> 2491 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/55.pngbin0 -> 2474 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/56.pngbin0 -> 2492 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/57.pngbin0 -> 2492 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/58.pngbin0 -> 2487 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/59.pngbin0 -> 2493 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/6.pngbin0 -> 2480 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/60.pngbin0 -> 2488 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/61.pngbin0 -> 2492 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/62.pngbin0 -> 2487 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/63.pngbin0 -> 2494 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/64.pngbin0 -> 2487 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/65.pngbin0 -> 2467 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/66.pngbin0 -> 2471 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/67.pngbin0 -> 2470 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/68.pngbin0 -> 2471 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/69.pngbin0 -> 2470 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/7.pngbin0 -> 2474 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/70.pngbin0 -> 2473 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/71.pngbin0 -> 2477 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/72.pngbin0 -> 2476 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/73.pngbin0 -> 2484 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/74.pngbin0 -> 2486 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/75.pngbin0 -> 2490 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/76.pngbin0 -> 2484 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/77.pngbin0 -> 2492 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/78.pngbin0 -> 2491 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/79.pngbin0 -> 2496 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/8.pngbin0 -> 2476 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/80.pngbin0 -> 2493 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/81.pngbin0 -> 2462 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/82.pngbin0 -> 2472 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/83.pngbin0 -> 2462 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/84.pngbin0 -> 2467 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/85.pngbin0 -> 2462 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/86.pngbin0 -> 2468 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/87.pngbin0 -> 2472 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/88.pngbin0 -> 2475 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/89.pngbin0 -> 2467 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/9.pngbin0 -> 2477 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/90.pngbin0 -> 2471 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/91.pngbin0 -> 2467 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/92.pngbin0 -> 2470 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/93.pngbin0 -> 2483 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/94.pngbin0 -> 2485 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/95.pngbin0 -> 2485 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/96.pngbin0 -> 2477 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a0.pngbin0 -> 138 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a1.pngbin0 -> 122 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a10.pngbin0 -> 129 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a11.pngbin0 -> 138 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a12.pngbin0 -> 125 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a13.pngbin0 -> 132 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a14.pngbin0 -> 91 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a15.pngbin0 -> 143 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a16.pngbin0 -> 87 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a17.pngbin0 -> 93 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a18.pngbin0 -> 163 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a19.pngbin0 -> 119 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a2.pngbin0 -> 123 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a20.pngbin0 -> 83 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a21.pngbin0 -> 111 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a22.pngbin0 -> 137 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a23.pngbin0 -> 116 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a24.pngbin0 -> 96 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a25.pngbin0 -> 108 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a26.pngbin0 -> 138 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a27.pngbin0 -> 108 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a28.pngbin0 -> 115 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a29.pngbin0 -> 93 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a3.pngbin0 -> 124 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a30.pngbin0 -> 88 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a31.pngbin0 -> 114 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a32.pngbin0 -> 139 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a33.pngbin0 -> 127 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a34.pngbin0 -> 92 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a35.pngbin0 -> 91 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a36.pngbin0 -> 87 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a37.pngbin0 -> 89 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a38.pngbin0 -> 83 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a39.pngbin0 -> 132 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a4.pngbin0 -> 92 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a40.pngbin0 -> 138 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a41.pngbin0 -> 113 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a5.pngbin0 -> 120 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a6.pngbin0 -> 105 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a7.pngbin0 -> 106 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a8.pngbin0 -> 110 bytes
-rw-r--r--frontend/impattern/old/oldpatterns/a9.pngbin0 -> 110 bytes
-rw-r--r--frontend/impattern/other_script.py90
-rw-r--r--frontend/impattern/patterns/1.pngbin0 -> 250 bytes
-rw-r--r--frontend/impattern/patterns/10.pngbin0 -> 249 bytes
-rw-r--r--frontend/impattern/patterns/11.pngbin0 -> 249 bytes
-rw-r--r--frontend/impattern/patterns/12.pngbin0 -> 249 bytes
-rw-r--r--frontend/impattern/patterns/13.pngbin0 -> 243 bytes
-rw-r--r--frontend/impattern/patterns/14.pngbin0 -> 246 bytes
-rw-r--r--frontend/impattern/patterns/15.pngbin0 -> 249 bytes
-rw-r--r--frontend/impattern/patterns/16.pngbin0 -> 245 bytes
-rw-r--r--frontend/impattern/patterns/17.pngbin0 -> 244 bytes
-rw-r--r--frontend/impattern/patterns/18.pngbin0 -> 246 bytes
-rw-r--r--frontend/impattern/patterns/19.pngbin0 -> 249 bytes
-rw-r--r--frontend/impattern/patterns/2.pngbin0 -> 243 bytes
-rw-r--r--frontend/impattern/patterns/20.pngbin0 -> 243 bytes
-rw-r--r--frontend/impattern/patterns/21.pngbin0 -> 248 bytes
-rw-r--r--frontend/impattern/patterns/22.pngbin0 -> 248 bytes
-rw-r--r--frontend/impattern/patterns/23.pngbin0 -> 248 bytes
-rw-r--r--frontend/impattern/patterns/24.pngbin0 -> 243 bytes
-rw-r--r--frontend/impattern/patterns/25.pngbin0 -> 248 bytes
-rw-r--r--frontend/impattern/patterns/26.pngbin0 -> 248 bytes
-rw-r--r--frontend/impattern/patterns/27.pngbin0 -> 248 bytes
-rw-r--r--frontend/impattern/patterns/28.pngbin0 -> 243 bytes
-rw-r--r--frontend/impattern/patterns/29.pngbin0 -> 249 bytes
-rw-r--r--frontend/impattern/patterns/3.pngbin0 -> 246 bytes
-rw-r--r--frontend/impattern/patterns/30.pngbin0 -> 246 bytes
-rw-r--r--frontend/impattern/patterns/31.pngbin0 -> 246 bytes
-rw-r--r--frontend/impattern/patterns/32.pngbin0 -> 241 bytes
-rw-r--r--frontend/impattern/patterns/33.pngbin0 -> 246 bytes
-rw-r--r--frontend/impattern/patterns/34.pngbin0 -> 248 bytes
-rw-r--r--frontend/impattern/patterns/35.pngbin0 -> 244 bytes
-rw-r--r--frontend/impattern/patterns/36.pngbin0 -> 251 bytes
-rw-r--r--frontend/impattern/patterns/37.pngbin0 -> 253 bytes
-rw-r--r--frontend/impattern/patterns/38.pngbin0 -> 253 bytes
-rw-r--r--frontend/impattern/patterns/39.pngbin0 -> 247 bytes
-rw-r--r--frontend/impattern/patterns/4.pngbin0 -> 243 bytes
-rw-r--r--frontend/impattern/patterns/40.pngbin0 -> 254 bytes
-rw-r--r--frontend/impattern/patterns/41.pngbin0 -> 253 bytes
-rw-r--r--frontend/impattern/patterns/42.pngbin0 -> 252 bytes
-rw-r--r--frontend/impattern/patterns/43.pngbin0 -> 252 bytes
-rw-r--r--frontend/impattern/patterns/44.pngbin0 -> 251 bytes
-rw-r--r--frontend/impattern/patterns/45.pngbin0 -> 247 bytes
-rw-r--r--frontend/impattern/patterns/46.pngbin0 -> 252 bytes
-rw-r--r--frontend/impattern/patterns/47.pngbin0 -> 251 bytes
-rw-r--r--frontend/impattern/patterns/48.pngbin0 -> 249 bytes
-rw-r--r--frontend/impattern/patterns/49.pngbin0 -> 245 bytes
-rw-r--r--frontend/impattern/patterns/5.pngbin0 -> 249 bytes
-rw-r--r--frontend/impattern/patterns/50.pngbin0 -> 248 bytes
-rw-r--r--frontend/impattern/patterns/51.pngbin0 -> 246 bytes
-rw-r--r--frontend/impattern/patterns/52.pngbin0 -> 252 bytes
-rw-r--r--frontend/impattern/patterns/53.pngbin0 -> 254 bytes
-rw-r--r--frontend/impattern/patterns/54.pngbin0 -> 253 bytes
-rw-r--r--frontend/impattern/patterns/55.pngbin0 -> 247 bytes
-rw-r--r--frontend/impattern/patterns/56.pngbin0 -> 250 bytes
-rw-r--r--frontend/impattern/patterns/57.pngbin0 -> 253 bytes
-rw-r--r--frontend/impattern/patterns/58.pngbin0 -> 250 bytes
-rw-r--r--frontend/impattern/patterns/59.pngbin0 -> 252 bytes
-rw-r--r--frontend/impattern/patterns/6.pngbin0 -> 249 bytes
-rw-r--r--frontend/impattern/patterns/60.pngbin0 -> 248 bytes
-rw-r--r--frontend/impattern/patterns/61.pngbin0 -> 252 bytes
-rw-r--r--frontend/impattern/patterns/62.pngbin0 -> 248 bytes
-rw-r--r--frontend/impattern/patterns/63.pngbin0 -> 252 bytes
-rw-r--r--frontend/impattern/patterns/64.pngbin0 -> 247 bytes
-rw-r--r--frontend/impattern/patterns/65.pngbin0 -> 241 bytes
-rw-r--r--frontend/impattern/patterns/66.pngbin0 -> 241 bytes
-rw-r--r--frontend/impattern/patterns/67.pngbin0 -> 244 bytes
-rw-r--r--frontend/impattern/patterns/68.pngbin0 -> 241 bytes
-rw-r--r--frontend/impattern/patterns/69.pngbin0 -> 244 bytes
-rw-r--r--frontend/impattern/patterns/7.pngbin0 -> 249 bytes
-rw-r--r--frontend/impattern/patterns/70.pngbin0 -> 241 bytes
-rw-r--r--frontend/impattern/patterns/71.pngbin0 -> 244 bytes
-rw-r--r--frontend/impattern/patterns/72.pngbin0 -> 244 bytes
-rw-r--r--frontend/impattern/patterns/73.pngbin0 -> 248 bytes
-rw-r--r--frontend/impattern/patterns/74.pngbin0 -> 248 bytes
-rw-r--r--frontend/impattern/patterns/75.pngbin0 -> 254 bytes
-rw-r--r--frontend/impattern/patterns/76.pngbin0 -> 254 bytes
-rw-r--r--frontend/impattern/patterns/77.pngbin0 -> 253 bytes
-rw-r--r--frontend/impattern/patterns/78.pngbin0 -> 253 bytes
-rw-r--r--frontend/impattern/patterns/79.pngbin0 -> 251 bytes
-rw-r--r--frontend/impattern/patterns/8.pngbin0 -> 249 bytes
-rw-r--r--frontend/impattern/patterns/80.pngbin0 -> 252 bytes
-rw-r--r--frontend/impattern/patterns/81.pngbin0 -> 243 bytes
-rw-r--r--frontend/impattern/patterns/82.pngbin0 -> 241 bytes
-rw-r--r--frontend/impattern/patterns/83.pngbin0 -> 243 bytes
-rw-r--r--frontend/impattern/patterns/84.pngbin0 -> 241 bytes
-rw-r--r--frontend/impattern/patterns/85.pngbin0 -> 243 bytes
-rw-r--r--frontend/impattern/patterns/86.pngbin0 -> 244 bytes
-rw-r--r--frontend/impattern/patterns/87.pngbin0 -> 244 bytes
-rw-r--r--frontend/impattern/patterns/88.pngbin0 -> 244 bytes
-rw-r--r--frontend/impattern/patterns/89.pngbin0 -> 247 bytes
-rw-r--r--frontend/impattern/patterns/9.pngbin0 -> 249 bytes
-rw-r--r--frontend/impattern/patterns/90.pngbin0 -> 247 bytes
-rw-r--r--frontend/impattern/patterns/91.pngbin0 -> 253 bytes
-rw-r--r--frontend/impattern/patterns/92.pngbin0 -> 253 bytes
-rw-r--r--frontend/impattern/patterns/93.pngbin0 -> 248 bytes
-rw-r--r--frontend/impattern/patterns/94.pngbin0 -> 248 bytes
-rw-r--r--frontend/impattern/patterns/95.pngbin0 -> 250 bytes
-rw-r--r--frontend/impattern/patterns/96.pngbin0 -> 251 bytes
-rw-r--r--frontend/impattern/patterns/a0.pngbin0 -> 266 bytes
-rw-r--r--frontend/impattern/patterns/a1.pngbin0 -> 266 bytes
-rw-r--r--frontend/impattern/patterns/a10.pngbin0 -> 264 bytes
-rw-r--r--frontend/impattern/patterns/a11.pngbin0 -> 268 bytes
-rw-r--r--frontend/impattern/patterns/a12.pngbin0 -> 265 bytes
-rw-r--r--frontend/impattern/patterns/a13.pngbin0 -> 267 bytes
-rw-r--r--frontend/impattern/patterns/a14.pngbin0 -> 246 bytes
-rw-r--r--frontend/impattern/patterns/a15.pngbin0 -> 267 bytes
-rw-r--r--frontend/impattern/patterns/a16.pngbin0 -> 245 bytes
-rw-r--r--frontend/impattern/patterns/a17.pngbin0 -> 247 bytes
-rw-r--r--frontend/impattern/patterns/a18.pngbin0 -> 275 bytes
-rw-r--r--frontend/impattern/patterns/a19.pngbin0 -> 261 bytes
-rw-r--r--frontend/impattern/patterns/a2.pngbin0 -> 264 bytes
-rw-r--r--frontend/impattern/patterns/a20.pngbin0 -> 245 bytes
-rw-r--r--frontend/impattern/patterns/a21.pngbin0 -> 260 bytes
-rw-r--r--frontend/impattern/patterns/a22.pngbin0 -> 272 bytes
-rw-r--r--frontend/impattern/patterns/a23.pngbin0 -> 256 bytes
-rw-r--r--frontend/impattern/patterns/a24.pngbin0 -> 249 bytes
-rw-r--r--frontend/impattern/patterns/a25.pngbin0 -> 254 bytes
-rw-r--r--frontend/impattern/patterns/a26.pngbin0 -> 266 bytes
-rw-r--r--frontend/impattern/patterns/a27.pngbin0 -> 253 bytes
-rw-r--r--frontend/impattern/patterns/a28.pngbin0 -> 256 bytes
-rw-r--r--frontend/impattern/patterns/a29.pngbin0 -> 247 bytes
-rw-r--r--frontend/impattern/patterns/a3.pngbin0 -> 263 bytes
-rw-r--r--frontend/impattern/patterns/a30.pngbin0 -> 247 bytes
-rw-r--r--frontend/impattern/patterns/a31.pngbin0 -> 265 bytes
-rw-r--r--frontend/impattern/patterns/a32.pngbin0 -> 265 bytes
-rw-r--r--frontend/impattern/patterns/a33.pngbin0 -> 264 bytes
-rw-r--r--frontend/impattern/patterns/a34.pngbin0 -> 245 bytes
-rw-r--r--frontend/impattern/patterns/a35.pngbin0 -> 248 bytes
-rw-r--r--frontend/impattern/patterns/a36.pngbin0 -> 246 bytes
-rw-r--r--frontend/impattern/patterns/a37.pngbin0 -> 246 bytes
-rw-r--r--frontend/impattern/patterns/a38.pngbin0 -> 243 bytes
-rw-r--r--frontend/impattern/patterns/a39.pngbin0 -> 268 bytes
-rw-r--r--frontend/impattern/patterns/a4.pngbin0 -> 247 bytes
-rw-r--r--frontend/impattern/patterns/a40.pngbin0 -> 267 bytes
-rw-r--r--frontend/impattern/patterns/a41.pngbin0 -> 258 bytes
-rw-r--r--frontend/impattern/patterns/a5.pngbin0 -> 262 bytes
-rw-r--r--frontend/impattern/patterns/a6.pngbin0 -> 257 bytes
-rw-r--r--frontend/impattern/patterns/a7.pngbin0 -> 258 bytes
-rw-r--r--frontend/impattern/patterns/a8.pngbin0 -> 256 bytes
-rw-r--r--frontend/impattern/patterns/a9.pngbin0 -> 255 bytes
-rw-r--r--frontend/impattern/semi_patterns/1.pngbin0 -> 90 bytes
-rw-r--r--frontend/impattern/semi_patterns/10.pngbin0 -> 2484 bytes
-rw-r--r--frontend/impattern/semi_patterns/11.pngbin0 -> 2484 bytes
-rw-r--r--frontend/impattern/semi_patterns/12.pngbin0 -> 2483 bytes
-rw-r--r--frontend/impattern/semi_patterns/13.pngbin0 -> 2467 bytes
-rw-r--r--frontend/impattern/semi_patterns/14.pngbin0 -> 2478 bytes
-rw-r--r--frontend/impattern/semi_patterns/15.pngbin0 -> 2487 bytes
-rw-r--r--frontend/impattern/semi_patterns/16.pngbin0 -> 2480 bytes
-rw-r--r--frontend/impattern/semi_patterns/17.pngbin0 -> 2461 bytes
-rw-r--r--frontend/impattern/semi_patterns/18.pngbin0 -> 2475 bytes
-rw-r--r--frontend/impattern/semi_patterns/19.pngbin0 -> 2471 bytes
-rw-r--r--frontend/impattern/semi_patterns/2.pngbin0 -> 2470 bytes
-rw-r--r--frontend/impattern/semi_patterns/20.pngbin0 -> 2472 bytes
-rw-r--r--frontend/impattern/semi_patterns/21.pngbin0 -> 2472 bytes
-rw-r--r--frontend/impattern/semi_patterns/22.pngbin0 -> 2477 bytes
-rw-r--r--frontend/impattern/semi_patterns/23.pngbin0 -> 2472 bytes
-rw-r--r--frontend/impattern/semi_patterns/24.pngbin0 -> 2467 bytes
-rw-r--r--frontend/impattern/semi_patterns/25.pngbin0 -> 2473 bytes
-rw-r--r--frontend/impattern/semi_patterns/26.pngbin0 -> 2480 bytes
-rw-r--r--frontend/impattern/semi_patterns/27.pngbin0 -> 2482 bytes
-rw-r--r--frontend/impattern/semi_patterns/28.pngbin0 -> 2482 bytes
-rw-r--r--frontend/impattern/semi_patterns/29.pngbin0 -> 2487 bytes
-rw-r--r--frontend/impattern/semi_patterns/3.pngbin0 -> 2469 bytes
-rw-r--r--frontend/impattern/semi_patterns/30.pngbin0 -> 2487 bytes
-rw-r--r--frontend/impattern/semi_patterns/31.pngbin0 -> 2478 bytes
-rw-r--r--frontend/impattern/semi_patterns/32.pngbin0 -> 2465 bytes
-rw-r--r--frontend/impattern/semi_patterns/33.pngbin0 -> 2484 bytes
-rw-r--r--frontend/impattern/semi_patterns/34.pngbin0 -> 2484 bytes
-rw-r--r--frontend/impattern/semi_patterns/35.pngbin0 -> 2476 bytes
-rw-r--r--frontend/impattern/semi_patterns/36.pngbin0 -> 2490 bytes
-rw-r--r--frontend/impattern/semi_patterns/37.pngbin0 -> 2495 bytes
-rw-r--r--frontend/impattern/semi_patterns/38.pngbin0 -> 2492 bytes
-rw-r--r--frontend/impattern/semi_patterns/39.pngbin0 -> 2482 bytes
-rw-r--r--frontend/impattern/semi_patterns/4.pngbin0 -> 2465 bytes
-rw-r--r--frontend/impattern/semi_patterns/40.pngbin0 -> 2485 bytes
-rw-r--r--frontend/impattern/semi_patterns/41.pngbin0 -> 2496 bytes
-rw-r--r--frontend/impattern/semi_patterns/42.pngbin0 -> 2494 bytes
-rw-r--r--frontend/impattern/semi_patterns/43.pngbin0 -> 2490 bytes
-rw-r--r--frontend/impattern/semi_patterns/44.pngbin0 -> 2491 bytes
-rw-r--r--frontend/impattern/semi_patterns/45.pngbin0 -> 2484 bytes
-rw-r--r--frontend/impattern/semi_patterns/46.pngbin0 -> 2490 bytes
-rw-r--r--frontend/impattern/semi_patterns/47.pngbin0 -> 2486 bytes
-rw-r--r--frontend/impattern/semi_patterns/48.pngbin0 -> 2490 bytes
-rw-r--r--frontend/impattern/semi_patterns/49.pngbin0 -> 2483 bytes
-rw-r--r--frontend/impattern/semi_patterns/5.pngbin0 -> 2476 bytes
-rw-r--r--frontend/impattern/semi_patterns/50.pngbin0 -> 2486 bytes
-rw-r--r--frontend/impattern/semi_patterns/51.pngbin0 -> 2485 bytes
-rw-r--r--frontend/impattern/semi_patterns/52.pngbin0 -> 2490 bytes
-rw-r--r--frontend/impattern/semi_patterns/53.pngbin0 -> 2494 bytes
-rw-r--r--frontend/impattern/semi_patterns/54.pngbin0 -> 2491 bytes
-rw-r--r--frontend/impattern/semi_patterns/55.pngbin0 -> 2474 bytes
-rw-r--r--frontend/impattern/semi_patterns/56.pngbin0 -> 2492 bytes
-rw-r--r--frontend/impattern/semi_patterns/57.pngbin0 -> 2492 bytes
-rw-r--r--frontend/impattern/semi_patterns/58.pngbin0 -> 2487 bytes
-rw-r--r--frontend/impattern/semi_patterns/59.pngbin0 -> 2493 bytes
-rw-r--r--frontend/impattern/semi_patterns/6.pngbin0 -> 2480 bytes
-rw-r--r--frontend/impattern/semi_patterns/60.pngbin0 -> 2488 bytes
-rw-r--r--frontend/impattern/semi_patterns/61.pngbin0 -> 2492 bytes
-rw-r--r--frontend/impattern/semi_patterns/62.pngbin0 -> 2487 bytes
-rw-r--r--frontend/impattern/semi_patterns/63.pngbin0 -> 2494 bytes
-rw-r--r--frontend/impattern/semi_patterns/64.pngbin0 -> 2487 bytes
-rw-r--r--frontend/impattern/semi_patterns/65.pngbin0 -> 2467 bytes
-rw-r--r--frontend/impattern/semi_patterns/66.pngbin0 -> 2471 bytes
-rw-r--r--frontend/impattern/semi_patterns/67.pngbin0 -> 2470 bytes
-rw-r--r--frontend/impattern/semi_patterns/68.pngbin0 -> 2471 bytes
-rw-r--r--frontend/impattern/semi_patterns/69.pngbin0 -> 2470 bytes
-rw-r--r--frontend/impattern/semi_patterns/7.pngbin0 -> 2474 bytes
-rw-r--r--frontend/impattern/semi_patterns/70.pngbin0 -> 2473 bytes
-rw-r--r--frontend/impattern/semi_patterns/71.pngbin0 -> 2477 bytes
-rw-r--r--frontend/impattern/semi_patterns/72.pngbin0 -> 2476 bytes
-rw-r--r--frontend/impattern/semi_patterns/73.pngbin0 -> 2484 bytes
-rw-r--r--frontend/impattern/semi_patterns/74.pngbin0 -> 2486 bytes
-rw-r--r--frontend/impattern/semi_patterns/75.pngbin0 -> 2490 bytes
-rw-r--r--frontend/impattern/semi_patterns/76.pngbin0 -> 2484 bytes
-rw-r--r--frontend/impattern/semi_patterns/77.pngbin0 -> 2492 bytes
-rw-r--r--frontend/impattern/semi_patterns/78.pngbin0 -> 2491 bytes
-rw-r--r--frontend/impattern/semi_patterns/79.pngbin0 -> 2496 bytes
-rw-r--r--frontend/impattern/semi_patterns/8.pngbin0 -> 2476 bytes
-rw-r--r--frontend/impattern/semi_patterns/80.pngbin0 -> 2493 bytes
-rw-r--r--frontend/impattern/semi_patterns/81.pngbin0 -> 2462 bytes
-rw-r--r--frontend/impattern/semi_patterns/82.pngbin0 -> 2472 bytes
-rw-r--r--frontend/impattern/semi_patterns/83.pngbin0 -> 2462 bytes
-rw-r--r--frontend/impattern/semi_patterns/84.pngbin0 -> 2467 bytes
-rw-r--r--frontend/impattern/semi_patterns/85.pngbin0 -> 2462 bytes
-rw-r--r--frontend/impattern/semi_patterns/86.pngbin0 -> 2468 bytes
-rw-r--r--frontend/impattern/semi_patterns/87.pngbin0 -> 2472 bytes
-rw-r--r--frontend/impattern/semi_patterns/88.pngbin0 -> 2475 bytes
-rw-r--r--frontend/impattern/semi_patterns/89.pngbin0 -> 2467 bytes
-rw-r--r--frontend/impattern/semi_patterns/9.pngbin0 -> 2477 bytes
-rw-r--r--frontend/impattern/semi_patterns/90.pngbin0 -> 2471 bytes
-rw-r--r--frontend/impattern/semi_patterns/91.pngbin0 -> 2467 bytes
-rw-r--r--frontend/impattern/semi_patterns/92.pngbin0 -> 2470 bytes
-rw-r--r--frontend/impattern/semi_patterns/93.pngbin0 -> 2483 bytes
-rw-r--r--frontend/impattern/semi_patterns/94.pngbin0 -> 2485 bytes
-rw-r--r--frontend/impattern/semi_patterns/95.pngbin0 -> 2485 bytes
-rw-r--r--frontend/impattern/semi_patterns/96.pngbin0 -> 2477 bytes
-rw-r--r--frontend/impattern/semi_patterns/a0.pngbin0 -> 138 bytes
-rw-r--r--frontend/impattern/semi_patterns/a1.pngbin0 -> 122 bytes
-rw-r--r--frontend/impattern/semi_patterns/a10.pngbin0 -> 129 bytes
-rw-r--r--frontend/impattern/semi_patterns/a11.pngbin0 -> 138 bytes
-rw-r--r--frontend/impattern/semi_patterns/a12.pngbin0 -> 125 bytes
-rw-r--r--frontend/impattern/semi_patterns/a13.pngbin0 -> 132 bytes
-rw-r--r--frontend/impattern/semi_patterns/a14.pngbin0 -> 91 bytes
-rw-r--r--frontend/impattern/semi_patterns/a15.pngbin0 -> 143 bytes
-rw-r--r--frontend/impattern/semi_patterns/a16.pngbin0 -> 87 bytes
-rw-r--r--frontend/impattern/semi_patterns/a17.pngbin0 -> 93 bytes
-rw-r--r--frontend/impattern/semi_patterns/a18.pngbin0 -> 163 bytes
-rw-r--r--frontend/impattern/semi_patterns/a19.pngbin0 -> 119 bytes
-rw-r--r--frontend/impattern/semi_patterns/a2.pngbin0 -> 123 bytes
-rw-r--r--frontend/impattern/semi_patterns/a20.pngbin0 -> 83 bytes
-rw-r--r--frontend/impattern/semi_patterns/a21.pngbin0 -> 111 bytes
-rw-r--r--frontend/impattern/semi_patterns/a22.pngbin0 -> 137 bytes
-rw-r--r--frontend/impattern/semi_patterns/a23.pngbin0 -> 116 bytes
-rw-r--r--frontend/impattern/semi_patterns/a24.pngbin0 -> 96 bytes
-rw-r--r--frontend/impattern/semi_patterns/a25.pngbin0 -> 108 bytes
-rw-r--r--frontend/impattern/semi_patterns/a26.pngbin0 -> 138 bytes
-rw-r--r--frontend/impattern/semi_patterns/a27.pngbin0 -> 108 bytes
-rw-r--r--frontend/impattern/semi_patterns/a28.pngbin0 -> 115 bytes
-rw-r--r--frontend/impattern/semi_patterns/a29.pngbin0 -> 93 bytes
-rw-r--r--frontend/impattern/semi_patterns/a3.pngbin0 -> 124 bytes
-rw-r--r--frontend/impattern/semi_patterns/a30.pngbin0 -> 88 bytes
-rw-r--r--frontend/impattern/semi_patterns/a31.pngbin0 -> 114 bytes
-rw-r--r--frontend/impattern/semi_patterns/a32.pngbin0 -> 139 bytes
-rw-r--r--frontend/impattern/semi_patterns/a33.pngbin0 -> 127 bytes
-rw-r--r--frontend/impattern/semi_patterns/a34.pngbin0 -> 92 bytes
-rw-r--r--frontend/impattern/semi_patterns/a35.pngbin0 -> 91 bytes
-rw-r--r--frontend/impattern/semi_patterns/a36.pngbin0 -> 87 bytes
-rw-r--r--frontend/impattern/semi_patterns/a37.pngbin0 -> 89 bytes
-rw-r--r--frontend/impattern/semi_patterns/a38.pngbin0 -> 83 bytes
-rw-r--r--frontend/impattern/semi_patterns/a39.pngbin0 -> 132 bytes
-rw-r--r--frontend/impattern/semi_patterns/a4.pngbin0 -> 92 bytes
-rw-r--r--frontend/impattern/semi_patterns/a40.pngbin0 -> 138 bytes
-rw-r--r--frontend/impattern/semi_patterns/a41.pngbin0 -> 113 bytes
-rw-r--r--frontend/impattern/semi_patterns/a5.pngbin0 -> 120 bytes
-rw-r--r--frontend/impattern/semi_patterns/a6.pngbin0 -> 105 bytes
-rw-r--r--frontend/impattern/semi_patterns/a7.pngbin0 -> 106 bytes
-rw-r--r--frontend/impattern/semi_patterns/a8.pngbin0 -> 110 bytes
-rw-r--r--frontend/impattern/semi_patterns/a9.pngbin0 -> 110 bytes
-rw-r--r--frontend/impattern/sketch.html231
-rw-r--r--frontend/impattern/test.gifbin0 -> 1584481 bytes
-rw-r--r--frontend/js/ZeroClipboard.js311
l---------frontend/js/colordictbackup.js1
l---------frontend/js/colors_iframe.js1
l---------frontend/js/display_result.js1
-rw-r--r--frontend/js/gallery_isotope_config.js189
l---------frontend/js/imbreak-main.js1
l---------frontend/js/imgrid-main.js1
-rw-r--r--frontend/js/index.html1
l---------frontend/js/inputs.js1
l---------frontend/js/jcookie.js1
-rw-r--r--frontend/js/jquery-1.4.4.min.js167
-rw-r--r--frontend/js/jquery-1.5.2.min.js16
-rw-r--r--frontend/js/jquery-1.6.2.min.js18
l---------frontend/js/jquery-1.6.4.min.js1
-rw-r--r--frontend/js/jquery-1.7.2.min.js4
-rw-r--r--frontend/js/jquery-ui-1.8.16.custom.min.js84
l---------frontend/js/jquery-ui.min.js1
l---------frontend/js/jquery.cookie.js1
-rw-r--r--frontend/js/jquery.isotope.min.js13
-rw-r--r--frontend/js/jquery.js4
-rw-r--r--frontend/js/jquery.md5.js230
l---------frontend/js/jquery.min.js1
l---------frontend/js/main.js1
l---------frontend/js/maincopy.js1
-rw-r--r--frontend/js/okgradient-0.1.js149
l---------frontend/js/overlay.js1
-rw-r--r--frontend/js/pbembed.js65
-rw-r--r--frontend/js/photoblaster-0.1.js22
l---------frontend/js/popup.js1
l---------frontend/js/preview.js1
-rw-r--r--frontend/js/requests.js6
l---------frontend/js/sketch.js1
l---------frontend/js/sliders.js1
-rw-r--r--frontend/js/soundmanager2.js2838
-rw-r--r--frontend/js/titleScrambler.js56
l---------frontend/js/urls.js1
l---------frontend/js/username.js1
-rw-r--r--frontend/js/what.html7
-rw-r--r--frontend/js/zepto-0.7.zipbin0 -> 71083 bytes
-rw-r--r--frontend/js/zepto.js4
-rw-r--r--frontend/server/simple_proxy.py27
-rwxr-xr-xpbserver.py41
992 files changed, 126621 insertions, 2 deletions
diff --git a/frontend/css/cssreset.css b/frontend/css/cssreset.css
new file mode 120000
index 0000000..6924554
--- /dev/null
+++ b/frontend/css/cssreset.css
@@ -0,0 +1 @@
+../imgrid/css/cssreset.css \ No newline at end of file
diff --git a/frontend/css/general.css b/frontend/css/general.css
new file mode 120000
index 0000000..ae33e3a
--- /dev/null
+++ b/frontend/css/general.css
@@ -0,0 +1 @@
+../imgrid/css/general.css \ No newline at end of file
diff --git a/frontend/css/images b/frontend/css/images
new file mode 120000
index 0000000..5e798fa
--- /dev/null
+++ b/frontend/css/images
@@ -0,0 +1 @@
+images \ No newline at end of file
diff --git a/frontend/css/jquery-ui-1.8.16.custom.css b/frontend/css/jquery-ui-1.8.16.custom.css
new file mode 120000
index 0000000..36a911f
--- /dev/null
+++ b/frontend/css/jquery-ui-1.8.16.custom.css
@@ -0,0 +1 @@
+../imgrid/css/jquery-ui-1.8.16.custom.css \ No newline at end of file
diff --git a/frontend/css/main.css b/frontend/css/main.css
new file mode 120000
index 0000000..4f96fb7
--- /dev/null
+++ b/frontend/css/main.css
@@ -0,0 +1 @@
+../impattern/css/main.css \ No newline at end of file
diff --git a/frontend/css/normalize.css b/frontend/css/normalize.css
new file mode 120000
index 0000000..2fbfef8
--- /dev/null
+++ b/frontend/css/normalize.css
@@ -0,0 +1 @@
+../impattern/css/normalize.css \ No newline at end of file
diff --git a/frontend/css/overlay.css b/frontend/css/overlay.css
new file mode 120000
index 0000000..264d326
--- /dev/null
+++ b/frontend/css/overlay.css
@@ -0,0 +1 @@
+../impattern/css/overlay.css \ No newline at end of file
diff --git a/frontend/css/result.css b/frontend/css/result.css
new file mode 120000
index 0000000..e90c968
--- /dev/null
+++ b/frontend/css/result.css
@@ -0,0 +1 @@
+../impattern/css/result.css \ No newline at end of file
diff --git a/frontend/css/sketch.css b/frontend/css/sketch.css
new file mode 120000
index 0000000..d2d99ca
--- /dev/null
+++ b/frontend/css/sketch.css
@@ -0,0 +1 @@
+../impattern/css/sketch.css \ No newline at end of file
diff --git a/frontend/css/smoothness: b/frontend/css/smoothness:
new file mode 120000
index 0000000..816e409
--- /dev/null
+++ b/frontend/css/smoothness:
@@ -0,0 +1 @@
+../imgrid/css/smoothness: \ No newline at end of file
diff --git a/frontend/css/unsemantic-grid-responsive.css b/frontend/css/unsemantic-grid-responsive.css
new file mode 120000
index 0000000..b5fd8ec
--- /dev/null
+++ b/frontend/css/unsemantic-grid-responsive.css
@@ -0,0 +1 @@
+../impattern/css/unsemantic-grid-responsive.css \ No newline at end of file
diff --git a/frontend/im/#ffdead-black_1319995689.jpg b/frontend/im/#ffdead-black_1319995689.jpg
new file mode 100755
index 0000000..6a39695
--- /dev/null
+++ b/frontend/im/#ffdead-black_1319995689.jpg
Binary files differ
diff --git a/frontend/im/.htaccess b/frontend/im/.htaccess
new file mode 100755
index 0000000..b6ae396
--- /dev/null
+++ b/frontend/im/.htaccess
@@ -0,0 +1,7 @@
+RewriteEngine On
+RewriteCond %{REQUEST_URI} .*/im/(..)/(.*jpg|.*gif|.*png|.*jpeg)$ [NC]
+RewriteRule ^(.*)$ http://i.asdf.us/im/%1/%2 [R=301,L]
+Header add Access-Control-Allow-Origin "http://atrium.dump.fm"
+Header add Access-Control-Allow-Origin "http://dump.fm"
+Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
+Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
diff --git a/frontend/im/1327390579392dumpfmfrankhatscolor2tablet_1327477683_1327478593_1327480237.gif b/frontend/im/1327390579392dumpfmfrankhatscolor2tablet_1327477683_1327478593_1327480237.gif
new file mode 100755
index 0000000..fead3f4
--- /dev/null
+++ b/frontend/im/1327390579392dumpfmfrankhatscolor2tablet_1327477683_1327478593_1327480237.gif
Binary files differ
diff --git a/frontend/im/HTACCESS b/frontend/im/HTACCESS
new file mode 100755
index 0000000..220a0e2
--- /dev/null
+++ b/frontend/im/HTACCESS
@@ -0,0 +1,3 @@
+RewriteEngine On
+RewriteCond %{REQUEST_URI} .*/im/(..)/(.*jpg|.*gif|.*png|.*jpeg)$ [NC]
+RewriteRule ^(.*)$ http://i.asdf.us/im/%1/%2 [R=301,L]
diff --git a/frontend/im/OLD/01/_1424365694_frankhats.gif b/frontend/im/OLD/01/_1424365694_frankhats.gif
new file mode 100644
index 0000000..3c51d74
--- /dev/null
+++ b/frontend/im/OLD/01/_1424365694_frankhats.gif
Binary files differ
diff --git a/frontend/im/OLD/13/imgrid_1424839118_imgrid_1424839001_ymba2ut_pepper_pepper.png b/frontend/im/OLD/13/imgrid_1424839118_imgrid_1424839001_ymba2ut_pepper_pepper.png
new file mode 100644
index 0000000..266d54f
--- /dev/null
+++ b/frontend/im/OLD/13/imgrid_1424839118_imgrid_1424839001_ymba2ut_pepper_pepper.png
Binary files differ
diff --git a/frontend/im/OLD/26/imgrid_1424839138_imgrid_1424839001_ymba2ut_pepper_pepper.png b/frontend/im/OLD/26/imgrid_1424839138_imgrid_1424839001_ymba2ut_pepper_pepper.png
new file mode 100644
index 0000000..266d54f
--- /dev/null
+++ b/frontend/im/OLD/26/imgrid_1424839138_imgrid_1424839001_ymba2ut_pepper_pepper.png
Binary files differ
diff --git a/frontend/im/OLD/2a/imgrid_1424839194_imgrid_1424839001_ymba2ut_pepper_pepper.png b/frontend/im/OLD/2a/imgrid_1424839194_imgrid_1424839001_ymba2ut_pepper_pepper.png
new file mode 100644
index 0000000..266d54f
--- /dev/null
+++ b/frontend/im/OLD/2a/imgrid_1424839194_imgrid_1424839001_ymba2ut_pepper_pepper.png
Binary files differ
diff --git a/frontend/im/OLD/37/imBreak_1424908970_xx_abridged___.gif b/frontend/im/OLD/37/imBreak_1424908970_xx_abridged___.gif
new file mode 100644
index 0000000..bcc8038
--- /dev/null
+++ b/frontend/im/OLD/37/imBreak_1424908970_xx_abridged___.gif
Binary files differ
diff --git a/frontend/im/OLD/3a/imgrid_1424839041_imgrid_1424839001_ymba2ut_pepper_pepper.png b/frontend/im/OLD/3a/imgrid_1424839041_imgrid_1424839001_ymba2ut_pepper_pepper.png
new file mode 100644
index 0000000..266d54f
--- /dev/null
+++ b/frontend/im/OLD/3a/imgrid_1424839041_imgrid_1424839001_ymba2ut_pepper_pepper.png
Binary files differ
diff --git a/frontend/im/OLD/61/imgrid_1424839095_imgrid_1424839001_ymba2ut_pepper_pepper.png b/frontend/im/OLD/61/imgrid_1424839095_imgrid_1424839001_ymba2ut_pepper_pepper.png
new file mode 100644
index 0000000..266d54f
--- /dev/null
+++ b/frontend/im/OLD/61/imgrid_1424839095_imgrid_1424839001_ymba2ut_pepper_pepper.png
Binary files differ
diff --git a/frontend/im/OLD/61/imgrid_1424839214_imgrid_1424839001_ymba2ut_pepper_pepper.png b/frontend/im/OLD/61/imgrid_1424839214_imgrid_1424839001_ymba2ut_pepper_pepper.png
new file mode 100644
index 0000000..266d54f
--- /dev/null
+++ b/frontend/im/OLD/61/imgrid_1424839214_imgrid_1424839001_ymba2ut_pepper_pepper.png
Binary files differ
diff --git a/frontend/im/OLD/71/imgrid_1424839153_imgrid_1424839001_ymba2ut_pepper_pepper.png b/frontend/im/OLD/71/imgrid_1424839153_imgrid_1424839001_ymba2ut_pepper_pepper.png
new file mode 100644
index 0000000..266d54f
--- /dev/null
+++ b/frontend/im/OLD/71/imgrid_1424839153_imgrid_1424839001_ymba2ut_pepper_pepper.png
Binary files differ
diff --git a/frontend/im/OLD/8c/_1424361556_dvvidpw.gif b/frontend/im/OLD/8c/_1424361556_dvvidpw.gif
new file mode 100644
index 0000000..3c51d74
--- /dev/null
+++ b/frontend/im/OLD/8c/_1424361556_dvvidpw.gif
Binary files differ
diff --git a/frontend/im/OLD/91/imgrid_1424839066_imgrid_1424839001_ymba2ut_pepper_pepper.png b/frontend/im/OLD/91/imgrid_1424839066_imgrid_1424839001_ymba2ut_pepper_pepper.png
new file mode 100644
index 0000000..266d54f
--- /dev/null
+++ b/frontend/im/OLD/91/imgrid_1424839066_imgrid_1424839001_ymba2ut_pepper_pepper.png
Binary files differ
diff --git a/frontend/im/OLD/9f/imgrid_1424839118_pepper.png b/frontend/im/OLD/9f/imgrid_1424839118_pepper.png
new file mode 100644
index 0000000..0c8ee7d
--- /dev/null
+++ b/frontend/im/OLD/9f/imgrid_1424839118_pepper.png
Binary files differ
diff --git a/frontend/im/OLD/ba/imBreak_1424908974_xx_abridged___.gif b/frontend/im/OLD/ba/imBreak_1424908974_xx_abridged___.gif
new file mode 100644
index 0000000..f0b981d
--- /dev/null
+++ b/frontend/im/OLD/ba/imBreak_1424908974_xx_abridged___.gif
Binary files differ
diff --git a/frontend/im/OLD/bb/1423883560371dumpfmdatesdooduok_1424365488_mmi.gif b/frontend/im/OLD/bb/1423883560371dumpfmdatesdooduok_1424365488_mmi.gif
new file mode 100644
index 0000000..3c51d74
--- /dev/null
+++ b/frontend/im/OLD/bb/1423883560371dumpfmdatesdooduok_1424365488_mmi.gif
Binary files differ
diff --git a/frontend/im/OLD/bb/1423883560371dumpfmdatesdooduok_1424365545_mmi.gif b/frontend/im/OLD/bb/1423883560371dumpfmdatesdooduok_1424365545_mmi.gif
new file mode 100644
index 0000000..3c51d74
--- /dev/null
+++ b/frontend/im/OLD/bb/1423883560371dumpfmdatesdooduok_1424365545_mmi.gif
Binary files differ
diff --git a/frontend/im/OLD/bc/new_1424372778.gif b/frontend/im/OLD/bc/new_1424372778.gif
new file mode 100644
index 0000000..3c51d74
--- /dev/null
+++ b/frontend/im/OLD/bc/new_1424372778.gif
Binary files differ
diff --git a/frontend/im/OLD/bc/new_1424372876.gif b/frontend/im/OLD/bc/new_1424372876.gif
new file mode 100644
index 0000000..3c51d74
--- /dev/null
+++ b/frontend/im/OLD/bc/new_1424372876.gif
Binary files differ
diff --git a/frontend/im/OLD/cf/imgrid_1424839174_imgrid_1424839001_ymba2ut_pepper_pepper.png b/frontend/im/OLD/cf/imgrid_1424839174_imgrid_1424839001_ymba2ut_pepper_pepper.png
new file mode 100644
index 0000000..266d54f
--- /dev/null
+++ b/frontend/im/OLD/cf/imgrid_1424839174_imgrid_1424839001_ymba2ut_pepper_pepper.png
Binary files differ
diff --git a/frontend/im/OLD/clearthedirectories b/frontend/im/OLD/clearthedirectories
new file mode 100755
index 0000000..6d5b2a7
--- /dev/null
+++ b/frontend/im/OLD/clearthedirectories
@@ -0,0 +1,51 @@
+#!/usr/bin/python2.7
+
+import sys
+import os
+import time
+
+f = open("directories",'r')
+lines = f.readlines()
+f.close()
+newlines = []
+for line in lines:
+ if "\n" in line:
+ jerry = line.replace("\n","")
+ if len(jerry) == 2:
+ newlines.append(jerry)
+dirs = newlines
+print dirs
+for dir in dirs:
+ print dir
+ if len(dir) == 2:
+ delete = False
+ os.system("ls "+dir+"/ >> contents")
+ f = open("contents","r")
+ thecontents = f.readlines()
+ f.close()
+ print thecontents
+ os.system("rm contents")
+ tempbool = False
+ tempbool2 = False
+ if len(thecontents) != 0:
+ for x in thecontents:
+ if ".jpg" in x:
+ tempbool = True
+# if len(thedirs)>40:
+# tempbool2 = True
+ if tempbool == True:# and tempbool2 == True:
+ print "deleting contents.."
+ print "moving to directory '"+dir+"'"
+ if len(thecontents)>0:
+ x = input("bout to do some deleting 1=yes 0=no")
+ if x == 1:
+ print "ok deleting "+dir+"/*"
+ try:
+ os.system("rm "+dir+"/*")
+ except:
+ continue
+ else:
+ sys.exit()
+ else:
+ print "nothing there"
+ continue
diff --git a/frontend/im/OLD/d8/imgrid_1424839121_imgrid_1424839001_ymba2ut_pepper_pepper.png b/frontend/im/OLD/d8/imgrid_1424839121_imgrid_1424839001_ymba2ut_pepper_pepper.png
new file mode 100644
index 0000000..266d54f
--- /dev/null
+++ b/frontend/im/OLD/d8/imgrid_1424839121_imgrid_1424839001_ymba2ut_pepper_pepper.png
Binary files differ
diff --git a/frontend/im/OLD/e6/imBreak_1424908981_xx_abridged___.gif b/frontend/im/OLD/e6/imBreak_1424908981_xx_abridged___.gif
new file mode 100644
index 0000000..04cc98f
--- /dev/null
+++ b/frontend/im/OLD/e6/imBreak_1424908981_xx_abridged___.gif
Binary files differ
diff --git a/frontend/im/OLD/e9/_1424362273_dvvidpw.gif b/frontend/im/OLD/e9/_1424362273_dvvidpw.gif
new file mode 100644
index 0000000..3c51d74
--- /dev/null
+++ b/frontend/im/OLD/e9/_1424362273_dvvidpw.gif
Binary files differ
diff --git a/frontend/im/OLD/ec/imgrid_1424839230_imgrid_1424839001_ymba2ut_pepper_pepper.png b/frontend/im/OLD/ec/imgrid_1424839230_imgrid_1424839001_ymba2ut_pepper_pepper.png
new file mode 100644
index 0000000..266d54f
--- /dev/null
+++ b/frontend/im/OLD/ec/imgrid_1424839230_imgrid_1424839001_ymba2ut_pepper_pepper.png
Binary files differ
diff --git a/frontend/im/OLD/f8/_1424370030.gif b/frontend/im/OLD/f8/_1424370030.gif
new file mode 100644
index 0000000..3c51d74
--- /dev/null
+++ b/frontend/im/OLD/f8/_1424370030.gif
Binary files differ
diff --git a/frontend/im/THEHTACCESS b/frontend/im/THEHTACCESS
new file mode 100755
index 0000000..220a0e2
--- /dev/null
+++ b/frontend/im/THEHTACCESS
@@ -0,0 +1,3 @@
+RewriteEngine On
+RewriteCond %{REQUEST_URI} .*/im/(..)/(.*jpg|.*gif|.*png|.*jpeg)$ [NC]
+RewriteRule ^(.*)$ http://i.asdf.us/im/%1/%2 [R=301,L]
diff --git a/frontend/im/api.html b/frontend/im/api.html
new file mode 100755
index 0000000..2ea9d75
--- /dev/null
+++ b/frontend/im/api.html
@@ -0,0 +1,50 @@
+<!doctype html>
+<html>
+<head>
+<title>Photoblaster API</title>
+<script type="text/javascript" src="/js/jquery.js"></script>
+<script type="text/javascript" src="/js/photoblaster-0.1.js"></script>
+<style type="text/css">
+@font-face {
+ font-family: 'PixelComicSans-Regular';
+ src: url('/fonts/pixelcomicsans/PixelComicSans-Regular.eot?#iefix') format('embedded-opentype'),
+ url('/fonts/pixelcomicsans/PixelComicSans-Regular.woff') format('woff'),
+ url('/fonts/pixelcomicsans/PixelComicSans-Regular.ttf') format('truetype'),
+ url('/fonts/pixelcomicsans/PixelComicSans-Regular.svg#svgFontName') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+body {
+ font-family: "PixelComicSans-Regular", sans-serif;
+ background: #ddd;
+}
+</style>
+</head>
+<body>
+<p>Push this button to test the API: <button id="test">TEST</button></p>
+<p id="output"></p>
+</body>
+<script type="text/javascript">
+$(function(){
+// var url = "http://www.maskworld.com/pix/masks/025-party-face-gesicht-fasching-karneval-carnival-halloween-latex-film-movie-larp-theatre-theater-horror-rubber-gummi-mask-masks-maske-masken.jpg";
+ var url = "http://thecoolgadgets.com/wp-content/uploads/2010/03/hamburger_usb_flash_drive.jpg";
+ var name = "test";
+ function success (data) {
+ var s = "";
+ for (i in data) {
+ s += i + ": <b>" + data[i] + "</b><br>";
+ }
+ s += "old: <img src='URL'><br>".replace('URL', url);
+ s += "new: <img src='URL'><br>".replace('URL', data['url']);
+ $("#output").html(s);
+ };
+ function error (e) {
+ $("#output").html("There was an error: <b>" + e + "</b>");
+ };
+ $("#test").click(function() {
+ $.photoblaster(url, name, success, error);
+ });
+});
+</script>
+
diff --git a/frontend/im/arrow_pointing_left.png b/frontend/im/arrow_pointing_left.png
new file mode 100755
index 0000000..ba1fb53
--- /dev/null
+++ b/frontend/im/arrow_pointing_left.png
Binary files differ
diff --git a/frontend/im/asdf.html b/frontend/im/asdf.html
new file mode 100755
index 0000000..e8b8687
--- /dev/null
+++ b/frontend/im/asdf.html
@@ -0,0 +1,462 @@
+<!doctype html>
+<html>
+<head>
+<title>PHOTOBLASTER</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta property="og:title" content="PHOTOBLASTER"/>
+<meta property="og:type" content="website"/>
+<meta property="og:url" content="http://asdf.us/im/"/>
+<meta property="og:image" content="http://asdf.us/im/6e/sparklebling1_1310021111_1310071704.gif" />
+<meta property="og:site_name" content="asdf.us"/>
+<meta property="og:description" content="Paste a link into the first box, then use the other settings to colorize, distort, add transparency and a background."/>
+<meta property="fb:admins" content="100001923956223,1709246"/>
+<style type="text/css">
+*
+ {
+ padding: 0;
+ margin: 0;
+ font-family: sans-serif;
+ }
+body
+ {
+ overflow: hidden;
+ background-color: #e6e0e0;
+ // background-color: #838388;
+ color: #555;
+ }
+#controls,#result
+ {
+ display: inline-block;
+ padding: 10px;
+ width: 430px;
+ position: absolute;
+ }
+#controls
+ {
+ font-size: 14px;
+ top: 0; left: 0;
+ z-index: 5;
+ }
+#result
+ {
+ background-color: #d6d0d0;
+// background-color: #131412;
+ top: 10px; left: 480px;
+ display: none;
+ z-index: 5;
+ }
+#instructions
+ {
+ position: absolute;
+ bottom: 10px;
+ left: 10px;
+ line-height: 18px;
+ z-index: 1;
+ }
+p,form
+ {
+// background-color: #010101;
+ background-color: #fff;
+ background-image: url(imcupbg.jpg);
+ background-position: center center;
+ padding: 10px;
+ font-size: 14px;
+ width: 430px;
+ display: block;
+ }
+#gallery-link
+ {
+ background-color: #fff;
+ background-image: url(imcupbg.jpg);
+ background-position: center center;
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ padding: 10px;
+ z-index: 10;
+ }
+.error
+ {
+ color: red;
+ font-size: 20px;
+ }
+a
+ {
+// color: #b4d;
+ color: #a39;
+ font-weight: bold;
+ }
+label
+ {
+ display: inline-block;
+ width: 190px;
+ padding-right: 10px;
+ text-align: right;
+ }
+small
+ {
+ color: #777;
+ }
+input[type=text]
+ {
+ width: 100px;
+ }
+#img-url,#output-url,#img-background
+ {
+ width: 200px;
+ }
+#img-fuzz,#img-width,#img-height,#img-brightness,#img-saturation,#img-contrast,#img-hue,#img-rotate
+ {
+ width: 50px;
+ text-align: right;
+ }
+button
+ {
+ padding: 2px 5px;
+ font-size: 16px;
+ }
+#result img
+ {
+ max-width: 400px;
+ max-height: 400px;
+ }
+#output-cmd
+ {
+ font-size: 12px;
+ white-space: pre;
+ }
+.shim
+ {
+ height: 10px;
+ clear: both;
+ display: block;
+ }
+#output-url
+ {
+ width: 320px;
+ }
+#likebutton
+ {
+ display: none;
+ position: absolute;
+ bottom: 10px;
+ right: 10px;
+ width: 350px;
+ background-color: #fff;
+ background-image: url(imcupbg.jpg);
+ padding: 10px;
+ color: #ddd;
+ font-family: trebuchet ms, sans-serif;
+ }
+div#controls, span#userlink {
+ display: none;
+} span#userlink a {
+ text-transform: capitalize;
+}
+</style>
+<body>
+<div id="controls">
+<form id="imform" action="javascript:return false">
+ <label id="img-url-label">IMAGE URL</label>
+ <input type="text" id="img-url" />
+ <br/>
+ <label id="background-url-label">background URL</label>
+ <input type="text" id="img-background" value="" />
+ <br/>
+
+ <label>compose operator</label>
+ <select id="img-compose">
+ <option selected="selected">Over</option>
+ <option>ATop</option>
+ <option>Dst_Over</option>
+ <option>Dst_In</option>
+ <option>Dst_Out</option>
+ <option>Multiply</option>
+ <option>Screen</option>
+ <option>Divide</option>
+ <option>Plus</option>
+ <option>Difference</option>
+ <option>Exclusion</option>
+ <option>Lighten</option>
+ <option>Darken</option>
+ <option>Overlay</option>
+ <option>Hard_Light</option>
+ <option>Soft_Light</option>
+ <option>Pegtop_Light</option>
+ <option>Linear_Light</option>
+ <option>Vivid_Light</option>
+ <option>Pin_Light</option>
+ <option>Linear_Dodge</option>
+ <option>Linear_Burn</option>
+ <option>Color_Dodge</option>
+ <option>Color_Burn</option>
+ </select>
+<!-- <br>
+ <label>tile foreground?</label>
+
+ <input type="checkbox" id="img-tile" value="1" />
+ <br/> -->
+
+<!--
+ <label>merge before recolor?</label>
+ <input type="checkbox" id="img-merge_early" value="1" />
+ <br/>
+
+-->
+ <span class="shim"></span>
+
+
+ <span class="shim"></span>
+
+ <label>make transparent?</label>
+ <input type="checkbox" id="img-transparent" value="1" checked="true" />
+ <br/>
+
+ <label>remove color</label>
+ <input type="text" id="img-subtract" value="white" />
+ <br/>
+
+ <label>transparency fuzz</label>
+ <input type="text" id="img-fuzz" value="5" />%
+ <br/>
+
+ <span class="shim"></span>
+
+ <label>resize width</label>
+ <input type="text" id="img-width" /><small>px</small>
+ <br/>
+
+ <label>resize height</label>
+ <input type="text" id="img-height" /><small>px</small>
+ <br/>
+
+ <span class="shim"></span>
+
+ <label>recolor white</label>
+ <input type="text" id="img-white" value="white" />
+ <a href="colors/index.html" style="font-size: 10px">List of Color Names</a>
+ <br/>
+
+ <label>recolor black</label>
+ <input type="text" id="img-black" value="black" />
+ <br/>
+
+ <span class="shim"></span>
+
+ <label>hue <small>(0-200)</small></label>
+ <input type="text" id="img-hue" value="" />
+ <br/>
+<!--
+ <label>saturation <small>(0-200)</small></label>
+ <input type="text" id="img-saturation" value="" />
+ <br/>
+-->
+<!--
+ <label>brightness <small>(0-200)</small></label>
+ <input type="text" id="img-brightness" value="" />
+ <br/>
+-->
+<!--
+ <label>contrast <small>(0-200)</small></label>
+ <input type="text" id="img-contrast" value="" />
+ <br/>
+-->
+
+ <span class="shim"></span>
+
+ <label>flip horizontally?</label>
+ <input type="checkbox" id="img-flop" value="1" />
+ <br/>
+
+ <label>flip vertically?</label>
+ <input type="checkbox" id="img-flip" value="1" />
+ <br/>
+
+ <label>rotate <small>(0-360)</small></label>
+ <input type="text" id="img-rotate" value="" />&deg;
+ <br/>
+
+ <span class="shim"></span>
+
+ <label>output format</label>
+ <select id="img-format">
+ <option selected="selected">gif</option>
+ <option>jpg</option>
+ <option>png</option>
+ </select>
+ <!-- <input type="reset" id="reset-button" value="reset-button"></input>-->
+
+
+ <span class="shim"></span>
+
+ <label>put your name here &gt;&gt;&gt;</label>
+ <input type="text" id="img-name" value="" />
+ <br/>
+
+ <span class="shim"></span>
+
+ <label>&nbsp;</label>
+ <button id="img-generate">GENERATE</button>
+
+ </form>
+
+ <span class="shim"></span>
+ <p>
+ <img src="new.gif" width="32" height="16" />
+ Oh now it's on....payback time &rarr; <a href="/imbreak/">FOTO FUCKER</a>
+ <span class="shim"></span>
+ <img src="new.gif" width="32" height="16" />
+ Transform images in 3D &rarr; <a href="/imgrid/">Grid Generator</a>
+ <span class="shim"></span>
+ Gradients make everything better &rarr; <a href="/imgradient/">Gradient Generator</a>
+ </p>
+ <span class="shim"></span>
+ <p>
+ See what people are making &rarr; <a href="/im/gallery/">Image Gallery</a><br/>
+ <span class="shim"></span>
+ The best ones go here &rarr; <a href="http://photoblaster.tumblr.com/">Photoblaster Tumblr</a>
+ <span class="shim"></span>
+ View a random selection &rarr; <a href="/im/gallery/?random=1">Random Gallery</a><br/>
+ <span id="userlink">
+ <span class="shim"></span>
+ Things you've made &rarr; <a href="/im/gallery/?random=1">Your Gallery</a><br/>
+ </span>
+ </p>
+</div>
+
+<div id="result">
+ &rarr; <input type="text" id="output-url"/><br/>
+ <span id="output-cmd"></span><br/>
+
+ <img id="output-img" />
+</div>
+
+<div id="likebutton">
+<div id="fb-root" style="background-color: transparent;"></div><script src="http://connect.facebook.net/en_US/all.js#appId=236917449658413&amp;xfbml=1"></script><fb:like href="http://asdf.us/im/" send="false" width="347" show_faces="true" colorscheme="light" font="" style="background-color: transparent;"></fb:like>
+</div>
+
+</body>
+<script type="text/javascript" src="/js/jquery.js"></script>
+<script type="text/javascript">
+var Main =
+ {
+ API_HEADER: "#@im",
+ generating: false,
+ enter: function (e)
+ {
+ if (Main.generating)
+ return
+ if (e.keyCode === 13)
+ Main.go()
+ },
+ go: function ()
+ {
+ if (Main.generating)
+ return
+ Main.generating = true
+ $("#output-cmd").html('generating...').show()
+ $("#result").show()
+ var data =
+ {
+ url: $("#img-url").val(),
+ transparent: $('#img-transparent:checked').val() !== undefined ? "true" : "false",
+ flip: $('#img-flip:checked').val() !== undefined ? "true" : "false",
+ flop: $('#img-flop:checked').val() !== undefined ? "true" : "false",
+ rotate: $("#img-rotate").val(),
+ subtract: $("#img-subtract").val(),
+ fuzz: $("#img-fuzz").val(),
+ width: $("#img-width").val(),
+ height: $("#img-height").val(),
+ black: $("#img-black").val(),
+ white: $("#img-white").val(),
+ //brightness: $("#img-brightness").val(),
+ //saturation: $("#img-saturation").val(),
+ hue: $("#img-hue").val(),
+ contrast: $("#img-contrast").val(),
+ background: $("#img-background").val(),
+ // merge_early: $('#img-merge_early:checked').val() !== undefined ? "true" : "false",
+ compose: $('#img-compose :selected').text(),
+ // tile: $('#img-tile:checked').val() !== undefined ? "true" : "false",
+ format: $('#img-format :selected').text(),
+ name: $("#img-name").val(),
+ }
+ if (data.name.length > 0)
+ document.cookie = "imname="+data.name+";path=/;domain=.asdf.us;max-age=1086400"
+ $.post("/cgi-bin/im/generate", data, Main.callback)
+ },
+ error: function (s)
+ {
+ $("#output-cmd").html("<span class='error'>ERROR: " + s + "</span>").show()
+ $("#output-url").hide()
+ $("#output-img").hide()
+ },
+ callback: function (raw)
+ {
+ Main.generating = false
+ lines = raw.split("\n")
+ if (lines[0] !== Main.API_HEADER)
+ return Main.error("problem loading API")
+ if (lines[1].indexOf("ERROR\t") === 0)
+ return Main.error(lines[1].split("\t")[1])
+
+ // $("#output-cmd").html(lines[1]+"<br/>"+lines[2])
+ // $("#output-cmd").hide()
+ $("#output-cmd").html("size: "+Main.filesize(lines[4])+"<br/>"+(lines[5].replace(" ", " x ").replace(/'/g,"").replace(',',"")))
+ $("#output-url").val(lines[3])
+ $("#output-img").hide().attr("src", lines[3]).fadeIn(700)
+ },
+ filesize: function (size)
+ {
+ if (size < 1024)
+ return size + " bytes"
+ if (size < 1024 * 1024)
+ return Math.floor (size/1024) + " KB"
+ else
+ return Math.floor (size/(1024*1024)) + " MB"
+ },
+ cookie: function ()
+ {
+ if (document.cookie)
+ {
+ var cookies = document.cookie.split(";")
+ for (i in cookies)
+ {
+ var cookie = cookies[i].split("=")
+ if (cookie[0].indexOf("imname") !== -1)
+ {
+ if (cookie[1] !== 'false' && cookie[1] !== 'undefined' && cookie[1].length)
+ {
+ return cookie[1]
+ }
+ }
+ }
+ }
+ return ""
+ },
+ preloadSize: function(url,label,tag){
+ console.log(url)
+ var img = new Image()
+ img.onload = function(){ $(label).html( tag + ": " + img.naturalWidth + " x " + img.naturalHeight ) }
+ img.src = url
+ },
+ init: function ()
+ {
+ var name = Main.cookie ()
+ $("#img-name").val(name)
+ if (name)
+ {
+ $("#userlink").show()
+ $("#userlink a").attr("href", "/im/gallery/?name="+name).html(name+"'s photoblasts")
+ }
+ $("#likebutton,#controls").fadeIn(0)
+ $("#img-generate").bind("click", Main.go)
+ $("div input[type=text]").bind("keydown", Main.enter)
+ $("#img-url").change(function(){Main.preloadSize(this.value,"#img-url-label","image")})
+ $("#img-background").change(function(){Main.preloadSize(this.value,"#background-url-label","bg")})
+ },
+ }
+document.getElementById('imform').reset();
+Main.init ()
+</script>
+</html>
+
diff --git a/frontend/im/colors.html b/frontend/im/colors.html
new file mode 100755
index 0000000..0ef22f9
--- /dev/null
+++ b/frontend/im/colors.html
@@ -0,0 +1,5429 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- saved from url=(0124)https://mail.google.com/mail/?ui=2&ik=8c5c6e41c0&view=att&th=131a60939ee4c454&attid=0.1&disp=inline&realattid=f_gr2htzs60&zw -->
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head>
+<style type="text/css">
+*
+ {
+ font-family: sans-serif;
+ }
+</style>
+<body>
+
+
+
+<div>
+<h1><a></a>List of Color Names</h1>
+<div>
+
+<p>a list of named colors for use with PHOTOBLASTER:</p>
+
+<table>
+<tbody>
+ <tr>
+ <th align="right">Name</th>
+ <th align="center">Color</th>
+ <th align="left">RGB</th>
+ <th align="left">Hex</th>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow</td>
+ <td align="center" style="background-color:rgb(255, 250, 250)">snow</td>
+ <td align="left">rgb(255, 250, 250)</td>
+ <td align="left">#FFFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow1</td>
+ <td align="center" style="background-color:rgb(255, 250, 250)">snow1</td>
+ <td align="left">rgb(255, 250, 250)</td>
+ <td align="left">#FFFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow2</td>
+ <td align="center" style="background-color:rgb(238, 233, 233)">snow2</td>
+ <td align="left">rgb(238, 233, 233)</td>
+ <td align="left">#EEE9E9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown1</td>
+ <td align="center" style="background-color:rgb(255, 193, 193)">RosyBrown1</td>
+ <td align="left">rgb(255, 193, 193)</td>
+ <td align="left">#FFC1C1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown2</td>
+ <td align="center" style="background-color:rgb(238, 180, 180)">RosyBrown2</td>
+ <td align="left">rgb(238, 180, 180)</td>
+ <td align="left">#EEB4B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow3</td>
+ <td align="center" style="background-color:rgb(205, 201, 201)">snow3</td>
+ <td align="left">rgb(205, 201, 201)</td>
+ <td align="left">#CDC9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCoral</td>
+ <td align="center" style="background-color:rgb(240, 128, 128)">LightCoral</td>
+ <td align="left">rgb(240, 128, 128)</td>
+ <td align="left">#F08080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed1</td>
+ <td align="center" style="background-color:rgb(255, 106, 106)">IndianRed1</td>
+ <td align="left">rgb(255, 106, 106)</td>
+ <td align="left">#FF6A6A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown3</td>
+ <td align="center" style="background-color:rgb(205, 155, 155)">RosyBrown3</td>
+ <td align="left">rgb(205, 155, 155)</td>
+ <td align="left">#CD9B9B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed2</td>
+ <td align="center" style="background-color:rgb(238, 99, 99)">IndianRed2</td>
+ <td align="left">rgb(238, 99, 99)</td>
+ <td align="left">#EE6363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown</td>
+ <td align="center" style="background-color:rgb(188, 143, 143)">RosyBrown</td>
+ <td align="left">rgb(188, 143, 143)</td>
+ <td align="left">#BC8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown1</td>
+ <td align="center" style="background-color:rgb(255, 64, 64)">brown1</td>
+ <td align="left">rgb(255, 64, 64)</td>
+ <td align="left">#FF4040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick1</td>
+ <td align="center" style="background-color:rgb(255, 48, 48)">firebrick1</td>
+ <td align="left">rgb(255, 48, 48)</td>
+ <td align="left">#FF3030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown2</td>
+ <td align="center" style="background-color:rgb(238, 59, 59)">brown2</td>
+ <td align="left">rgb(238, 59, 59)</td>
+ <td align="left">#EE3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed</td>
+ <td align="center" style="background-color:rgb(205, 92, 92)">IndianRed</td>
+ <td align="left">rgb(205, 92, 92)</td>
+ <td align="left">#CD5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed3</td>
+ <td align="center" style="background-color:rgb(205, 85, 85)">IndianRed3</td>
+ <td align="left">rgb(205, 85, 85)</td>
+ <td align="left">#CD5555</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick2</td>
+ <td align="center" style="background-color:rgb(238, 44, 44)">firebrick2</td>
+ <td align="left">rgb(238, 44, 44)</td>
+ <td align="left">#EE2C2C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow4</td>
+ <td align="center" style="background-color:rgb(139, 137, 137)">snow4</td>
+ <td align="left">rgb(139, 137, 137)</td>
+ <td align="left">#8B8989</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown3</td>
+ <td align="center" style="background-color:rgb(205, 51, 51)">brown3</td>
+ <td align="left">rgb(205, 51, 51)</td>
+ <td align="left">#CD3333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red</td>
+ <td align="center" style="background-color:rgb(255, 0, 0)">red</td>
+ <td align="left">rgb(255, 0, 0)</td>
+ <td align="left">#FF0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red1</td>
+ <td align="center" style="background-color:rgb(255, 0, 0)">red1</td>
+ <td align="left">rgb(255, 0, 0)</td>
+ <td align="left">#FF0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown4</td>
+ <td align="center" style="background-color:rgb(139, 105, 105)">RosyBrown4</td>
+ <td align="left">rgb(139, 105, 105)</td>
+ <td align="left">#8B6969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick3</td>
+ <td align="center" style="background-color:rgb(205, 38, 38)">firebrick3</td>
+ <td align="left">rgb(205, 38, 38)</td>
+ <td align="left">#CD2626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red2</td>
+ <td align="center" style="background-color:rgb(238, 0, 0)">red2</td>
+ <td align="left">rgb(238, 0, 0)</td>
+ <td align="left">#EE0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick</td>
+ <td align="center" style="background-color:rgb(178, 34, 34)">firebrick</td>
+ <td align="left">rgb(178, 34, 34)</td>
+ <td align="left">#B22222</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown</td>
+ <td align="center" style="background-color:rgb(165, 42, 42)">brown</td>
+ <td align="left">rgb(165, 42, 42)</td>
+ <td align="left">#A52A2A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red3</td>
+ <td align="center" style="background-color:rgb(205, 0, 0)">red3</td>
+ <td align="left">rgb(205, 0, 0)</td>
+ <td align="left">#CD0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed4</td>
+ <td align="center" style="background-color:rgb(139, 58, 58)">IndianRed4</td>
+ <td align="left">rgb(139, 58, 58)</td>
+ <td align="left">#8B3A3A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown4</td>
+ <td align="center" style="background-color:rgb(139, 35, 35)">brown4</td>
+ <td align="left">rgb(139, 35, 35)</td>
+ <td align="left">#8B2323</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick4</td>
+ <td align="center" style="background-color:rgb(139, 26, 26)">firebrick4</td>
+ <td align="left">rgb(139, 26, 26)</td>
+ <td align="left">#8B1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkRed</td>
+ <td align="center" style="background-color:rgb(139, 0, 0)">DarkRed</td>
+ <td align="left">rgb(139, 0, 0)</td>
+ <td align="left">#8B0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red4</td>
+ <td align="center" style="background-color:rgb(139, 0, 0)">red4</td>
+ <td align="left">rgb(139, 0, 0)</td>
+ <td align="left">#8B0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon</td>
+ <td align="center" style="background-color:rgb(128, 0, 0)">maroon</td>
+ <td align="left">rgb(128, 0, 0)</td>
+ <td align="left">#800000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink1</td>
+ <td align="center" style="background-color:rgb(255, 174, 185)">LightPink1</td>
+ <td align="left">rgb(255, 174, 185)</td>
+ <td align="left">#FFAEB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink3</td>
+ <td align="center" style="background-color:rgb(205, 140, 149)">LightPink3</td>
+ <td align="left">rgb(205, 140, 149)</td>
+ <td align="left">#CD8C95</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink4</td>
+ <td align="center" style="background-color:rgb(139, 95, 101)">LightPink4</td>
+ <td align="left">rgb(139, 95, 101)</td>
+ <td align="left">#8B5F65</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink2</td>
+ <td align="center" style="background-color:rgb(238, 162, 173)">LightPink2</td>
+ <td align="left">rgb(238, 162, 173)</td>
+ <td align="left">#EEA2AD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink</td>
+ <td align="center" style="background-color:rgb(255, 182, 193)">LightPink</td>
+ <td align="left">rgb(255, 182, 193)</td>
+ <td align="left">#FFB6C1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink</td>
+ <td align="center" style="background-color:rgb(255, 192, 203)">pink</td>
+ <td align="left">rgb(255, 192, 203)</td>
+ <td align="left">#FFC0CB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">crimson</td>
+ <td align="center" style="background-color:rgb(220, 20, 60)">crimson</td>
+ <td align="left">rgb(220, 20, 60)</td>
+ <td align="left">#DC143C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink1</td>
+ <td align="center" style="background-color:rgb(255, 181, 197)">pink1</td>
+ <td align="left">rgb(255, 181, 197)</td>
+ <td align="left">#FFB5C5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink2</td>
+ <td align="center" style="background-color:rgb(238, 169, 184)">pink2</td>
+ <td align="left">rgb(238, 169, 184)</td>
+ <td align="left">#EEA9B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink3</td>
+ <td align="center" style="background-color:rgb(205, 145, 158)">pink3</td>
+ <td align="left">rgb(205, 145, 158)</td>
+ <td align="left">#CD919E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink4</td>
+ <td align="center" style="background-color:rgb(139, 99, 108)">pink4</td>
+ <td align="left">rgb(139, 99, 108)</td>
+ <td align="left">#8B636C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed4</td>
+ <td align="center" style="background-color:rgb(139, 71, 93)">PaleVioletRed4</td>
+ <td align="left">rgb(139, 71, 93)</td>
+ <td align="left">#8B475D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed</td>
+ <td align="center" style="background-color:rgb(219, 112, 147)">PaleVioletRed</td>
+ <td align="left">rgb(219, 112, 147)</td>
+ <td align="left">#DB7093</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed2</td>
+ <td align="center" style="background-color:rgb(238, 121, 159)">PaleVioletRed2</td>
+ <td align="left">rgb(238, 121, 159)</td>
+ <td align="left">#EE799F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed1</td>
+ <td align="center" style="background-color:rgb(255, 130, 171)">PaleVioletRed1</td>
+ <td align="left">rgb(255, 130, 171)</td>
+ <td align="left">#FF82AB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed3</td>
+ <td align="center" style="background-color:rgb(205, 104, 137)">PaleVioletRed3</td>
+ <td align="left">rgb(205, 104, 137)</td>
+ <td align="left">#CD6889</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush</td>
+ <td align="center" style="background-color:rgb(255, 240, 245)">LavenderBlush</td>
+ <td align="left">rgb(255, 240, 245)</td>
+ <td align="left">#FFF0F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush1</td>
+ <td align="center" style="background-color:rgb(255, 240, 245)">LavenderBlush1</td>
+ <td align="left">rgb(255, 240, 245)</td>
+ <td align="left">#FFF0F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush3</td>
+ <td align="center" style="background-color:rgb(205, 193, 197)">LavenderBlush3</td>
+ <td align="left">rgb(205, 193, 197)</td>
+ <td align="left">#CDC1C5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush2</td>
+ <td align="center" style="background-color:rgb(238, 224, 229)">LavenderBlush2</td>
+ <td align="left">rgb(238, 224, 229)</td>
+ <td align="left">#EEE0E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush4</td>
+ <td align="center" style="background-color:rgb(139, 131, 134)">LavenderBlush4</td>
+ <td align="left">rgb(139, 131, 134)</td>
+ <td align="left">#8B8386</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon</td>
+ <td align="center" style="background-color:rgb(176, 48, 96)">maroon</td>
+ <td align="left">rgb(176, 48, 96)</td>
+ <td align="left">#B03060</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink3</td>
+ <td align="center" style="background-color:rgb(205, 96, 144)">HotPink3</td>
+ <td align="left">rgb(205, 96, 144)</td>
+ <td align="left">#CD6090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed3</td>
+ <td align="center" style="background-color:rgb(205, 50, 120)">VioletRed3</td>
+ <td align="left">rgb(205, 50, 120)</td>
+ <td align="left">#CD3278</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed1</td>
+ <td align="center" style="background-color:rgb(255, 62, 150)">VioletRed1</td>
+ <td align="left">rgb(255, 62, 150)</td>
+ <td align="left">#FF3E96</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed2</td>
+ <td align="center" style="background-color:rgb(238, 58, 140)">VioletRed2</td>
+ <td align="left">rgb(238, 58, 140)</td>
+ <td align="left">#EE3A8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed4</td>
+ <td align="center" style="background-color:rgb(139, 34, 82)">VioletRed4</td>
+ <td align="left">rgb(139, 34, 82)</td>
+ <td align="left">#8B2252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink2</td>
+ <td align="center" style="background-color:rgb(238, 106, 167)">HotPink2</td>
+ <td align="left">rgb(238, 106, 167)</td>
+ <td align="left">#EE6AA7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink1</td>
+ <td align="center" style="background-color:rgb(255, 110, 180)">HotPink1</td>
+ <td align="left">rgb(255, 110, 180)</td>
+ <td align="left">#FF6EB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink4</td>
+ <td align="center" style="background-color:rgb(139, 58, 98)">HotPink4</td>
+ <td align="left">rgb(139, 58, 98)</td>
+ <td align="left">#8B3A62</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink</td>
+ <td align="center" style="background-color:rgb(255, 105, 180)">HotPink</td>
+ <td align="left">rgb(255, 105, 180)</td>
+ <td align="left">#FF69B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink</td>
+ <td align="center" style="background-color:rgb(255, 20, 147)">DeepPink</td>
+ <td align="left">rgb(255, 20, 147)</td>
+ <td align="left">#FF1493</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink1</td>
+ <td align="center" style="background-color:rgb(255, 20, 147)">DeepPink1</td>
+ <td align="left">rgb(255, 20, 147)</td>
+ <td align="left">#FF1493</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink2</td>
+ <td align="center" style="background-color:rgb(238, 18, 137)">DeepPink2</td>
+ <td align="left">rgb(238, 18, 137)</td>
+ <td align="left">#EE1289</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink3</td>
+ <td align="center" style="background-color:rgb(205, 16, 118)">DeepPink3</td>
+ <td align="left">rgb(205, 16, 118)</td>
+ <td align="left">#CD1076</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink4</td>
+ <td align="center" style="background-color:rgb(139, 10, 80)">DeepPink4</td>
+ <td align="left">rgb(139, 10, 80)</td>
+ <td align="left">#8B0A50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon1</td>
+ <td align="center" style="background-color:rgb(255, 52, 179)">maroon1</td>
+ <td align="left">rgb(255, 52, 179)</td>
+ <td align="left">#FF34B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon2</td>
+ <td align="center" style="background-color:rgb(238, 48, 167)">maroon2</td>
+ <td align="left">rgb(238, 48, 167)</td>
+ <td align="left">#EE30A7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon3</td>
+ <td align="center" style="background-color:rgb(205, 41, 144)">maroon3</td>
+ <td align="left">rgb(205, 41, 144)</td>
+ <td align="left">#CD2990</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon4</td>
+ <td align="center" style="background-color:rgb(139, 28, 98)">maroon4</td>
+ <td align="left">rgb(139, 28, 98)</td>
+ <td align="left">#8B1C62</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumVioletRed</td>
+ <td align="center" style="background-color:rgb(199, 21, 133)">MediumVioletRed</td>
+ <td align="left">rgb(199, 21, 133)</td>
+ <td align="left">#C71585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed</td>
+ <td align="center" style="background-color:rgb(208, 32, 144)">VioletRed</td>
+ <td align="left">rgb(208, 32, 144)</td>
+ <td align="left">#D02090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid2</td>
+ <td align="center" style="background-color:rgb(238, 122, 233)">orchid2</td>
+ <td align="left">rgb(238, 122, 233)</td>
+ <td align="left">#EE7AE9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid</td>
+ <td align="center" style="background-color:rgb(218, 112, 214)">orchid</td>
+ <td align="left">rgb(218, 112, 214)</td>
+ <td align="left">#DA70D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid1</td>
+ <td align="center" style="background-color:rgb(255, 131, 250)">orchid1</td>
+ <td align="left">rgb(255, 131, 250)</td>
+ <td align="left">#FF83FA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid3</td>
+ <td align="center" style="background-color:rgb(205, 105, 201)">orchid3</td>
+ <td align="left">rgb(205, 105, 201)</td>
+ <td align="left">#CD69C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid4</td>
+ <td align="center" style="background-color:rgb(139, 71, 137)">orchid4</td>
+ <td align="left">rgb(139, 71, 137)</td>
+ <td align="left">#8B4789</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle1</td>
+ <td align="center" style="background-color:rgb(255, 225, 255)">thistle1</td>
+ <td align="left">rgb(255, 225, 255)</td>
+ <td align="left">#FFE1FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle2</td>
+ <td align="center" style="background-color:rgb(238, 210, 238)">thistle2</td>
+ <td align="left">rgb(238, 210, 238)</td>
+ <td align="left">#EED2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum1</td>
+ <td align="center" style="background-color:rgb(255, 187, 255)">plum1</td>
+ <td align="left">rgb(255, 187, 255)</td>
+ <td align="left">#FFBBFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum2</td>
+ <td align="center" style="background-color:rgb(238, 174, 238)">plum2</td>
+ <td align="left">rgb(238, 174, 238)</td>
+ <td align="left">#EEAEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle</td>
+ <td align="center" style="background-color:rgb(216, 191, 216)">thistle</td>
+ <td align="left">rgb(216, 191, 216)</td>
+ <td align="left">#D8BFD8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle3</td>
+ <td align="center" style="background-color:rgb(205, 181, 205)">thistle3</td>
+ <td align="left">rgb(205, 181, 205)</td>
+ <td align="left">#CDB5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum</td>
+ <td align="center" style="background-color:rgb(221, 160, 221)">plum</td>
+ <td align="left">rgb(221, 160, 221)</td>
+ <td align="left">#DDA0DD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">violet</td>
+ <td align="center" style="background-color:rgb(238, 130, 238)">violet</td>
+ <td align="left">rgb(238, 130, 238)</td>
+ <td align="left">#EE82EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum3</td>
+ <td align="center" style="background-color:rgb(205, 150, 205)">plum3</td>
+ <td align="left">rgb(205, 150, 205)</td>
+ <td align="left">#CD96CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle4</td>
+ <td align="center" style="background-color:rgb(139, 123, 139)">thistle4</td>
+ <td align="left">rgb(139, 123, 139)</td>
+ <td align="left">#8B7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">fuchsia</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">fuchsia</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">magenta</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta1</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">magenta1</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum4</td>
+ <td align="center" style="background-color:rgb(139, 102, 139)">plum4</td>
+ <td align="left">rgb(139, 102, 139)</td>
+ <td align="left">#8B668B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta2</td>
+ <td align="center" style="background-color:rgb(238, 0, 238)">magenta2</td>
+ <td align="left">rgb(238, 0, 238)</td>
+ <td align="left">#EE00EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta3</td>
+ <td align="center" style="background-color:rgb(205, 0, 205)">magenta3</td>
+ <td align="left">rgb(205, 0, 205)</td>
+ <td align="left">#CD00CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkMagenta</td>
+ <td align="center" style="background-color:rgb(139, 0, 139)">DarkMagenta</td>
+ <td align="left">rgb(139, 0, 139)</td>
+ <td align="left">#8B008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta4</td>
+ <td align="center" style="background-color:rgb(139, 0, 139)">magenta4</td>
+ <td align="left">rgb(139, 0, 139)</td>
+ <td align="left">#8B008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple</td>
+ <td align="center" style="background-color:rgb(128, 0, 128)">purple</td>
+ <td align="left">rgb(128, 0, 128)</td>
+ <td align="left">#800080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid</td>
+ <td align="center" style="background-color:rgb(186, 85, 211)">MediumOrchid</td>
+ <td align="left">rgb(186, 85, 211)</td>
+ <td align="left">#BA55D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid1</td>
+ <td align="center" style="background-color:rgb(224, 102, 255)">MediumOrchid1</td>
+ <td align="left">rgb(224, 102, 255)</td>
+ <td align="left">#E066FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid2</td>
+ <td align="center" style="background-color:rgb(209, 95, 238)">MediumOrchid2</td>
+ <td align="left">rgb(209, 95, 238)</td>
+ <td align="left">#D15FEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid3</td>
+ <td align="center" style="background-color:rgb(180, 82, 205)">MediumOrchid3</td>
+ <td align="left">rgb(180, 82, 205)</td>
+ <td align="left">#B452CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid4</td>
+ <td align="center" style="background-color:rgb(122, 55, 139)">MediumOrchid4</td>
+ <td align="left">rgb(122, 55, 139)</td>
+ <td align="left">#7A378B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkViolet</td>
+ <td align="center" style="background-color:rgb(148, 0, 211)">DarkViolet</td>
+ <td align="left">rgb(148, 0, 211)</td>
+ <td align="left">#9400D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid</td>
+ <td align="center" style="background-color:rgb(153, 50, 204)">DarkOrchid</td>
+ <td align="left">rgb(153, 50, 204)</td>
+ <td align="left">#9932CC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid1</td>
+ <td align="center" style="background-color:rgb(191, 62, 255)">DarkOrchid1</td>
+ <td align="left">rgb(191, 62, 255)</td>
+ <td align="left">#BF3EFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid3</td>
+ <td align="center" style="background-color:rgb(154, 50, 205)">DarkOrchid3</td>
+ <td align="left">rgb(154, 50, 205)</td>
+ <td align="left">#9A32CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid2</td>
+ <td align="center" style="background-color:rgb(178, 58, 238)">DarkOrchid2</td>
+ <td align="left">rgb(178, 58, 238)</td>
+ <td align="left">#B23AEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid4</td>
+ <td align="center" style="background-color:rgb(104, 34, 139)">DarkOrchid4</td>
+ <td align="left">rgb(104, 34, 139)</td>
+ <td align="left">#68228B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple</td>
+ <td align="center" style="background-color:rgb(160, 32, 240)">purple</td>
+ <td align="left">rgb(160, 32, 240)</td>
+ <td align="left">#A020F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">indigo</td>
+ <td align="center" style="background-color:rgb( 75, 0, 130)">indigo</td>
+ <td align="left">rgb( 75, 0, 130)</td>
+ <td align="left">#4B0082</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">BlueViolet</td>
+ <td align="center" style="background-color:rgb(138, 43, 226)">BlueViolet</td>
+ <td align="left">rgb(138, 43, 226)</td>
+ <td align="left">#8A2BE2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple2</td>
+ <td align="center" style="background-color:rgb(145, 44, 238)">purple2</td>
+ <td align="left">rgb(145, 44, 238)</td>
+ <td align="left">#912CEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple3</td>
+ <td align="center" style="background-color:rgb(125, 38, 205)">purple3</td>
+ <td align="left">rgb(125, 38, 205)</td>
+ <td align="left">#7D26CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple4</td>
+ <td align="center" style="background-color:rgb( 85, 26, 139)">purple4</td>
+ <td align="left">rgb( 85, 26, 139)</td>
+ <td align="left">#551A8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple1</td>
+ <td align="center" style="background-color:rgb(155, 48, 255)">purple1</td>
+ <td align="left">rgb(155, 48, 255)</td>
+ <td align="left">#9B30FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple</td>
+ <td align="center" style="background-color:rgb(147, 112, 219)">MediumPurple</td>
+ <td align="left">rgb(147, 112, 219)</td>
+ <td align="left">#9370DB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple1</td>
+ <td align="center" style="background-color:rgb(171, 130, 255)">MediumPurple1</td>
+ <td align="left">rgb(171, 130, 255)</td>
+ <td align="left">#AB82FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple2</td>
+ <td align="center" style="background-color:rgb(159, 121, 238)">MediumPurple2</td>
+ <td align="left">rgb(159, 121, 238)</td>
+ <td align="left">#9F79EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple3</td>
+ <td align="center" style="background-color:rgb(137, 104, 205)">MediumPurple3</td>
+ <td align="left">rgb(137, 104, 205)</td>
+ <td align="left">#8968CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple4</td>
+ <td align="center" style="background-color:rgb( 93, 71, 139)">MediumPurple4</td>
+ <td align="left">rgb( 93, 71, 139)</td>
+ <td align="left">#5D478B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateBlue</td>
+ <td align="center" style="background-color:rgb( 72, 61, 139)">DarkSlateBlue</td>
+ <td align="left">rgb( 72, 61, 139)</td>
+ <td align="left">#483D8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateBlue</td>
+ <td align="center" style="background-color:rgb(132, 112, 255)">LightSlateBlue</td>
+ <td align="left">rgb(132, 112, 255)</td>
+ <td align="left">#8470FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSlateBlue</td>
+ <td align="center" style="background-color:rgb(123, 104, 238)">MediumSlateBlue</td>
+ <td align="left">rgb(123, 104, 238)</td>
+ <td align="left">#7B68EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue</td>
+ <td align="center" style="background-color:rgb(106, 90, 205)">SlateBlue</td>
+ <td align="left">rgb(106, 90, 205)</td>
+ <td align="left">#6A5ACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue1</td>
+ <td align="center" style="background-color:rgb(131, 111, 255)">SlateBlue1</td>
+ <td align="left">rgb(131, 111, 255)</td>
+ <td align="left">#836FFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue2</td>
+ <td align="center" style="background-color:rgb(122, 103, 238)">SlateBlue2</td>
+ <td align="left">rgb(122, 103, 238)</td>
+ <td align="left">#7A67EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue3</td>
+ <td align="center" style="background-color:rgb(105, 89, 205)">SlateBlue3</td>
+ <td align="left">rgb(105, 89, 205)</td>
+ <td align="left">#6959CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue4</td>
+ <td align="center" style="background-color:rgb( 71, 60, 139)">SlateBlue4</td>
+ <td align="left">rgb( 71, 60, 139)</td>
+ <td align="left">#473C8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">GhostWhite</td>
+ <td align="center" style="background-color:rgb(248, 248, 255)">GhostWhite</td>
+ <td align="left">rgb(248, 248, 255)</td>
+ <td align="left">#F8F8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">lavender</td>
+ <td align="center" style="background-color:rgb(230, 230, 250)">lavender</td>
+ <td align="left">rgb(230, 230, 250)</td>
+ <td align="left">#E6E6FA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 255)">blue</td>
+ <td align="left">rgb( 0, 0, 255)</td>
+ <td align="left">#0000FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue1</td>
+ <td align="center" style="background-color:rgb( 0, 0, 255)">blue1</td>
+ <td align="left">rgb( 0, 0, 255)</td>
+ <td align="left">#0000FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue2</td>
+ <td align="center" style="background-color:rgb( 0, 0, 238)">blue2</td>
+ <td align="left">rgb( 0, 0, 238)</td>
+ <td align="left">#0000EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue3</td>
+ <td align="center" style="background-color:rgb( 0, 0, 205)">blue3</td>
+ <td align="left">rgb( 0, 0, 205)</td>
+ <td align="left">#0000CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 205)">MediumBlue</td>
+ <td align="left">rgb( 0, 0, 205)</td>
+ <td align="left">#0000CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue4</td>
+ <td align="center" style="background-color:rgb( 0, 0, 139)">blue4</td>
+ <td align="left">rgb( 0, 0, 139)</td>
+ <td align="left">#00008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 139)">DarkBlue</td>
+ <td align="left">rgb( 0, 0, 139)</td>
+ <td align="left">#00008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MidnightBlue</td>
+ <td align="center" style="background-color:rgb( 25, 25, 112)">MidnightBlue</td>
+ <td align="left">rgb( 25, 25, 112)</td>
+ <td align="left">#191970</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">navy</td>
+ <td align="center" style="background-color:rgb( 0, 0, 128)">navy</td>
+ <td align="left">rgb( 0, 0, 128)</td>
+ <td align="left">#000080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavyBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 128)">NavyBlue</td>
+ <td align="left">rgb( 0, 0, 128)</td>
+ <td align="left">#000080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue</td>
+ <td align="center" style="background-color:rgb( 65, 105, 225)">RoyalBlue</td>
+ <td align="left">rgb( 65, 105, 225)</td>
+ <td align="left">#4169E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue1</td>
+ <td align="center" style="background-color:rgb( 72, 118, 255)">RoyalBlue1</td>
+ <td align="left">rgb( 72, 118, 255)</td>
+ <td align="left">#4876FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue2</td>
+ <td align="center" style="background-color:rgb( 67, 110, 238)">RoyalBlue2</td>
+ <td align="left">rgb( 67, 110, 238)</td>
+ <td align="left">#436EEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue3</td>
+ <td align="center" style="background-color:rgb( 58, 95, 205)">RoyalBlue3</td>
+ <td align="left">rgb( 58, 95, 205)</td>
+ <td align="left">#3A5FCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue4</td>
+ <td align="center" style="background-color:rgb( 39, 64, 139)">RoyalBlue4</td>
+ <td align="left">rgb( 39, 64, 139)</td>
+ <td align="left">#27408B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CornflowerBlue</td>
+ <td align="center" style="background-color:rgb(100, 149, 237)">CornflowerBlue</td>
+ <td align="left">rgb(100, 149, 237)</td>
+ <td align="left">#6495ED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue</td>
+ <td align="center" style="background-color:rgb(176, 196, 222)">LightSteelBlue</td>
+ <td align="left">rgb(176, 196, 222)</td>
+ <td align="left">#B0C4DE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue1</td>
+ <td align="center" style="background-color:rgb(202, 225, 255)">LightSteelBlue1</td>
+ <td align="left">rgb(202, 225, 255)</td>
+ <td align="left">#CAE1FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue2</td>
+ <td align="center" style="background-color:rgb(188, 210, 238)">LightSteelBlue2</td>
+ <td align="left">rgb(188, 210, 238)</td>
+ <td align="left">#BCD2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue3</td>
+ <td align="center" style="background-color:rgb(162, 181, 205)">LightSteelBlue3</td>
+ <td align="left">rgb(162, 181, 205)</td>
+ <td align="left">#A2B5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue4</td>
+ <td align="center" style="background-color:rgb(110, 123, 139)">LightSteelBlue4</td>
+ <td align="left">rgb(110, 123, 139)</td>
+ <td align="left">#6E7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray4</td>
+ <td align="center" style="background-color:rgb(108, 123, 139)">SlateGray4</td>
+ <td align="left">rgb(108, 123, 139)</td>
+ <td align="left">#6C7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray1</td>
+ <td align="center" style="background-color:rgb(198, 226, 255)">SlateGray1</td>
+ <td align="left">rgb(198, 226, 255)</td>
+ <td align="left">#C6E2FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray2</td>
+ <td align="center" style="background-color:rgb(185, 211, 238)">SlateGray2</td>
+ <td align="left">rgb(185, 211, 238)</td>
+ <td align="left">#B9D3EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray3</td>
+ <td align="center" style="background-color:rgb(159, 182, 205)">SlateGray3</td>
+ <td align="left">rgb(159, 182, 205)</td>
+ <td align="left">#9FB6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateGray</td>
+ <td align="center" style="background-color:rgb(119, 136, 153)">LightSlateGray</td>
+ <td align="left">rgb(119, 136, 153)</td>
+ <td align="left">#778899</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateGrey</td>
+ <td align="center" style="background-color:rgb(119, 136, 153)">LightSlateGrey</td>
+ <td align="left">rgb(119, 136, 153)</td>
+ <td align="left">#778899</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray</td>
+ <td align="center" style="background-color:rgb(112, 128, 144)">SlateGray</td>
+ <td align="left">rgb(112, 128, 144)</td>
+ <td align="left">#708090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGrey</td>
+ <td align="center" style="background-color:rgb(112, 128, 144)">SlateGrey</td>
+ <td align="left">rgb(112, 128, 144)</td>
+ <td align="left">#708090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue</td>
+ <td align="center" style="background-color:rgb( 30, 144, 255)">DodgerBlue</td>
+ <td align="left">rgb( 30, 144, 255)</td>
+ <td align="left">#1E90FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue1</td>
+ <td align="center" style="background-color:rgb( 30, 144, 255)">DodgerBlue1</td>
+ <td align="left">rgb( 30, 144, 255)</td>
+ <td align="left">#1E90FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue2</td>
+ <td align="center" style="background-color:rgb( 28, 134, 238)">DodgerBlue2</td>
+ <td align="left">rgb( 28, 134, 238)</td>
+ <td align="left">#1C86EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue4</td>
+ <td align="center" style="background-color:rgb( 16, 78, 139)">DodgerBlue4</td>
+ <td align="left">rgb( 16, 78, 139)</td>
+ <td align="left">#104E8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue3</td>
+ <td align="center" style="background-color:rgb( 24, 116, 205)">DodgerBlue3</td>
+ <td align="left">rgb( 24, 116, 205)</td>
+ <td align="left">#1874CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AliceBlue</td>
+ <td align="center" style="background-color:rgb(240, 248, 255)">AliceBlue</td>
+ <td align="left">rgb(240, 248, 255)</td>
+ <td align="left">#F0F8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue4</td>
+ <td align="center" style="background-color:rgb( 54, 100, 139)">SteelBlue4</td>
+ <td align="left">rgb( 54, 100, 139)</td>
+ <td align="left">#36648B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue</td>
+ <td align="center" style="background-color:rgb( 70, 130, 180)">SteelBlue</td>
+ <td align="left">rgb( 70, 130, 180)</td>
+ <td align="left">#4682B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue1</td>
+ <td align="center" style="background-color:rgb( 99, 184, 255)">SteelBlue1</td>
+ <td align="left">rgb( 99, 184, 255)</td>
+ <td align="left">#63B8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue2</td>
+ <td align="center" style="background-color:rgb( 92, 172, 238)">SteelBlue2</td>
+ <td align="left">rgb( 92, 172, 238)</td>
+ <td align="left">#5CACEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue3</td>
+ <td align="center" style="background-color:rgb( 79, 148, 205)">SteelBlue3</td>
+ <td align="left">rgb( 79, 148, 205)</td>
+ <td align="left">#4F94CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue4</td>
+ <td align="center" style="background-color:rgb( 74, 112, 139)">SkyBlue4</td>
+ <td align="left">rgb( 74, 112, 139)</td>
+ <td align="left">#4A708B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue1</td>
+ <td align="center" style="background-color:rgb(135, 206, 255)">SkyBlue1</td>
+ <td align="left">rgb(135, 206, 255)</td>
+ <td align="left">#87CEFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue2</td>
+ <td align="center" style="background-color:rgb(126, 192, 238)">SkyBlue2</td>
+ <td align="left">rgb(126, 192, 238)</td>
+ <td align="left">#7EC0EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue3</td>
+ <td align="center" style="background-color:rgb(108, 166, 205)">SkyBlue3</td>
+ <td align="left">rgb(108, 166, 205)</td>
+ <td align="left">#6CA6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue</td>
+ <td align="center" style="background-color:rgb(135, 206, 250)">LightSkyBlue</td>
+ <td align="left">rgb(135, 206, 250)</td>
+ <td align="left">#87CEFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue4</td>
+ <td align="center" style="background-color:rgb( 96, 123, 139)">LightSkyBlue4</td>
+ <td align="left">rgb( 96, 123, 139)</td>
+ <td align="left">#607B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue1</td>
+ <td align="center" style="background-color:rgb(176, 226, 255)">LightSkyBlue1</td>
+ <td align="left">rgb(176, 226, 255)</td>
+ <td align="left">#B0E2FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue2</td>
+ <td align="center" style="background-color:rgb(164, 211, 238)">LightSkyBlue2</td>
+ <td align="left">rgb(164, 211, 238)</td>
+ <td align="left">#A4D3EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue3</td>
+ <td align="center" style="background-color:rgb(141, 182, 205)">LightSkyBlue3</td>
+ <td align="left">rgb(141, 182, 205)</td>
+ <td align="left">#8DB6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue</td>
+ <td align="center" style="background-color:rgb(135, 206, 235)">SkyBlue</td>
+ <td align="left">rgb(135, 206, 235)</td>
+ <td align="left">#87CEEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue3</td>
+ <td align="center" style="background-color:rgb(154, 192, 205)">LightBlue3</td>
+ <td align="left">rgb(154, 192, 205)</td>
+ <td align="left">#9AC0CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue</td>
+ <td align="center" style="background-color:rgb( 0, 191, 255)">DeepSkyBlue</td>
+ <td align="left">rgb( 0, 191, 255)</td>
+ <td align="left">#00BFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue1</td>
+ <td align="center" style="background-color:rgb( 0, 191, 255)">DeepSkyBlue1</td>
+ <td align="left">rgb( 0, 191, 255)</td>
+ <td align="left">#00BFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue2</td>
+ <td align="center" style="background-color:rgb( 0, 178, 238)">DeepSkyBlue2</td>
+ <td align="left">rgb( 0, 178, 238)</td>
+ <td align="left">#00B2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue4</td>
+ <td align="center" style="background-color:rgb( 0, 104, 139)">DeepSkyBlue4</td>
+ <td align="left">rgb( 0, 104, 139)</td>
+ <td align="left">#00688B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue3</td>
+ <td align="center" style="background-color:rgb( 0, 154, 205)">DeepSkyBlue3</td>
+ <td align="left">rgb( 0, 154, 205)</td>
+ <td align="left">#009ACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue1</td>
+ <td align="center" style="background-color:rgb(191, 239, 255)">LightBlue1</td>
+ <td align="left">rgb(191, 239, 255)</td>
+ <td align="left">#BFEFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue2</td>
+ <td align="center" style="background-color:rgb(178, 223, 238)">LightBlue2</td>
+ <td align="left">rgb(178, 223, 238)</td>
+ <td align="left">#B2DFEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue</td>
+ <td align="center" style="background-color:rgb(173, 216, 230)">LightBlue</td>
+ <td align="left">rgb(173, 216, 230)</td>
+ <td align="left">#ADD8E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue4</td>
+ <td align="center" style="background-color:rgb(104, 131, 139)">LightBlue4</td>
+ <td align="left">rgb(104, 131, 139)</td>
+ <td align="left">#68838B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PowderBlue</td>
+ <td align="center" style="background-color:rgb(176, 224, 230)">PowderBlue</td>
+ <td align="left">rgb(176, 224, 230)</td>
+ <td align="left">#B0E0E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue1</td>
+ <td align="center" style="background-color:rgb(152, 245, 255)">CadetBlue1</td>
+ <td align="left">rgb(152, 245, 255)</td>
+ <td align="left">#98F5FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue2</td>
+ <td align="center" style="background-color:rgb(142, 229, 238)">CadetBlue2</td>
+ <td align="left">rgb(142, 229, 238)</td>
+ <td align="left">#8EE5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue3</td>
+ <td align="center" style="background-color:rgb(122, 197, 205)">CadetBlue3</td>
+ <td align="left">rgb(122, 197, 205)</td>
+ <td align="left">#7AC5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue4</td>
+ <td align="center" style="background-color:rgb( 83, 134, 139)">CadetBlue4</td>
+ <td align="left">rgb( 83, 134, 139)</td>
+ <td align="left">#53868B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise1</td>
+ <td align="center" style="background-color:rgb( 0, 245, 255)">turquoise1</td>
+ <td align="left">rgb( 0, 245, 255)</td>
+ <td align="left">#00F5FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise2</td>
+ <td align="center" style="background-color:rgb( 0, 229, 238)">turquoise2</td>
+ <td align="left">rgb( 0, 229, 238)</td>
+ <td align="left">#00E5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise3</td>
+ <td align="center" style="background-color:rgb( 0, 197, 205)">turquoise3</td>
+ <td align="left">rgb( 0, 197, 205)</td>
+ <td align="left">#00C5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise4</td>
+ <td align="center" style="background-color:rgb( 0, 134, 139)">turquoise4</td>
+ <td align="left">rgb( 0, 134, 139)</td>
+ <td align="left">#00868B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cadet blue</td>
+ <td align="center" style="background-color:rgb( 95, 158, 160)">cadet blue</td>
+ <td align="left">rgb( 95, 158, 160)</td>
+ <td align="left">#5F9EA0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue</td>
+ <td align="center" style="background-color:rgb( 95, 158, 160)">CadetBlue</td>
+ <td align="left">rgb( 95, 158, 160)</td>
+ <td align="left">#5F9EA0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkTurquoise</td>
+ <td align="center" style="background-color:rgb( 0, 206, 209)">DarkTurquoise</td>
+ <td align="left">rgb( 0, 206, 209)</td>
+ <td align="left">#00CED1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure</td>
+ <td align="center" style="background-color:rgb(240, 255, 255)">azure</td>
+ <td align="left">rgb(240, 255, 255)</td>
+ <td align="left">#F0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure1</td>
+ <td align="center" style="background-color:rgb(240, 255, 255)">azure1</td>
+ <td align="left">rgb(240, 255, 255)</td>
+ <td align="left">#F0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan</td>
+ <td align="center" style="background-color:rgb(224, 255, 255)">LightCyan</td>
+ <td align="left">rgb(224, 255, 255)</td>
+ <td align="left">#E0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan1</td>
+ <td align="center" style="background-color:rgb(224, 255, 255)">LightCyan1</td>
+ <td align="left">rgb(224, 255, 255)</td>
+ <td align="left">#E0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure2</td>
+ <td align="center" style="background-color:rgb(224, 238, 238)">azure2</td>
+ <td align="left">rgb(224, 238, 238)</td>
+ <td align="left">#E0EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan2</td>
+ <td align="center" style="background-color:rgb(209, 238, 238)">LightCyan2</td>
+ <td align="left">rgb(209, 238, 238)</td>
+ <td align="left">#D1EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise1</td>
+ <td align="center" style="background-color:rgb(187, 255, 255)">PaleTurquoise1</td>
+ <td align="left">rgb(187, 255, 255)</td>
+ <td align="left">#BBFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise</td>
+ <td align="center" style="background-color:rgb(175, 238, 238)">PaleTurquoise</td>
+ <td align="left">rgb(175, 238, 238)</td>
+ <td align="left">#AFEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise2</td>
+ <td align="center" style="background-color:rgb(174, 238, 238)">PaleTurquoise2</td>
+ <td align="left">rgb(174, 238, 238)</td>
+ <td align="left">#AEEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray1</td>
+ <td align="center" style="background-color:rgb(151, 255, 255)">DarkSlateGray1</td>
+ <td align="left">rgb(151, 255, 255)</td>
+ <td align="left">#97FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure3</td>
+ <td align="center" style="background-color:rgb(193, 205, 205)">azure3</td>
+ <td align="left">rgb(193, 205, 205)</td>
+ <td align="left">#C1CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan3</td>
+ <td align="center" style="background-color:rgb(180, 205, 205)">LightCyan3</td>
+ <td align="left">rgb(180, 205, 205)</td>
+ <td align="left">#B4CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray2</td>
+ <td align="center" style="background-color:rgb(141, 238, 238)">DarkSlateGray2</td>
+ <td align="left">rgb(141, 238, 238)</td>
+ <td align="left">#8DEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise3</td>
+ <td align="center" style="background-color:rgb(150, 205, 205)">PaleTurquoise3</td>
+ <td align="left">rgb(150, 205, 205)</td>
+ <td align="left">#96CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray3</td>
+ <td align="center" style="background-color:rgb(121, 205, 205)">DarkSlateGray3</td>
+ <td align="left">rgb(121, 205, 205)</td>
+ <td align="left">#79CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure4</td>
+ <td align="center" style="background-color:rgb(131, 139, 139)">azure4</td>
+ <td align="left">rgb(131, 139, 139)</td>
+ <td align="left">#838B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan4</td>
+ <td align="center" style="background-color:rgb(122, 139, 139)">LightCyan4</td>
+ <td align="left">rgb(122, 139, 139)</td>
+ <td align="left">#7A8B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aqua</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">aqua</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">cyan</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">cyan1</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise4</td>
+ <td align="center" style="background-color:rgb(102, 139, 139)">PaleTurquoise4</td>
+ <td align="left">rgb(102, 139, 139)</td>
+ <td align="left">#668B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 238)">cyan2</td>
+ <td align="left">rgb( 0, 238, 238)</td>
+ <td align="left">#00EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray4</td>
+ <td align="center" style="background-color:rgb( 82, 139, 139)">DarkSlateGray4</td>
+ <td align="left">rgb( 82, 139, 139)</td>
+ <td align="left">#528B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 205)">cyan3</td>
+ <td align="left">rgb( 0, 205, 205)</td>
+ <td align="left">#00CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 139)">cyan4</td>
+ <td align="left">rgb( 0, 139, 139)</td>
+ <td align="left">#008B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkCyan</td>
+ <td align="center" style="background-color:rgb( 0, 139, 139)">DarkCyan</td>
+ <td align="left">rgb( 0, 139, 139)</td>
+ <td align="left">#008B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">teal</td>
+ <td align="center" style="background-color:rgb( 0, 128, 128)">teal</td>
+ <td align="left">rgb( 0, 128, 128)</td>
+ <td align="left">#008080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray</td>
+ <td align="center" style="background-color:rgb( 47, 79, 79)">DarkSlateGray</td>
+ <td align="left">rgb( 47, 79, 79)</td>
+ <td align="left">#2F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGrey</td>
+ <td align="center" style="background-color:rgb( 47, 79, 79)">DarkSlateGrey</td>
+ <td align="left">rgb( 47, 79, 79)</td>
+ <td align="left">#2F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumTurquoise</td>
+ <td align="center" style="background-color:rgb( 72, 209, 204)">MediumTurquoise</td>
+ <td align="left">rgb( 72, 209, 204)</td>
+ <td align="left">#48D1CC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSeaGreen</td>
+ <td align="center" style="background-color:rgb( 32, 178, 170)">LightSeaGreen</td>
+ <td align="left">rgb( 32, 178, 170)</td>
+ <td align="left">#20B2AA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise</td>
+ <td align="center" style="background-color:rgb( 64, 224, 208)">turquoise</td>
+ <td align="left">rgb( 64, 224, 208)</td>
+ <td align="left">#40E0D0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine4</td>
+ <td align="center" style="background-color:rgb( 69, 139, 116)">aquamarine4</td>
+ <td align="left">rgb( 69, 139, 116)</td>
+ <td align="left">#458B74</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine</td>
+ <td align="center" style="background-color:rgb(127, 255, 212)">aquamarine</td>
+ <td align="left">rgb(127, 255, 212)</td>
+ <td align="left">#7FFFD4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine1</td>
+ <td align="center" style="background-color:rgb(127, 255, 212)">aquamarine1</td>
+ <td align="left">rgb(127, 255, 212)</td>
+ <td align="left">#7FFFD4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine2</td>
+ <td align="center" style="background-color:rgb(118, 238, 198)">aquamarine2</td>
+ <td align="left">rgb(118, 238, 198)</td>
+ <td align="left">#76EEC6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine3</td>
+ <td align="center" style="background-color:rgb(102, 205, 170)">aquamarine3</td>
+ <td align="left">rgb(102, 205, 170)</td>
+ <td align="left">#66CDAA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumAquamarine</td>
+ <td align="center" style="background-color:rgb(102, 205, 170)">MediumAquamarine</td>
+ <td align="left">rgb(102, 205, 170)</td>
+ <td align="left">#66CDAA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSpringGreen</td>
+ <td align="center" style="background-color:rgb( 0, 250, 154)">MediumSpringGreen</td>
+ <td align="left">rgb( 0, 250, 154)</td>
+ <td align="left">#00FA9A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MintCream</td>
+ <td align="center" style="background-color:rgb(245, 255, 250)">MintCream</td>
+ <td align="left">rgb(245, 255, 250)</td>
+ <td align="left">#F5FFFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen</td>
+ <td align="center" style="background-color:rgb( 0, 255, 127)">SpringGreen</td>
+ <td align="left">rgb( 0, 255, 127)</td>
+ <td align="left">#00FF7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 127)">SpringGreen1</td>
+ <td align="left">rgb( 0, 255, 127)</td>
+ <td align="left">#00FF7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 118)">SpringGreen2</td>
+ <td align="left">rgb( 0, 238, 118)</td>
+ <td align="left">#00EE76</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 102)">SpringGreen3</td>
+ <td align="left">rgb( 0, 205, 102)</td>
+ <td align="left">#00CD66</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 69)">SpringGreen4</td>
+ <td align="left">rgb( 0, 139, 69)</td>
+ <td align="left">#008B45</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSeaGreen</td>
+ <td align="center" style="background-color:rgb( 60, 179, 113)">MediumSeaGreen</td>
+ <td align="left">rgb( 60, 179, 113)</td>
+ <td align="left">#3CB371</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen</td>
+ <td align="center" style="background-color:rgb( 46, 139, 87)">SeaGreen</td>
+ <td align="left">rgb( 46, 139, 87)</td>
+ <td align="left">#2E8B57</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen3</td>
+ <td align="center" style="background-color:rgb( 67, 205, 128)">SeaGreen3</td>
+ <td align="left">rgb( 67, 205, 128)</td>
+ <td align="left">#43CD80</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen1</td>
+ <td align="center" style="background-color:rgb( 84, 255, 159)">SeaGreen1</td>
+ <td align="left">rgb( 84, 255, 159)</td>
+ <td align="left">#54FF9F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen4</td>
+ <td align="center" style="background-color:rgb( 46, 139, 87)">SeaGreen4</td>
+ <td align="left">rgb( 46, 139, 87)</td>
+ <td align="left">#2E8B57</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen2</td>
+ <td align="center" style="background-color:rgb( 78, 238, 148)">SeaGreen2</td>
+ <td align="left">rgb( 78, 238, 148)</td>
+ <td align="left">#4EEE94</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumForestGreen</td>
+ <td align="center" style="background-color:rgb( 50, 129, 75)">MediumForestGreen</td>
+ <td align="left">rgb( 50, 129, 75)</td>
+ <td align="left">#32814B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew</td>
+ <td align="center" style="background-color:rgb(240, 255, 240)">honeydew</td>
+ <td align="left">rgb(240, 255, 240)</td>
+ <td align="left">#F0FFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew1</td>
+ <td align="center" style="background-color:rgb(240, 255, 240)">honeydew1</td>
+ <td align="left">rgb(240, 255, 240)</td>
+ <td align="left">#F0FFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew2</td>
+ <td align="center" style="background-color:rgb(224, 238, 224)">honeydew2</td>
+ <td align="left">rgb(224, 238, 224)</td>
+ <td align="left">#E0EEE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen1</td>
+ <td align="center" style="background-color:rgb(193, 255, 193)">DarkSeaGreen1</td>
+ <td align="left">rgb(193, 255, 193)</td>
+ <td align="left">#C1FFC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen2</td>
+ <td align="center" style="background-color:rgb(180, 238, 180)">DarkSeaGreen2</td>
+ <td align="left">rgb(180, 238, 180)</td>
+ <td align="left">#B4EEB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen1</td>
+ <td align="center" style="background-color:rgb(154, 255, 154)">PaleGreen1</td>
+ <td align="left">rgb(154, 255, 154)</td>
+ <td align="left">#9AFF9A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen</td>
+ <td align="center" style="background-color:rgb(152, 251, 152)">PaleGreen</td>
+ <td align="left">rgb(152, 251, 152)</td>
+ <td align="left">#98FB98</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew3</td>
+ <td align="center" style="background-color:rgb(193, 205, 193)">honeydew3</td>
+ <td align="left">rgb(193, 205, 193)</td>
+ <td align="left">#C1CDC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGreen</td>
+ <td align="center" style="background-color:rgb(144, 238, 144)">LightGreen</td>
+ <td align="left">rgb(144, 238, 144)</td>
+ <td align="left">#90EE90</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen2</td>
+ <td align="center" style="background-color:rgb(144, 238, 144)">PaleGreen2</td>
+ <td align="left">rgb(144, 238, 144)</td>
+ <td align="left">#90EE90</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen3</td>
+ <td align="center" style="background-color:rgb(155, 205, 155)">DarkSeaGreen3</td>
+ <td align="left">rgb(155, 205, 155)</td>
+ <td align="left">#9BCD9B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen</td>
+ <td align="center" style="background-color:rgb(143, 188, 143)">DarkSeaGreen</td>
+ <td align="left">rgb(143, 188, 143)</td>
+ <td align="left">#8FBC8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen3</td>
+ <td align="center" style="background-color:rgb(124, 205, 124)">PaleGreen3</td>
+ <td align="left">rgb(124, 205, 124)</td>
+ <td align="left">#7CCD7C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew4</td>
+ <td align="center" style="background-color:rgb(131, 139, 131)">honeydew4</td>
+ <td align="left">rgb(131, 139, 131)</td>
+ <td align="left">#838B83</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 0)">green1</td>
+ <td align="left">rgb( 0, 255, 0)</td>
+ <td align="left">#00FF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">lime</td>
+ <td align="center" style="background-color:rgb( 0, 255, 0)">lime</td>
+ <td align="left">rgb( 0, 255, 0)</td>
+ <td align="left">#00FF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LimeGreen</td>
+ <td align="center" style="background-color:rgb( 50, 205, 50)">LimeGreen</td>
+ <td align="left">rgb( 50, 205, 50)</td>
+ <td align="left">#32CD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen4</td>
+ <td align="center" style="background-color:rgb(105, 139, 105)">DarkSeaGreen4</td>
+ <td align="left">rgb(105, 139, 105)</td>
+ <td align="left">#698B69</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 0)">green2</td>
+ <td align="left">rgb( 0, 238, 0)</td>
+ <td align="left">#00EE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen4</td>
+ <td align="center" style="background-color:rgb( 84, 139, 84)">PaleGreen4</td>
+ <td align="left">rgb( 84, 139, 84)</td>
+ <td align="left">#548B54</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 0)">green3</td>
+ <td align="left">rgb( 0, 205, 0)</td>
+ <td align="left">#00CD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ForestGreen</td>
+ <td align="center" style="background-color:rgb( 34, 139, 34)">ForestGreen</td>
+ <td align="left">rgb( 34, 139, 34)</td>
+ <td align="left">#228B22</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 0)">green4</td>
+ <td align="left">rgb( 0, 139, 0)</td>
+ <td align="left">#008B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green</td>
+ <td align="center" style="background-color:rgb( 0, 128, 0)">green</td>
+ <td align="left">rgb( 0, 128, 0)</td>
+ <td align="left">#008000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGreen</td>
+ <td align="center" style="background-color:rgb( 0, 100, 0)">DarkGreen</td>
+ <td align="left">rgb( 0, 100, 0)</td>
+ <td align="left">#006400</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LawnGreen</td>
+ <td align="center" style="background-color:rgb(124, 252, 0)">LawnGreen</td>
+ <td align="left">rgb(124, 252, 0)</td>
+ <td align="left">#7CFC00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse</td>
+ <td align="center" style="background-color:rgb(127, 255, 0)">chartreuse</td>
+ <td align="left">rgb(127, 255, 0)</td>
+ <td align="left">#7FFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse1</td>
+ <td align="center" style="background-color:rgb(127, 255, 0)">chartreuse1</td>
+ <td align="left">rgb(127, 255, 0)</td>
+ <td align="left">#7FFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse2</td>
+ <td align="center" style="background-color:rgb(118, 238, 0)">chartreuse2</td>
+ <td align="left">rgb(118, 238, 0)</td>
+ <td align="left">#76EE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse3</td>
+ <td align="center" style="background-color:rgb(102, 205, 0)">chartreuse3</td>
+ <td align="left">rgb(102, 205, 0)</td>
+ <td align="left">#66CD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse4</td>
+ <td align="center" style="background-color:rgb( 69, 139, 0)">chartreuse4</td>
+ <td align="left">rgb( 69, 139, 0)</td>
+ <td align="left">#458B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">GreenYellow</td>
+ <td align="center" style="background-color:rgb(173, 255, 47)">GreenYellow</td>
+ <td align="left">rgb(173, 255, 47)</td>
+ <td align="left">#ADFF2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen3</td>
+ <td align="center" style="background-color:rgb(162, 205, 90)">DarkOliveGreen3</td>
+ <td align="left">rgb(162, 205, 90)</td>
+ <td align="left">#A2CD5A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen1</td>
+ <td align="center" style="background-color:rgb(202, 255, 112)">DarkOliveGreen1</td>
+ <td align="left">rgb(202, 255, 112)</td>
+ <td align="left">#CAFF70</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen2</td>
+ <td align="center" style="background-color:rgb(188, 238, 104)">DarkOliveGreen2</td>
+ <td align="left">rgb(188, 238, 104)</td>
+ <td align="left">#BCEE68</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen4</td>
+ <td align="center" style="background-color:rgb(110, 139, 61)">DarkOliveGreen4</td>
+ <td align="left">rgb(110, 139, 61)</td>
+ <td align="left">#6E8B3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen</td>
+ <td align="center" style="background-color:rgb( 85, 107, 47)">DarkOliveGreen</td>
+ <td align="left">rgb( 85, 107, 47)</td>
+ <td align="left">#556B2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab</td>
+ <td align="center" style="background-color:rgb(107, 142, 35)">OliveDrab</td>
+ <td align="left">rgb(107, 142, 35)</td>
+ <td align="left">#6B8E23</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab1</td>
+ <td align="center" style="background-color:rgb(192, 255, 62)">OliveDrab1</td>
+ <td align="left">rgb(192, 255, 62)</td>
+ <td align="left">#C0FF3E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab2</td>
+ <td align="center" style="background-color:rgb(179, 238, 58)">OliveDrab2</td>
+ <td align="left">rgb(179, 238, 58)</td>
+ <td align="left">#B3EE3A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab3</td>
+ <td align="center" style="background-color:rgb(154, 205, 50)">OliveDrab3</td>
+ <td align="left">rgb(154, 205, 50)</td>
+ <td align="left">#9ACD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">YellowGreen</td>
+ <td align="center" style="background-color:rgb(154, 205, 50)">YellowGreen</td>
+ <td align="left">rgb(154, 205, 50)</td>
+ <td align="left">#9ACD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab4</td>
+ <td align="center" style="background-color:rgb(105, 139, 34)">OliveDrab4</td>
+ <td align="left">rgb(105, 139, 34)</td>
+ <td align="left">#698B22</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory</td>
+ <td align="center" style="background-color:rgb(255, 255, 240)">ivory</td>
+ <td align="left">rgb(255, 255, 240)</td>
+ <td align="left">#FFFFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory1</td>
+ <td align="center" style="background-color:rgb(255, 255, 240)">ivory1</td>
+ <td align="left">rgb(255, 255, 240)</td>
+ <td align="left">#FFFFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow</td>
+ <td align="center" style="background-color:rgb(255, 255, 224)">LightYellow</td>
+ <td align="left">rgb(255, 255, 224)</td>
+ <td align="left">#FFFFE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow1</td>
+ <td align="center" style="background-color:rgb(255, 255, 224)">LightYellow1</td>
+ <td align="left">rgb(255, 255, 224)</td>
+ <td align="left">#FFFFE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">beige</td>
+ <td align="center" style="background-color:rgb(245, 245, 220)">beige</td>
+ <td align="left">rgb(245, 245, 220)</td>
+ <td align="left">#F5F5DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory2</td>
+ <td align="center" style="background-color:rgb(238, 238, 224)">ivory2</td>
+ <td align="left">rgb(238, 238, 224)</td>
+ <td align="left">#EEEEE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrodYellow</td>
+ <td align="center" style="background-color:rgb(250, 250, 210)">LightGoldenrodYellow</td>
+ <td align="left">rgb(250, 250, 210)</td>
+ <td align="left">#FAFAD2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow2</td>
+ <td align="center" style="background-color:rgb(238, 238, 209)">LightYellow2</td>
+ <td align="left">rgb(238, 238, 209)</td>
+ <td align="left">#EEEED1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory3</td>
+ <td align="center" style="background-color:rgb(205, 205, 193)">ivory3</td>
+ <td align="left">rgb(205, 205, 193)</td>
+ <td align="left">#CDCDC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow3</td>
+ <td align="center" style="background-color:rgb(205, 205, 180)">LightYellow3</td>
+ <td align="left">rgb(205, 205, 180)</td>
+ <td align="left">#CDCDB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory4</td>
+ <td align="center" style="background-color:rgb(139, 139, 131)">ivory4</td>
+ <td align="left">rgb(139, 139, 131)</td>
+ <td align="left">#8B8B83</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow4</td>
+ <td align="center" style="background-color:rgb(139, 139, 122)">LightYellow4</td>
+ <td align="left">rgb(139, 139, 122)</td>
+ <td align="left">#8B8B7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow</td>
+ <td align="center" style="background-color:rgb(255, 255, 0)">yellow</td>
+ <td align="left">rgb(255, 255, 0)</td>
+ <td align="left">#FFFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow1</td>
+ <td align="center" style="background-color:rgb(255, 255, 0)">yellow1</td>
+ <td align="left">rgb(255, 255, 0)</td>
+ <td align="left">#FFFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow2</td>
+ <td align="center" style="background-color:rgb(238, 238, 0)">yellow2</td>
+ <td align="left">rgb(238, 238, 0)</td>
+ <td align="left">#EEEE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow3</td>
+ <td align="center" style="background-color:rgb(205, 205, 0)">yellow3</td>
+ <td align="left">rgb(205, 205, 0)</td>
+ <td align="left">#CDCD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow4</td>
+ <td align="center" style="background-color:rgb(139, 139, 0)">yellow4</td>
+ <td align="left">rgb(139, 139, 0)</td>
+ <td align="left">#8B8B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">olive</td>
+ <td align="center" style="background-color:rgb(128, 128, 0)">olive</td>
+ <td align="left">rgb(128, 128, 0)</td>
+ <td align="left">#808000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkKhaki</td>
+ <td align="center" style="background-color:rgb(189, 183, 107)">DarkKhaki</td>
+ <td align="left">rgb(189, 183, 107)</td>
+ <td align="left">#BDB76B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki2</td>
+ <td align="center" style="background-color:rgb(238, 230, 133)">khaki2</td>
+ <td align="left">rgb(238, 230, 133)</td>
+ <td align="left">#EEE685</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon4</td>
+ <td align="center" style="background-color:rgb(139, 137, 112)">LemonChiffon4</td>
+ <td align="left">rgb(139, 137, 112)</td>
+ <td align="left">#8B8970</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki1</td>
+ <td align="center" style="background-color:rgb(255, 246, 143)">khaki1</td>
+ <td align="left">rgb(255, 246, 143)</td>
+ <td align="left">#FFF68F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki3</td>
+ <td align="center" style="background-color:rgb(205, 198, 115)">khaki3</td>
+ <td align="left">rgb(205, 198, 115)</td>
+ <td align="left">#CDC673</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki4</td>
+ <td align="center" style="background-color:rgb(139, 134, 78)">khaki4</td>
+ <td align="left">rgb(139, 134, 78)</td>
+ <td align="left">#8B864E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGoldenrod</td>
+ <td align="center" style="background-color:rgb(238, 232, 170)">PaleGoldenrod</td>
+ <td align="left">rgb(238, 232, 170)</td>
+ <td align="left">#EEE8AA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon</td>
+ <td align="center" style="background-color:rgb(255, 250, 205)">LemonChiffon</td>
+ <td align="left">rgb(255, 250, 205)</td>
+ <td align="left">#FFFACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon1</td>
+ <td align="center" style="background-color:rgb(255, 250, 205)">LemonChiffon1</td>
+ <td align="left">rgb(255, 250, 205)</td>
+ <td align="left">#FFFACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki</td>
+ <td align="center" style="background-color:rgb(240, 230, 140)">khaki</td>
+ <td align="left">rgb(240, 230, 140)</td>
+ <td align="left">#F0E68C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon3</td>
+ <td align="center" style="background-color:rgb(205, 201, 165)">LemonChiffon3</td>
+ <td align="left">rgb(205, 201, 165)</td>
+ <td align="left">#CDC9A5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon2</td>
+ <td align="center" style="background-color:rgb(238, 233, 191)">LemonChiffon2</td>
+ <td align="left">rgb(238, 233, 191)</td>
+ <td align="left">#EEE9BF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumGoldenRod</td>
+ <td align="center" style="background-color:rgb(209, 193, 102)">MediumGoldenRod</td>
+ <td align="left">rgb(209, 193, 102)</td>
+ <td align="left">#D1C166</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk4</td>
+ <td align="center" style="background-color:rgb(139, 136, 120)">cornsilk4</td>
+ <td align="left">rgb(139, 136, 120)</td>
+ <td align="left">#8B8878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold</td>
+ <td align="center" style="background-color:rgb(255, 215, 0)">gold</td>
+ <td align="left">rgb(255, 215, 0)</td>
+ <td align="left">#FFD700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold1</td>
+ <td align="center" style="background-color:rgb(255, 215, 0)">gold1</td>
+ <td align="left">rgb(255, 215, 0)</td>
+ <td align="left">#FFD700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold2</td>
+ <td align="center" style="background-color:rgb(238, 201, 0)">gold2</td>
+ <td align="left">rgb(238, 201, 0)</td>
+ <td align="left">#EEC900</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold3</td>
+ <td align="center" style="background-color:rgb(205, 173, 0)">gold3</td>
+ <td align="left">rgb(205, 173, 0)</td>
+ <td align="left">#CDAD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold4</td>
+ <td align="center" style="background-color:rgb(139, 117, 0)">gold4</td>
+ <td align="left">rgb(139, 117, 0)</td>
+ <td align="left">#8B7500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod</td>
+ <td align="center" style="background-color:rgb(238, 221, 130)">LightGoldenrod</td>
+ <td align="left">rgb(238, 221, 130)</td>
+ <td align="left">#EEDD82</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 129, 76)">LightGoldenrod4</td>
+ <td align="left">rgb(139, 129, 76)</td>
+ <td align="left">#8B814C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 236, 139)">LightGoldenrod1</td>
+ <td align="left">rgb(255, 236, 139)</td>
+ <td align="left">#FFEC8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 190, 112)">LightGoldenrod3</td>
+ <td align="left">rgb(205, 190, 112)</td>
+ <td align="left">#CDBE70</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 220, 130)">LightGoldenrod2</td>
+ <td align="left">rgb(238, 220, 130)</td>
+ <td align="left">#EEDC82</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk3</td>
+ <td align="center" style="background-color:rgb(205, 200, 177)">cornsilk3</td>
+ <td align="left">rgb(205, 200, 177)</td>
+ <td align="left">#CDC8B1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk2</td>
+ <td align="center" style="background-color:rgb(238, 232, 205)">cornsilk2</td>
+ <td align="left">rgb(238, 232, 205)</td>
+ <td align="left">#EEE8CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk</td>
+ <td align="center" style="background-color:rgb(255, 248, 220)">cornsilk</td>
+ <td align="left">rgb(255, 248, 220)</td>
+ <td align="left">#FFF8DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk1</td>
+ <td align="center" style="background-color:rgb(255, 248, 220)">cornsilk1</td>
+ <td align="left">rgb(255, 248, 220)</td>
+ <td align="left">#FFF8DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod</td>
+ <td align="center" style="background-color:rgb(218, 165, 32)">goldenrod</td>
+ <td align="left">rgb(218, 165, 32)</td>
+ <td align="left">#DAA520</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 193, 37)">goldenrod1</td>
+ <td align="left">rgb(255, 193, 37)</td>
+ <td align="left">#FFC125</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 180, 34)">goldenrod2</td>
+ <td align="left">rgb(238, 180, 34)</td>
+ <td align="left">#EEB422</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 155, 29)">goldenrod3</td>
+ <td align="left">rgb(205, 155, 29)</td>
+ <td align="left">#CD9B1D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 105, 20)">goldenrod4</td>
+ <td align="left">rgb(139, 105, 20)</td>
+ <td align="left">#8B6914</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod</td>
+ <td align="center" style="background-color:rgb(184, 134, 11)">DarkGoldenrod</td>
+ <td align="left">rgb(184, 134, 11)</td>
+ <td align="left">#B8860B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 185, 15)">DarkGoldenrod1</td>
+ <td align="left">rgb(255, 185, 15)</td>
+ <td align="left">#FFB90F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 173, 14)">DarkGoldenrod2</td>
+ <td align="left">rgb(238, 173, 14)</td>
+ <td align="left">#EEAD0E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 149, 12)">DarkGoldenrod3</td>
+ <td align="left">rgb(205, 149, 12)</td>
+ <td align="left">#CD950C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 101, 8)">DarkGoldenrod4</td>
+ <td align="left">rgb(139, 101, 8)</td>
+ <td align="left">#8B6508</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">FloralWhite</td>
+ <td align="center" style="background-color:rgb(255, 250, 240)">FloralWhite</td>
+ <td align="left">rgb(255, 250, 240)</td>
+ <td align="left">#FFFAF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat2</td>
+ <td align="center" style="background-color:rgb(238, 216, 174)">wheat2</td>
+ <td align="left">rgb(238, 216, 174)</td>
+ <td align="left">#EED8AE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OldLace</td>
+ <td align="center" style="background-color:rgb(253, 245, 230)">OldLace</td>
+ <td align="left">rgb(253, 245, 230)</td>
+ <td align="left">#FDF5E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat</td>
+ <td align="center" style="background-color:rgb(245, 222, 179)">wheat</td>
+ <td align="left">rgb(245, 222, 179)</td>
+ <td align="left">#F5DEB3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat1</td>
+ <td align="center" style="background-color:rgb(255, 231, 186)">wheat1</td>
+ <td align="left">rgb(255, 231, 186)</td>
+ <td align="left">#FFE7BA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat3</td>
+ <td align="center" style="background-color:rgb(205, 186, 150)">wheat3</td>
+ <td align="left">rgb(205, 186, 150)</td>
+ <td align="left">#CDBA96</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange</td>
+ <td align="center" style="background-color:rgb(255, 165, 0)">orange</td>
+ <td align="left">rgb(255, 165, 0)</td>
+ <td align="left">#FFA500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange1</td>
+ <td align="center" style="background-color:rgb(255, 165, 0)">orange1</td>
+ <td align="left">rgb(255, 165, 0)</td>
+ <td align="left">#FFA500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange2</td>
+ <td align="center" style="background-color:rgb(238, 154, 0)">orange2</td>
+ <td align="left">rgb(238, 154, 0)</td>
+ <td align="left">#EE9A00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange3</td>
+ <td align="center" style="background-color:rgb(205, 133, 0)">orange3</td>
+ <td align="left">rgb(205, 133, 0)</td>
+ <td align="left">#CD8500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange4</td>
+ <td align="center" style="background-color:rgb(139, 90, 0)">orange4</td>
+ <td align="left">rgb(139, 90, 0)</td>
+ <td align="left">#8B5A00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat4</td>
+ <td align="center" style="background-color:rgb(139, 126, 102)">wheat4</td>
+ <td align="left">rgb(139, 126, 102)</td>
+ <td align="left">#8B7E66</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">moccasin</td>
+ <td align="center" style="background-color:rgb(255, 228, 181)">moccasin</td>
+ <td align="left">rgb(255, 228, 181)</td>
+ <td align="left">#FFE4B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PapayaWhip</td>
+ <td align="center" style="background-color:rgb(255, 239, 213)">PapayaWhip</td>
+ <td align="left">rgb(255, 239, 213)</td>
+ <td align="left">#FFEFD5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite3</td>
+ <td align="center" style="background-color:rgb(205, 179, 139)">NavajoWhite3</td>
+ <td align="left">rgb(205, 179, 139)</td>
+ <td align="left">#CDB38B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">BlanchedAlmond</td>
+ <td align="center" style="background-color:rgb(255, 235, 205)">BlanchedAlmond</td>
+ <td align="left">rgb(255, 235, 205)</td>
+ <td align="left">#FFEBCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite</td>
+ <td align="center" style="background-color:rgb(255, 222, 173)">NavajoWhite</td>
+ <td align="left">rgb(255, 222, 173)</td>
+ <td align="left">#FFDEAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite1</td>
+ <td align="center" style="background-color:rgb(255, 222, 173)">NavajoWhite1</td>
+ <td align="left">rgb(255, 222, 173)</td>
+ <td align="left">#FFDEAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite2</td>
+ <td align="center" style="background-color:rgb(238, 207, 161)">NavajoWhite2</td>
+ <td align="left">rgb(238, 207, 161)</td>
+ <td align="left">#EECFA1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite4</td>
+ <td align="center" style="background-color:rgb(139, 121, 94)">NavajoWhite4</td>
+ <td align="left">rgb(139, 121, 94)</td>
+ <td align="left">#8B795E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite4</td>
+ <td align="center" style="background-color:rgb(139, 131, 120)">AntiqueWhite4</td>
+ <td align="left">rgb(139, 131, 120)</td>
+ <td align="left">#8B8378</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite</td>
+ <td align="center" style="background-color:rgb(250, 235, 215)">AntiqueWhite</td>
+ <td align="left">rgb(250, 235, 215)</td>
+ <td align="left">#FAEBD7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan</td>
+ <td align="center" style="background-color:rgb(210, 180, 140)">tan</td>
+ <td align="left">rgb(210, 180, 140)</td>
+ <td align="left">#D2B48C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque4</td>
+ <td align="center" style="background-color:rgb(139, 125, 107)">bisque4</td>
+ <td align="left">rgb(139, 125, 107)</td>
+ <td align="left">#8B7D6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood</td>
+ <td align="center" style="background-color:rgb(222, 184, 135)">burlywood</td>
+ <td align="left">rgb(222, 184, 135)</td>
+ <td align="left">#DEB887</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite2</td>
+ <td align="center" style="background-color:rgb(238, 223, 204)">AntiqueWhite2</td>
+ <td align="left">rgb(238, 223, 204)</td>
+ <td align="left">#EEDFCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood1</td>
+ <td align="center" style="background-color:rgb(255, 211, 155)">burlywood1</td>
+ <td align="left">rgb(255, 211, 155)</td>
+ <td align="left">#FFD39B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood3</td>
+ <td align="center" style="background-color:rgb(205, 170, 125)">burlywood3</td>
+ <td align="left">rgb(205, 170, 125)</td>
+ <td align="left">#CDAA7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood2</td>
+ <td align="center" style="background-color:rgb(238, 197, 145)">burlywood2</td>
+ <td align="left">rgb(238, 197, 145)</td>
+ <td align="left">#EEC591</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite1</td>
+ <td align="center" style="background-color:rgb(255, 239, 219)">AntiqueWhite1</td>
+ <td align="left">rgb(255, 239, 219)</td>
+ <td align="left">#FFEFDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood4</td>
+ <td align="center" style="background-color:rgb(139, 115, 85)">burlywood4</td>
+ <td align="left">rgb(139, 115, 85)</td>
+ <td align="left">#8B7355</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite3</td>
+ <td align="center" style="background-color:rgb(205, 192, 176)">AntiqueWhite3</td>
+ <td align="left">rgb(205, 192, 176)</td>
+ <td align="left">#CDC0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange</td>
+ <td align="center" style="background-color:rgb(255, 140, 0)">DarkOrange</td>
+ <td align="left">rgb(255, 140, 0)</td>
+ <td align="left">#FF8C00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque2</td>
+ <td align="center" style="background-color:rgb(238, 213, 183)">bisque2</td>
+ <td align="left">rgb(238, 213, 183)</td>
+ <td align="left">#EED5B7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque</td>
+ <td align="center" style="background-color:rgb(255, 228, 196)">bisque</td>
+ <td align="left">rgb(255, 228, 196)</td>
+ <td align="left">#FFE4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque1</td>
+ <td align="center" style="background-color:rgb(255, 228, 196)">bisque1</td>
+ <td align="left">rgb(255, 228, 196)</td>
+ <td align="left">#FFE4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque3</td>
+ <td align="center" style="background-color:rgb(205, 183, 158)">bisque3</td>
+ <td align="left">rgb(205, 183, 158)</td>
+ <td align="left">#CDB79E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange1</td>
+ <td align="center" style="background-color:rgb(255, 127, 0)">DarkOrange1</td>
+ <td align="left">rgb(255, 127, 0)</td>
+ <td align="left">#FF7F00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">linen</td>
+ <td align="center" style="background-color:rgb(250, 240, 230)">linen</td>
+ <td align="left">rgb(250, 240, 230)</td>
+ <td align="left">#FAF0E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange2</td>
+ <td align="center" style="background-color:rgb(238, 118, 0)">DarkOrange2</td>
+ <td align="left">rgb(238, 118, 0)</td>
+ <td align="left">#EE7600</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange3</td>
+ <td align="center" style="background-color:rgb(205, 102, 0)">DarkOrange3</td>
+ <td align="left">rgb(205, 102, 0)</td>
+ <td align="left">#CD6600</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange4</td>
+ <td align="center" style="background-color:rgb(139, 69, 0)">DarkOrange4</td>
+ <td align="left">rgb(139, 69, 0)</td>
+ <td align="left">#8B4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">peru</td>
+ <td align="center" style="background-color:rgb(205, 133, 63)">peru</td>
+ <td align="left">rgb(205, 133, 63)</td>
+ <td align="left">#CD853F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan1</td>
+ <td align="center" style="background-color:rgb(255, 165, 79)">tan1</td>
+ <td align="left">rgb(255, 165, 79)</td>
+ <td align="left">#FFA54F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan2</td>
+ <td align="center" style="background-color:rgb(238, 154, 73)">tan2</td>
+ <td align="left">rgb(238, 154, 73)</td>
+ <td align="left">#EE9A49</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan3</td>
+ <td align="center" style="background-color:rgb(205, 133, 63)">tan3</td>
+ <td align="left">rgb(205, 133, 63)</td>
+ <td align="left">#CD853F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan4</td>
+ <td align="center" style="background-color:rgb(139, 90, 43)">tan4</td>
+ <td align="left">rgb(139, 90, 43)</td>
+ <td align="left">#8B5A2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff</td>
+ <td align="center" style="background-color:rgb(255, 218, 185)">PeachPuff</td>
+ <td align="left">rgb(255, 218, 185)</td>
+ <td align="left">#FFDAB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff1</td>
+ <td align="center" style="background-color:rgb(255, 218, 185)">PeachPuff1</td>
+ <td align="left">rgb(255, 218, 185)</td>
+ <td align="left">#FFDAB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff4</td>
+ <td align="center" style="background-color:rgb(139, 119, 101)">PeachPuff4</td>
+ <td align="left">rgb(139, 119, 101)</td>
+ <td align="left">#8B7765</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff2</td>
+ <td align="center" style="background-color:rgb(238, 203, 173)">PeachPuff2</td>
+ <td align="left">rgb(238, 203, 173)</td>
+ <td align="left">#EECBAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff3</td>
+ <td align="center" style="background-color:rgb(205, 175, 149)">PeachPuff3</td>
+ <td align="left">rgb(205, 175, 149)</td>
+ <td align="left">#CDAF95</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SandyBrown</td>
+ <td align="center" style="background-color:rgb(244, 164, 96)">SandyBrown</td>
+ <td align="left">rgb(244, 164, 96)</td>
+ <td align="left">#F4A460</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell4</td>
+ <td align="center" style="background-color:rgb(139, 134, 130)">seashell4</td>
+ <td align="left">rgb(139, 134, 130)</td>
+ <td align="left">#8B8682</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell2</td>
+ <td align="center" style="background-color:rgb(238, 229, 222)">seashell2</td>
+ <td align="left">rgb(238, 229, 222)</td>
+ <td align="left">#EEE5DE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell3</td>
+ <td align="center" style="background-color:rgb(205, 197, 191)">seashell3</td>
+ <td align="left">rgb(205, 197, 191)</td>
+ <td align="left">#CDC5BF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate</td>
+ <td align="center" style="background-color:rgb(210, 105, 30)">chocolate</td>
+ <td align="left">rgb(210, 105, 30)</td>
+ <td align="left">#D2691E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate1</td>
+ <td align="center" style="background-color:rgb(255, 127, 36)">chocolate1</td>
+ <td align="left">rgb(255, 127, 36)</td>
+ <td align="left">#FF7F24</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate2</td>
+ <td align="center" style="background-color:rgb(238, 118, 33)">chocolate2</td>
+ <td align="left">rgb(238, 118, 33)</td>
+ <td align="left">#EE7621</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate3</td>
+ <td align="center" style="background-color:rgb(205, 102, 29)">chocolate3</td>
+ <td align="left">rgb(205, 102, 29)</td>
+ <td align="left">#CD661D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate4</td>
+ <td align="center" style="background-color:rgb(139, 69, 19)">chocolate4</td>
+ <td align="left">rgb(139, 69, 19)</td>
+ <td align="left">#8B4513</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SaddleBrown</td>
+ <td align="center" style="background-color:rgb(139, 69, 19)">SaddleBrown</td>
+ <td align="left">rgb(139, 69, 19)</td>
+ <td align="left">#8B4513</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell</td>
+ <td align="center" style="background-color:rgb(255, 245, 238)">seashell</td>
+ <td align="left">rgb(255, 245, 238)</td>
+ <td align="left">#FFF5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell1</td>
+ <td align="center" style="background-color:rgb(255, 245, 238)">seashell1</td>
+ <td align="left">rgb(255, 245, 238)</td>
+ <td align="left">#FFF5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna4</td>
+ <td align="center" style="background-color:rgb(139, 71, 38)">sienna4</td>
+ <td align="left">rgb(139, 71, 38)</td>
+ <td align="left">#8B4726</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna</td>
+ <td align="center" style="background-color:rgb(160, 82, 45)">sienna</td>
+ <td align="left">rgb(160, 82, 45)</td>
+ <td align="left">#A0522D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna1</td>
+ <td align="center" style="background-color:rgb(255, 130, 71)">sienna1</td>
+ <td align="left">rgb(255, 130, 71)</td>
+ <td align="left">#FF8247</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna2</td>
+ <td align="center" style="background-color:rgb(238, 121, 66)">sienna2</td>
+ <td align="left">rgb(238, 121, 66)</td>
+ <td align="left">#EE7942</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna3</td>
+ <td align="center" style="background-color:rgb(205, 104, 57)">sienna3</td>
+ <td align="left">rgb(205, 104, 57)</td>
+ <td align="left">#CD6839</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon3</td>
+ <td align="center" style="background-color:rgb(205, 129, 98)">LightSalmon3</td>
+ <td align="left">rgb(205, 129, 98)</td>
+ <td align="left">#CD8162</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon</td>
+ <td align="center" style="background-color:rgb(255, 160, 122)">LightSalmon</td>
+ <td align="left">rgb(255, 160, 122)</td>
+ <td align="left">#FFA07A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon1</td>
+ <td align="center" style="background-color:rgb(255, 160, 122)">LightSalmon1</td>
+ <td align="left">rgb(255, 160, 122)</td>
+ <td align="left">#FFA07A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon4</td>
+ <td align="center" style="background-color:rgb(139, 87, 66)">LightSalmon4</td>
+ <td align="left">rgb(139, 87, 66)</td>
+ <td align="left">#8B5742</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon2</td>
+ <td align="center" style="background-color:rgb(238, 149, 114)">LightSalmon2</td>
+ <td align="left">rgb(238, 149, 114)</td>
+ <td align="left">#EE9572</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral</td>
+ <td align="center" style="background-color:rgb(255, 127, 80)">coral</td>
+ <td align="left">rgb(255, 127, 80)</td>
+ <td align="left">#FF7F50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed</td>
+ <td align="center" style="background-color:rgb(255, 69, 0)">OrangeRed</td>
+ <td align="left">rgb(255, 69, 0)</td>
+ <td align="left">#FF4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed1</td>
+ <td align="center" style="background-color:rgb(255, 69, 0)">OrangeRed1</td>
+ <td align="left">rgb(255, 69, 0)</td>
+ <td align="left">#FF4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed2</td>
+ <td align="center" style="background-color:rgb(238, 64, 0)">OrangeRed2</td>
+ <td align="left">rgb(238, 64, 0)</td>
+ <td align="left">#EE4000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed3</td>
+ <td align="center" style="background-color:rgb(205, 55, 0)">OrangeRed3</td>
+ <td align="left">rgb(205, 55, 0)</td>
+ <td align="left">#CD3700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed4</td>
+ <td align="center" style="background-color:rgb(139, 37, 0)">OrangeRed4</td>
+ <td align="left">rgb(139, 37, 0)</td>
+ <td align="left">#8B2500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSalmon</td>
+ <td align="center" style="background-color:rgb(233, 150, 122)">DarkSalmon</td>
+ <td align="left">rgb(233, 150, 122)</td>
+ <td align="left">#E9967A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon1</td>
+ <td align="center" style="background-color:rgb(255, 140, 105)">salmon1</td>
+ <td align="left">rgb(255, 140, 105)</td>
+ <td align="left">#FF8C69</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon2</td>
+ <td align="center" style="background-color:rgb(238, 130, 98)">salmon2</td>
+ <td align="left">rgb(238, 130, 98)</td>
+ <td align="left">#EE8262</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon3</td>
+ <td align="center" style="background-color:rgb(205, 112, 84)">salmon3</td>
+ <td align="left">rgb(205, 112, 84)</td>
+ <td align="left">#CD7054</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon4</td>
+ <td align="center" style="background-color:rgb(139, 76, 57)">salmon4</td>
+ <td align="left">rgb(139, 76, 57)</td>
+ <td align="left">#8B4C39</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral1</td>
+ <td align="center" style="background-color:rgb(255, 114, 86)">coral1</td>
+ <td align="left">rgb(255, 114, 86)</td>
+ <td align="left">#FF7256</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral2</td>
+ <td align="center" style="background-color:rgb(238, 106, 80)">coral2</td>
+ <td align="left">rgb(238, 106, 80)</td>
+ <td align="left">#EE6A50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral3</td>
+ <td align="center" style="background-color:rgb(205, 91, 69)">coral3</td>
+ <td align="left">rgb(205, 91, 69)</td>
+ <td align="left">#CD5B45</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral4</td>
+ <td align="center" style="background-color:rgb(139, 62, 47)">coral4</td>
+ <td align="left">rgb(139, 62, 47)</td>
+ <td align="left">#8B3E2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato4</td>
+ <td align="center" style="background-color:rgb(139, 54, 38)">tomato4</td>
+ <td align="left">rgb(139, 54, 38)</td>
+ <td align="left">#8B3626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato</td>
+ <td align="center" style="background-color:rgb(255, 99, 71)">tomato</td>
+ <td align="left">rgb(255, 99, 71)</td>
+ <td align="left">#FF6347</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato1</td>
+ <td align="center" style="background-color:rgb(255, 99, 71)">tomato1</td>
+ <td align="left">rgb(255, 99, 71)</td>
+ <td align="left">#FF6347</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato2</td>
+ <td align="center" style="background-color:rgb(238, 92, 66)">tomato2</td>
+ <td align="left">rgb(238, 92, 66)</td>
+ <td align="left">#EE5C42</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato3</td>
+ <td align="center" style="background-color:rgb(205, 79, 57)">tomato3</td>
+ <td align="left">rgb(205, 79, 57)</td>
+ <td align="left">#CD4F39</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose4</td>
+ <td align="center" style="background-color:rgb(139, 125, 123)">MistyRose4</td>
+ <td align="left">rgb(139, 125, 123)</td>
+ <td align="left">#8B7D7B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose2</td>
+ <td align="center" style="background-color:rgb(238, 213, 210)">MistyRose2</td>
+ <td align="left">rgb(238, 213, 210)</td>
+ <td align="left">#EED5D2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose</td>
+ <td align="center" style="background-color:rgb(255, 228, 225)">MistyRose</td>
+ <td align="left">rgb(255, 228, 225)</td>
+ <td align="left">#FFE4E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose1</td>
+ <td align="center" style="background-color:rgb(255, 228, 225)">MistyRose1</td>
+ <td align="left">rgb(255, 228, 225)</td>
+ <td align="left">#FFE4E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon</td>
+ <td align="center" style="background-color:rgb(250, 128, 114)">salmon</td>
+ <td align="left">rgb(250, 128, 114)</td>
+ <td align="left">#FA8072</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose3</td>
+ <td align="center" style="background-color:rgb(205, 183, 181)">MistyRose3</td>
+ <td align="left">rgb(205, 183, 181)</td>
+ <td align="left">#CDB7B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">white</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">white</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">gray100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">grey100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">grey100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray99</td>
+ <td align="center" style="background-color:rgb(252, 252, 252)">gray99</td>
+ <td align="left">rgb(252, 252, 252)</td>
+ <td align="left">#FCFCFC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey99</td>
+ <td align="center" style="background-color:rgb(252, 252, 252)">grey99</td>
+ <td align="left">rgb(252, 252, 252)</td>
+ <td align="left">#FCFCFC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray98</td>
+ <td align="center" style="background-color:rgb(250, 250, 250)">gray98</td>
+ <td align="left">rgb(250, 250, 250)</td>
+ <td align="left">#FAFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey98</td>
+ <td align="center" style="background-color:rgb(250, 250, 250)">grey98</td>
+ <td align="left">rgb(250, 250, 250)</td>
+ <td align="left">#FAFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray97</td>
+ <td align="center" style="background-color:rgb(247, 247, 247)">gray97</td>
+ <td align="left">rgb(247, 247, 247)</td>
+ <td align="left">#F7F7F7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey97</td>
+ <td align="center" style="background-color:rgb(247, 247, 247)">grey97</td>
+ <td align="left">rgb(247, 247, 247)</td>
+ <td align="left">#F7F7F7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray96</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">gray96</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey96</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">grey96</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">WhiteSmoke</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">WhiteSmoke</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray95</td>
+ <td align="center" style="background-color:rgb(242, 242, 242)">gray95</td>
+ <td align="left">rgb(242, 242, 242)</td>
+ <td align="left">#F2F2F2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey95</td>
+ <td align="center" style="background-color:rgb(242, 242, 242)">grey95</td>
+ <td align="left">rgb(242, 242, 242)</td>
+ <td align="left">#F2F2F2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray94</td>
+ <td align="center" style="background-color:rgb(240, 240, 240)">gray94</td>
+ <td align="left">rgb(240, 240, 240)</td>
+ <td align="left">#F0F0F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey94</td>
+ <td align="center" style="background-color:rgb(240, 240, 240)">grey94</td>
+ <td align="left">rgb(240, 240, 240)</td>
+ <td align="left">#F0F0F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray93</td>
+ <td align="center" style="background-color:rgb(237, 237, 237)">gray93</td>
+ <td align="left">rgb(237, 237, 237)</td>
+ <td align="left">#EDEDED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey93</td>
+ <td align="center" style="background-color:rgb(237, 237, 237)">grey93</td>
+ <td align="left">rgb(237, 237, 237)</td>
+ <td align="left">#EDEDED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray92</td>
+ <td align="center" style="background-color:rgb(235, 235, 235)">gray92</td>
+ <td align="left">rgb(235, 235, 235)</td>
+ <td align="left">#EBEBEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey92</td>
+ <td align="center" style="background-color:rgb(235, 235, 235)">grey92</td>
+ <td align="left">rgb(235, 235, 235)</td>
+ <td align="left">#EBEBEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray91</td>
+ <td align="center" style="background-color:rgb(232, 232, 232)">gray91</td>
+ <td align="left">rgb(232, 232, 232)</td>
+ <td align="left">#E8E8E8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey91</td>
+ <td align="center" style="background-color:rgb(232, 232, 232)">grey91</td>
+ <td align="left">rgb(232, 232, 232)</td>
+ <td align="left">#E8E8E8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray90</td>
+ <td align="center" style="background-color:rgb(229, 229, 229)">gray90</td>
+ <td align="left">rgb(229, 229, 229)</td>
+ <td align="left">#E5E5E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey90</td>
+ <td align="center" style="background-color:rgb(229, 229, 229)">grey90</td>
+ <td align="left">rgb(229, 229, 229)</td>
+ <td align="left">#E5E5E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray89</td>
+ <td align="center" style="background-color:rgb(227, 227, 227)">gray89</td>
+ <td align="left">rgb(227, 227, 227)</td>
+ <td align="left">#E3E3E3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey89</td>
+ <td align="center" style="background-color:rgb(227, 227, 227)">grey89</td>
+ <td align="left">rgb(227, 227, 227)</td>
+ <td align="left">#E3E3E3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray88</td>
+ <td align="center" style="background-color:rgb(224, 224, 224)">gray88</td>
+ <td align="left">rgb(224, 224, 224)</td>
+ <td align="left">#E0E0E0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey88</td>
+ <td align="center" style="background-color:rgb(224, 224, 224)">grey88</td>
+ <td align="left">rgb(224, 224, 224)</td>
+ <td align="left">#E0E0E0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray87</td>
+ <td align="center" style="background-color:rgb(222, 222, 222)">gray87</td>
+ <td align="left">rgb(222, 222, 222)</td>
+ <td align="left">#DEDEDE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey87</td>
+ <td align="center" style="background-color:rgb(222, 222, 222)">grey87</td>
+ <td align="left">rgb(222, 222, 222)</td>
+ <td align="left">#DEDEDE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gainsboro</td>
+ <td align="center" style="background-color:rgb(220, 220, 220)">gainsboro</td>
+ <td align="left">rgb(220, 220, 220)</td>
+ <td align="left">#DCDCDC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray86</td>
+ <td align="center" style="background-color:rgb(219, 219, 219)">gray86</td>
+ <td align="left">rgb(219, 219, 219)</td>
+ <td align="left">#DBDBDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey86</td>
+ <td align="center" style="background-color:rgb(219, 219, 219)">grey86</td>
+ <td align="left">rgb(219, 219, 219)</td>
+ <td align="left">#DBDBDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray85</td>
+ <td align="center" style="background-color:rgb(217, 217, 217)">gray85</td>
+ <td align="left">rgb(217, 217, 217)</td>
+ <td align="left">#D9D9D9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey85</td>
+ <td align="center" style="background-color:rgb(217, 217, 217)">grey85</td>
+ <td align="left">rgb(217, 217, 217)</td>
+ <td align="left">#D9D9D9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray84</td>
+ <td align="center" style="background-color:rgb(214, 214, 214)">gray84</td>
+ <td align="left">rgb(214, 214, 214)</td>
+ <td align="left">#D6D6D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey84</td>
+ <td align="center" style="background-color:rgb(214, 214, 214)">grey84</td>
+ <td align="left">rgb(214, 214, 214)</td>
+ <td align="left">#D6D6D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray83</td>
+ <td align="center" style="background-color:rgb(212, 212, 212)">gray83</td>
+ <td align="left">rgb(212, 212, 212)</td>
+ <td align="left">#D4D4D4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey83</td>
+ <td align="center" style="background-color:rgb(212, 212, 212)">grey83</td>
+ <td align="left">rgb(212, 212, 212)</td>
+ <td align="left">#D4D4D4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGray</td>
+ <td align="center" style="background-color:rgb(211, 211, 211)">LightGray</td>
+ <td align="left">rgb(211, 211, 211)</td>
+ <td align="left">#D3D3D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGrey</td>
+ <td align="center" style="background-color:rgb(211, 211, 211)">LightGrey</td>
+ <td align="left">rgb(211, 211, 211)</td>
+ <td align="left">#D3D3D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray82</td>
+ <td align="center" style="background-color:rgb(209, 209, 209)">gray82</td>
+ <td align="left">rgb(209, 209, 209)</td>
+ <td align="left">#D1D1D1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey82</td>
+ <td align="center" style="background-color:rgb(209, 209, 209)">grey82</td>
+ <td align="left">rgb(209, 209, 209)</td>
+ <td align="left">#D1D1D1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray81</td>
+ <td align="center" style="background-color:rgb(207, 207, 207)">gray81</td>
+ <td align="left">rgb(207, 207, 207)</td>
+ <td align="left">#CFCFCF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey81</td>
+ <td align="center" style="background-color:rgb(207, 207, 207)">grey81</td>
+ <td align="left">rgb(207, 207, 207)</td>
+ <td align="left">#CFCFCF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray80</td>
+ <td align="center" style="background-color:rgb(204, 204, 204)">gray80</td>
+ <td align="left">rgb(204, 204, 204)</td>
+ <td align="left">#CCCCCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey80</td>
+ <td align="center" style="background-color:rgb(204, 204, 204)">grey80</td>
+ <td align="left">rgb(204, 204, 204)</td>
+ <td align="left">#CCCCCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray79</td>
+ <td align="center" style="background-color:rgb(201, 201, 201)">gray79</td>
+ <td align="left">rgb(201, 201, 201)</td>
+ <td align="left">#C9C9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey79</td>
+ <td align="center" style="background-color:rgb(201, 201, 201)">grey79</td>
+ <td align="left">rgb(201, 201, 201)</td>
+ <td align="left">#C9C9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray78</td>
+ <td align="center" style="background-color:rgb(199, 199, 199)">gray78</td>
+ <td align="left">rgb(199, 199, 199)</td>
+ <td align="left">#C7C7C7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey78</td>
+ <td align="center" style="background-color:rgb(199, 199, 199)">grey78</td>
+ <td align="left">rgb(199, 199, 199)</td>
+ <td align="left">#C7C7C7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray77</td>
+ <td align="center" style="background-color:rgb(196, 196, 196)">gray77</td>
+ <td align="left">rgb(196, 196, 196)</td>
+ <td align="left">#C4C4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey77</td>
+ <td align="center" style="background-color:rgb(196, 196, 196)">grey77</td>
+ <td align="left">rgb(196, 196, 196)</td>
+ <td align="left">#C4C4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray76</td>
+ <td align="center" style="background-color:rgb(194, 194, 194)">gray76</td>
+ <td align="left">rgb(194, 194, 194)</td>
+ <td align="left">#C2C2C2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey76</td>
+ <td align="center" style="background-color:rgb(194, 194, 194)">grey76</td>
+ <td align="left">rgb(194, 194, 194)</td>
+ <td align="left">#C2C2C2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">silver</td>
+ <td align="center" style="background-color:rgb(192, 192, 192)">silver</td>
+ <td align="left">rgb(192, 192, 192)</td>
+ <td align="left">#C0C0C0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray75</td>
+ <td align="center" style="background-color:rgb(191, 191, 191)">gray75</td>
+ <td align="left">rgb(191, 191, 191)</td>
+ <td align="left">#BFBFBF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey75</td>
+ <td align="center" style="background-color:rgb(191, 191, 191)">grey75</td>
+ <td align="left">rgb(191, 191, 191)</td>
+ <td align="left">#BFBFBF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray74</td>
+ <td align="center" style="background-color:rgb(189, 189, 189)">gray74</td>
+ <td align="left">rgb(189, 189, 189)</td>
+ <td align="left">#BDBDBD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey74</td>
+ <td align="center" style="background-color:rgb(189, 189, 189)">grey74</td>
+ <td align="left">rgb(189, 189, 189)</td>
+ <td align="left">#BDBDBD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray73</td>
+ <td align="center" style="background-color:rgb(186, 186, 186)">gray73</td>
+ <td align="left">rgb(186, 186, 186)</td>
+ <td align="left">#BABABA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey73</td>
+ <td align="center" style="background-color:rgb(186, 186, 186)">grey73</td>
+ <td align="left">rgb(186, 186, 186)</td>
+ <td align="left">#BABABA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray72</td>
+ <td align="center" style="background-color:rgb(184, 184, 184)">gray72</td>
+ <td align="left">rgb(184, 184, 184)</td>
+ <td align="left">#B8B8B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey72</td>
+ <td align="center" style="background-color:rgb(184, 184, 184)">grey72</td>
+ <td align="left">rgb(184, 184, 184)</td>
+ <td align="left">#B8B8B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray71</td>
+ <td align="center" style="background-color:rgb(181, 181, 181)">gray71</td>
+ <td align="left">rgb(181, 181, 181)</td>
+ <td align="left">#B5B5B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey71</td>
+ <td align="center" style="background-color:rgb(181, 181, 181)">grey71</td>
+ <td align="left">rgb(181, 181, 181)</td>
+ <td align="left">#B5B5B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray70</td>
+ <td align="center" style="background-color:rgb(179, 179, 179)">gray70</td>
+ <td align="left">rgb(179, 179, 179)</td>
+ <td align="left">#B3B3B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey70</td>
+ <td align="center" style="background-color:rgb(179, 179, 179)">grey70</td>
+ <td align="left">rgb(179, 179, 179)</td>
+ <td align="left">#B3B3B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray69</td>
+ <td align="center" style="background-color:rgb(176, 176, 176)">gray69</td>
+ <td align="left">rgb(176, 176, 176)</td>
+ <td align="left">#B0B0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey69</td>
+ <td align="center" style="background-color:rgb(176, 176, 176)">grey69</td>
+ <td align="left">rgb(176, 176, 176)</td>
+ <td align="left">#B0B0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray68</td>
+ <td align="center" style="background-color:rgb(173, 173, 173)">gray68</td>
+ <td align="left">rgb(173, 173, 173)</td>
+ <td align="left">#ADADAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey68</td>
+ <td align="center" style="background-color:rgb(173, 173, 173)">grey68</td>
+ <td align="left">rgb(173, 173, 173)</td>
+ <td align="left">#ADADAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray67</td>
+ <td align="center" style="background-color:rgb(171, 171, 171)">gray67</td>
+ <td align="left">rgb(171, 171, 171)</td>
+ <td align="left">#ABABAB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey67</td>
+ <td align="center" style="background-color:rgb(171, 171, 171)">grey67</td>
+ <td align="left">rgb(171, 171, 171)</td>
+ <td align="left">#ABABAB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGray</td>
+ <td align="center" style="background-color:rgb(169, 169, 169)">DarkGray</td>
+ <td align="left">rgb(169, 169, 169)</td>
+ <td align="left">#A9A9A9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGrey</td>
+ <td align="center" style="background-color:rgb(169, 169, 169)">DarkGrey</td>
+ <td align="left">rgb(169, 169, 169)</td>
+ <td align="left">#A9A9A9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray66</td>
+ <td align="center" style="background-color:rgb(168, 168, 168)">gray66</td>
+ <td align="left">rgb(168, 168, 168)</td>
+ <td align="left">#A8A8A8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey66</td>
+ <td align="center" style="background-color:rgb(168, 168, 168)">grey66</td>
+ <td align="left">rgb(168, 168, 168)</td>
+ <td align="left">#A8A8A8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray65</td>
+ <td align="center" style="background-color:rgb(166, 166, 166)">gray65</td>
+ <td align="left">rgb(166, 166, 166)</td>
+ <td align="left">#A6A6A6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey65</td>
+ <td align="center" style="background-color:rgb(166, 166, 166)">grey65</td>
+ <td align="left">rgb(166, 166, 166)</td>
+ <td align="left">#A6A6A6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray64</td>
+ <td align="center" style="background-color:rgb(163, 163, 163)">gray64</td>
+ <td align="left">rgb(163, 163, 163)</td>
+ <td align="left">#A3A3A3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey64</td>
+ <td align="center" style="background-color:rgb(163, 163, 163)">grey64</td>
+ <td align="left">rgb(163, 163, 163)</td>
+ <td align="left">#A3A3A3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray63</td>
+ <td align="center" style="background-color:rgb(161, 161, 161)">gray63</td>
+ <td align="left">rgb(161, 161, 161)</td>
+ <td align="left">#A1A1A1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey63</td>
+ <td align="center" style="background-color:rgb(161, 161, 161)">grey63</td>
+ <td align="left">rgb(161, 161, 161)</td>
+ <td align="left">#A1A1A1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray62</td>
+ <td align="center" style="background-color:rgb(158, 158, 158)">gray62</td>
+ <td align="left">rgb(158, 158, 158)</td>
+ <td align="left">#9E9E9E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey62</td>
+ <td align="center" style="background-color:rgb(158, 158, 158)">grey62</td>
+ <td align="left">rgb(158, 158, 158)</td>
+ <td align="left">#9E9E9E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray61</td>
+ <td align="center" style="background-color:rgb(156, 156, 156)">gray61</td>
+ <td align="left">rgb(156, 156, 156)</td>
+ <td align="left">#9C9C9C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey61</td>
+ <td align="center" style="background-color:rgb(156, 156, 156)">grey61</td>
+ <td align="left">rgb(156, 156, 156)</td>
+ <td align="left">#9C9C9C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray60</td>
+ <td align="center" style="background-color:rgb(153, 153, 153)">gray60</td>
+ <td align="left">rgb(153, 153, 153)</td>
+ <td align="left">#999999</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey60</td>
+ <td align="center" style="background-color:rgb(153, 153, 153)">grey60</td>
+ <td align="left">rgb(153, 153, 153)</td>
+ <td align="left">#999999</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray59</td>
+ <td align="center" style="background-color:rgb(150, 150, 150)">gray59</td>
+ <td align="left">rgb(150, 150, 150)</td>
+ <td align="left">#969696</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey59</td>
+ <td align="center" style="background-color:rgb(150, 150, 150)">grey59</td>
+ <td align="left">rgb(150, 150, 150)</td>
+ <td align="left">#969696</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray58</td>
+ <td align="center" style="background-color:rgb(148, 148, 148)">gray58</td>
+ <td align="left">rgb(148, 148, 148)</td>
+ <td align="left">#949494</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey58</td>
+ <td align="center" style="background-color:rgb(148, 148, 148)">grey58</td>
+ <td align="left">rgb(148, 148, 148)</td>
+ <td align="left">#949494</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray57</td>
+ <td align="center" style="background-color:rgb(145, 145, 145)">gray57</td>
+ <td align="left">rgb(145, 145, 145)</td>
+ <td align="left">#919191</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey57</td>
+ <td align="center" style="background-color:rgb(145, 145, 145)">grey57</td>
+ <td align="left">rgb(145, 145, 145)</td>
+ <td align="left">#919191</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray56</td>
+ <td align="center" style="background-color:rgb(143, 143, 143)">gray56</td>
+ <td align="left">rgb(143, 143, 143)</td>
+ <td align="left">#8F8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey56</td>
+ <td align="center" style="background-color:rgb(143, 143, 143)">grey56</td>
+ <td align="left">rgb(143, 143, 143)</td>
+ <td align="left">#8F8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray55</td>
+ <td align="center" style="background-color:rgb(140, 140, 140)">gray55</td>
+ <td align="left">rgb(140, 140, 140)</td>
+ <td align="left">#8C8C8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey55</td>
+ <td align="center" style="background-color:rgb(140, 140, 140)">grey55</td>
+ <td align="left">rgb(140, 140, 140)</td>
+ <td align="left">#8C8C8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray54</td>
+ <td align="center" style="background-color:rgb(138, 138, 138)">gray54</td>
+ <td align="left">rgb(138, 138, 138)</td>
+ <td align="left">#8A8A8A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey54</td>
+ <td align="center" style="background-color:rgb(138, 138, 138)">grey54</td>
+ <td align="left">rgb(138, 138, 138)</td>
+ <td align="left">#8A8A8A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray53</td>
+ <td align="center" style="background-color:rgb(135, 135, 135)">gray53</td>
+ <td align="left">rgb(135, 135, 135)</td>
+ <td align="left">#878787</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey53</td>
+ <td align="center" style="background-color:rgb(135, 135, 135)">grey53</td>
+ <td align="left">rgb(135, 135, 135)</td>
+ <td align="left">#878787</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray52</td>
+ <td align="center" style="background-color:rgb(133, 133, 133)">gray52</td>
+ <td align="left">rgb(133, 133, 133)</td>
+ <td align="left">#858585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey52</td>
+ <td align="center" style="background-color:rgb(133, 133, 133)">grey52</td>
+ <td align="left">rgb(133, 133, 133)</td>
+ <td align="left">#858585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray51</td>
+ <td align="center" style="background-color:rgb(130, 130, 130)">gray51</td>
+ <td align="left">rgb(130, 130, 130)</td>
+ <td align="left">#828282</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey51</td>
+ <td align="center" style="background-color:rgb(130, 130, 130)">grey51</td>
+ <td align="left">rgb(130, 130, 130)</td>
+ <td align="left">#828282</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">fractal</td>
+ <td align="center" style="background-color:rgb(128, 128, 128)">fractal</td>
+ <td align="left">rgb(128, 128, 128)</td>
+ <td align="left">#808080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray50</td>
+ <td align="center" style="background-color:rgb(127, 127, 127)">gray50</td>
+ <td align="left">rgb(127, 127, 127)</td>
+ <td align="left">#7F7F7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey50</td>
+ <td align="center" style="background-color:rgb(127, 127, 127)">grey50</td>
+ <td align="left">rgb(127, 127, 127)</td>
+ <td align="left">#7F7F7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray</td>
+ <td align="center" style="background-color:rgb(126, 126, 126)">gray</td>
+ <td align="left">rgb(126, 126, 126)</td>
+ <td align="left">#7E7E7E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray49</td>
+ <td align="center" style="background-color:rgb(125, 125, 125)">gray49</td>
+ <td align="left">rgb(125, 125, 125)</td>
+ <td align="left">#7D7D7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey49</td>
+ <td align="center" style="background-color:rgb(125, 125, 125)">grey49</td>
+ <td align="left">rgb(125, 125, 125)</td>
+ <td align="left">#7D7D7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray48</td>
+ <td align="center" style="background-color:rgb(122, 122, 122)">gray48</td>
+ <td align="left">rgb(122, 122, 122)</td>
+ <td align="left">#7A7A7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey48</td>
+ <td align="center" style="background-color:rgb(122, 122, 122)">grey48</td>
+ <td align="left">rgb(122, 122, 122)</td>
+ <td align="left">#7A7A7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray47</td>
+ <td align="center" style="background-color:rgb(120, 120, 120)">gray47</td>
+ <td align="left">rgb(120, 120, 120)</td>
+ <td align="left">#787878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey47</td>
+ <td align="center" style="background-color:rgb(120, 120, 120)">grey47</td>
+ <td align="left">rgb(120, 120, 120)</td>
+ <td align="left">#787878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray46</td>
+ <td align="center" style="background-color:rgb(117, 117, 117)">gray46</td>
+ <td align="left">rgb(117, 117, 117)</td>
+ <td align="left">#757575</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey46</td>
+ <td align="center" style="background-color:rgb(117, 117, 117)">grey46</td>
+ <td align="left">rgb(117, 117, 117)</td>
+ <td align="left">#757575</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray45</td>
+ <td align="center" style="background-color:rgb(115, 115, 115)">gray45</td>
+ <td align="left">rgb(115, 115, 115)</td>
+ <td align="left">#737373</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey45</td>
+ <td align="center" style="background-color:rgb(115, 115, 115)">grey45</td>
+ <td align="left">rgb(115, 115, 115)</td>
+ <td align="left">#737373</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray44</td>
+ <td align="center" style="background-color:rgb(112, 112, 112)">gray44</td>
+ <td align="left">rgb(112, 112, 112)</td>
+ <td align="left">#707070</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey44</td>
+ <td align="center" style="background-color:rgb(112, 112, 112)">grey44</td>
+ <td align="left">rgb(112, 112, 112)</td>
+ <td align="left">#707070</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray43</td>
+ <td align="center" style="background-color:rgb(110, 110, 110)">gray43</td>
+ <td align="left">rgb(110, 110, 110)</td>
+ <td align="left">#6E6E6E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey43</td>
+ <td align="center" style="background-color:rgb(110, 110, 110)">grey43</td>
+ <td align="left">rgb(110, 110, 110)</td>
+ <td align="left">#6E6E6E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray42</td>
+ <td align="center" style="background-color:rgb(107, 107, 107)">gray42</td>
+ <td align="left">rgb(107, 107, 107)</td>
+ <td align="left">#6B6B6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey42</td>
+ <td align="center" style="background-color:rgb(107, 107, 107)">grey42</td>
+ <td align="left">rgb(107, 107, 107)</td>
+ <td align="left">#6B6B6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DimGray</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">DimGray</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DimGrey</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">DimGrey</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray41</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">gray41</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey41</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">grey41</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray40</td>
+ <td align="center" style="background-color:rgb(102, 102, 102)">gray40</td>
+ <td align="left">rgb(102, 102, 102)</td>
+ <td align="left">#666666</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey40</td>
+ <td align="center" style="background-color:rgb(102, 102, 102)">grey40</td>
+ <td align="left">rgb(102, 102, 102)</td>
+ <td align="left">#666666</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray39</td>
+ <td align="center" style="background-color:rgb( 99, 99, 99)">gray39</td>
+ <td align="left">rgb( 99, 99, 99)</td>
+ <td align="left">#636363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey39</td>
+ <td align="center" style="background-color:rgb( 99, 99, 99)">grey39</td>
+ <td align="left">rgb( 99, 99, 99)</td>
+ <td align="left">#636363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray38</td>
+ <td align="center" style="background-color:rgb( 97, 97, 97)">gray38</td>
+ <td align="left">rgb( 97, 97, 97)</td>
+ <td align="left">#616161</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey38</td>
+ <td align="center" style="background-color:rgb( 97, 97, 97)">grey38</td>
+ <td align="left">rgb( 97, 97, 97)</td>
+ <td align="left">#616161</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray37</td>
+ <td align="center" style="background-color:rgb( 94, 94, 94)">gray37</td>
+ <td align="left">rgb( 94, 94, 94)</td>
+ <td align="left">#5E5E5E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey37</td>
+ <td align="center" style="background-color:rgb( 94, 94, 94)">grey37</td>
+ <td align="left">rgb( 94, 94, 94)</td>
+ <td align="left">#5E5E5E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray36</td>
+ <td align="center" style="background-color:rgb( 92, 92, 92)">gray36</td>
+ <td align="left">rgb( 92, 92, 92)</td>
+ <td align="left">#5C5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey36</td>
+ <td align="center" style="background-color:rgb( 92, 92, 92)">grey36</td>
+ <td align="left">rgb( 92, 92, 92)</td>
+ <td align="left">#5C5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray35</td>
+ <td align="center" style="background-color:rgb( 89, 89, 89)">gray35</td>
+ <td align="left">rgb( 89, 89, 89)</td>
+ <td align="left">#595959</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey35</td>
+ <td align="center" style="background-color:rgb( 89, 89, 89)">grey35</td>
+ <td align="left">rgb( 89, 89, 89)</td>
+ <td align="left">#595959</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray34</td>
+ <td align="center" style="background-color:rgb( 87, 87, 87)">gray34</td>
+ <td align="left">rgb( 87, 87, 87)</td>
+ <td align="left">#575757</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey34</td>
+ <td align="center" style="background-color:rgb( 87, 87, 87)">grey34</td>
+ <td align="left">rgb( 87, 87, 87)</td>
+ <td align="left">#575757</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray33</td>
+ <td align="center" style="background-color:rgb( 84, 84, 84)">gray33</td>
+ <td align="left">rgb( 84, 84, 84)</td>
+ <td align="left">#545454</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey33</td>
+ <td align="center" style="background-color:rgb( 84, 84, 84)">grey33</td>
+ <td align="left">rgb( 84, 84, 84)</td>
+ <td align="left">#545454</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray32</td>
+ <td align="center" style="background-color:rgb( 82, 82, 82)">gray32</td>
+ <td align="left">rgb( 82, 82, 82)</td>
+ <td align="left">#525252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey32</td>
+ <td align="center" style="background-color:rgb( 82, 82, 82)">grey32</td>
+ <td align="left">rgb( 82, 82, 82)</td>
+ <td align="left">#525252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray31</td>
+ <td align="center" style="background-color:rgb( 79, 79, 79)">gray31</td>
+ <td align="left">rgb( 79, 79, 79)</td>
+ <td align="left">#4F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey31</td>
+ <td align="center" style="background-color:rgb( 79, 79, 79)">grey31</td>
+ <td align="left">rgb( 79, 79, 79)</td>
+ <td align="left">#4F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray30</td>
+ <td align="center" style="background-color:rgb( 77, 77, 77)">gray30</td>
+ <td align="left">rgb( 77, 77, 77)</td>
+ <td align="left">#4D4D4D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey30</td>
+ <td align="center" style="background-color:rgb( 77, 77, 77)">grey30</td>
+ <td align="left">rgb( 77, 77, 77)</td>
+ <td align="left">#4D4D4D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray29</td>
+ <td align="center" style="background-color:rgb( 74, 74, 74)">gray29</td>
+ <td align="left">rgb( 74, 74, 74)</td>
+ <td align="left">#4A4A4A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey29</td>
+ <td align="center" style="background-color:rgb( 74, 74, 74)">grey29</td>
+ <td align="left">rgb( 74, 74, 74)</td>
+ <td align="left">#4A4A4A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray28</td>
+ <td align="center" style="background-color:rgb( 71, 71, 71)">gray28</td>
+ <td align="left">rgb( 71, 71, 71)</td>
+ <td align="left">#474747</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey28</td>
+ <td align="center" style="background-color:rgb( 71, 71, 71)">grey28</td>
+ <td align="left">rgb( 71, 71, 71)</td>
+ <td align="left">#474747</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray27</td>
+ <td align="center" style="background-color:rgb( 69, 69, 69)">gray27</td>
+ <td align="left">rgb( 69, 69, 69)</td>
+ <td align="left">#454545</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey27</td>
+ <td align="center" style="background-color:rgb( 69, 69, 69)">grey27</td>
+ <td align="left">rgb( 69, 69, 69)</td>
+ <td align="left">#454545</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray26</td>
+ <td align="center" style="background-color:rgb( 66, 66, 66)">gray26</td>
+ <td align="left">rgb( 66, 66, 66)</td>
+ <td align="left">#424242</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey26</td>
+ <td align="center" style="background-color:rgb( 66, 66, 66)">grey26</td>
+ <td align="left">rgb( 66, 66, 66)</td>
+ <td align="left">#424242</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray25</td>
+ <td align="center" style="background-color:rgb( 64, 64, 64)">gray25</td>
+ <td align="left">rgb( 64, 64, 64)</td>
+ <td align="left">#404040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey25</td>
+ <td align="center" style="background-color:rgb( 64, 64, 64)">grey25</td>
+ <td align="left">rgb( 64, 64, 64)</td>
+ <td align="left">#404040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray24</td>
+ <td align="center" style="background-color:rgb( 61, 61, 61)">gray24</td>
+ <td align="left">rgb( 61, 61, 61)</td>
+ <td align="left">#3D3D3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey24</td>
+ <td align="center" style="background-color:rgb( 61, 61, 61)">grey24</td>
+ <td align="left">rgb( 61, 61, 61)</td>
+ <td align="left">#3D3D3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray23</td>
+ <td align="center" style="background-color:rgb( 59, 59, 59)">gray23</td>
+ <td align="left">rgb( 59, 59, 59)</td>
+ <td align="left">#3B3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey23</td>
+ <td align="center" style="background-color:rgb( 59, 59, 59)">grey23</td>
+ <td align="left">rgb( 59, 59, 59)</td>
+ <td align="left">#3B3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray22</td>
+ <td align="center" style="background-color:rgb( 56, 56, 56)">gray22</td>
+ <td align="left">rgb( 56, 56, 56)</td>
+ <td align="left">#383838</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey22</td>
+ <td align="center" style="background-color:rgb( 56, 56, 56)">grey22</td>
+ <td align="left">rgb( 56, 56, 56)</td>
+ <td align="left">#383838</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray21</td>
+ <td align="center" style="background-color:rgb( 54, 54, 54)">gray21</td>
+ <td align="left">rgb( 54, 54, 54)</td>
+ <td align="left">#363636</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey21</td>
+ <td align="center" style="background-color:rgb( 54, 54, 54)">grey21</td>
+ <td align="left">rgb( 54, 54, 54)</td>
+ <td align="left">#363636</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray20</td>
+ <td align="center" style="background-color:rgb( 51, 51, 51)">gray20</td>
+ <td align="left">rgb( 51, 51, 51)</td>
+ <td align="left">#333333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey20</td>
+ <td align="center" style="background-color:rgb( 51, 51, 51)">grey20</td>
+ <td align="left">rgb( 51, 51, 51)</td>
+ <td align="left">#333333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray19</td>
+ <td align="center" style="background-color:rgb( 48, 48, 48)">gray19</td>
+ <td align="left">rgb( 48, 48, 48)</td>
+ <td align="left">#303030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey19</td>
+ <td align="center" style="background-color:rgb( 48, 48, 48)">grey19</td>
+ <td align="left">rgb( 48, 48, 48)</td>
+ <td align="left">#303030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray18</td>
+ <td align="center" style="background-color:rgb( 46, 46, 46)">gray18</td>
+ <td align="left">rgb( 46, 46, 46)</td>
+ <td align="left">#2E2E2E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey18</td>
+ <td align="center" style="background-color:rgb( 46, 46, 46)">grey18</td>
+ <td align="left">rgb( 46, 46, 46)</td>
+ <td align="left">#2E2E2E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray17</td>
+ <td align="center" style="background-color:rgb( 43, 43, 43)">gray17</td>
+ <td align="left">rgb( 43, 43, 43)</td>
+ <td align="left">#2B2B2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey17</td>
+ <td align="center" style="background-color:rgb( 43, 43, 43)">grey17</td>
+ <td align="left">rgb( 43, 43, 43)</td>
+ <td align="left">#2B2B2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray16</td>
+ <td align="center" style="background-color:rgb( 41, 41, 41)">gray16</td>
+ <td align="left">rgb( 41, 41, 41)</td>
+ <td align="left">#292929</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey16</td>
+ <td align="center" style="background-color:rgb( 41, 41, 41)">grey16</td>
+ <td align="left">rgb( 41, 41, 41)</td>
+ <td align="left">#292929</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray15</td>
+ <td align="center" style="background-color:rgb( 38, 38, 38)">gray15</td>
+ <td align="left">rgb( 38, 38, 38)</td>
+ <td align="left">#262626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey15</td>
+ <td align="center" style="background-color:rgb( 38, 38, 38)">grey15</td>
+ <td align="left">rgb( 38, 38, 38)</td>
+ <td align="left">#262626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray14</td>
+ <td align="center" style="background-color:rgb( 36, 36, 36)">gray14</td>
+ <td align="left">rgb( 36, 36, 36)</td>
+ <td align="left">#242424</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey14</td>
+ <td align="center" style="background-color:rgb( 36, 36, 36)">grey14</td>
+ <td align="left">rgb( 36, 36, 36)</td>
+ <td align="left">#242424</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray13</td>
+ <td align="center" style="background-color:rgb( 33, 33, 33)">gray13</td>
+ <td align="left">rgb( 33, 33, 33)</td>
+ <td align="left">#212121</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey13</td>
+ <td align="center" style="background-color:rgb( 33, 33, 33)">grey13</td>
+ <td align="left">rgb( 33, 33, 33)</td>
+ <td align="left">#212121</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray12</td>
+ <td align="center" style="background-color:rgb( 31, 31, 31)">gray12</td>
+ <td align="left">rgb( 31, 31, 31)</td>
+ <td align="left">#1F1F1F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey12</td>
+ <td align="center" style="background-color:rgb( 31, 31, 31)">grey12</td>
+ <td align="left">rgb( 31, 31, 31)</td>
+ <td align="left">#1F1F1F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray11</td>
+ <td align="center" style="background-color:rgb( 28, 28, 28)">gray11</td>
+ <td align="left">rgb( 28, 28, 28)</td>
+ <td align="left">#1C1C1C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey11</td>
+ <td align="center" style="background-color:rgb( 28, 28, 28)">grey11</td>
+ <td align="left">rgb( 28, 28, 28)</td>
+ <td align="left">#1C1C1C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray10</td>
+ <td align="center" style="background-color:rgb( 26, 26, 26)">gray10</td>
+ <td align="left">rgb( 26, 26, 26)</td>
+ <td align="left">#1A1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey10</td>
+ <td align="center" style="background-color:rgb( 26, 26, 26)">grey10</td>
+ <td align="left">rgb( 26, 26, 26)</td>
+ <td align="left">#1A1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray9</td>
+ <td align="center" style="background-color:rgb( 23, 23, 23)">gray9</td>
+ <td align="left">rgb( 23, 23, 23)</td>
+ <td align="left">#171717</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey9</td>
+ <td align="center" style="background-color:rgb( 23, 23, 23)">grey9</td>
+ <td align="left">rgb( 23, 23, 23)</td>
+ <td align="left">#171717</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray8</td>
+ <td align="center" style="background-color:rgb( 20, 20, 20)">gray8</td>
+ <td align="left">rgb( 20, 20, 20)</td>
+ <td align="left">#141414</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey8</td>
+ <td align="center" style="background-color:rgb( 20, 20, 20)">grey8</td>
+ <td align="left">rgb( 20, 20, 20)</td>
+ <td align="left">#141414</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray7</td>
+ <td align="center" style="background-color:rgb( 18, 18, 18)">gray7</td>
+ <td align="left">rgb( 18, 18, 18)</td>
+ <td align="left">#121212</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey7</td>
+ <td align="center" style="background-color:rgb( 18, 18, 18)">grey7</td>
+ <td align="left">rgb( 18, 18, 18)</td>
+ <td align="left">#121212</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray6</td>
+ <td align="center" style="background-color:rgb( 15, 15, 15)">gray6</td>
+ <td align="left">rgb( 15, 15, 15)</td>
+ <td align="left">#0F0F0F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey6</td>
+ <td align="center" style="background-color:rgb( 15, 15, 15)">grey6</td>
+ <td align="left">rgb( 15, 15, 15)</td>
+ <td align="left">#0F0F0F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray5</td>
+ <td align="center" style="background-color:rgb( 13, 13, 13)">gray5</td>
+ <td align="left">rgb( 13, 13, 13)</td>
+ <td align="left">#0D0D0D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey5</td>
+ <td align="center" style="background-color:rgb( 13, 13, 13)">grey5</td>
+ <td align="left">rgb( 13, 13, 13)</td>
+ <td align="left">#0D0D0D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray4</td>
+ <td align="center" style="background-color:rgb( 10, 10, 10)">gray4</td>
+ <td align="left">rgb( 10, 10, 10)</td>
+ <td align="left">#0A0A0A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey4</td>
+ <td align="center" style="background-color:rgb( 10, 10, 10)">grey4</td>
+ <td align="left">rgb( 10, 10, 10)</td>
+ <td align="left">#0A0A0A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray3</td>
+ <td align="center" style="background-color:rgb( 8, 8, 8)">gray3</td>
+ <td align="left">rgb( 8, 8, 8)</td>
+ <td align="left">#080808</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey3</td>
+ <td align="center" style="background-color:rgb( 8, 8, 8)">grey3</td>
+ <td align="left">rgb( 8, 8, 8)</td>
+ <td align="left">#080808</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray2</td>
+ <td align="center" style="background-color:rgb( 5, 5, 5)">gray2</td>
+ <td align="left">rgb( 5, 5, 5)</td>
+ <td align="left">#050505</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey2</td>
+ <td align="center" style="background-color:rgb( 5, 5, 5)">grey2</td>
+ <td align="left">rgb( 5, 5, 5)</td>
+ <td align="left">#050505</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray1</td>
+ <td align="center" style="background-color:rgb( 3, 3, 3)">gray1</td>
+ <td align="left">rgb( 3, 3, 3)</td>
+ <td align="left">#030303</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey1</td>
+ <td align="center" style="background-color:rgb( 3, 3, 3)">grey1</td>
+ <td align="left">rgb( 3, 3, 3)</td>
+ <td align="left">#030303</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">black</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">black</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray0</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">gray0</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey0</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">grey0</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">opaque</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">opaque</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">none</td>
+ <td align="center" style="background-color:white">none</td>
+ <td align="left">rgba( 0, 0, 0, 0.0)</td>
+ <td align="left">#00000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">transparent</td>
+ <td align="center" style="background-color:white">transparent</td>
+ <td align="left">rgba( 0, 0, 0, 0.0)</td>
+ <td align="left">#00000000</td>
+
+ </tr>
+
+ </tbody>
+</table>
+
+</div>
+
+</div>
+
+</body></html>
diff --git a/frontend/im/colors/css/jquery.fancybox.css b/frontend/im/colors/css/jquery.fancybox.css
new file mode 100644
index 0000000..05a191e
--- /dev/null
+++ b/frontend/im/colors/css/jquery.fancybox.css
@@ -0,0 +1,274 @@
+/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
+.fancybox-wrap,
+.fancybox-skin,
+.fancybox-outer,
+.fancybox-inner,
+.fancybox-image,
+.fancybox-wrap iframe,
+.fancybox-wrap object,
+.fancybox-nav,
+.fancybox-nav span,
+.fancybox-tmp
+{
+ padding: 0;
+ margin: 0;
+ border: 0;
+ outline: none;
+ vertical-align: top;
+}
+
+.fancybox-wrap {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 8020;
+}
+
+.fancybox-skin {
+ position: relative;
+ background: #f9f9f9;
+ color: #444;
+ text-shadow: none;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.fancybox-opened {
+ z-index: 8030;
+}
+
+.fancybox-opened .fancybox-skin {
+ -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+ -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+}
+
+.fancybox-outer, .fancybox-inner {
+ position: relative;
+}
+
+.fancybox-inner {
+ overflow: hidden;
+}
+
+.fancybox-type-iframe .fancybox-inner {
+ -webkit-overflow-scrolling: touch;
+}
+
+.fancybox-error {
+ color: #444;
+ font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
+ margin: 0;
+ padding: 15px;
+ white-space: nowrap;
+}
+
+.fancybox-image, .fancybox-iframe {
+ display: block;
+ width: 100%;
+ height: 100%;
+}
+
+.fancybox-image {
+ max-width: 100%;
+ max-height: 100%;
+}
+
+#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
+ background-image: url('../images/fancybox_sprite.png');
+}
+
+#fancybox-loading {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ margin-top: -22px;
+ margin-left: -22px;
+ background-position: 0 -108px;
+ opacity: 0.8;
+ cursor: pointer;
+ z-index: 8060;
+}
+
+#fancybox-loading div {
+ width: 44px;
+ height: 44px;
+ background: url('../images/fancybox_loading.gif') center center no-repeat;
+}
+
+.fancybox-close {
+ position: absolute;
+ top: -18px;
+ right: -18px;
+ width: 36px;
+ height: 36px;
+ cursor: pointer;
+ z-index: 8040;
+}
+
+.fancybox-nav {
+ position: absolute;
+ top: 0;
+ width: 40%;
+ height: 100%;
+ cursor: pointer;
+ text-decoration: none;
+ background: transparent url('../images/blank.gif'); /* helps IE */
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
+ z-index: 8040;
+}
+
+.fancybox-prev {
+ left: 0;
+}
+
+.fancybox-next {
+ right: 0;
+}
+
+.fancybox-nav span {
+ position: absolute;
+ top: 50%;
+ width: 36px;
+ height: 34px;
+ margin-top: -18px;
+ cursor: pointer;
+ z-index: 8040;
+ visibility: hidden;
+}
+
+.fancybox-prev span {
+ left: 10px;
+ background-position: 0 -36px;
+}
+
+.fancybox-next span {
+ right: 10px;
+ background-position: 0 -72px;
+}
+
+.fancybox-nav:hover span {
+ visibility: visible;
+}
+
+.fancybox-tmp {
+ position: absolute;
+ top: -99999px;
+ left: -99999px;
+ visibility: hidden;
+ max-width: 99999px;
+ max-height: 99999px;
+ overflow: visible !important;
+}
+
+/* Overlay helper */
+
+.fancybox-lock {
+ overflow: hidden !important;
+ width: auto;
+}
+
+.fancybox-lock body {
+ overflow: hidden !important;
+}
+
+.fancybox-lock-test {
+ overflow-y: hidden !important;
+}
+
+.fancybox-overlay {
+ position: absolute;
+ top: 0;
+ left: 0;
+ overflow: hidden;
+ display: none;
+ z-index: 8010;
+ background: url('../images/fancybox_overlay.png');
+}
+
+.fancybox-overlay-fixed {
+ position: fixed;
+ bottom: 0;
+ right: 0;
+}
+
+.fancybox-lock .fancybox-overlay {
+ overflow: auto;
+ overflow-y: scroll;
+}
+
+/* Title helper */
+
+.fancybox-title {
+ visibility: hidden;
+ font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
+ position: relative;
+ text-shadow: none;
+ z-index: 8050;
+}
+
+.fancybox-opened .fancybox-title {
+ visibility: visible;
+}
+
+.fancybox-title-float-wrap {
+ position: absolute;
+ bottom: 0;
+ right: 50%;
+ margin-bottom: -35px;
+ z-index: 8050;
+ text-align: center;
+}
+
+.fancybox-title-float-wrap .child {
+ display: inline-block;
+ margin-right: -100%;
+ padding: 2px 20px;
+ background: transparent; /* Fallback for web browsers that doesn't support RGBa */
+ background: rgba(0, 0, 0, 0.8);
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+ text-shadow: 0 1px 2px #222;
+ color: #FFF;
+ font-weight: bold;
+ line-height: 24px;
+ white-space: nowrap;
+}
+
+.fancybox-title-outside-wrap {
+ position: relative;
+ margin-top: 10px;
+ color: #fff;
+}
+
+.fancybox-title-inside-wrap {
+ padding-top: 10px;
+}
+
+.fancybox-title-over-wrap {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ color: #fff;
+ padding: 10px;
+ background: #000;
+ background: rgba(0, 0, 0, .8);
+}
+
+/*Retina graphics!*/
+@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
+ only screen and (min--moz-device-pixel-ratio: 1.5),
+ only screen and (min-device-pixel-ratio: 1.5){
+
+ #fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
+ background-image: url('../images/fancybox_sprite@2x.png');
+ background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/
+ }
+
+ #fancybox-loading div {
+ background-image: url('../images/fancybox_loading@2x.gif');
+ background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/
+ }
+} \ No newline at end of file
diff --git a/frontend/im/colors/css/style.css b/frontend/im/colors/css/style.css
new file mode 100644
index 0000000..49d4b48
--- /dev/null
+++ b/frontend/im/colors/css/style.css
@@ -0,0 +1,264 @@
+body {
+ margin:0;
+}
+.hide{
+ display:none;
+}
+#colorpicker
+{
+ position: fixed;
+ top: 0px;
+ left: 0px;
+ height:100%;
+ width:100%;
+ overflow-y: scroll;
+ font-family:helvetica;
+ font-size:10px;
+ background-color: gray;
+ background-color: black;
+ background-image: url("../images/bg.dither.gif");
+}
+#infoswitch, #hexswitch, #backgroundswitch
+{
+ background-image:url("../images/gradient.jpg");
+ cursor:pointer;
+}
+#bg_menu {
+ height: 100px;
+ background-color:silver;
+}
+.bgOptions{
+ font-family: 'Chivo', sans-serif;
+ font-style: italic;
+ font-size: 0.6em;
+ cursor: pointer;
+}
+#bg1{
+background-color: black;
+background-image: url("../images/bg.dither.gif");
+}
+#bg1text{
+ background: rgb(204,204,204);
+ background-image: none;
+}
+#bg2{
+background-color: black;
+color: whitesmoke;
+}
+#bg3{
+background-color: white;
+color: black;
+}
+#bg4{
+background-color: gray;
+color: black;
+}
+#bg5{}
+#preview {
+ height:150px;
+}
+#transparent,#submitvalue,#addfavlist,#openfavlist {
+ margin-top:0.5em;
+ font-size:12px;
+}
+#submitvalue{
+ text-align: center;
+}
+#namespace {
+ width:inherit;
+}
+#container {
+ margin:0 auto;
+ width:31%;
+ padding-top:100px;
+ padding-right:10px;
+ padding-left:10px;
+ text-align:center;
+ font-size:0;
+ margin-bottom:14px;
+}
+#container div
+{
+ text-align:left;
+ display: -moz-inline-stack;
+ display:inline-block;
+ vertical-align:bottom;
+ min-height: 30px;
+ zoom: 1;
+ word-wrap: break-word;
+ *display: inline;
+ cursor:pointer;
+}
+.colors
+{
+ font-size: 9px;
+ margin:2px 2px 0px 0px;
+}
+#colornames {
+ color:white;
+ z-index:12;
+ position:fixed;
+ top:50px;
+ left:2%;
+ width:400px;
+ font-size: 49px;
+ text-shadow: black 1px 2px;
+ display: block;
+}
+#infoswitch, #hexswitch, #backgroundswitch {
+ background-image:url('../images/gradient.jpg');
+ cursor:pointer;
+ font-size: 19px;
+ text-shadow: none;
+}
+#infoswitch span{
+ display: none;
+}
+#switches {
+
+ position:fixed;
+ top: 0px;
+ right:1.2em;
+ width: 334px;
+ font-size:20px;
+ border-style: groove;
+ border-width: 4px;
+ background-color:gray;
+ padding:2px;
+ box-shadow: 10px 10px 5px #141414;
+ z-index: 10;
+ overflow: visible;
+
+}
+.switches_depressed{
+ color: #aaa;
+}
+#nameholder, #namespace {
+ font-size: 30px;
+ width:70%;
+}
+.defaulttrans{
+ color:#141414;
+ box-shadow:10px 10px 5px #141414;
+ background-color:#D1D1D1;
+ border-width:2px;
+ border-style:outset;
+ cursor:pointer;
+}
+.hovertrans{
+ background-color:DarkGrey;
+ color:#383838;
+ box-shadow:5px 5px 2px #141414;
+}
+#vasebackground {
+ position: fixed;
+ z-index: 2;
+ height: 120px;
+ width: 69px;
+ top: 2px;
+ right: 30px;
+ background-color: rgb(171, 171, 171);
+}
+#vase {
+ position:fixed;
+ z-index:3;
+ height:120px;
+ width:69px;
+ top:2px;
+ right:30px;
+ background-image:url("../images/vase.png");
+}
+#vaseshim {
+ position:fixed;
+ z-index:4;
+ height:120px;
+ width:69px;
+ top:2px;
+ right:30px;
+ background-image:url("../images/vaseshim.png")
+}
+label {
+ display: inline-block;
+ width: 190px;
+ padding-right: 10px;
+ text-align: right;
+ color: #555;
+}
+#controls {
+ display: inline-block;
+ padding: 10px;
+ width: 430px;
+ height:402px;
+ position: absolute;
+ background-color: #fff;
+ background-image: url("../images/imcupbg.jpg");
+ background-position: center center;
+}
+.shim {
+ height: 10px;
+ clear: both;
+ display: block;
+}
+#controls *{
+ padding: 0;
+ margin: 0;
+ font-family: sans-serif;
+ font-size: 14px;
+}
+#controls a{
+ color: #a39;
+ font-weight: bold;
+ text-decoration:underline;
+}
+#controls a:hover{
+ cursor:pointer;
+ text-decoration:underline;
+}
+#noticeDlg {
+ display:none;
+}
+#favpanel{
+ width:inherit;
+ background: lightgray;
+ margin-top: 15px;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ height: 140px;
+ overflow-y: auto;
+}
+#favpanel .paneltitle{
+ color:black;
+ font-size: 16px;
+ text-align:center;
+ width:inherit;
+ display:block;
+}
+.favcolor label{
+ font-size: 12px;
+ text-align:left;
+ padding:0;
+ width:150px;
+ margin:0;
+ color:black;
+}
+.favcolor {
+ margin-right:3px;
+ margin-left:10px;
+ width:inherit;
+ display: block;
+}
+.clear {
+ clear:both;
+}
+.favmsg {
+ font-size: 13px;
+ color:red;
+ width:inherit;
+ text-align:center;
+ display:block;
+}
+.favcolorbox {
+ height:11px;
+ width:18px;
+ display:inline-block;
+}
diff --git a/frontend/im/colors/iframe.js b/frontend/im/colors/iframe.js
new file mode 100644
index 0000000..4b7d2ac
--- /dev/null
+++ b/frontend/im/colors/iframe.js
@@ -0,0 +1,25 @@
+$("#lnkcolorbox").click(function() {
+ $.fancybox.open({
+ href : 'colors.htm',
+ width : 700, // set the width
+ height : 610,
+ fitToView : true,
+ autoDimensions:false,
+ autoSize:false,
+ type : 'iframe',
+ closeBtn : false,
+ padding : 5,
+ beforeShow : function(){
+ $('.fancybox-iframe').contents().find('#submitvalue').click(function(){
+ $('.fancybox-iframe').contents().find('form').submit();
+ $.fancybox.close();
+ });
+ },
+ beforeClose : function(){
+ x = $('.fancybox-iframe').contents().find('#namespace').val();
+ },
+ afterClose: function(){
+ $('#img-hue').val(x);
+ }
+ });
+});
diff --git a/frontend/im/colors/images/Thumbs.db b/frontend/im/colors/images/Thumbs.db
new file mode 100644
index 0000000..ec01f6a
--- /dev/null
+++ b/frontend/im/colors/images/Thumbs.db
Binary files differ
diff --git a/frontend/im/colors/images/bg.dither.gif b/frontend/im/colors/images/bg.dither.gif
new file mode 100644
index 0000000..670df08
--- /dev/null
+++ b/frontend/im/colors/images/bg.dither.gif
Binary files differ
diff --git a/frontend/im/colors/images/blank.gif b/frontend/im/colors/images/blank.gif
new file mode 100644
index 0000000..35d42e8
--- /dev/null
+++ b/frontend/im/colors/images/blank.gif
Binary files differ
diff --git a/frontend/im/colors/images/fancybox_loading.gif b/frontend/im/colors/images/fancybox_loading.gif
new file mode 100644
index 0000000..a03a40c
--- /dev/null
+++ b/frontend/im/colors/images/fancybox_loading.gif
Binary files differ
diff --git a/frontend/im/colors/images/fancybox_loading@2x.gif b/frontend/im/colors/images/fancybox_loading@2x.gif
new file mode 100644
index 0000000..9205aeb
--- /dev/null
+++ b/frontend/im/colors/images/fancybox_loading@2x.gif
Binary files differ
diff --git a/frontend/im/colors/images/fancybox_overlay.png b/frontend/im/colors/images/fancybox_overlay.png
new file mode 100644
index 0000000..a439139
--- /dev/null
+++ b/frontend/im/colors/images/fancybox_overlay.png
Binary files differ
diff --git a/frontend/im/colors/images/fancybox_sprite.png b/frontend/im/colors/images/fancybox_sprite.png
new file mode 100644
index 0000000..fd8d5ca
--- /dev/null
+++ b/frontend/im/colors/images/fancybox_sprite.png
Binary files differ
diff --git a/frontend/im/colors/images/fancybox_sprite@2x.png b/frontend/im/colors/images/fancybox_sprite@2x.png
new file mode 100644
index 0000000..d0e4779
--- /dev/null
+++ b/frontend/im/colors/images/fancybox_sprite@2x.png
Binary files differ
diff --git a/frontend/im/colors/images/gradient.jpg b/frontend/im/colors/images/gradient.jpg
new file mode 100644
index 0000000..f3ff9f9
--- /dev/null
+++ b/frontend/im/colors/images/gradient.jpg
Binary files differ
diff --git a/frontend/im/colors/images/hoverbackground.jpg b/frontend/im/colors/images/hoverbackground.jpg
new file mode 100644
index 0000000..c1ef116
--- /dev/null
+++ b/frontend/im/colors/images/hoverbackground.jpg
Binary files differ
diff --git a/frontend/im/colors/images/imcupbg.jpg b/frontend/im/colors/images/imcupbg.jpg
new file mode 100644
index 0000000..b3cf3f5
--- /dev/null
+++ b/frontend/im/colors/images/imcupbg.jpg
Binary files differ
diff --git a/frontend/im/colors/images/user_convo.png b/frontend/im/colors/images/user_convo.png
new file mode 100644
index 0000000..9d3d55e
--- /dev/null
+++ b/frontend/im/colors/images/user_convo.png
Binary files differ
diff --git a/frontend/im/colors/images/vase.png b/frontend/im/colors/images/vase.png
new file mode 100644
index 0000000..153e72b
--- /dev/null
+++ b/frontend/im/colors/images/vase.png
Binary files differ
diff --git a/frontend/im/colors/images/vaseshim.png b/frontend/im/colors/images/vaseshim.png
new file mode 100644
index 0000000..7dbd352
--- /dev/null
+++ b/frontend/im/colors/images/vaseshim.png
Binary files differ
diff --git a/frontend/im/colors/index.html b/frontend/im/colors/index.html
new file mode 100644
index 0000000..541dc40
--- /dev/null
+++ b/frontend/im/colors/index.html
@@ -0,0 +1,108 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link rel="stylesheet" type="text/css" href="./css/style.css">
+</head>
+<body>
+ <div id="colorpicker">
+ <div id="container">
+ <div id="d0" class="colors"></div>
+ </div>
+ <div id="colornames">CLICK TO CHOOSE THE COLOR</div>
+ <div id="switches" title="click to drag">
+ <form action="" method="post">
+ <span class="subtitle">OPTIONS</span>
+ <div id="hexswitch" class="theswitches">CLICK TO SWITCH TO RGB VALUES</div>
+ <input type="hidden" name="opt_hexswitch" id="opt_hexswitch" />
+ <br />
+ <div id="infoswitch" class="theswitches">CLICK TO TOGGLE PALATE INFO<span id="infospace">(NONE)</span></div>
+ <input type="hidden" name="opt_infoswitch" id="opt_infoswitch" />
+ <br />
+ <div id="backgroundswitch" class="theswitches">BACKGROUNDS...</div>
+ <div id="bg_menu" class="hide">
+ <div class="bgOptions" id="bg1"><span id="bg1text">Dithered</span></div>
+ <div class="bgOptions" id="bg2">Black</div>
+ <div class="bgOptions" id="bg3">White</div>
+ <div class="bgOptions" id="bg4">Gray</div>
+ <div class="bgOptions" id="bg5">
+ <label for="chooseyourown">Choose your own (add a Url)</label>
+ <input type="text" value="" id="bgURI" name="bgURI">
+ <input type="hidden" name="opt_bgURI" id="opt_bgURI" />
+ </div>
+ <div class="bgOptions" id="selectors"></div>
+ </div>
+ <input type="hidden" name="opt_bgColor" id="opt_bgColor" />
+ <br />
+ <div id="preview" style="width: 206px; height: 127px; background-color: rgb(171, 171, 171); border-style: none;"></div>
+ <div class="subtitle">YOU WILL CHOOSE:<br />
+ <input type="text" id="namespace" name="namespace" class="subtitle" />
+
+ <div id="submitvalue" class="defaulttrans">PICK</div>
+ <br />
+ <span id="transparent">to choose transparent:
+ <span id="transbutton" class="defaulttrans">TRANSPARENT</span><span id="extra" class="smalltitle"></span>
+ </span>
+ </br>
+ <span id="addfavlist" class="defaulttrans">Add to Favorites</span>
+ <span id="openfavlist" class="defaulttrans">Open Favorties</span>
+ </div>
+ <span id="noticeDlg"></span>
+ <div id="favpanel" style="display:none;">
+ <input type="hidden" name="favcolors" id="favcolors" />
+ <label class="paneltitle">FAVORITES</label>
+ <span class="favcolor" style="display:none;"><input name="favcolor" type="radio" id="favnone" onclick="selectfavColor('');"><label>&nbsp;</label><span class="favcolorbox">&nbsp;</span></span>
+ </div>
+ <div class="clear"></div>
+ </form>
+ </div>
+<!-- <div id="vasebackground"></div>-->
+<!-- <div id="vase"></div>-->
+<!-- <div id="vaseshim"></div> -->
+ </div>
+ <script type="text/javascript" src="./js/jquery-1.10.1.js"></script>
+ <script type="text/javascript" src="./js/data.js"></script>
+ <script type="text/javascript" src="./js/colorpicker.js"></script>
+ <script type="text/javascript" src="./js/jquery.fancybox.js?v=2.1.5"></script>
+ <script type="text/javascript" src="./js/jquery.remember-state.js"></script>
+ <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>
+ <script type="text/javascript">
+ $(document).ready(function(){
+ $('#submitvalue').click(function(){
+ $("form").rememberState("save");
+ });
+ $(function() {
+ $("form").rememberState({
+ objName: "color_info",
+ noticeDialog:$('#noticeDlg').html("<a href=\"#\" id=\"linkrestore\">Restore</a>"),
+ noticeSelector:'.remember_state'
+ }).submit(false);
+ $('#linkrestore').click();
+ ColorPicker.loadColorStorage();
+ });
+ var lastoffset = 0;
+ $(window).scroll(function(){
+ if($(this).scrollTop() == 0) {
+ $('#switches').css({'top': '118px' });
+ }
+ if (bscroll)
+ {
+ if($(this).scrollTop() != 0) {
+ var fcolors = $('#favcolors').val();
+ var clist=fcolors.split(separate);
+ if (lastoffset < $(this).scrollTop()) {
+ $('#switches').css({'top': (118 - 19 * (clist.length - 3)) + 'px' });
+ }
+ }
+ }
+ lastoffset = $(this).scrollTop();
+ });
+ $("#switches").draggable()
+ window.onload = function () {
+ if ($("#favcolors").val()){
+ ColorPicker.openfavourites()
+ }
+ }
+ })
+ </script>
+</body>
+</html>
diff --git a/frontend/im/colors/js/ancient.js b/frontend/im/colors/js/ancient.js
new file mode 100644
index 0000000..5bf15c0
--- /dev/null
+++ b/frontend/im/colors/js/ancient.js
@@ -0,0 +1,528 @@
+var old = {};
+var colorsheight;
+var colorswidth;
+var widthratio = 7;
+var numberacross = 10;
+var backgroundstate = 2;
+var infostate = 0;
+var names = true;
+var hexes = false;
+var rgbs = false;
+var favshow = false;
+var selectedname = "";
+var selectedrgb;
+var curfavcolor = "";
+var curfavcolorId = "";
+var separate = ';';
+//---------element objects----------
+var transbutton = $('#transbutton');
+var submitvalue = $('#submitvalue');
+var addfav = $('#addfavlist');
+var openfav = $('#openfavlist');
+var preview = $('#preview');
+var colornames = $('#colornames');
+var namespace = $('#namespace');
+var extra = $('#extra');
+var container = $('#container');
+var switches = $('#switches');
+var transparent = $('#transparent');
+var infospace = $('#infospace');
+var infoswitch = $('#infoswitch');
+var backgroundswitch = $('#backgroundswitch');
+var bg_menu = $('#bg_menu');
+var vasebackground = $('#vasebackground');
+var hexswitch = $('#hexswitch');
+var favpanel = $('#favpanel');
+var orgheight = 0;
+var bscroll = false;
+//----------------------------------
+$(function(){
+ ColorPicker.show();
+});
+
+function selectfavColor(selcolor, id)
+{
+ addfav.html('Remove from Favorites');
+ curfavcolor = selcolor;
+ curfavcolorId = id;
+ var rgbregex = /rgb\((\d{1,3}), (\d{1,3}), (\d{1,3})\)/;
+ var hexregex = /^#(?:[0-9a-f]{3}){1,2}$/i;
+ hexes = false;
+ names = false;
+ rgbs = false;
+ var match = rgbregex.exec(selcolor);
+ if (match != null) {
+ selectedname = rgbtoname[selcolor];
+ selectedrgb = selcolor;
+ hexes = true;
+ hexswitch.html('CLICK TO SWITCH TO HEX VALUES');
+ } else if((match = hexregex.exec(selcolor))!= null) {
+ names = true;
+ selectedrgb = hextorgb[selcolor];
+ selectedname = rgbtoname[selectedrgb];
+ hexswitch.html('CLICK TO SWITCH TO COLOR NAMES');
+ } else {
+ selectedname = selcolor;
+ selectedrgb = hextorgb[nametohex[selectedname]];
+ hexswitch.html('CLICK TO SWITCH TO RGB VALUES');
+ rgbs = true;
+ }
+ colornames.html(selcolor);
+ namespace.val(selcolor);
+ preview.css({'background-color':selectedrgb,'border-style':'none'});
+ vasebackground.css('background-color',selectedrgb);
+}
+
+var ColorPicker = {
+ GoldenFuncs: {
+ regolden: function(num) {
+ ratio = (1+Math.sqrt(5))/2;
+ newnum = Math.round(num/ratio);
+ return newnum;
+ },
+ goldenize: function(num) {
+ ratio = (1+Math.sqrt(5))/2;
+ newnum = Math.round(num*ratio);
+ return newnum;
+ },
+ getproperty: function(idandselectr, propertystr) {
+ //turns css property width or height into an integer value
+ grab = $(idandselectr).css(propertystr);
+ grab = grab.slice(0,-2);
+ numval = parseInt(grab);
+ return numval;
+ },
+ makegolden: function(idandselectr, propertystr) {
+ result = ColorPicker.GoldenFuncs.getproperty(idandselectr, propertystr);
+ newval = ColorPicker.GoldenFuncs.goldenize(result) + 60;
+ propval = newval.toString()+'px';
+ if(propertystr == 'height') {
+ $(idandselectr).css('width', propval);
+ }else if(propertystr == 'width') {
+ $(idandselectr).css('height', propval);
+ }
+ }
+ },
+ Events: {
+ addEventListener: function(){
+ //--------event handler of transparent button-------
+ transbutton.click(function() {
+ namespace.val('transparent');
+ preview.css({'background-color':'transparent','border-style':'dashed','border-width':'2px'});
+ colornames.html('transparent');
+ colornames.fadeOut(100);
+ colornames.fadeIn(500);
+ extra.html('<br><br><span style="color:red;background-color:black;border-color:red; border-width:1px; border-style:solid; font-size:14px;">note: the .jpg image format does not support transparency</span>');
+ });
+ transbutton.hover(function(){ transbutton.addClass('hovertrans')},
+ function(){ transbutton.attr('class','defaulttrans')});
+ submitvalue.hover(function(){ submitvalue.addClass('hovertrans')},
+ function(){ submitvalue.attr('class','defaulttrans')});
+ addfav.hover(function(){ addfav.addClass('hovertrans')},
+ function(){ addfav.attr('class','defaulttrans')});
+ $('.bgOptions').click(function(){
+ if (this.id == "bg1")
+ {
+ $('#colorpicker').css({'background-image':'url("./images/bg.dither.gif")','background-color':'gray','background-color':'black'});
+ }else if(this.id == "bg5"){
+ $('#' + this.id).bind('keypress', function(event){
+ var key = event.which || event.keyCode;
+ if(key === 13) {
+ $('#colorpicker').css({'background-image':"url('" + $('#bgURI').val() + "')"});
+ $('#opt_bgURI').val($('#bgURI').val());
+ $('#bgURI').val('');
+ }
+ });
+ }else{
+ $('#colorpicker').css({'background-image':'none','background-color':$('#' + this.id).html().toLowerCase()});
+ }
+ $('#opt_bgColor').val(this.id);
+ });
+ //--------event handler over colorpanel-------
+ var firstwidth;
+ $('.colors').mouseover(function() {
+ extra.html("");
+ if(this.id != 'd0') {
+ $(this).css({'height':ColorPicker.GoldenFuncs.goldenize(colorsheight),
+ 'width':ColorPicker.GoldenFuncs.goldenize(colorswidth)});
+ firstwidth = container.css('width');
+ newwidth = firstwidth+ColorPicker.GoldenFuncs.goldenize(colorswidth)-colorswidth;
+ container.css('width',newwidth);
+ }
+ });
+ $('.colors').mouseout(function() {
+ $(this).css('height',colorsheight)
+ $(this).css('width', colorswidth)
+ container.css('width',firstwidth)
+ });
+ $('.colors').hover(function() {
+ var stringvalue = 'CLICK TO CHOOSE THE COLOR';
+ colornames.fadeOut(100);
+ colornames.fadeIn(500);
+ stringvalue = ColorPicker.showcolorname(this.id);
+ colornames.html(stringvalue);
+ });
+ $('.colors').click(function() {
+ selectednameid = $(this).attr('id')
+ selectedname = divtoname['#'+selectednameid];
+ selectedrgb = $(this).css('background-color');
+ ColorPicker.putitin();
+ });
+ //-------------others handler-------------------------------
+ infoswitch.hover(function(){infospace.show()}, function(){infospace.hide('slow')} );
+ infoswitch.click(function(){ColorPicker.switchcolorinfo()});
+ backgroundswitch.clicked = false;
+ backgroundswitch.click(function(){
+ if (! backgroundswitch.clicked){
+ bg_menu.slideDown("fast", function(){
+ backgroundswitch.clicked = true;
+ backgroundswitch.addClass("switches_depressed");
+ });
+ }else{
+ bg_menu.slideUp("fast", function(){
+ backgroundswitch.clicked = false;
+ backgroundswitch.removeClass("switches_depressed");
+ })
+ }
+ });
+ addfav.click(function(){ColorPicker.addfavourites()});
+ openfav.click(function(){ColorPicker.openfavourites()});
+ hexswitch.click(function(){ColorPicker.hexcolorswitch()});
+ $('.theswitches').hover(function(){ ColorPicker.switchhovercss(this.id, 'over') },
+ function(){ ColorPicker.switchhovercss(this.id, 'out') });
+ //-------handler for window resive----
+ $(window).resize(function()
+ {
+ ColorPicker.setupdimensions();
+ });
+ }
+ },
+ getcolorfromfavorite: function(fvalue){
+ var rgbregex = /rgb\((\d{1,3}), (\d{1,3}), (\d{1,3})\)/;
+ var hexregex = /^#(?:[0-9a-f]{3}){1,2}$/i;
+ var retcolor = '';
+ var match = rgbregex.exec(fvalue);
+ if (match != null) {
+ retcolor = fvalue;
+ } else if((match = hexregex.exec(fvalue))!= null) {
+ retcolor = hextorgb[fvalue];
+ } else {
+ retcolor = hextorgb[nametohex[fvalue]];
+ }
+ return retcolor;
+ },
+ initfavpanel: function(){
+ var fcolors = $('#favcolors').val();
+ var clist=fcolors.split(separate);
+ for(var i=0; i < clist.length; i++) {
+ if (clist[i] != '')
+ {
+ var colname = clist[i];
+ favpanel.append('<span class="favcolor" id="favcol' + i + '" ><input name="favcolor" type="radio" onclick="selectfavColor(\'' + clist[i]
+ + '\',\'favcol' + i +'\');"><label>' + colname + '</label><span class="favcolorbox" style="background-color:' + ColorPicker.getcolorfromfavorite(clist[i]) + '">&nbsp;</span></span>');
+ }
+ }
+ },
+ existsfavcolor: function(fcolor) {
+ var fcolors = $('#favcolors').val();
+ var clist=fcolors.split(separate);
+ for(var i=0; i < clist.length; i++) {
+ if (clist[i] == fcolor)
+ {
+ return i;
+ }
+ }
+ return -1;
+ },
+ setpaneldimension: function(){
+ var fcolors = $('#favcolors').val();
+ var clist=fcolors.split(separate);
+ },
+ addfavourites: function() {
+ var fcolors = $('#favcolors').val();
+
+ if (curfavcolor != '') {
+ var clist=fcolors.split(separate);
+ var index = ColorPicker.existsfavcolor(curfavcolor);
+ if(index != 0 && index == clist.length - 1)
+ {
+ fcolors = fcolors.replace(separate + curfavcolor, '');
+ }else if(clist.length == 1) {
+ fcolors = fcolors.replace(curfavcolor, '');
+ }else{
+ fcolors = fcolors.replace(curfavcolor+ separate, '');
+ }
+ $('#' + curfavcolorId).remove();
+ addfav.html('Add to Favorites');
+ curfavcolor = "";
+ curfavcolorId = "";
+ $('#favnone').attr('checked','checked');
+ if (fcolors == '')
+ {
+ favpanel.hide();
+ favshow = false;
+ openfav.attr('class','defaulttrans');
+ }
+ }else {
+ if (ColorPicker.existsfavcolor(namespace.val()) == -1)
+ {
+ if (fcolors.length > 0) {
+ fcolors = fcolors + separate + namespace.val();
+ }else {
+ fcolors = namespace.val();
+ }
+ var colname = namespace.val();
+ var clist=fcolors.split(separate);
+ var id = clist.length - 1;
+ $('#favmsg').remove();
+ favpanel.append('<span class="favcolor" id="favcol' + id + '" ><input name="favcolor" type="radio" onclick="selectfavColor(\'' + namespace.val()
+ + '\',\'favcol' + id +'\');"><label>' + colname + '</label><span class="favcolorbox" style="background-color:' + ColorPicker.getcolorfromfavorite(namespace.val()) + '">&nbsp;</span></span>');
+ }
+ }
+ $('#favcolors').val(fcolors);
+ ColorPicker.setpaneldimension();
+ },
+ openfavourites: function() {
+ if (favshow) {
+ favpanel.hide();
+ openfav.attr('class','defaulttrans');
+ favshow = false;
+ $('#favmsg').remove();
+ bscroll = false;
+ }else {
+ favpanel.show();
+ openfav.addClass('hovertrans');
+ favshow = true;
+ var fcolors = $('#favcolors').val();
+ if(fcolors == '') {
+ favpanel.append('<span class="favmsg" id="favmsg">No favourite colors.</span>');
+ }
+ bscroll = true;
+ ColorPicker.setpaneldimension();
+ }
+ addfav.html('Add to Favorites');
+ curfavcolor = "";
+ curfavcolorId = "";
+ $('.favcolor input[type=radio]').attr('checked',false);
+ },
+ loadColorStorage: function() {
+ var opts = $('#opt_hexswitch').val();
+ names = false;
+ rgbs = false;
+ hexes = false;
+ if(opts == 'names') {
+ selectedname = namespace.val();
+ selectedrgb = hextorgb[nametohex[selectedname]];
+ hexswitch.html('CLICK TO SWITCH TO RGB VALUES');
+ rgbs = true;
+ }else if(opts == 'rgbs') {
+ selectedname = rgbtoname[namespace.val()];
+ selectedrgb = namespace.val();
+ hexes = true;
+ hexswitch.html('CLICK TO SWITCH TO HEX VALUES')
+ }else if(opts == 'hexes') {
+ names = true;
+ selectedrgb = hextorgb[namespace.val()];
+ selectedname = rgbtoname[selectedrgb];
+ hexswitch.html('CLICK TO SWITCH TO COLOR NAMES');
+ }
+ colornames.html(selectedname);
+ preview.css({'background-color':selectedrgb,'border-style':'none'});
+ vasebackground.css('background-color',selectedrgb);
+ infostate = parseInt($('#opt_infoswitch').val());
+ ColorPicker.switchcolorinfo();
+ var bgOpt = $('#opt_bgColor').val();
+ if (bgOpt == "bg1")
+ {
+ $('#colorpicker').css({'background-image':'url("./images/bg.dither.gif")','background-color':'gray','background-color':'black'});
+ }else if(bgOpt == "bg5"){
+ $('#colorpicker').css({'background-image':"url('" + $('#opt_bgURI').val() + "')"});
+ }else{
+ $('#colorpicker').css({'background-image':'none','background-color':$('#' + bgOpt).html()});
+ }
+ $('#bgURI').val($('#opt_bgURI').val());
+ ColorPicker.initfavpanel();
+ },
+ switchhovercss: function(sel, uno) {
+ var chng = {};
+ chng['color'] = 'white';
+ chng['text-shadow'] = 'black 1px 2px';
+ chng['background-image'] = "url('./images/hoverbackground.jpg')";
+ if(uno == 'over') {
+ for(var key in chng) {
+ old[key] = $('#'+sel).css(key);
+ }
+ for(var key in chng){
+ $('#'+sel).css(key, chng[key]);
+ }
+ }else if(uno == 'out') {
+ for(var key in old){
+ $('#'+sel).css(key, old[key]);
+ }
+ }
+ },
+ showcolorname: function(divstr) {
+ var rgb = $('#'+divstr).css('background-color');
+ var colorname = divtoname['#'+divstr];
+ var imname = colorname;
+ if (hexes === true) {
+ imname = rgb;
+ }else if(rgbs === true) {
+ imname = colorname;
+ }else if (names === true) {
+ imname = rgbtohex[rgb];
+ }
+ return imname;
+ },
+ hexcolorswitch: function() {
+ if(names == true) {
+ hexes = false;
+ rgbs = false;
+ hexswitch.html('CLICK TO SWITCH TO RGB VALUES');
+ namespace.val(selectedname);
+ names = false;
+ rgbs = true;
+ $('#opt_hexswitch').val('names');
+ }else if(hexes == true) {
+ rgbs = false;
+ names = false;
+ hexswitch.html('CLICK TO SWITCH TO COLOR NAMES');
+ namespace.val(rgbtohex[selectedrgb]);
+ hexes = false;
+ names = true;
+ $('#opt_hexswitch').val('hexes');
+ }else if(rgbs == true) {
+ names = false;
+ hexes = false;
+ hexswitch.html('CLICK TO SWITCH TO HEX VALUES')
+ namespace.val(selectedrgb)
+ rgbs = false;
+ hexes = true;
+ $('#opt_hexswitch').val('rgbs');
+ }
+ },
+ putitin: function() {
+ if (rgbs === true) { thecolor = selectedname; }
+ if (hexes === true) { thecolor = selectedrgb; }
+ if (names === true) { thecolor = rgbtohex[selectedrgb]; }
+ namespace.val(thecolor);
+ preview.css({'background-color':selectedrgb,'border-style':'none'});
+ vasebackground.css('background-color',selectedrgb);
+ },
+ getcontainerwidth: function () {
+ basis = $('.colors').css('width');
+ basis = parseInt(basis.slice(0,-2));
+ secondbasis = '2px';
+ secondbasis = parseInt(secondbasis.slice(0,-2));
+ widthval = (secondbasis*(numberacross*2))+(basis*numberacross)+(basis*.44);//(goldenize(basis)-basis)
+ if (widthval < 406){
+ widthval = 406;
+ }
+ widthval = widthval.toString()+'px';
+ return widthval;
+ },
+ shrinkwidth: function(arg, ratio) {
+ for(var i=0; i < ratio; i++) {
+ arg = ColorPicker.GoldenFuncs.regolden(arg);
+ }
+ division = Math.round(arg);
+ return division;
+ },
+ setupfonts: function () {
+ fontratioone = ColorPicker.shrinkwidth(windowWidth, 9);
+ $('.theswitches').css('font-size',fontratioone);
+ fontratiotwo = ColorPicker.shrinkwidth(windowWidth, 8);
+ $('.subtitle').css('font-size',fontratiotwo);
+ colornames.css('font-size', ColorPicker.GoldenFuncs.goldenize(fontratiotwo)+'px');
+ colornames.css('text-shadow', 'black 1px 2px');
+ var transfont = ColorPicker.GoldenFuncs.regolden(fontratioone);
+ $('.smalltitle').css({'width':'100%','font-size':fontratioone});
+ },
+ setupsides: function() {
+ container.css({'position':'relative','z-index':'1'});
+ switches.css('z-index','10');
+ var basis = container.css('width');
+ basis = parseInt(basis.slice(0,-2));
+ remainder = (100-basis)/2;
+ widths = ColorPicker.GoldenFuncs.regolden(basis);
+ widths = widths.toString()+'px';
+ lateralbasis = ColorPicker.GoldenFuncs.regolden(remainder);
+ leftside = toString(lateralbasis)+'%';
+ rightside = toString(100-lateralbasis)+'%';
+ colornames.css('left', leftside);
+ switches.css({'width': widths, 'left': rightside});
+ },
+ previewdimensions: function() {
+ first = switches.css('width');
+ first = parseInt(first.slice(0,-2));
+ width = ColorPicker.GoldenFuncs.regolden(first);
+ height = ColorPicker.GoldenFuncs.regolden(width);
+ width = width.toString()+'px';
+ height = height.toString()+'px';
+ preview.css({'width':width, 'height':height});
+ },
+ setupdimensions: function() {
+ if(window.innerWidth > 933) {
+ windowWidth = window.innerWidth
+ }else{ windowWidth = 933 }
+ colorswidth = ColorPicker.shrinkwidth(windowWidth, widthratio);
+ $('.colors').css('width', colorswidth.toString()+'px');
+ colorsheight = ColorPicker.GoldenFuncs.regolden(colorswidth);
+ propval = colorsheight.toString()+'px';
+ $('.colors').css('height', propval);
+ var containerwidth = ColorPicker.getcontainerwidth();
+ container.css('width',containerwidth);
+
+ ColorPicker.setupfonts();
+ ColorPicker.setupsides();
+ ColorPicker.GoldenFuncs.makegolden('#' + switches.attr('id'),'width');
+ ColorPicker.previewdimensions();
+ transparent.css({'float':'bottom','width':'inherit'});
+ orgheight = switches.height();
+ },
+ switchcolorinfo: function() {
+ if(infostate == 1) {
+ for(var i=0; i < color_values.length; i++) {
+ $('#d' + i).html(divtoname['#d' + i]);
+ }
+ infostate = 2;
+ infospace.html('(NAMES)');
+ $('#opt_infoswitch').val('1');
+ }else if(infostate == 0) {
+ $('.colors').html("");
+ infostate = 1;
+ infospace.html('(NONE)');
+ $('#opt_infoswitch').val('0');
+ }else if(infostate == 2) {
+ for(var i=0; i < color_values.length; i++) {
+ $('#d' + i).html(nametohex[divtoname['#d' + i]]);
+ }
+ infostate = 3;
+ infospace.html('(HEXES)');
+ $('#opt_infoswitch').val('2');
+ }else if(infostate == 3) {
+ for(var i=0; i < color_values.length; i++) {
+ $('#d' + i).html(hextorgb[nametohex[divtoname['#d' + i]]]);
+ }
+ infostate = 0;
+ infospace.html('(RGBS)');
+ $('#opt_infoswitch').val('3');
+ }
+ },
+ show: function() {
+ //-------create color panel--------
+ for (i=1; i < color_values.length ; i++)
+ {
+ $('#d0').attr('style','background-color:' + color_values[0]);
+ var colorbox = $('#d0').clone();
+ colorbox.attr('id','d' + i);
+ colorbox.attr('style','background-color:' + color_values[i]);
+ container.append(colorbox);
+ }
+ //--------initialize------------
+ ColorPicker.setupdimensions();
+ ColorPicker.switchcolorinfo();
+ ColorPicker.hexcolorswitch();
+ ColorPicker.Events.addEventListener();
+ },
+}
diff --git a/frontend/im/colors/js/colorpicker.js b/frontend/im/colors/js/colorpicker.js
new file mode 100644
index 0000000..5d77131
--- /dev/null
+++ b/frontend/im/colors/js/colorpicker.js
@@ -0,0 +1,2 @@
+eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('4 2o(a,b){V.k("3w 3y 2e"),P=a,1D=b;j c=/2V\\((\\d{1,3}), (\\d{1,3}), (\\d{1,3})\\)/,d=/^#(?:[0-2W-f]{3}){1,2}$/i;u=!1,w=!1,v=!1;j e=c.1R(a);1N!=e?(y=1K[a],o=a,u=!0,C.k("F p Q p 2t 17")):1N!=(e=d.1R(a))?(w=!0,o=14[a],y=1K[o],C.k("F p Q p 1I 1V")):(y=a,o=14[1s[y]],C.k("F p Q p 2p 17"),v=!0),x.k(a),q.h(a),16.g({"l-n":o,"Z-I":"1x"}),1v.g("l-n",o)}j 1G={},1y,U,2C=7,2z=10,3H=2,G=0,w=!0,u=!1,v=!1,1j=!1,y="",o,P="",1D="",M=";",1d=$("#1d"),1p=$("#1p"),V=$("#3Q"),1A=$("#3P"),16=$("#16"),x=$("#x"),q=$("#q"),23=$("#23"),R=$("#R"),15=$("#15"),1e=$("#1e"),11=$("#11"),26=$("#26"),S=$("#S"),24=$("#24"),1v=$("#1v"),C=$("#C"),X=$("#X"),32=0,2h=!1;$(4(){6.1Q()});j 6={r:{T:4(a){O 20=(1+1o.3k(5))/2,36=1o.2u(a/20)},1g:4(a){O 20=(1+1o.3k(5))/2,36=1o.2u(a*20)},3n:4(a,b){O 1Z=$(a).g(b),1Z=1Z.1k(0,-2),3N=19(1Z)},2Y:4(a,b){3l=6.r.3n(a,b),3u=6.r.1g(3l)+3C,1t=3u.L()+"Y","E"==b?$(a).g("m",1t):"m"==b&&$(a).g("E",1t)}},3t:{3d:4(){1d.12(4(){q.h("1e"),16.g({"l-n":"1e","Z-I":"3J","Z-m":"1S"}),x.k("1e"),x.2T(1m),x.2U(2S),23.k(\'<2Z><2Z><A I="n:2G;l-n:1i;Z-n:2G; Z-m:2q; Z-I:3M; 1h-1l:3L;">3K: 3I .3h W 3O 3U 3T 3S 3R</A>\')}),1d.1a(4(){1d.1q("1P")},4(){1d.B("J","1u")}),1p.1a(4(){1p.1q("1P")},4(){1p.B("J","1u")}),V.1a(4(){V.1q("1P")},4(){V.B("J","1u")}),$(".3V").12(4(){"3j"==t.s?$("#1c").g({"l-W":\'1C("./2a/39.3a.38")\',"l-n":"37","l-n":"1i"}):"35"==t.s?$("#"+t.s).3D("3x",4(a){j b=a.3z||a.3G;13===b&&($("#1c").g({"l-W":"1C(\'"+$("#1H").h()+"\')"}),$("#2i").h($("#1H").h()),$("#1H").h(""))}):$("#1c").g({"l-W":"1x","l-n":$("#"+t.s).k().3F()}),$("#3o").h(t.s)});j a;$(".N").3E(4(){23.k(""),"2r"!=t.s&&($(t).g({E:6.r.1g(1y),m:6.r.1g(U)}),a=R.g("m"),2O=a+6.r.1g(U)-U,R.g("m",2O))}),$(".N").3B(4(){$(t).g("E",1y),$(t).g("m",U),R.g("m",a)}),$(".N").1a(4(){j a="F p 3A 40 1I";x.2T(1m),x.2U(2S),a=6.3f(t.s),x.k(a)}),$(".N").12(4(){2R=$(t).B("s"),y=1E["#"+2R],o=$(t).g("l-n"),6.3e()}),26.1a(4(){11.1Q()},4(){11.2l("4g")}),26.12(4(){6.1Y()}),S.1X=!1,S.12(4(){S.1X?24.4f("2P",4(){S.1X=!1,S.4e("2Q")}):24.4h("2P",4(){S.1X=!0,S.1q("2Q")})}),V.12(4(){6.31()}),1A.12(4(){6.2E()}),C.12(4(){6.2v()}),$(".3v").1a(4(){6.2n(t.s,"3i")},4(){6.2n(t.s,"3g")}),$(2w).4j(4(){6.2x()})}},2k:4(a){j b=/2V\\((\\d{1,3}), (\\d{1,3}), (\\d{1,3})\\)/,c=/^#(?:[0-2W-f]{3}){1,2}$/i,d="",e=b.1R(a);O d=1N!=e?a:1N!=(e=c.1R(a))?14[a]:14[1s[a]]},3b:4(){H(j a=$("#1b").h(),b=a.1r(M),c=0;c<b.K;c++)D(""!=b[c]){j d=b[c];X.22(\'<A J="1n" s="1T\'+c+\'" ><2f 30="1n" 2g="2d" 2N="2o(\\\'\'+b[c]+"\',\'1T"+c+"\');\\"><1U>"+d+\'</1U><A J="33" I="l-n:\'+6.2k(b[c])+\'">&2F;</A></A>\')}},29:4(a){H(j b=$("#1b").h(),c=b.1r(M),d=0;d<c.K;d++)D(c[d]==a)O d;O-1},2c:4(){j a=$("#1b").h();a.1r(M)},31:4(){j a=$("#1b").h();D(""!=P){j b=a.1r(M),c=6.29(P);a=0!=c&&c==b.K-1?a.28(M+P,""):1==b.K?a.28(P,""):a.28(P+M,""),$("#"+1D).2m(),V.k("3m 3p 2e"),P="",1D="",$("#3W").B("2b","2b"),""==a&&(X.2l(),1j=!1,1A.B("J","1u"))}1f D(-1==6.29(q.h())){a=a.K>0?a+M+q.h():q.h();j d=q.h(),b=a.1r(M),e=b.K-1;$("#27").2m(),X.22(\'<A J="1n" s="1T\'+e+\'" ><2f 30="1n" 2g="2d" 2N="2o(\\\'\'+q.h()+"\',\'1T"+e+"\');\\"><1U>"+d+\'</1U><A J="33" I="l-n:\'+6.2k(q.h())+\'">&2F;</A></A>\')}$("#1b").h(a),6.2c()},2E:4(){D(1j)X.2l(),1A.B("J","1u"),1j=!1,$("#27").2m(),2h=!1;1f{X.1Q(),1A.1q("1P"),1j=!0;j a=$("#1b").h();""==a&&X.22(\'<A J="27" s="27">3X 3Y N.</A>\'),2h=!0,6.2c()}V.k("3m 3p 2e"),P="",1D="",$(".1n 2f[2g=2d]").B("2b",!1)},49:4(){j a=$("#1J").h();w=!1,v=!1,u=!1,"w"==a?(y=q.h(),o=14[1s[y]],C.k("F p Q p 2p 17"),v=!0):"v"==a?(y=1K[q.h()],o=q.h(),u=!0,C.k("F p Q p 2t 17")):"u"==a&&(w=!0,o=14[q.h()],y=1K[o],C.k("F p Q p 1I 1V")),x.k(y),16.g({"l-n":o,"Z-I":"1x"}),1v.g("l-n",o),G=19($("#1B").h()),6.1Y();j b=$("#3o").h();"3j"==b?$("#1c").g({"l-W":\'1C("./2a/39.3a.38")\',"l-n":"37","l-n":"1i"}):"35"==b?$("#1c").g({"l-W":"1C(\'"+$("#2i").h()+"\')"}):$("#1c").g({"l-W":"1x","l-n":$("#"+b).k()}),$("#1H").h($("#2i").h()),6.3b()},2n:4(a,b){j c={};D(c.n="46",c["3q-3r"]="1i 2q 1S",c["l-W"]="1C(\'./2a/47.3h\')","3i"==b){H(j d 2j c)1G[d]=$("#"+a).g(d);H(j d 2j c)$("#"+a).g(d,c[d])}1f D("3g"==b)H(j d 2j 1G)$("#"+a).g(d,1G[d])},3f:4(a){j b=$("#"+a).g("l-n"),c=1E["#"+a],d=c;O u===!0?d=b:v===!0?d=c:w===!0&&(d=2y[b]),d},2v:4(){1==w?(u=!1,v=!1,C.k("F p Q p 2p 17"),q.h(y),w=!1,v=!0,$("#1J").h("w")):1==u?(v=!1,w=!1,C.k("F p Q p 1I 1V"),q.h(2y[o]),u=!1,w=!0,$("#1J").h("u")):1==v&&(w=!1,u=!1,C.k("F p Q p 2t 17"),q.h(o),v=!1,u=!0,$("#1J").h("v"))},3e:4(){v===!0&&(1F=y),u===!0&&(1F=o),w===!0&&(1F=2y[o]),q.h(1F),16.g({"l-n":o,"Z-I":"1x"}),1v.g("l-n",o)},2B:4(){O 1w=$(".N").g("m"),1w=19(1w.1k(0,-2)),1L="1S",1L=19(1L.1k(0,-2)),1z=1L*2*2z+1w*2z+.44*1w,3c>1z&&(1z=3c),1z=1z.L()+"Y"},1O:4(a,b){H(j c=0;b>c;c++)a=6.r.T(a);O 48=1o.2u(a)},2D:4(){21=6.1O(1M,9),$(".3v").g("1h-1l",21),2s=6.1O(1M,8),$(".4b").g("1h-1l",2s),x.g("1h-1l",6.r.1g(2s)+"Y"),x.g("3q-3r","1i 2q 1S"),6.r.T(21),$(".4a").g({m:"1m%","1h-1l":21})},2M:4(){R.g({45:"43","z-3s":"1"}),15.g("z-3s","10");j a=R.g("m");a=19(a.1k(0,-2)),2H=(1m-a)/2,25=6.r.T(a),25=25.L()+"Y",2A=6.r.T(2H),34=L(2A)+"%",2L=L(1m-2A)+"%",x.g("2K",34),15.g({m:25,2K:2L})},2X:4(){1W=15.g("m"),1W=19(1W.1k(0,-2)),m=6.r.T(1W),E=6.r.T(m),m=m.L()+"Y",E=E.L()+"Y",16.g({m:m,E:E})},2x:4(){1M=2w.2I>2J?2w.2I:2J,U=6.1O(1M,2C),$(".N").g("m",U.L()+"Y"),1y=6.r.T(U),1t=1y.L()+"Y",$(".N").g("E",1t);j a=6.2B();R.g("m",a),6.2D(),6.2M(),6.r.2Y("#"+15.B("s"),"m"),6.2X(),1e.g({"3Z":"4d",m:"42"}),32=15.E()},1Y:4(){D(1==G){H(j a=0;a<18.K;a++)$("#d"+a).k(1E["#d"+a]);G=2,11.k("(1V)"),$("#1B").h("1")}1f D(0==G)$(".N").k(""),G=1,11.k("(41)"),$("#1B").h("0");1f D(2==G){H(j a=0;a<18.K;a++)$("#d"+a).k(1s[1E["#d"+a]]);G=3,11.k("(4c)"),$("#1B").h("2")}1f D(3==G){H(j a=0;a<18.K;a++)$("#d"+a).k(14[1s[1E["#d"+a]]]);G=0,11.k("(4k)"),$("#1B").h("3")}},1Q:4(){H(i=1;i<18.K;i++){$("#2r").B("I","l-n:"+18[0]);j a=$("#2r").4i();a.B("s","d"+i),a.B("I","l-n:"+18[i]),R.22(a)}6.2x(),6.1Y(),6.2v(),6.3t.3d()}};',62,269,'||||function||ColorPicker||||||||||css|val||var|html|background|width|color|selectedrgb|TO|namespace|GoldenFuncs|id|this|hexes|rgbs|names|colornames|selectedname||span|attr|hexswitch|if|height|CLICK|infostate|for|style|class|length|toString|separate|colors|return|curfavcolor|SWITCH|container|backgroundswitch|regolden|colorswidth|addfav|image|favpanel|px|border||infospace|click||hextorgb|switches|preview|VALUES|color_values|parseInt|hover|favcolors|colorpicker|transbutton|transparent|else|goldenize|font|black|favshow|slice|size|100|favcolor|Math|submitvalue|addClass|split|nametohex|propval|defaulttrans|vasebackground|basis|none|colorsheight|widthval|openfav|opt_infoswitch|url|curfavcolorId|divtoname|thecolor|old|bgURI|COLOR|opt_hexswitch|rgbtoname|secondbasis|windowWidth|null|shrinkwidth|hovertrans|show|exec|2px|favcol|label|NAMES|first|clicked|switchcolorinfo|grab|ratio|fontratioone|append|extra|bg_menu|widths|infoswitch|favmsg|replace|existsfavcolor|images|checked|setpaneldimension|radio|Favorites|input|type|bscroll|opt_bgURI|in|getcolorfromfavorite|hide|remove|switchhovercss|selectfavColor|RGB|1px|d0|fontratiotwo|HEX|round|hexcolorswitch|window|setupdimensions|rgbtohex|numberacross|lateralbasis|getcontainerwidth|widthratio|setupfonts|openfavourites|nbsp|red|remainder|innerWidth|933|left|rightside|setupsides|onclick|newwidth|fast|switches_depressed|selectednameid|500|fadeOut|fadeIn|rgb|9a|previewdimensions|makegolden|br|name|addfavourites|orgheight|favcolorbox|leftside|bg5|newnum|gray|gif|bg|dither|initfavpanel|406|addEventListener|putitin|showcolorname|out|jpg|over|bg1|sqrt|result|Add|getproperty|opt_bgColor|to|text|shadow|index|Events|newval|theswitches|Remove|keypress|from|which|CHOOSE|mouseout|60|bind|mouseover|toLowerCase|keyCode|backgroundstate|the|dashed|note|14px|solid|numval|format|openfavlist|addfavlist|transparency|support|not|does|bgOptions|favnone|No|favourite|float|THE|NONE|inherit|relative||position|white|hoverbackground|division|loadColorStorage|smalltitle|subtitle|HEXES|bottom|removeClass|slideUp|slow|slideDown|clone|resize|RGBS'.split('|'),0,{}))
+
diff --git a/frontend/im/colors/js/data.js b/frontend/im/colors/js/data.js
new file mode 100644
index 0000000..1728951
--- /dev/null
+++ b/frontend/im/colors/js/data.js
@@ -0,0 +1,6 @@
+var nametohex = {'grey21': '#363636', 'yellow': '#FFFF00', 'grey61': '#9C9C9C', 'HotPink3': '#CD6090', 'grey63': '#A1A1A1', 'grey62': '#9E9E9E', 'grey65': '#A6A6A6', 'AliceBlue': '#F0F8FF', 'grey67': '#ABABAB', 'grey66': '#A8A8A8', 'LightCyan1': '#E0FFFF', 'grey68': '#ADADAD', 'LightCyan3': '#B4CDCD', 'LightCyan2': '#D1EEEE', 'LightCyan4': '#7A8B8B', 'gray32': '#525252', 'gray33': '#545454', 'DarkTurquoise': '#00CED1', 'gray31': '#4F4F4F', 'gray36': '#5C5C5C', 'gray37': '#5E5E5E', 'gray34': '#575757', 'gray35': '#595959', 'aquamarine4': '#458B74', 'gray38': '#616161', 'gray39': '#636363', 'aquamarine1': '#7FFFD4', 'aquamarine3': '#66CDAA', 'aquamarine2': '#76EEC6', 'CadetBlue4': '#53868B', 'CadetBlue3': '#7AC5CD', 'CadetBlue2': '#8EE5EE', 'CadetBlue1': '#98F5FF', 'crimson': '#DC143C', 'VioletRed1': '#FF3E96', 'VioletRed2': '#EE3A8C', 'VioletRed3': '#CD3278', 'VioletRed4': '#8B2252', 'brown': '#A52A2A', 'DarkGoldenrod': '#B8860B', 'gray8': '#141414', 'SlateGrey': '#708090', 'NavajoWhite2': '#EECFA1', 'gray2': '#050505', 'cyan': '#00FFFF', 'gray0': '#000000', 'gray1': '#030303', 'fractal': '#808080', 'gray7': '#121212', 'gray4': '#0A0A0A', 'gray5': '#0D0D0D', 'grey60': '#999999', 'DarkBlue': '#00008B', 'gray98': '#FAFAFA', 'DarkKhaki': '#BDB76B', 'gray99': '#FCFCFC', 'teal': '#008080', 'grey11': '#1C1C1C', 'coral4': '#8B3E2F', 'grey12': '#1F1F1F', 'grey64': '#A3A3A3', 'PaleGreen1': '#9AFF9A', 'PaleGreen3': '#7CCD7C', 'PaleGreen2': '#90EE90', 'PaleGreen4': '#548B54', 'grey14': '#242424', 'lavender': '#E6E6FA', 'grey15': '#262626', 'chartreuse3': '#66CD00', 'chartreuse2': '#76EE00', 'chartreuse1': '#7FFF00', 'chartreuse4': '#458B00', 'RosyBrown': '#BC8F8F', 'blue': '#0000FF', 'NavajoWhite': '#FFDEAD', 'opaque': '#000000', 'maroon4': '#8B1C62', 'maroon3': '#CD2990', 'maroon2': '#EE30A7', 'maroon1': '#FF34B3', 'gold3': '#CDAD00', 'gold2': '#EEC900', 'gold1': '#FFD700', 'gold4': '#8B7500', 'LightSlateGrey': '#778899', 'gray30': '#4D4D4D', 'DarkGreen': '#006400', 'SkyBlue': '#87CEEB', 'GhostWhite': '#F8F8FF', 'LavenderBlush': '#FFF0F5', 'SeaGreen': '#2E8B57', 'BlanchedAlmond': '#FFEBCD', 'gray60': '#999999', 'DarkOliveGreen': '#556B2F', 'firebrick2': '#EE2C2C', 'firebrick1': '#FF3030', 'firebrick4': '#8B1A1A', 'sienna': '#A0522D', 'blue1': '#0000FF', 'lime': '#00FF00', 'gray55': '#8C8C8C', 'blue2': '#0000EE', 'DarkViolet': '#9400D3', 'blue4': '#00008B', 'peru': '#CD853F', 'DarkMagenta': '#8B008B', 'LightBlue2': '#B2DFEE', 'red2': '#EE0000', 'red1': '#FF0000', 'LightBlue1': '#BFEFFF', 'LightBlue4': '#68838B', 'red4': '#8B0000', 'MediumSpringGreen': '#00FA9A', 'chocolate': '#D2691E', 'ForestGreen': '#228B22', 'DarkRed': '#8B0000', 'olive': '#808000', 'HotPink2': '#EE6AA7', 'HotPink1': '#FF6EB4', 'HotPink4': '#8B3A62', 'grey18': '#2E2E2E', 'grey19': '#303030', 'none': '#000000', 'PeachPuff': '#FFDAB9', 'MediumGoldenRod': '#D1C166', 'moccasin': '#FFE4B5', 'grey10': '#1A1A1A', 'chocolate1': '#FF7F24', 'chocolate2': '#EE7621', 'chocolate3': '#CD661D', 'chocolate4': '#8B4513', 'wheat2': '#EED8AE', 'grey16': '#292929', 'grey17': '#2B2B2B', 'gray69': '#B0B0B0', 'gray68': '#ADADAD', 'gray65': '#A6A6A6', 'gray64': '#A3A3A3', 'gray67': '#ABABAB', 'gray66': '#A8A8A8', 'gray61': '#9C9C9C', 'coral': '#FF7F50', 'gray63': '#A1A1A1', 'gray62': '#9E9E9E', 'LightGoldenrod': '#EEDD82', 'turquoise4': '#00868B', 'seashell2': '#EEE5DE', 'seashell3': '#CDC5BF', 'magenta': '#FF00FF', 'seashell1': '#FFF5EE', 'tan': '#D2B48C', 'seashell4': '#8B8682', 'pink': '#FFC0CB', 'LightSlateBlue': '#8470FF', 'SteelBlue1': '#63B8FF', 'SteelBlue3': '#4F94CD', 'SteelBlue2': '#5CACEE', 'SteelBlue4': '#36648B', 'grey89': '#E3E3E3', 'grey88': '#E0E0E0', 'grey87': '#DEDEDE', 'grey86': '#DBDBDB', 'grey85': '#D9D9D9', 'grey84': '#D6D6D6', 'grey83': '#D4D4D4', 'grey82': '#D1D1D1', 'grey81': '#CFCFCF', 'grey80': '#CCCCCC', 'ivory2': '#EEEEE0', 'khaki4': '#8B864E', 'khaki1': '#FFF68F', 'khaki2': '#EEE685', 'khaki3': '#CDC673', 'salmon1': '#FF8C69', 'salmon3': '#CD7054', 'salmon2': '#EE8262', 'salmon4': '#8B4C39', 'LightPink': '#FFB6C1', 'gray9': '#171717', 'green': '#008000', 'brown2': '#EE3B3B', 'brown3': '#CD3333', 'brown1': '#FF4040', 'brown4': '#8B2323', 'cadet blue': '#5F9EA0', 'orange4': '#8B5A00', 'orange1': '#FFA500', 'orange3': '#CD8500', 'orange2': '#EE9A00', 'gray3': '#080808', 'gray6': '#0F0F0F', 'yellow4': '#8B8B00', 'yellow3': '#CDCD00', 'yellow2': '#EEEE00', 'yellow1': '#FFFF00', 'PapayaWhip': '#FFEFD5', 'bisque2': '#EED5B7', 'OliveDrab4': '#698B22', 'bisque3': '#CDB79E', 'OliveDrab1': '#C0FF3E', 'OliveDrab2': '#B3EE3A', 'OliveDrab3': '#9ACD32', 'SkyBlue4': '#4A708B', 'SkyBlue1': '#87CEFF', 'SkyBlue3': '#6CA6CD', 'SkyBlue2': '#7EC0EE', 'grey58': '#949494', 'grey59': '#969696', 'grey54': '#8A8A8A', 'grey55': '#8C8C8C', 'grey56': '#8F8F8F', 'grey57': '#919191', 'grey50': '#7F7F7F', 'silver': '#C0C0C0', 'grey52': '#858585', 'grey53': '#878787', 'cyan2': '#00EEEE', 'cyan3': '#00CDCD', 'gray23': '#3B3B3B', 'RosyBrown4': '#8B6969', 'gray25': '#404040', 'CornflowerBlue': '#6495ED', 'cyan4': '#008B8B', 'gray26': '#424242', 'gray29': '#4A4A4A', 'LimeGreen': '#32CD32', 'MistyRose': '#FFE4E1', 'navy': '#000080', 'gray94': '#F0F0F0', 'gray95': '#F2F2F2', 'gray96': '#F5F5F5', 'gray97': '#F7F7F7', 'gray90': '#E5E5E5', 'gray91': '#E8E8E8', 'gray92': '#EBEBEB', 'gray93': '#EDEDED', 'MediumPurple': '#9370DB', 'MidnightBlue': '#191970', 'cornsilk': '#FFF8DC', 'red': '#FF0000', 'grey69': '#B0B0B0', 'DarkOrchid4': '#68228B', 'blue3': '#0000CD', 'LightSteelBlue': '#B0C4DE', 'DarkOrchid1': '#BF3EFF', 'DarkOrchid2': '#B23AEE', 'DarkOrchid3': '#9A32CD', 'grey72': '#B8B8B8', 'FloralWhite': '#FFFAF0', 'grey70': '#B3B3B3', 'DarkSeaGreen': '#8FBC8F', 'grey71': '#B5B5B5', 'gray17': '#2B2B2B', 'grey77': '#C4C4C4', 'tomato4': '#8B3626', 'tomato1': '#FF6347', 'tomato3': '#CD4F39', 'tomato2': '#EE5C42', 'DarkSlateGray1': '#97FFFF', 'DarkSlateGray2': '#8DEEEE', 'DarkSlateGray3': '#79CDCD', 'DarkSlateGray4': '#528B8B', 'SteelBlue': '#4682B4', 'MediumSlateBlue': '#7B68EE', 'OrangeRed': '#FF4500', 'grey79': '#C9C9C9', 'MediumVioletRed': '#C71585', 'burlywood': '#DEB887', 'white': '#FFFFFF', 'tomato': '#FF6347', 'DodgerBlue': '#1E90FF', 'RoyalBlue4': '#27408B', 'RoyalBlue1': '#4876FF', 'RoyalBlue3': '#3A5FCD', 'RoyalBlue2': '#436EEE', 'MistyRose1': '#FFE4E1', 'MistyRose3': '#CDB7B5', 'MistyRose2': '#EED5D2', 'MistyRose4': '#8B7D7B', 'LightGray': '#D3D3D3', 'LightYellow': '#FFFFE0', 'DarkOrange': '#FF8C00', 'DarkGray': '#A9A9A9', 'SlateGray': '#708090', 'turquoise3': '#00C5CD', 'turquoise2': '#00E5EE', 'turquoise1': '#00F5FF', 'burlywood2': '#EEC591', 'burlywood4': '#8B7355', 'DarkSlateGray': '#2F4F4F', 'linen': '#FAF0E6', 'grey47': '#787878', 'snow': '#FFFAFA', 'grey46': '#757575', 'gray58': '#949494', 'gray59': '#969696', 'IndianRed4': '#8B3A3A', 'purple4': '#551A8B', 'gray52': '#858585', 'gray53': '#878787', 'purple1': '#9B30FF', 'IndianRed1': '#FF6A6A', 'purple3': '#7D26CD', 'purple2': '#912CEE', 'thistle3': '#CDB5CD', 'thistle2': '#EED2EE', 'SpringGreen2': '#00EE76', 'SpringGreen3': '#00CD66', 'SpringGreen4': '#008B45', 'thistle4': '#8B7B8B', 'LightPink2': '#EEA2AD', 'LightPink3': '#CD8C95', 'LightPink1': '#FFAEB9', 'LightPink4': '#8B5F65', 'MediumPurple1': '#AB82FF', 'MediumPurple2': '#9F79EE', 'MediumPurple3': '#8968CD', 'MediumPurple4': '#5D478B', 'MediumTurquoise': '#48D1CC', 'DimGray': '#696969', 'gray14': '#242424', 'grey100': '#FFFFFF', 'OrangeRed3': '#CD3700', 'OrangeRed2': '#EE4000', 'OrangeRed1': '#FF4500', 'LightSeaGreen': '#20B2AA', 'gold': '#FFD700', 'OrangeRed4': '#8B2500', 'NavajoWhite4': '#8B795E', 'NavajoWhite1': '#FFDEAD', 'LawnGreen': '#7CFC00', 'NavajoWhite3': '#CDB38B', 'LightGoldenrod4': '#8B814C', 'LightGoldenrod1': '#FFEC8B', 'LightGoldenrod3': '#CDBE70', 'LightGoldenrod2': '#EEDC82', 'gray21': '#363636', 'PaleGreen': '#98FB98', 'green4': '#008B00', 'green1': '#00FF00', 'green3': '#00CD00', 'green2': '#00EE00', 'MediumOrchid': '#BA55D3', 'black': '#000000', 'gray20': '#333333', 'orchid4': '#8B4789', 'DodgerBlue1': '#1E90FF', 'DodgerBlue2': '#1C86EE', 'DodgerBlue3': '#1874CD', 'DodgerBlue4': '#104E8B', 'orchid1': '#FF83FA', 'orchid2': '#EE7AE9', 'orchid3': '#CD69C9', 'DarkSeaGreen4': '#698B69', 'DarkSeaGreen3': '#9BCD9B', 'DarkSeaGreen2': '#B4EEB4', 'DarkSeaGreen1': '#C1FFC1', 'gray100': '#FFFFFF', 'BlueViolet': '#8A2BE2', 'bisque4': '#8B7D6B', 'MediumOrchid4': '#7A378B', 'MintCream': '#F5FFFA', 'MediumOrchid1': '#E066FF', 'bisque1': '#FFE4C4', 'MediumOrchid3': '#B452CD', 'MediumOrchid2': '#D15FEE', 'gray': '#7E7E7E', 'DeepSkyBlue': '#00BFFF', 'LightGrey': '#D3D3D3', 'grey78': '#C7C7C7', 'gray22': '#383838', 'plum4': '#8B668B', 'plum3': '#CD96CD', 'plum2': '#EEAEEE', 'plum1': '#FFBBFF', 'DarkSlateGrey': '#2F4F4F', 'DarkOrchid': '#9932CC', 'OliveDrab': '#6B8E23', 'gray83': '#D4D4D4', 'grey49': '#7D7D7D', 'grey48': '#7A7A7A', 'thistle': '#D8BFD8', 'violet': '#EE82EE', 'grey43': '#6E6E6E', 'grey42': '#6B6B6B', 'LightSalmon4': '#8B5742', 'grey40': '#666666', 'LightSalmon2': '#EE9572', 'LightSalmon3': '#CD8162', 'grey45': '#737373', 'LightSalmon1': '#FFA07A', 'honeydew': '#F0FFF0', 'gray18': '#2E2E2E', 'gray19': '#303030', 'LightCyan': '#E0FFFF', 'gray15': '#262626', 'gray16': '#292929', 'gray82': '#D1D1D1', 'gray10': '#1A1A1A', 'gray11': '#1C1C1C', 'gray12': '#1F1F1F', 'gray13': '#212121', 'grey93': '#EDEDED', 'PaleGoldenrod': '#EEE8AA', 'gainsboro': '#DCDCDC', 'AntiqueWhite3': '#CDC0B0', 'AntiqueWhite2': '#EEDFCC', 'AntiqueWhite1': '#FFEFDB', 'gray27': '#454545', 'SlateBlue': '#6A5ACD', 'AntiqueWhite4': '#8B8378', 'DimGrey': '#696969', 'VioletRed': '#D02090', 'WhiteSmoke': '#F5F5F5', 'grey38': '#616161', 'grey39': '#636363', 'grey36': '#5C5C5C', 'grey37': '#5E5E5E', 'grey34': '#575757', 'grey35': '#595959', 'aqua': '#00FFFF', 'grey33': '#545454', 'grey30': '#4D4D4D', 'grey31': '#4F4F4F', 'NavyBlue': '#000080', 'sienna4': '#8B4726', 'gray81': '#CFCFCF', 'gray80': '#CCCCCC', 'sienna1': '#FF8247', 'gray86': '#DBDBDB', 'sienna3': '#CD6839', 'sienna2': '#EE7942', 'gray89': '#E3E3E3', 'gray88': '#E0E0E0', 'SlateBlue4': '#473C8B', 'gray87': '#DEDEDE', 'LightSteelBlue1': '#CAE1FF', 'magenta3': '#CD00CD', 'IndianRed': '#CD5C5C', 'SlateBlue2': '#7A67EE', 'SlateBlue1': '#836FFF', 'LightBlue': '#ADD8E6', 'PeachPuff4': '#8B7765', 'seashell': '#FFF5EE', 'SaddleBrown': '#8B4513', 'PeachPuff1': '#FFDAB9', 'PeachPuff2': '#EECBAD', 'PeachPuff3': '#CDAF95', 'aquamarine': '#7FFFD4', 'LemonChiffon2': '#EEE9BF', 'LemonChiffon1': '#FFFACD', 'tan4': '#8B5A2B', 'tan3': '#CD853F', 'tan2': '#EE9A49', 'tan1': '#FFA54F', 'LemonChiffon4': '#8B8970', 'orange': '#FFA500', 'OldLace': '#FDF5E6', 'PowderBlue': '#B0E0E6', 'RosyBrown3': '#CD9B9B', 'RoyalBlue': '#4169E1', 'LightSkyBlue4': '#607B8B', 'LightSkyBlue1': '#B0E2FF', 'LightSkyBlue2': '#A4D3EE', 'LightSkyBlue3': '#8DB6CD', 'LightYellow1': '#FFFFE0', 'LightYellow2': '#EEEED1', 'LightYellow3': '#CDCDB4', 'LightYellow4': '#8B8B7A', 'goldenrod4': '#8B6914', 'goldenrod1': '#FFC125', 'goldenrod2': '#EEB422', 'goldenrod3': '#CD9B1D', 'grey32': '#525252', 'LemonChiffon': '#FFFACD', 'burlywood1': '#FFD39B', 'YellowGreen': '#9ACD32', 'LightCoral': '#F08080', 'burlywood3': '#CDAA7D', 'ivory3': '#CDCDC1', 'firebrick3': '#CD2626', 'ivory1': '#FFFFF0', 'grey8': '#141414', 'ivory4': '#8B8B83', 'grey9': '#171717', 'DarkSalmon': '#E9967A', 'SlateGray1': '#C6E2FF', 'SlateGray2': '#B9D3EE', 'SlateGray3': '#9FB6CD', 'SlateGray4': '#6C7B8B', 'RosyBrown2': '#EEB4B4', 'RosyBrown1': '#FFC1C1', 'gray85': '#D9D9D9', 'gray84': '#D6D6D6', 'LightGreen': '#90EE90', 'LavenderBlush1': '#FFF0F5', 'grey73': '#BABABA', 'LavenderBlush3': '#CDC1C5', 'LavenderBlush2': '#EEE0E5', 'grey76': '#C2C2C2', 'LavenderBlush4': '#8B8386', 'grey74': '#BDBDBD', 'grey75': '#BFBFBF', 'pink1': '#FFB5C5', 'pink3': '#CD919E', 'pink2': '#EEA9B8', 'pink4': '#8B636C', 'gray47': '#787878', 'gray46': '#757575', 'gray45': '#737373', 'gray44': '#707070', 'gray43': '#6E6E6E', 'gray42': '#6B6B6B', 'gray41': '#696969', 'gray40': '#666666', 'gray49': '#7D7D7D', 'gray48': '#7A7A7A', 'MediumAquamarine': '#66CDAA', 'MediumForestGreen': '#32814B', 'azure1': '#F0FFFF', 'azure3': '#C1CDCD', 'azure2': '#E0EEEE', 'indigo': '#4B0082', 'azure4': '#838B8B', 'firebrick': '#B22222', 'DarkGrey': '#A9A9A9', 'magenta4': '#8B008B', 'SlateBlue3': '#6959CD', 'magenta2': '#EE00EE', 'magenta1': '#FF00FF', 'grey51': '#828282', 'chartreuse': '#7FFF00', 'grey41': '#696969', 'DarkOliveGreen4': '#6E8B3D', 'turquoise': '#40E0D0', 'DarkOliveGreen1': '#CAFF70', 'DarkOliveGreen3': '#A2CD5A', 'DarkOliveGreen2': '#BCEE68', 'grey6': '#0F0F0F', 'grey7': '#121212', 'grey4': '#0A0A0A', 'grey5': '#0D0D0D', 'grey2': '#050505', 'grey3': '#080808', 'grey0': '#000000', 'grey1': '#030303', 'gray50': '#7F7F7F', 'cyan1': '#00FFFF', 'gray51': '#828282', 'gray24': '#3D3D3D', 'HotPink': '#FF69B4', 'DarkGoldenrod4': '#8B6508', 'gray54': '#8A8A8A', 'DarkGoldenrod1': '#FFB90F', 'DarkGoldenrod2': '#EEAD0E', 'DarkGoldenrod3': '#CD950C', 'IndianRed2': '#EE6363', 'DeepPink': '#FF1493', 'gray28': '#474747', 'IndianRed3': '#CD5555', 'DarkCyan': '#008B8B', 'GreenYellow': '#ADFF2F', 'LightSalmon': '#FFA07A', 'DarkOrange4': '#8B4500', 'DarkOrange1': '#FF7F00', 'transparent': '#000000', 'DarkOrange3': '#CD6600', 'orchid': '#DA70D6', 'purple': '#800080', 'wheat4': '#8B7E66', 'wheat1': '#FFE7BA', 'wheat3': '#CDBA96', 'SpringGreen1': '#00FF7F', 'coral3': '#CD5B45', 'coral2': '#EE6A50', 'coral1': '#FF7256', 'thistle1': '#FFE1FF', 'PaleTurquoise': '#AFEEEE', 'bisque': '#FFE4C4', 'DeepPink3': '#CD1076', 'DeepPink2': '#EE1289', 'DeepPink1': '#FF1493', 'khaki': '#F0E68C', 'wheat': '#F5DEB3', 'MediumSeaGreen': '#3CB371', 'DeepPink4': '#8B0A50', 'salmon': '#FA8072', 'grey44': '#707070', 'DarkSlateBlue': '#483D8B', 'PaleVioletRed4': '#8B475D', 'PaleVioletRed1': '#FF82AB', 'PaleVioletRed2': '#EE799F', 'PaleVioletRed3': '#CD6889', 'AntiqueWhite': '#FAEBD7', 'PaleTurquoise4': '#668B8B', 'PaleTurquoise3': '#96CDCD', 'PaleTurquoise2': '#AEEEEE', 'PaleTurquoise1': '#BBFFFF', 'gray56': '#8F8F8F', 'plum': '#DDA0DD', 'beige': '#F5F5DC', 'SpringGreen': '#00FF7F', 'azure': '#F0FFFF', 'honeydew1': '#F0FFF0', 'honeydew2': '#E0EEE0', 'honeydew3': '#C1CDC1', 'honeydew4': '#838B83', 'gray57': '#919191', 'snow4': '#8B8989', 'snow2': '#EEE9E9', 'snow3': '#CDC9C9', 'snow1': '#FFFAFA', 'SandyBrown': '#F4A460', 'grey13': '#212121', 'SeaGreen4': '#2E8B57', 'SeaGreen3': '#43CD80', 'SeaGreen2': '#4EEE94', 'SeaGreen1': '#54FF9F', 'grey29': '#4A4A4A', 'grey28': '#474747', 'grey25': '#404040', 'grey24': '#3D3D3D', 'grey27': '#454545', 'grey26': '#424242', 'fuchsia': '#FF00FF', 'grey20': '#333333', 'grey23': '#3B3B3B', 'grey22': '#383838', 'gray78': '#C7C7C7', 'gray79': '#C9C9C9', 'gray76': '#C2C2C2', 'gray77': '#C4C4C4', 'gray74': '#BDBDBD', 'gray75': '#BFBFBF', 'gray72': '#B8B8B8', 'gray73': '#BABABA', 'gray70': '#B3B3B3', 'gray71': '#B5B5B5', 'ivory': '#FFFFF0', 'LemonChiffon3': '#CDC9A5', 'DeepSkyBlue4': '#00688B', 'DeepSkyBlue3': '#009ACD', 'DeepSkyBlue2': '#00B2EE', 'DeepSkyBlue1': '#00BFFF', 'cornsilk4': '#8B8878', 'cornsilk2': '#EEE8CD', 'cornsilk3': '#CDC8B1', 'CadetBlue': '#5F9EA0', 'cornsilk1': '#FFF8DC', 'grey90': '#E5E5E5', 'grey91': '#E8E8E8', 'grey92': '#EBEBEB', 'goldenrod': '#DAA520', 'grey94': '#F0F0F0', 'grey95': '#F2F2F2', 'grey96': '#F5F5F5', 'grey97': '#F7F7F7', 'grey98': '#FAFAFA', 'grey99': '#FCFCFC', 'red3': '#CD0000', 'LightSteelBlue2': '#BCD2EE', 'LightSteelBlue3': '#A2B5CD', 'LightSteelBlue4': '#6E7B8B', 'LightBlue3': '#9AC0CD', 'maroon': '#800000', 'LightSkyBlue': '#87CEFA', 'LightGoldenrodYellow': '#FAFAD2', 'MediumBlue': '#0000CD', 'LightSlateGray': '#778899', 'DarkOrange2': '#EE7600', 'PaleVioletRed': '#DB7093'};
+var divtoname = {'#d322': 'khaki4', '#d600': 'gray34', '#d118': 'MediumPurple1', '#d119': 'MediumPurple2', '#d114': 'purple3', '#d115': 'purple4', '#d116': 'purple1', '#d117': 'MediumPurple', '#d110': 'purple', '#d111': 'indigo', '#d112': 'BlueViolet', '#d113': 'purple2', '#d529': 'grey67', '#d231': 'DarkSlateGray', '#d339': 'LightGoldenrod3', '#d233': 'MediumTurquoise', '#d232': 'DarkSlateGrey', '#d235': 'turquoise', '#d234': 'LightSeaGreen', '#d237': 'aquamarine', '#d236': 'aquamarine4', '#d239': 'aquamarine2', '#d238': 'aquamarine1', '#d332': 'gold1', '#d333': 'gold2', '#d334': 'gold3', '#d335': 'gold4', '#d336': 'LightGoldenrod', '#d337': 'LightGoldenrod4', '#d424': 'LightSalmon3', '#d425': 'LightSalmon', '#d426': 'LightSalmon1', '#d427': 'LightSalmon4', '#d420': 'sienna', '#d421': 'sienna1', '#d422': 'sienna2', '#d423': 'sienna3', '#d587': 'grey41', '#d586': 'gray41', '#d585': 'DimGrey', '#d584': 'DimGray', '#d428': 'LightSalmon2', '#d429': 'coral', '#d581': 'grey43', '#d580': 'gray43', '#d89': 'thistle4', '#d88': 'plum3', '#d349': 'goldenrod4', '#d348': 'goldenrod3', '#d81': 'thistle2', '#d80': 'thistle1', '#d83': 'plum2', '#d82': 'plum1', '#d85': 'thistle3', '#d84': 'thistle', '#d87': 'violet', '#d86': 'plum', '#d601': 'grey34', '#d67': 'DeepPink3', '#d66': 'DeepPink2', '#d65': 'DeepPink1', '#d64': 'DeepPink', '#d63': 'HotPink', '#d62': 'HotPink4', '#d61': 'HotPink1', '#d60': 'HotPink2', '#d69': 'maroon1', '#d68': 'DeepPink4', '#d510': 'grey76', '#d511': 'silver', '#d512': 'gray75', '#d513': 'grey75', '#d514': 'gray74', '#d515': 'grey74', '#d516': 'gray73', '#d517': 'grey73', '#d518': 'gray72', '#d519': 'grey72', '#d150': 'LightSteelBlue2', '#d151': 'LightSteelBlue3', '#d152': 'LightSteelBlue4', '#d153': 'SlateGray4', '#d154': 'SlateGray1', '#d155': 'SlateGray2', '#d156': 'SlateGray3', '#d157': 'LightSlateGray', '#d158': 'LightSlateGrey', '#d159': 'SlateGray', '#d565': 'gray50', '#d564': 'fractal', '#d567': 'gray', '#d566': 'grey50', '#d561': 'grey52', '#d560': 'gray52', '#d563': 'grey51', '#d562': 'gray51', '#d604': 'gray32', '#d605': 'grey32', '#d606': 'gray31', '#d607': 'grey31', '#d569': 'grey49', '#d568': 'gray49', '#d602': 'gray33', '#d603': 'grey33', '#d125': 'SlateBlue', '#d124': 'MediumSlateBlue', '#d127': 'SlateBlue2', '#d126': 'SlateBlue1', '#d121': 'MediumPurple4', '#d120': 'MediumPurple3', '#d123': 'LightSlateBlue', '#d122': 'DarkSlateBlue', '#d359': 'wheat1', '#d129': 'SlateBlue4', '#d128': 'SlateBlue3', '#d301': 'LightYellow', '#d300': 'ivory1', '#d303': 'beige', '#d302': 'LightYellow1', '#d305': 'LightGoldenrodYellow', '#d304': 'ivory2', '#d307': 'ivory3', '#d306': 'LightYellow2', '#d309': 'ivory4', '#d308': 'LightYellow3', '#d462': 'grey98', '#d351': 'DarkGoldenrod1', '#d464': 'grey97', '#d465': 'gray96', '#d466': 'grey96', '#d467': 'WhiteSmoke', '#d463': 'gray97', '#d268': 'PaleGreen3', '#d269': 'honeydew4', '#d266': 'DarkSeaGreen3', '#d267': 'DarkSeaGreen', '#d264': 'LightGreen', '#d265': 'PaleGreen2', '#d262': 'PaleGreen', '#d263': 'honeydew3', '#d260': 'DarkSeaGreen2', '#d261': 'PaleGreen1', '#d598': 'gray35', '#d29': 'firebrick4', '#d28': 'brown4', '#d23': 'red2', '#d22': 'firebrick3', '#d21': 'RosyBrown4', '#d20': 'red1', '#d27': 'IndianRed4', '#d26': 'red3', '#d25': 'brown', '#d24': 'firebrick', '#d599': 'grey35', '#d338': 'LightGoldenrod1', '#d419': 'sienna4', '#d418': 'seashell1', '#d230': 'teal', '#d415': 'chocolate4', '#d414': 'chocolate3', '#d417': 'seashell', '#d416': 'SaddleBrown', '#d411': 'chocolate', '#d410': 'seashell3', '#d413': 'chocolate2', '#d412': 'chocolate1', '#d398': 'tan1', '#d399': 'tan2', '#d392': 'DarkOrange1', '#d393': 'linen', '#d390': 'bisque1', '#d391': 'bisque3', '#d396': 'DarkOrange4', '#d397': 'peru', '#d394': 'DarkOrange2', '#d395': 'DarkOrange3', '#d194': 'CadetBlue2', '#d195': 'CadetBlue3', '#d196': 'CadetBlue4', '#d197': 'turquoise1', '#d190': 'LightBlue', '#d191': 'LightBlue4', '#d192': 'PowderBlue', '#d193': 'CadetBlue1', '#d198': 'turquoise2', '#d199': 'turquoise3', '#d330': 'cornsilk4', '#d331': 'gold', '#d640': 'gray14', '#d641': 'grey14', '#d642': 'gray13', '#d643': 'grey13', '#d644': 'gray12', '#d645': 'grey12', '#d646': 'gray11', '#d647': 'grey11', '#d648': 'gray10', '#d649': 'grey10', '#d668': 'black', '#d486': 'gainsboro', '#d487': 'gray86', '#d484': 'gray87', '#d485': 'grey87', '#d482': 'gray88', '#d483': 'grey88', '#d480': 'gray89', '#d481': 'grey89', '#d521': 'grey71', '#d520': 'gray71', '#d523': 'grey70', '#d522': 'gray70', '#d525': 'grey69', '#d524': 'gray69', '#d488': 'grey86', '#d489': 'gray85', '#d430': 'OrangeRed', '#d660': 'gray4', '#d169': 'SteelBlue1', '#d168': 'SteelBlue', '#d661': 'grey4', '#d161': 'DodgerBlue', '#d160': 'SlateGrey', '#d163': 'DodgerBlue2', '#d162': 'DodgerBlue1', '#d165': 'DodgerBlue3', '#d164': 'DodgerBlue4', '#d167': 'SteelBlue4', '#d166': 'AliceBlue', '#d635': 'grey17', '#d634': 'gray17', '#d637': 'grey16', '#d636': 'gray16', '#d631': 'grey19', '#d630': 'gray19', '#d633': 'grey18', '#d632': 'gray18', '#d639': 'grey15', '#d638': 'gray15', '#d368': 'PapayaWhip', '#d222': 'cyan', '#d223': 'cyan1', '#d220': 'LightCyan4', '#d221': 'aqua', '#d226': 'DarkSlateGray4', '#d227': 'cyan3', '#d224': 'PaleTurquoise4', '#d225': 'cyan2', '#d228': 'cyan4', '#d229': 'DarkCyan', '#d590': 'gray39', '#d538': 'gray63', '#d539': 'grey63', '#d591': 'grey39', '#d451': 'MistyRose', '#d450': 'MistyRose2', '#d453': 'salmon', '#d452': 'MistyRose1', '#d455': 'white', '#d454': 'MistyRose3', '#d457': 'grey100', '#d456': 'gray100', '#d459': 'gray99', '#d458': 'grey100', '#d592': 'gray38', '#d593': 'grey38', '#d594': 'gray37', '#d595': 'grey37', '#d596': 'gray36', '#d597': 'grey36', '#d297': 'YellowGreen', '#d296': 'OliveDrab3', '#d295': 'OliveDrab2', '#d294': 'OliveDrab1', '#d293': 'OliveDrab', '#d292': 'DarkOliveGreen', '#d291': 'DarkOliveGreen4', '#d290': 'DarkOliveGreen2', '#d356': 'wheat2', '#d357': 'OldLace', '#d354': 'DarkGoldenrod4', '#d355': 'FloralWhite', '#d352': 'DarkGoldenrod2', '#d353': 'DarkGoldenrod3', '#d299': 'ivory', '#d298': 'OliveDrab4', '#d468': 'gray95', '#d534': 'gray65', '#d535': 'grey65', '#d52': 'LavenderBlush2', '#d53': 'LavenderBlush4', '#d50': 'LavenderBlush1', '#d51': 'LavenderBlush3', '#d56': 'VioletRed3', '#d57': 'VioletRed1', '#d54': 'maroon', '#d55': 'HotPink3', '#d58': 'VioletRed2', '#d59': 'VioletRed4', '#d469': 'grey95', '#d558': 'gray53', '#d559': 'grey53', '#d576': 'gray45', '#d577': 'grey45', '#d574': 'gray46', '#d575': 'grey46', '#d572': 'gray47', '#d573': 'grey47', '#d570': 'gray48', '#d571': 'grey48', '#d671': 'opaque', '#d670': 'grey0', '#d673': 'transparent', '#d672': 'none', '#d578': 'gray44', '#d579': 'grey44', '#d589': 'grey40', '#d588': 'gray40', '#d4': 'RosyBrown2', '#d5': 'snow3', '#d6': 'LightCoral', '#d7': 'IndianRed1', '#d0': 'snow', '#d1': 'snow1', '#d2': 'snow2', '#d3': 'RosyBrown1', '#d8': 'RosyBrown3', '#d9': 'IndianRed2', '#d136': 'MediumBlue', '#d137': 'blue4', '#d134': 'blue2', '#d135': 'blue3', '#d132': 'blue', '#d133': 'blue1', '#d130': 'GhostWhite', '#d131': 'lavender', '#d583': 'grey42', '#d138': 'DarkBlue', '#d139': 'MidnightBlue', '#d312': 'yellow1', '#d313': 'yellow2', '#d310': 'LightYellow4', '#d311': 'yellow', '#d316': 'olive', '#d317': 'DarkKhaki', '#d314': 'yellow3', '#d315': 'yellow4', '#d318': 'khaki2', '#d319': 'LemonChiffon4', '#d259': 'DarkSeaGreen1', '#d258': 'honeydew2', '#d253': 'SeaGreen4', '#d252': 'SeaGreen1', '#d251': 'SeaGreen3', '#d250': 'SeaGreen', '#d257': 'honeydew1', '#d256': 'honeydew', '#d255': 'MediumForestGreen', '#d254': 'SeaGreen2', '#d345': 'goldenrod', '#d344': 'cornsilk1', '#d612': 'gray28', '#d347': 'goldenrod2', '#d461': 'gray98', '#d346': 'goldenrod1', '#d479': 'grey90', '#d341': 'cornsilk3', '#d478': 'gray90', '#d340': 'LightGoldenrod2', '#d343': 'cornsilk', '#d342': 'cornsilk2', '#d528': 'gray67', '#d408': 'seashell4', '#d409': 'seashell2', '#d406': 'PeachPuff3', '#d407': 'SandyBrown', '#d404': 'PeachPuff4', '#d405': 'PeachPuff2', '#d402': 'PeachPuff', '#d403': 'PeachPuff1', '#d400': 'tan3', '#d401': 'tan4', '#d552': 'gray56', '#d460': 'grey99', '#d16': 'firebrick2', '#d17': 'snow4', '#d14': 'IndianRed', '#d15': 'IndianRed3', '#d12': 'firebrick1', '#d13': 'brown2', '#d10': 'RosyBrown', '#d11': 'brown1', '#d532': 'gray66', '#d533': 'grey66', '#d530': 'DarkGray', '#d531': 'DarkGrey', '#d536': 'gray64', '#d537': 'grey64', '#d18': 'brown3', '#d19': 'red', '#d329': 'MediumGoldenRod', '#d328': 'LemonChiffon2', '#d178': 'LightSkyBlue1', '#d179': 'LightSkyBlue2', '#d172': 'SkyBlue4', '#d173': 'SkyBlue1', '#d170': 'SteelBlue2', '#d171': 'SteelBlue3', '#d176': 'LightSkyBlue', '#d177': 'LightSkyBlue4', '#d174': 'SkyBlue2', '#d175': 'SkyBlue3', '#d626': 'gray21', '#d627': 'grey21', '#d624': 'gray22', '#d625': 'grey22', '#d622': 'gray23', '#d623': 'grey23', '#d620': 'gray24', '#d621': 'grey24', '#d628': 'gray20', '#d629': 'grey20', '#d219': 'azure4', '#d218': 'DarkSlateGray3', '#d217': 'PaleTurquoise3', '#d216': 'DarkSlateGray2', '#d215': 'LightCyan3', '#d214': 'azure3', '#d213': 'DarkSlateGray1', '#d212': 'PaleTurquoise2', '#d211': 'PaleTurquoise', '#d210': 'PaleTurquoise1', '#d669': 'gray0', '#d582': 'gray42', '#d442': 'coral3', '#d443': 'coral4', '#d440': 'coral1', '#d441': 'coral2', '#d446': 'tomato1', '#d447': 'tomato2', '#d444': 'tomato4', '#d445': 'tomato', '#d448': 'tomato3', '#d449': 'MistyRose4', '#d280': 'DarkGreen', '#d281': 'LawnGreen', '#d282': 'chartreuse', '#d283': 'chartreuse1', '#d284': 'chartreuse2', '#d285': 'chartreuse3', '#d286': 'chartreuse4', '#d287': 'GreenYellow', '#d288': 'DarkOliveGreen3', '#d289': 'DarkOliveGreen1', '#d361': 'orange', '#d360': 'wheat3', '#d367': 'moccasin', '#d366': 'wheat4', '#d365': 'orange4', '#d364': 'orange3', '#d49': 'LavenderBlush', '#d48': 'PaleVioletRed3', '#d45': 'PaleVioletRed', '#d44': 'PaleVioletRed4', '#d47': 'PaleVioletRed1', '#d46': 'PaleVioletRed2', '#d41': 'pink2', '#d40': 'pink1', '#d43': 'pink4', '#d42': 'pink3', '#d358': 'wheat', '#d527': 'grey68', '#d526': 'gray68', '#d614': 'gray27', '#d543': 'grey61', '#d542': 'gray61', '#d541': 'grey62', '#d540': 'gray62', '#d547': 'grey59', '#d546': 'gray59', '#d545': 'grey60', '#d544': 'gray60', '#d662': 'gray3', '#d663': 'grey3', '#d549': 'grey58', '#d548': 'gray58', '#d666': 'gray1', '#d667': 'grey1', '#d664': 'gray2', '#d665': 'grey2', '#d103': 'MediumOrchid4', '#d102': 'MediumOrchid3', '#d101': 'MediumOrchid2', '#d100': 'MediumOrchid1', '#d107': 'DarkOrchid3', '#d106': 'DarkOrchid1', '#d105': 'DarkOrchid', '#d104': 'DarkViolet', '#d109': 'DarkOrchid4', '#d108': 'DarkOrchid2', '#d244': 'SpringGreen', '#d245': 'SpringGreen1', '#d246': 'SpringGreen2', '#d247': 'SpringGreen3', '#d240': 'aquamarine3', '#d241': 'MediumAquamarine', '#d242': 'MediumSpringGreen', '#d243': 'MintCream', '#d327': 'LemonChiffon3', '#d326': 'khaki', '#d325': 'LemonChiffon1', '#d324': 'LemonChiffon', '#d248': 'SpringGreen4', '#d249': 'MediumSeaGreen', '#d321': 'khaki3', '#d320': 'khaki1', '#d350': 'DarkGoldenrod', '#d439': 'salmon4', '#d438': 'salmon3', '#d98': 'purple', '#d99': 'MediumOrchid', '#d96': 'DarkMagenta', '#d97': 'magenta4', '#d94': 'magenta2', '#d95': 'magenta3', '#d92': 'magenta1', '#d93': 'plum4', '#d90': 'fuchsia', '#d91': 'magenta', '#d433': 'OrangeRed3', '#d432': 'OrangeRed2', '#d431': 'OrangeRed1', '#d74': 'VioletRed', '#d75': 'orchid2', '#d76': 'orchid', '#d77': 'orchid1', '#d70': 'maroon2', '#d71': 'maroon3', '#d72': 'maroon4', '#d73': 'MediumVioletRed', '#d437': 'salmon2', '#d78': 'orchid3', '#d79': 'orchid4', '#d436': 'salmon1', '#d435': 'DarkSalmon', '#d434': 'OrangeRed4', '#d507': 'gray77', '#d506': 'grey78', '#d505': 'gray78', '#d504': 'grey79', '#d503': 'gray79', '#d502': 'grey80', '#d501': 'gray80', '#d500': 'grey81', '#d509': 'gray76', '#d508': 'grey77', '#d473': 'grey93', '#d369': 'NavajoWhite3', '#d147': 'CornflowerBlue', '#d146': 'RoyalBlue4', '#d145': 'RoyalBlue3', '#d144': 'RoyalBlue2', '#d143': 'RoyalBlue1', '#d142': 'RoyalBlue', '#d141': 'NavyBlue', '#d140': 'navy', '#d149': 'LightSteelBlue1', '#d148': 'LightSteelBlue', '#d472': 'gray93', '#d613': 'grey28', '#d363': 'orange2', '#d611': 'grey29', '#d610': 'gray29', '#d617': 'grey26', '#d616': 'gray26', '#d615': 'grey27', '#d362': 'orange1', '#d619': 'grey25', '#d618': 'gray25', '#d208': 'azure2', '#d209': 'LightCyan2', '#d200': 'turquoise4', '#d201': 'cadet blue', '#d202': 'CadetBlue', '#d203': 'DarkTurquoise', '#d204': 'azure', '#d205': 'azure1', '#d206': 'LightCyan', '#d207': 'LightCyan1', '#d608': 'gray30', '#d609': 'grey30', '#d374': 'NavajoWhite4', '#d375': 'AntiqueWhite4', '#d376': 'AntiqueWhite', '#d377': 'tan', '#d370': 'BlanchedAlmond', '#d371': 'NavajoWhite', '#d372': 'NavajoWhite1', '#d373': 'NavajoWhite2', '#d477': 'grey91', '#d476': 'gray91', '#d475': 'grey92', '#d474': 'gray92', '#d378': 'bisque4', '#d379': 'burlywood', '#d471': 'grey94', '#d470': 'gray94', '#d279': 'green', '#d278': 'green4', '#d275': 'PaleGreen4', '#d274': 'green2', '#d277': 'ForestGreen', '#d276': 'green3', '#d271': 'lime', '#d270': 'green1', '#d273': 'DarkSeaGreen4', '#d272': 'LimeGreen', '#d38': 'pink', '#d39': 'crimson', '#d30': 'DarkRed', '#d31': 'red4', '#d32': 'maroon', '#d33': 'LightPink1', '#d34': 'LightPink3', '#d35': 'LightPink4', '#d36': 'LightPink2', '#d37': 'LightPink', '#d658': 'gray5', '#d389': 'bisque', '#d388': 'bisque2', '#d381': 'burlywood1', '#d380': 'AntiqueWhite2', '#d383': 'burlywood2', '#d382': 'burlywood3', '#d385': 'burlywood4', '#d384': 'AntiqueWhite1', '#d387': 'DarkOrange', '#d386': 'AntiqueWhite3', '#d189': 'LightBlue2', '#d188': 'LightBlue1', '#d183': 'DeepSkyBlue', '#d182': 'LightBlue3', '#d181': 'SkyBlue', '#d180': 'LightSkyBlue3', '#d187': 'DeepSkyBlue3', '#d186': 'DeepSkyBlue4', '#d185': 'DeepSkyBlue2', '#d184': 'DeepSkyBlue1', '#d657': 'grey6', '#d656': 'gray6', '#d655': 'grey7', '#d654': 'gray7', '#d653': 'grey8', '#d652': 'gray8', '#d651': 'grey9', '#d650': 'gray9', '#d550': 'gray57', '#d659': 'grey5', '#d551': 'grey57', '#d495': 'LightGray', '#d494': 'grey83', '#d497': 'gray82', '#d496': 'LightGrey', '#d491': 'gray84', '#d490': 'grey85', '#d493': 'gray83', '#d492': 'grey84', '#d554': 'gray55', '#d555': 'grey55', '#d556': 'gray54', '#d557': 'grey54', '#d499': 'gray81', '#d498': 'grey82', '#d323': 'PaleGoldenrod', '#d553': 'grey56'};
+var rgbtohex = {'rgb(255, 235, 205)': '#FFEBCD', 'rgb(205, 155, 155)': '#CD9B9B', 'rgb(0, 0, 128)': '#000080', 'rgb(179, 238, 58)': '#B3EE3A', 'rgb(205, 51, 51)': '#CD3333', 'rgb(118, 238, 198)': '#76EEC6', 'rgb(214, 214, 214)': '#D6D6D6', 'rgb(189, 189, 189)': '#BDBDBD', 'rgb(139, 131, 120)': '#8B8378', 'rgb(0, 238, 238)': '#00EEEE', 'rgb(137, 104, 205)': '#8968CD', 'rgb(85, 107, 47)': '#556B2F', 'rgb(107, 107, 107)': '#6B6B6B', 'rgb(205, 205, 180)': '#CDCDB4', 'rgb(218, 112, 214)': '#DA70D6', 'rgb(34, 139, 34)': '#228B22', 'rgb(245, 222, 179)': '#F5DEB3', 'rgb(139, 90, 43)': '#8B5A2B', 'rgb(255, 246, 143)': '#FFF68F', 'rgb(205, 91, 69)': '#CD5B45', 'rgb(255, 187, 255)': '#FFBBFF', 'rgb(162, 181, 205)': '#A2B5CD', 'rgb(238, 118, 0)': '#EE7600', 'rgb(238, 154, 73)': '#EE9A49', 'rgb(194, 194, 194)': '#C2C2C2', 'rgb(184, 134, 11)': '#B8860B', 'rgb(93, 71, 139)': '#5D478B', 'rgb(255, 182, 193)': '#FFB6C1', 'rgb(139, 69, 0)': '#8B4500', 'rgb(105, 89, 205)': '#6959CD', 'rgb(238, 173, 14)': '#EEAD0E', 'rgb(151, 255, 255)': '#97FFFF', 'rgb(205, 150, 205)': '#CD96CD', 'rgb(255, 69, 0)': '#FF4500', 'rgb(0, 134, 139)': '#00868B', 'rgb(0, 238, 0)': '#00EE00', 'rgb(255, 106, 106)': '#FF6A6A', 'rgb(186, 186, 186)': '#BABABA', 'rgb(143, 188, 143)': '#8FBC8F', 'rgb(139, 99, 108)': '#8B636C', 'rgb(224, 102, 255)': '#E066FF', 'rgb(100, 149, 237)': '#6495ED', 'rgb(0, 139, 69)': '#008B45', 'rgb(178, 223, 238)': '#B2DFEE', 'rgb(205, 192, 176)': '#CDC0B0', 'rgb(0, 206, 209)': '#00CED1', 'rgb(104, 131, 139)': '#68838B', 'rgb(155, 205, 155)': '#9BCD9B', 'rgb(139, 76, 57)': '#8B4C39', 'rgb(205, 149, 12)': '#CD950C', 'rgb(67, 205, 128)': '#43CD80', 'rgb(54, 54, 54)': '#363636', 'rgb(0, 205, 205)': '#00CDCD', 'rgb(99, 184, 255)': '#63B8FF', 'rgb(238, 233, 233)': '#EEE9E9', 'rgb(205, 201, 201)': '#CDC9C9', 'rgb(156, 156, 156)': '#9C9C9C', 'rgb(139, 125, 123)': '#8B7D7B', 'rgb(148, 148, 148)': '#949494', 'rgb(102, 205, 170)': '#66CDAA', 'rgb(139, 54, 38)': '#8B3626', 'rgb(255, 181, 197)': '#FFB5C5', 'rgb(173, 216, 230)': '#ADD8E6', 'rgb(46, 46, 46)': '#2E2E2E', 'rgb(164, 211, 238)': '#A4D3EE', 'rgb(232, 232, 232)': '#E8E8E8', 'rgb(105, 105, 105)': '#696969', 'rgb(205, 193, 197)': '#CDC1C5', 'rgb(20, 20, 20)': '#141414', 'rgb(139, 139, 131)': '#8B8B83', 'rgb(255, 114, 86)': '#FF7256', 'rgb(0, 104, 139)': '#00688B', 'rgb(205, 41, 144)': '#CD2990', 'rgb(127, 127, 127)': '#7F7F7F', 'rgb(255, 239, 213)': '#FFEFD5', 'rgb(238, 238, 209)': '#EEEED1', 'rgb(242, 242, 242)': '#F2F2F2', 'rgb(240, 230, 140)': '#F0E68C', 'rgb(238, 207, 161)': '#EECFA1', 'rgb(25, 25, 112)': '#191970', 'rgb(205, 79, 57)': '#CD4F39', 'rgb(84, 84, 84)': '#545454', 'rgb(110, 139, 61)': '#6E8B3D', 'rgb(255, 215, 0)': '#FFD700', 'rgb(143, 143, 143)': '#8F8F8F', 'rgb(238, 59, 59)': '#EE3B3B', 'rgb(166, 166, 166)': '#A6A6A6', 'rgb(255, 160, 122)': '#FFA07A', 'rgb(51, 51, 51)': '#333333', 'rgb(224, 238, 224)': '#E0EEE0', 'rgb(139, 121, 94)': '#8B795E', 'rgb(110, 123, 139)': '#6E7B8B', 'rgb(26, 26, 26)': '#1A1A1A', 'rgb(238, 99, 99)': '#EE6363', 'rgb(178, 58, 238)': '#B23AEE', 'rgb(238, 197, 145)': '#EEC591', 'rgb(171, 171, 171)': '#ABABAB', 'rgb(237, 237, 237)': '#EDEDED', 'rgb(238, 0, 0)': '#EE0000', 'rgb(139, 71, 38)': '#8B4726', 'rgb(82, 139, 139)': '#528B8B', 'rgb(139, 105, 105)': '#8B6969', 'rgb(160, 32, 240)': '#A020F0', 'rgb(78, 238, 148)': '#4EEE94', 'rgb(205, 85, 85)': '#CD5555', 'rgb(205, 181, 205)': '#CDB5CD', 'rgb(184, 184, 184)': '#B8B8B8', 'rgb(255, 222, 173)': '#FFDEAD', 'rgb(8, 8, 8)': '#080808', 'rgb(255, 248, 220)': '#FFF8DC', 'rgb(175, 238, 238)': '#AFEEEE', 'rgb(255, 130, 71)': '#FF8247', 'rgb(13, 13, 13)': '#0D0D0D', 'rgb(0, 139, 139)': '#008B8B', 'rgb(187, 255, 255)': '#BBFFFF', 'rgb(147, 112, 219)': '#9370DB', 'rgb(0, 128, 0)': '#008000', 'rgb(238, 64, 0)': '#EE4000', 'rgb(238, 18, 137)': '#EE1289', 'rgb(54, 100, 139)': '#36648B', 'rgb(176, 176, 176)': '#B0B0B0', 'rgb(0, 0, 238)': '#0000EE', 'rgb(238, 154, 0)': '#EE9A00', 'rgb(188, 143, 143)': '#BC8F8F', 'rgb(240, 255, 255)': '#F0FFFF', 'rgb(191, 62, 255)': '#BF3EFF', 'rgb(171, 130, 255)': '#AB82FF', 'rgb(205, 173, 0)': '#CDAD00', 'rgb(255, 48, 48)': '#FF3030', 'rgb(122, 197, 205)': '#7AC5CD', 'rgb(139, 87, 66)': '#8B5742', 'rgb(204, 204, 204)': '#CCCCCC', 'rgb(205, 129, 98)': '#CD8162', 'rgb(224, 224, 224)': '#E0E0E0', 'rgb(218, 165, 32)': '#DAA520', 'rgb(205, 145, 158)': '#CD919E', 'rgb(139, 62, 47)': '#8B3E2F', 'rgb(238, 122, 233)': '#EE7AE9', 'rgb(152, 251, 152)': '#98FB98', 'rgb(240, 128, 128)': '#F08080', 'rgb(162, 205, 90)': '#A2CD5A', 'rgb(79, 79, 79)': '#4F4F4F', 'rgb(169, 169, 169)': '#A9A9A9', 'rgb(255, 127, 0)': '#FF7F00', 'rgb(139, 28, 98)': '#8B1C62', 'rgb(253, 245, 230)': '#FDF5E6', 'rgb(141, 238, 238)': '#8DEEEE', 'rgb(238, 213, 210)': '#EED5D2', 'rgb(208, 32, 144)': '#D02090', 'rgb(0, 205, 0)': '#00CD00', 'rgb(139, 71, 137)': '#8B4789', 'rgb(205, 201, 165)': '#CDC9A5', 'rgb(0, 229, 238)': '#00E5EE', 'rgb(205, 140, 149)': '#CD8C95', 'rgb(124, 205, 124)': '#7CCD7C', 'rgb(220, 220, 220)': '#DCDCDC', 'rgb(238, 229, 222)': '#EEE5DE', 'rgb(87, 87, 87)': '#575757', 'rgb(70, 130, 180)': '#4682B4', 'rgb(205, 104, 137)': '#CD6889', 'rgb(15, 15, 15)': '#0F0F0F', 'rgb(38, 38, 38)': '#262626', 'rgb(238, 180, 34)': '#EEB422', 'rgb(205, 200, 177)': '#CDC8B1', 'rgb(238, 210, 238)': '#EED2EE', 'rgb(150, 150, 150)': '#969696', 'rgb(0, 255, 127)': '#00FF7F', 'rgb(139, 126, 102)': '#8B7E66', 'rgb(205, 175, 149)': '#CDAF95', 'rgb(152, 245, 255)': '#98F5FF', 'rgb(0, 250, 154)': '#00FA9A', 'rgb(120, 120, 120)': '#787878', 'rgb(238, 118, 33)': '#EE7621', 'rgb(128, 128, 0)': '#808000', 'rgb(139, 137, 112)': '#8B8970', 'rgb(107, 142, 35)': '#6B8E23', 'rgb(219, 219, 219)': '#DBDBDB', 'rgb(205, 205, 0)': '#CDCD00', 'rgb(180, 205, 205)': '#B4CDCD', 'rgb(115, 115, 115)': '#737373', 'rgb(131, 139, 139)': '#838B8B', 'rgb(0, 178, 238)': '#00B2EE', 'rgb(94, 94, 94)': '#5E5E5E', 'rgb(135, 135, 135)': '#878787', 'rgb(145, 145, 145)': '#919191', 'rgb(205, 0, 0)': '#CD0000', 'rgb(16, 78, 139)': '#104E8B', 'rgb(133, 133, 133)': '#858585', 'rgb(205, 38, 38)': '#CD2626', 'rgb(255, 193, 193)': '#FFC1C1', 'rgb(205, 183, 181)': '#CDB7B5', 'rgb(122, 55, 139)': '#7A378B', 'rgb(154, 192, 205)': '#9AC0CD', 'rgb(191, 239, 255)': '#BFEFFF', 'rgb(219, 112, 147)': '#DB7093', 'rgb(121, 205, 205)': '#79CDCD', 'rgb(238, 232, 170)': '#EEE8AA', 'rgb(102, 205, 0)': '#66CD00', 'rgb(255, 185, 15)': '#FFB90F', 'rgb(176, 196, 222)': '#B0C4DE', 'rgb(255, 236, 139)': '#FFEC8B', 'rgb(205, 105, 201)': '#CD69C9', 'rgb(250, 250, 250)': '#FAFAFA', 'rgb(245, 245, 220)': '#F5F5DC', 'rgb(238, 106, 80)': '#EE6A50', 'rgb(64, 64, 64)': '#404040', 'rgb(238, 220, 130)': '#EEDC82', 'white': '#000000', 'rgb(125, 38, 205)': '#7D26CD', 'rgb(205, 133, 63)': '#CD853F', 'rgb(139, 102, 139)': '#8B668B', 'rgb(71, 71, 71)': '#474747', 'rgb(118, 238, 0)': '#76EE00', 'rgb(192, 255, 62)': '#C0FF3E', 'rgb(0, 0, 139)': '#00008B', 'rgb(248, 248, 255)': '#F8F8FF', 'rgb(3, 3, 3)': '#030303', 'rgb(176, 226, 255)': '#B0E2FF', 'rgb(139, 105, 20)': '#8B6914', 'rgb(255, 105, 180)': '#FF69B4', 'rgb(124, 252, 0)': '#7CFC00', 'rgb(238, 238, 224)': '#EEEEE0', 'rgb(139, 69, 19)': '#8B4513', 'rgb(139, 0, 139)': '#8B008B', 'rgb(31, 31, 31)': '#1F1F1F', 'rgb(159, 182, 205)': '#9FB6CD', 'rgb(181, 181, 181)': '#B5B5B5', 'rgb(0, 245, 255)': '#00F5FF', 'rgb(105, 139, 105)': '#698B69', 'rgb(159, 121, 238)': '#9F79EE', 'rgb(205, 198, 115)': '#CDC673', 'rgb(77, 77, 77)': '#4D4D4D', 'rgb(139, 90, 0)': '#8B5A00', 'rgb(122, 122, 122)': '#7A7A7A', 'rgb(224, 238, 238)': '#E0EEEE', 'rgb(50, 129, 75)': '#32814B', 'rgb(202, 225, 255)': '#CAE1FF', 'rgb(255, 110, 180)': '#FF6EB4', 'rgb(238, 48, 167)': '#EE30A7', 'rgb(220, 20, 60)': '#DC143C', 'rgb(127, 255, 212)': '#7FFFD4', 'rgb(205, 179, 139)': '#CDB38B', 'rgb(28, 28, 28)': '#1C1C1C', 'rgb(229, 229, 229)': '#E5E5E5', 'rgb(47, 79, 79)': '#2F4F4F', 'rgb(59, 59, 59)': '#3B3B3B', 'rgb(69, 139, 116)': '#458B74', 'rgb(255, 211, 155)': '#FFD39B', 'rgb(139, 119, 101)': '#8B7765', 'rgb(238, 230, 133)': '#EEE685', 'rgb(10, 10, 10)': '#0A0A0A', 'rgb(144, 238, 144)': '#90EE90', 'rgb(99, 99, 99)': '#636363', 'rgb(188, 238, 104)': '#BCEE68', 'rgb(255, 231, 186)': '#FFE7BA', 'rgb(154, 50, 205)': '#9A32CD', 'rgb(46, 139, 87)': '#2E8B57', 'rgb(145, 44, 238)': '#912CEE', 'rgb(255, 240, 245)': '#FFF0F5', 'rgb(67, 110, 238)': '#436EEE', 'rgb(238, 180, 180)': '#EEB4B4', 'rgb(108, 166, 205)': '#6CA6CD', 'rgb(173, 173, 173)': '#ADADAD', 'rgb(176, 48, 96)': '#B03060', 'rgb(23, 23, 23)': '#171717', 'rgb(138, 138, 138)': '#8A8A8A', 'rgb(139, 137, 137)': '#8B8989', 'rgb(209, 193, 102)': '#D1C166', 'rgb(139, 123, 139)': '#8B7B8B', 'rgb(154, 255, 154)': '#9AFF9A', 'rgb(130, 130, 130)': '#828282', 'rgb(255, 99, 71)': '#FF6347', 'rgb(205, 183, 158)': '#CDB79E', 'rgb(205, 102, 29)': '#CD661D', 'rgb(128, 0, 0)': '#800000', 'rgb(0, 0, 255)': '#0000FF', 'rgb(255, 52, 179)': '#FF34B3', 'rgb(250, 235, 215)': '#FAEBD7', 'rgb(163, 163, 163)': '#A3A3A3', 'rgb(56, 56, 56)': '#383838', 'rgb(85, 26, 139)': '#551A8B', 'rgb(139, 58, 58)': '#8B3A3A', 'rgb(168, 168, 168)': '#A8A8A8', 'rgb(255, 225, 255)': '#FFE1FF', 'rgb(125, 125, 125)': '#7D7D7D', 'rgb(131, 111, 255)': '#836FFF', 'rgb(95, 158, 160)': '#5F9EA0', 'rgb(165, 42, 42)': '#A52A2A', 'rgb(245, 255, 250)': '#F5FFFA', 'rgb(255, 218, 185)': '#FFDAB9', 'rgb(255, 228, 225)': '#FFE4E1', 'rgb(216, 191, 216)': '#D8BFD8', 'rgb(139, 101, 8)': '#8B6508', 'rgb(205, 104, 57)': '#CD6839', 'rgb(255, 131, 250)': '#FF83FA', 'rgb(82, 82, 82)': '#525252', 'rgb(117, 117, 117)': '#757575', 'rgb(255, 165, 0)': '#FFA500', 'rgb(255, 64, 64)': '#FF4040', 'rgb(255, 165, 79)': '#FFA54F', 'rgb(205, 55, 0)': '#CD3700', 'rgb(188, 210, 238)': '#BCD2EE', 'rgb(238, 121, 159)': '#EE799F', 'rgb(5, 5, 5)': '#050505', 'rgb(217, 217, 217)': '#D9D9D9', 'rgb(205, 186, 150)': '#CDBA96', 'rgb(139, 131, 134)': '#8B8386', 'rgb(185, 211, 238)': '#B9D3EE', 'rgb(235, 235, 235)': '#EBEBEB', 'rgb(230, 230, 250)': '#E6E6FA', 'rgb(41, 41, 41)': '#292929', 'rgb(205, 92, 92)': '#CD5C5C', 'rgb(131, 139, 131)': '#838B83', 'rgb(123, 104, 238)': '#7B68EE', 'rgb(128, 0, 128)': '#800080', 'rgb(139, 26, 26)': '#8B1A1A', 'rgb(141, 182, 205)': '#8DB6CD', 'rgb(212, 212, 212)': '#D4D4D4', 'rgb(238, 162, 173)': '#EEA2AD', 'rgb(255, 255, 0)': '#FFFF00', 'rgb(192, 192, 192)': '#C0C0C0', 'rgb(139, 71, 93)': '#8B475D', 'rgb(0, 100, 0)': '#006400', 'rgb(139, 37, 0)': '#8B2500', 'rgb(198, 226, 255)': '#C6E2FF', 'rgb(24, 116, 205)': '#1874CD', 'rgb(178, 34, 34)': '#B22222', 'rgb(28, 134, 238)': '#1C86EE', 'rgb(255, 0, 255)': '#FF00FF', 'rgb(33, 33, 33)': '#212121', 'rgb(209, 238, 238)': '#D1EEEE', 'rgb(255, 127, 80)': '#FF7F50', 'rgb(0, 154, 205)': '#009ACD', 'rgb(255, 255, 224)': '#FFFFE0', 'rgb(75, 0, 130)': '#4B0082', 'rgb(160, 82, 45)': '#A0522D', 'rgb(138, 43, 226)': '#8A2BE2', 'rgb(238, 224, 229)': '#EEE0E5', 'rgb(106, 90, 205)': '#6A5ACD', 'rgb(227, 227, 227)': '#E3E3E3', 'rgb(255, 250, 250)': '#FFFAFA', 'rgb(255, 174, 185)': '#FFAEB9', 'rgb(205, 0, 205)': '#CD00CD', 'rgb(126, 126, 126)': '#7E7E7E', 'rgb(139, 10, 80)': '#8B0A50', 'rgb(186, 85, 211)': '#BA55D3', 'rgb(205, 133, 0)': '#CD8500', 'rgb(211, 211, 211)': '#D3D3D3', 'rgb(69, 69, 69)': '#454545', 'rgb(222, 222, 222)': '#DEDEDE', 'rgb(221, 160, 221)': '#DDA0DD', 'rgb(255, 255, 240)': '#FFFFF0', 'rgb(112, 112, 112)': '#707070', 'rgb(209, 95, 238)': '#D15FEE', 'rgb(0, 255, 0)': '#00FF00', 'rgb(238, 233, 191)': '#EEE9BF', 'rgb(92, 92, 92)': '#5C5C5C', 'rgb(205, 112, 84)': '#CD7054', 'rgb(255, 228, 196)': '#FFE4C4', 'rgb(255, 192, 203)': '#FFC0CB', 'rgb(238, 130, 238)': '#EE82EE', 'rgb(122, 103, 238)': '#7A67EE', 'rgb(238, 121, 66)': '#EE7942', 'rgb(102, 139, 139)': '#668B8B', 'rgb(250, 240, 230)': '#FAF0E6', 'rgb(247, 247, 247)': '#F7F7F7', 'rgb(32, 178, 170)': '#20B2AA', 'rgb(97, 97, 97)': '#616161', 'rgb(150, 205, 205)': '#96CDCD', 'rgb(158, 158, 158)': '#9E9E9E', 'rgb(238, 58, 140)': '#EE3A8C', 'rgb(255, 228, 181)': '#FFE4B5', 'rgb(0, 197, 205)': '#00C5CD', 'rgb(205, 96, 144)': '#CD6090', 'rgb(205, 16, 118)': '#CD1076', 'rgb(240, 240, 240)': '#F0F0F0', 'rgb(176, 224, 230)': '#B0E0E6', 'rgb(199, 21, 133)': '#C71585', 'rgb(238, 203, 173)': '#EECBAD', 'rgb(173, 255, 47)': '#ADFF2F', 'rgb(238, 174, 238)': '#EEAEEE', 'rgb(191, 191, 191)': '#BFBFBF', 'rgb(222, 184, 135)': '#DEB887', 'rgb(18, 18, 18)': '#121212', 'rgb(83, 134, 139)': '#53868B', 'rgb(139, 134, 130)': '#8B8682', 'rgb(142, 229, 238)': '#8EE5EE', 'rgb(0, 139, 0)': '#008B00', 'rgb(240, 255, 240)': '#F0FFF0', 'rgb(104, 34, 139)': '#68228B', 'rgb(193, 255, 193)': '#C1FFC1', 'rgb(0, 0, 0)': '#000000', 'rgb(139, 58, 98)': '#8B3A62', 'rgb(89, 89, 89)': '#595959', 'rgb(72, 118, 255)': '#4876FF', 'rgb(108, 123, 139)': '#6C7B8B', 'rgb(255, 20, 147)': '#FF1493', 'rgb(255, 250, 240)': '#FFFAF0', 'rgb(132, 112, 255)': '#8470FF', 'rgb(255, 62, 150)': '#FF3E96', 'rgb(139, 125, 107)': '#8B7D6B', 'rgb(64, 224, 208)': '#40E0D0', 'rgb(148, 0, 211)': '#9400D3', 'rgb(238, 106, 167)': '#EE6AA7', 'rgb(238, 44, 44)': '#EE2C2C', 'rgb(72, 209, 204)': '#48D1CC', 'rgb(205, 155, 29)': '#CD9B1D', 'rgb(139, 0, 0)': '#8B0000', 'rgb(238, 92, 66)': '#EE5C42', 'rgb(238, 216, 174)': '#EED8AE', 'rgb(65, 105, 225)': '#4169E1', 'rgb(0, 205, 102)': '#00CD66', 'rgb(96, 123, 139)': '#607B8B', 'rgb(210, 180, 140)': '#D2B48C', 'rgb(135, 206, 255)': '#87CEFF', 'rgb(252, 252, 252)': '#FCFCFC', 'rgb(61, 61, 61)': '#3D3D3D', 'rgb(205, 102, 0)': '#CD6600', 'rgb(58, 95, 205)': '#3A5FCD', 'rgb(30, 144, 255)': '#1E90FF', 'rgb(245, 245, 245)': '#F5F5F5', 'rgb(255, 130, 171)': '#FF82AB', 'rgb(60, 179, 113)': '#3CB371', 'rgb(139, 139, 122)': '#8B8B7A', 'rgb(139, 136, 120)': '#8B8878', 'rgb(139, 34, 82)': '#8B2252', 'rgb(238, 223, 204)': '#EEDFCC', 'rgb(238, 213, 183)': '#EED5B7', 'rgb(250, 250, 210)': '#FAFAD2', 'rgb(255, 250, 205)': '#FFFACD', 'rgb(39, 64, 139)': '#27408B', 'rgb(84, 139, 84)': '#548B54', 'rgb(238, 221, 130)': '#EEDD82', 'rgb(139, 95, 101)': '#8B5F65', 'rgb(210, 105, 30)': '#D2691E', 'rgb(139, 139, 0)': '#8B8B00', 'rgb(238, 149, 114)': '#EE9572', 'rgb(0, 255, 255)': '#00FFFF', 'rgb(71, 60, 139)': '#473C8B', 'rgb(207, 207, 207)': '#CFCFCF', 'rgb(153, 50, 204)': '#9932CC', 'rgb(36, 36, 36)': '#242424', 'rgb(153, 153, 153)': '#999999', 'rgb(250, 128, 114)': '#FA8072', 'rgb(174, 238, 238)': '#AEEEEE', 'rgb(139, 117, 0)': '#8B7500', 'rgb(139, 35, 35)': '#8B2323', 'rgb(92, 172, 238)': '#5CACEE', 'rgb(48, 48, 48)': '#303030', 'rgb(139, 129, 76)': '#8B814C', 'rgb(72, 61, 139)': '#483D8B', 'rgb(238, 169, 184)': '#EEA9B8', 'rgb(69, 139, 0)': '#458B00', 'rgb(0, 128, 128)': '#008080', 'rgb(255, 255, 255)': '#FFFFFF', 'rgb(244, 164, 96)': '#F4A460', 'rgb(154, 205, 50)': '#9ACD32', 'rgb(126, 192, 238)': '#7EC0EE', 'rgb(209, 209, 209)': '#D1D1D1', 'rgb(74, 112, 139)': '#4A708B', 'rgb(112, 128, 144)': '#708090', 'rgb(105, 139, 34)': '#698B22', 'rgb(110, 110, 110)': '#6E6E6E', 'rgb(179, 179, 179)': '#B3B3B3', 'rgb(205, 50, 120)': '#CD3278', 'rgb(119, 136, 153)': '#778899', 'rgb(139, 115, 85)': '#8B7355', 'rgb(255, 193, 37)': '#FFC125', 'rgb(224, 255, 255)': '#E0FFFF', 'rgb(66, 66, 66)': '#424242', 'rgb(193, 205, 193)': '#C1CDC1', 'rgb(0, 191, 255)': '#00BFFF', 'rgb(205, 205, 193)': '#CDCDC1', 'rgb(238, 238, 0)': '#EEEE00', 'rgb(255, 140, 105)': '#FF8C69', 'rgb(135, 206, 235)': '#87CEEB', 'rgb(238, 201, 0)': '#EEC900', 'rgb(238, 232, 205)': '#EEE8CD', 'rgb(0, 0, 205)': '#0000CD', 'rgb(238, 130, 98)': '#EE8262', 'rgb(155, 48, 255)': '#9B30FF', 'rgb(43, 43, 43)': '#2B2B2B', 'rgb(240, 248, 255)': '#F0F8FF', 'rgb(238, 0, 238)': '#EE00EE', 'rgb(128, 128, 128)': '#808080', 'rgb(193, 205, 205)': '#C1CDCD', 'rgb(50, 205, 50)': '#32CD32', 'rgb(201, 201, 201)': '#C9C9C9', 'rgb(255, 239, 219)': '#FFEFDB', 'rgb(196, 196, 196)': '#C4C4C4', 'rgb(135, 206, 250)': '#87CEFA', 'rgb(139, 134, 78)': '#8B864E', 'rgb(79, 148, 205)': '#4F94CD', 'rgb(74, 74, 74)': '#4A4A4A', 'rgb(255, 0, 0)': '#FF0000', 'rgb(233, 150, 122)': '#E9967A', 'rgb(205, 190, 112)': '#CDBE70', 'rgb(84, 255, 159)': '#54FF9F', 'rgb(205, 170, 125)': '#CDAA7D', 'rgb(127, 255, 0)': '#7FFF00', 'rgb(102, 102, 102)': '#666666', 'rgb(180, 238, 180)': '#B4EEB4', 'rgb(122, 139, 139)': '#7A8B8B', 'rgb(255, 140, 0)': '#FF8C00', 'rgb(205, 197, 191)': '#CDC5BF', 'rgb(140, 140, 140)': '#8C8C8C', 'rgb(199, 199, 199)': '#C7C7C7', 'rgb(202, 255, 112)': '#CAFF70', 'rgb(255, 245, 238)': '#FFF5EE', 'rgb(189, 183, 107)': '#BDB76B', 'rgb(0, 238, 118)': '#00EE76', 'rgb(180, 82, 205)': '#B452CD', 'rgb(255, 127, 36)': '#FF7F24', 'rgb(161, 161, 161)': '#A1A1A1'};
+var rgbtoname = {'rgb(255, 235, 205)': 'BlanchedAlmond', 'rgb(205, 155, 155)': 'RosyBrown3', 'rgb(0, 0, 128)': 'NavyBlue', 'rgb(179, 238, 58)': 'OliveDrab2', 'rgb(205, 51, 51)': 'brown3', 'rgb(118, 238, 198)': 'aquamarine2', 'rgb(214, 214, 214)': 'grey84', 'rgb(189, 189, 189)': 'grey74', 'rgb(139, 131, 120)': 'AntiqueWhite4', 'rgb(0, 238, 238)': 'cyan2', 'rgb(137, 104, 205)': 'MediumPurple3', 'rgb(85, 107, 47)': 'DarkOliveGreen', 'rgb(107, 107, 107)': 'grey42', 'rgb(205, 205, 180)': 'LightYellow3', 'rgb(218, 112, 214)': 'orchid', 'rgb(34, 139, 34)': 'ForestGreen', 'rgb(245, 222, 179)': 'wheat', 'rgb(139, 90, 43)': 'tan4', 'rgb(255, 246, 143)': 'khaki1', 'rgb(205, 91, 69)': 'coral3', 'rgb(255, 187, 255)': 'plum1', 'rgb(162, 181, 205)': 'LightSteelBlue3', 'rgb(238, 118, 0)': 'DarkOrange2', 'rgb(238, 154, 73)': 'tan2', 'rgb(194, 194, 194)': 'grey76', 'rgb(184, 134, 11)': 'DarkGoldenrod', 'rgb(93, 71, 139)': 'MediumPurple4', 'rgb(255, 182, 193)': 'LightPink', 'rgb(139, 69, 0)': 'DarkOrange4', 'rgb(105, 89, 205)': 'SlateBlue3', 'rgb(238, 173, 14)': 'DarkGoldenrod2', 'rgb(151, 255, 255)': 'DarkSlateGray1', 'rgb(205, 150, 205)': 'plum3', 'rgb(255, 69, 0)': 'OrangeRed1', 'rgb(0, 134, 139)': 'turquoise4', 'rgb(0, 238, 0)': 'green2', 'rgb(255, 106, 106)': 'IndianRed1', 'rgb(186, 186, 186)': 'grey73', 'rgb(143, 188, 143)': 'DarkSeaGreen', 'rgb(139, 99, 108)': 'pink4', 'rgb(224, 102, 255)': 'MediumOrchid1', 'rgb(100, 149, 237)': 'CornflowerBlue', 'rgb(0, 139, 69)': 'SpringGreen4', 'rgb(178, 223, 238)': 'LightBlue2', 'rgb(205, 192, 176)': 'AntiqueWhite3', 'rgb(0, 206, 209)': 'DarkTurquoise', 'rgb(104, 131, 139)': 'LightBlue4', 'rgb(155, 205, 155)': 'DarkSeaGreen3', 'rgb(139, 76, 57)': 'salmon4', 'rgb(205, 149, 12)': 'DarkGoldenrod3', 'rgb(67, 205, 128)': 'SeaGreen3', 'rgb(54, 54, 54)': 'grey21', 'rgb(0, 205, 205)': 'cyan3', 'rgb(99, 184, 255)': 'SteelBlue1', 'rgb(238, 233, 233)': 'snow2', 'rgb(205, 201, 201)': 'snow3', 'rgb(156, 156, 156)': 'grey61', 'rgb(139, 125, 123)': 'MistyRose4', 'rgb(148, 148, 148)': 'grey58', 'rgb(102, 205, 170)': 'MediumAquamarine', 'rgb(139, 54, 38)': 'tomato4', 'rgb(255, 181, 197)': 'pink1', 'rgb(173, 216, 230)': 'LightBlue', 'rgb(46, 46, 46)': 'grey18', 'rgb(164, 211, 238)': 'LightSkyBlue2', 'rgb(232, 232, 232)': 'grey91', 'rgb(105, 105, 105)': 'grey41', 'rgb(205, 193, 197)': 'LavenderBlush3', 'rgb(20, 20, 20)': 'grey8', 'rgb(139, 139, 131)': 'ivory4', 'rgb(255, 114, 86)': 'coral1', 'rgb(0, 104, 139)': 'DeepSkyBlue4', 'rgb(205, 41, 144)': 'maroon3', 'rgb(127, 127, 127)': 'grey50', 'rgb(255, 239, 213)': 'PapayaWhip', 'rgb(238, 238, 209)': 'LightYellow2', 'rgb(242, 242, 242)': 'grey95', 'rgb(240, 230, 140)': 'khaki', 'rgb(238, 207, 161)': 'NavajoWhite2', 'rgb(25, 25, 112)': 'MidnightBlue', 'rgb(205, 79, 57)': 'tomato3', 'rgb(84, 84, 84)': 'grey33', 'rgb(110, 139, 61)': 'DarkOliveGreen4', 'rgb(255, 215, 0)': 'gold1', 'rgb(143, 143, 143)': 'grey56', 'rgb(238, 59, 59)': 'brown2', 'rgb(166, 166, 166)': 'grey65', 'rgb(255, 160, 122)': 'LightSalmon1', 'rgb(51, 51, 51)': 'grey20', 'rgb(224, 238, 224)': 'honeydew2', 'rgb(139, 121, 94)': 'NavajoWhite4', 'rgb(110, 123, 139)': 'LightSteelBlue4', 'rgb(26, 26, 26)': 'grey10', 'rgb(238, 99, 99)': 'IndianRed2', 'rgb(178, 58, 238)': 'DarkOrchid2', 'rgb(238, 197, 145)': 'burlywood2', 'rgb(171, 171, 171)': 'grey67', 'rgb(237, 237, 237)': 'grey93', 'rgb(238, 0, 0)': 'red2', 'rgb(139, 71, 38)': 'sienna4', 'rgb(82, 139, 139)': 'DarkSlateGray4', 'rgb(139, 105, 105)': 'RosyBrown4', 'rgb(160, 32, 240)': 'purple', 'rgb(78, 238, 148)': 'SeaGreen2', 'rgb(205, 85, 85)': 'IndianRed3', 'rgb(205, 181, 205)': 'thistle3', 'rgb(184, 184, 184)': 'grey72', 'rgb(255, 222, 173)': 'NavajoWhite1', 'rgb(8, 8, 8)': 'grey3', 'rgb(255, 248, 220)': 'cornsilk1', 'rgb(175, 238, 238)': 'PaleTurquoise', 'rgb(255, 130, 71)': 'sienna1', 'rgb(13, 13, 13)': 'grey5', 'rgb(0, 139, 139)': 'DarkCyan', 'rgb(187, 255, 255)': 'PaleTurquoise1', 'rgb(147, 112, 219)': 'MediumPurple', 'rgb(0, 128, 0)': 'green', 'rgb(238, 64, 0)': 'OrangeRed2', 'rgb(238, 18, 137)': 'DeepPink2', 'rgb(54, 100, 139)': 'SteelBlue4', 'rgb(176, 176, 176)': 'grey69', 'rgb(0, 0, 238)': 'blue2', 'rgb(238, 154, 0)': 'orange2', 'rgb(188, 143, 143)': 'RosyBrown', 'rgb(240, 255, 255)': 'azure1', 'rgb(191, 62, 255)': 'DarkOrchid1', 'rgb(171, 130, 255)': 'MediumPurple1', 'rgb(205, 173, 0)': 'gold3', 'rgb(255, 48, 48)': 'firebrick1', 'rgb(122, 197, 205)': 'CadetBlue3', 'rgb(139, 87, 66)': 'LightSalmon4', 'rgb(204, 204, 204)': 'grey80', 'rgb(205, 129, 98)': 'LightSalmon3', 'rgb(224, 224, 224)': 'grey88', 'rgb(218, 165, 32)': 'goldenrod', 'rgb(205, 145, 158)': 'pink3', 'rgb(139, 62, 47)': 'coral4', 'rgb(238, 122, 233)': 'orchid2', 'rgb(152, 251, 152)': 'PaleGreen', 'rgb(240, 128, 128)': 'LightCoral', 'rgb(162, 205, 90)': 'DarkOliveGreen3', 'rgb(79, 79, 79)': 'grey31', 'rgb(169, 169, 169)': 'DarkGrey', 'rgb(255, 127, 0)': 'DarkOrange1', 'rgb(139, 28, 98)': 'maroon4', 'rgb(253, 245, 230)': 'OldLace', 'rgb(141, 238, 238)': 'DarkSlateGray2', 'rgb(238, 213, 210)': 'MistyRose2', 'rgb(208, 32, 144)': 'VioletRed', 'rgb(0, 205, 0)': 'green3', 'rgb(139, 71, 137)': 'orchid4', 'rgb(205, 201, 165)': 'LemonChiffon3', 'rgb(0, 229, 238)': 'turquoise2', 'rgb(205, 140, 149)': 'LightPink3', 'rgb(124, 205, 124)': 'PaleGreen3', 'rgb(220, 220, 220)': 'gainsboro', 'rgb(238, 229, 222)': 'seashell2', 'rgb(87, 87, 87)': 'grey34', 'rgb(70, 130, 180)': 'SteelBlue', 'rgb(205, 104, 137)': 'PaleVioletRed3', 'rgb(15, 15, 15)': 'grey6', 'rgb(38, 38, 38)': 'grey15', 'rgb(238, 180, 34)': 'goldenrod2', 'rgb(205, 200, 177)': 'cornsilk3', 'rgb(238, 210, 238)': 'thistle2', 'rgb(150, 150, 150)': 'grey59', 'rgb(0, 255, 127)': 'SpringGreen1', 'rgb(139, 126, 102)': 'wheat4', 'rgb(205, 175, 149)': 'PeachPuff3', 'rgb(152, 245, 255)': 'CadetBlue1', 'rgb(0, 250, 154)': 'MediumSpringGreen', 'rgb(120, 120, 120)': 'grey47', 'rgb(238, 118, 33)': 'chocolate2', 'rgb(128, 128, 0)': 'olive', 'rgb(139, 137, 112)': 'LemonChiffon4', 'rgb(107, 142, 35)': 'OliveDrab', 'rgb(219, 219, 219)': 'grey86', 'rgb(205, 205, 0)': 'yellow3', 'rgb(180, 205, 205)': 'LightCyan3', 'rgb(115, 115, 115)': 'grey45', 'rgb(131, 139, 139)': 'azure4', 'rgb(0, 178, 238)': 'DeepSkyBlue2', 'rgb(94, 94, 94)': 'grey37', 'rgb(135, 135, 135)': 'grey53', 'rgb(145, 145, 145)': 'grey57', 'rgb(205, 0, 0)': 'red3', 'rgb(16, 78, 139)': 'DodgerBlue4', 'rgb(133, 133, 133)': 'grey52', 'rgb(205, 38, 38)': 'firebrick3', 'rgb(255, 193, 193)': 'RosyBrown1', 'rgb(205, 183, 181)': 'MistyRose3', 'rgb(122, 55, 139)': 'MediumOrchid4', 'rgb(154, 192, 205)': 'LightBlue3', 'rgb(191, 239, 255)': 'LightBlue1', 'rgb(219, 112, 147)': 'PaleVioletRed', 'rgb(121, 205, 205)': 'DarkSlateGray3', 'rgb(238, 232, 170)': 'PaleGoldenrod', 'rgb(102, 205, 0)': 'chartreuse3', 'rgb(255, 185, 15)': 'DarkGoldenrod1', 'rgb(176, 196, 222)': 'LightSteelBlue', 'rgb(255, 236, 139)': 'LightGoldenrod1', 'rgb(205, 105, 201)': 'orchid3', 'rgb(250, 250, 250)': 'grey98', 'rgb(245, 245, 220)': 'beige', 'rgb(238, 106, 80)': 'coral2', 'rgb(64, 64, 64)': 'grey25', 'rgb(238, 220, 130)': 'LightGoldenrod2', 'white': 'none', 'rgb(125, 38, 205)': 'purple3', 'rgb(205, 133, 63)': 'tan3', 'rgb(139, 102, 139)': 'plum4', 'rgb(71, 71, 71)': 'grey28', 'rgb(118, 238, 0)': 'chartreuse2', 'rgb(192, 255, 62)': 'OliveDrab1', 'rgb(0, 0, 139)': 'DarkBlue', 'rgb(248, 248, 255)': 'GhostWhite', 'rgb(3, 3, 3)': 'grey1', 'rgb(176, 226, 255)': 'LightSkyBlue1', 'rgb(139, 105, 20)': 'goldenrod4', 'rgb(255, 105, 180)': 'HotPink', 'rgb(124, 252, 0)': 'LawnGreen', 'rgb(238, 238, 224)': 'ivory2', 'rgb(139, 69, 19)': 'SaddleBrown', 'rgb(139, 0, 139)': 'magenta4', 'rgb(31, 31, 31)': 'grey12', 'rgb(159, 182, 205)': 'SlateGray3', 'rgb(181, 181, 181)': 'grey71', 'rgb(0, 245, 255)': 'turquoise1', 'rgb(105, 139, 105)': 'DarkSeaGreen4', 'rgb(159, 121, 238)': 'MediumPurple2', 'rgb(205, 198, 115)': 'khaki3', 'rgb(77, 77, 77)': 'grey30', 'rgb(139, 90, 0)': 'orange4', 'rgb(122, 122, 122)': 'grey48', 'rgb(224, 238, 238)': 'azure2', 'rgb(50, 129, 75)': 'MediumForestGreen', 'rgb(202, 225, 255)': 'LightSteelBlue1', 'rgb(255, 110, 180)': 'HotPink1', 'rgb(238, 48, 167)': 'maroon2', 'rgb(220, 20, 60)': 'crimson', 'rgb(127, 255, 212)': 'aquamarine1', 'rgb(205, 179, 139)': 'NavajoWhite3', 'rgb(28, 28, 28)': 'grey11', 'rgb(229, 229, 229)': 'grey90', 'rgb(47, 79, 79)': 'DarkSlateGrey', 'rgb(59, 59, 59)': 'grey23', 'rgb(69, 139, 116)': 'aquamarine4', 'rgb(255, 211, 155)': 'burlywood1', 'rgb(139, 119, 101)': 'PeachPuff4', 'rgb(238, 230, 133)': 'khaki2', 'rgb(10, 10, 10)': 'grey4', 'rgb(144, 238, 144)': 'PaleGreen2', 'rgb(99, 99, 99)': 'grey39', 'rgb(188, 238, 104)': 'DarkOliveGreen2', 'rgb(255, 231, 186)': 'wheat1', 'rgb(154, 50, 205)': 'DarkOrchid3', 'rgb(46, 139, 87)': 'SeaGreen4', 'rgb(145, 44, 238)': 'purple2', 'rgb(255, 240, 245)': 'LavenderBlush1', 'rgb(67, 110, 238)': 'RoyalBlue2', 'rgb(238, 180, 180)': 'RosyBrown2', 'rgb(108, 166, 205)': 'SkyBlue3', 'rgb(173, 173, 173)': 'grey68', 'rgb(176, 48, 96)': 'maroon', 'rgb(23, 23, 23)': 'grey9', 'rgb(138, 138, 138)': 'grey54', 'rgb(139, 137, 137)': 'snow4', 'rgb(209, 193, 102)': 'MediumGoldenRod', 'rgb(139, 123, 139)': 'thistle4', 'rgb(154, 255, 154)': 'PaleGreen1', 'rgb(130, 130, 130)': 'grey51', 'rgb(255, 99, 71)': 'tomato1', 'rgb(205, 183, 158)': 'bisque3', 'rgb(205, 102, 29)': 'chocolate3', 'rgb(128, 0, 0)': 'maroon', 'rgb(0, 0, 255)': 'blue1', 'rgb(255, 52, 179)': 'maroon1', 'rgb(250, 235, 215)': 'AntiqueWhite', 'rgb(163, 163, 163)': 'grey64', 'rgb(56, 56, 56)': 'grey22', 'rgb(85, 26, 139)': 'purple4', 'rgb(139, 58, 58)': 'IndianRed4', 'rgb(168, 168, 168)': 'grey66', 'rgb(255, 225, 255)': 'thistle1', 'rgb(125, 125, 125)': 'grey49', 'rgb(131, 111, 255)': 'SlateBlue1', 'rgb(95, 158, 160)': 'CadetBlue', 'rgb(165, 42, 42)': 'brown', 'rgb(245, 255, 250)': 'MintCream', 'rgb(255, 218, 185)': 'PeachPuff1', 'rgb(255, 228, 225)': 'MistyRose1', 'rgb(216, 191, 216)': 'thistle', 'rgb(139, 101, 8)': 'DarkGoldenrod4', 'rgb(205, 104, 57)': 'sienna3', 'rgb(255, 131, 250)': 'orchid1', 'rgb(82, 82, 82)': 'grey32', 'rgb(117, 117, 117)': 'grey46', 'rgb(255, 165, 0)': 'orange1', 'rgb(255, 64, 64)': 'brown1', 'rgb(255, 165, 79)': 'tan1', 'rgb(205, 55, 0)': 'OrangeRed3', 'rgb(188, 210, 238)': 'LightSteelBlue2', 'rgb(238, 121, 159)': 'PaleVioletRed2', 'rgb(5, 5, 5)': 'grey2', 'rgb(217, 217, 217)': 'grey85', 'rgb(205, 186, 150)': 'wheat3', 'rgb(139, 131, 134)': 'LavenderBlush4', 'rgb(185, 211, 238)': 'SlateGray2', 'rgb(235, 235, 235)': 'grey92', 'rgb(230, 230, 250)': 'lavender', 'rgb(41, 41, 41)': 'grey16', 'rgb(205, 92, 92)': 'IndianRed', 'rgb(131, 139, 131)': 'honeydew4', 'rgb(123, 104, 238)': 'MediumSlateBlue', 'rgb(128, 0, 128)': 'purple', 'rgb(139, 26, 26)': 'firebrick4', 'rgb(141, 182, 205)': 'LightSkyBlue3', 'rgb(212, 212, 212)': 'grey83', 'rgb(238, 162, 173)': 'LightPink2', 'rgb(255, 255, 0)': 'yellow1', 'rgb(192, 192, 192)': 'silver', 'rgb(139, 71, 93)': 'PaleVioletRed4', 'rgb(0, 100, 0)': 'DarkGreen', 'rgb(139, 37, 0)': 'OrangeRed4', 'rgb(198, 226, 255)': 'SlateGray1', 'rgb(24, 116, 205)': 'DodgerBlue3', 'rgb(178, 34, 34)': 'firebrick', 'rgb(28, 134, 238)': 'DodgerBlue2', 'rgb(255, 0, 255)': 'magenta1', 'rgb(33, 33, 33)': 'grey13', 'rgb(209, 238, 238)': 'LightCyan2', 'rgb(255, 127, 80)': 'coral', 'rgb(0, 154, 205)': 'DeepSkyBlue3', 'rgb(255, 255, 224)': 'LightYellow1', 'rgb(75, 0, 130)': 'indigo', 'rgb(160, 82, 45)': 'sienna', 'rgb(138, 43, 226)': 'BlueViolet', 'rgb(238, 224, 229)': 'LavenderBlush2', 'rgb(106, 90, 205)': 'SlateBlue', 'rgb(227, 227, 227)': 'grey89', 'rgb(255, 250, 250)': 'snow1', 'rgb(255, 174, 185)': 'LightPink1', 'rgb(205, 0, 205)': 'magenta3', 'rgb(126, 126, 126)': 'gray', 'rgb(139, 10, 80)': 'DeepPink4', 'rgb(186, 85, 211)': 'MediumOrchid', 'rgb(205, 133, 0)': 'orange3', 'rgb(211, 211, 211)': 'LightGrey', 'rgb(69, 69, 69)': 'grey27', 'rgb(222, 222, 222)': 'grey87', 'rgb(221, 160, 221)': 'plum', 'rgb(255, 255, 240)': 'ivory1', 'rgb(112, 112, 112)': 'grey44', 'rgb(209, 95, 238)': 'MediumOrchid2', 'rgb(0, 255, 0)': 'lime', 'rgb(238, 233, 191)': 'LemonChiffon2', 'rgb(92, 92, 92)': 'grey36', 'rgb(205, 112, 84)': 'salmon3', 'rgb(255, 228, 196)': 'bisque1', 'rgb(255, 192, 203)': 'pink', 'rgb(238, 130, 238)': 'violet', 'rgb(122, 103, 238)': 'SlateBlue2', 'rgb(238, 121, 66)': 'sienna2', 'rgb(102, 139, 139)': 'PaleTurquoise4', 'rgb(250, 240, 230)': 'linen', 'rgb(247, 247, 247)': 'grey97', 'rgb(32, 178, 170)': 'LightSeaGreen', 'rgb(97, 97, 97)': 'grey38', 'rgb(150, 205, 205)': 'PaleTurquoise3', 'rgb(158, 158, 158)': 'grey62', 'rgb(238, 58, 140)': 'VioletRed2', 'rgb(255, 228, 181)': 'moccasin', 'rgb(0, 197, 205)': 'turquoise3', 'rgb(205, 96, 144)': 'HotPink3', 'rgb(205, 16, 118)': 'DeepPink3', 'rgb(240, 240, 240)': 'grey94', 'rgb(176, 224, 230)': 'PowderBlue', 'rgb(199, 21, 133)': 'MediumVioletRed', 'rgb(238, 203, 173)': 'PeachPuff2', 'rgb(173, 255, 47)': 'GreenYellow', 'rgb(238, 174, 238)': 'plum2', 'rgb(191, 191, 191)': 'grey75', 'rgb(222, 184, 135)': 'burlywood', 'rgb(18, 18, 18)': 'grey7', 'rgb(83, 134, 139)': 'CadetBlue4', 'rgb(139, 134, 130)': 'seashell4', 'rgb(142, 229, 238)': 'CadetBlue2', 'rgb(0, 139, 0)': 'green4', 'rgb(240, 255, 240)': 'honeydew1', 'rgb(104, 34, 139)': 'DarkOrchid4', 'rgb(193, 255, 193)': 'DarkSeaGreen1', 'rgb(0, 0, 0)': 'opaque', 'rgb(139, 58, 98)': 'HotPink4', 'rgb(89, 89, 89)': 'grey35', 'rgb(72, 118, 255)': 'RoyalBlue1', 'rgb(108, 123, 139)': 'SlateGray4', 'rgb(255, 20, 147)': 'DeepPink1', 'rgb(255, 250, 240)': 'FloralWhite', 'rgb(132, 112, 255)': 'LightSlateBlue', 'rgb(255, 62, 150)': 'VioletRed1', 'rgb(139, 125, 107)': 'bisque4', 'rgb(64, 224, 208)': 'turquoise', 'rgb(148, 0, 211)': 'DarkViolet', 'rgb(238, 106, 167)': 'HotPink2', 'rgb(238, 44, 44)': 'firebrick2', 'rgb(72, 209, 204)': 'MediumTurquoise', 'rgb(205, 155, 29)': 'goldenrod3', 'rgb(139, 0, 0)': 'red4', 'rgb(238, 92, 66)': 'tomato2', 'rgb(238, 216, 174)': 'wheat2', 'rgb(65, 105, 225)': 'RoyalBlue', 'rgb(0, 205, 102)': 'SpringGreen3', 'rgb(96, 123, 139)': 'LightSkyBlue4', 'rgb(210, 180, 140)': 'tan', 'rgb(135, 206, 255)': 'SkyBlue1', 'rgb(252, 252, 252)': 'grey99', 'rgb(61, 61, 61)': 'grey24', 'rgb(205, 102, 0)': 'DarkOrange3', 'rgb(58, 95, 205)': 'RoyalBlue3', 'rgb(30, 144, 255)': 'DodgerBlue1', 'rgb(245, 245, 245)': 'WhiteSmoke', 'rgb(255, 130, 171)': 'PaleVioletRed1', 'rgb(60, 179, 113)': 'MediumSeaGreen', 'rgb(139, 139, 122)': 'LightYellow4', 'rgb(139, 136, 120)': 'cornsilk4', 'rgb(139, 34, 82)': 'VioletRed4', 'rgb(238, 223, 204)': 'AntiqueWhite2', 'rgb(238, 213, 183)': 'bisque2', 'rgb(250, 250, 210)': 'LightGoldenrodYellow', 'rgb(255, 250, 205)': 'LemonChiffon1', 'rgb(39, 64, 139)': 'RoyalBlue4', 'rgb(84, 139, 84)': 'PaleGreen4', 'rgb(238, 221, 130)': 'LightGoldenrod', 'rgb(139, 95, 101)': 'LightPink4', 'rgb(210, 105, 30)': 'chocolate', 'rgb(139, 139, 0)': 'yellow4', 'rgb(238, 149, 114)': 'LightSalmon2', 'rgb(0, 255, 255)': 'cyan1', 'rgb(71, 60, 139)': 'SlateBlue4', 'rgb(207, 207, 207)': 'grey81', 'rgb(153, 50, 204)': 'DarkOrchid', 'rgb(36, 36, 36)': 'grey14', 'rgb(153, 153, 153)': 'grey60', 'rgb(250, 128, 114)': 'salmon', 'rgb(174, 238, 238)': 'PaleTurquoise2', 'rgb(139, 117, 0)': 'gold4', 'rgb(139, 35, 35)': 'brown4', 'rgb(92, 172, 238)': 'SteelBlue2', 'rgb(48, 48, 48)': 'grey19', 'rgb(139, 129, 76)': 'LightGoldenrod4', 'rgb(72, 61, 139)': 'DarkSlateBlue', 'rgb(238, 169, 184)': 'pink2', 'rgb(69, 139, 0)': 'chartreuse4', 'rgb(0, 128, 128)': 'teal', 'rgb(255, 255, 255)': 'grey100', 'rgb(244, 164, 96)': 'SandyBrown', 'rgb(154, 205, 50)': 'YellowGreen', 'rgb(126, 192, 238)': 'SkyBlue2', 'rgb(209, 209, 209)': 'grey82', 'rgb(74, 112, 139)': 'SkyBlue4', 'rgb(112, 128, 144)': 'SlateGrey', 'rgb(105, 139, 34)': 'OliveDrab4', 'rgb(110, 110, 110)': 'grey43', 'rgb(179, 179, 179)': 'grey70', 'rgb(205, 50, 120)': 'VioletRed3', 'rgb(119, 136, 153)': 'LightSlateGrey', 'rgb(139, 115, 85)': 'burlywood4', 'rgb(255, 193, 37)': 'goldenrod1', 'rgb(224, 255, 255)': 'LightCyan1', 'rgb(66, 66, 66)': 'grey26', 'rgb(193, 205, 193)': 'honeydew3', 'rgb(0, 191, 255)': 'DeepSkyBlue1', 'rgb(205, 205, 193)': 'ivory3', 'rgb(238, 238, 0)': 'yellow2', 'rgb(255, 140, 105)': 'salmon1', 'rgb(135, 206, 235)': 'SkyBlue', 'rgb(238, 201, 0)': 'gold2', 'rgb(238, 232, 205)': 'cornsilk2', 'rgb(0, 0, 205)': 'MediumBlue', 'rgb(238, 130, 98)': 'salmon2', 'rgb(155, 48, 255)': 'purple1', 'rgb(43, 43, 43)': 'grey17', 'rgb(240, 248, 255)': 'AliceBlue', 'rgb(238, 0, 238)': 'magenta2', 'rgb(128, 128, 128)': 'fractal', 'rgb(193, 205, 205)': 'azure3', 'rgb(50, 205, 50)': 'LimeGreen', 'rgb(201, 201, 201)': 'grey79', 'rgb(255, 239, 219)': 'AntiqueWhite1', 'rgb(196, 196, 196)': 'grey77', 'rgb(135, 206, 250)': 'LightSkyBlue', 'rgb(139, 134, 78)': 'khaki4', 'rgb(79, 148, 205)': 'SteelBlue3', 'rgb(74, 74, 74)': 'grey29', 'rgb(255, 0, 0)': 'red1', 'rgb(233, 150, 122)': 'DarkSalmon', 'rgb(205, 190, 112)': 'LightGoldenrod3', 'rgb(84, 255, 159)': 'SeaGreen1', 'rgb(205, 170, 125)': 'burlywood3', 'rgb(127, 255, 0)': 'chartreuse1', 'rgb(102, 102, 102)': 'grey40', 'rgb(180, 238, 180)': 'DarkSeaGreen2', 'rgb(122, 139, 139)': 'LightCyan4', 'rgb(255, 140, 0)': 'DarkOrange', 'rgb(205, 197, 191)': 'seashell3', 'rgb(140, 140, 140)': 'grey55', 'rgb(199, 199, 199)': 'grey78', 'rgb(202, 255, 112)': 'DarkOliveGreen1', 'rgb(255, 245, 238)': 'seashell1', 'rgb(189, 183, 107)': 'DarkKhaki', 'rgb(0, 238, 118)': 'SpringGreen2', 'rgb(180, 82, 205)': 'MediumOrchid3', 'rgb(255, 127, 36)': 'chocolate1', 'rgb(161, 161, 161)': 'grey63'};
+var hextorgb = {'#EE1289': 'rgb(238, 18, 137)', '#EE8262': 'rgb(238, 130, 98)', '#C4C4C4': 'rgb(196, 196, 196)', '#556B2F': 'rgb(85, 107, 47)', '#FF8C00': 'rgb(255, 140, 0)', '#8B7B8B': 'rgb(139, 123, 139)', '#0000EE': 'rgb(0, 0, 238)', '#EED5D2': 'rgb(238, 213, 210)', '#BA55D3': 'rgb(186, 85, 211)', '#FFF5EE': 'rgb(255, 245, 238)', '#912CEE': 'rgb(145, 44, 238)', '#2F4F4F': 'rgb(47, 79, 79)', '#32814B': 'rgb(50, 129, 75)', '#D15FEE': 'rgb(209, 95, 238)', '#F0FFF0': 'rgb(240, 255, 240)', '#B23AEE': 'rgb(178, 58, 238)', '#8B7765': 'rgb(139, 119, 101)', '#3D3D3D': 'rgb(61, 61, 61)', '#54FF9F': 'rgb(84, 255, 159)', '#636363': 'rgb(99, 99, 99)', '#8B8386': 'rgb(139, 131, 134)', '#FF4040': 'rgb(255, 64, 64)', '#EEA9B8': 'rgb(238, 169, 184)', '#C2C2C2': 'rgb(194, 194, 194)', '#800080': 'rgb(128, 0, 128)', '#545454': 'rgb(84, 84, 84)', '#EE3A8C': 'rgb(238, 58, 140)', '#8A8A8A': 'rgb(138, 138, 138)', '#FF00FF': 'rgb(255, 0, 255)', '#436EEE': 'rgb(67, 110, 238)', '#8B864E': 'rgb(139, 134, 78)', '#0A0A0A': 'rgb(10, 10, 10)', '#808000': 'rgb(128, 128, 0)', '#E3E3E3': 'rgb(227, 227, 227)', '#1874CD': 'rgb(24, 116, 205)', '#BCD2EE': 'rgb(188, 210, 238)', '#A9A9A9': 'rgb(169, 169, 169)', '#F4A460': 'rgb(244, 164, 96)', '#FF3030': 'rgb(255, 48, 48)', '#FFEBCD': 'rgb(255, 235, 205)', '#B0C4DE': 'rgb(176, 196, 222)', '#00CDCD': 'rgb(0, 205, 205)', '#C0FF3E': 'rgb(192, 255, 62)', '#FFD700': 'rgb(255, 215, 0)', '#242424': 'rgb(36, 36, 36)', '#8B2252': 'rgb(139, 34, 82)', '#4EEE94': 'rgb(78, 238, 148)', '#CD3278': 'rgb(205, 50, 120)', '#00E5EE': 'rgb(0, 229, 238)', '#CD853F': 'rgb(205, 133, 63)', '#ADD8E6': 'rgb(173, 216, 230)', '#C7C7C7': 'rgb(199, 199, 199)', '#CD2990': 'rgb(205, 41, 144)', '#EEE5DE': 'rgb(238, 229, 222)', '#66CD00': 'rgb(102, 205, 0)', '#878787': 'rgb(135, 135, 135)', '#FFA54F': 'rgb(255, 165, 79)', '#A2B5CD': 'rgb(162, 181, 205)', '#BC8F8F': 'rgb(188, 143, 143)', '#C9C9C9': 'rgb(201, 201, 201)', '#D1C166': 'rgb(209, 193, 102)', '#8B2323': 'rgb(139, 35, 35)', '#B3EE3A': 'rgb(179, 238, 58)', '#EEEED1': 'rgb(238, 238, 209)', '#AEEEEE': 'rgb(174, 238, 238)', '#BDBDBD': 'rgb(189, 189, 189)', '#FF7F00': 'rgb(255, 127, 0)', '#FFC0CB': 'rgb(255, 192, 203)', '#EE3B3B': 'rgb(238, 59, 59)', '#CDC8B1': 'rgb(205, 200, 177)', '#CDB38B': 'rgb(205, 179, 139)', '#CDBA96': 'rgb(205, 186, 150)', '#B4EEB4': 'rgb(180, 238, 180)', '#40E0D0': 'rgb(64, 224, 208)', '#8B795E': 'rgb(139, 121, 94)', '#27408B': 'rgb(39, 64, 139)', '#424242': 'rgb(66, 66, 66)', '#CDB7B5': 'rgb(205, 183, 181)', '#CAE1FF': 'rgb(202, 225, 255)', '#F0FFFF': 'rgb(240, 255, 255)', '#2E8B57': 'rgb(46, 139, 87)', '#87CEEB': 'rgb(135, 206, 235)', '#CD00CD': 'rgb(205, 0, 205)', '#CDAA7D': 'rgb(205, 170, 125)', '#836FFF': 'rgb(131, 111, 255)', '#ABABAB': 'rgb(171, 171, 171)', '#EEB4B4': 'rgb(238, 180, 180)', '#8B7355': 'rgb(139, 115, 85)', '#F0E68C': 'rgb(240, 230, 140)', '#CDCDB4': 'rgb(205, 205, 180)', '#4D4D4D': 'rgb(77, 77, 77)', '#B8B8B8': 'rgb(184, 184, 184)', '#B4CDCD': 'rgb(180, 205, 205)', '#008B8B': 'rgb(0, 139, 139)', '#828282': 'rgb(130, 130, 130)', '#00EEEE': 'rgb(0, 238, 238)', '#708090': 'rgb(112, 128, 144)', '#9AFF9A': 'rgb(154, 255, 154)', '#FFA07A': 'rgb(255, 160, 122)', '#EBEBEB': 'rgb(235, 235, 235)', '#FFB5C5': 'rgb(255, 181, 197)', '#00688B': 'rgb(0, 104, 139)', '#DBDBDB': 'rgb(219, 219, 219)', '#191970': 'rgb(25, 25, 112)', '#FF83FA': 'rgb(255, 131, 250)', '#A1A1A1': 'rgb(161, 161, 161)', '#838B8B': 'rgb(131, 139, 139)', '#FFA500': 'rgb(255, 165, 0)', '#00FF7F': 'rgb(0, 255, 127)', '#EEAD0E': 'rgb(238, 173, 14)', '#B03060': 'rgb(176, 48, 96)', '#96CDCD': 'rgb(150, 205, 205)', '#CD3333': 'rgb(205, 51, 51)', '#CDBE70': 'rgb(205, 190, 112)', '#7CCD7C': 'rgb(124, 205, 124)', '#97FFFF': 'rgb(151, 255, 255)', '#DAA520': 'rgb(218, 165, 32)', '#8B3A3A': 'rgb(139, 58, 58)', '#6B6B6B': 'rgb(107, 107, 107)', '#FFFAF0': 'rgb(255, 250, 240)', '#757575': 'rgb(117, 117, 117)', '#BFBFBF': 'rgb(191, 191, 191)', '#00EE76': 'rgb(0, 238, 118)', '#FFFAFA': 'rgb(255, 250, 250)', '#6E8B3D': 'rgb(110, 139, 61)', '#EEE685': 'rgb(238, 230, 133)', '#FF3E96': 'rgb(255, 62, 150)', '#EE0000': 'rgb(238, 0, 0)', '#FDF5E6': 'rgb(253, 245, 230)', '#E066FF': 'rgb(224, 102, 255)', '#8DB6CD': 'rgb(141, 182, 205)', '#FF7256': 'rgb(255, 114, 86)', '#7CFC00': 'rgb(124, 252, 0)', '#838B83': 'rgb(131, 139, 131)', '#BF3EFF': 'rgb(191, 62, 255)', '#8B6914': 'rgb(139, 105, 20)', '#00CD66': 'rgb(0, 205, 102)', '#525252': 'rgb(82, 82, 82)', '#A4D3EE': 'rgb(164, 211, 238)', '#00868B': 'rgb(0, 134, 139)', '#8DEEEE': 'rgb(141, 238, 238)', '#787878': 'rgb(120, 120, 120)', '#8B1C62': 'rgb(139, 28, 98)', '#616161': 'rgb(97, 97, 97)', '#4876FF': 'rgb(72, 118, 255)', '#9F79EE': 'rgb(159, 121, 238)', '#212121': 'rgb(33, 33, 33)', '#C1CDC1': 'rgb(193, 205, 193)', '#CD69C9': 'rgb(205, 105, 201)', '#E0EEEE': 'rgb(224, 238, 238)', '#8B7E66': 'rgb(139, 126, 102)', '#8A2BE2': 'rgb(138, 43, 226)', '#CDCD00': 'rgb(205, 205, 0)', '#EE5C42': 'rgb(238, 92, 66)', '#6E6E6E': 'rgb(110, 110, 110)', '#EEAEEE': 'rgb(238, 174, 238)', '#DC143C': 'rgb(220, 20, 60)', '#CD919E': 'rgb(205, 145, 158)', '#528B8B': 'rgb(82, 139, 139)', '#AFEEEE': 'rgb(175, 238, 238)', '#CD6889': 'rgb(205, 104, 137)', '#E6E6FA': 'rgb(230, 230, 250)', '#EE00EE': 'rgb(238, 0, 238)', '#999999': 'rgb(153, 153, 153)', '#F0F8FF': 'rgb(240, 248, 255)', '#595959': 'rgb(89, 89, 89)', '#FF7F50': 'rgb(255, 127, 80)', '#A6A6A6': 'rgb(166, 166, 166)', '#DEDEDE': 'rgb(222, 222, 222)', '#262626': 'rgb(38, 38, 38)', '#6CA6CD': 'rgb(108, 166, 205)', '#8B8B83': 'rgb(139, 139, 131)', '#474747': 'rgb(71, 71, 71)', '#F7F7F7': 'rgb(247, 247, 247)', '#548B54': 'rgb(84, 139, 84)', '#48D1CC': 'rgb(72, 209, 204)', '#C1CDCD': 'rgb(193, 205, 205)', '#E0EEE0': 'rgb(224, 238, 224)', '#FFB90F': 'rgb(255, 185, 15)', '#FFD39B': 'rgb(255, 211, 155)', '#8B5A2B': 'rgb(139, 90, 43)', '#EEE9BF': 'rgb(238, 233, 191)', '#BCEE68': 'rgb(188, 238, 104)', '#8470FF': 'rgb(132, 112, 255)', '#8B0A50': 'rgb(139, 10, 80)', '#FFF68F': 'rgb(255, 246, 143)', '#EEA2AD': 'rgb(238, 162, 173)', '#CD5B45': 'rgb(205, 91, 69)', '#7FFF00': 'rgb(127, 255, 0)', '#8B8378': 'rgb(139, 131, 120)', '#9BCD9B': 'rgb(155, 205, 155)', '#454545': 'rgb(69, 69, 69)', '#D1D1D1': 'rgb(209, 209, 209)', '#EEE8AA': 'rgb(238, 232, 170)', '#668B8B': 'rgb(102, 139, 139)', '#EE30A7': 'rgb(238, 48, 167)', '#FFC125': 'rgb(255, 193, 37)', '#8B475D': 'rgb(139, 71, 93)', '#D8BFD8': 'rgb(216, 191, 216)', '#404040': 'rgb(64, 64, 64)', '#EEEE00': 'rgb(238, 238, 0)', '#CDB5CD': 'rgb(205, 181, 205)', '#00C5CD': 'rgb(0, 197, 205)', '#00CED1': 'rgb(0, 206, 209)', '#CFCFCF': 'rgb(207, 207, 207)', '#008B00': 'rgb(0, 139, 0)', '#7A7A7A': 'rgb(122, 122, 122)', '#B8860B': 'rgb(184, 134, 11)', '#1C86EE': 'rgb(28, 134, 238)', '#8B5742': 'rgb(139, 87, 66)', '#1A1A1A': 'rgb(26, 26, 26)', '#8B008B': 'rgb(139, 0, 139)', '#0F0F0F': 'rgb(15, 15, 15)', '#CD3700': 'rgb(205, 55, 0)', '#7F7F7F': 'rgb(127, 127, 127)', '#FF6EB4': 'rgb(255, 110, 180)', '#6959CD': 'rgb(105, 89, 205)', '#90EE90': 'rgb(144, 238, 144)', '#8B4789': 'rgb(139, 71, 137)', '#EE7AE9': 'rgb(238, 122, 233)', '#8968CD': 'rgb(137, 104, 205)', '#080808': 'rgb(8, 8, 8)', '#CDC9C9': 'rgb(205, 201, 201)', '#BDB76B': 'rgb(189, 183, 107)', '#9370DB': 'rgb(147, 112, 219)', '#EEDC82': 'rgb(238, 220, 130)', '#3CB371': 'rgb(60, 179, 113)', '#F5FFFA': 'rgb(245, 255, 250)', '#303030': 'rgb(48, 48, 48)', '#B9D3EE': 'rgb(185, 211, 238)', '#575757': 'rgb(87, 87, 87)', '#F5F5DC': 'rgb(245, 245, 220)', '#BABABA': 'rgb(186, 186, 186)', '#0000CD': 'rgb(0, 0, 205)', '#FF8247': 'rgb(255, 130, 71)', '#F2F2F2': 'rgb(242, 242, 242)', '#EED5B7': 'rgb(238, 213, 183)', '#FFEC8B': 'rgb(255, 236, 139)', '#EE7600': 'rgb(238, 118, 0)', '#8B636C': 'rgb(139, 99, 108)', '#8B814C': 'rgb(139, 129, 76)', '#FFE4B5': 'rgb(255, 228, 181)', '#4F94CD': 'rgb(79, 148, 205)', '#CDAD00': 'rgb(205, 173, 0)', '#CD5555': 'rgb(205, 85, 85)', '#8B7500': 'rgb(139, 117, 0)', '#473C8B': 'rgb(71, 60, 139)', '#B0E0E6': 'rgb(176, 224, 230)', '#FFFF00': 'rgb(255, 255, 0)', '#CD96CD': 'rgb(205, 150, 205)', '#006400': 'rgb(0, 100, 0)', '#FAFAFA': 'rgb(250, 250, 250)', '#53868B': 'rgb(83, 134, 139)', '#8B4513': 'rgb(139, 69, 19)', '#98FB98': 'rgb(152, 251, 152)', '#63B8FF': 'rgb(99, 184, 255)', '#FFAEB9': 'rgb(255, 174, 185)', '#EE6A50': 'rgb(238, 106, 80)', '#87CEFF': 'rgb(135, 206, 255)', '#87CEFA': 'rgb(135, 206, 250)', '#ADFF2F': 'rgb(173, 255, 47)', '#008B45': 'rgb(0, 139, 69)', '#EE4000': 'rgb(238, 64, 0)', '#8B6969': 'rgb(139, 105, 105)', '#00008B': 'rgb(0, 0, 139)', '#DB7093': 'rgb(219, 112, 147)', '#7EC0EE': 'rgb(126, 192, 238)', '#3B3B3B': 'rgb(59, 59, 59)', '#8C8C8C': 'rgb(140, 140, 140)', '#5F9EA0': 'rgb(95, 158, 160)', '#EE799F': 'rgb(238, 121, 159)', '#CD6090': 'rgb(205, 96, 144)', '#8B8682': 'rgb(139, 134, 130)', '#458B74': 'rgb(69, 139, 116)', '#EECFA1': 'rgb(238, 207, 161)', '#76EE00': 'rgb(118, 238, 0)', '#000080': 'rgb(0, 0, 128)', '#228B22': 'rgb(34, 139, 34)', '#8B8B00': 'rgb(139, 139, 0)', '#B5B5B5': 'rgb(181, 181, 181)', '#CD950C': 'rgb(205, 149, 12)', '#EE82EE': 'rgb(238, 130, 238)', '#EDEDED': 'rgb(237, 237, 237)', '#F5DEB3': 'rgb(245, 222, 179)', '#3A5FCD': 'rgb(58, 95, 205)', '#00FA9A': 'rgb(0, 250, 154)', '#F0F0F0': 'rgb(240, 240, 240)', '#D1EEEE': 'rgb(209, 238, 238)', '#2E2E2E': 'rgb(46, 46, 46)', '#EEC591': 'rgb(238, 197, 145)', '#8B3E2F': 'rgb(139, 62, 47)', '#CD8162': 'rgb(205, 129, 98)', '#9AC0CD': 'rgb(154, 192, 205)', '#8B8989': 'rgb(139, 137, 137)', '#EED8AE': 'rgb(238, 216, 174)', '#551A8B': 'rgb(85, 26, 139)', '#919191': 'rgb(145, 145, 145)', '#949494': 'rgb(148, 148, 148)', '#778899': 'rgb(119, 136, 153)', '#FFFACD': 'rgb(255, 250, 205)', '#458B00': 'rgb(69, 139, 0)', '#008000': 'rgb(0, 128, 0)', '#FFFFF0': 'rgb(255, 255, 240)', '#E0E0E0': 'rgb(224, 224, 224)', '#EEB422': 'rgb(238, 180, 34)', '#A020F0': 'rgb(160, 32, 240)', '#5CACEE': 'rgb(92, 172, 238)', '#CD4F39': 'rgb(205, 79, 57)', '#CDC0B0': 'rgb(205, 192, 176)', '#6E7B8B': 'rgb(110, 123, 139)', '#9E9E9E': 'rgb(158, 158, 158)', '#CDC673': 'rgb(205, 198, 115)', '#104E8B': 'rgb(16, 78, 139)', '#E0FFFF': 'rgb(224, 255, 255)', '#FFFFFF': 'rgb(255, 255, 255)', '#6C7B8B': 'rgb(108, 123, 139)', '#FFC1C1': 'rgb(255, 193, 193)', '#D6D6D6': 'rgb(214, 214, 214)', '#8B4726': 'rgb(139, 71, 38)', '#CD9B1D': 'rgb(205, 155, 29)', '#FF6347': 'rgb(255, 99, 71)', '#FF34B3': 'rgb(255, 52, 179)', '#7D7D7D': 'rgb(125, 125, 125)', '#121212': 'rgb(18, 18, 18)', '#B0E2FF': 'rgb(176, 226, 255)', '#8B3A62': 'rgb(139, 58, 98)', '#CD5C5C': 'rgb(205, 92, 92)', '#4A4A4A': 'rgb(74, 74, 74)', '#B0B0B0': 'rgb(176, 176, 176)', '#D9D9D9': 'rgb(217, 217, 217)', '#A2CD5A': 'rgb(162, 205, 90)', '#8B0000': 'rgb(139, 0, 0)', '#FF6A6A': 'rgb(255, 106, 106)', '#CD6600': 'rgb(205, 102, 0)', '#FFEFDB': 'rgb(255, 239, 219)', '#E9967A': 'rgb(233, 150, 122)', '#EEE9E9': 'rgb(238, 233, 233)', '#D4D4D4': 'rgb(212, 212, 212)', '#383838': 'rgb(56, 56, 56)', '#7A67EE': 'rgb(122, 103, 238)', '#4169E1': 'rgb(65, 105, 225)', '#5E5E5E': 'rgb(94, 94, 94)', '#00F5FF': 'rgb(0, 245, 255)', '#FFEFD5': 'rgb(255, 239, 213)', '#CDAF95': 'rgb(205, 175, 149)', '#CCCCCC': 'rgb(204, 204, 204)', '#00BFFF': 'rgb(0, 191, 255)', '#CDB79E': 'rgb(205, 183, 158)', '#969696': 'rgb(150, 150, 150)', '#4F4F4F': 'rgb(79, 79, 79)', '#1E90FF': 'rgb(30, 144, 255)', '#FCFCFC': 'rgb(252, 252, 252)', '#EE2C2C': 'rgb(238, 44, 44)', '#8B6508': 'rgb(139, 101, 8)', '#696969': 'rgb(105, 105, 105)', '#FF7F24': 'rgb(255, 127, 36)', '#8FBC8F': 'rgb(143, 188, 143)', '#66CDAA': 'rgb(102, 205, 170)', '#6495ED': 'rgb(100, 149, 237)', '#0D0D0D': 'rgb(13, 13, 13)', '#EEE0E5': 'rgb(238, 224, 229)', '#666666': 'rgb(102, 102, 102)', '#B2DFEE': 'rgb(178, 223, 238)', '#B22222': 'rgb(178, 34, 34)', '#4B0082': 'rgb(75, 0, 130)', '#FF82AB': 'rgb(255, 130, 171)', '#AB82FF': 'rgb(171, 130, 255)', '#79CDCD': 'rgb(121, 205, 205)', '#FFE4C4': 'rgb(255, 228, 196)', '#DEB887': 'rgb(222, 184, 135)', '#5D478B': 'rgb(93, 71, 139)', '#8B3626': 'rgb(139, 54, 38)', '#FFFFE0': 'rgb(255, 255, 224)', '#FFE4E1': 'rgb(255, 228, 225)', '#171717': 'rgb(23, 23, 23)', '#EEDFCC': 'rgb(238, 223, 204)', '#9400D3': 'rgb(148, 0, 211)', '#BFEFFF': 'rgb(191, 239, 255)', '#8B7D6B': 'rgb(139, 125, 107)', '#FF8C69': 'rgb(255, 140, 105)', '#C6E2FF': 'rgb(198, 226, 255)', '#1C1C1C': 'rgb(28, 28, 28)', '#FF4500': 'rgb(255, 69, 0)', '#FFE7BA': 'rgb(255, 231, 186)', '#808080': 'rgb(128, 128, 128)', '#EE9572': 'rgb(238, 149, 114)', '#CD8500': 'rgb(205, 133, 0)', '#8B5A00': 'rgb(139, 90, 0)', '#9932CC': 'rgb(153, 50, 204)', '#EECBAD': 'rgb(238, 203, 173)', '#CD8C95': 'rgb(205, 140, 149)', '#292929': 'rgb(41, 41, 41)', '#CD1076': 'rgb(205, 16, 118)', '#7A378B': 'rgb(122, 55, 139)', '#FF0000': 'rgb(255, 0, 0)', '#698B22': 'rgb(105, 139, 34)', '#ADADAD': 'rgb(173, 173, 173)', '#EEE8CD': 'rgb(238, 232, 205)', '#DDA0DD': 'rgb(221, 160, 221)', '#7D26CD': 'rgb(125, 38, 205)', '#DA70D6': 'rgb(218, 112, 214)', '#DCDCDC': 'rgb(220, 220, 220)', '#68228B': 'rgb(104, 34, 139)', '#7B68EE': 'rgb(123, 104, 238)', '#000000': 'white', '#6B8E23': 'rgb(107, 142, 35)', '#FF69B4': 'rgb(255, 105, 180)', '#800000': 'rgb(128, 0, 0)', '#8B668B': 'rgb(139, 102, 139)', '#363636': 'rgb(54, 54, 54)', '#8B4500': 'rgb(139, 69, 0)', '#D3D3D3': 'rgb(211, 211, 211)', '#607B8B': 'rgb(96, 123, 139)', '#F08080': 'rgb(240, 128, 128)', '#CD9B9B': 'rgb(205, 155, 155)', '#76EEC6': 'rgb(118, 238, 198)', '#FAEBD7': 'rgb(250, 235, 215)', '#68838B': 'rgb(104, 131, 139)', '#7FFFD4': 'rgb(127, 255, 212)', '#C0C0C0': 'rgb(192, 192, 192)', '#EEDD82': 'rgb(238, 221, 130)', '#EE9A49': 'rgb(238, 154, 73)', '#4A708B': 'rgb(74, 112, 139)', '#008080': 'rgb(0, 128, 128)', '#7AC5CD': 'rgb(122, 197, 205)', '#98F5FF': 'rgb(152, 245, 255)', '#8B2500': 'rgb(139, 37, 0)', '#8F8F8F': 'rgb(143, 143, 143)', '#FFF0F5': 'rgb(255, 240, 245)', '#8B8970': 'rgb(139, 137, 112)', '#8B8878': 'rgb(139, 136, 120)', '#6A5ACD': 'rgb(106, 90, 205)', '#4682B4': 'rgb(70, 130, 180)', '#EEEEE0': 'rgb(238, 238, 224)', '#B3B3B3': 'rgb(179, 179, 179)', '#00FF00': 'rgb(0, 255, 0)', '#FFDEAD': 'rgb(255, 222, 173)', '#CD2626': 'rgb(205, 38, 38)', '#8B4C39': 'rgb(139, 76, 57)', '#9B30FF': 'rgb(155, 48, 255)', '#E5E5E5': 'rgb(229, 229, 229)', '#36648B': 'rgb(54, 100, 139)', '#9C9C9C': 'rgb(156, 156, 156)', '#F8F8FF': 'rgb(248, 248, 255)', '#333333': 'rgb(51, 51, 51)', '#5C5C5C': 'rgb(92, 92, 92)', '#737373': 'rgb(115, 115, 115)', '#EEC900': 'rgb(238, 201, 0)', '#FFE1FF': 'rgb(255, 225, 255)', '#C1FFC1': 'rgb(193, 255, 193)', '#CDC5BF': 'rgb(205, 197, 191)', '#A0522D': 'rgb(160, 82, 45)', '#8B5F65': 'rgb(139, 95, 101)', '#CDC1C5': 'rgb(205, 193, 197)', '#EE7621': 'rgb(238, 118, 33)', '#FFBBFF': 'rgb(255, 187, 255)', '#CD6839': 'rgb(205, 104, 57)', '#698B69': 'rgb(105, 139, 105)', '#050505': 'rgb(5, 5, 5)', '#CD661D': 'rgb(205, 102, 29)', '#FAFAD2': 'rgb(250, 250, 210)', '#CDCDC1': 'rgb(205, 205, 193)', '#FFF8DC': 'rgb(255, 248, 220)', '#A8A8A8': 'rgb(168, 168, 168)', '#B452CD': 'rgb(180, 82, 205)', '#D2B48C': 'rgb(210, 180, 140)', '#8EE5EE': 'rgb(142, 229, 238)', '#483D8B': 'rgb(72, 61, 139)', '#BBFFFF': 'rgb(187, 255, 255)', '#0000FF': 'rgb(0, 0, 255)', '#EE6AA7': 'rgb(238, 106, 167)', '#EE7942': 'rgb(238, 121, 66)', '#00CD00': 'rgb(0, 205, 0)', '#141414': 'rgb(20, 20, 20)', '#9ACD32': 'rgb(154, 205, 50)', '#C71585': 'rgb(199, 21, 133)', '#EE9A00': 'rgb(238, 154, 0)', '#CAFF70': 'rgb(202, 255, 112)', '#F5F5F5': 'rgb(245, 245, 245)', '#32CD32': 'rgb(50, 205, 50)', '#00EE00': 'rgb(0, 238, 0)', '#FFB6C1': 'rgb(255, 182, 193)', '#8B1A1A': 'rgb(139, 26, 26)', '#00B2EE': 'rgb(0, 178, 238)', '#20B2AA': 'rgb(32, 178, 170)', '#707070': 'rgb(112, 112, 112)', '#009ACD': 'rgb(0, 154, 205)', '#A52A2A': 'rgb(165, 42, 42)', '#EE6363': 'rgb(238, 99, 99)', '#FAF0E6': 'rgb(250, 240, 230)', '#8B7D7B': 'rgb(139, 125, 123)', '#9A32CD': 'rgb(154, 50, 205)', '#1F1F1F': 'rgb(31, 31, 31)', '#E8E8E8': 'rgb(232, 232, 232)', '#7E7E7E': 'rgb(126, 126, 126)', '#7A8B8B': 'rgb(122, 139, 139)', '#CD7054': 'rgb(205, 112, 84)', '#9FB6CD': 'rgb(159, 182, 205)', '#CDC9A5': 'rgb(205, 201, 165)', '#D02090': 'rgb(208, 32, 144)', '#00FFFF': 'rgb(0, 255, 255)', '#2B2B2B': 'rgb(43, 43, 43)', '#858585': 'rgb(133, 133, 133)', '#A3A3A3': 'rgb(163, 163, 163)', '#CD0000': 'rgb(205, 0, 0)', '#43CD80': 'rgb(67, 205, 128)', '#FA8072': 'rgb(250, 128, 114)', '#FFDAB9': 'rgb(255, 218, 185)', '#D2691E': 'rgb(210, 105, 30)', '#FF1493': 'rgb(255, 20, 147)', '#EED2EE': 'rgb(238, 210, 238)', '#030303': 'rgb(3, 3, 3)', '#8B8B7A': 'rgb(139, 139, 122)'};
+var color_values = ['#FFFAFA','#FFFAFA','#EEE9E9','#FFC1C1','#EEB4B4','#CDC9C9','#F08080','#FF6A6A','#CD9B9B','#EE6363','#BC8F8F','#FF4040','#FF3030','#EE3B3B','#CD5C5C','#CD5555','#EE2C2C','#8B8989','#CD3333','#FF0000','#FF0000','#8B6969','#CD2626','#EE0000','#B22222','#A52A2A','#CD0000','#8B3A3A','#8B2323','#8B1A1A','#8B0000','#8B0000','#800000','#FFAEB9','#CD8C95','#8B5F65','#EEA2AD','#FFB6C1','#FFC0CB','#DC143C','#FFB5C5','#EEA9B8','#CD919E','#8B636C','#8B475D','#DB7093','#EE799F','#FF82AB','#CD6889','#FFF0F5','#FFF0F5','#CDC1C5','#EEE0E5','#8B8386','#B03060','#CD6090','#CD3278','#FF3E96','#EE3A8C','#8B2252','#EE6AA7','#FF6EB4','#8B3A62','#FF69B4','#FF1493','#FF1493','#EE1289','#CD1076','#8B0A50','#FF34B3','#EE30A7','#CD2990','#8B1C62','#C71585','#D02090','#EE7AE9','#DA70D6','#FF83FA','#CD69C9','#8B4789','#FFE1FF','#EED2EE','#FFBBFF','#EEAEEE','#D8BFD8','#CDB5CD','#DDA0DD','#EE82EE','#CD96CD','#8B7B8B','#FF00FF','#FF00FF','#FF00FF','#8B668B','#EE00EE','#CD00CD','#8B008B','#8B008B','#800080','#BA55D3','#E066FF','#D15FEE','#B452CD','#7A378B','#9400D3','#9932CC','#BF3EFF','#9A32CD','#B23AEE','#68228B','#A020F0','#4B0082','#8A2BE2','#912CEE','#7D26CD','#551A8B','#9B30FF','#9370DB','#AB82FF','#9F79EE','#8968CD','#5D478B','#483D8B','#8470FF','#7B68EE','#6A5ACD','#836FFF','#7A67EE','#6959CD','#473C8B','#F8F8FF','#E6E6FA','#0000FF','#0000FF','#0000EE','#0000CD','#0000CD','#00008B','#00008B','#191970','#000080','#000080','#4169E1','#4876FF','#436EEE','#3A5FCD','#27408B','#6495ED','#B0C4DE','#CAE1FF','#BCD2EE','#A2B5CD','#6E7B8B','#6C7B8B','#C6E2FF','#B9D3EE','#9FB6CD','#778899','#778899','#708090','#708090','#1E90FF','#1E90FF','#1C86EE','#104E8B','#1874CD','#F0F8FF','#36648B','#4682B4','#63B8FF','#5CACEE','#4F94CD','#4A708B','#87CEFF','#7EC0EE','#6CA6CD','#87CEFA','#607B8B','#B0E2FF','#A4D3EE','#8DB6CD','#87CEEB','#9AC0CD','#00BFFF','#00BFFF','#00B2EE','#00688B','#009ACD','#BFEFFF','#B2DFEE','#ADD8E6','#68838B','#B0E0E6','#98F5FF','#8EE5EE','#7AC5CD','#53868B','#00F5FF','#00E5EE','#00C5CD','#00868B','#5F9EA0','#5F9EA0','#00CED1','#F0FFFF','#F0FFFF','#E0FFFF','#E0FFFF','#E0EEEE','#D1EEEE','#BBFFFF','#AFEEEE','#AEEEEE','#97FFFF','#C1CDCD','#B4CDCD','#8DEEEE','#96CDCD','#79CDCD','#838B8B','#7A8B8B','#00FFFF','#00FFFF','#00FFFF','#668B8B','#00EEEE','#528B8B','#00CDCD','#008B8B','#008B8B','#008080','#2F4F4F','#2F4F4F','#48D1CC','#20B2AA','#40E0D0','#458B74','#7FFFD4','#7FFFD4','#76EEC6','#66CDAA','#66CDAA','#00FA9A','#F5FFFA','#00FF7F','#00FF7F','#00EE76','#00CD66','#008B45','#3CB371','#2E8B57','#43CD80','#54FF9F','#2E8B57','#4EEE94','#32814B','#F0FFF0','#F0FFF0','#E0EEE0','#C1FFC1','#B4EEB4','#9AFF9A','#98FB98','#C1CDC1','#90EE90','#90EE90','#9BCD9B','#8FBC8F','#7CCD7C','#838B83','#00FF00','#00FF00','#32CD32','#698B69','#00EE00','#548B54','#00CD00','#228B22','#008B00','#008000','#006400','#7CFC00','#7FFF00','#7FFF00','#76EE00','#66CD00','#458B00','#ADFF2F','#A2CD5A','#CAFF70','#BCEE68','#6E8B3D','#556B2F','#6B8E23','#C0FF3E','#B3EE3A','#9ACD32','#9ACD32','#698B22','#FFFFF0','#FFFFF0','#FFFFE0','#FFFFE0','#F5F5DC','#EEEEE0','#FAFAD2','#EEEED1','#CDCDC1','#CDCDB4','#8B8B83','#8B8B7A','#FFFF00','#FFFF00','#EEEE00','#CDCD00','#8B8B00','#808000','#BDB76B','#EEE685','#8B8970','#FFF68F','#CDC673','#8B864E','#EEE8AA','#FFFACD','#FFFACD','#F0E68C','#CDC9A5','#EEE9BF','#D1C166','#8B8878','#FFD700','#FFD700','#EEC900','#CDAD00','#8B7500','#EEDD82','#8B814C','#FFEC8B','#CDBE70','#EEDC82','#CDC8B1','#EEE8CD','#FFF8DC','#FFF8DC','#DAA520','#FFC125','#EEB422','#CD9B1D','#8B6914','#B8860B','#FFB90F','#EEAD0E','#CD950C','#8B6508','#FFFAF0','#EED8AE','#FDF5E6','#F5DEB3','#FFE7BA','#CDBA96','#FFA500','#FFA500','#EE9A00','#CD8500','#8B5A00','#8B7E66','#FFE4B5','#FFEFD5','#CDB38B','#FFEBCD','#FFDEAD','#FFDEAD','#EECFA1','#8B795E','#8B8378','#FAEBD7','#D2B48C','#8B7D6B','#DEB887','#EEDFCC','#FFD39B','#CDAA7D','#EEC591','#FFEFDB','#8B7355','#CDC0B0','#FF8C00','#EED5B7','#FFE4C4','#FFE4C4','#CDB79E','#FF7F00','#FAF0E6','#EE7600','#CD6600','#8B4500','#CD853F','#FFA54F','#EE9A49','#CD853F','#8B5A2B','#FFDAB9','#FFDAB9','#8B7765','#EECBAD','#CDAF95','#F4A460','#8B8682','#EEE5DE','#CDC5BF','#D2691E','#FF7F24','#EE7621','#CD661D','#8B4513','#8B4513','#FFF5EE','#FFF5EE','#8B4726','#A0522D','#FF8247','#EE7942','#CD6839','#CD8162','#FFA07A','#FFA07A','#8B5742','#EE9572','#FF7F50','#FF4500','#FF4500','#EE4000','#CD3700','#8B2500','#E9967A','#FF8C69','#EE8262','#CD7054','#8B4C39','#FF7256','#EE6A50','#CD5B45','#8B3E2F','#8B3626','#FF6347','#FF6347','#EE5C42','#CD4F39','#8B7D7B','#EED5D2','#FFE4E1','#FFE4E1','#FA8072','#CDB7B5','#FFFFFF','#FFFFFF','#FFFFFF','#FFFFFF','#FCFCFC','#FCFCFC','#FAFAFA','#FAFAFA','#F7F7F7','#F7F7F7','#F5F5F5','#F5F5F5','#F5F5F5','#F2F2F2','#F2F2F2','#F0F0F0','#F0F0F0','#EDEDED','#EDEDED','#EBEBEB','#EBEBEB','#E8E8E8','#E8E8E8','#E5E5E5','#E5E5E5','#E3E3E3','#E3E3E3','#E0E0E0','#E0E0E0','#DEDEDE','#DEDEDE','#DCDCDC','#DBDBDB','#DBDBDB','#D9D9D9','#D9D9D9','#D6D6D6','#D6D6D6','#D4D4D4','#D4D4D4','#D3D3D3','#D3D3D3','#D1D1D1','#D1D1D1','#CFCFCF','#CFCFCF','#CCCCCC','#CCCCCC','#C9C9C9','#C9C9C9','#C7C7C7','#C7C7C7','#C4C4C4','#C4C4C4','#C2C2C2','#C2C2C2','#C0C0C0','#BFBFBF','#BFBFBF','#BDBDBD','#BDBDBD','#BABABA','#BABABA','#B8B8B8','#B8B8B8','#B5B5B5','#B5B5B5','#B3B3B3','#B3B3B3','#B0B0B0','#B0B0B0','#ADADAD','#ADADAD','#ABABAB','#ABABAB','#A9A9A9','#A9A9A9','#A8A8A8','#A8A8A8','#A6A6A6','#A6A6A6','#A3A3A3','#A3A3A3','#A1A1A1','#A1A1A1','#9E9E9E','#9E9E9E','#9C9C9C','#9C9C9C','#999999','#999999','#969696','#969696','#949494','#949494','#919191','#919191','#8F8F8F','#8F8F8F','#8C8C8C','#8C8C8C','#8A8A8A','#8A8A8A','#878787','#878787','#858585','#858585','#828282','#828282','#808080','#7F7F7F','#7F7F7F','#7E7E7E','#7D7D7D','#7D7D7D','#7A7A7A','#7A7A7A','#787878','#787878','#757575','#757575','#737373','#737373','#707070','#707070','#6E6E6E','#6E6E6E','#6B6B6B','#6B6B6B','#696969','#696969','#696969','#696969','#666666','#666666','#636363','#636363','#616161','#616161','#5E5E5E','#5E5E5E','#5C5C5C','#5C5C5C','#595959','#595959','#575757','#575757','#545454','#545454','#525252','#525252','#4F4F4F','#4F4F4F','#4D4D4D','#4D4D4D','#4A4A4A','#4A4A4A','#474747','#474747','#454545','#454545','#424242','#424242','#404040','#404040','#3D3D3D','#3D3D3D','#3B3B3B','#3B3B3B','#383838','#383838','#363636','#363636','#333333','#333333','#303030','#303030','#2E2E2E','#2E2E2E','#2B2B2B','#2B2B2B','#292929','#292929','#262626','#262626','#242424','#242424','#212121','#212121','#1F1F1F','#1F1F1F','#1C1C1C','#1C1C1C','#1A1A1A','#1A1A1A','#171717','#171717','#141414','#141414','#121212','#121212','#0F0F0F','#0F0F0F','#0D0D0D','#0D0D0D','#0A0A0A','#0A0A0A','#080808','#080808','#050505','#050505','#030303','#030303','#000000','#000000','#000000','#000000','#000000','#000000'];
diff --git a/frontend/im/colors/js/jquery-1.10.1.js b/frontend/im/colors/js/jquery-1.10.1.js
new file mode 100644
index 0000000..e407e76
--- /dev/null
+++ b/frontend/im/colors/js/jquery-1.10.1.js
@@ -0,0 +1,6 @@
+/*! jQuery v1.10.1 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-1.10.1.min.map
+*/
+(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.1",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=lt(),k=lt(),E=lt(),S=!1,A=function(){return 0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=bt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+xt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return At(e.replace(z,"$1"),t,n,i)}function st(e){return K.test(e+"")}function lt(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function ut(e){return e[b]=!0,e}function ct(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function pt(e,t,n){e=e.split("|");var r,i=e.length,a=n?null:t;while(i--)(r=o.attrHandle[e[i]])&&r!==t||(o.attrHandle[e[i]]=a)}function ft(e,t){var n=e.getAttributeNode(t);return n&&n.specified?n.value:e[t]===!0?t.toLowerCase():null}function dt(e,t){return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}function ht(e){return"input"===e.nodeName.toLowerCase()?e.defaultValue:t}function gt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function mt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function yt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function vt(e){return ut(function(t){return t=+t,ut(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.parentWindow;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.frameElement&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ct(function(e){return e.innerHTML="<a href='#'></a>",pt("type|href|height|width",dt,"#"===e.firstChild.getAttribute("href")),pt(B,ft,null==e.getAttribute("disabled")),e.className="i",!e.getAttribute("className")}),r.input=ct(function(e){return e.innerHTML="<input>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}),pt("value",ht,r.attributes&&r.input),r.getElementsByTagName=ct(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ct(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ct(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=st(n.querySelectorAll))&&(ct(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ct(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=st(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ct(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=st(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},r.sortDetached=ct(function(e){return 1&e.compareDocumentPosition(n.createElement("div"))}),A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return gt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?gt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:ut,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=bt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?ut(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ut(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?ut(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ut(function(e){return function(t){return at(e,t).length>0}}),contains:ut(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:ut(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:vt(function(){return[0]}),last:vt(function(e,t){return[t-1]}),eq:vt(function(e,t,n){return[0>n?n+t:n]}),even:vt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:vt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:vt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:vt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=mt(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=yt(n);function bt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function xt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function wt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function Tt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Ct(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function Nt(e,t,n,r,i,o){return r&&!r[b]&&(r=Nt(r)),i&&!i[b]&&(i=Nt(i,o)),ut(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||St(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:Ct(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=Ct(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=Ct(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function kt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=wt(function(e){return e===t},s,!0),p=wt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[wt(Tt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return Nt(l>1&&Tt(f),l>1&&xt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&kt(e.slice(l,r)),i>r&&kt(e=e.slice(r)),i>r&&xt(e))}f.push(n)}return Tt(f)}function Et(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=Ct(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?ut(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=bt(e)),n=t.length;while(n--)o=kt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Et(i,r))}return o};function St(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function At(e,t,n,i){var a,s,u,c,p,f=bt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&xt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}o.pseudos.nth=o.pseudos.eq;function jt(){}jt.prototype=o.filters=o.pseudos,o.setFilters=new jt,r.sortStable=b.split("").sort(A).join("")===b,p(),[0,0].sort(A),r.detectDuplicates=S,x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!l||i&&!u||(n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)
+}),n=s=l=u=r=o=null,t}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=x(this),l=t,u=e.match(T)||[];while(o=u[a++])l=r?l:!s.hasClass(o),s[l?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
+u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
diff --git a/frontend/im/colors/js/jquery-1.10.1.min.map b/frontend/im/colors/js/jquery-1.10.1.min.map
new file mode 100644
index 0000000..095d031
--- /dev/null
+++ b/frontend/im/colors/js/jquery-1.10.1.min.map
@@ -0,0 +1 @@
+{"version":3,"file":"jquery-1.10.1.min.js","sources":["jquery-1.10.1.js"],"names":["window","undefined","readyList","rootjQuery","core_strundefined","location","document","docElem","documentElement","_jQuery","jQuery","_$","$","class2type","core_deletedIds","core_version","core_concat","concat","core_push","push","core_slice","slice","core_indexOf","indexOf","core_toString","toString","core_hasOwn","hasOwnProperty","core_trim","trim","selector","context","fn","init","core_pnum","source","core_rnotwhite","rtrim","rquickExpr","rsingleTag","rvalidchars","rvalidbraces","rvalidescape","rvalidtokens","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","completed","event","addEventListener","type","readyState","detach","ready","removeEventListener","detachEvent","prototype","jquery","constructor","match","elem","this","charAt","length","exec","find","merge","parseHTML","nodeType","ownerDocument","test","isPlainObject","isFunction","attr","getElementById","parentNode","id","makeArray","toArray","call","get","num","pushStack","elems","ret","prevObject","each","callback","args","promise","done","apply","arguments","first","eq","last","i","len","j","map","end","sort","splice","extend","src","copyIsArray","copy","name","options","clone","target","deep","isArray","expando","Math","random","replace","noConflict","isReady","readyWait","holdReady","hold","wait","body","setTimeout","resolveWith","trigger","off","obj","Array","isWindow","isNumeric","isNaN","parseFloat","isFinite","String","key","e","support","ownLast","isEmptyObject","error","msg","Error","data","keepScripts","parsed","scripts","createElement","buildFragment","remove","childNodes","parseJSON","JSON","parse","Function","parseXML","xml","tmp","DOMParser","parseFromString","ActiveXObject","async","loadXML","getElementsByTagName","noop","globalEval","execScript","camelCase","string","nodeName","toLowerCase","value","isArraylike","text","arr","results","Object","inArray","max","second","l","grep","inv","retVal","arg","guid","proxy","access","chainable","emptyGet","raw","bulk","now","Date","getTime","swap","old","style","Deferred","attachEvent","top","frameElement","doScroll","doScrollCheck","split","cachedruns","Expr","getText","isXML","compile","outermostContext","sortInput","setDocument","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","hasDuplicate","sortOrder","strundefined","MAX_NEGATIVE","hasOwn","pop","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","RegExp","rcomma","rcombinators","rsibling","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rnative","rinputs","rheader","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","fromCharCode","els","Sizzle","seed","m","groups","nid","newContext","newSelector","getElementsByClassName","qsa","tokenize","getAttribute","setAttribute","toSelector","join","querySelectorAll","qsaError","removeAttribute","select","isNative","keys","cache","cacheLength","shift","markFunction","assert","div","removeChild","addHandle","attrs","handler","current","setHandle","attrHandle","boolHandler","val","getAttributeNode","specified","interpolationHandler","valueHandler","defaultValue","siblingCheck","a","b","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","node","doc","parent","parentWindow","innerHTML","firstChild","className","input","appendChild","createComment","getById","getElementsByName","filter","attrId","tag","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","sortDetached","div1","compare","aup","ap","bp","unshift","expr","elements","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo","relative",">","dir"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","dirkey","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","matcherCachedRuns","bySet","byElement","superMatcher","expandContext","setMatched","matchedCount","outermost","contextBackup","dirrunsUnique","group","contexts","token","filters","unique","isXMLDoc","optionsCache","createOptions","object","flag","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","list","stack","once","fire","stopOnFalse","self","disable","add","index","lock","locked","fireWith","func","tuples","state","always","deferred","fail","then","fns","newDefer","tuple","action","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","resolveValues","remaining","updateFunc","values","progressValues","notifyWith","progressContexts","resolveContexts","fragment","opt","eventName","isSupported","cssText","getSetAttribute","leadingWhitespace","tbody","htmlSerialize","hrefNormalized","opacity","cssFloat","checkOn","optSelected","enctype","html5Clone","cloneNode","outerHTML","inlineBlockNeedsLayout","shrinkWrapBlocks","pixelPosition","deleteExpando","noCloneEvent","reliableMarginRight","boxSizingReliable","noCloneChecked","optDisabled","radioValue","createDocumentFragment","appendChecked","checkClone","click","change","focusin","backgroundClip","clearCloneStyle","container","marginDiv","tds","divReset","offsetHeight","display","reliableHiddenOffsets","zoom","boxSizing","offsetWidth","getComputedStyle","width","marginRight","rbrace","rmultiDash","internalData","pvt","acceptData","thisCache","internalKey","isNode","toJSON","internalRemoveData","isEmptyDataObject","cleanData","noData","applet","embed","hasData","removeData","_data","_removeData","dataAttr","queue","dequeue","startLength","hooks","_queueHooks","next","stop","setter","delay","time","fx","speeds","timeout","clearTimeout","clearQueue","count","defer","nodeHook","boolHook","rclass","rreturn","rfocusable","rclickable","ruseDefault","getSetInput","removeAttr","prop","removeProp","propFix","addClass","classes","clazz","proceed","removeClass","toggleClass","stateVal","isBool","classNames","hasClass","valHooks","set","option","one","optionSet","nType","attrHooks","propName","attrNames","for","class","notxml","propHooks","tabindex","parseInt","getter","setAttributeNode","createAttribute","coords","contenteditable","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","global","types","events","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","defaultView","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","props","srcElement","metaKey","original","which","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","getPreventDefault","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","orig","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","origFn","triggerHandler","isSimple","rparentsprev","rneedsContext","guaranteedUnique","children","contents","prev","targets","winnow","is","closest","pos","prevAll","addBack","sibling","parents","parentsUntil","until","nextAll","nextUntil","prevUntil","siblings","contentDocument","contentWindow","reverse","n","r","qualifier","createSafeFragment","nodeNames","safeFrag","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","manipulation_rcheckableType","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","append","createTextNode","domManip","manipulationTarget","prepend","insertBefore","before","after","keepData","getAll","setGlobalEval","dataAndEvents","deepDataAndEvents","html","replaceWith","allowIntersection","hasScripts","iNoClone","disableScript","restoreScript","_evalUrl","content","refElements","cloneCopyEvent","dest","oldData","curData","fixCloneNodeIssues","defaultChecked","defaultSelected","appendTo","prependTo","insertAfter","replaceAll","insert","found","fixDefaultChecked","destElements","srcElements","inPage","selection","wrap","safe","nodes","url","ajax","dataType","throws","wrapAll","wrapInner","unwrap","iframe","getStyles","curCSS","ralpha","ropacity","rposition","rdisplayswap","rmargin","rnumsplit","rnumnonpx","rrelNum","elemdisplay","BODY","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssExpand","cssPrefixes","vendorPropName","capName","origName","isHidden","el","css","showHide","show","hidden","css_defaultDisplay","styles","hide","toggle","cssHooks","computed","cssNumber","columnCount","fillOpacity","lineHeight","orphans","widows","zIndex","cssProps","float","extra","_computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","setPositiveNumber","subtract","augmentWidthOrHeight","isBorderBox","getWidthOrHeight","valueIsBorderBox","actualDisplay","write","close","$1","visible","margin","padding","border","prefix","suffix","expand","expanded","parts","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","serialize","serializeArray","traditional","s","encodeURIComponent","ajaxSettings","buildParams","v","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","ajaxLocParts","ajaxLocation","ajax_nonce","ajax_rquery","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","_load","prefilters","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","originalOptions","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","params","response","responseText","complete","status","active","lastModified","etag","isLocal","processData","contentType","accepts","*","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","mimeType","code","abort","statusText","finalText","success","method","crossDomain","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","isSuccess","modified","ajaxHandleResponses","ajaxConvert","rejectWith","getJSON","getScript","firstDataType","ct","finalDataType","conv2","conv","dataFilter","script","text script","head","scriptCharset","charset","onload","onreadystatechange","isAbort","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","xhrCallbacks","xhrSupported","xhrId","xhrOnUnloadAbort","createStandardXHR","XMLHttpRequest","createActiveXHR","xhr","cors","username","open","xhrFields","firefoxAccessException","unload","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","defaultPrefilter","tweeners","tween","createTween","unit","scale","maxIterations","createFxNow","animation","collection","Animation","properties","stopped","tick","currentTime","startTime","duration","percent","tweens","run","opts","specialEasing","originalProperties","Tween","easing","gotoEnd","propFilter","timer","anim","tweener","prefilter","oldfire","dataShow","unqueued","overflow","overflowX","overflowY","eased","step","cssFn","speed","animate","genFx","fadeTo","to","optall","doAnimation","finish","stopQueue","timers","includeWidth","height","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","linear","p","swing","cos","PI","interval","setInterval","clearInterval","slow","fast","animated","offset","setOffset","win","box","getBoundingClientRect","getWindow","pageYOffset","pageXOffset","curElem","curOffset","curCSSTop","curCSSLeft","calculatePosition","curPosition","curTop","curLeft","using","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","module","exports","define","amd"],"mappings":";;;CAaA,SAAWA,EAAQC,GAOnB,GAECC,GAGAC,EAIAC,QAA2BH,GAG3BI,EAAWL,EAAOK,SAClBC,EAAWN,EAAOM,SAClBC,EAAUD,EAASE,gBAGnBC,EAAUT,EAAOU,OAGjBC,EAAKX,EAAOY,EAGZC,KAGAC,KAEAC,EAAe,SAGfC,EAAcF,EAAgBG,OAC9BC,EAAYJ,EAAgBK,KAC5BC,EAAaN,EAAgBO,MAC7BC,EAAeR,EAAgBS,QAC/BC,EAAgBX,EAAWY,SAC3BC,EAAcb,EAAWc,eACzBC,EAAYb,EAAac,KAGzBnB,EAAS,SAAUoB,EAAUC,GAE5B,MAAO,IAAIrB,GAAOsB,GAAGC,KAAMH,EAAUC,EAAS5B,IAI/C+B,EAAY,sCAAsCC,OAGlDC,EAAiB,OAGjBC,EAAQ,qCAKRC,EAAa,sCAGbC,EAAa,6BAGbC,EAAc,gBACdC,EAAe,uBACfC,EAAe,qCACfC,EAAe,kEAGfC,EAAY,QACZC,EAAa,eAGbC,EAAa,SAAUC,EAAKC,GAC3B,MAAOA,GAAOC,eAIfC,EAAY,SAAUC,IAGhB7C,EAAS8C,kBAAmC,SAAfD,EAAME,MAA2C,aAAxB/C,EAASgD,cACnEC,IACA7C,EAAO8C,UAITD,EAAS,WACHjD,EAAS8C,kBACb9C,EAASmD,oBAAqB,mBAAoBP,GAAW,GAC7DlD,EAAOyD,oBAAqB,OAAQP,GAAW,KAG/C5C,EAASoD,YAAa,qBAAsBR,GAC5ClD,EAAO0D,YAAa,SAAUR,IAIjCxC,GAAOsB,GAAKtB,EAAOiD,WAElBC,OAAQ7C,EAER8C,YAAanD,EACbuB,KAAM,SAAUH,EAAUC,EAAS5B,GAClC,GAAI2D,GAAOC,CAGX,KAAMjC,EACL,MAAOkC,KAIR,IAAyB,gBAAblC,GAAwB,CAUnC,GAPCgC,EAF2B,MAAvBhC,EAASmC,OAAO,IAAyD,MAA3CnC,EAASmC,OAAQnC,EAASoC,OAAS,IAAepC,EAASoC,QAAU,GAE7F,KAAMpC,EAAU,MAGlBQ,EAAW6B,KAAMrC,IAIrBgC,IAAUA,EAAM,IAAO/B,EAqDrB,OAAMA,GAAWA,EAAQ6B,QACtB7B,GAAW5B,GAAaiE,KAAMtC,GAKhCkC,KAAKH,YAAa9B,GAAUqC,KAAMtC,EAxDzC,IAAKgC,EAAM,GAAK,CAWf,GAVA/B,EAAUA,YAAmBrB,GAASqB,EAAQ,GAAKA,EAGnDrB,EAAO2D,MAAOL,KAAMtD,EAAO4D,UAC1BR,EAAM,GACN/B,GAAWA,EAAQwC,SAAWxC,EAAQyC,eAAiBzC,EAAUzB,GACjE,IAIIiC,EAAWkC,KAAMX,EAAM,KAAQpD,EAAOgE,cAAe3C,GACzD,IAAM+B,IAAS/B,GAETrB,EAAOiE,WAAYX,KAAMF,IAC7BE,KAAMF,GAAS/B,EAAS+B,IAIxBE,KAAKY,KAAMd,EAAO/B,EAAS+B,GAK9B,OAAOE,MAQP,GAJAD,EAAOzD,EAASuE,eAAgBf,EAAM,IAIjCC,GAAQA,EAAKe,WAAa,CAG9B,GAAKf,EAAKgB,KAAOjB,EAAM,GACtB,MAAO3D,GAAWiE,KAAMtC,EAIzBkC,MAAKE,OAAS,EACdF,KAAK,GAAKD,EAKX,MAFAC,MAAKjC,QAAUzB,EACf0D,KAAKlC,SAAWA,EACTkC,KAcH,MAAKlC,GAASyC,UACpBP,KAAKjC,QAAUiC,KAAK,GAAKlC,EACzBkC,KAAKE,OAAS,EACPF,MAIItD,EAAOiE,WAAY7C,GACvB3B,EAAWqD,MAAO1B,IAGrBA,EAASA,WAAa7B,IAC1B+D,KAAKlC,SAAWA,EAASA,SACzBkC,KAAKjC,QAAUD,EAASC,SAGlBrB,EAAOsE,UAAWlD,EAAUkC,QAIpClC,SAAU,GAGVoC,OAAQ,EAERe,QAAS,WACR,MAAO7D,GAAW8D,KAAMlB,OAKzBmB,IAAK,SAAUC,GACd,MAAc,OAAPA,EAGNpB,KAAKiB,UAGG,EAANG,EAAUpB,KAAMA,KAAKE,OAASkB,GAAQpB,KAAMoB,IAKhDC,UAAW,SAAUC,GAGpB,GAAIC,GAAM7E,EAAO2D,MAAOL,KAAKH,cAAeyB,EAO5C,OAJAC,GAAIC,WAAaxB,KACjBuB,EAAIxD,QAAUiC,KAAKjC,QAGZwD,GAMRE,KAAM,SAAUC,EAAUC,GACzB,MAAOjF,GAAO+E,KAAMzB,KAAM0B,EAAUC,IAGrCnC,MAAO,SAAUxB,GAIhB,MAFAtB,GAAO8C,MAAMoC,UAAUC,KAAM7D,GAEtBgC,MAGR3C,MAAO,WACN,MAAO2C,MAAKqB,UAAWjE,EAAW0E,MAAO9B,KAAM+B,aAGhDC,MAAO,WACN,MAAOhC,MAAKiC,GAAI,IAGjBC,KAAM,WACL,MAAOlC,MAAKiC,GAAI,KAGjBA,GAAI,SAAUE,GACb,GAAIC,GAAMpC,KAAKE,OACdmC,GAAKF,GAAU,EAAJA,EAAQC,EAAM,EAC1B,OAAOpC,MAAKqB,UAAWgB,GAAK,GAASD,EAAJC,GAAYrC,KAAKqC,SAGnDC,IAAK,SAAUZ,GACd,MAAO1B,MAAKqB,UAAW3E,EAAO4F,IAAItC,KAAM,SAAUD,EAAMoC,GACvD,MAAOT,GAASR,KAAMnB,EAAMoC,EAAGpC,OAIjCwC,IAAK,WACJ,MAAOvC,MAAKwB,YAAcxB,KAAKH,YAAY,OAK5C1C,KAAMD,EACNsF,QAASA,KACTC,UAAWA,QAIZ/F,EAAOsB,GAAGC,KAAK0B,UAAYjD,EAAOsB,GAElCtB,EAAOgG,OAAShG,EAAOsB,GAAG0E,OAAS,WAClC,GAAIC,GAAKC,EAAaC,EAAMC,EAAMC,EAASC,EAC1CC,EAASlB,UAAU,OACnBI,EAAI,EACJjC,EAAS6B,UAAU7B,OACnBgD,GAAO,CAqBR,KAlBuB,iBAAXD,KACXC,EAAOD,EACPA,EAASlB,UAAU,OAEnBI,EAAI,GAIkB,gBAAXc,IAAwBvG,EAAOiE,WAAWsC,KACrDA,MAII/C,IAAWiC,IACfc,EAASjD,OACPmC,GAGSjC,EAAJiC,EAAYA,IAEnB,GAAmC,OAA7BY,EAAUhB,UAAWI,IAE1B,IAAMW,IAAQC,GACbJ,EAAMM,EAAQH,GACdD,EAAOE,EAASD,GAGXG,IAAWJ,IAKXK,GAAQL,IAAUnG,EAAOgE,cAAcmC,KAAUD,EAAclG,EAAOyG,QAAQN,MAC7ED,GACJA,GAAc,EACdI,EAAQL,GAAOjG,EAAOyG,QAAQR,GAAOA,MAGrCK,EAAQL,GAAOjG,EAAOgE,cAAciC,GAAOA,KAI5CM,EAAQH,GAASpG,EAAOgG,OAAQQ,EAAMF,EAAOH,IAGlCA,IAAS5G,IACpBgH,EAAQH,GAASD,GAOrB,OAAOI,IAGRvG,EAAOgG,QAGNU,QAAS,UAAarG,EAAesG,KAAKC,UAAWC,QAAS,MAAO,IAErEC,WAAY,SAAUN,GASrB,MARKlH,GAAOY,IAAMF,IACjBV,EAAOY,EAAID,GAGPuG,GAAQlH,EAAOU,SAAWA,IAC9BV,EAAOU,OAASD,GAGVC,GAIR+G,SAAS,EAITC,UAAW,EAGXC,UAAW,SAAUC,GACfA,EACJlH,EAAOgH,YAEPhH,EAAO8C,OAAO,IAKhBA,MAAO,SAAUqE,GAGhB,GAAKA,KAAS,KAASnH,EAAOgH,WAAYhH,EAAO+G,QAAjD,CAKA,IAAMnH,EAASwH,KACd,MAAOC,YAAYrH,EAAO8C,MAI3B9C,GAAO+G,SAAU,EAGZI,KAAS,KAAUnH,EAAOgH,UAAY,IAK3CxH,EAAU8H,YAAa1H,GAAYI,IAG9BA,EAAOsB,GAAGiG,SACdvH,EAAQJ,GAAW2H,QAAQ,SAASC,IAAI,YAO1CvD,WAAY,SAAUwD,GACrB,MAA4B,aAArBzH,EAAO2C,KAAK8E,IAGpBhB,QAASiB,MAAMjB,SAAW,SAAUgB,GACnC,MAA4B,UAArBzH,EAAO2C,KAAK8E,IAGpBE,SAAU,SAAUF,GAEnB,MAAc,OAAPA,GAAeA,GAAOA,EAAInI,QAGlCsI,UAAW,SAAUH,GACpB,OAAQI,MAAOC,WAAWL,KAAUM,SAAUN,IAG/C9E,KAAM,SAAU8E,GACf,MAAY,OAAPA,EACWA,EAARO,GAEc,gBAARP,IAAmC,kBAARA,GACxCtH,EAAYW,EAAc0D,KAAKiD,KAAU,eAClCA,IAGTzD,cAAe,SAAUyD,GACxB,GAAIQ,EAKJ,KAAMR,GAA4B,WAArBzH,EAAO2C,KAAK8E,IAAqBA,EAAI5D,UAAY7D,EAAO2H,SAAUF,GAC9E,OAAO,CAGR,KAEC,GAAKA,EAAItE,cACPnC,EAAYwD,KAAKiD,EAAK,iBACtBzG,EAAYwD,KAAKiD,EAAItE,YAAYF,UAAW,iBAC7C,OAAO,EAEP,MAAQiF,GAET,OAAO,EAKR,GAAKlI,EAAOmI,QAAQC,QACnB,IAAMH,IAAOR,GACZ,MAAOzG,GAAYwD,KAAMiD,EAAKQ,EAMhC,KAAMA,IAAOR,IAEb,MAAOQ,KAAQ1I,GAAayB,EAAYwD,KAAMiD,EAAKQ,IAGpDI,cAAe,SAAUZ,GACxB,GAAIrB,EACJ,KAAMA,IAAQqB,GACb,OAAO,CAER,QAAO,GAGRa,MAAO,SAAUC,GAChB,KAAUC,OAAOD,IAMlB3E,UAAW,SAAU6E,EAAMpH,EAASqH,GACnC,IAAMD,GAAwB,gBAATA,GACpB,MAAO,KAEgB,kBAAZpH,KACXqH,EAAcrH,EACdA,GAAU,GAEXA,EAAUA,GAAWzB,CAErB,IAAI+I,GAAS9G,EAAW4B,KAAMgF,GAC7BG,GAAWF,KAGZ,OAAKC,IACKtH,EAAQwH,cAAeF,EAAO,MAGxCA,EAAS3I,EAAO8I,eAAiBL,GAAQpH,EAASuH,GAC7CA,GACJ5I,EAAQ4I,GAAUG,SAEZ/I,EAAO2D,SAAWgF,EAAOK,cAGjCC,UAAW,SAAUR,GAEpB,MAAKnJ,GAAO4J,MAAQ5J,EAAO4J,KAAKC,MACxB7J,EAAO4J,KAAKC,MAAOV,GAGb,OAATA,EACGA,EAGa,gBAATA,KAGXA,EAAOzI,EAAOmB,KAAMsH,GAEfA,GAGC3G,EAAYiC,KAAM0E,EAAK5B,QAAS7E,EAAc,KACjD6E,QAAS5E,EAAc,KACvB4E,QAAS9E,EAAc,MAEXqH,SAAU,UAAYX,MAKtCzI,EAAOsI,MAAO,iBAAmBG,GAAjCzI,IAIDqJ,SAAU,SAAUZ,GACnB,GAAIa,GAAKC,CACT,KAAMd,GAAwB,gBAATA,GACpB,MAAO,KAER,KACMnJ,EAAOkK,WACXD,EAAM,GAAIC,WACVF,EAAMC,EAAIE,gBAAiBhB,EAAO,cAElCa,EAAM,GAAII,eAAe,oBACzBJ,EAAIK,MAAQ,QACZL,EAAIM,QAASnB,IAEb,MAAOP,GACRoB,EAAM/J,EAKP,MAHM+J,IAAQA,EAAIxJ,kBAAmBwJ,EAAIO,qBAAsB,eAAgBrG,QAC9ExD,EAAOsI,MAAO,gBAAkBG,GAE1Ba,GAGRQ,KAAM,aAKNC,WAAY,SAAUtB,GAChBA,GAAQzI,EAAOmB,KAAMsH,KAIvBnJ,EAAO0K,YAAc,SAAUvB,GAChCnJ,EAAe,KAAEkF,KAAMlF,EAAQmJ,KAC3BA,IAMPwB,UAAW,SAAUC,GACpB,MAAOA,GAAOrD,QAAS3E,EAAW,OAAQ2E,QAAS1E,EAAYC,IAGhE+H,SAAU,SAAU9G,EAAM+C,GACzB,MAAO/C,GAAK8G,UAAY9G,EAAK8G,SAASC,gBAAkBhE,EAAKgE,eAI9DrF,KAAM,SAAU0C,EAAKzC,EAAUC,GAC9B,GAAIoF,GACH5E,EAAI,EACJjC,EAASiE,EAAIjE,OACbiD,EAAU6D,EAAa7C,EAExB,IAAKxC,GACJ,GAAKwB,GACJ,KAAYjD,EAAJiC,EAAYA,IAGnB,GAFA4E,EAAQrF,EAASI,MAAOqC,EAAKhC,GAAKR,GAE7BoF,KAAU,EACd,UAIF,KAAM5E,IAAKgC,GAGV,GAFA4C,EAAQrF,EAASI,MAAOqC,EAAKhC,GAAKR,GAE7BoF,KAAU,EACd,UAOH,IAAK5D,GACJ,KAAYjD,EAAJiC,EAAYA,IAGnB,GAFA4E,EAAQrF,EAASR,KAAMiD,EAAKhC,GAAKA,EAAGgC,EAAKhC,IAEpC4E,KAAU,EACd,UAIF,KAAM5E,IAAKgC,GAGV,GAFA4C,EAAQrF,EAASR,KAAMiD,EAAKhC,GAAKA,EAAGgC,EAAKhC,IAEpC4E,KAAU,EACd,KAMJ,OAAO5C,IAIRtG,KAAMD,IAAcA,EAAUsD,KAAK,gBAClC,SAAU+F,GACT,MAAe,OAARA,EACN,GACArJ,EAAUsD,KAAM+F,IAIlB,SAAUA,GACT,MAAe,OAARA,EACN,IACEA,EAAO,IAAK1D,QAASlF,EAAO,KAIjC2C,UAAW,SAAUkG,EAAKC,GACzB,GAAI5F,GAAM4F,KAaV,OAXY,OAAPD,IACCF,EAAaI,OAAOF,IACxBxK,EAAO2D,MAAOkB,EACE,gBAAR2F,IACLA,GAAQA,GAGXhK,EAAUgE,KAAMK,EAAK2F,IAIhB3F,GAGR8F,QAAS,SAAUtH,EAAMmH,EAAK/E,GAC7B,GAAIC,EAEJ,IAAK8E,EAAM,CACV,GAAK5J,EACJ,MAAOA,GAAa4D,KAAMgG,EAAKnH,EAAMoC,EAMtC,KAHAC,EAAM8E,EAAIhH,OACViC,EAAIA,EAAQ,EAAJA,EAAQkB,KAAKiE,IAAK,EAAGlF,EAAMD,GAAMA,EAAI,EAEjCC,EAAJD,EAASA,IAEhB,GAAKA,IAAK+E,IAAOA,EAAK/E,KAAQpC,EAC7B,MAAOoC,GAKV,MAAO,IAGR9B,MAAO,SAAU2B,EAAOuF,GACvB,GAAIC,GAAID,EAAOrH,OACdiC,EAAIH,EAAM9B,OACVmC,EAAI,CAEL,IAAkB,gBAANmF,GACX,KAAYA,EAAJnF,EAAOA,IACdL,EAAOG,KAAQoF,EAAQlF,OAGxB,OAAQkF,EAAOlF,KAAOpG,EACrB+F,EAAOG,KAAQoF,EAAQlF,IAMzB,OAFAL,GAAM9B,OAASiC,EAERH,GAGRyF,KAAM,SAAUnG,EAAOI,EAAUgG,GAChC,GAAIC,GACHpG,KACAY,EAAI,EACJjC,EAASoB,EAAMpB,MAKhB,KAJAwH,IAAQA,EAIIxH,EAAJiC,EAAYA,IACnBwF,IAAWjG,EAAUJ,EAAOa,GAAKA,GAC5BuF,IAAQC,GACZpG,EAAIpE,KAAMmE,EAAOa,GAInB,OAAOZ,IAIRe,IAAK,SAAUhB,EAAOI,EAAUkG,GAC/B,GAAIb,GACH5E,EAAI,EACJjC,EAASoB,EAAMpB,OACfiD,EAAU6D,EAAa1F,GACvBC,IAGD,IAAK4B,EACJ,KAAYjD,EAAJiC,EAAYA,IACnB4E,EAAQrF,EAAUJ,EAAOa,GAAKA,EAAGyF,GAEnB,MAATb,IACJxF,EAAKA,EAAIrB,QAAW6G,OAMtB,KAAM5E,IAAKb,GACVyF,EAAQrF,EAAUJ,EAAOa,GAAKA,EAAGyF,GAEnB,MAATb,IACJxF,EAAKA,EAAIrB,QAAW6G,EAMvB,OAAO/J,GAAY8E,SAAWP,IAI/BsG,KAAM,EAINC,MAAO,SAAU9J,EAAID,GACpB,GAAI4D,GAAMmG,EAAO7B,CAUjB,OARwB,gBAAZlI,KACXkI,EAAMjI,EAAID,GACVA,EAAUC,EACVA,EAAKiI,GAKAvJ,EAAOiE,WAAY3C,IAKzB2D,EAAOvE,EAAW8D,KAAMa,UAAW,GACnC+F,EAAQ,WACP,MAAO9J,GAAG8D,MAAO/D,GAAWiC,KAAM2B,EAAK1E,OAAQG,EAAW8D,KAAMa,cAIjE+F,EAAMD,KAAO7J,EAAG6J,KAAO7J,EAAG6J,MAAQnL,EAAOmL,OAElCC,GAZC7L,GAiBT8L,OAAQ,SAAUzG,EAAOtD,EAAI2G,EAAKoC,EAAOiB,EAAWC,EAAUC,GAC7D,GAAI/F,GAAI,EACPjC,EAASoB,EAAMpB,OACfiI,EAAc,MAAPxD,CAGR,IAA4B,WAAvBjI,EAAO2C,KAAMsF,GAAqB,CACtCqD,GAAY,CACZ,KAAM7F,IAAKwC,GACVjI,EAAOqL,OAAQzG,EAAOtD,EAAImE,EAAGwC,EAAIxC,IAAI,EAAM8F,EAAUC,OAIhD,IAAKnB,IAAU9K,IACrB+L,GAAY,EAENtL,EAAOiE,WAAYoG,KACxBmB,GAAM,GAGFC,IAECD,GACJlK,EAAGkD,KAAMI,EAAOyF,GAChB/I,EAAK,OAILmK,EAAOnK,EACPA,EAAK,SAAU+B,EAAM4E,EAAKoC,GACzB,MAAOoB,GAAKjH,KAAMxE,EAAQqD,GAAQgH,MAKhC/I,GACJ,KAAYkC,EAAJiC,EAAYA,IACnBnE,EAAIsD,EAAMa,GAAIwC,EAAKuD,EAAMnB,EAAQA,EAAM7F,KAAMI,EAAMa,GAAIA,EAAGnE,EAAIsD,EAAMa,GAAIwC,IAK3E,OAAOqD,GACN1G,EAGA6G,EACCnK,EAAGkD,KAAMI,GACTpB,EAASlC,EAAIsD,EAAM,GAAIqD,GAAQsD,GAGlCG,IAAK,WACJ,OAAO,GAAMC,OAASC,WAMvBC,KAAM,SAAUxI,EAAMgD,EAASrB,EAAUC,GACxC,GAAIJ,GAAKuB,EACR0F,IAGD,KAAM1F,IAAQC,GACbyF,EAAK1F,GAAS/C,EAAK0I,MAAO3F,GAC1B/C,EAAK0I,MAAO3F,GAASC,EAASD,EAG/BvB,GAAMG,EAASI,MAAO/B,EAAM4B,MAG5B,KAAMmB,IAAQC,GACbhD,EAAK0I,MAAO3F,GAAS0F,EAAK1F,EAG3B,OAAOvB,MAIT7E,EAAO8C,MAAMoC,QAAU,SAAUuC,GAChC,IAAMjI,EAOL,GALAA,EAAYQ,EAAOgM,WAKU,aAAxBpM,EAASgD,WAEbyE,WAAYrH,EAAO8C,WAGb,IAAKlD,EAAS8C,iBAEpB9C,EAAS8C,iBAAkB,mBAAoBF,GAAW,GAG1DlD,EAAOoD,iBAAkB,OAAQF,GAAW,OAGtC,CAEN5C,EAASqM,YAAa,qBAAsBzJ,GAG5ClD,EAAO2M,YAAa,SAAUzJ,EAI9B,IAAI0J,IAAM,CAEV,KACCA,EAA6B,MAAvB5M,EAAO6M,cAAwBvM,EAASE,gBAC7C,MAAMoI,IAEHgE,GAAOA,EAAIE,UACf,QAAUC,KACT,IAAMrM,EAAO+G,QAAU,CAEtB,IAGCmF,EAAIE,SAAS,QACZ,MAAMlE,GACP,MAAOb,YAAYgF,EAAe,IAInCxJ,IAGA7C,EAAO8C,YAMZ,MAAOtD,GAAU0F,QAASuC,IAI3BzH,EAAO+E,KAAK,gEAAgEuH,MAAM,KAAM,SAAS7G,EAAGW,GACnGjG,EAAY,WAAaiG,EAAO,KAAQA,EAAKgE,eAG9C,SAASE,GAAa7C,GACrB,GAAIjE,GAASiE,EAAIjE,OAChBb,EAAO3C,EAAO2C,KAAM8E,EAErB,OAAKzH,GAAO2H,SAAUF,IACd,EAGc,IAAjBA,EAAI5D,UAAkBL,GACnB,EAGQ,UAATb,GAA6B,aAATA,IACb,IAAXa,GACgB,gBAAXA,IAAuBA,EAAS,GAAOA,EAAS,IAAOiE,IAIhEhI,EAAaO,EAAOJ,GAWpB,SAAWN,EAAQC,GAEnB,GAAIkG,GACH0C,EACAoE,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACAlN,EACAC,EACAkN,EACAC,EACAC,EACAC,EACAC,EAGAzG,EAAU,UAAY,GAAKiF,MAC3ByB,EAAe9N,EAAOM,SACtByN,EAAU,EACVlI,EAAO,EACPmI,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,GAAe,EACfC,EAAY,WAAa,MAAO,IAGhCC,QAAsBrO,GACtBsO,EAAe,GAAK,GAGpBC,KAAc7M,eACduJ,KACAuD,EAAMvD,EAAIuD,IACVC,EAAcxD,EAAI/J,KAClBA,EAAO+J,EAAI/J,KACXE,EAAQ6J,EAAI7J,MAEZE,EAAU2J,EAAI3J,SAAW,SAAUwC,GAClC,GAAIoC,GAAI,EACPC,EAAMpC,KAAKE,MACZ,MAAYkC,EAAJD,EAASA,IAChB,GAAKnC,KAAKmC,KAAOpC,EAChB,MAAOoC,EAGT,OAAO,IAGRwI,EAAW,6HAKXC,EAAa,sBAEbC,EAAoB,mCAKpBC,EAAaD,EAAkBtH,QAAS,IAAK,MAG7CwH,EAAa,MAAQH,EAAa,KAAOC,EAAoB,IAAMD,EAClE,mBAAqBA,EAAa,wCAA0CE,EAAa,QAAUF,EAAa,OAQjHI,EAAU,KAAOH,EAAoB,mEAAqEE,EAAWxH,QAAS,EAAG,GAAM,eAGvIlF,EAAY4M,OAAQ,IAAML,EAAa,8BAAgCA,EAAa,KAAM,KAE1FM,EAAaD,OAAQ,IAAML,EAAa,KAAOA,EAAa,KAC5DO,EAAmBF,OAAQ,IAAML,EAAa,WAAaA,EAAa,IAAMA,EAAa,KAE3FQ,EAAeH,OAAQL,EAAa,SACpCS,EAAuBJ,OAAQ,IAAML,EAAa,gBAAkBA,EAAa,OAAQ,KAEzFU,EAAcL,OAAQD,GACtBO,EAAkBN,OAAQ,IAAMH,EAAa,KAE7CU,GACCC,GAAUR,OAAQ,MAAQJ,EAAoB,KAC9Ca,MAAaT,OAAQ,QAAUJ,EAAoB,KACnDc,IAAWV,OAAQ,KAAOJ,EAAkBtH,QAAS,IAAK,MAAS,KACnEqI,KAAYX,OAAQ,IAAMF,GAC1Bc,OAAcZ,OAAQ,IAAMD,GAC5Bc,MAAab,OAAQ,yDAA2DL,EAC/E,+BAAiCA,EAAa,cAAgBA,EAC9D,aAAeA,EAAa,SAAU,KACvCmB,KAAYd,OAAQ,OAASN,EAAW,KAAM,KAG9CqB,aAAoBf,OAAQ,IAAML,EAAa,mDAC9CA,EAAa,mBAAqBA,EAAa,mBAAoB,MAGrEqB,EAAU,yBAGV3N,EAAa,mCAEb4N,GAAU,sCACVC,GAAU,SAEVC,GAAU,QAGVC,GAAgBpB,OAAQ,qBAAuBL,EAAa,MAAQA,EAAa,OAAQ,MACzF0B,GAAY,SAAUC,EAAGC,EAASC,GACjC,GAAIC,GAAO,KAAOF,EAAU,KAI5B,OAAOE,KAASA,GAAQD,EACvBD,EAEO,EAAPE,EACChI,OAAOiI,aAAcD,EAAO,OAE5BhI,OAAOiI,aAA2B,MAAbD,GAAQ,GAA4B,MAAR,KAAPA,GAI9C,KACCvP,EAAK2E,MACHoF,EAAM7J,EAAM6D,KAAM4I,EAAapE,YAChCoE,EAAapE,YAIdwB,EAAK4C,EAAapE,WAAWxF,QAASK,SACrC,MAAQqE,IACTzH,GAAS2E,MAAOoF,EAAIhH,OAGnB,SAAU+C,EAAQ2J,GACjBlC,EAAY5I,MAAOmB,EAAQ5F,EAAM6D,KAAK0L,KAKvC,SAAU3J,EAAQ2J,GACjB,GAAIvK,GAAIY,EAAO/C,OACdiC,EAAI,CAEL,OAASc,EAAOZ,KAAOuK,EAAIzK,MAC3Bc,EAAO/C,OAASmC,EAAI,IAKvB,QAASwK,IAAQ/O,EAAUC,EAASoJ,EAAS2F,GAC5C,GAAIhN,GAAOC,EAAMgN,EAAGxM,EAEnB4B,EAAG6K,EAAQxE,EAAKyE,EAAKC,EAAYC,CASlC,KAPOpP,EAAUA,EAAQyC,eAAiBzC,EAAU+L,KAAmBxN,GACtEkN,EAAazL,GAGdA,EAAUA,GAAWzB,EACrB6K,EAAUA,OAEJrJ,GAAgC,gBAAbA,GACxB,MAAOqJ,EAGR,IAAuC,KAAjC5G,EAAWxC,EAAQwC,WAAgC,IAAbA,EAC3C,QAGD,IAAKkJ,IAAmBqD,EAAO,CAG9B,GAAMhN,EAAQxB,EAAW6B,KAAMrC,GAE9B,GAAMiP,EAAIjN,EAAM,IACf,GAAkB,IAAbS,EAAiB,CAIrB,GAHAR,EAAOhC,EAAQ8C,eAAgBkM,IAG1BhN,IAAQA,EAAKe,WAQjB,MAAOqG,EALP,IAAKpH,EAAKgB,KAAOgM,EAEhB,MADA5F,GAAQhK,KAAM4C,GACPoH,MAOT,IAAKpJ,EAAQyC,gBAAkBT,EAAOhC,EAAQyC,cAAcK,eAAgBkM,KAC3ElD,EAAU9L,EAASgC,IAAUA,EAAKgB,KAAOgM,EAEzC,MADA5F,GAAQhK,KAAM4C,GACPoH,MAKH,CAAA,GAAKrH,EAAM,GAEjB,MADA3C,GAAK2E,MAAOqF,EAASpJ,EAAQwI,qBAAsBzI,IAC5CqJ,CAGD,KAAM4F,EAAIjN,EAAM,KAAO+E,EAAQuI,wBAA0BrP,EAAQqP,uBAEvE,MADAjQ,GAAK2E,MAAOqF,EAASpJ,EAAQqP,uBAAwBL,IAC9C5F,EAKT,GAAKtC,EAAQwI,OAAS3D,IAAcA,EAAUjJ,KAAM3C,IAAc,CASjE,GARAmP,EAAMzE,EAAMpF,EACZ8J,EAAanP,EACboP,EAA2B,IAAb5M,GAAkBzC,EAMd,IAAbyC,GAAqD,WAAnCxC,EAAQ8I,SAASC,cAA6B,CACpEkG,EAASM,GAAUxP,IAEb0K,EAAMzK,EAAQwP,aAAa,OAChCN,EAAMzE,EAAIjF,QAAS6I,GAAS,QAE5BrO,EAAQyP,aAAc,KAAMP,GAE7BA,EAAM,QAAUA,EAAM,MAEtB9K,EAAI6K,EAAO9M,MACX,OAAQiC,IACP6K,EAAO7K,GAAK8K,EAAMQ,GAAYT,EAAO7K,GAEtC+K,GAAa9B,EAAS3K,KAAM3C,IAAcC,EAAQ+C,YAAc/C,EAChEoP,EAAcH,EAAOU,KAAK,KAG3B,GAAKP,EACJ,IAIC,MAHAhQ,GAAK2E,MAAOqF,EACX+F,EAAWS,iBAAkBR,IAEvBhG,EACN,MAAMyG,IACN,QACKpF,GACLzK,EAAQ8P,gBAAgB,QAQ7B,MAAOC,IAAQhQ,EAASyF,QAASlF,EAAO,MAAQN,EAASoJ,EAAS2F,GAOnE,QAASiB,IAAU/P,GAClB,MAAOiO,GAAQxL,KAAMzC,EAAK,IAS3B,QAASiM,MACR,GAAI+D,KAEJ,SAASC,GAAOtJ,EAAKoC,GAMpB,MAJKiH,GAAK7Q,KAAMwH,GAAO,KAAQuE,EAAKgF,mBAE5BD,GAAOD,EAAKG,SAEZF,EAAOtJ,GAAQoC,EAExB,MAAOkH,GAOR,QAASG,IAAcpQ,GAEtB,MADAA,GAAIoF,IAAY,EACTpF,EAOR,QAASqQ,IAAQrQ,GAChB,GAAIsQ,GAAMhS,EAASiJ,cAAc,MAEjC,KACC,QAASvH,EAAIsQ,GACZ,MAAO1J,GACR,OAAO,EACN,QAEI0J,EAAIxN,YACRwN,EAAIxN,WAAWyN,YAAaD,GAG7BA,EAAM,MAUR,QAASE,IAAWC,EAAOC,EAASjO,GACnCgO,EAAQA,EAAMzF,MAAM,IACpB,IAAI2F,GACHxM,EAAIsM,EAAMvO,OACV0O,EAAYnO,EAAO,KAAOiO,CAE3B,OAAQvM,KAEAwM,EAAUzF,EAAK2F,WAAYJ,EAAMtM,MAASwM,IAAYD,IAC5DxF,EAAK2F,WAAYJ,EAAMtM,IAAOyM,GAUjC,QAASE,IAAa/O,EAAM+C,GAE3B,GAAIiM,GAAMhP,EAAKiP,iBAAkBlM,EACjC,OAAOiM,IAAOA,EAAIE,UACjBF,EAAIhI,MACJhH,EAAM+C,MAAW,EAAOA,EAAKgE,cAAgB,KAS/C,QAASoI,IAAsBnP,EAAM+C,GAEpC,MAAO/C,GAAKwN,aAAczK,EAA6B,SAAvBA,EAAKgE,cAA2B,EAAI,GAQrE,QAASqI,IAAcpP,GAItB,MAAqC,UAAhCA,EAAK8G,SAASC,cACX/G,EAAKqP,aADb,EAWD,QAASC,IAAcC,EAAGC,GACzB,GAAIC,GAAMD,GAAKD,EACdG,EAAOD,GAAsB,IAAfF,EAAE/O,UAAiC,IAAfgP,EAAEhP,YAChCgP,EAAEG,aAAenF,KACjB+E,EAAEI,aAAenF,EAGtB,IAAKkF,EACJ,MAAOA,EAIR,IAAKD,EACJ,MAASA,EAAMA,EAAIG,YAClB,GAAKH,IAAQD,EACZ,MAAO,EAKV,OAAOD,GAAI,EAAI,GAOhB,QAASM,IAAmBvQ,GAC3B,MAAO,UAAUU,GAChB,GAAI+C,GAAO/C,EAAK8G,SAASC,aACzB,OAAgB,UAAThE,GAAoB/C,EAAKV,OAASA,GAQ3C,QAASwQ,IAAoBxQ,GAC5B,MAAO,UAAUU,GAChB,GAAI+C,GAAO/C,EAAK8G,SAASC,aACzB,QAAiB,UAAThE,GAA6B,WAATA,IAAsB/C,EAAKV,OAASA,GAQlE,QAASyQ,IAAwB9R,GAChC,MAAOoQ,IAAa,SAAU2B,GAE7B,MADAA,IAAYA,EACL3B,GAAa,SAAUtB,EAAMlD,GACnC,GAAIvH,GACH2N,EAAehS,KAAQ8O,EAAK5M,OAAQ6P,GACpC5N,EAAI6N,EAAa9P,MAGlB,OAAQiC,IACF2K,EAAOzK,EAAI2N,EAAa7N,MAC5B2K,EAAKzK,KAAOuH,EAAQvH,GAAKyK,EAAKzK,SAWnC+G,EAAQyD,GAAOzD,MAAQ,SAAUrJ,GAGhC,GAAIvD,GAAkBuD,IAASA,EAAKS,eAAiBT,GAAMvD,eAC3D,OAAOA,GAA+C,SAA7BA,EAAgBqK,UAAsB,GAIhEhC,EAAUgI,GAAOhI,WAOjB2E,EAAcqD,GAAOrD,YAAc,SAAUyG,GAC5C,GAAIC,GAAMD,EAAOA,EAAKzP,eAAiByP,EAAOnG,EAC7CqG,EAASD,EAAIE,YAGd,OAAKF,KAAQ5T,GAA6B,IAAjB4T,EAAI3P,UAAmB2P,EAAI1T,iBAKpDF,EAAW4T,EACX3T,EAAU2T,EAAI1T,gBAGdiN,GAAkBL,EAAO8G,GAKpBC,GAAUA,EAAOtH,cACrBsH,EAAOxH,YAAa,iBAAkB,WACrCa,MASF3E,EAAQkG,WAAasD,GAAO,SAAUC,GAYrC,MARAA,GAAI+B,UAAY,mBAChB7B,GAAW,yBAA0BU,GAA8D,MAAxCZ,EAAIgC,WAAW/C,aAAa,SAIvFiB,GAAW7D,EAAUmE,GAA6C,MAAhCR,EAAIf,aAAa,aAEnDe,EAAIiC,UAAY,KACRjC,EAAIf,aAAa,eAK1B1I,EAAQ2L,MAAQnC,GAAO,SAAUC,GAGhC,MAFAA,GAAI+B,UAAY,UAChB/B,EAAIgC,WAAW9C,aAAc,QAAS,IACY,KAA3Cc,EAAIgC,WAAW/C,aAAc,WAKrCiB,GAAW,QAASW,GAActK,EAAQkG,YAAclG,EAAQ2L,OAMhE3L,EAAQ0B,qBAAuB8H,GAAO,SAAUC,GAE/C,MADAA,GAAImC,YAAaP,EAAIQ,cAAc,MAC3BpC,EAAI/H,qBAAqB,KAAKrG,SAIvC2E,EAAQuI,uBAAyBiB,GAAO,SAAUC,GAQjD,MAPAA,GAAI+B,UAAY,+CAIhB/B,EAAIgC,WAAWC,UAAY,IAGuB,IAA3CjC,EAAIlB,uBAAuB,KAAKlN,SAOxC2E,EAAQ8L,QAAUtC,GAAO,SAAUC,GAElC,MADA/R,GAAQkU,YAAanC,GAAMvN,GAAKqC,GACxB8M,EAAIU,oBAAsBV,EAAIU,kBAAmBxN,GAAUlD,SAI/D2E,EAAQ8L,SACZzH,EAAK9I,KAAS,GAAI,SAAUW,EAAIhD,GAC/B,SAAYA,GAAQ8C,iBAAmByJ,GAAgBb,EAAiB,CACvE,GAAIsD,GAAIhP,EAAQ8C,eAAgBE,EAGhC,OAAOgM,IAAKA,EAAEjM,YAAciM,QAG9B7D,EAAK2H,OAAW,GAAI,SAAU9P,GAC7B,GAAI+P,GAAS/P,EAAGwC,QAAS8I,GAAWC,GACpC,OAAO,UAAUvM,GAChB,MAAOA,GAAKwN,aAAa,QAAUuD,YAM9B5H,GAAK9I,KAAS,GAErB8I,EAAK2H,OAAW,GAAK,SAAU9P,GAC9B,GAAI+P,GAAS/P,EAAGwC,QAAS8I,GAAWC,GACpC,OAAO,UAAUvM,GAChB,GAAIkQ,SAAclQ,GAAKiP,mBAAqB1E,GAAgBvK,EAAKiP,iBAAiB,KAClF,OAAOiB,IAAQA,EAAKlJ,QAAU+J,KAMjC5H,EAAK9I,KAAU,IAAIyE,EAAQ0B,qBAC1B,SAAUwK,EAAKhT,GACd,aAAYA,GAAQwI,uBAAyB+D,EACrCvM,EAAQwI,qBAAsBwK,GADtC,GAID,SAAUA,EAAKhT,GACd,GAAIgC,GACHkG,KACA9D,EAAI,EACJgF,EAAUpJ,EAAQwI,qBAAsBwK,EAGzC,IAAa,MAARA,EAAc,CAClB,MAAShR,EAAOoH,EAAQhF,KACA,IAAlBpC,EAAKQ,UACT0F,EAAI9I,KAAM4C,EAIZ,OAAOkG,GAER,MAAOkB,IAIT+B,EAAK9I,KAAY,MAAIyE,EAAQuI,wBAA0B,SAAUmD,EAAWxS,GAC3E,aAAYA,GAAQqP,yBAA2B9C,GAAgBb,EACvD1L,EAAQqP,uBAAwBmD,GADxC,GAWD5G,KAOAD,MAEM7E,EAAQwI,IAAMU,GAASmC,EAAIvC,qBAGhCU,GAAO,SAAUC,GAMhBA,EAAI+B,UAAY,iDAIV/B,EAAIX,iBAAiB,cAAczN,QACxCwJ,EAAUvM,KAAM,MAAQyN,EAAa,aAAeD,EAAW,KAM1D2D,EAAIX,iBAAiB,YAAYzN,QACtCwJ,EAAUvM,KAAK,cAIjBkR,GAAO,SAAUC,GAOhB,GAAIkC,GAAQN,EAAI3K,cAAc,QAC9BiL,GAAMhD,aAAc,OAAQ,UAC5Bc,EAAImC,YAAaD,GAAQhD,aAAc,IAAK,IAEvCc,EAAIX,iBAAiB,WAAWzN,QACpCwJ,EAAUvM,KAAM,SAAWyN,EAAa,gBAKnC0D,EAAIX,iBAAiB,YAAYzN,QACtCwJ,EAAUvM,KAAM,WAAY,aAI7BmR,EAAIX,iBAAiB,QACrBjE,EAAUvM,KAAK,YAIX0H,EAAQmM,gBAAkBjD,GAAWnE,EAAUrN,EAAQ0U,uBAC5D1U,EAAQ2U,oBACR3U,EAAQ4U,kBACR5U,EAAQ6U,qBAER/C,GAAO,SAAUC,GAGhBzJ,EAAQwM,kBAAoBzH,EAAQ1I,KAAMoN,EAAK,OAI/C1E,EAAQ1I,KAAMoN,EAAK,aACnB3E,EAAcxM,KAAM,KAAM6N,KAI5BtB,EAAYA,EAAUxJ,QAAc+K,OAAQvB,EAAUgE,KAAK,MAC3D/D,EAAgBA,EAAczJ,QAAc+K,OAAQtB,EAAc+D,KAAK,MAQvE7D,EAAWkE,GAASxR,EAAQsN,WAAatN,EAAQ+U,wBAChD,SAAUhC,EAAGC,GACZ,GAAIgC,GAAuB,IAAfjC,EAAE/O,SAAiB+O,EAAE9S,gBAAkB8S,EAClDkC,EAAMjC,GAAKA,EAAEzO,UACd,OAAOwO,KAAMkC,MAAWA,GAAwB,IAAjBA,EAAIjR,YAClCgR,EAAM1H,SACL0H,EAAM1H,SAAU2H,GAChBlC,EAAEgC,yBAA8D,GAAnChC,EAAEgC,wBAAyBE,MAG3D,SAAUlC,EAAGC,GACZ,GAAKA,EACJ,MAASA,EAAIA,EAAEzO,WACd,GAAKyO,IAAMD,EACV,OAAO,CAIV,QAAO,GAQTzK,EAAQ4M,aAAepD,GAAO,SAAUqD,GAEvC,MAAkE,GAA3DA,EAAKJ,wBAAyBpB,EAAI3K,cAAc,UAIxD8E,EAAY9N,EAAQ+U,wBACpB,SAAUhC,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,MADAnF,IAAe,EACR,CAGR,IAAIuH,GAAUpC,EAAE+B,yBAA2BhC,EAAEgC,yBAA2BhC,EAAEgC,wBAAyB/B,EAEnG,OAAKoC,GAEW,EAAVA,IACF9M,EAAQ4M,cAAgBlC,EAAE+B,wBAAyBhC,KAAQqC,EAGxDrC,IAAMY,GAAOrG,EAASC,EAAcwF,GACjC,GAEHC,IAAMW,GAAOrG,EAASC,EAAcyF,GACjC,EAIDhG,EACJhM,EAAQ2D,KAAMqI,EAAW+F,GAAM/R,EAAQ2D,KAAMqI,EAAWgG,GAC1D,EAGe,EAAVoC,EAAc,GAAK,EAIpBrC,EAAEgC,wBAA0B,GAAK,GAEzC,SAAUhC,EAAGC,GACZ,GAAIC,GACHrN,EAAI,EACJyP,EAAMtC,EAAExO,WACR0Q,EAAMjC,EAAEzO,WACR+Q,GAAOvC,GACPwC,GAAOvC,EAGR,IAAKD,IAAMC,EAEV,MADAnF,IAAe,EACR,CAGD,KAAMwH,IAAQJ,EACpB,MAAOlC,KAAMY,EAAM,GAClBX,IAAMW,EAAM,EACZ0B,EAAM,GACNJ,EAAM,EACNjI,EACEhM,EAAQ2D,KAAMqI,EAAW+F,GAAM/R,EAAQ2D,KAAMqI,EAAWgG,GAC1D,CAGK,IAAKqC,IAAQJ,EACnB,MAAOnC,IAAcC,EAAGC,EAIzBC,GAAMF,CACN,OAASE,EAAMA,EAAI1O,WAClB+Q,EAAGE,QAASvC,EAEbA,GAAMD,CACN,OAASC,EAAMA,EAAI1O,WAClBgR,EAAGC,QAASvC,EAIb,OAAQqC,EAAG1P,KAAO2P,EAAG3P,GACpBA,GAGD,OAAOA,GAENkN,GAAcwC,EAAG1P,GAAI2P,EAAG3P,IAGxB0P,EAAG1P,KAAO2H,EAAe,GACzBgI,EAAG3P,KAAO2H,EAAe,EACzB,GAGKoG,GAtWC5T,GAyWTuQ,GAAOjD,QAAU,SAAUoI,EAAMC,GAChC,MAAOpF,IAAQmF,EAAM,KAAM,KAAMC,IAGlCpF,GAAOmE,gBAAkB,SAAUjR,EAAMiS,GASxC,IAPOjS,EAAKS,eAAiBT,KAAWzD,GACvCkN,EAAazJ,GAIdiS,EAAOA,EAAKzO,QAAS8H,EAAkB,aAElCxG,EAAQmM,kBAAmBvH,GAC5BE,GAAkBA,EAAclJ,KAAMuR,IACtCtI,GAAkBA,EAAUjJ,KAAMuR,IAErC,IACC,GAAIzQ,GAAMqI,EAAQ1I,KAAMnB,EAAMiS,EAG9B,IAAKzQ,GAAOsD,EAAQwM,mBAGlBtR,EAAKzD,UAAuC,KAA3ByD,EAAKzD,SAASiE,SAChC,MAAOgB,GAEP,MAAMqD,IAGT,MAAOiI,IAAQmF,EAAM1V,EAAU,MAAOyD,IAAQG,OAAS,GAGxD2M,GAAOhD,SAAW,SAAU9L,EAASgC,GAKpC,OAHOhC,EAAQyC,eAAiBzC,KAAczB,GAC7CkN,EAAazL,GAEP8L,EAAU9L,EAASgC,IAG3B8M,GAAOjM,KAAO,SAAUb,EAAM+C,IAEtB/C,EAAKS,eAAiBT,KAAWzD,GACvCkN,EAAazJ,EAGd,IAAI/B,GAAKkL,EAAK2F,WAAY/L,EAAKgE,eAE9BiI,EAAQ/Q,GAAMwM,EAAOtJ,KAAMgI,EAAK2F,WAAY/L,EAAKgE,eAChD9I,EAAI+B,EAAM+C,GAAO2G,GACjBxN,CAEF,OAAO8S,KAAQ9S,EACd4I,EAAQkG,aAAetB,EACtB1J,EAAKwN,aAAczK,IAClBiM,EAAMhP,EAAKiP,iBAAiBlM,KAAUiM,EAAIE,UAC1CF,EAAIhI,MACJ,KACFgI,GAGFlC,GAAO7H,MAAQ,SAAUC,GACxB,KAAUC,OAAO,0CAA4CD,IAO9D4H,GAAOqF,WAAa,SAAU/K,GAC7B,GAAIpH,GACHoS,KACA9P,EAAI,EACJF,EAAI,CAOL,IAJAiI,GAAgBvF,EAAQuN,iBACxB7I,GAAa1E,EAAQwN,YAAclL,EAAQ9J,MAAO,GAClD8J,EAAQ3E,KAAM6H,GAETD,EAAe,CACnB,MAASrK,EAAOoH,EAAQhF,KAClBpC,IAASoH,EAAShF,KACtBE,EAAI8P,EAAWhV,KAAMgF,GAGvB,OAAQE,IACP8E,EAAQ1E,OAAQ0P,EAAY9P,GAAK,GAInC,MAAO8E,IAORgC,EAAU0D,GAAO1D,QAAU,SAAUpJ,GACpC,GAAIkQ,GACH1O,EAAM,GACNY,EAAI,EACJ5B,EAAWR,EAAKQ,QAEjB,IAAMA,GAMC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAGjE,GAAiC,gBAArBR,GAAKuS,YAChB,MAAOvS,GAAKuS,WAGZ,KAAMvS,EAAOA,EAAKuQ,WAAYvQ,EAAMA,EAAOA,EAAK4P,YAC/CpO,GAAO4H,EAASpJ,OAGZ,IAAkB,IAAbQ,GAA+B,IAAbA,EAC7B,MAAOR,GAAKwS,cAhBZ,MAAStC,EAAOlQ,EAAKoC,GAAKA,IAEzBZ,GAAO4H,EAAS8G,EAkBlB,OAAO1O,IAGR2H,EAAO2D,GAAO2F,WAGbtE,YAAa,GAEbuE,aAAcrE,GAEdtO,MAAO0L,EAEPqD,cAEAzO,QAEAsS,UACCC,KAAOC,IAAK,aAAc5Q,OAAO,GACjC6Q,KAAOD,IAAK,cACZE,KAAOF,IAAK,kBAAmB5Q,OAAO,GACtC+Q,KAAOH,IAAK,oBAGbI,WACCpH,KAAQ,SAAU9L,GAUjB,MATAA,GAAM,GAAKA,EAAM,GAAGyD,QAAS8I,GAAWC,IAGxCxM,EAAM,IAAOA,EAAM,IAAMA,EAAM,IAAM,IAAKyD,QAAS8I,GAAWC,IAE5C,OAAbxM,EAAM,KACVA,EAAM,GAAK,IAAMA,EAAM,GAAK,KAGtBA,EAAMzC,MAAO,EAAG,IAGxByO,MAAS,SAAUhM,GA6BlB,MAlBAA,GAAM,GAAKA,EAAM,GAAGgH,cAEY,QAA3BhH,EAAM,GAAGzC,MAAO,EAAG,IAEjByC,EAAM,IACX+M,GAAO7H,MAAOlF,EAAM,IAKrBA,EAAM,KAAQA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAAK,GAAmB,SAAbA,EAAM,IAA8B,QAAbA,EAAM,KACzFA,EAAM,KAAUA,EAAM,GAAKA,EAAM,IAAqB,QAAbA,EAAM,KAGpCA,EAAM,IACjB+M,GAAO7H,MAAOlF,EAAM,IAGdA,GAGR+L,OAAU,SAAU/L,GACnB,GAAImT,GACHC,GAAYpT,EAAM,IAAMA,EAAM,EAE/B,OAAK0L,GAAiB,MAAE/K,KAAMX,EAAM,IAC5B,MAIHA,EAAM,IAAMA,EAAM,KAAO7D,EAC7B6D,EAAM,GAAKA,EAAM,GAGNoT,GAAY5H,EAAQ7K,KAAMyS,KAEpCD,EAAS3F,GAAU4F,GAAU,MAE7BD,EAASC,EAAS3V,QAAS,IAAK2V,EAAShT,OAAS+S,GAAWC,EAAShT,UAGvEJ,EAAM,GAAKA,EAAM,GAAGzC,MAAO,EAAG4V,GAC9BnT,EAAM,GAAKoT,EAAS7V,MAAO,EAAG4V,IAIxBnT,EAAMzC,MAAO,EAAG,MAIzBwT,QAEClF,IAAO,SAAUwH,GAChB,GAAItM,GAAWsM,EAAiB5P,QAAS8I,GAAWC,IAAYxF,aAChE,OAA4B,MAArBqM,EACN,WAAa,OAAO,GACpB,SAAUpT,GACT,MAAOA,GAAK8G,UAAY9G,EAAK8G,SAASC,gBAAkBD,IAI3D6E,MAAS,SAAU6E,GAClB,GAAI6C,GAAUpJ,EAAYuG,EAAY,IAEtC,OAAO6C,KACLA,EAAcnI,OAAQ,MAAQL,EAAa,IAAM2F,EAAY,IAAM3F,EAAa,SACjFZ,EAAYuG,EAAW,SAAUxQ,GAChC,MAAOqT,GAAQ3S,KAAgC,gBAAnBV,GAAKwQ,WAA0BxQ,EAAKwQ,iBAAoBxQ,GAAKwN,eAAiBjD,GAAgBvK,EAAKwN,aAAa,UAAY,OAI3J3B,KAAQ,SAAU9I,EAAMuQ,EAAUC,GACjC,MAAO,UAAUvT,GAChB,GAAIwT,GAAS1G,GAAOjM,KAAMb,EAAM+C,EAEhC,OAAe,OAAVyQ,EACgB,OAAbF,EAEFA,GAINE,GAAU,GAEU,MAAbF,EAAmBE,IAAWD,EACvB,OAAbD,EAAoBE,IAAWD,EAClB,OAAbD,EAAoBC,GAAqC,IAA5BC,EAAOhW,QAAS+V,GAChC,OAAbD,EAAoBC,GAASC,EAAOhW,QAAS+V,GAAU,GAC1C,OAAbD,EAAoBC,GAASC,EAAOlW,OAAQiW,EAAMpT,UAAaoT,EAClD,OAAbD,GAAsB,IAAME,EAAS,KAAMhW,QAAS+V,GAAU,GACjD,OAAbD,EAAoBE,IAAWD,GAASC,EAAOlW,MAAO,EAAGiW,EAAMpT,OAAS,KAAQoT,EAAQ,KACxF,IAZO,IAgBVxH,MAAS,SAAUzM,EAAMmU,EAAMzD,EAAU/N,EAAOE,GAC/C,GAAIuR,GAAgC,QAAvBpU,EAAKhC,MAAO,EAAG,GAC3BqW,EAA+B,SAArBrU,EAAKhC,MAAO,IACtBsW,EAAkB,YAATH,CAEV,OAAiB,KAAVxR,GAAwB,IAATE,EAGrB,SAAUnC,GACT,QAASA,EAAKe,YAGf,SAAUf,EAAMhC,EAASiI,GACxB,GAAIiI,GAAO2F,EAAY3D,EAAMR,EAAMoE,EAAWC,EAC7ClB,EAAMa,IAAWC,EAAU,cAAgB,kBAC3CvD,EAASpQ,EAAKe,WACdgC,EAAO6Q,GAAU5T,EAAK8G,SAASC,cAC/BiN,GAAY/N,IAAQ2N,CAErB,IAAKxD,EAAS,CAGb,GAAKsD,EAAS,CACb,MAAQb,EAAM,CACb3C,EAAOlQ,CACP,OAASkQ,EAAOA,EAAM2C,GACrB,GAAKe,EAAS1D,EAAKpJ,SAASC,gBAAkBhE,EAAyB,IAAlBmN,EAAK1P,SACzD,OAAO,CAITuT,GAAQlB,EAAe,SAATvT,IAAoByU,GAAS,cAE5C,OAAO,EAMR,GAHAA,GAAUJ,EAAUvD,EAAOG,WAAaH,EAAO6D,WAG1CN,GAAWK,EAAW,CAE1BH,EAAazD,EAAQ/M,KAAc+M,EAAQ/M,OAC3C6K,EAAQ2F,EAAYvU,OACpBwU,EAAY5F,EAAM,KAAOlE,GAAWkE,EAAM,GAC1CwB,EAAOxB,EAAM,KAAOlE,GAAWkE,EAAM,GACrCgC,EAAO4D,GAAa1D,EAAOzK,WAAYmO,EAEvC,OAAS5D,IAAS4D,GAAa5D,GAAQA,EAAM2C,KAG3CnD,EAAOoE,EAAY,IAAMC,EAAMrJ,MAGhC,GAAuB,IAAlBwF,EAAK1P,YAAoBkP,GAAQQ,IAASlQ,EAAO,CACrD6T,EAAYvU,IAAW0K,EAAS8J,EAAWpE,EAC3C,YAKI,IAAKsE,IAAa9F,GAASlO,EAAMqD,KAAcrD,EAAMqD,QAAkB/D,KAAW4O,EAAM,KAAOlE,EACrG0F,EAAOxB,EAAM,OAKb,OAASgC,IAAS4D,GAAa5D,GAAQA,EAAM2C,KAC3CnD,EAAOoE,EAAY,IAAMC,EAAMrJ,MAEhC,IAAOkJ,EAAS1D,EAAKpJ,SAASC,gBAAkBhE,EAAyB,IAAlBmN,EAAK1P,aAAsBkP,IAE5EsE,KACH9D,EAAM7M,KAAc6M,EAAM7M,QAAkB/D,IAAW0K,EAAS0F,IAG7DQ,IAASlQ,GACb,KAQJ,OADA0P,IAAQvN,EACDuN,IAASzN,GAA4B,IAAjByN,EAAOzN,GAAeyN,EAAOzN,GAAS,KAKrE6J,OAAU,SAAUoI,EAAQlE,GAK3B,GAAIpO,GACH3D,EAAKkL,EAAK8B,QAASiJ,IAAY/K,EAAKgL,WAAYD,EAAOnN,gBACtD+F,GAAO7H,MAAO,uBAAyBiP,EAKzC,OAAKjW,GAAIoF,GACDpF,EAAI+R,GAIP/R,EAAGkC,OAAS,GAChByB,GAASsS,EAAQA,EAAQ,GAAIlE,GACtB7G,EAAKgL,WAAWvW,eAAgBsW,EAAOnN,eAC7CsH,GAAa,SAAUtB,EAAMlD,GAC5B,GAAIuK,GACHC,EAAUpW,EAAI8O,EAAMiD,GACpB5N,EAAIiS,EAAQlU,MACb,OAAQiC,IACPgS,EAAM5W,EAAQ2D,KAAM4L,EAAMsH,EAAQjS,IAClC2K,EAAMqH,KAAWvK,EAASuK,GAAQC,EAAQjS,MAG5C,SAAUpC,GACT,MAAO/B,GAAI+B,EAAM,EAAG4B,KAIhB3D,IAITgN,SAECqJ,IAAOjG,GAAa,SAAUtQ,GAI7B,GAAI0S,MACHrJ,KACAmN,EAAUjL,EAASvL,EAASyF,QAASlF,EAAO,MAE7C,OAAOiW,GAASlR,GACfgL,GAAa,SAAUtB,EAAMlD,EAAS7L,EAASiI,GAC9C,GAAIjG,GACHwU,EAAYD,EAASxH,EAAM,KAAM9G,MACjC7D,EAAI2K,EAAK5M,MAGV,OAAQiC,KACDpC,EAAOwU,EAAUpS,MACtB2K,EAAK3K,KAAOyH,EAAQzH,GAAKpC,MAI5B,SAAUA,EAAMhC,EAASiI,GAGxB,MAFAwK,GAAM,GAAKzQ,EACXuU,EAAS9D,EAAO,KAAMxK,EAAKmB,IACnBA,EAAQsD,SAInB+J,IAAOpG,GAAa,SAAUtQ,GAC7B,MAAO,UAAUiC,GAChB,MAAO8M,IAAQ/O,EAAUiC,GAAOG,OAAS,KAI3C2J,SAAYuE,GAAa,SAAUnH,GAClC,MAAO,UAAUlH,GAChB,OAASA,EAAKuS,aAAevS,EAAK0U,WAAatL,EAASpJ,IAASxC,QAAS0J,GAAS,MAWrFyN,KAAQtG,GAAc,SAAUsG,GAM/B,MAJMnJ,GAAY9K,KAAKiU,GAAQ,KAC9B7H,GAAO7H,MAAO,qBAAuB0P,GAEtCA,EAAOA,EAAKnR,QAAS8I,GAAWC,IAAYxF,cACrC,SAAU/G,GAChB,GAAI4U,EACJ,GACC,IAAMA,EAAWlL,EAChB1J,EAAK2U,KACL3U,EAAKwN,aAAa,aAAexN,EAAKwN,aAAa,QAGnD,MADAoH,GAAWA,EAAS7N,cACb6N,IAAaD,GAA2C,IAAnCC,EAASpX,QAASmX,EAAO,YAE5C3U,EAAOA,EAAKe,aAAiC,IAAlBf,EAAKQ,SAC3C,QAAO,KAKT0C,OAAU,SAAUlD,GACnB,GAAI6U,GAAO5Y,EAAOK,UAAYL,EAAOK,SAASuY,IAC9C,OAAOA,IAAQA,EAAKvX,MAAO,KAAQ0C,EAAKgB,IAGzC8T,KAAQ,SAAU9U,GACjB,MAAOA,KAASxD,GAGjBuY,MAAS,SAAU/U,GAClB,MAAOA,KAASzD,EAASyY,iBAAmBzY,EAAS0Y,UAAY1Y,EAAS0Y,gBAAkBjV,EAAKV,MAAQU,EAAKkV,OAASlV,EAAKmV,WAI7HC,QAAW,SAAUpV,GACpB,MAAOA,GAAKqV,YAAa,GAG1BA,SAAY,SAAUrV,GACrB,MAAOA,GAAKqV,YAAa,GAG1BC,QAAW,SAAUtV,GAGpB,GAAI8G,GAAW9G,EAAK8G,SAASC,aAC7B,OAAqB,UAAbD,KAA0B9G,EAAKsV,SAA0B,WAAbxO,KAA2B9G,EAAKuV,UAGrFA,SAAY,SAAUvV,GAOrB,MAJKA,GAAKe,YACTf,EAAKe,WAAWyU,cAGVxV,EAAKuV,YAAa,GAI1BE,MAAS,SAAUzV,GAMlB,IAAMA,EAAOA,EAAKuQ,WAAYvQ,EAAMA,EAAOA,EAAK4P,YAC/C,GAAK5P,EAAK8G,SAAW,KAAyB,IAAlB9G,EAAKQ,UAAoC,IAAlBR,EAAKQ,SACvD,OAAO,CAGT,QAAO,GAGR4P,OAAU,SAAUpQ,GACnB,OAAQmJ,EAAK8B,QAAe,MAAGjL,IAIhC0V,OAAU,SAAU1V,GACnB,MAAOoM,IAAQ1L,KAAMV,EAAK8G,WAG3B2J,MAAS,SAAUzQ,GAClB,MAAOmM,IAAQzL,KAAMV,EAAK8G,WAG3B6O,OAAU,SAAU3V,GACnB,GAAI+C,GAAO/C,EAAK8G,SAASC,aACzB,OAAgB,UAAThE,GAAkC,WAAd/C,EAAKV,MAA8B,WAATyD,GAGtDmE,KAAQ,SAAUlH,GACjB,GAAIa,EAGJ,OAAuC,UAAhCb,EAAK8G,SAASC,eACN,SAAd/G,EAAKV,OACmC,OAArCuB,EAAOb,EAAKwN,aAAa,UAAoB3M,EAAKkG,gBAAkB/G,EAAKV,OAI9E2C,MAAS8N,GAAuB,WAC/B,OAAS,KAGV5N,KAAQ4N,GAAuB,SAAUE,EAAc9P,GACtD,OAASA,EAAS,KAGnB+B,GAAM6N,GAAuB,SAAUE,EAAc9P,EAAQ6P,GAC5D,OAAoB,EAAXA,EAAeA,EAAW7P,EAAS6P,KAG7C4F,KAAQ7F,GAAuB,SAAUE,EAAc9P,GACtD,GAAIiC,GAAI,CACR,MAAYjC,EAAJiC,EAAYA,GAAK,EACxB6N,EAAa7S,KAAMgF,EAEpB,OAAO6N,KAGR4F,IAAO9F,GAAuB,SAAUE,EAAc9P,GACrD,GAAIiC,GAAI,CACR,MAAYjC,EAAJiC,EAAYA,GAAK,EACxB6N,EAAa7S,KAAMgF,EAEpB,OAAO6N,KAGR6F,GAAM/F,GAAuB,SAAUE,EAAc9P,EAAQ6P,GAC5D,GAAI5N,GAAe,EAAX4N,EAAeA,EAAW7P,EAAS6P,CAC3C,QAAU5N,GAAK,GACd6N,EAAa7S,KAAMgF,EAEpB,OAAO6N,KAGR8F,GAAMhG,GAAuB,SAAUE,EAAc9P,EAAQ6P,GAC5D,GAAI5N,GAAe,EAAX4N,EAAeA,EAAW7P,EAAS6P,CAC3C,MAAc7P,IAAJiC,GACT6N,EAAa7S,KAAMgF,EAEpB,OAAO6N,MAMV,KAAM7N,KAAO4T,OAAO,EAAMC,UAAU,EAAMC,MAAM,EAAMC,UAAU,EAAMC,OAAO,GAC5EjN,EAAK8B,QAAS7I,GAAMyN,GAAmBzN,EAExC,KAAMA,KAAOiU,QAAQ,EAAMC,OAAO,GACjCnN,EAAK8B,QAAS7I,GAAM0N,GAAoB1N,EAGzC,SAASmL,IAAUxP,EAAUwY,GAC5B,GAAIlC,GAAStU,EAAOyW,EAAQlX,EAC3BmX,EAAOxJ,EAAQyJ,EACfC,EAASxM,EAAYpM,EAAW,IAEjC,IAAK4Y,EACJ,MAAOJ,GAAY,EAAII,EAAOrZ,MAAO,EAGtCmZ,GAAQ1Y,EACRkP,KACAyJ,EAAavN,EAAK8J,SAElB,OAAQwD,EAAQ,GAGTpC,IAAYtU,EAAQoL,EAAO/K,KAAMqW,OACjC1W,IAEJ0W,EAAQA,EAAMnZ,MAAOyC,EAAM,GAAGI,SAAYsW,GAE3CxJ,EAAO7P,KAAMoZ,OAGdnC,GAAU,GAGJtU,EAAQqL,EAAahL,KAAMqW,MAChCpC,EAAUtU,EAAMqO,QAChBoI,EAAOpZ,MACN4J,MAAOqN,EAEP/U,KAAMS,EAAM,GAAGyD,QAASlF,EAAO,OAEhCmY,EAAQA,EAAMnZ,MAAO+W,EAAQlU,QAI9B,KAAMb,IAAQ6J,GAAK2H,SACZ/Q,EAAQ0L,EAAWnM,GAAOc,KAAMqW,KAAcC,EAAYpX,MAC9DS,EAAQ2W,EAAYpX,GAAQS,MAC7BsU,EAAUtU,EAAMqO,QAChBoI,EAAOpZ,MACN4J,MAAOqN,EACP/U,KAAMA,EACNuK,QAAS9J,IAEV0W,EAAQA,EAAMnZ,MAAO+W,EAAQlU,QAI/B,KAAMkU,EACL,MAOF,MAAOkC,GACNE,EAAMtW,OACNsW,EACC3J,GAAO7H,MAAOlH,GAEdoM,EAAYpM,EAAUkP,GAAS3P,MAAO,GAGzC,QAASoQ,IAAY8I,GACpB,GAAIpU,GAAI,EACPC,EAAMmU,EAAOrW,OACbpC,EAAW,EACZ,MAAYsE,EAAJD,EAASA,IAChBrE,GAAYyY,EAAOpU,GAAG4E,KAEvB,OAAOjJ,GAGR,QAAS6Y,IAAerC,EAASsC,EAAYC,GAC5C,GAAIjE,GAAMgE,EAAWhE,IACpBkE,EAAmBD,GAAgB,eAARjE,EAC3BmE,EAAWlV,GAEZ,OAAO+U,GAAW5U,MAEjB,SAAUjC,EAAMhC,EAASiI,GACxB,MAASjG,EAAOA,EAAM6S,GACrB,GAAuB,IAAlB7S,EAAKQ,UAAkBuW,EAC3B,MAAOxC,GAASvU,EAAMhC,EAASiI,IAMlC,SAAUjG,EAAMhC,EAASiI,GACxB,GAAIb,GAAM8I,EAAO2F,EAChBoD,EAASjN,EAAU,IAAMgN,CAG1B,IAAK/Q,GACJ,MAASjG,EAAOA,EAAM6S,GACrB,IAAuB,IAAlB7S,EAAKQ,UAAkBuW,IACtBxC,EAASvU,EAAMhC,EAASiI,GAC5B,OAAO,MAKV,OAASjG,EAAOA,EAAM6S,GACrB,GAAuB,IAAlB7S,EAAKQ,UAAkBuW,EAE3B,GADAlD,EAAa7T,EAAMqD,KAAcrD,EAAMqD,QACjC6K,EAAQ2F,EAAYhB,KAAU3E,EAAM,KAAO+I,GAChD,IAAM7R,EAAO8I,EAAM,OAAQ,GAAQ9I,IAAS8D,EAC3C,MAAO9D,MAAS,MAKjB,IAFA8I,EAAQ2F,EAAYhB,IAAUoE,GAC9B/I,EAAM,GAAKqG,EAASvU,EAAMhC,EAASiI,IAASiD,EACvCgF,EAAM,MAAO,EACjB,OAAO,GASf,QAASgJ,IAAgBC,GACxB,MAAOA,GAAShX,OAAS,EACxB,SAAUH,EAAMhC,EAASiI,GACxB,GAAI7D,GAAI+U,EAAShX,MACjB,OAAQiC,IACP,IAAM+U,EAAS/U,GAAIpC,EAAMhC,EAASiI,GACjC,OAAO,CAGT,QAAO,GAERkR,EAAS,GAGX,QAASC,IAAU5C,EAAWjS,EAAKuO,EAAQ9S,EAASiI,GACnD,GAAIjG,GACHqX,KACAjV,EAAI,EACJC,EAAMmS,EAAUrU,OAChBmX,EAAgB,MAAP/U,CAEV,MAAYF,EAAJD,EAASA,KACVpC,EAAOwU,EAAUpS,OAChB0O,GAAUA,EAAQ9Q,EAAMhC,EAASiI,MACtCoR,EAAaja,KAAM4C,GACdsX,GACJ/U,EAAInF,KAAMgF,GAMd,OAAOiV,GAGR,QAASE,IAAYtE,EAAWlV,EAAUwW,EAASiD,EAAYC,EAAYC,GAO1E,MANKF,KAAeA,EAAYnU,KAC/BmU,EAAaD,GAAYC,IAErBC,IAAeA,EAAYpU,KAC/BoU,EAAaF,GAAYE,EAAYC,IAE/BrJ,GAAa,SAAUtB,EAAM3F,EAASpJ,EAASiI,GACrD,GAAI0R,GAAMvV,EAAGpC,EACZ4X,KACAC,KACAC,EAAc1Q,EAAQjH,OAGtBoB,EAAQwL,GAAQgL,GAAkBha,GAAY,IAAKC,EAAQwC,UAAaxC,GAAYA,MAGpFga,GAAY/E,IAAelG,GAAShP,EAEnCwD,EADA6V,GAAU7V,EAAOqW,EAAQ3E,EAAWjV,EAASiI,GAG9CgS,EAAa1D,EAEZkD,IAAgB1K,EAAOkG,EAAY6E,GAAeN,MAMjDpQ,EACD4Q,CAQF,IALKzD,GACJA,EAASyD,EAAWC,EAAYja,EAASiI,GAIrCuR,EAAa,CACjBG,EAAOP,GAAUa,EAAYJ,GAC7BL,EAAYG,KAAU3Z,EAASiI,GAG/B7D,EAAIuV,EAAKxX,MACT,OAAQiC,KACDpC,EAAO2X,EAAKvV,MACjB6V,EAAYJ,EAAQzV,MAAS4V,EAAWH,EAAQzV,IAAOpC,IAK1D,GAAK+M,GACJ,GAAK0K,GAAcxE,EAAY,CAC9B,GAAKwE,EAAa,CAEjBE,KACAvV,EAAI6V,EAAW9X,MACf,OAAQiC,KACDpC,EAAOiY,EAAW7V,KAEvBuV,EAAKva,KAAO4a,EAAU5V,GAAKpC,EAG7ByX,GAAY,KAAOQ,KAAkBN,EAAM1R,GAI5C7D,EAAI6V,EAAW9X,MACf,OAAQiC,KACDpC,EAAOiY,EAAW7V,MACtBuV,EAAOF,EAAaja,EAAQ2D,KAAM4L,EAAM/M,GAAS4X,EAAOxV,IAAM,KAE/D2K,EAAK4K,KAAUvQ,EAAQuQ,GAAQ3X,SAOlCiY,GAAab,GACZa,IAAe7Q,EACd6Q,EAAWvV,OAAQoV,EAAaG,EAAW9X,QAC3C8X,GAEGR,EACJA,EAAY,KAAMrQ,EAAS6Q,EAAYhS,GAEvC7I,EAAK2E,MAAOqF,EAAS6Q,KAMzB,QAASC,IAAmB1B,GAC3B,GAAI2B,GAAc5D,EAASjS,EAC1BD,EAAMmU,EAAOrW,OACbiY,EAAkBjP,EAAKwJ,SAAU6D,EAAO,GAAGlX,MAC3C+Y,EAAmBD,GAAmBjP,EAAKwJ,SAAS,KACpDvQ,EAAIgW,EAAkB,EAAI,EAG1BE,EAAe1B,GAAe,SAAU5W,GACvC,MAAOA,KAASmY,GACdE,GAAkB,GACrBE,EAAkB3B,GAAe,SAAU5W,GAC1C,MAAOxC,GAAQ2D,KAAMgX,EAAcnY,GAAS,IAC1CqY,GAAkB,GACrBlB,GAAa,SAAUnX,EAAMhC,EAASiI,GACrC,OAAUmS,IAAqBnS,GAAOjI,IAAYuL,MAChD4O,EAAena,GAASwC,SACxB8X,EAActY,EAAMhC,EAASiI,GAC7BsS,EAAiBvY,EAAMhC,EAASiI,KAGpC,MAAY5D,EAAJD,EAASA,IAChB,GAAMmS,EAAUpL,EAAKwJ,SAAU6D,EAAOpU,GAAG9C,MACxC6X,GAAaP,GAAcM,GAAgBC,GAAY5C,QACjD,CAIN,GAHAA,EAAUpL,EAAK2H,OAAQ0F,EAAOpU,GAAG9C,MAAOyC,MAAO,KAAMyU,EAAOpU,GAAGyH,SAG1D0K,EAASlR,GAAY,CAGzB,IADAf,IAAMF,EACMC,EAAJC,EAASA,IAChB,GAAK6G,EAAKwJ,SAAU6D,EAAOlU,GAAGhD,MAC7B,KAGF,OAAOiY,IACNnV,EAAI,GAAK8U,GAAgBC,GACzB/U,EAAI,GAAKsL,GAER8I,EAAOlZ,MAAO,EAAG8E,EAAI,GAAIlF,QAAS8J,MAAgC,MAAzBwP,EAAQpU,EAAI,GAAI9C,KAAe,IAAM,MAC7EkE,QAASlF,EAAO,MAClBiW,EACIjS,EAAJF,GAAS8V,GAAmB1B,EAAOlZ,MAAO8E,EAAGE,IACzCD,EAAJC,GAAW4V,GAAoB1B,EAASA,EAAOlZ,MAAOgF,IAClDD,EAAJC,GAAWoL,GAAY8I,IAGzBW,EAAS/Z,KAAMmX,GAIjB,MAAO2C,IAAgBC,GAGxB,QAASqB,IAA0BC,EAAiBC,GAEnD,GAAIC,GAAoB,EACvBC,EAAQF,EAAYvY,OAAS,EAC7B0Y,EAAYJ,EAAgBtY,OAAS,EACrC2Y,EAAe,SAAU/L,EAAM/O,EAASiI,EAAKmB,EAAS2R,GACrD,GAAI/Y,GAAMsC,EAAGiS,EACZyE,KACAC,EAAe,EACf7W,EAAI,IACJoS,EAAYzH,MACZmM,EAA6B,MAAjBH,EACZI,EAAgB5P,EAEhBhI,EAAQwL,GAAQ8L,GAAa1P,EAAK9I,KAAU,IAAG,IAAK0Y,GAAiB/a,EAAQ+C,YAAc/C,GAE3Fob,EAAiBpP,GAA4B,MAAjBmP,EAAwB,EAAI7V,KAAKC,UAAY,EAS1E,KAPK2V,IACJ3P,EAAmBvL,IAAYzB,GAAYyB,EAC3CkL,EAAayP,GAKe,OAApB3Y,EAAOuB,EAAMa,IAAaA,IAAM,CACxC,GAAKyW,GAAa7Y,EAAO,CACxBsC,EAAI,CACJ,OAASiS,EAAUkE,EAAgBnW,KAClC,GAAKiS,EAASvU,EAAMhC,EAASiI,GAAQ,CACpCmB,EAAQhK,KAAM4C,EACd,OAGGkZ,IACJlP,EAAUoP,EACVlQ,IAAeyP,GAKZC,KAEE5Y,GAAQuU,GAAWvU,IACxBiZ,IAIIlM,GACJyH,EAAUpX,KAAM4C,IAOnB,GADAiZ,GAAgB7W,EACXwW,GAASxW,IAAM6W,EAAe,CAClC3W,EAAI,CACJ,OAASiS,EAAUmE,EAAYpW,KAC9BiS,EAASC,EAAWwE,EAAYhb,EAASiI,EAG1C,IAAK8G,EAAO,CAEX,GAAKkM,EAAe,EACnB,MAAQ7W,IACAoS,EAAUpS,IAAM4W,EAAW5W,KACjC4W,EAAW5W,GAAKsI,EAAIvJ,KAAMiG,GAM7B4R,GAAa5B,GAAU4B,GAIxB5b,EAAK2E,MAAOqF,EAAS4R,GAGhBE,IAAcnM,GAAQiM,EAAW7Y,OAAS,GAC5C8Y,EAAeP,EAAYvY,OAAW,GAExC2M,GAAOqF,WAAY/K,GAUrB,MALK8R,KACJlP,EAAUoP,EACV7P,EAAmB4P,GAGb3E,EAGT,OAAOoE,GACNvK,GAAcyK,GACdA,EAGFxP,EAAUwD,GAAOxD,QAAU,SAAUvL,EAAUsb,GAC9C,GAAIjX,GACHsW,KACAD,KACA9B,EAASvM,EAAerM,EAAW,IAEpC,KAAM4Y,EAAS,CAER0C,IACLA,EAAQ9L,GAAUxP,IAEnBqE,EAAIiX,EAAMlZ,MACV,OAAQiC,IACPuU,EAASuB,GAAmBmB,EAAMjX,IAC7BuU,EAAQtT,GACZqV,EAAYtb,KAAMuZ,GAElB8B,EAAgBrb,KAAMuZ,EAKxBA,GAASvM,EAAerM,EAAUya,GAA0BC,EAAiBC,IAE9E,MAAO/B,GAGR,SAASoB,IAAkBha,EAAUub,EAAUlS,GAC9C,GAAIhF,GAAI,EACPC,EAAMiX,EAASnZ,MAChB,MAAYkC,EAAJD,EAASA,IAChB0K,GAAQ/O,EAAUub,EAASlX,GAAIgF,EAEhC,OAAOA,GAGR,QAAS2G,IAAQhQ,EAAUC,EAASoJ,EAAS2F,GAC5C,GAAI3K,GAAGoU,EAAQ+C,EAAOja,EAAMe,EAC3BN,EAAQwN,GAAUxP,EAEnB,KAAMgP,GAEiB,IAAjBhN,EAAMI,OAAe,CAIzB,GADAqW,EAASzW,EAAM,GAAKA,EAAM,GAAGzC,MAAO,GAC/BkZ,EAAOrW,OAAS,GAAkC,QAA5BoZ,EAAQ/C,EAAO,IAAIlX,MAC5CwF,EAAQ8L,SAAgC,IAArB5S,EAAQwC,UAAkBkJ,GAC7CP,EAAKwJ,SAAU6D,EAAO,GAAGlX,MAAS,CAGnC,GADAtB,GAAYmL,EAAK9I,KAAS,GAAGkZ,EAAM1P,QAAQ,GAAGrG,QAAQ8I,GAAWC,IAAYvO,QAAkB,IACzFA,EACL,MAAOoJ,EAERrJ,GAAWA,EAAST,MAAOkZ,EAAOpI,QAAQpH,MAAM7G,QAIjDiC,EAAIqJ,EAAwB,aAAE/K,KAAM3C,GAAa,EAAIyY,EAAOrW,MAC5D,OAAQiC,IAAM,CAIb,GAHAmX,EAAQ/C,EAAOpU,GAGV+G,EAAKwJ,SAAWrT,EAAOia,EAAMja,MACjC,KAED,KAAMe,EAAO8I,EAAK9I,KAAMf,MAEjByN,EAAO1M,EACZkZ,EAAM1P,QAAQ,GAAGrG,QAAS8I,GAAWC,IACrClB,EAAS3K,KAAM8V,EAAO,GAAGlX,OAAUtB,EAAQ+C,YAAc/C,IACrD,CAKJ,GAFAwY,EAAO9T,OAAQN,EAAG,GAClBrE,EAAWgP,EAAK5M,QAAUuN,GAAY8I,IAChCzY,EAEL,MADAX,GAAK2E,MAAOqF,EAAS2F,GACd3F,CAGR,SAgBL,MAPAkC,GAASvL,EAAUgC,GAClBgN,EACA/O,GACC0L,EACDtC,EACAiE,EAAS3K,KAAM3C,IAETqJ,EAIR+B,EAAK8B,QAAa,IAAI9B,EAAK8B,QAAY,EAGvC,SAASkJ,OACTA,GAAWvU,UAAYuJ,EAAKqQ,QAAUrQ,EAAK8B,QAC3C9B,EAAKgL,WAAa,GAAIA,IAKtBrP,EAAQwN,WAAajP,EAAQ4F,MAAM,IAAIxG,KAAM6H,GAAYqD,KAAK,MAAQtK,EAGtEoG,KAIC,EAAG,GAAGhH,KAAM6H,GACbxF,EAAQuN,iBAAmBhI,EAE3B1N,EAAO0D,KAAOyM,GACdnQ,EAAOsV,KAAOnF,GAAO2F,UACrB9V,EAAOsV,KAAK,KAAOtV,EAAOsV,KAAKhH,QAC/BtO,EAAO8c,OAAS3M,GAAOqF,WACvBxV,EAAOuK,KAAO4F,GAAO1D,QACrBzM,EAAO+c,SAAW5M,GAAOzD,MACzB1M,EAAOmN,SAAWgD,GAAOhD,UAGrB7N,EAEJ,IAAI0d,KAGJ,SAASC,GAAe5W,GACvB,GAAI6W,GAASF,EAAc3W,KAI3B,OAHArG,GAAO+E,KAAMsB,EAAQjD,MAAO1B,OAAwB,SAAUmO,EAAGsN,GAChED,EAAQC,IAAS,IAEXD,EAyBRld,EAAOod,UAAY,SAAU/W,GAI5BA,EAA6B,gBAAZA,GACd2W,EAAc3W,IAAa4W,EAAe5W,GAC5CrG,EAAOgG,UAAYK,EAEpB,IACCgX,GAEAC,EAEAC,EAEAC,EAEAC,EAEAC,EAEAC,KAEAC,GAASvX,EAAQwX,SAEjBC,EAAO,SAAUrV,GAOhB,IANA6U,EAASjX,EAAQiX,QAAU7U,EAC3B8U,GAAQ,EACRE,EAAcC,GAAe,EAC7BA,EAAc,EACdF,EAAeG,EAAKna,OACpB6Z,GAAS,EACDM,GAAsBH,EAAdC,EAA4BA,IAC3C,GAAKE,EAAMF,GAAcrY,MAAOqD,EAAM,GAAKA,EAAM,OAAU,GAASpC,EAAQ0X,YAAc,CACzFT,GAAS,CACT,OAGFD,GAAS,EACJM,IACCC,EACCA,EAAMpa,QACVsa,EAAMF,EAAMnM,SAEF6L,EACXK,KAEAK,EAAKC,YAKRD,GAECE,IAAK,WACJ,GAAKP,EAAO,CAEX,GAAIvG,GAAQuG,EAAKna,QACjB,QAAU0a,GAAKjZ,GACdjF,EAAO+E,KAAME,EAAM,SAAU4K,EAAG3E,GAC/B,GAAIvI,GAAO3C,EAAO2C,KAAMuI,EACV,cAATvI,EACE0D,EAAQyW,QAAWkB,EAAKlG,IAAK5M,IAClCyS,EAAKld,KAAMyK,GAEDA,GAAOA,EAAI1H,QAAmB,WAATb,GAEhCub,EAAKhT,OAGJ7F,WAGCgY,EACJG,EAAeG,EAAKna,OAGT8Z,IACXI,EAActG,EACd0G,EAAMR,IAGR,MAAOha,OAGRyF,OAAQ,WAkBP,MAjBK4U,IACJ3d,EAAO+E,KAAMM,UAAW,SAAUwK,EAAG3E,GACpC,GAAIiT,EACJ,QAASA,EAAQne,EAAO2K,QAASO,EAAKyS,EAAMQ,IAAY,GACvDR,EAAK5X,OAAQoY,EAAO,GAEfd,IACUG,GAATW,GACJX,IAEaC,GAATU,GACJV,OAMEna,MAIRwU,IAAK,SAAUxW,GACd,MAAOA,GAAKtB,EAAO2K,QAASrJ,EAAIqc,GAAS,MAASA,IAAQA,EAAKna,SAGhEsV,MAAO,WAGN,MAFA6E,MACAH,EAAe,EACRla,MAGR2a,QAAS,WAER,MADAN,GAAOC,EAAQN,EAAS/d,EACjB+D,MAGRoV,SAAU,WACT,OAAQiF,GAGTS,KAAM,WAKL,MAJAR,GAAQre,EACF+d,GACLU,EAAKC,UAEC3a,MAGR+a,OAAQ,WACP,OAAQT,GAGTU,SAAU,SAAUjd,EAAS4D,GAU5B,MATAA,GAAOA,MACPA,GAAS5D,EAAS4D,EAAKtE,MAAQsE,EAAKtE,QAAUsE,IACzC0Y,GAAWJ,IAASK,IACnBP,EACJO,EAAMnd,KAAMwE,GAEZ6Y,EAAM7Y,IAGD3B,MAGRwa,KAAM,WAEL,MADAE,GAAKM,SAAUhb,KAAM+B,WACd/B,MAGRia,MAAO,WACN,QAASA,GAIZ,OAAOS,IAERhe,EAAOgG,QAENgG,SAAU,SAAUuS,GACnB,GAAIC,KAEA,UAAW,OAAQxe,EAAOod,UAAU,eAAgB,aACpD,SAAU,OAAQpd,EAAOod,UAAU,eAAgB,aACnD,SAAU,WAAYpd,EAAOod,UAAU,YAE1CqB,EAAQ,UACRvZ,GACCuZ,MAAO,WACN,MAAOA,IAERC,OAAQ,WAEP,MADAC,GAASxZ,KAAME,WAAYuZ,KAAMvZ,WAC1B/B,MAERub,KAAM,WACL,GAAIC,GAAMzZ,SACV,OAAOrF,GAAOgM,SAAS,SAAU+S,GAChC/e,EAAO+E,KAAMyZ,EAAQ,SAAU/Y,EAAGuZ,GACjC,GAAIC,GAASD,EAAO,GACnB1d,EAAKtB,EAAOiE,WAAY6a,EAAKrZ,KAASqZ,EAAKrZ,EAE5CkZ,GAAUK,EAAM,IAAK,WACpB,GAAIE,GAAW5d,GAAMA,EAAG8D,MAAO9B,KAAM+B,UAChC6Z,IAAYlf,EAAOiE,WAAYib,EAASha,SAC5Cga,EAASha,UACPC,KAAM4Z,EAASI,SACfP,KAAMG,EAASK,QACfC,SAAUN,EAASO,QAErBP,EAAUE,EAAS,QAAU3b,OAAS4B,EAAU6Z,EAAS7Z,UAAY5B,KAAMhC,GAAO4d,GAAa7Z,eAIlGyZ,EAAM,OACJ5Z,WAIJA,QAAS,SAAUuC,GAClB,MAAc,OAAPA,EAAczH,EAAOgG,OAAQyB,EAAKvC,GAAYA,IAGvDyZ,IAwCD,OArCAzZ,GAAQqa,KAAOra,EAAQ2Z,KAGvB7e,EAAO+E,KAAMyZ,EAAQ,SAAU/Y,EAAGuZ,GACjC,GAAIrB,GAAOqB,EAAO,GACjBQ,EAAcR,EAAO,EAGtB9Z,GAAS8Z,EAAM,IAAOrB,EAAKO,IAGtBsB,GACJ7B,EAAKO,IAAI,WAERO,EAAQe,GAGNhB,EAAY,EAAJ/Y,GAAS,GAAIwY,QAASO,EAAQ,GAAK,GAAIJ,MAInDO,EAAUK,EAAM,IAAO,WAEtB,MADAL,GAAUK,EAAM,GAAK,QAAU1b,OAASqb,EAAWzZ,EAAU5B,KAAM+B,WAC5D/B,MAERqb,EAAUK,EAAM,GAAK,QAAWrB,EAAKW,WAItCpZ,EAAQA,QAASyZ,GAGZJ,GACJA,EAAK/Z,KAAMma,EAAUA,GAIfA,GAIRc,KAAM,SAAUC,GACf,GAAIja,GAAI,EACPka,EAAgBjf,EAAW8D,KAAMa,WACjC7B,EAASmc,EAAcnc,OAGvBoc,EAAuB,IAAXpc,GAAkBkc,GAAe1f,EAAOiE,WAAYyb,EAAYxa,SAAc1B,EAAS,EAGnGmb,EAAyB,IAAdiB,EAAkBF,EAAc1f,EAAOgM,WAGlD6T,EAAa,SAAUpa,EAAGkX,EAAUmD,GACnC,MAAO,UAAUzV,GAChBsS,EAAUlX,GAAMnC,KAChBwc,EAAQra,GAAMJ,UAAU7B,OAAS,EAAI9C,EAAW8D,KAAMa,WAAcgF,EAChEyV,IAAWC,EACdpB,EAASqB,WAAYrD,EAAUmD,KACfF,GAChBjB,EAASrX,YAAaqV,EAAUmD,KAKnCC,EAAgBE,EAAkBC,CAGnC,IAAK1c,EAAS,EAIb,IAHAuc,EAAqBrY,MAAOlE,GAC5Byc,EAAuBvY,MAAOlE,GAC9B0c,EAAsBxY,MAAOlE,GACjBA,EAAJiC,EAAYA,IACdka,EAAela,IAAOzF,EAAOiE,WAAY0b,EAAela,GAAIP,SAChEya,EAAela,GAAIP,UACjBC,KAAM0a,EAAYpa,EAAGya,EAAiBP,IACtCf,KAAMD,EAASS,QACfC,SAAUQ,EAAYpa,EAAGwa,EAAkBF,MAE3CH,CAUL,OAJMA,IACLjB,EAASrX,YAAa4Y,EAAiBP,GAGjChB,EAASzZ,aAGlBlF,EAAOmI,QAAU,SAAWA,GAE3B,GAAI9F,GAAKuQ,EAAGkB,EAAO1C,EAAQ+O,EAAUC,EAAKC,EAAWC,EAAa7a,EACjEmM,EAAMhS,EAASiJ,cAAc,MAS9B,IANA+I,EAAId,aAAc,YAAa,KAC/Bc,EAAI+B,UAAY,qEAGhBtR,EAAMuP,EAAI/H,qBAAqB,SAC/B+I,EAAIhB,EAAI/H,qBAAqB,KAAM,IAC7B+I,IAAMA,EAAE7G,QAAU1J,EAAImB,OAC3B,MAAO2E,EAIRiJ,GAASxR,EAASiJ,cAAc,UAChCuX,EAAMhP,EAAO2C,YAAanU,EAASiJ,cAAc,WACjDiL,EAAQlC,EAAI/H,qBAAqB,SAAU,GAE3C+I,EAAE7G,MAAMwU,QAAU,gCAGlBpY,EAAQqY,gBAAoC,MAAlB5O,EAAIiC,UAG9B1L,EAAQsY,kBAAgD,IAA5B7O,EAAIgC,WAAW/P,SAI3CsE,EAAQuY,OAAS9O,EAAI/H,qBAAqB,SAASrG,OAInD2E,EAAQwY,gBAAkB/O,EAAI/H,qBAAqB,QAAQrG,OAI3D2E,EAAQ4D,MAAQ,MAAMhI,KAAM6O,EAAE/B,aAAa,UAI3C1I,EAAQyY,eAA4C,OAA3BhO,EAAE/B,aAAa,QAKxC1I,EAAQ0Y,QAAU,OAAO9c,KAAM6O,EAAE7G,MAAM8U,SAIvC1Y,EAAQ2Y,WAAalO,EAAE7G,MAAM+U,SAG7B3Y,EAAQ4Y,UAAYjN,EAAMzJ,MAI1BlC,EAAQ6Y,YAAcZ,EAAIxH,SAG1BzQ,EAAQ8Y,UAAYrhB,EAASiJ,cAAc,QAAQoY,QAInD9Y,EAAQ+Y,WAA2E,kBAA9DthB,EAASiJ,cAAc,OAAOsY,WAAW,GAAOC,UAGrEjZ,EAAQkZ,wBAAyB,EACjClZ,EAAQmZ,kBAAmB,EAC3BnZ,EAAQoZ,eAAgB,EACxBpZ,EAAQqZ,eAAgB,EACxBrZ,EAAQsZ,cAAe,EACvBtZ,EAAQuZ,qBAAsB,EAC9BvZ,EAAQwZ,mBAAoB,EAG5B7N,EAAM6E,SAAU,EAChBxQ,EAAQyZ,eAAiB9N,EAAMqN,WAAW,GAAOxI,QAIjDvH,EAAOsH,UAAW,EAClBvQ,EAAQ0Z,aAAezB,EAAI1H,QAG3B,WACQ9G,GAAI7N,KACV,MAAOmE,GACRC,EAAQqZ,eAAgB,EAIzB1N,EAAQlU,EAASiJ,cAAc,SAC/BiL,EAAMhD,aAAc,QAAS,IAC7B3I,EAAQ2L,MAA0C,KAAlCA,EAAMjD,aAAc,SAGpCiD,EAAMzJ,MAAQ,IACdyJ,EAAMhD,aAAc,OAAQ,SAC5B3I,EAAQ2Z,WAA6B,MAAhBhO,EAAMzJ,MAG3ByJ,EAAMhD,aAAc,UAAW,KAC/BgD,EAAMhD,aAAc,OAAQ,KAE5BqP,EAAWvgB,EAASmiB,yBACpB5B,EAASpM,YAAaD,GAItB3L,EAAQ6Z,cAAgBlO,EAAM6E,QAG9BxQ,EAAQ8Z,WAAa9B,EAASgB,WAAW,GAAOA,WAAW,GAAO7J,UAAUqB,QAKvE/G,EAAI3F,cACR2F,EAAI3F,YAAa,UAAW,WAC3B9D,EAAQsZ,cAAe,IAGxB7P,EAAIuP,WAAW,GAAOe,QAKvB,KAAMzc,KAAOiU,QAAQ,EAAMyI,QAAQ,EAAMC,SAAS,GACjDxQ,EAAId,aAAcuP,EAAY,KAAO5a,EAAG,KAExC0C,EAAS1C,EAAI,WAAc4a,IAAa/gB,IAAUsS,EAAIvD,WAAYgS,GAAY3Z,WAAY,CAG3FkL,GAAI7F,MAAMsW,eAAiB,cAC3BzQ,EAAIuP,WAAW,GAAOpV,MAAMsW,eAAiB,GAC7Cla,EAAQma,gBAA+C,gBAA7B1Q,EAAI7F,MAAMsW,cAIpC,KAAM5c,IAAKzF,GAAQmI,GAClB,KAoGD,OAlGAA,GAAQC,QAAgB,MAAN3C,EAGlBzF,EAAO,WACN,GAAIuiB,GAAWC,EAAWC,EACzBC,EAAW,+HACXtb,EAAOxH,EAASiK,qBAAqB,QAAQ,EAExCzC,KAKNmb,EAAY3iB,EAASiJ,cAAc,OACnC0Z,EAAUxW,MAAMwU,QAAU,gFAE1BnZ,EAAK2M,YAAawO,GAAYxO,YAAanC,GAS3CA,EAAI+B,UAAY,8CAChB8O,EAAM7Q,EAAI/H,qBAAqB,MAC/B4Y,EAAK,GAAI1W,MAAMwU,QAAU,2CACzBD,EAA0C,IAA1BmC,EAAK,GAAIE,aAEzBF,EAAK,GAAI1W,MAAM6W,QAAU,GACzBH,EAAK,GAAI1W,MAAM6W,QAAU,OAIzBza,EAAQ0a,sBAAwBvC,GAA2C,IAA1BmC,EAAK,GAAIE,aAG1D/Q,EAAI+B,UAAY,GAChB/B,EAAI7F,MAAMwU,QAAU,wKAIpBvgB,EAAO6L,KAAMzE,EAAyB,MAAnBA,EAAK2E,MAAM+W,MAAiBA,KAAM,MAAU,WAC9D3a,EAAQ4a,UAAgC,IAApBnR,EAAIoR,cAIpB1jB,EAAO2jB,mBACX9a,EAAQoZ,cAAuE,QAArDjiB,EAAO2jB,iBAAkBrR,EAAK,WAAe1F,IACvE/D,EAAQwZ,kBAA2F,SAArEriB,EAAO2jB,iBAAkBrR,EAAK,QAAYsR,MAAO,QAAUA,MAMzFV,EAAY5Q,EAAImC,YAAanU,EAASiJ,cAAc,QACpD2Z,EAAUzW,MAAMwU,QAAU3O,EAAI7F,MAAMwU,QAAUmC,EAC9CF,EAAUzW,MAAMoX,YAAcX,EAAUzW,MAAMmX,MAAQ,IACtDtR,EAAI7F,MAAMmX,MAAQ,MAElB/a,EAAQuZ,qBACN5Z,YAAcxI,EAAO2jB,iBAAkBT,EAAW,WAAeW,oBAGxDvR,GAAI7F,MAAM+W,OAASpjB,IAK9BkS,EAAI+B,UAAY,GAChB/B,EAAI7F,MAAMwU,QAAUmC,EAAW,8CAC/Bva,EAAQkZ,uBAA+C,IAApBzP,EAAIoR,YAIvCpR,EAAI7F,MAAM6W,QAAU,QACpBhR,EAAI+B,UAAY,cAChB/B,EAAIgC,WAAW7H,MAAMmX,MAAQ,MAC7B/a,EAAQmZ,iBAAyC,IAApB1P,EAAIoR,YAE5B7a,EAAQkZ,yBAIZja,EAAK2E,MAAM+W,KAAO,IAIpB1b,EAAKyK,YAAa0Q,GAGlBA,EAAY3Q,EAAM6Q,EAAMD,EAAY;GAIrCngB,EAAM+O,EAAS+O,EAAWC,EAAMxN,EAAIkB,EAAQ,KAErC3L,MAGR,IAAIib,GAAS,+BACZC,EAAa,UAEd,SAASC,GAAcjgB,EAAM+C,EAAMqC,EAAM8a,GACxC,GAAMvjB,EAAOwjB,WAAYngB,GAAzB,CAIA,GAAIwB,GAAK4e,EACRC,EAAc1jB,EAAO0G,QAIrBid,EAAStgB,EAAKQ,SAId0N,EAAQoS,EAAS3jB,EAAOuR,MAAQlO,EAIhCgB,EAAKsf,EAAStgB,EAAMqgB,GAAgBrgB,EAAMqgB,IAAiBA,CAI5D,IAAOrf,GAAOkN,EAAMlN,KAASkf,GAAQhS,EAAMlN,GAAIoE,OAAUA,IAASlJ,GAA6B,gBAAT6G,GAgEtF,MA5DM/B,KAIJA,EADIsf,EACCtgB,EAAMqgB,GAAgBtjB,EAAgB2N,OAAS/N,EAAOmL,OAEtDuY,GAIDnS,EAAOlN,KAGZkN,EAAOlN,GAAOsf,MAAgBC,OAAQ5jB,EAAO8J,QAKzB,gBAAT1D,IAAqC,kBAATA,MAClCmd,EACJhS,EAAOlN,GAAOrE,EAAOgG,OAAQuL,EAAOlN,GAAM+B,GAE1CmL,EAAOlN,GAAKoE,KAAOzI,EAAOgG,OAAQuL,EAAOlN,GAAKoE,KAAMrC,IAItDqd,EAAYlS,EAAOlN,GAKbkf,IACCE,EAAUhb,OACfgb,EAAUhb,SAGXgb,EAAYA,EAAUhb,MAGlBA,IAASlJ,IACbkkB,EAAWzjB,EAAOiK,UAAW7D,IAAWqC,GAKpB,gBAATrC,IAGXvB,EAAM4e,EAAWrd,GAGL,MAAPvB,IAGJA,EAAM4e,EAAWzjB,EAAOiK,UAAW7D,MAGpCvB,EAAM4e,EAGA5e,GAGR,QAASgf,GAAoBxgB,EAAM+C,EAAMmd,GACxC,GAAMvjB,EAAOwjB,WAAYngB,GAAzB,CAIA,GAAIogB,GAAWhe,EACdke,EAAStgB,EAAKQ,SAGd0N,EAAQoS,EAAS3jB,EAAOuR,MAAQlO,EAChCgB,EAAKsf,EAAStgB,EAAMrD,EAAO0G,SAAY1G,EAAO0G,OAI/C,IAAM6K,EAAOlN,GAAb,CAIA,GAAK+B,IAEJqd,EAAYF,EAAMhS,EAAOlN,GAAOkN,EAAOlN,GAAKoE,MAE3B,CAGVzI,EAAOyG,QAASL,GAsBrBA,EAAOA,EAAK7F,OAAQP,EAAO4F,IAAKQ,EAAMpG,EAAOiK,YAnBxC7D,IAAQqd,GACZrd,GAASA,IAITA,EAAOpG,EAAOiK,UAAW7D,GAExBA,EADIA,IAAQqd,IACHrd,GAEFA,EAAKkG,MAAM,MAarB7G,EAAIW,EAAK5C,MACT,OAAQiC,UACAge,GAAWrd,EAAKX,GAKxB,IAAK8d,GAAOO,EAAkBL,IAAczjB,EAAOqI,cAAcob,GAChE,QAMGF,UACEhS,GAAOlN,GAAKoE,KAIbqb,EAAmBvS,EAAOlN,QAM5Bsf,EACJ3jB,EAAO+jB,WAAa1gB,IAAQ,GAIjBrD,EAAOmI,QAAQqZ,eAAiBjQ,GAASA,EAAMjS,aAEnDiS,GAAOlN,GAIdkN,EAAOlN,GAAO,QAIhBrE,EAAOgG,QACNuL,SAIAyS,QACCC,QAAU,EACVC,OAAS,EAEThH,OAAU,8CAGXiH,QAAS,SAAU9gB,GAElB,MADAA,GAAOA,EAAKQ,SAAW7D,EAAOuR,MAAOlO,EAAKrD,EAAO0G,UAAarD,EAAMrD,EAAO0G,WAClErD,IAASygB,EAAmBzgB,IAGtCoF,KAAM,SAAUpF,EAAM+C,EAAMqC,GAC3B,MAAO6a,GAAcjgB,EAAM+C,EAAMqC,IAGlC2b,WAAY,SAAU/gB,EAAM+C,GAC3B,MAAOyd,GAAoBxgB,EAAM+C,IAIlCie,MAAO,SAAUhhB,EAAM+C,EAAMqC,GAC5B,MAAO6a,GAAcjgB,EAAM+C,EAAMqC,GAAM,IAGxC6b,YAAa,SAAUjhB,EAAM+C,GAC5B,MAAOyd,GAAoBxgB,EAAM+C,GAAM,IAIxCod,WAAY,SAAUngB,GAErB,GAAKA,EAAKQ,UAA8B,IAAlBR,EAAKQ,UAAoC,IAAlBR,EAAKQ,SACjD,OAAO,CAGR,IAAImgB,GAAS3gB,EAAK8G,UAAYnK,EAAOgkB,OAAQ3gB,EAAK8G,SAASC,cAG3D,QAAQ4Z,GAAUA,KAAW,GAAQ3gB,EAAKwN,aAAa,aAAemT,KAIxEhkB,EAAOsB,GAAG0E,QACTyC,KAAM,SAAUR,EAAKoC,GACpB,GAAI0H,GAAO3L,EACVqC,EAAO,KACPhD,EAAI,EACJpC,EAAOC,KAAK,EAMb,IAAK2E,IAAQ1I,EAAY,CACxB,GAAK+D,KAAKE,SACTiF,EAAOzI,EAAOyI,KAAMpF,GAEG,IAAlBA,EAAKQ,WAAmB7D,EAAOqkB,MAAOhhB,EAAM,gBAAkB,CAElE,IADA0O,EAAQ1O,EAAKgL,WACD0D,EAAMvO,OAAViC,EAAkBA,IACzBW,EAAO2L,EAAMtM,GAAGW,KAEe,IAA1BA,EAAKvF,QAAQ,WACjBuF,EAAOpG,EAAOiK,UAAW7D,EAAKzF,MAAM,IAEpC4jB,EAAUlhB,EAAM+C,EAAMqC,EAAMrC,IAG9BpG,GAAOqkB,MAAOhhB,EAAM,eAAe,GAIrC,MAAOoF,GAIR,MAAoB,gBAARR,GACJ3E,KAAKyB,KAAK,WAChB/E,EAAOyI,KAAMnF,KAAM2E,KAId5C,UAAU7B,OAAS,EAGzBF,KAAKyB,KAAK,WACT/E,EAAOyI,KAAMnF,KAAM2E,EAAKoC,KAKzBhH,EAAOkhB,EAAUlhB,EAAM4E,EAAKjI,EAAOyI,KAAMpF,EAAM4E,IAAU,MAG3Dmc,WAAY,SAAUnc,GACrB,MAAO3E,MAAKyB,KAAK,WAChB/E,EAAOokB,WAAY9gB,KAAM2E,OAK5B,SAASsc,GAAUlhB,EAAM4E,EAAKQ,GAG7B,GAAKA,IAASlJ,GAA+B,IAAlB8D,EAAKQ,SAAiB,CAEhD,GAAIuC,GAAO,QAAU6B,EAAIpB,QAASwc,EAAY,OAAQjZ,aAItD,IAFA3B,EAAOpF,EAAKwN,aAAczK,GAEL,gBAATqC,GAAoB,CAC/B,IACCA,EAAgB,SAATA,GAAkB,EACf,UAATA,GAAmB,EACV,SAATA,EAAkB,MAEjBA,EAAO,KAAOA,GAAQA,EACvB2a,EAAOrf,KAAM0E,GAASzI,EAAOiJ,UAAWR,GACvCA,EACD,MAAOP,IAGTlI,EAAOyI,KAAMpF,EAAM4E,EAAKQ,OAGxBA,GAAOlJ,EAIT,MAAOkJ,GAIR,QAASqb,GAAmBrc,GAC3B,GAAIrB,EACJ,KAAMA,IAAQqB,GAGb,IAAc,SAATrB,IAAmBpG,EAAOqI,cAAeZ,EAAIrB,MAGpC,WAATA,EACJ,OAAO,CAIT,QAAO,EAERpG,EAAOgG,QACNwe,MAAO,SAAUnhB,EAAMV,EAAM8F,GAC5B,GAAI+b,EAEJ,OAAKnhB,IACJV,GAASA,GAAQ,MAAS,QAC1B6hB,EAAQxkB,EAAOqkB,MAAOhhB,EAAMV,GAGvB8F,KACE+b,GAASxkB,EAAOyG,QAAQgC,GAC7B+b,EAAQxkB,EAAOqkB,MAAOhhB,EAAMV,EAAM3C,EAAOsE,UAAUmE,IAEnD+b,EAAM/jB,KAAMgI,IAGP+b,OAZR,GAgBDC,QAAS,SAAUphB,EAAMV,GACxBA,EAAOA,GAAQ,IAEf,IAAI6hB,GAAQxkB,EAAOwkB,MAAOnhB,EAAMV,GAC/B+hB,EAAcF,EAAMhhB,OACpBlC,EAAKkjB,EAAM/S,QACXkT,EAAQ3kB,EAAO4kB,YAAavhB,EAAMV,GAClCkiB,EAAO,WACN7kB,EAAOykB,QAASphB,EAAMV,GAIZ,gBAAPrB,IACJA,EAAKkjB,EAAM/S,QACXiT,KAGIpjB,IAIU,OAATqB,GACJ6hB,EAAMnP,QAAS,oBAITsP,GAAMG,KACbxjB,EAAGkD,KAAMnB,EAAMwhB,EAAMF,KAGhBD,GAAeC,GACpBA,EAAM7L,MAAMgF,QAKd8G,YAAa,SAAUvhB,EAAMV,GAC5B,GAAIsF,GAAMtF,EAAO,YACjB,OAAO3C,GAAOqkB,MAAOhhB,EAAM4E,IAASjI,EAAOqkB,MAAOhhB,EAAM4E,GACvD6Q,MAAO9Y,EAAOod,UAAU,eAAec,IAAI,WAC1Cle,EAAOskB,YAAajhB,EAAMV,EAAO,SACjC3C,EAAOskB,YAAajhB,EAAM4E,UAM9BjI,EAAOsB,GAAG0E,QACTwe,MAAO,SAAU7hB,EAAM8F,GACtB,GAAIsc,GAAS,CAQb,OANqB,gBAATpiB,KACX8F,EAAO9F,EACPA,EAAO,KACPoiB,KAGuBA,EAAnB1f,UAAU7B,OACPxD,EAAOwkB,MAAOlhB,KAAK,GAAIX,GAGxB8F,IAASlJ,EACf+D,KACAA,KAAKyB,KAAK,WACT,GAAIyf,GAAQxkB,EAAOwkB,MAAOlhB,KAAMX,EAAM8F,EAGtCzI,GAAO4kB,YAAathB,KAAMX,GAEZ,OAATA,GAA8B,eAAb6hB,EAAM,IAC3BxkB,EAAOykB,QAASnhB,KAAMX,MAI1B8hB,QAAS,SAAU9hB,GAClB,MAAOW,MAAKyB,KAAK,WAChB/E,EAAOykB,QAASnhB,KAAMX,MAKxBqiB,MAAO,SAAUC,EAAMtiB,GAItB,MAHAsiB,GAAOjlB,EAAOklB,GAAKllB,EAAOklB,GAAGC,OAAQF,IAAUA,EAAOA,EACtDtiB,EAAOA,GAAQ,KAERW,KAAKkhB,MAAO7hB,EAAM,SAAUkiB,EAAMF,GACxC,GAAIS,GAAU/d,WAAYwd,EAAMI,EAChCN,GAAMG,KAAO,WACZO,aAAcD,OAIjBE,WAAY,SAAU3iB,GACrB,MAAOW,MAAKkhB,MAAO7hB,GAAQ,UAI5BuC,QAAS,SAAUvC,EAAM8E,GACxB,GAAI8B,GACHgc,EAAQ,EACRC,EAAQxlB,EAAOgM,WACfuJ,EAAWjS,KACXmC,EAAInC,KAAKE,OACT2b,EAAU,aACCoG,GACTC,EAAMle,YAAaiO,GAAYA,IAIb,iBAAT5S,KACX8E,EAAM9E,EACNA,EAAOpD,GAERoD,EAAOA,GAAQ,IAEf,OAAO8C,IACN8D,EAAMvJ,EAAOqkB,MAAO9O,EAAU9P,GAAK9C,EAAO,cACrC4G,GAAOA,EAAIuP,QACfyM,IACAhc,EAAIuP,MAAMoF,IAAKiB,GAIjB,OADAA,KACOqG,EAAMtgB,QAASuC,KAGxB,IAAIge,GAAUC,EACbC,EAAS,cACTC,EAAU,MACVC,EAAa,6CACbC,EAAa,gBACbC,EAAc,0BACdvF,EAAkBxgB,EAAOmI,QAAQqY,gBACjCwF,EAAchmB,EAAOmI,QAAQ2L,KAE9B9T,GAAOsB,GAAG0E,QACT9B,KAAM,SAAUkC,EAAMiE,GACrB,MAAOrK,GAAOqL,OAAQ/H,KAAMtD,EAAOkE,KAAMkC,EAAMiE,EAAOhF,UAAU7B,OAAS,IAG1EyiB,WAAY,SAAU7f,GACrB,MAAO9C,MAAKyB,KAAK,WAChB/E,EAAOimB,WAAY3iB,KAAM8C,MAI3B8f,KAAM,SAAU9f,EAAMiE,GACrB,MAAOrK,GAAOqL,OAAQ/H,KAAMtD,EAAOkmB,KAAM9f,EAAMiE,EAAOhF,UAAU7B,OAAS,IAG1E2iB,WAAY,SAAU/f,GAErB,MADAA,GAAOpG,EAAOomB,QAAShgB,IAAUA,EAC1B9C,KAAKyB,KAAK,WAEhB,IACCzB,KAAM8C,GAAS7G,QACR+D,MAAM8C,GACZ,MAAO8B,QAIXme,SAAU,SAAUhc,GACnB,GAAIic,GAASjjB,EAAMyP,EAAKyT,EAAO5gB,EAC9BF,EAAI,EACJC,EAAMpC,KAAKE,OACXgjB,EAA2B,gBAAVnc,IAAsBA,CAExC,IAAKrK,EAAOiE,WAAYoG,GACvB,MAAO/G,MAAKyB,KAAK,SAAUY,GAC1B3F,EAAQsD,MAAO+iB,SAAUhc,EAAM7F,KAAMlB,KAAMqC,EAAGrC,KAAKuQ,aAIrD,IAAK2S,EAIJ,IAFAF,GAAYjc,GAAS,IAAKjH,MAAO1B,OAErBgE,EAAJD,EAASA,IAOhB,GANApC,EAAOC,KAAMmC,GACbqN,EAAwB,IAAlBzP,EAAKQ,WAAoBR,EAAKwQ,WACjC,IAAMxQ,EAAKwQ,UAAY,KAAMhN,QAAS8e,EAAQ,KAChD,KAGU,CACVhgB,EAAI,CACJ,OAAS4gB,EAAQD,EAAQ3gB,KACgB,EAAnCmN,EAAIjS,QAAS,IAAM0lB,EAAQ,OAC/BzT,GAAOyT,EAAQ,IAGjBljB,GAAKwQ,UAAY7T,EAAOmB,KAAM2R,GAMjC,MAAOxP,OAGRmjB,YAAa,SAAUpc,GACtB,GAAIic,GAASjjB,EAAMyP,EAAKyT,EAAO5gB,EAC9BF,EAAI,EACJC,EAAMpC,KAAKE,OACXgjB,EAA+B,IAArBnhB,UAAU7B,QAAiC,gBAAV6G,IAAsBA,CAElE,IAAKrK,EAAOiE,WAAYoG,GACvB,MAAO/G,MAAKyB,KAAK,SAAUY,GAC1B3F,EAAQsD,MAAOmjB,YAAapc,EAAM7F,KAAMlB,KAAMqC,EAAGrC,KAAKuQ,aAGxD,IAAK2S,EAGJ,IAFAF,GAAYjc,GAAS,IAAKjH,MAAO1B,OAErBgE,EAAJD,EAASA,IAQhB,GAPApC,EAAOC,KAAMmC,GAEbqN,EAAwB,IAAlBzP,EAAKQ,WAAoBR,EAAKwQ,WACjC,IAAMxQ,EAAKwQ,UAAY,KAAMhN,QAAS8e,EAAQ,KAChD,IAGU,CACVhgB,EAAI,CACJ,OAAS4gB,EAAQD,EAAQ3gB,KAExB,MAAQmN,EAAIjS,QAAS,IAAM0lB,EAAQ,MAAS,EAC3CzT,EAAMA,EAAIjM,QAAS,IAAM0f,EAAQ,IAAK,IAGxCljB,GAAKwQ,UAAYxJ,EAAQrK,EAAOmB,KAAM2R,GAAQ,GAKjD,MAAOxP,OAGRojB,YAAa,SAAUrc,EAAOsc,GAC7B,GAAIhkB,SAAc0H,GACjBuc,EAA6B,iBAAbD,EAEjB,OAAK3mB,GAAOiE,WAAYoG,GAChB/G,KAAKyB,KAAK,SAAUU,GAC1BzF,EAAQsD,MAAOojB,YAAarc,EAAM7F,KAAKlB,KAAMmC,EAAGnC,KAAKuQ,UAAW8S,GAAWA,KAItErjB,KAAKyB,KAAK,WAChB,GAAc,WAATpC,EAAoB,CAExB,GAAIkR,GACHpO,EAAI,EACJuY,EAAOhe,EAAQsD,MACfmb,EAAQkI,EACRE,EAAaxc,EAAMjH,MAAO1B,MAE3B,OAASmS,EAAYgT,EAAYphB,KAEhCgZ,EAAQmI,EAASnI,GAAST,EAAK8I,SAAUjT,GACzCmK,EAAMS,EAAQ,WAAa,eAAiB5K,QAIlClR,IAASjD,GAA8B,YAATiD,KACpCW,KAAKuQ,WAET7T,EAAOqkB,MAAO/gB,KAAM,gBAAiBA,KAAKuQ,WAO3CvQ,KAAKuQ,UAAYvQ,KAAKuQ,WAAaxJ,KAAU,EAAQ,GAAKrK,EAAOqkB,MAAO/gB,KAAM,kBAAqB,OAKtGwjB,SAAU,SAAU1lB,GACnB,GAAIyS,GAAY,IAAMzS,EAAW,IAChCqE,EAAI,EACJqF,EAAIxH,KAAKE,MACV,MAAYsH,EAAJrF,EAAOA,IACd,GAA0B,IAArBnC,KAAKmC,GAAG5B,WAAmB,IAAMP,KAAKmC,GAAGoO,UAAY,KAAKhN,QAAQ8e,EAAQ,KAAK9kB,QAASgT,IAAe,EAC3G,OAAO,CAIT,QAAO,GAGRxB,IAAK,SAAUhI,GACd,GAAIxF,GAAK8f,EAAO1gB,EACfZ,EAAOC,KAAK,EAEb,EAAA,GAAM+B,UAAU7B,OAsBhB,MAFAS,GAAajE,EAAOiE,WAAYoG,GAEzB/G,KAAKyB,KAAK,SAAUU,GAC1B,GAAI4M,EAEmB,KAAlB/O,KAAKO,WAKTwO,EADIpO,EACEoG,EAAM7F,KAAMlB,KAAMmC,EAAGzF,EAAQsD,MAAO+O,OAEpChI,EAIK,MAAPgI,EACJA,EAAM,GACoB,gBAARA,GAClBA,GAAO,GACIrS,EAAOyG,QAAS4L,KAC3BA,EAAMrS,EAAO4F,IAAIyM,EAAK,SAAWhI,GAChC,MAAgB,OAATA,EAAgB,GAAKA,EAAQ,MAItCsa,EAAQ3kB,EAAO+mB,SAAUzjB,KAAKX,OAAU3C,EAAO+mB,SAAUzjB,KAAK6G,SAASC,eAGjEua,GAAW,OAASA,IAAUA,EAAMqC,IAAK1jB,KAAM+O,EAAK,WAAc9S,IACvE+D,KAAK+G,MAAQgI,KAjDd,IAAKhP,EAGJ,MAFAshB,GAAQ3kB,EAAO+mB,SAAU1jB,EAAKV,OAAU3C,EAAO+mB,SAAU1jB,EAAK8G,SAASC,eAElEua,GAAS,OAASA,KAAU9f,EAAM8f,EAAMlgB,IAAKpB,EAAM,YAAe9D,EAC/DsF,GAGRA,EAAMxB,EAAKgH,MAEW,gBAARxF,GAEbA,EAAIgC,QAAQ+e,EAAS,IAEd,MAAP/gB,EAAc,GAAKA,OA0CxB7E,EAAOgG,QACN+gB,UACCE,QACCxiB,IAAK,SAAUpB,GAEd,GAAIgP,GAAMrS,EAAO0D,KAAKQ,KAAMb,EAAM,QAClC,OAAc,OAAPgP,EACNA,EACAhP,EAAKkH,OAGR6G,QACC3M,IAAK,SAAUpB,GACd,GAAIgH,GAAO4c,EACV5gB,EAAUhD,EAAKgD,QACf8X,EAAQ9a,EAAKwV,cACbqO,EAAoB,eAAd7jB,EAAKV,MAAiC,EAARwb,EACpC2B,EAASoH,EAAM,QACftc,EAAMsc,EAAM/I,EAAQ,EAAI9X,EAAQ7C,OAChCiC,EAAY,EAAR0Y,EACHvT,EACAsc,EAAM/I,EAAQ,CAGhB,MAAYvT,EAAJnF,EAASA,IAIhB,GAHAwhB,EAAS5gB,EAASZ,MAGXwhB,EAAOrO,UAAYnT,IAAM0Y,IAE5Bne,EAAOmI,QAAQ0Z,YAAeoF,EAAOvO,SAA+C,OAApCuO,EAAOpW,aAAa,cACnEoW,EAAO7iB,WAAWsU,UAAa1Y,EAAOmK,SAAU8c,EAAO7iB,WAAY,aAAiB,CAMxF,GAHAiG,EAAQrK,EAAQinB,GAAS5U,MAGpB6U,EACJ,MAAO7c,EAIRyV,GAAOrf,KAAM4J,GAIf,MAAOyV,IAGRkH,IAAK,SAAU3jB,EAAMgH,GACpB,GAAI8c,GAAWF,EACd5gB,EAAUhD,EAAKgD,QACfyZ,EAAS9f,EAAOsE,UAAW+F,GAC3B5E,EAAIY,EAAQ7C,MAEb,OAAQiC,IACPwhB,EAAS5gB,EAASZ,IACZwhB,EAAOrO,SAAW5Y,EAAO2K,QAAS3K,EAAOinB,GAAQ5U,MAAOyN,IAAY,KACzEqH,GAAY,EAQd,OAHMA,KACL9jB,EAAKwV,cAAgB,IAEfiH,KAKV5b,KAAM,SAAUb,EAAM+C,EAAMiE,GAC3B,GAAIsa,GAAO9f,EACVuiB,EAAQ/jB,EAAKQ,QAGd,IAAMR,GAAkB,IAAV+jB,GAAyB,IAAVA,GAAyB,IAAVA,EAK5C,aAAY/jB,GAAKwN,eAAiBnR,EAC1BM,EAAOkmB,KAAM7iB,EAAM+C,EAAMiE,IAKlB,IAAV+c,GAAgBpnB,EAAO+c,SAAU1Z,KACrC+C,EAAOA,EAAKgE,cACZua,EAAQ3kB,EAAOqnB,UAAWjhB,KACvBpG,EAAOsV,KAAKlS,MAAMiM,KAAKtL,KAAMqC,GAASsf,EAAWD,IAGhDpb,IAAU9K,EAaHolB,GAAS,OAASA,IAA6C,QAAnC9f,EAAM8f,EAAMlgB,IAAKpB,EAAM+C,IACvDvB,GAGPA,EAAM7E,EAAO0D,KAAKQ,KAAMb,EAAM+C,GAGhB,MAAPvB,EACNtF,EACAsF,GApBc,OAAVwF,EAGOsa,GAAS,OAASA,KAAU9f,EAAM8f,EAAMqC,IAAK3jB,EAAMgH,EAAOjE,MAAY7G,EAC1EsF,GAGPxB,EAAKyN,aAAc1K,EAAMiE,EAAQ,IAC1BA,IAPPrK,EAAOimB,WAAY5iB,EAAM+C,GAAzBpG,KAuBHimB,WAAY,SAAU5iB,EAAMgH,GAC3B,GAAIjE,GAAMkhB,EACT7hB,EAAI,EACJ8hB,EAAYld,GAASA,EAAMjH,MAAO1B,EAEnC,IAAK6lB,GAA+B,IAAlBlkB,EAAKQ,SACtB,MAASuC,EAAOmhB,EAAU9hB,KACzB6hB,EAAWtnB,EAAOomB,QAAShgB,IAAUA,EAGhCpG,EAAOsV,KAAKlS,MAAMiM,KAAKtL,KAAMqC,GAE5B4f,GAAexF,IAAoBuF,EAAYhiB,KAAMqC,GACzD/C,EAAMikB,IAAa,EAInBjkB,EAAMrD,EAAOiK,UAAW,WAAa7D,IACpC/C,EAAMikB,IAAa,EAKrBtnB,EAAOkE,KAAMb,EAAM+C,EAAM,IAG1B/C,EAAK8N,gBAAiBqP,EAAkBpa,EAAOkhB,IAKlDD,WACC1kB,MACCqkB,IAAK,SAAU3jB,EAAMgH,GACpB,IAAMrK,EAAOmI,QAAQ2Z,YAAwB,UAAVzX,GAAqBrK,EAAOmK,SAAS9G,EAAM,SAAW,CAGxF,GAAIgP,GAAMhP,EAAKgH,KAKf,OAJAhH,GAAKyN,aAAc,OAAQzG,GACtBgI,IACJhP,EAAKgH,MAAQgI,GAEPhI,MAMX+b,SACCoB,MAAO,UACPC,QAAS,aAGVvB,KAAM,SAAU7iB,EAAM+C,EAAMiE,GAC3B,GAAIxF,GAAK8f,EAAO+C,EACfN,EAAQ/jB,EAAKQ,QAGd,IAAMR,GAAkB,IAAV+jB,GAAyB,IAAVA,GAAyB,IAAVA,EAY5C,MARAM,GAAmB,IAAVN,IAAgBpnB,EAAO+c,SAAU1Z,GAErCqkB,IAEJthB,EAAOpG,EAAOomB,QAAShgB,IAAUA,EACjCue,EAAQ3kB,EAAO2nB,UAAWvhB,IAGtBiE,IAAU9K,EACPolB,GAAS,OAASA,KAAU9f,EAAM8f,EAAMqC,IAAK3jB,EAAMgH,EAAOjE,MAAY7G,EAC5EsF,EACExB,EAAM+C,GAASiE,EAGXsa,GAAS,OAASA,IAA6C,QAAnC9f,EAAM8f,EAAMlgB,IAAKpB,EAAM+C,IACzDvB,EACAxB,EAAM+C,IAITuhB,WACCnP,UACC/T,IAAK,SAAUpB,GAId,GAAIukB,GAAW5nB,EAAO0D,KAAKQ,KAAMb,EAAM,WAEvC,OAAOukB,GACNC,SAAUD,EAAU,IACpB/B,EAAW9hB,KAAMV,EAAK8G,WAAc2b,EAAW/hB,KAAMV,EAAK8G,WAAc9G,EAAKkV,KAC5E,EACA,QAONmN,GACCsB,IAAK,SAAU3jB,EAAMgH,EAAOjE,GAa3B,MAZKiE,MAAU,EAEdrK,EAAOimB,WAAY5iB,EAAM+C,GACd4f,GAAexF,IAAoBuF,EAAYhiB,KAAMqC,GAEhE/C,EAAKyN,cAAe0P,GAAmBxgB,EAAOomB,QAAShgB,IAAUA,EAAMA,GAIvE/C,EAAMrD,EAAOiK,UAAW,WAAa7D,IAAW/C,EAAM+C,IAAS,EAGzDA,IAGTpG,EAAO+E,KAAM/E,EAAOsV,KAAKlS,MAAMiM,KAAK5N,OAAO2B,MAAO,QAAU,SAAUqC,EAAGW,GACxE,GAAI0hB,GAAS9nB,EAAOsV,KAAKnD,WAAY/L,IAAUpG,EAAO0D,KAAKQ,IAE3DlE,GAAOsV,KAAKnD,WAAY/L,GAAS4f,GAAexF,IAAoBuF,EAAYhiB,KAAMqC,GACrF,SAAU/C,EAAM+C,EAAMsG,GACrB,GAAIpL,GAAKtB,EAAOsV,KAAKnD,WAAY/L,GAChCvB,EAAM6H,EACLnN,GAECS,EAAOsV,KAAKnD,WAAY/L,GAAS7G,IACjCuoB,EAAQzkB,EAAM+C,EAAMsG,GAEpBtG,EAAKgE,cACL,IAEH,OADApK,GAAOsV,KAAKnD,WAAY/L,GAAS9E,EAC1BuD,GAER,SAAUxB,EAAM+C,EAAMsG,GACrB,MAAOA,GACNnN,EACA8D,EAAMrD,EAAOiK,UAAW,WAAa7D,IACpCA,EAAKgE,cACL,QAKC4b,GAAgBxF,IACrBxgB,EAAOqnB,UAAUhd,OAChB2c,IAAK,SAAU3jB,EAAMgH,EAAOjE,GAC3B,MAAKpG,GAAOmK,SAAU9G,EAAM,UAE3BA,EAAKqP,aAAerI,EAApBhH,GAGOoiB,GAAYA,EAASuB,IAAK3jB,EAAMgH,EAAOjE,MAO5Coa,IAILiF,GACCuB,IAAK,SAAU3jB,EAAMgH,EAAOjE,GAE3B,GAAIvB,GAAMxB,EAAKiP,iBAAkBlM,EAUjC,OATMvB,IACLxB,EAAK0kB,iBACHljB,EAAMxB,EAAKS,cAAckkB,gBAAiB5hB,IAI7CvB,EAAIwF,MAAQA,GAAS,GAGL,UAATjE,GAAoBiE,IAAUhH,EAAKwN,aAAczK,GACvDiE,EACA9K,IAGHS,EAAOsV,KAAKnD,WAAW9N,GAAKrE,EAAOsV,KAAKnD,WAAW/L,KAAOpG,EAAOsV,KAAKnD,WAAW8V,OAEhF,SAAU5kB,EAAM+C,EAAMsG,GACrB,GAAI7H,EACJ,OAAO6H,GACNnN,GACCsF,EAAMxB,EAAKiP,iBAAkBlM,KAAyB,KAAdvB,EAAIwF,MAC5CxF,EAAIwF,MACJ,MAEJrK,EAAO+mB,SAAS/N,QACfvU,IAAK,SAAUpB,EAAM+C,GACpB,GAAIvB,GAAMxB,EAAKiP,iBAAkBlM,EACjC,OAAOvB,IAAOA,EAAI0N,UACjB1N,EAAIwF,MACJ9K,GAEFynB,IAAKvB,EAASuB,KAKfhnB,EAAOqnB,UAAUa,iBAChBlB,IAAK,SAAU3jB,EAAMgH,EAAOjE,GAC3Bqf,EAASuB,IAAK3jB,EAAgB,KAAVgH,GAAe,EAAQA,EAAOjE,KAMpDpG,EAAO+E,MAAO,QAAS,UAAY,SAAUU,EAAGW,GAC/CpG,EAAOqnB,UAAWjhB,IACjB4gB,IAAK,SAAU3jB,EAAMgH,GACpB,MAAe,KAAVA,GACJhH,EAAKyN,aAAc1K,EAAM,QAClBiE,GAFR,OAYErK,EAAOmI,QAAQyY,gBAEpB5gB,EAAO+E,MAAO,OAAQ,OAAS,SAAUU,EAAGW,GAC3CpG,EAAO2nB,UAAWvhB,IACjB3B,IAAK,SAAUpB,GACd,MAAOA,GAAKwN,aAAczK,EAAM,OAM9BpG,EAAOmI,QAAQ4D,QACpB/L,EAAOqnB,UAAUtb,OAChBtH,IAAK,SAAUpB,GAId,MAAOA,GAAK0I,MAAMwU,SAAWhhB,GAE9BynB,IAAK,SAAU3jB,EAAMgH,GACpB,MAAShH,GAAK0I,MAAMwU,QAAUlW,EAAQ,MAOnCrK,EAAOmI,QAAQ6Y,cACpBhhB,EAAO2nB,UAAU/O,UAChBnU,IAAK,SAAUpB,GACd,GAAIoQ,GAASpQ,EAAKe,UAUlB,OARKqP,KACJA,EAAOoF,cAGFpF,EAAOrP,YACXqP,EAAOrP,WAAWyU,eAGb,QAKV7Y,EAAO+E,MACN,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,mBACE,WACF/E,EAAOomB,QAAS9iB,KAAK8G,eAAkB9G,OAIlCtD,EAAOmI,QAAQ8Y,UACpBjhB,EAAOomB,QAAQnF,QAAU,YAI1BjhB,EAAO+E,MAAO,QAAS,YAAc,WACpC/E,EAAO+mB,SAAUzjB,OAChB0jB,IAAK,SAAU3jB,EAAMgH,GACpB,MAAKrK,GAAOyG,QAAS4D,GACXhH,EAAKsV,QAAU3Y,EAAO2K,QAAS3K,EAAOqD,GAAMgP,MAAOhI,IAAW,EADxE,IAKIrK,EAAOmI,QAAQ4Y,UACpB/gB,EAAO+mB,SAAUzjB,MAAOmB,IAAM,SAAUpB,GAGvC,MAAsC,QAA/BA,EAAKwN,aAAa,SAAoB,KAAOxN,EAAKgH,SAI5D,IAAI8d,GAAa,+BAChBC,GAAY,OACZC,GAAc,+BACdC,GAAc,kCACdC,GAAiB,sBAElB,SAASC,MACR,OAAO,EAGR,QAASC,MACR,OAAO,EAGR,QAASC,MACR,IACC,MAAO9oB,GAASyY,cACf,MAAQsQ,KAOX3oB,EAAOyC,OAENmmB,UAEA1K,IAAK,SAAU7a,EAAMwlB,EAAO7W,EAASvJ,EAAMrH,GAC1C,GAAImI,GAAKuf,EAAQC,EAAGC,EACnBC,EAASC,EAAaC,EACtBC,EAAUzmB,EAAM0mB,EAAYC,EAC5BC,EAAWvpB,EAAOqkB,MAAOhhB,EAG1B,IAAMkmB,EAAN,CAKKvX,EAAQA,UACZgX,EAAchX,EACdA,EAAUgX,EAAYhX,QACtB5Q,EAAW4nB,EAAY5nB,UAIlB4Q,EAAQ7G,OACb6G,EAAQ7G,KAAOnL,EAAOmL,SAIhB2d,EAASS,EAAST,UACxBA,EAASS,EAAST,YAEZI,EAAcK,EAASC,UAC7BN,EAAcK,EAASC,OAAS,SAAUthB,GAGzC,aAAclI,KAAWN,GAAuBwI,GAAKlI,EAAOyC,MAAMgnB,YAAcvhB,EAAEvF,KAEjFpD,EADAS,EAAOyC,MAAMinB,SAAStkB,MAAO8jB,EAAY7lB,KAAMgC,YAIjD6jB,EAAY7lB,KAAOA,GAIpBwlB,GAAUA,GAAS,IAAKzlB,MAAO1B,KAAqB,IACpDqnB,EAAIF,EAAMrlB,MACV,OAAQulB,IACPxf,EAAMgf,GAAe9kB,KAAMolB,EAAME,QACjCpmB,EAAO2mB,EAAW/f,EAAI,GACtB8f,GAAe9f,EAAI,IAAM,IAAK+C,MAAO,KAAMxG,OAGrCnD,IAKNsmB,EAAUjpB,EAAOyC,MAAMwmB,QAAStmB,OAGhCA,GAASvB,EAAW6nB,EAAQU,aAAeV,EAAQW,WAAcjnB,EAGjEsmB,EAAUjpB,EAAOyC,MAAMwmB,QAAStmB,OAGhCwmB,EAAYnpB,EAAOgG,QAClBrD,KAAMA,EACN2mB,SAAUA,EACV7gB,KAAMA,EACNuJ,QAASA,EACT7G,KAAM6G,EAAQ7G,KACd/J,SAAUA,EACVkO,aAAclO,GAAYpB,EAAOsV,KAAKlS,MAAMkM,aAAavL,KAAM3C,GAC/DyoB,UAAWR,EAAWrY,KAAK,MACzBgY,IAGII,EAAWN,EAAQnmB,MACzBymB,EAAWN,EAAQnmB,MACnBymB,EAASU,cAAgB,EAGnBb,EAAQc,OAASd,EAAQc,MAAMvlB,KAAMnB,EAAMoF,EAAM4gB,EAAYH,MAAkB,IAE/E7lB,EAAKX,iBACTW,EAAKX,iBAAkBC,EAAMumB,GAAa,GAE/B7lB,EAAK4I,aAChB5I,EAAK4I,YAAa,KAAOtJ,EAAMumB,KAK7BD,EAAQ/K,MACZ+K,EAAQ/K,IAAI1Z,KAAMnB,EAAM8lB,GAElBA,EAAUnX,QAAQ7G,OACvBge,EAAUnX,QAAQ7G,KAAO6G,EAAQ7G,OAK9B/J,EACJgoB,EAASrjB,OAAQqjB,EAASU,gBAAiB,EAAGX,GAE9CC,EAAS3oB,KAAM0oB,GAIhBnpB,EAAOyC,MAAMmmB,OAAQjmB,IAAS,EAI/BU,GAAO,OAIR0F,OAAQ,SAAU1F,EAAMwlB,EAAO7W,EAAS5Q,EAAU4oB,GACjD,GAAIrkB,GAAGwjB,EAAW5f,EACjB0gB,EAAWlB,EAAGD,EACdG,EAASG,EAAUzmB,EACnB0mB,EAAYC,EACZC,EAAWvpB,EAAOmkB,QAAS9gB,IAAUrD,EAAOqkB,MAAOhhB,EAEpD,IAAMkmB,IAAcT,EAASS,EAAST,QAAtC,CAKAD,GAAUA,GAAS,IAAKzlB,MAAO1B,KAAqB,IACpDqnB,EAAIF,EAAMrlB,MACV,OAAQulB,IAMP,GALAxf,EAAMgf,GAAe9kB,KAAMolB,EAAME,QACjCpmB,EAAO2mB,EAAW/f,EAAI,GACtB8f,GAAe9f,EAAI,IAAM,IAAK+C,MAAO,KAAMxG,OAGrCnD,EAAN,CAOAsmB,EAAUjpB,EAAOyC,MAAMwmB,QAAStmB,OAChCA,GAASvB,EAAW6nB,EAAQU,aAAeV,EAAQW,WAAcjnB,EACjEymB,EAAWN,EAAQnmB,OACnB4G,EAAMA,EAAI,IAAUgF,OAAQ,UAAY8a,EAAWrY,KAAK,iBAAmB,WAG3EiZ,EAAYtkB,EAAIyjB,EAAS5lB,MACzB,OAAQmC,IACPwjB,EAAYC,EAAUzjB,IAEfqkB,GAAeV,IAAaH,EAAUG,UACzCtX,GAAWA,EAAQ7G,OAASge,EAAUhe,MACtC5B,IAAOA,EAAIxF,KAAMolB,EAAUU,YAC3BzoB,GAAYA,IAAa+nB,EAAU/nB,WAAyB,OAAbA,IAAqB+nB,EAAU/nB,YACjFgoB,EAASrjB,OAAQJ,EAAG,GAEfwjB,EAAU/nB,UACdgoB,EAASU,gBAELb,EAAQlgB,QACZkgB,EAAQlgB,OAAOvE,KAAMnB,EAAM8lB,GAOzBc,KAAcb,EAAS5lB,SACrBylB,EAAQiB,UAAYjB,EAAQiB,SAAS1lB,KAAMnB,EAAMgmB,EAAYE,EAASC,WAAa,GACxFxpB,EAAOmqB,YAAa9mB,EAAMV,EAAM4mB,EAASC,cAGnCV,GAAQnmB,QAtCf,KAAMA,IAAQmmB,GACb9oB,EAAOyC,MAAMsG,OAAQ1F,EAAMV,EAAOkmB,EAAOE,GAAK/W,EAAS5Q,GAAU,EA0C/DpB,GAAOqI,cAAeygB,WACnBS,GAASC,OAIhBxpB,EAAOskB,YAAajhB,EAAM,aAI5BkE,QAAS,SAAU9E,EAAOgG,EAAMpF,EAAM+mB,GACrC,GAAIZ,GAAQa,EAAQvX,EACnBwX,EAAYrB,EAAS1f,EAAK9D,EAC1B8kB,GAAclnB,GAAQzD,GACtB+C,EAAO3B,EAAYwD,KAAM/B,EAAO,QAAWA,EAAME,KAAOF,EACxD4mB,EAAaroB,EAAYwD,KAAM/B,EAAO,aAAgBA,EAAMonB,UAAUvd,MAAM,OAK7E,IAHAwG,EAAMvJ,EAAMlG,EAAOA,GAAQzD,EAGJ,IAAlByD,EAAKQ,UAAoC,IAAlBR,EAAKQ,WAK5BykB,GAAYvkB,KAAMpB,EAAO3C,EAAOyC,MAAMgnB,aAItC9mB,EAAK9B,QAAQ,MAAQ,IAEzBwoB,EAAa1mB,EAAK2J,MAAM,KACxB3J,EAAO0mB,EAAW5X,QAClB4X,EAAWvjB,QAEZukB,EAA6B,EAApB1nB,EAAK9B,QAAQ,MAAY,KAAO8B,EAGzCF,EAAQA,EAAOzC,EAAO0G,SACrBjE,EACA,GAAIzC,GAAOwqB,MAAO7nB,EAAuB,gBAAVF,IAAsBA,GAGtDA,EAAMgoB,UAAYL,EAAe,EAAI,EACrC3nB,EAAMonB,UAAYR,EAAWrY,KAAK,KAClCvO,EAAMioB,aAAejoB,EAAMonB,UACtBtb,OAAQ,UAAY8a,EAAWrY,KAAK,iBAAmB,WAC3D,KAGDvO,EAAMoU,OAAStX,EACTkD,EAAM8D,SACX9D,EAAM8D,OAASlD,GAIhBoF,EAAe,MAARA,GACJhG,GACFzC,EAAOsE,UAAWmE,GAAQhG,IAG3BwmB,EAAUjpB,EAAOyC,MAAMwmB,QAAStmB,OAC1BynB,IAAgBnB,EAAQ1hB,SAAW0hB,EAAQ1hB,QAAQnC,MAAO/B,EAAMoF,MAAW,GAAjF,CAMA,IAAM2hB,IAAiBnB,EAAQ0B,WAAa3qB,EAAO2H,SAAUtE,GAAS,CAMrE,IAJAinB,EAAarB,EAAQU,cAAgBhnB,EAC/B2lB,GAAYvkB,KAAMumB,EAAa3nB,KACpCmQ,EAAMA,EAAI1O,YAEH0O,EAAKA,EAAMA,EAAI1O,WACtBmmB,EAAU9pB,KAAMqS,GAChBvJ,EAAMuJ,CAIFvJ,MAASlG,EAAKS,eAAiBlE,IACnC2qB,EAAU9pB,KAAM8I,EAAIqhB,aAAerhB,EAAImK,cAAgBpU,GAKzDmG,EAAI,CACJ,QAASqN,EAAMyX,EAAU9kB,QAAUhD,EAAMooB,uBAExCpoB,EAAME,KAAO8C,EAAI,EAChB6kB,EACArB,EAAQW,UAAYjnB,EAGrB6mB,GAAWxpB,EAAOqkB,MAAOvR,EAAK,eAAoBrQ,EAAME,OAAU3C,EAAOqkB,MAAOvR,EAAK,UAChF0W,GACJA,EAAOpkB,MAAO0N,EAAKrK,GAIpB+gB,EAASa,GAAUvX,EAAKuX,GACnBb,GAAUxpB,EAAOwjB,WAAY1Q,IAAS0W,EAAOpkB,OAASokB,EAAOpkB,MAAO0N,EAAKrK,MAAW,GACxFhG,EAAMqoB,gBAMR,IAHAroB,EAAME,KAAOA,GAGPynB,IAAiB3nB,EAAMsoB,wBAErB9B,EAAQ+B,UAAY/B,EAAQ+B,SAAS5lB,MAAOmlB,EAAUxc,MAAOtF,MAAW,IAC9EzI,EAAOwjB,WAAYngB,IAKdgnB,GAAUhnB,EAAMV,KAAW3C,EAAO2H,SAAUtE,GAAS,CAGzDkG,EAAMlG,EAAMgnB,GAEP9gB,IACJlG,EAAMgnB,GAAW,MAIlBrqB,EAAOyC,MAAMgnB,UAAY9mB,CACzB,KACCU,EAAMV,KACL,MAAQuF,IAIVlI,EAAOyC,MAAMgnB,UAAYlqB,EAEpBgK,IACJlG,EAAMgnB,GAAW9gB,GAMrB,MAAO9G,GAAMoU,SAGd6S,SAAU,SAAUjnB,GAGnBA,EAAQzC,EAAOyC,MAAMwoB,IAAKxoB,EAE1B,IAAIgD,GAAGZ,EAAKskB,EAAWzR,EAAS/R,EAC/BulB,KACAjmB,EAAOvE,EAAW8D,KAAMa,WACxB+jB,GAAappB,EAAOqkB,MAAO/gB,KAAM,eAAoBb,EAAME,UAC3DsmB,EAAUjpB,EAAOyC,MAAMwmB,QAASxmB,EAAME,SAOvC,IAJAsC,EAAK,GAAKxC,EACVA,EAAM0oB,eAAiB7nB,MAGlB2lB,EAAQmC,aAAenC,EAAQmC,YAAY5mB,KAAMlB,KAAMb,MAAY,EAAxE,CAKAyoB,EAAelrB,EAAOyC,MAAM2mB,SAAS5kB,KAAMlB,KAAMb,EAAO2mB,GAGxD3jB,EAAI,CACJ,QAASiS,EAAUwT,EAAczlB,QAAWhD,EAAMooB,uBAAyB,CAC1EpoB,EAAM4oB,cAAgB3T,EAAQrU,KAE9BsC,EAAI,CACJ,QAASwjB,EAAYzR,EAAQ0R,SAAUzjB,QAAWlD,EAAM6oB,kCAIjD7oB,EAAMioB,cAAgBjoB,EAAMioB,aAAa3mB,KAAMolB,EAAUU,cAE9DpnB,EAAM0mB,UAAYA,EAClB1mB,EAAMgG,KAAO0gB,EAAU1gB,KAEvB5D,IAAS7E,EAAOyC,MAAMwmB,QAASE,EAAUG,eAAkBE,QAAUL,EAAUnX,SAC5E5M,MAAOsS,EAAQrU,KAAM4B,GAEnBJ,IAAQtF,IACNkD,EAAMoU,OAAShS,MAAS,IAC7BpC,EAAMqoB,iBACNroB,EAAM8oB,oBAYX,MAJKtC,GAAQuC,cACZvC,EAAQuC,aAAahnB,KAAMlB,KAAMb,GAG3BA,EAAMoU,SAGduS,SAAU,SAAU3mB,EAAO2mB,GAC1B,GAAIqC,GAAKtC,EAAWjc,EAASzH,EAC5BylB,KACApB,EAAgBV,EAASU,cACzBhX,EAAMrQ,EAAM8D,MAKb,IAAKujB,GAAiBhX,EAAIjP,YAAcpB,EAAMuW,QAAyB,UAAfvW,EAAME,MAG7D,KAAQmQ,GAAOxP,KAAMwP,EAAMA,EAAI1O,YAAcd,KAK5C,GAAsB,IAAjBwP,EAAIjP,WAAmBiP,EAAI4F,YAAa,GAAuB,UAAfjW,EAAME,MAAoB,CAE9E,IADAuK,KACMzH,EAAI,EAAOqkB,EAAJrkB,EAAmBA,IAC/B0jB,EAAYC,EAAU3jB,GAGtBgmB,EAAMtC,EAAU/nB,SAAW,IAEtB8L,EAASue,KAAUlsB,IACvB2N,EAASue,GAAQtC,EAAU7Z,aAC1BtP,EAAQyrB,EAAKnoB,MAAO6a,MAAOrL,IAAS,EACpC9S,EAAO0D,KAAM+nB,EAAKnoB,KAAM,MAAQwP,IAAQtP,QAErC0J,EAASue,IACbve,EAAQzM,KAAM0oB,EAGXjc,GAAQ1J,QACZ0nB,EAAazqB,MAAO4C,KAAMyP,EAAKsW,SAAUlc,IAW7C,MAJqBkc,GAAS5lB,OAAzBsmB,GACJoB,EAAazqB,MAAO4C,KAAMC,KAAM8lB,SAAUA,EAASzoB,MAAOmpB,KAGpDoB,GAGRD,IAAK,SAAUxoB,GACd,GAAKA,EAAOzC,EAAO0G,SAClB,MAAOjE,EAIR,IAAIgD,GAAGygB,EAAM/f,EACZxD,EAAOF,EAAME,KACb+oB,EAAgBjpB,EAChBkpB,EAAUroB,KAAKsoB,SAAUjpB,EAEpBgpB,KACLroB,KAAKsoB,SAAUjpB,GAASgpB,EACvBtD,GAAYtkB,KAAMpB,GAASW,KAAKuoB,WAChCzD,GAAUrkB,KAAMpB,GAASW,KAAKwoB,aAGhC3lB,EAAOwlB,EAAQI,MAAQzoB,KAAKyoB,MAAMxrB,OAAQorB,EAAQI,OAAUzoB,KAAKyoB,MAEjEtpB,EAAQ,GAAIzC,GAAOwqB,MAAOkB,GAE1BjmB,EAAIU,EAAK3C,MACT,OAAQiC,IACPygB,EAAO/f,EAAMV,GACbhD,EAAOyjB,GAASwF,EAAexF,EAmBhC,OAdMzjB,GAAM8D,SACX9D,EAAM8D,OAASmlB,EAAcM,YAAcpsB,GAKb,IAA1B6C,EAAM8D,OAAO1C,WACjBpB,EAAM8D,OAAS9D,EAAM8D,OAAOnC,YAK7B3B,EAAMwpB,UAAYxpB,EAAMwpB,QAEjBN,EAAQxX,OAASwX,EAAQxX,OAAQ1R,EAAOipB,GAAkBjpB,GAIlEspB,MAAO,wHAAwHzf,MAAM,KAErIsf,YAEAE,UACCC,MAAO,4BAA4Bzf,MAAM,KACzC6H,OAAQ,SAAU1R,EAAOypB,GAOxB,MAJoB,OAAfzpB,EAAM0pB,QACV1pB,EAAM0pB,MAA6B,MAArBD,EAASE,SAAmBF,EAASE,SAAWF,EAASG,SAGjE5pB,IAITopB,YACCE,MAAO,mGAAmGzf,MAAM,KAChH6H,OAAQ,SAAU1R,EAAOypB,GACxB,GAAI9kB,GAAMklB,EAAU9Y,EACnBwF,EAASkT,EAASlT,OAClBuT,EAAcL,EAASK,WAuBxB,OApBoB,OAAf9pB,EAAM+pB,OAAqC,MAApBN,EAASO,UACpCH,EAAW7pB,EAAM8D,OAAOzC,eAAiBlE,EACzC4T,EAAM8Y,EAASxsB,gBACfsH,EAAOklB,EAASllB,KAEhB3E,EAAM+pB,MAAQN,EAASO,SAAYjZ,GAAOA,EAAIkZ,YAActlB,GAAQA,EAAKslB,YAAc,IAAQlZ,GAAOA,EAAImZ,YAAcvlB,GAAQA,EAAKulB,YAAc,GACnJlqB,EAAMmqB,MAAQV,EAASW,SAAYrZ,GAAOA,EAAIsZ,WAAc1lB,GAAQA,EAAK0lB,WAAc,IAAQtZ,GAAOA,EAAIuZ,WAAc3lB,GAAQA,EAAK2lB,WAAc,KAI9ItqB,EAAMuqB,eAAiBT,IAC5B9pB,EAAMuqB,cAAgBT,IAAgB9pB,EAAM8D,OAAS2lB,EAASe,UAAYV,GAKrE9pB,EAAM0pB,OAASnT,IAAWzZ,IAC/BkD,EAAM0pB,MAAmB,EAATnT,EAAa,EAAe,EAATA,EAAa,EAAe,EAATA,EAAa,EAAI,GAGjEvW,IAITwmB,SACCiE,MAECvC,UAAU,GAEXvS,OAEC7Q,QAAS,WACR,GAAKjE,OAASolB,MAAuBplB,KAAK8U,MACzC,IAEC,MADA9U,MAAK8U,SACE,EACN,MAAQlQ,MAOZyhB,aAAc,WAEfwD,MACC5lB,QAAS,WACR,MAAKjE,QAASolB,MAAuBplB,KAAK6pB,MACzC7pB,KAAK6pB,QACE,GAFR,GAKDxD,aAAc,YAEfzH,OAEC3a,QAAS,WACR,MAAKvH,GAAOmK,SAAU7G,KAAM,UAA2B,aAAdA,KAAKX,MAAuBW,KAAK4e,OACzE5e,KAAK4e,SACE,GAFR,GAOD8I,SAAU,SAAUvoB,GACnB,MAAOzC,GAAOmK,SAAU1H,EAAM8D,OAAQ,OAIxC6mB,cACC5B,aAAc,SAAU/oB,GAGlBA,EAAMoU,SAAWtX,IACrBkD,EAAMipB,cAAc2B,YAAc5qB,EAAMoU,WAM5CyW,SAAU,SAAU3qB,EAAMU,EAAMZ,EAAO8qB,GAItC,GAAIrlB,GAAIlI,EAAOgG,OACd,GAAIhG,GAAOwqB,MACX/nB,GAECE,KAAMA,EACN6qB,aAAa,EACb9B,kBAGG6B,GACJvtB,EAAOyC,MAAM8E,QAASW,EAAG,KAAM7E,GAE/BrD,EAAOyC,MAAMinB,SAASllB,KAAMnB,EAAM6E,GAE9BA,EAAE6iB,sBACNtoB,EAAMqoB,mBAKT9qB,EAAOmqB,YAAcvqB,EAASmD,oBAC7B,SAAUM,EAAMV,EAAM6mB,GAChBnmB,EAAKN,qBACTM,EAAKN,oBAAqBJ,EAAM6mB,GAAQ,IAG1C,SAAUnmB,EAAMV,EAAM6mB,GACrB,GAAIpjB,GAAO,KAAOzD,CAEbU,GAAKL,oBAIGK,GAAM+C,KAAW1G,IAC5B2D,EAAM+C,GAAS,MAGhB/C,EAAKL,YAAaoD,EAAMojB,KAI3BxpB,EAAOwqB,MAAQ,SAAUvkB,EAAK8lB,GAE7B,MAAOzoB,gBAAgBtD,GAAOwqB,OAKzBvkB,GAAOA,EAAItD,MACfW,KAAKooB,cAAgBzlB,EACrB3C,KAAKX,KAAOsD,EAAItD,KAIhBW,KAAKynB,mBAAuB9kB,EAAIwnB,kBAAoBxnB,EAAIonB,eAAgB,GACvEpnB,EAAIynB,mBAAqBznB,EAAIynB,oBAAwBlF,GAAaC,IAInEnlB,KAAKX,KAAOsD,EAIR8lB,GACJ/rB,EAAOgG,OAAQ1C,KAAMyoB,GAItBzoB,KAAKqqB,UAAY1nB,GAAOA,EAAI0nB,WAAa3tB,EAAO0L,MAGhDpI,KAAMtD,EAAO0G,UAAY,EAvBzB,GAJQ,GAAI1G,GAAOwqB,MAAOvkB,EAAK8lB,IAgChC/rB,EAAOwqB,MAAMvnB,WACZ8nB,mBAAoBtC,GACpBoC,qBAAsBpC,GACtB6C,8BAA+B7C,GAE/BqC,eAAgB,WACf,GAAI5iB,GAAI5E,KAAKooB,aAEbpoB,MAAKynB,mBAAqBvC,GACpBtgB,IAKDA,EAAE4iB,eACN5iB,EAAE4iB,iBAKF5iB,EAAEmlB,aAAc,IAGlB9B,gBAAiB,WAChB,GAAIrjB,GAAI5E,KAAKooB,aAEbpoB,MAAKunB,qBAAuBrC,GACtBtgB,IAIDA,EAAEqjB,iBACNrjB,EAAEqjB,kBAKHrjB,EAAE0lB,cAAe,IAElBC,yBAA0B,WACzBvqB,KAAKgoB,8BAAgC9C,GACrCllB,KAAKioB,oBAKPvrB,EAAO+E,MACN+oB,WAAY,YACZC,WAAY,YACV,SAAUC,EAAM/C,GAClBjrB,EAAOyC,MAAMwmB,QAAS+E,IACrBrE,aAAcsB,EACdrB,SAAUqB,EAEVzB,OAAQ,SAAU/mB,GACjB,GAAIoC,GACH0B,EAASjD,KACT2qB,EAAUxrB,EAAMuqB,cAChB7D,EAAY1mB,EAAM0mB,SASnB,SALM8E,GAAYA,IAAY1nB,IAAWvG,EAAOmN,SAAU5G,EAAQ0nB,MACjExrB,EAAME,KAAOwmB,EAAUG,SACvBzkB,EAAMskB,EAAUnX,QAAQ5M,MAAO9B,KAAM+B,WACrC5C,EAAME,KAAOsoB,GAEPpmB,MAMJ7E,EAAOmI,QAAQ+lB,gBAEpBluB,EAAOyC,MAAMwmB,QAAQvP,QACpBqQ,MAAO,WAEN,MAAK/pB,GAAOmK,SAAU7G,KAAM,SACpB,GAIRtD,EAAOyC,MAAMyb,IAAK5a,KAAM,iCAAkC,SAAU4E,GAEnE,GAAI7E,GAAO6E,EAAE3B,OACZ4nB,EAAOnuB,EAAOmK,SAAU9G,EAAM,UAAarD,EAAOmK,SAAU9G,EAAM,UAAaA,EAAK8qB,KAAO5uB,CACvF4uB,KAASnuB,EAAOqkB,MAAO8J,EAAM,mBACjCnuB,EAAOyC,MAAMyb,IAAKiQ,EAAM,iBAAkB,SAAU1rB,GACnDA,EAAM2rB,gBAAiB,IAExBpuB,EAAOqkB,MAAO8J,EAAM,iBAAiB,MARvCnuB,IAcDwrB,aAAc,SAAU/oB,GAElBA,EAAM2rB,uBACH3rB,GAAM2rB,eACR9qB,KAAKc,aAAe3B,EAAMgoB,WAC9BzqB,EAAOyC,MAAM6qB,SAAU,SAAUhqB,KAAKc,WAAY3B,GAAO,KAK5DynB,SAAU,WAET,MAAKlqB,GAAOmK,SAAU7G,KAAM,SACpB,GAIRtD,EAAOyC,MAAMsG,OAAQzF,KAAM,YAA3BtD,MAMGA,EAAOmI,QAAQkmB,gBAEpBruB,EAAOyC,MAAMwmB,QAAQ9G,QAEpB4H,MAAO,WAEN,MAAK5B,GAAWpkB,KAAMT,KAAK6G,YAIP,aAAd7G,KAAKX,MAAqC,UAAdW,KAAKX,QACrC3C,EAAOyC,MAAMyb,IAAK5a,KAAM,yBAA0B,SAAUb,GACjB,YAArCA,EAAMipB,cAAc4C,eACxBhrB,KAAKirB,eAAgB,KAGvBvuB,EAAOyC,MAAMyb,IAAK5a,KAAM,gBAAiB,SAAUb,GAC7Ca,KAAKirB,gBAAkB9rB,EAAMgoB,YACjCnnB,KAAKirB,eAAgB,GAGtBvuB,EAAOyC,MAAM6qB,SAAU,SAAUhqB,KAAMb,GAAO,OAGzC,IAGRzC,EAAOyC,MAAMyb,IAAK5a,KAAM,yBAA0B,SAAU4E,GAC3D,GAAI7E,GAAO6E,EAAE3B,MAER4hB,GAAWpkB,KAAMV,EAAK8G,YAAenK,EAAOqkB,MAAOhhB,EAAM,mBAC7DrD,EAAOyC,MAAMyb,IAAK7a,EAAM,iBAAkB,SAAUZ,IAC9Ca,KAAKc,YAAe3B,EAAM+qB,aAAgB/qB,EAAMgoB,WACpDzqB,EAAOyC,MAAM6qB,SAAU,SAAUhqB,KAAKc,WAAY3B,GAAO,KAG3DzC,EAAOqkB,MAAOhhB,EAAM,iBAAiB,MATvCrD,IAcDwpB,OAAQ,SAAU/mB,GACjB,GAAIY,GAAOZ,EAAM8D,MAGjB,OAAKjD,QAASD,GAAQZ,EAAM+qB,aAAe/qB,EAAMgoB,WAA4B,UAAdpnB,EAAKV,MAAkC,aAAdU,EAAKV,KACrFF,EAAM0mB,UAAUnX,QAAQ5M,MAAO9B,KAAM+B,WAD7C,GAKD6kB,SAAU,WAGT,MAFAlqB,GAAOyC,MAAMsG,OAAQzF,KAAM,aAEnB6kB,EAAWpkB,KAAMT,KAAK6G,aAM3BnK,EAAOmI,QAAQqmB,gBACpBxuB,EAAO+E,MAAOqT,MAAO,UAAW+U,KAAM,YAAc,SAAUa,EAAM/C,GAGnE,GAAIwD,GAAW,EACdzc,EAAU,SAAUvP,GACnBzC,EAAOyC,MAAM6qB,SAAUrC,EAAKxoB,EAAM8D,OAAQvG,EAAOyC,MAAMwoB,IAAKxoB,IAAS,GAGvEzC,GAAOyC,MAAMwmB,QAASgC,IACrBlB,MAAO,WACc,IAAf0E,KACJ7uB,EAAS8C,iBAAkBsrB,EAAMhc,GAAS,IAG5CkY,SAAU,WACW,MAAbuE,GACN7uB,EAASmD,oBAAqBirB,EAAMhc,GAAS,OAOlDhS,EAAOsB,GAAG0E,QAET0oB,GAAI,SAAU7F,EAAOznB,EAAUqH,EAAMnH,EAAiB4lB,GACrD,GAAIvkB,GAAMgsB,CAGV,IAAsB,gBAAV9F,GAAqB,CAEP,gBAAbznB,KAEXqH,EAAOA,GAAQrH,EACfA,EAAW7B,EAEZ,KAAMoD,IAAQkmB,GACbvlB,KAAKorB,GAAI/rB,EAAMvB,EAAUqH,EAAMogB,EAAOlmB,GAAQukB,EAE/C,OAAO5jB,MAmBR,GAhBa,MAARmF,GAAsB,MAANnH,GAEpBA,EAAKF,EACLqH,EAAOrH,EAAW7B,GACD,MAAN+B,IACc,gBAAbF,IAEXE,EAAKmH,EACLA,EAAOlJ,IAGP+B,EAAKmH,EACLA,EAAOrH,EACPA,EAAW7B,IAGR+B,KAAO,EACXA,EAAKmnB,OACC,KAAMnnB,EACZ,MAAOgC,KAaR,OAVa,KAAR4jB,IACJyH,EAASrtB,EACTA,EAAK,SAAUmB,GAGd,MADAzC,KAASwH,IAAK/E,GACPksB,EAAOvpB,MAAO9B,KAAM+B,YAG5B/D,EAAG6J,KAAOwjB,EAAOxjB,OAAUwjB,EAAOxjB,KAAOnL,EAAOmL,SAE1C7H,KAAKyB,KAAM,WACjB/E,EAAOyC,MAAMyb,IAAK5a,KAAMulB,EAAOvnB,EAAImH,EAAMrH,MAG3C8lB,IAAK,SAAU2B,EAAOznB,EAAUqH,EAAMnH,GACrC,MAAOgC,MAAKorB,GAAI7F,EAAOznB,EAAUqH,EAAMnH,EAAI,IAE5CkG,IAAK,SAAUqhB,EAAOznB,EAAUE,GAC/B,GAAI6nB,GAAWxmB,CACf,IAAKkmB,GAASA,EAAMiC,gBAAkBjC,EAAMM,UAQ3C,MANAA,GAAYN,EAAMM,UAClBnpB,EAAQ6oB,EAAMsC,gBAAiB3jB,IAC9B2hB,EAAUU,UAAYV,EAAUG,SAAW,IAAMH,EAAUU,UAAYV,EAAUG,SACjFH,EAAU/nB,SACV+nB,EAAUnX,SAEJ1O,IAER,IAAsB,gBAAVulB,GAAqB,CAEhC,IAAMlmB,IAAQkmB,GACbvlB,KAAKkE,IAAK7E,EAAMvB,EAAUynB,EAAOlmB,GAElC,OAAOW,MAUR,OARKlC,KAAa,GAA6B,kBAAbA,MAEjCE,EAAKF,EACLA,EAAW7B,GAEP+B,KAAO,IACXA,EAAKmnB,IAECnlB,KAAKyB,KAAK,WAChB/E,EAAOyC,MAAMsG,OAAQzF,KAAMulB,EAAOvnB,EAAIF,MAIxCmG,QAAS,SAAU5E,EAAM8F,GACxB,MAAOnF,MAAKyB,KAAK,WAChB/E,EAAOyC,MAAM8E,QAAS5E,EAAM8F,EAAMnF,SAGpCsrB,eAAgB,SAAUjsB,EAAM8F,GAC/B,GAAIpF,GAAOC,KAAK,EAChB,OAAKD,GACGrD,EAAOyC,MAAM8E,QAAS5E,EAAM8F,EAAMpF,GAAM,GADhD,IAKF,IAAIwrB,IAAW,iBACdC,GAAe,iCACfC,GAAgB/uB,EAAOsV,KAAKlS,MAAMkM,aAElC0f,IACCC,UAAU,EACVC,UAAU,EACVrK,MAAM,EACNsK,MAAM,EAGRnvB,GAAOsB,GAAG0E,QACTtC,KAAM,SAAUtC,GACf,GAAIqE,GACHZ,KACAmZ,EAAO1a,KACPoC,EAAMsY,EAAKxa,MAEZ,IAAyB,gBAAbpC,GACX,MAAOkC,MAAKqB,UAAW3E,EAAQoB,GAAW+S,OAAO,WAChD,IAAM1O,EAAI,EAAOC,EAAJD,EAASA,IACrB,GAAKzF,EAAOmN,SAAU6Q,EAAMvY,GAAKnC,MAChC,OAAO,IAMX,KAAMmC,EAAI,EAAOC,EAAJD,EAASA,IACrBzF,EAAO0D,KAAMtC,EAAU4c,EAAMvY,GAAKZ,EAMnC,OAFAA,GAAMvB,KAAKqB,UAAWe,EAAM,EAAI1F,EAAO8c,OAAQjY,GAAQA,GACvDA,EAAIzD,SAAWkC,KAAKlC,SAAWkC,KAAKlC,SAAW,IAAMA,EAAWA,EACzDyD,GAGRiT,IAAK,SAAUvR,GACd,GAAId,GACH2pB,EAAUpvB,EAAQuG,EAAQjD,MAC1BoC,EAAM0pB,EAAQ5rB,MAEf,OAAOF,MAAK6Q,OAAO,WAClB,IAAM1O,EAAI,EAAOC,EAAJD,EAASA,IACrB,GAAKzF,EAAOmN,SAAU7J,KAAM8rB,EAAQ3pB,IACnC,OAAO,KAMXkS,IAAK,SAAUvW,GACd,MAAOkC,MAAKqB,UAAW0qB,GAAO/rB,KAAMlC,OAAgB,KAGrD+S,OAAQ,SAAU/S,GACjB,MAAOkC,MAAKqB,UAAW0qB,GAAO/rB,KAAMlC,OAAgB,KAGrDkuB,GAAI,SAAUluB,GACb,QAASiuB,GACR/rB,KAIoB,gBAAblC,IAAyB2tB,GAAchrB,KAAM3C,GACnDpB,EAAQoB,GACRA,OACD,GACCoC,QAGH+rB,QAAS,SAAUzZ,EAAWzU,GAC7B,GAAIyR,GACHrN,EAAI,EACJqF,EAAIxH,KAAKE,OACTqB,KACA2qB,EAAMT,GAAchrB,KAAM+R,IAAoC,gBAAdA,GAC/C9V,EAAQ8V,EAAWzU,GAAWiC,KAAKjC,SACnC,CAEF,MAAYyJ,EAAJrF,EAAOA,IACd,IAAMqN,EAAMxP,KAAKmC,GAAIqN,GAAOA,IAAQzR,EAASyR,EAAMA,EAAI1O,WAEtD,GAAoB,GAAf0O,EAAIjP,WAAkB2rB,EAC1BA,EAAIrR,MAAMrL,GAAO,GAGA,IAAjBA,EAAIjP,UACH7D,EAAO0D,KAAK4Q,gBAAgBxB,EAAKgD,IAAc,CAEhDhD,EAAMjO,EAAIpE,KAAMqS,EAChB,OAKH,MAAOxP,MAAKqB,UAAWE,EAAIrB,OAAS,EAAIxD,EAAO8c,OAAQjY,GAAQA,IAKhEsZ,MAAO,SAAU9a,GAGhB,MAAMA,GAKe,gBAATA,GACJrD,EAAO2K,QAASrH,KAAK,GAAItD,EAAQqD,IAIlCrD,EAAO2K,QAEbtH,EAAKH,OAASG,EAAK,GAAKA,EAAMC,MAXrBA,KAAK,IAAMA,KAAK,GAAGc,WAAed,KAAKgC,QAAQmqB,UAAUjsB,OAAS,IAc7E0a,IAAK,SAAU9c,EAAUC,GACxB,GAAI2lB,GAA0B,gBAAb5lB,GACfpB,EAAQoB,EAAUC,GAClBrB,EAAOsE,UAAWlD,GAAYA,EAASyC,UAAazC,GAAaA,GAClEiB,EAAMrC,EAAO2D,MAAOL,KAAKmB,MAAOuiB,EAEjC,OAAO1jB,MAAKqB,UAAW3E,EAAO8c,OAAOza,KAGtCqtB,QAAS,SAAUtuB,GAClB,MAAOkC,MAAK4a,IAAiB,MAAZ9c,EAChBkC,KAAKwB,WAAaxB,KAAKwB,WAAWqP,OAAO/S,MAK5C,SAASuuB,IAAS7c,EAAKoD,GACtB,EACCpD,GAAMA,EAAKoD,SACFpD,GAAwB,IAAjBA,EAAIjP,SAErB,OAAOiP,GAGR9S,EAAO+E,MACN0O,OAAQ,SAAUpQ,GACjB,GAAIoQ,GAASpQ,EAAKe,UAClB,OAAOqP,IAA8B,KAApBA,EAAO5P,SAAkB4P,EAAS,MAEpDmc,QAAS,SAAUvsB,GAClB,MAAOrD,GAAOkW,IAAK7S,EAAM,eAE1BwsB,aAAc,SAAUxsB,EAAMoC,EAAGqqB,GAChC,MAAO9vB,GAAOkW,IAAK7S,EAAM,aAAcysB,IAExCjL,KAAM,SAAUxhB,GACf,MAAOssB,IAAStsB,EAAM,gBAEvB8rB,KAAM,SAAU9rB,GACf,MAAOssB,IAAStsB,EAAM,oBAEvB0sB,QAAS,SAAU1sB,GAClB,MAAOrD,GAAOkW,IAAK7S,EAAM,gBAE1BosB,QAAS,SAAUpsB,GAClB,MAAOrD,GAAOkW,IAAK7S,EAAM,oBAE1B2sB,UAAW,SAAU3sB,EAAMoC,EAAGqqB,GAC7B,MAAO9vB,GAAOkW,IAAK7S,EAAM,cAAeysB,IAEzCG,UAAW,SAAU5sB,EAAMoC,EAAGqqB,GAC7B,MAAO9vB,GAAOkW,IAAK7S,EAAM,kBAAmBysB,IAE7CI,SAAU,SAAU7sB,GACnB,MAAOrD,GAAO2vB,SAAWtsB,EAAKe,gBAAmBwP,WAAYvQ,IAE9D4rB,SAAU,SAAU5rB,GACnB,MAAOrD,GAAO2vB,QAAStsB,EAAKuQ,aAE7Bsb,SAAU,SAAU7rB,GACnB,MAAOrD,GAAOmK,SAAU9G,EAAM,UAC7BA,EAAK8sB,iBAAmB9sB,EAAK+sB,cAAcxwB,SAC3CI,EAAO2D,SAAWN,EAAK2F,cAEvB,SAAU5C,EAAM9E,GAClBtB,EAAOsB,GAAI8E,GAAS,SAAU0pB,EAAO1uB,GACpC,GAAIyD,GAAM7E,EAAO4F,IAAKtC,KAAMhC,EAAIwuB,EAsBhC,OApB0B,UAArB1pB,EAAKzF,MAAO,MAChBS,EAAW0uB,GAGP1uB,GAAgC,gBAAbA,KACvByD,EAAM7E,EAAOmU,OAAQ/S,EAAUyD,IAG3BvB,KAAKE,OAAS,IAEZwrB,GAAkB5oB,KACvBvB,EAAM7E,EAAO8c,OAAQjY,IAIjBiqB,GAAa/qB,KAAMqC,KACvBvB,EAAMA,EAAIwrB,YAIL/sB,KAAKqB,UAAWE,MAIzB7E,EAAOgG,QACNmO,OAAQ,SAAUmB,EAAM1Q,EAAO+S,GAC9B,GAAItU,GAAOuB,EAAO,EAMlB,OAJK+S,KACJrC,EAAO,QAAUA,EAAO,KAGD,IAAjB1Q,EAAMpB,QAAkC,IAAlBH,EAAKQ,SACjC7D,EAAO0D,KAAK4Q,gBAAiBjR,EAAMiS,IAAWjS,MAC9CrD,EAAO0D,KAAKwJ,QAASoI,EAAMtV,EAAO+K,KAAMnG,EAAO,SAAUvB,GACxD,MAAyB,KAAlBA,EAAKQ,aAIfqS,IAAK,SAAU7S,EAAM6S,EAAK4Z,GACzB,GAAIpY,MACH5E,EAAMzP,EAAM6S,EAEb,OAAQpD,GAAwB,IAAjBA,EAAIjP,WAAmBisB,IAAUvwB,GAA8B,IAAjBuT,EAAIjP,WAAmB7D,EAAQ8S,GAAMwc,GAAIQ,IAC/E,IAAjBhd,EAAIjP,UACR6T,EAAQjX,KAAMqS,GAEfA,EAAMA,EAAIoD,EAEX,OAAOwB,IAGRiY,QAAS,SAAUW,EAAGjtB,GACrB,GAAIktB,KAEJ,MAAQD,EAAGA,EAAIA,EAAErd,YACI,IAAfqd,EAAEzsB,UAAkBysB,IAAMjtB,GAC9BktB,EAAE9vB,KAAM6vB,EAIV,OAAOC,KAKT,SAASlB,IAAQ9Z,EAAUib,EAAW7Y,GACrC,GAAK3X,EAAOiE,WAAYusB,GACvB,MAAOxwB,GAAO+K,KAAMwK,EAAU,SAAUlS,EAAMoC,GAE7C,QAAS+qB,EAAUhsB,KAAMnB,EAAMoC,EAAGpC,KAAWsU,GAK/C,IAAK6Y,EAAU3sB,SACd,MAAO7D,GAAO+K,KAAMwK,EAAU,SAAUlS,GACvC,MAASA,KAASmtB,IAAgB7Y,GAKpC,IAA0B,gBAAd6Y,GAAyB,CACpC,GAAK3B,GAAS9qB,KAAMysB,GACnB,MAAOxwB,GAAOmU,OAAQqc,EAAWjb,EAAUoC,EAG5C6Y,GAAYxwB,EAAOmU,OAAQqc,EAAWjb,GAGvC,MAAOvV,GAAO+K,KAAMwK,EAAU,SAAUlS,GACvC,MAASrD,GAAO2K,QAAStH,EAAMmtB,IAAe,IAAQ7Y,IAGxD,QAAS8Y,IAAoB7wB,GAC5B,GAAI+d,GAAO+S,GAAUpkB,MAAO,KAC3BqkB,EAAW/wB,EAASmiB,wBAErB,IAAK4O,EAAS9nB,cACb,MAAQ8U,EAAKna,OACZmtB,EAAS9nB,cACR8U,EAAK5P,MAIR,OAAO4iB,GAGR,GAAID,IAAY,6JAEfE,GAAgB,6BAChBC,GAAmBtiB,OAAO,OAASmiB,GAAY,WAAY,KAC3DI,GAAqB,OACrBC,GAAY,0EACZC,GAAW,YACXC,GAAS,UACTC,GAAQ,YACRC,GAAe,0BACfC,GAA8B,wBAE9BC,GAAW,oCACXC,GAAc,4BACdC,GAAoB,cACpBC,GAAe,2CAGfC,IACCxK,QAAU,EAAG,+BAAgC,aAC7CyK,QAAU,EAAG,aAAc,eAC3BC,MAAQ,EAAG,QAAS,UACpBC,OAAS,EAAG,WAAY,aACxBC,OAAS,EAAG,UAAW,YACvBC,IAAM,EAAG,iBAAkB,oBAC3BC,KAAO,EAAG,mCAAoC,uBAC9CC,IAAM,EAAG,qBAAsB,yBAI/BhH,SAAUhrB,EAAOmI,QAAQwY,eAAkB,EAAG,GAAI,KAAS,EAAG,SAAU,WAEzEsR,GAAexB,GAAoB7wB,GACnCsyB,GAAcD,GAAale,YAAanU,EAASiJ,cAAc,OAEhE4oB,IAAQU,SAAWV,GAAQxK,OAC3BwK,GAAQ/Q,MAAQ+Q,GAAQW,MAAQX,GAAQY,SAAWZ,GAAQa,QAAUb,GAAQI,MAC7EJ,GAAQc,GAAKd,GAAQO,GAErBhyB,EAAOsB,GAAG0E,QACTuE,KAAM,SAAUF,GACf,MAAOrK,GAAOqL,OAAQ/H,KAAM,SAAU+G,GACrC,MAAOA,KAAU9K,EAChBS,EAAOuK,KAAMjH,MACbA,KAAKwV,QAAQ0Z,QAAUlvB,KAAK,IAAMA,KAAK,GAAGQ,eAAiBlE,GAAW6yB,eAAgBpoB,KACrF,KAAMA,EAAOhF,UAAU7B,SAG3BgvB,OAAQ,WACP,MAAOlvB,MAAKovB,SAAUrtB,UAAW,SAAUhC,GAC1C,GAAuB,IAAlBC,KAAKO,UAAoC,KAAlBP,KAAKO,UAAqC,IAAlBP,KAAKO,SAAiB,CACzE,GAAI0C,GAASosB,GAAoBrvB,KAAMD,EACvCkD,GAAOwN,YAAa1Q,OAKvBuvB,QAAS,WACR,MAAOtvB,MAAKovB,SAAUrtB,UAAW,SAAUhC,GAC1C,GAAuB,IAAlBC,KAAKO,UAAoC,KAAlBP,KAAKO,UAAqC,IAAlBP,KAAKO,SAAiB,CACzE,GAAI0C,GAASosB,GAAoBrvB,KAAMD,EACvCkD,GAAOssB,aAAcxvB,EAAMkD,EAAOqN,gBAKrCkf,OAAQ,WACP,MAAOxvB,MAAKovB,SAAUrtB,UAAW,SAAUhC,GACrCC,KAAKc,YACTd,KAAKc,WAAWyuB,aAAcxvB,EAAMC,SAKvCyvB,MAAO,WACN,MAAOzvB,MAAKovB,SAAUrtB,UAAW,SAAUhC,GACrCC,KAAKc,YACTd,KAAKc,WAAWyuB,aAAcxvB,EAAMC,KAAK2P,gBAM5ClK,OAAQ,SAAU3H,EAAU4xB,GAC3B,GAAI3vB,GACHuB,EAAQxD,EAAWpB,EAAOmU,OAAQ/S,EAAUkC,MAASA,KACrDmC,EAAI,CAEL,MAA6B,OAApBpC,EAAOuB,EAAMa,IAAaA,IAE5ButB,GAA8B,IAAlB3vB,EAAKQ,UACtB7D,EAAO+jB,UAAWkP,GAAQ5vB,IAGtBA,EAAKe,aACJ4uB,GAAYhzB,EAAOmN,SAAU9J,EAAKS,cAAeT,IACrD6vB,GAAeD,GAAQ5vB,EAAM,WAE9BA,EAAKe,WAAWyN,YAAaxO,GAI/B,OAAOC,OAGRwV,MAAO,WACN,GAAIzV,GACHoC,EAAI,CAEL,MAA4B,OAAnBpC,EAAOC,KAAKmC,IAAaA,IAAM,CAEhB,IAAlBpC,EAAKQ,UACT7D,EAAO+jB,UAAWkP,GAAQ5vB,GAAM,GAIjC,OAAQA,EAAKuQ,WACZvQ,EAAKwO,YAAaxO,EAAKuQ,WAKnBvQ,GAAKgD,SAAWrG,EAAOmK,SAAU9G,EAAM,YAC3CA,EAAKgD,QAAQ7C,OAAS,GAIxB,MAAOF,OAGRgD,MAAO,SAAU6sB,EAAeC,GAI/B,MAHAD,GAAiC,MAAjBA,GAAwB,EAAQA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzD9vB,KAAKsC,IAAK,WAChB,MAAO5F,GAAOsG,MAAOhD,KAAM6vB,EAAeC,MAI5CC,KAAM,SAAUhpB,GACf,MAAOrK,GAAOqL,OAAQ/H,KAAM,SAAU+G,GACrC,GAAIhH,GAAOC,KAAK,OACfmC,EAAI,EACJqF,EAAIxH,KAAKE,MAEV,IAAK6G,IAAU9K,EACd,MAAyB,KAAlB8D,EAAKQ,SACXR,EAAKsQ,UAAU9M,QAAS+pB,GAAe,IACvCrxB,CAIF,MAAsB,gBAAV8K,IAAuB8mB,GAAaptB,KAAMsG,KACnDrK,EAAOmI,QAAQwY,eAAkBkQ,GAAa9sB,KAAMsG,KACpDrK,EAAOmI,QAAQsY,mBAAsBqQ,GAAmB/sB,KAAMsG,IAC/DonB,IAAWT,GAASvtB,KAAM4G,KAAY,GAAI,KAAM,GAAGD,gBAAkB,CAEtEC,EAAQA,EAAMxD,QAASkqB,GAAW,YAElC,KACC,KAAWjmB,EAAJrF,EAAOA,IAEbpC,EAAOC,KAAKmC,OACW,IAAlBpC,EAAKQ,WACT7D,EAAO+jB,UAAWkP,GAAQ5vB,GAAM,IAChCA,EAAKsQ,UAAYtJ,EAInBhH,GAAO,EAGN,MAAM6E,KAGJ7E,GACJC,KAAKwV,QAAQ0Z,OAAQnoB,IAEpB,KAAMA,EAAOhF,UAAU7B,SAG3B8vB,YAAa,WACZ,GAECruB,GAAOjF,EAAO4F,IAAKtC,KAAM,SAAUD,GAClC,OAASA,EAAK4P,YAAa5P,EAAKe,cAEjCqB,EAAI,CAmBL,OAhBAnC,MAAKovB,SAAUrtB,UAAW,SAAUhC,GACnC,GAAIwhB,GAAO5f,EAAMQ,KAChBgO,EAASxO,EAAMQ,IAEXgO,KAECoR,GAAQA,EAAKzgB,aAAeqP,IAChCoR,EAAOvhB,KAAK2P,aAEbjT,EAAQsD,MAAOyF,SACf0K,EAAOof,aAAcxvB,EAAMwhB,MAG1B,GAGIpf,EAAInC,KAAOA,KAAKyF,UAGxBlG,OAAQ,SAAUzB,GACjB,MAAOkC,MAAKyF,OAAQ3H,GAAU,IAG/BsxB,SAAU,SAAUztB,EAAMD,EAAUuuB,GAGnCtuB,EAAO3E,EAAY8E,SAAWH,EAE9B,IAAIK,GAAOiO,EAAMigB,EAChB5qB,EAAS4K,EAAK2M,EACd1a,EAAI,EACJqF,EAAIxH,KAAKE,OACTwjB,EAAM1jB,KACNmwB,EAAW3oB,EAAI,EACfT,EAAQpF,EAAK,GACbhB,EAAajE,EAAOiE,WAAYoG,EAGjC,IAAKpG,KAAsB,GAAL6G,GAA2B,gBAAVT,IAAsBrK,EAAOmI,QAAQ8Z,aAAeoP,GAASttB,KAAMsG,GACzG,MAAO/G,MAAKyB,KAAK,SAAUoZ,GAC1B,GAAIH,GAAOgJ,EAAIzhB,GAAI4Y,EACdla,KACJgB,EAAK,GAAKoF,EAAM7F,KAAMlB,KAAM6a,EAAOH,EAAKqV,SAEzCrV,EAAK0U,SAAUztB,EAAMD,EAAUuuB,IAIjC,IAAKzoB,IACJqV,EAAWngB,EAAO8I,cAAe7D,EAAM3B,KAAM,GAAIQ,eAAe,GAAQyvB,GAAqBjwB,MAC7FgC,EAAQ6a,EAASvM,WAEmB,IAA/BuM,EAASnX,WAAWxF,SACxB2c,EAAW7a,GAGPA,GAAQ,CAMZ,IALAsD,EAAU5I,EAAO4F,IAAKqtB,GAAQ9S,EAAU,UAAYuT,IACpDF,EAAa5qB,EAAQpF,OAITsH,EAAJrF,EAAOA,IACd8N,EAAO4M,EAEF1a,IAAMguB,IACVlgB,EAAOvT,EAAOsG,MAAOiN,GAAM,GAAM,GAG5BigB,GACJxzB,EAAO2D,MAAOiF,EAASqqB,GAAQ1f,EAAM,YAIvCvO,EAASR,KAAMlB,KAAKmC,GAAI8N,EAAM9N,EAG/B,IAAK+tB,EAOJ,IANAhgB,EAAM5K,EAASA,EAAQpF,OAAS,GAAIM,cAGpC9D,EAAO4F,IAAKgD,EAAS+qB,IAGfluB,EAAI,EAAO+tB,EAAJ/tB,EAAgBA,IAC5B8N,EAAO3K,EAASnD,GACX6rB,GAAYvtB,KAAMwP,EAAK5Q,MAAQ,MAClC3C,EAAOqkB,MAAO9Q,EAAM,eAAkBvT,EAAOmN,SAAUqG,EAAKD,KAExDA,EAAKtN,IAETjG,EAAO4zB,SAAUrgB,EAAKtN,KAEtBjG,EAAO+J,YAAcwJ,EAAKhJ,MAAQgJ,EAAKqC,aAAerC,EAAKI,WAAa,IAAK9M,QAAS2qB,GAAc,KAOxGrR,GAAW7a,EAAQ,KAIrB,MAAOhC,QAMT,SAASqvB,IAAoBtvB,EAAMwwB,GAClC,MAAO7zB,GAAOmK,SAAU9G,EAAM,UAC7BrD,EAAOmK,SAA+B,IAArB0pB,EAAQhwB,SAAiBgwB,EAAUA,EAAQjgB,WAAY,MAExEvQ,EAAKwG,qBAAqB,SAAS,IAClCxG,EAAK0Q,YAAa1Q,EAAKS,cAAc+E,cAAc,UACpDxF,EAIF,QAASqwB,IAAerwB,GAEvB,MADAA,GAAKV,MAA6C,OAArC3C,EAAO0D,KAAKQ,KAAMb,EAAM,SAAqB,IAAMA,EAAKV,KAC9DU,EAER,QAASswB,IAAetwB,GACvB,GAAID,GAAQmuB,GAAkB9tB,KAAMJ,EAAKV,KAMzC,OALKS,GACJC,EAAKV,KAAOS,EAAM,GAElBC,EAAK8N,gBAAgB,QAEf9N,EAIR,QAAS6vB,IAAetuB,EAAOkvB,GAC9B,GAAIzwB,GACHoC,EAAI,CACL,MAA6B,OAApBpC,EAAOuB,EAAMa,IAAaA,IAClCzF,EAAOqkB,MAAOhhB,EAAM,cAAeywB,GAAe9zB,EAAOqkB,MAAOyP,EAAYruB,GAAI,eAIlF,QAASsuB,IAAgB9tB,EAAK+tB,GAE7B,GAAuB,IAAlBA,EAAKnwB,UAAmB7D,EAAOmkB,QAASle,GAA7C,CAIA,GAAItD,GAAM8C,EAAGqF,EACZmpB,EAAUj0B,EAAOqkB,MAAOpe,GACxBiuB,EAAUl0B,EAAOqkB,MAAO2P,EAAMC,GAC9BnL,EAASmL,EAAQnL,MAElB,IAAKA,EAAS,OACNoL,GAAQ1K,OACf0K,EAAQpL,SAER,KAAMnmB,IAAQmmB,GACb,IAAMrjB,EAAI,EAAGqF,EAAIge,EAAQnmB,GAAOa,OAAYsH,EAAJrF,EAAOA,IAC9CzF,EAAOyC,MAAMyb,IAAK8V,EAAMrxB,EAAMmmB,EAAQnmB,GAAQ8C,IAM5CyuB,EAAQzrB,OACZyrB,EAAQzrB,KAAOzI,EAAOgG,UAAYkuB,EAAQzrB,QAI5C,QAAS0rB,IAAoBluB,EAAK+tB,GACjC,GAAI7pB,GAAUjC,EAAGO,CAGjB,IAAuB,IAAlBurB,EAAKnwB,SAAV,CAOA,GAHAsG,EAAW6pB,EAAK7pB,SAASC,eAGnBpK,EAAOmI,QAAQsZ,cAAgBuS,EAAMh0B,EAAO0G,SAAY,CAC7D+B,EAAOzI,EAAOqkB,MAAO2P,EAErB,KAAM9rB,IAAKO,GAAKqgB,OACf9oB,EAAOmqB,YAAa6J,EAAM9rB,EAAGO,EAAK+gB,OAInCwK,GAAK7iB,gBAAiBnR,EAAO0G,SAIZ,WAAbyD,GAAyB6pB,EAAKzpB,OAAStE,EAAIsE,MAC/CmpB,GAAeM,GAAOzpB,KAAOtE,EAAIsE,KACjCopB,GAAeK,IAIS,WAAb7pB,GACN6pB,EAAK5vB,aACT4vB,EAAK5S,UAAYnb,EAAImb,WAOjBphB,EAAOmI,QAAQ+Y,YAAgBjb,EAAI0N,YAAc3T,EAAOmB,KAAK6yB,EAAKrgB,aACtEqgB,EAAKrgB,UAAY1N,EAAI0N,YAGE,UAAbxJ,GAAwBinB,GAA4BrtB,KAAMkC,EAAItD,OAKzEqxB,EAAKI,eAAiBJ,EAAKrb,QAAU1S,EAAI0S,QAIpCqb,EAAK3pB,QAAUpE,EAAIoE,QACvB2pB,EAAK3pB,MAAQpE,EAAIoE,QAKM,WAAbF,EACX6pB,EAAKK,gBAAkBL,EAAKpb,SAAW3S,EAAIouB,iBAInB,UAAblqB,GAAqC,aAAbA,KACnC6pB,EAAKthB,aAAezM,EAAIyM,eAI1B1S,EAAO+E,MACNuvB,SAAU,SACVC,UAAW,UACX1B,aAAc,SACd2B,YAAa,QACbC,WAAY,eACV,SAAUruB,EAAM8lB,GAClBlsB,EAAOsB,GAAI8E,GAAS,SAAUhF,GAC7B,GAAIwD,GACHa,EAAI,EACJZ,KACA6vB,EAAS10B,EAAQoB,GACjBoE,EAAOkvB,EAAOlxB,OAAS,CAExB,MAAagC,GAALC,EAAWA,IAClBb,EAAQa,IAAMD,EAAOlC,KAAOA,KAAKgD,OAAM,GACvCtG,EAAQ00B,EAAOjvB,IAAMymB,GAAYtnB,GAGjCpE,EAAU4E,MAAOP,EAAKD,EAAMH,MAG7B,OAAOnB,MAAKqB,UAAWE,KAIzB,SAASouB,IAAQ5xB,EAASgT,GACzB,GAAIzP,GAAOvB,EACVoC,EAAI,EACJkvB,QAAetzB,GAAQwI,uBAAyBnK,EAAoB2B,EAAQwI,qBAAsBwK,GAAO,WACjGhT,GAAQ4P,mBAAqBvR,EAAoB2B,EAAQ4P,iBAAkBoD,GAAO,KACzF9U,CAEF,KAAMo1B,EACL,IAAMA,KAAY/vB,EAAQvD,EAAQ2H,YAAc3H,EAA8B,OAApBgC,EAAOuB,EAAMa,IAAaA,KAC7E4O,GAAOrU,EAAOmK,SAAU9G,EAAMgR,GACnCsgB,EAAMl0B,KAAM4C,GAEZrD,EAAO2D,MAAOgxB,EAAO1B,GAAQ5vB,EAAMgR,GAKtC,OAAOA,KAAQ9U,GAAa8U,GAAOrU,EAAOmK,SAAU9I,EAASgT,GAC5DrU,EAAO2D,OAAStC,GAAWszB,GAC3BA,EAIF,QAASC,IAAmBvxB,GACtB+tB,GAA4BrtB,KAAMV,EAAKV,QAC3CU,EAAK+wB,eAAiB/wB,EAAKsV,SAI7B3Y,EAAOgG,QACNM,MAAO,SAAUjD,EAAM8vB,EAAeC,GACrC,GAAIyB,GAActhB,EAAMjN,EAAOb,EAAGqvB,EACjCC,EAAS/0B,EAAOmN,SAAU9J,EAAKS,cAAeT,EAW/C,IATKrD,EAAOmI,QAAQ+Y,YAAclhB,EAAO+c,SAAS1Z,KAAUwtB,GAAa9sB,KAAM,IAAMV,EAAK8G,SAAW,KACpG7D,EAAQjD,EAAK8d,WAAW,IAIxB+Q,GAAYve,UAAYtQ,EAAK+d,UAC7B8Q,GAAYrgB,YAAavL,EAAQ4rB,GAAYte,eAGvC5T,EAAOmI,QAAQsZ,cAAiBzhB,EAAOmI,QAAQyZ,gBACjC,IAAlBve,EAAKQ,UAAoC,KAAlBR,EAAKQ,UAAqB7D,EAAO+c,SAAS1Z,IAOnE,IAJAwxB,EAAe5B,GAAQ3sB,GACvBwuB,EAAc7B,GAAQ5vB,GAGhBoC,EAAI,EAA8B,OAA1B8N,EAAOuhB,EAAYrvB,MAAeA,EAE1CovB,EAAapvB,IACjB0uB,GAAoB5gB,EAAMshB,EAAapvB,GAM1C,IAAK0tB,EACJ,GAAKC,EAIJ,IAHA0B,EAAcA,GAAe7B,GAAQ5vB,GACrCwxB,EAAeA,GAAgB5B,GAAQ3sB,GAEjCb,EAAI,EAA8B,OAA1B8N,EAAOuhB,EAAYrvB,IAAaA,IAC7CsuB,GAAgBxgB,EAAMshB,EAAapvB,QAGpCsuB,IAAgB1wB,EAAMiD,EAaxB,OARAuuB,GAAe5B,GAAQ3sB,EAAO,UACzBuuB,EAAarxB,OAAS,GAC1B0vB,GAAe2B,GAAeE,GAAU9B,GAAQ5vB,EAAM,WAGvDwxB,EAAeC,EAAcvhB,EAAO,KAG7BjN,GAGRwC,cAAe,SAAUlE,EAAOvD,EAASuH,EAASosB,GACjD,GAAIrvB,GAAGtC,EAAM8J,EACZ5D,EAAK8K,EAAKqM,EAAOuU,EACjBnqB,EAAIlG,EAAMpB,OAGV0xB,EAAOzE,GAAoBpvB,GAE3B8zB,KACA1vB,EAAI,CAEL,MAAYqF,EAAJrF,EAAOA,IAGd,GAFApC,EAAOuB,EAAOa,GAETpC,GAAiB,IAATA,EAGZ,GAA6B,WAAxBrD,EAAO2C,KAAMU,GACjBrD,EAAO2D,MAAOwxB,EAAO9xB,EAAKQ,UAAaR,GAASA,OAG1C,IAAM6tB,GAAMntB,KAAMV,GAIlB,CACNkG,EAAMA,GAAO2rB,EAAKnhB,YAAa1S,EAAQwH,cAAc,QAGrDwL,GAAQ2c,GAASvtB,KAAMJ,KAAW,GAAI,KAAM,GAAG+G,cAC/C6qB,EAAOxD,GAASpd,IAASod,GAAQzG,SAEjCzhB,EAAIoK,UAAYshB,EAAK,GAAK5xB,EAAKwD,QAASkqB,GAAW,aAAgBkE,EAAK,GAGxEtvB,EAAIsvB,EAAK,EACT,OAAQtvB,IACP4D,EAAMA,EAAI+N,SASX,KALMtX,EAAOmI,QAAQsY,mBAAqBqQ,GAAmB/sB,KAAMV,IAClE8xB,EAAM10B,KAAMY,EAAQoxB,eAAgB3B,GAAmBrtB,KAAMJ,GAAO,MAI/DrD,EAAOmI,QAAQuY,MAAQ,CAG5Brd,EAAe,UAARgR,GAAoB4c,GAAOltB,KAAMV,GAI3B,YAAZ4xB,EAAK,IAAqBhE,GAAOltB,KAAMV,GAEtC,EADAkG,EAJDA,EAAIqK,WAOLjO,EAAItC,GAAQA,EAAK2F,WAAWxF,MAC5B,OAAQmC,IACF3F,EAAOmK,SAAWuW,EAAQrd,EAAK2F,WAAWrD,GAAK,WAAc+a,EAAM1X,WAAWxF,QAClFH,EAAKwO,YAAa6O,GAKrB1gB,EAAO2D,MAAOwxB,EAAO5rB,EAAIP,YAGzBO,EAAIqM,YAAc,EAGlB,OAAQrM,EAAIqK,WACXrK,EAAIsI,YAAatI,EAAIqK,WAItBrK,GAAM2rB,EAAK5d,cAtDX6d,GAAM10B,KAAMY,EAAQoxB,eAAgBpvB,GA4DlCkG,IACJ2rB,EAAKrjB,YAAatI,GAKbvJ,EAAOmI,QAAQ6Z,eACpBhiB,EAAO+K,KAAMkoB,GAAQkC,EAAO,SAAWP,IAGxCnvB,EAAI,CACJ,OAASpC,EAAO8xB,EAAO1vB,KAItB,KAAKuvB,GAAmD,KAAtCh1B,EAAO2K,QAAStH,EAAM2xB,MAIxC7nB,EAAWnN,EAAOmN,SAAU9J,EAAKS,cAAeT,GAGhDkG,EAAM0pB,GAAQiC,EAAKnhB,YAAa1Q,GAAQ,UAGnC8J,GACJ+lB,GAAe3pB,GAIXX,GAAU,CACdjD,EAAI,CACJ,OAAStC,EAAOkG,EAAK5D,KACf2rB,GAAYvtB,KAAMV,EAAKV,MAAQ,KACnCiG,EAAQnI,KAAM4C,GAQlB,MAFAkG,GAAM,KAEC2rB,GAGRnR,UAAW,SAAUnf,EAAsB4e,GAC1C,GAAIngB,GAAMV,EAAM0B,EAAIoE,EACnBhD,EAAI,EACJie,EAAc1jB,EAAO0G,QACrB6K,EAAQvR,EAAOuR,MACfiQ,EAAgBxhB,EAAOmI,QAAQqZ,cAC/ByH,EAAUjpB,EAAOyC,MAAMwmB,OAExB,MAA6B,OAApB5lB,EAAOuB,EAAMa,IAAaA,IAElC,IAAK+d,GAAcxjB,EAAOwjB,WAAYngB,MAErCgB,EAAKhB,EAAMqgB,GACXjb,EAAOpE,GAAMkN,EAAOlN,IAER,CACX,GAAKoE,EAAKqgB,OACT,IAAMnmB,IAAQ8F,GAAKqgB,OACbG,EAAStmB,GACb3C,EAAOyC,MAAMsG,OAAQ1F,EAAMV,GAI3B3C,EAAOmqB,YAAa9mB,EAAMV,EAAM8F,EAAK+gB,OAMnCjY;EAAOlN,WAEJkN,GAAOlN,GAKTmd,QACGne,GAAMqgB,SAEKrgB,GAAK8N,kBAAoBzR,EAC3C2D,EAAK8N,gBAAiBuS,GAGtBrgB,EAAMqgB,GAAgB,KAGvBtjB,EAAgBK,KAAM4D,MAO3BuvB,SAAU,SAAUwB,GACnB,MAAOp1B,GAAOq1B,MACbD,IAAKA,EACLzyB,KAAM,MACN2yB,SAAU,SACV3rB,OAAO,EACPif,QAAQ,EACR2M,UAAU,OAIbv1B,EAAOsB,GAAG0E,QACTwvB,QAAS,SAAUnC,GAClB,GAAKrzB,EAAOiE,WAAYovB,GACvB,MAAO/vB,MAAKyB,KAAK,SAASU,GACzBzF,EAAOsD,MAAMkyB,QAASnC,EAAK7uB,KAAKlB,KAAMmC,KAIxC,IAAKnC,KAAK,GAAK,CAEd,GAAI2xB,GAAOj1B,EAAQqzB,EAAM/vB,KAAK,GAAGQ,eAAgByB,GAAG,GAAGe,OAAM,EAExDhD,MAAK,GAAGc,YACZ6wB,EAAKpC,aAAcvvB,KAAK,IAGzB2xB,EAAKrvB,IAAI,WACR,GAAIvC,GAAOC,IAEX,OAAQD,EAAKuQ,YAA2C,IAA7BvQ,EAAKuQ,WAAW/P,SAC1CR,EAAOA,EAAKuQ,UAGb,OAAOvQ,KACLmvB,OAAQlvB,MAGZ,MAAOA,OAGRmyB,UAAW,SAAUpC,GACpB,MAAKrzB,GAAOiE,WAAYovB,GAChB/vB,KAAKyB,KAAK,SAASU,GACzBzF,EAAOsD,MAAMmyB,UAAWpC,EAAK7uB,KAAKlB,KAAMmC,MAInCnC,KAAKyB,KAAK,WAChB,GAAIiZ,GAAOhe,EAAQsD,MAClB4rB,EAAWlR,EAAKkR,UAEZA,GAAS1rB,OACb0rB,EAASsG,QAASnC,GAGlBrV,EAAKwU,OAAQa,MAKhB4B,KAAM,SAAU5B,GACf,GAAIpvB,GAAajE,EAAOiE,WAAYovB,EAEpC,OAAO/vB,MAAKyB,KAAK,SAASU,GACzBzF,EAAQsD,MAAOkyB,QAASvxB,EAAaovB,EAAK7uB,KAAKlB,KAAMmC,GAAK4tB,MAI5DqC,OAAQ,WACP,MAAOpyB,MAAKmQ,SAAS1O,KAAK,WACnB/E,EAAOmK,SAAU7G,KAAM,SAC5BtD,EAAQsD,MAAOgwB,YAAahwB,KAAK0F,cAEhCnD,QAGL,IAAI8vB,IAAQC,GAAWC,GACtBC,GAAS,kBACTC,GAAW,wBACXC,GAAY,4BAGZC,GAAe,4BACfC,GAAU,UACVC,GAAgB5nB,OAAQ,KAAO/M,EAAY,SAAU,KACrD40B,GAAgB7nB,OAAQ,KAAO/M,EAAY,kBAAmB,KAC9D60B,GAAc9nB,OAAQ,YAAc/M,EAAY,IAAK,KACrD80B,IAAgBC,KAAM,SAEtBC,IAAYC,SAAU,WAAYC,WAAY,SAAU9T,QAAS,SACjE+T,IACCC,cAAe,EACfC,WAAY,KAGbC,IAAc,MAAO,QAAS,SAAU,QACxCC,IAAgB,SAAU,IAAK,MAAO,KAGvC,SAASC,IAAgBjrB,EAAO3F,GAG/B,GAAKA,IAAQ2F,GACZ,MAAO3F,EAIR,IAAI6wB,GAAU7wB,EAAK7C,OAAO,GAAGhB,cAAgB6D,EAAKzF,MAAM,GACvDu2B,EAAW9wB,EACXX,EAAIsxB,GAAYvzB,MAEjB,OAAQiC,IAEP,GADAW,EAAO2wB,GAAatxB,GAAMwxB,EACrB7wB,IAAQ2F,GACZ,MAAO3F,EAIT,OAAO8wB,GAGR,QAASC,IAAU9zB,EAAM+zB,GAIxB,MADA/zB,GAAO+zB,GAAM/zB,EAC4B,SAAlCrD,EAAOq3B,IAAKh0B,EAAM,aAA2BrD,EAAOmN,SAAU9J,EAAKS,cAAeT,GAG1F,QAASi0B,IAAU/hB,EAAUgiB,GAC5B,GAAI3U,GAASvf,EAAMm0B,EAClB1X,KACA3B,EAAQ,EACR3a,EAAS+R,EAAS/R,MAEnB,MAAgBA,EAAR2a,EAAgBA,IACvB9a,EAAOkS,EAAU4I,GACX9a,EAAK0I,QAIX+T,EAAQ3B,GAAUne,EAAOqkB,MAAOhhB,EAAM,cACtCuf,EAAUvf,EAAK0I,MAAM6W,QAChB2U,GAGEzX,EAAQ3B,IAAuB,SAAZyE,IACxBvf,EAAK0I,MAAM6W,QAAU,IAMM,KAAvBvf,EAAK0I,MAAM6W,SAAkBuU,GAAU9zB,KAC3Cyc,EAAQ3B,GAAUne,EAAOqkB,MAAOhhB,EAAM,aAAco0B,GAAmBp0B,EAAK8G,aAIvE2V,EAAQ3B,KACbqZ,EAASL,GAAU9zB,IAEduf,GAAuB,SAAZA,IAAuB4U,IACtCx3B,EAAOqkB,MAAOhhB,EAAM,aAAcm0B,EAAS5U,EAAU5iB,EAAOq3B,IAAKh0B,EAAM,aAQ3E,KAAM8a,EAAQ,EAAW3a,EAAR2a,EAAgBA,IAChC9a,EAAOkS,EAAU4I,GACX9a,EAAK0I,QAGLwrB,GAA+B,SAAvBl0B,EAAK0I,MAAM6W,SAA6C,KAAvBvf,EAAK0I,MAAM6W,UACzDvf,EAAK0I,MAAM6W,QAAU2U,EAAOzX,EAAQ3B,IAAW,GAAK,QAItD,OAAO5I,GAGRvV,EAAOsB,GAAG0E,QACTqxB,IAAK,SAAUjxB,EAAMiE,GACpB,MAAOrK,GAAOqL,OAAQ/H,KAAM,SAAUD,EAAM+C,EAAMiE,GACjD,GAAI3E,GAAKgyB,EACR9xB,KACAH,EAAI,CAEL,IAAKzF,EAAOyG,QAASL,GAAS,CAI7B,IAHAsxB,EAAS9B,GAAWvyB,GACpBqC,EAAMU,EAAK5C,OAECkC,EAAJD,EAASA,IAChBG,EAAKQ,EAAMX,IAAQzF,EAAOq3B,IAAKh0B,EAAM+C,EAAMX,IAAK,EAAOiyB,EAGxD,OAAO9xB,GAGR,MAAOyE,KAAU9K,EAChBS,EAAO+L,MAAO1I,EAAM+C,EAAMiE,GAC1BrK,EAAOq3B,IAAKh0B,EAAM+C,IACjBA,EAAMiE,EAAOhF,UAAU7B,OAAS,IAEpC+zB,KAAM,WACL,MAAOD,IAAUh0B,MAAM,IAExBq0B,KAAM,WACL,MAAOL,IAAUh0B,OAElBs0B,OAAQ,SAAUnZ,GACjB,GAAIpP,GAAwB,iBAAVoP,EAElB,OAAOnb,MAAKyB,KAAK,YACXsK,EAAOoP,EAAQ0Y,GAAU7zB,OAC7BtD,EAAQsD,MAAOi0B,OAEfv3B,EAAQsD,MAAOq0B,YAMnB33B,EAAOgG,QAGN6xB,UACChX,SACCpc,IAAK,SAAUpB,EAAMy0B,GACpB,GAAKA,EAAW,CAEf,GAAIjzB,GAAMgxB,GAAQxyB,EAAM,UACxB,OAAe,KAARwB,EAAa,IAAMA,MAO9BkzB,WACCC,aAAe,EACfC,aAAe,EACfpB,YAAc,EACdqB,YAAc,EACdrX,SAAW,EACXsX,SAAW,EACXC,QAAU,EACVC,QAAU,EACVvV,MAAQ,GAKTwV,UAECC,QAASv4B,EAAOmI,QAAQ2Y,SAAW,WAAa,cAIjD/U,MAAO,SAAU1I,EAAM+C,EAAMiE,EAAOmuB,GAEnC,GAAMn1B,GAA0B,IAAlBA,EAAKQ,UAAoC,IAAlBR,EAAKQ,UAAmBR,EAAK0I,MAAlE,CAKA,GAAIlH,GAAKlC,EAAMgiB,EACduS,EAAWl3B,EAAOiK,UAAW7D,GAC7B2F,EAAQ1I,EAAK0I,KASd,IAPA3F,EAAOpG,EAAOs4B,SAAUpB,KAAgBl3B,EAAOs4B,SAAUpB,GAAaF,GAAgBjrB,EAAOmrB,IAI7FvS,EAAQ3kB,EAAO63B,SAAUzxB,IAAUpG,EAAO63B,SAAUX,GAG/C7sB,IAAU9K,EAsCd,MAAKolB,IAAS,OAASA,KAAU9f,EAAM8f,EAAMlgB,IAAKpB,GAAM,EAAOm1B,MAAaj5B,EACpEsF,EAIDkH,EAAO3F,EAhCd,IAVAzD,QAAc0H,GAGA,WAAT1H,IAAsBkC,EAAMwxB,GAAQ5yB,KAAM4G,MAC9CA,GAAUxF,EAAI,GAAK,GAAMA,EAAI,GAAKiD,WAAY9H,EAAOq3B,IAAKh0B,EAAM+C,IAEhEzD,EAAO,YAIM,MAAT0H,GAA0B,WAAT1H,GAAqBkF,MAAOwC,KAKpC,WAAT1H,GAAsB3C,EAAO+3B,UAAWb,KAC5C7sB,GAAS,MAKJrK,EAAOmI,QAAQma,iBAA6B,KAAVjY,GAA+C,IAA/BjE,EAAKvF,QAAQ,gBACpEkL,EAAO3F,GAAS,WAIXue,GAAW,OAASA,KAAWta,EAAQsa,EAAMqC,IAAK3jB,EAAMgH,EAAOmuB,MAAaj5B,IAIjF,IACCwM,EAAO3F,GAASiE,EACf,MAAMnC,OAcXmvB,IAAK,SAAUh0B,EAAM+C,EAAMoyB,EAAOd,GACjC,GAAIhzB,GAAK2N,EAAKsS,EACbuS,EAAWl3B,EAAOiK,UAAW7D,EAyB9B,OAtBAA,GAAOpG,EAAOs4B,SAAUpB,KAAgBl3B,EAAOs4B,SAAUpB,GAAaF,GAAgB3zB,EAAK0I,MAAOmrB,IAIlGvS,EAAQ3kB,EAAO63B,SAAUzxB,IAAUpG,EAAO63B,SAAUX,GAG/CvS,GAAS,OAASA,KACtBtS,EAAMsS,EAAMlgB,IAAKpB,GAAM,EAAMm1B,IAIzBnmB,IAAQ9S,IACZ8S,EAAMwjB,GAAQxyB,EAAM+C,EAAMsxB,IAId,WAARrlB,GAAoBjM,IAAQuwB,MAChCtkB,EAAMskB,GAAoBvwB,IAIZ,KAAVoyB,GAAgBA,GACpB9zB,EAAMoD,WAAYuK,GACXmmB,KAAU,GAAQx4B,EAAO4H,UAAWlD,GAAQA,GAAO,EAAI2N,GAExDA,KAMJ/S,EAAO2jB,kBACX2S,GAAY,SAAUvyB,GACrB,MAAO/D,GAAO2jB,iBAAkB5f,EAAM,OAGvCwyB,GAAS,SAAUxyB,EAAM+C,EAAMqyB,GAC9B,GAAIvV,GAAOwV,EAAUC,EACpBb,EAAWW,GAAa7C,GAAWvyB,GAGnCwB,EAAMizB,EAAWA,EAASc,iBAAkBxyB,IAAU0xB,EAAU1xB,GAAS7G,EACzEwM,EAAQ1I,EAAK0I,KA8Bd,OA5BK+rB,KAES,KAARjzB,GAAe7E,EAAOmN,SAAU9J,EAAKS,cAAeT,KACxDwB,EAAM7E,EAAO+L,MAAO1I,EAAM+C,IAOtBgwB,GAAUryB,KAAMc,IAASqxB,GAAQnyB,KAAMqC,KAG3C8c,EAAQnX,EAAMmX,MACdwV,EAAW3sB,EAAM2sB,SACjBC,EAAW5sB,EAAM4sB,SAGjB5sB,EAAM2sB,SAAW3sB,EAAM4sB,SAAW5sB,EAAMmX,MAAQre,EAChDA,EAAMizB,EAAS5U,MAGfnX,EAAMmX,MAAQA,EACdnX,EAAM2sB,SAAWA,EACjB3sB,EAAM4sB,SAAWA,IAIZ9zB,IAEGjF,EAASE,gBAAgB+4B,eACpCjD,GAAY,SAAUvyB,GACrB,MAAOA,GAAKw1B,cAGbhD,GAAS,SAAUxyB,EAAM+C,EAAMqyB,GAC9B,GAAIK,GAAMC,EAAIC,EACblB,EAAWW,GAAa7C,GAAWvyB,GACnCwB,EAAMizB,EAAWA,EAAU1xB,GAAS7G,EACpCwM,EAAQ1I,EAAK0I,KAoCd,OAhCY,OAAPlH,GAAekH,GAASA,EAAO3F,KACnCvB,EAAMkH,EAAO3F,IAUTgwB,GAAUryB,KAAMc,KAAUmxB,GAAUjyB,KAAMqC,KAG9C0yB,EAAO/sB,EAAM+sB,KACbC,EAAK11B,EAAK41B,aACVD,EAASD,GAAMA,EAAGD,KAGbE,IACJD,EAAGD,KAAOz1B,EAAKw1B,aAAaC,MAE7B/sB,EAAM+sB,KAAgB,aAAT1yB,EAAsB,MAAQvB,EAC3CA,EAAMkH,EAAMmtB,UAAY,KAGxBntB,EAAM+sB,KAAOA,EACRE,IACJD,EAAGD,KAAOE,IAIG,KAARn0B,EAAa,OAASA,GAI/B,SAASs0B,IAAmB91B,EAAMgH,EAAO+uB,GACxC,GAAIlsB,GAAUipB,GAAU1yB,KAAM4G,EAC9B,OAAO6C,GAENvG,KAAKiE,IAAK,EAAGsC,EAAS,IAAQksB,GAAY,KAAUlsB,EAAS,IAAO,MACpE7C,EAGF,QAASgvB,IAAsBh2B,EAAM+C,EAAMoyB,EAAOc,EAAa5B,GAC9D,GAAIjyB,GAAI+yB,KAAYc,EAAc,SAAW,WAE5C,EAES,UAATlzB,EAAmB,EAAI,EAEvBiM,EAAM,CAEP,MAAY,EAAJ5M,EAAOA,GAAK,EAEJ,WAAV+yB,IACJnmB,GAAOrS,EAAOq3B,IAAKh0B,EAAMm1B,EAAQ1B,GAAWrxB,IAAK,EAAMiyB,IAGnD4B,GAEW,YAAVd,IACJnmB,GAAOrS,EAAOq3B,IAAKh0B,EAAM,UAAYyzB,GAAWrxB,IAAK,EAAMiyB,IAI7C,WAAVc,IACJnmB,GAAOrS,EAAOq3B,IAAKh0B,EAAM,SAAWyzB,GAAWrxB,GAAM,SAAS,EAAMiyB,MAIrErlB,GAAOrS,EAAOq3B,IAAKh0B,EAAM,UAAYyzB,GAAWrxB,IAAK,EAAMiyB,GAG5C,YAAVc,IACJnmB,GAAOrS,EAAOq3B,IAAKh0B,EAAM,SAAWyzB,GAAWrxB,GAAM,SAAS,EAAMiyB,IAKvE,OAAOrlB,GAGR,QAASknB,IAAkBl2B,EAAM+C,EAAMoyB,GAGtC,GAAIgB,IAAmB,EACtBnnB,EAAe,UAATjM,EAAmB/C,EAAK2f,YAAc3f,EAAKsf,aACjD+U,EAAS9B,GAAWvyB,GACpBi2B,EAAct5B,EAAOmI,QAAQ4a,WAAgE,eAAnD/iB,EAAOq3B,IAAKh0B,EAAM,aAAa,EAAOq0B,EAKjF,IAAY,GAAPrlB,GAAmB,MAAPA,EAAc,CAQ9B,GANAA,EAAMwjB,GAAQxyB,EAAM+C,EAAMsxB,IACf,EAANrlB,GAAkB,MAAPA,KACfA,EAAMhP,EAAK0I,MAAO3F,IAIdgwB,GAAUryB,KAAKsO,GACnB,MAAOA,EAKRmnB,GAAmBF,IAAiBt5B,EAAOmI,QAAQwZ,mBAAqBtP,IAAQhP,EAAK0I,MAAO3F,IAG5FiM,EAAMvK,WAAYuK,IAAS,EAI5B,MAASA,GACRgnB,GACCh2B,EACA+C,EACAoyB,IAAWc,EAAc,SAAW,WACpCE,EACA9B,GAEE,KAIL,QAASD,IAAoBttB,GAC5B,GAAIqJ,GAAM5T,EACTgjB,EAAU0T,GAAansB,EA0BxB,OAxBMyY,KACLA,EAAU6W,GAAetvB,EAAUqJ,GAGlB,SAAZoP,GAAuBA,IAE3B+S,IAAWA,IACV31B,EAAO,kDACNq3B,IAAK,UAAW,6BAChB/C,SAAU9gB,EAAI1T,iBAGhB0T,GAAQmiB,GAAO,GAAGvF,eAAiBuF,GAAO,GAAGxF,iBAAkBvwB,SAC/D4T,EAAIkmB,MAAM,+BACVlmB,EAAImmB,QAEJ/W,EAAU6W,GAAetvB,EAAUqJ,GACnCmiB,GAAO9yB,UAIRyzB,GAAansB,GAAayY,GAGpBA,EAIR,QAAS6W,IAAerzB,EAAMoN,GAC7B,GAAInQ,GAAOrD,EAAQwT,EAAI3K,cAAezC,IAASkuB,SAAU9gB,EAAIpM,MAC5Dwb,EAAU5iB,EAAOq3B,IAAKh0B,EAAK,GAAI,UAEhC,OADAA,GAAK0F,SACE6Z,EAGR5iB,EAAO+E,MAAO,SAAU,SAAW,SAAUU,EAAGW,GAC/CpG,EAAO63B,SAAUzxB,IAChB3B,IAAK,SAAUpB,EAAMy0B,EAAUU,GAC9B,MAAKV,GAGwB,IAArBz0B,EAAK2f,aAAqBiT,GAAalyB,KAAM/D,EAAOq3B,IAAKh0B,EAAM,YACrErD,EAAO6L,KAAMxI,EAAMmzB,GAAS,WAC3B,MAAO+C,IAAkBl2B,EAAM+C,EAAMoyB,KAEtCe,GAAkBl2B,EAAM+C,EAAMoyB,GAPhC,GAWDxR,IAAK,SAAU3jB,EAAMgH,EAAOmuB,GAC3B,GAAId,GAASc,GAAS5C,GAAWvyB,EACjC,OAAO81B,IAAmB91B,EAAMgH,EAAOmuB,EACtCa,GACCh2B,EACA+C,EACAoyB,EACAx4B,EAAOmI,QAAQ4a,WAAgE,eAAnD/iB,EAAOq3B,IAAKh0B,EAAM,aAAa,EAAOq0B,GAClEA,GACG,OAMF13B,EAAOmI,QAAQ0Y,UACpB7gB,EAAO63B,SAAShX,SACfpc,IAAK,SAAUpB,EAAMy0B,GAEpB,MAAO/B,IAAShyB,MAAO+zB,GAAYz0B,EAAKw1B,aAAex1B,EAAKw1B,aAAa1kB,OAAS9Q,EAAK0I,MAAMoI,SAAW,IACrG,IAAOrM,WAAYyG,OAAOqrB,IAAS,GACrC9B,EAAW,IAAM,IAGnB9Q,IAAK,SAAU3jB,EAAMgH,GACpB,GAAI0B,GAAQ1I,EAAK0I,MAChB8sB,EAAex1B,EAAKw1B,aACpBhY,EAAU7gB,EAAO4H,UAAWyC,GAAU,iBAA2B,IAARA,EAAc,IAAM,GAC7E8J,EAAS0kB,GAAgBA,EAAa1kB,QAAUpI,EAAMoI,QAAU,EAIjEpI,GAAM+W,KAAO,GAINzY,GAAS,GAAe,KAAVA,IAC6B,KAAhDrK,EAAOmB,KAAMgT,EAAOtN,QAASivB,GAAQ,MACrC/pB,EAAMoF,kBAKPpF,EAAMoF,gBAAiB,UAGR,KAAV9G,GAAgBwuB,IAAiBA,EAAa1kB,UAMpDpI,EAAMoI,OAAS2hB,GAAO/xB,KAAMoQ,GAC3BA,EAAOtN,QAASivB,GAAQjV,GACxB1M,EAAS,IAAM0M,MAOnB7gB,EAAO,WACAA,EAAOmI,QAAQuZ,sBACpB1hB,EAAO63B,SAAS1U,aACf1e,IAAK,SAAUpB,EAAMy0B,GACpB,MAAKA,GAGG93B,EAAO6L,KAAMxI,GAAQuf,QAAW,gBACtCiT,IAAUxyB,EAAM,gBAJlB,MAaGrD,EAAOmI,QAAQoZ,eAAiBvhB,EAAOsB,GAAGm1B,UAC/Cz2B,EAAO+E,MAAQ,MAAO,QAAU,SAAUU,EAAGygB,GAC5ClmB,EAAO63B,SAAU3R,IAChBzhB,IAAK,SAAUpB,EAAMy0B,GACpB,MAAKA,IACJA,EAAWjC,GAAQxyB,EAAM6iB,GAElBkQ,GAAUryB,KAAM+zB,GACtB93B,EAAQqD,GAAOozB,WAAYvQ,GAAS,KACpC4R,GALF,QAcA93B,EAAOsV,MAAQtV,EAAOsV,KAAKuH,UAC/B7c,EAAOsV,KAAKuH,QAAQ2a,OAAS,SAAUn0B,GAGtC,MAA2B,IAApBA,EAAK2f,aAAyC,GAArB3f,EAAKsf,eAClC3iB,EAAOmI,QAAQ0a,uBAAmG,UAAxExf,EAAK0I,OAAS1I,EAAK0I,MAAM6W,SAAY5iB,EAAOq3B,IAAKh0B,EAAM,aAGrGrD,EAAOsV,KAAKuH,QAAQgd,QAAU,SAAUx2B,GACvC,OAAQrD,EAAOsV,KAAKuH,QAAQ2a,OAAQn0B,KAKtCrD,EAAO+E,MACN+0B,OAAQ,GACRC,QAAS,GACTC,OAAQ,SACN,SAAUC,EAAQC,GACpBl6B,EAAO63B,SAAUoC,EAASC,IACzBC,OAAQ,SAAU9vB,GACjB,GAAI5E,GAAI,EACP20B,KAGAC,EAAyB,gBAAVhwB,GAAqBA,EAAMiC,MAAM,MAASjC,EAE1D,MAAY,EAAJ5E,EAAOA,IACd20B,EAAUH,EAASnD,GAAWrxB,GAAMy0B,GACnCG,EAAO50B,IAAO40B,EAAO50B,EAAI,IAAO40B,EAAO,EAGzC,OAAOD,KAIHlE,GAAQnyB,KAAMk2B,KACnBj6B,EAAO63B,SAAUoC,EAASC,GAASlT,IAAMmS,KAG3C,IAAImB,IAAM,OACTC,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,oCAEhB16B,GAAOsB,GAAG0E,QACT20B,UAAW,WACV,MAAO36B,GAAO4xB,MAAOtuB,KAAKs3B,mBAE3BA,eAAgB,WACf,MAAOt3B,MAAKsC,IAAI,WAEf,GAAI2P,GAAWvV,EAAOkmB,KAAM5iB,KAAM,WAClC,OAAOiS,GAAWvV,EAAOsE,UAAWiR,GAAajS,OAEjD6Q,OAAO,WACP,GAAIxR,GAAOW,KAAKX,IAEhB,OAAOW,MAAK8C,OAASpG,EAAQsD,MAAOgsB,GAAI,cACvCoL,GAAa32B,KAAMT,KAAK6G,YAAeswB,GAAgB12B,KAAMpB,KAC3DW,KAAKqV,UAAYyY,GAA4BrtB,KAAMpB,MAEtDiD,IAAI,SAAUH,EAAGpC,GACjB,GAAIgP,GAAMrS,EAAQsD,MAAO+O,KAEzB,OAAc,OAAPA,EACN,KACArS,EAAOyG,QAAS4L,GACfrS,EAAO4F,IAAKyM,EAAK,SAAUA,GAC1B,OAASjM,KAAM/C,EAAK+C,KAAMiE,MAAOgI,EAAIxL,QAAS2zB,GAAO,YAEpDp0B,KAAM/C,EAAK+C,KAAMiE,MAAOgI,EAAIxL,QAAS2zB,GAAO,WAC9C/1B,SAMLzE,EAAO4xB,MAAQ,SAAUhf,EAAGioB,GAC3B,GAAIZ,GACHa,KACA5c,EAAM,SAAUjW,EAAKoC,GAEpBA,EAAQrK,EAAOiE,WAAYoG,GAAUA,IAAqB,MAATA,EAAgB,GAAKA,EACtEywB,EAAGA,EAAEt3B,QAAWu3B,mBAAoB9yB,GAAQ,IAAM8yB,mBAAoB1wB,GASxE,IALKwwB,IAAgBt7B,IACpBs7B,EAAc76B,EAAOg7B,cAAgBh7B,EAAOg7B,aAAaH,aAIrD76B,EAAOyG,QAASmM,IAASA,EAAE1P,SAAWlD,EAAOgE,cAAe4O,GAEhE5S,EAAO+E,KAAM6N,EAAG,WACfsL,EAAK5a,KAAK8C,KAAM9C,KAAK+G,aAMtB,KAAM4vB,IAAUrnB,GACfqoB,GAAahB,EAAQrnB,EAAGqnB,GAAUY,EAAa3c,EAKjD,OAAO4c,GAAE9pB,KAAM,KAAMnK,QAASyzB,GAAK,KAGpC,SAASW,IAAahB,EAAQxyB,EAAKozB,EAAa3c,GAC/C,GAAI9X,EAEJ,IAAKpG,EAAOyG,QAASgB,GAEpBzH,EAAO+E,KAAM0C,EAAK,SAAUhC,EAAGy1B,GACzBL,GAAeN,GAASx2B,KAAMk2B,GAElC/b,EAAK+b,EAAQiB,GAIbD,GAAahB,EAAS,KAAqB,gBAANiB,GAAiBz1B,EAAI,IAAO,IAAKy1B,EAAGL,EAAa3c,SAIlF,IAAM2c,GAAsC,WAAvB76B,EAAO2C,KAAM8E,GAQxCyW,EAAK+b,EAAQxyB,OANb,KAAMrB,IAAQqB,GACbwzB,GAAahB,EAAS,IAAM7zB,EAAO,IAAKqB,EAAKrB,GAAQy0B,EAAa3c,GAQrEle,EAAO+E,KAAM,0MAEqDuH,MAAM,KAAM,SAAU7G,EAAGW,GAG1FpG,EAAOsB,GAAI8E,GAAS,SAAUqC,EAAMnH,GACnC,MAAO+D,WAAU7B,OAAS,EACzBF,KAAKorB,GAAItoB,EAAM,KAAMqC,EAAMnH,GAC3BgC,KAAKiE,QAASnB,MAIjBpG,EAAOsB,GAAG0E,QACTm1B,MAAO,SAAUC,EAAQC,GACxB,MAAO/3B,MAAKwqB,WAAYsN,GAASrN,WAAYsN,GAASD,IAGvDE,KAAM,SAAUzS,EAAOpgB,EAAMnH,GAC5B,MAAOgC,MAAKorB,GAAI7F,EAAO,KAAMpgB,EAAMnH,IAEpCi6B,OAAQ,SAAU1S,EAAOvnB,GACxB,MAAOgC,MAAKkE,IAAKqhB,EAAO,KAAMvnB,IAG/Bk6B,SAAU,SAAUp6B,EAAUynB,EAAOpgB,EAAMnH,GAC1C,MAAOgC,MAAKorB,GAAI7F,EAAOznB,EAAUqH,EAAMnH,IAExCm6B,WAAY,SAAUr6B,EAAUynB,EAAOvnB,GAEtC,MAA4B,KAArB+D,UAAU7B,OAAeF,KAAKkE,IAAKpG,EAAU,MAASkC,KAAKkE,IAAKqhB,EAAOznB,GAAY,KAAME,KAGlG,IAECo6B,IACAC,GACAC,GAAa57B,EAAO0L,MAEpBmwB,GAAc,KACdC,GAAQ,OACRC,GAAM,gBACNC,GAAW,gCAEXC,GAAiB,4DACjBC,GAAa,iBACbC,GAAY,QACZC,GAAO,8CAGPC,GAAQr8B,EAAOsB,GAAG4rB,KAWlBoP,MAOAC,MAGAC,GAAW,KAAKj8B,OAAO,IAIxB,KACCo7B,GAAeh8B,EAAS4Y,KACvB,MAAOrQ,IAGRyzB,GAAe/7B,EAASiJ,cAAe,KACvC8yB,GAAapjB,KAAO,GACpBojB,GAAeA,GAAapjB,KAI7BmjB,GAAeU,GAAK34B,KAAMk4B,GAAavxB,kBAGvC,SAASqyB,IAA6BC,GAGrC,MAAO,UAAUC,EAAoBpe,GAED,gBAAvBoe,KACXpe,EAAOoe,EACPA,EAAqB,IAGtB,IAAIrH,GACH7vB,EAAI,EACJm3B,EAAYD,EAAmBvyB,cAAchH,MAAO1B,MAErD,IAAK1B,EAAOiE,WAAYsa,GAEvB,MAAS+W,EAAWsH,EAAUn3B,KAER,MAAhB6vB,EAAS,IACbA,EAAWA,EAAS30B,MAAO,IAAO,KACjC+7B,EAAWpH,GAAaoH,EAAWpH,QAAkBjgB,QAASkJ,KAI9Dme,EAAWpH,GAAaoH,EAAWpH,QAAkB70B,KAAM8d,IAQjE,QAASse,IAA+BH,EAAWr2B,EAASy2B,EAAiBC,GAE5E,GAAIC,MACHC,EAAqBP,IAAcH,EAEpC,SAASW,GAAS5H,GACjB,GAAI1c,EAYJ,OAXAokB,GAAW1H,IAAa,EACxBt1B,EAAO+E,KAAM23B,EAAWpH,OAAkB,SAAUzlB,EAAGstB,GACtD,GAAIC,GAAsBD,EAAoB92B,EAASy2B,EAAiBC,EACxE,OAAmC,gBAAxBK,IAAqCH,GAAqBD,EAAWI,GAIpEH,IACDrkB,EAAWwkB,GADf,GAHN/2B,EAAQu2B,UAAUvnB,QAAS+nB,GAC3BF,EAASE,IACF,KAKFxkB,EAGR,MAAOskB,GAAS72B,EAAQu2B,UAAW,MAAUI,EAAW,MAASE,EAAS,KAM3E,QAASG,IAAY92B,EAAQN,GAC5B,GAAIO,GAAMyB,EACTq1B,EAAct9B,EAAOg7B,aAAasC,eAEnC,KAAMr1B,IAAOhC,GACPA,EAAKgC,KAAU1I,KACjB+9B,EAAar1B,GAAQ1B,EAAWC,IAASA,OAAgByB,GAAQhC,EAAKgC,GAO1E,OAJKzB,IACJxG,EAAOgG,QAAQ,EAAMO,EAAQC,GAGvBD,EAGRvG,EAAOsB,GAAG4rB,KAAO,SAAUkI,EAAKmI,EAAQv4B,GACvC,GAAoB,gBAARowB,IAAoBiH,GAC/B,MAAOA,IAAMj3B,MAAO9B,KAAM+B,UAG3B,IAAIjE,GAAUo8B,EAAU76B,EACvBqb,EAAO1a,KACPkE,EAAM4tB,EAAIv0B,QAAQ,IA+CnB,OA7CK2G,IAAO,IACXpG,EAAWg0B,EAAIz0B,MAAO6G,EAAK4tB,EAAI5xB,QAC/B4xB,EAAMA,EAAIz0B,MAAO,EAAG6G,IAIhBxH,EAAOiE,WAAYs5B,IAGvBv4B,EAAWu4B,EACXA,EAASh+B,GAGEg+B,GAA4B,gBAAXA,KAC5B56B,EAAO,QAIHqb,EAAKxa,OAAS,GAClBxD,EAAOq1B,MACND,IAAKA,EAGLzyB,KAAMA,EACN2yB,SAAU,OACV7sB,KAAM80B,IACJp4B,KAAK,SAAUs4B,GAGjBD,EAAWn4B,UAEX2Y,EAAKqV,KAAMjyB,EAIVpB,EAAO,SAASwyB,OAAQxyB,EAAO4D,UAAW65B,IAAiB/5B,KAAMtC,GAGjEq8B,KAECC,SAAU14B,GAAY,SAAU+3B,EAAOY,GACzC3f,EAAKjZ,KAAMC,EAAUw4B,IAAcT,EAAMU,aAAcE,EAAQZ,MAI1Dz5B,MAIRtD,EAAO+E,MAAQ,YAAa,WAAY,eAAgB,YAAa,cAAe,YAAc,SAAUU,EAAG9C,GAC9G3C,EAAOsB,GAAIqB,GAAS,SAAUrB,GAC7B,MAAOgC,MAAKorB,GAAI/rB,EAAMrB,MAIxBtB,EAAOgG,QAGN43B,OAAQ,EAGRC,gBACAC,QAEA9C,cACC5F,IAAKuG,GACLh5B,KAAM,MACNo7B,QAAS9B,GAAel4B,KAAM23B,GAAc,IAC5C9S,QAAQ,EACRoV,aAAa,EACbr0B,OAAO,EACPs0B,YAAa,mDAabC,SACCC,IAAK3B,GACLjyB,KAAM,aACN8oB,KAAM,YACN/pB,IAAK,4BACL80B,KAAM,qCAGPlP,UACC5lB,IAAK,MACL+pB,KAAM,OACN+K,KAAM,QAGPC,gBACC/0B,IAAK,cACLiB,KAAM,eACN6zB,KAAM,gBAKPE,YAGCC,SAAUv2B,OAGVw2B,aAAa,EAGbC,YAAaz+B,EAAOiJ,UAGpBy1B,WAAY1+B,EAAOqJ,UAOpBi0B,aACClI,KAAK,EACL/zB,SAAS,IAOXs9B,UAAW,SAAUp4B,EAAQq4B,GAC5B,MAAOA,GAGNvB,GAAYA,GAAY92B,EAAQvG,EAAOg7B,cAAgB4D,GAGvDvB,GAAYr9B,EAAOg7B,aAAcz0B,IAGnCs4B,cAAepC,GAA6BH,IAC5CwC,cAAerC,GAA6BF,IAG5ClH,KAAM,SAAUD,EAAK/uB,GAGA,gBAAR+uB,KACX/uB,EAAU+uB,EACVA,EAAM71B,GAIP8G,EAAUA,KAEV,IACCg0B,GAEA50B,EAEAs5B,EAEAC,EAEAC,EAGAC,EAEAC,EAEAC,EAEAtE,EAAI96B,EAAO2+B,aAAet4B,GAE1Bg5B,EAAkBvE,EAAEz5B,SAAWy5B,EAE/BwE,EAAqBxE,EAAEz5B,UAAag+B,EAAgBx7B,UAAYw7B,EAAgBn8B,QAC/ElD,EAAQq/B,GACRr/B,EAAOyC,MAERkc,EAAW3e,EAAOgM,WAClBuzB,EAAmBv/B,EAAOod,UAAU,eAEpCoiB,EAAa1E,EAAE0E,eAEfC,KACAC,KAEAjhB,EAAQ,EAERkhB,EAAW,WAEX5C,GACCn6B,WAAY,EAGZg9B,kBAAmB,SAAU33B,GAC5B,GAAI7E,EACJ,IAAe,IAAVqb,EAAc,CAClB,IAAM2gB,EAAkB,CACvBA,IACA,OAASh8B,EAAQ44B,GAASv4B,KAAMu7B,GAC/BI,EAAiBh8B,EAAM,GAAGgH,eAAkBhH,EAAO,GAGrDA,EAAQg8B,EAAiBn3B,EAAImC,eAE9B,MAAgB,OAAThH,EAAgB,KAAOA,GAI/By8B,sBAAuB,WACtB,MAAiB,KAAVphB,EAAcugB,EAAwB,MAI9Cc,iBAAkB,SAAU15B,EAAMiE,GACjC,GAAI01B,GAAQ35B,EAAKgE,aAKjB,OAJMqU,KACLrY,EAAOs5B,EAAqBK,GAAUL,EAAqBK,IAAW35B,EACtEq5B,EAAgBr5B,GAASiE,GAEnB/G,MAIR08B,iBAAkB,SAAUr9B,GAI3B,MAHM8b,KACLqc,EAAEmF,SAAWt9B,GAEPW,MAIRk8B,WAAY,SAAU55B,GACrB,GAAIs6B,EACJ,IAAKt6B,EACJ,GAAa,EAAR6Y,EACJ,IAAMyhB,IAAQt6B,GAEb45B,EAAYU,IAAWV,EAAYU,GAAQt6B,EAAKs6B,QAIjDnD,GAAMre,OAAQ9Y,EAAKm3B,EAAMY,QAG3B,OAAOr6B,OAIR68B,MAAO,SAAUC,GAChB,GAAIC,GAAYD,GAAcT,CAK9B,OAJKR,IACJA,EAAUgB,MAAOE,GAElBl7B,EAAM,EAAGk7B,GACF/8B,MAwCV,IAnCAqb,EAASzZ,QAAS63B,GAAQW,SAAW6B,EAAiBrhB,IACtD6e,EAAMuD,QAAUvD,EAAM53B,KACtB43B,EAAMz0B,MAAQy0B,EAAMne,KAMpBkc,EAAE1F,MAAUA,GAAO0F,EAAE1F,KAAOuG,IAAiB,IAAK90B,QAASi1B,GAAO,IAAKj1B,QAASs1B,GAAWT,GAAc,GAAM,MAG/GZ,EAAEn4B,KAAO0D,EAAQk6B,QAAUl6B,EAAQ1D,MAAQm4B,EAAEyF,QAAUzF,EAAEn4B,KAGzDm4B,EAAE8B,UAAY58B,EAAOmB,KAAM25B,EAAExF,UAAY,KAAMlrB,cAAchH,MAAO1B,KAAqB,IAGnE,MAAjBo5B,EAAE0F,cACNnG,EAAQ+B,GAAK34B,KAAMq3B,EAAE1F,IAAIhrB,eACzB0wB,EAAE0F,eAAkBnG,GACjBA,EAAO,KAAQqB,GAAc,IAAOrB,EAAO,KAAQqB,GAAc,KAChErB,EAAO,KAAwB,UAAfA,EAAO,GAAkB,KAAO,WAC/CqB,GAAc,KAA+B,UAAtBA,GAAc,GAAkB,KAAO,UAK/DZ,EAAEryB,MAAQqyB,EAAEkD,aAAiC,gBAAXlD,GAAEryB,OACxCqyB,EAAEryB,KAAOzI,EAAO4xB,MAAOkJ,EAAEryB,KAAMqyB,EAAED,cAIlCgC,GAA+BP,GAAYxB,EAAGz0B,EAAS02B,GAGxC,IAAVte,EACJ,MAAOse,EAIRmC,GAAcpE,EAAElS,OAGXsW,GAAmC,IAApBl/B,EAAO49B,UAC1B59B,EAAOyC,MAAM8E,QAAQ,aAItBuzB,EAAEn4B,KAAOm4B,EAAEn4B,KAAKJ,cAGhBu4B,EAAE2F,YAAcvE,GAAWn4B,KAAM+2B,EAAEn4B,MAInCo8B,EAAWjE,EAAE1F,IAGP0F,EAAE2F,aAGF3F,EAAEryB,OACNs2B,EAAajE,EAAE1F,MAASyG,GAAY93B,KAAMg7B,GAAa,IAAM,KAAQjE,EAAEryB,WAEhEqyB,GAAEryB,MAILqyB,EAAEvpB,SAAU,IAChBupB,EAAE1F,IAAM2G,GAAIh4B,KAAMg7B,GAGjBA,EAASl4B,QAASk1B,GAAK,OAASH,MAGhCmD,GAAalD,GAAY93B,KAAMg7B,GAAa,IAAM,KAAQ,KAAOnD,OAK/Dd,EAAE4F,aACD1gC,EAAO69B,aAAckB,IACzBhC,EAAM+C,iBAAkB,oBAAqB9/B,EAAO69B,aAAckB,IAE9D/+B,EAAO89B,KAAMiB,IACjBhC,EAAM+C,iBAAkB,gBAAiB9/B,EAAO89B,KAAMiB,MAKnDjE,EAAEryB,MAAQqyB,EAAE2F,YAAc3F,EAAEmD,eAAgB,GAAS53B,EAAQ43B,cACjElB,EAAM+C,iBAAkB,eAAgBhF,EAAEmD,aAI3ClB,EAAM+C,iBACL,SACAhF,EAAE8B,UAAW,IAAO9B,EAAEoD,QAASpD,EAAE8B,UAAU,IAC1C9B,EAAEoD,QAASpD,EAAE8B,UAAU,KAA8B,MAArB9B,EAAE8B,UAAW,GAAc,KAAOJ,GAAW,WAAa,IAC1F1B,EAAEoD,QAAS,KAIb,KAAMz4B,IAAKq1B,GAAE6F,QACZ5D,EAAM+C,iBAAkBr6B,EAAGq1B,EAAE6F,QAASl7B,GAIvC,IAAKq1B,EAAE8F,aAAgB9F,EAAE8F,WAAWp8B,KAAM66B,EAAiBtC,EAAOjC,MAAQ,GAAmB,IAAVrc,GAElF,MAAOse,GAAMoD,OAIdR,GAAW,OAGX,KAAMl6B,KAAO66B,QAAS,EAAGh4B,MAAO,EAAGo1B,SAAU,GAC5CX,EAAOt3B,GAAKq1B,EAAGr1B,GAOhB,IAHA05B,EAAYtC,GAA+BN,GAAYzB,EAAGz0B,EAAS02B,GAK5D,CACNA,EAAMn6B,WAAa,EAGds8B,GACJI,EAAmB/3B,QAAS,YAAcw1B,EAAOjC,IAG7CA,EAAEnxB,OAASmxB,EAAE1V,QAAU,IAC3B6Z,EAAe53B,WAAW,WACzB01B,EAAMoD,MAAM,YACVrF,EAAE1V,SAGN,KACC3G,EAAQ,EACR0gB,EAAU0B,KAAMpB,EAAgBt6B,GAC/B,MAAQ+C,GAET,KAAa,EAARuW,GAIJ,KAAMvW,EAHN/C,GAAM,GAAI+C,QArBZ/C,GAAM,GAAI,eA8BX,SAASA,GAAMw4B,EAAQmD,EAAkBC,EAAWJ,GACnD,GAAIK,GAAWV,EAASh4B,EAAOk1B,EAAUyD,EACxCb,EAAaU,CAGC,KAAVriB,IAKLA,EAAQ,EAGHwgB,GACJ5Z,aAAc4Z,GAKfE,EAAY5/B,EAGZy/B,EAAwB2B,GAAW,GAGnC5D,EAAMn6B,WAAa+6B,EAAS,EAAI,EAAI,EAGpCqD,EAAYrD,GAAU,KAAgB,IAATA,GAA2B,MAAXA,EAGxCoD,IACJvD,EAAW0D,GAAqBpG,EAAGiC,EAAOgE,IAI3CvD,EAAW2D,GAAarG,EAAG0C,EAAUT,EAAOiE,GAGvCA,GAGClG,EAAE4F,aACNO,EAAWlE,EAAM6C,kBAAkB,iBAC9BqB,IACJjhC,EAAO69B,aAAckB,GAAakC,GAEnCA,EAAWlE,EAAM6C,kBAAkB,QAC9BqB,IACJjhC,EAAO89B,KAAMiB,GAAakC,IAKZ,MAAXtD,GAA6B,SAAX7C,EAAEn4B,KACxBy9B,EAAa,YAGS,MAAXzC,EACXyC,EAAa,eAIbA,EAAa5C,EAAS/e,MACtB6hB,EAAU9C,EAAS/0B,KACnBH,EAAQk1B,EAASl1B,MACjB04B,GAAa14B,KAKdA,EAAQ83B,GACHzC,IAAWyC,KACfA,EAAa,QACC,EAATzC,IACJA,EAAS,KAMZZ,EAAMY,OAASA,EACfZ,EAAMqD,YAAeU,GAAoBV,GAAe,GAGnDY,EACJriB,EAASrX,YAAa+3B,GAAmBiB,EAASF,EAAYrD,IAE9Dpe,EAASyiB,WAAY/B,GAAmBtC,EAAOqD,EAAY93B,IAI5Dy0B,EAAMyC,WAAYA,GAClBA,EAAajgC,EAER2/B,GACJI,EAAmB/3B,QAASy5B,EAAY,cAAgB,aACrDjE,EAAOjC,EAAGkG,EAAYV,EAAUh4B,IAIpCi3B,EAAiBjhB,SAAU+gB,GAAmBtC,EAAOqD,IAEhDlB,IACJI,EAAmB/3B,QAAS,gBAAkBw1B,EAAOjC,MAE3C96B,EAAO49B,QAChB59B,EAAOyC,MAAM8E,QAAQ,cAKxB,MAAOw1B,IAGRsE,QAAS,SAAUjM,EAAK3sB,EAAMzD,GAC7B,MAAOhF,GAAOyE,IAAK2wB,EAAK3sB,EAAMzD,EAAU,SAGzCs8B,UAAW,SAAUlM,EAAKpwB,GACzB,MAAOhF,GAAOyE,IAAK2wB,EAAK71B,EAAWyF,EAAU,aAI/ChF,EAAO+E,MAAQ,MAAO,QAAU,SAAUU,EAAG86B,GAC5CvgC,EAAQugC,GAAW,SAAUnL,EAAK3sB,EAAMzD,EAAUrC,GAQjD,MANK3C,GAAOiE,WAAYwE,KACvB9F,EAAOA,GAAQqC,EACfA,EAAWyD,EACXA,EAAOlJ,GAGDS,EAAOq1B,MACbD,IAAKA,EACLzyB,KAAM49B,EACNjL,SAAU3yB,EACV8F,KAAMA,EACN63B,QAASt7B,MASZ,SAASk8B,IAAqBpG,EAAGiC,EAAOgE,GACvC,GAAIQ,GAAeC,EAAIC,EAAe9+B,EACrCusB,EAAW4L,EAAE5L,SACb0N,EAAY9B,EAAE8B,SAGf,OAA0B,MAAnBA,EAAW,GACjBA,EAAUnrB,QACL+vB,IAAOjiC,IACXiiC,EAAK1G,EAAEmF,UAAYlD,EAAM6C,kBAAkB,gBAK7C,IAAK4B,EACJ,IAAM7+B,IAAQusB,GACb,GAAKA,EAAUvsB,IAAUusB,EAAUvsB,GAAOoB,KAAMy9B,GAAO,CACtD5E,EAAUvnB,QAAS1S,EACnB,OAMH,GAAKi6B,EAAW,IAAOmE,GACtBU,EAAgB7E,EAAW,OACrB,CAEN,IAAMj6B,IAAQo+B,GAAY,CACzB,IAAMnE,EAAW,IAAO9B,EAAEwD,WAAY37B,EAAO,IAAMi6B,EAAU,IAAO,CACnE6E,EAAgB9+B,CAChB,OAEK4+B,IACLA,EAAgB5+B,GAIlB8+B,EAAgBA,GAAiBF,EAMlC,MAAKE,IACCA,IAAkB7E,EAAW,IACjCA,EAAUvnB,QAASosB,GAEbV,EAAWU,IAJnB,EAWD,QAASN,IAAarG,EAAG0C,EAAUT,EAAOiE,GACzC,GAAIU,GAAOzvB,EAAS0vB,EAAMp4B,EAAK4lB,EAC9BmP,KAEA1B,EAAY9B,EAAE8B,UAAUj8B,OAGzB,IAAKi8B,EAAW,GACf,IAAM+E,IAAQ7G,GAAEwD,WACfA,EAAYqD,EAAKv3B,eAAkB0wB,EAAEwD,WAAYqD,EAInD1vB,GAAU2qB,EAAUnrB,OAGpB,OAAQQ,EAcP,GAZK6oB,EAAEuD,eAAgBpsB,KACtB8qB,EAAOjC,EAAEuD,eAAgBpsB,IAAcurB,IAIlCrO,GAAQ6R,GAAalG,EAAE8G,aAC5BpE,EAAW1C,EAAE8G,WAAYpE,EAAU1C,EAAExF,WAGtCnG,EAAOld,EACPA,EAAU2qB,EAAUnrB,QAKnB,GAAiB,MAAZQ,EAEJA,EAAUkd,MAGJ,IAAc,MAATA,GAAgBA,IAASld,EAAU,CAM9C,GAHA0vB,EAAOrD,EAAYnP,EAAO,IAAMld,IAAaqsB,EAAY,KAAOrsB,IAG1D0vB,EACL,IAAMD,IAASpD,GAId,GADA/0B,EAAMm4B,EAAMp1B,MAAO,KACd/C,EAAK,KAAQ0I,IAGjB0vB,EAAOrD,EAAYnP,EAAO,IAAM5lB,EAAK,KACpC+0B,EAAY,KAAO/0B,EAAK,KACb,CAENo4B,KAAS,EACbA,EAAOrD,EAAYoD,GAGRpD,EAAYoD,MAAY,IACnCzvB,EAAU1I,EAAK,GACfqzB,EAAUvnB,QAAS9L,EAAK,IAEzB,OAOJ,GAAKo4B,KAAS,EAGb,GAAKA,GAAQ7G,EAAG,UACf0C,EAAWmE,EAAMnE,OAEjB,KACCA,EAAWmE,EAAMnE,GAChB,MAAQt1B,GACT,OAASuW,MAAO,cAAenW,MAAOq5B,EAAOz5B,EAAI,sBAAwBinB,EAAO,OAASld,IAQ/F,OAASwM,MAAO,UAAWhW,KAAM+0B,GAGlCx9B,EAAO2+B,WACNT,SACC2D,OAAQ,6FAET3S,UACC2S,OAAQ,uBAETvD,YACCwD,cAAe,SAAUv3B,GAExB,MADAvK,GAAO+J,WAAYQ,GACZA,MAMVvK,EAAO6+B,cAAe,SAAU,SAAU/D,GACpCA,EAAEvpB,QAAUhS,IAChBu7B,EAAEvpB,OAAQ,GAENupB,EAAE0F,cACN1F,EAAEn4B,KAAO,MACTm4B,EAAElS,QAAS,KAKb5oB,EAAO8+B,cAAe,SAAU,SAAShE,GAGxC,GAAKA,EAAE0F,YAAc,CAEpB,GAAIqB,GACHE,EAAOniC,EAASmiC,MAAQ/hC,EAAO,QAAQ,IAAMJ,EAASE,eAEvD,QAEC+gC,KAAM,SAAUhxB,EAAG7K,GAElB68B,EAASjiC,EAASiJ,cAAc,UAEhCg5B,EAAOl4B,OAAQ,EAEVmxB,EAAEkH,gBACNH,EAAOI,QAAUnH,EAAEkH,eAGpBH,EAAO57B,IAAM60B,EAAE1F,IAGfyM,EAAOK,OAASL,EAAOM,mBAAqB,SAAUtyB,EAAGuyB,IAEnDA,IAAYP,EAAOj/B,YAAc,kBAAkBmB,KAAM89B,EAAOj/B,eAGpEi/B,EAAOK,OAASL,EAAOM,mBAAqB,KAGvCN,EAAOz9B,YACXy9B,EAAOz9B,WAAWyN,YAAagwB,GAIhCA,EAAS,KAGHO,GACLp9B,EAAU,IAAK,aAOlB+8B,EAAKlP,aAAcgP,EAAQE,EAAKnuB,aAGjCusB,MAAO,WACD0B,GACJA,EAAOK,OAAQ3iC,GAAW,OAM/B,IAAI8iC,OACHC,GAAS,mBAGVtiC,GAAO2+B,WACN4D,MAAO,WACPC,cAAe,WACd,GAAIx9B,GAAWq9B,GAAat0B,OAAW/N,EAAO0G,QAAU,IAAQk1B,IAEhE,OADAt4B,MAAM0B,IAAa,EACZA,KAKThF,EAAO6+B,cAAe,aAAc,SAAU/D,EAAG2H,EAAkB1F,GAElE,GAAI2F,GAAcC,EAAaC,EAC9BC,EAAW/H,EAAEyH,SAAU,IAAWD,GAAOv+B,KAAM+2B,EAAE1F,KAChD,MACkB,gBAAX0F,GAAEryB,QAAwBqyB,EAAEmD,aAAe,IAAKp9B,QAAQ,sCAAwCyhC,GAAOv+B,KAAM+2B,EAAEryB,OAAU,OAIlI,OAAKo6B,IAAiC,UAArB/H,EAAE8B,UAAW,IAG7B8F,EAAe5H,EAAE0H,cAAgBxiC,EAAOiE,WAAY62B,EAAE0H,eACrD1H,EAAE0H,gBACF1H,EAAE0H,cAGEK,EACJ/H,EAAG+H,GAAa/H,EAAG+H,GAAWh8B,QAASy7B,GAAQ,KAAOI,GAC3C5H,EAAEyH,SAAU,IACvBzH,EAAE1F,MAASyG,GAAY93B,KAAM+2B,EAAE1F,KAAQ,IAAM,KAAQ0F,EAAEyH,MAAQ,IAAMG,GAItE5H,EAAEwD,WAAW,eAAiB,WAI7B,MAHMsE,IACL5iC,EAAOsI,MAAOo6B,EAAe,mBAEvBE,EAAmB,IAI3B9H,EAAE8B,UAAW,GAAM,OAGnB+F,EAAcrjC,EAAQojC,GACtBpjC,EAAQojC,GAAiB,WACxBE,EAAoBv9B,WAIrB03B,EAAMre,OAAO,WAEZpf,EAAQojC,GAAiBC,EAGpB7H,EAAG4H,KAEP5H,EAAE0H,cAAgBC,EAAiBD,cAGnCH,GAAa5hC,KAAMiiC,IAIfE,GAAqB5iC,EAAOiE,WAAY0+B,IAC5CA,EAAaC,EAAmB,IAGjCA,EAAoBD,EAAcpjC,IAI5B,UAtDR,GAyDD,IAAIujC,IAAcC,GACjBC,GAAQ,EAERC,GAAmB3jC,EAAOoK,eAAiB,WAE1C,GAAIzB,EACJ,KAAMA,IAAO66B,IACZA,GAAc76B,GAAO1I,GAAW,GAKnC,SAAS2jC,MACR,IACC,MAAO,IAAI5jC,GAAO6jC,eACjB,MAAOj7B,KAGV,QAASk7B,MACR,IACC,MAAO,IAAI9jC,GAAOoK,cAAc,qBAC/B,MAAOxB,KAKVlI,EAAOg7B,aAAaqI,IAAM/jC,EAAOoK,cAOhC,WACC,OAAQpG,KAAKy6B,SAAWmF,MAAuBE,MAGhDF,GAGDH,GAAe/iC,EAAOg7B,aAAaqI,MACnCrjC,EAAOmI,QAAQm7B,OAASP,IAAkB,mBAAqBA,IAC/DA,GAAe/iC,EAAOmI,QAAQktB,OAAS0N,GAGlCA,IAEJ/iC,EAAO8+B,cAAc,SAAUhE,GAE9B,IAAMA,EAAE0F,aAAexgC,EAAOmI,QAAQm7B,KAAO,CAE5C,GAAIt+B,EAEJ,QACC67B,KAAM,SAAUF,EAASjD,GAGxB,GAAIlU,GAAQ/jB,EACX49B,EAAMvI,EAAEuI,KAWT,IAPKvI,EAAEyI,SACNF,EAAIG,KAAM1I,EAAEn4B,KAAMm4B,EAAE1F,IAAK0F,EAAEnxB,MAAOmxB,EAAEyI,SAAUzI,EAAEthB,UAEhD6pB,EAAIG,KAAM1I,EAAEn4B,KAAMm4B,EAAE1F,IAAK0F,EAAEnxB,OAIvBmxB,EAAE2I,UACN,IAAMh+B,IAAKq1B,GAAE2I,UACZJ,EAAK59B,GAAMq1B,EAAE2I,UAAWh+B,EAKrBq1B,GAAEmF,UAAYoD,EAAIrD,kBACtBqD,EAAIrD,iBAAkBlF,EAAEmF,UAQnBnF,EAAE0F,aAAgBG,EAAQ,sBAC/BA,EAAQ,oBAAsB,iBAI/B,KACC,IAAMl7B,IAAKk7B,GACV0C,EAAIvD,iBAAkBr6B,EAAGk7B,EAASl7B,IAElC,MAAOkjB,IAKT0a,EAAIxC,KAAQ/F,EAAE2F,YAAc3F,EAAEryB,MAAU,MAGxCzD,EAAW,SAAU6K,EAAGuyB,GACvB,GAAIzE,GAAQyB,EAAiBgB,EAAYW,CAKzC,KAGC,GAAK/7B,IAAco9B,GAA8B,IAAnBiB,EAAIzgC,YAcjC,GAXAoC,EAAWzF,EAGNiqB,IACJ6Z,EAAIlB,mBAAqBniC,EAAO8J,KAC3Bm5B,UACGH,IAActZ,IAKlB4Y,EAEoB,IAAnBiB,EAAIzgC,YACRygC,EAAIlD,YAEC,CACNY,KACApD,EAAS0F,EAAI1F,OACbyB,EAAkBiE,EAAIxD,wBAIW,gBAArBwD,GAAI5F,eACfsD,EAAUx2B,KAAO84B,EAAI5F,aAKtB,KACC2C,EAAaiD,EAAIjD,WAChB,MAAOl4B,GAERk4B,EAAa,GAQRzC,IAAU7C,EAAEiD,SAAYjD,EAAE0F,YAGT,OAAX7C,IACXA,EAAS,KAHTA,EAASoD,EAAUx2B,KAAO,IAAM,KAOlC,MAAOm5B,GACFtB,GACL1E,EAAU,GAAIgG,GAKX3C,GACJrD,EAAUC,EAAQyC,EAAYW,EAAW3B,IAIrCtE,EAAEnxB,MAGuB,IAAnB05B,EAAIzgC,WAGfyE,WAAYrC,IAEZwkB,IAAWwZ,GACNC,KAGEH,KACLA,MACA9iC,EAAQV,GAASqkC,OAAQV,KAG1BH,GAActZ,GAAWxkB,GAE1Bq+B,EAAIlB,mBAAqBn9B,GAjBzBA,KAqBFm7B,MAAO,WACDn7B,GACJA,EAAUzF,GAAW,OAO3B,IAAIqkC,IAAOC,GACVC,GAAW,yBACXC,GAAax1B,OAAQ,iBAAmB/M,EAAY,cAAe,KACnEwiC,GAAO,cACPC,IAAwBC,IACxBC,IACChG,KAAM,SAAUjY,EAAM7b,GACrB,GAAI+5B,GAAQ9gC,KAAK+gC,YAAane,EAAM7b,GACnC9D,EAAS69B,EAAMtxB,MACfunB,EAAQ0J,GAAOtgC,KAAM4G,GACrBi6B,EAAOjK,GAASA,EAAO,KAASr6B,EAAO+3B,UAAW7R,GAAS,GAAK,MAGhE9O,GAAUpX,EAAO+3B,UAAW7R,IAAmB,OAAToe,IAAkB/9B,IACvDw9B,GAAOtgC,KAAMzD,EAAOq3B,IAAK+M,EAAM/gC,KAAM6iB,IACtCqe,EAAQ,EACRC,EAAgB,EAEjB,IAAKptB,GAASA,EAAO,KAAQktB,EAAO,CAEnCA,EAAOA,GAAQltB,EAAO,GAGtBijB,EAAQA,MAGRjjB,GAAS7Q,GAAU,CAEnB,GAGCg+B,GAAQA,GAAS,KAGjBntB,GAAgBmtB,EAChBvkC,EAAO+L,MAAOq4B,EAAM/gC,KAAM6iB,EAAM9O,EAAQktB,SAI/BC,KAAWA,EAAQH,EAAMtxB,MAAQvM,IAAqB,IAAVg+B,KAAiBC,GAaxE,MATKnK,KACJjjB,EAAQgtB,EAAMhtB,OAASA,IAAU7Q,GAAU,EAC3C69B,EAAME,KAAOA,EAEbF,EAAMv+B,IAAMw0B,EAAO,GAClBjjB,GAAUijB,EAAO,GAAM,GAAMA,EAAO,IACnCA,EAAO,IAGH+J,IAKV,SAASK,MAIR,MAHAp9B,YAAW,WACVu8B,GAAQrkC,IAEAqkC,GAAQ5jC,EAAO0L,MAGzB,QAAS24B,IAAah6B,EAAO6b,EAAMwe,GAClC,GAAIN,GACHO,GAAeR,GAAUje,QAAe3lB,OAAQ4jC,GAAU,MAC1DhmB,EAAQ,EACR3a,EAASmhC,EAAWnhC,MACrB,MAAgBA,EAAR2a,EAAgBA,IACvB,GAAMimB,EAAQO,EAAYxmB,GAAQ3Z,KAAMkgC,EAAWxe,EAAM7b,GAGxD,MAAO+5B,GAKV,QAASQ,IAAWvhC,EAAMwhC,EAAYx+B,GACrC,GAAIwQ,GACHiuB,EACA3mB,EAAQ,EACR3a,EAASygC,GAAoBzgC,OAC7Bmb,EAAW3e,EAAOgM,WAAW0S,OAAQ,iBAE7BqmB,GAAK1hC,OAEb0hC,EAAO,WACN,GAAKD,EACJ,OAAO,CAER,IAAIE,GAAcpB,IAASa,KAC1B7kB,EAAYjZ,KAAKiE,IAAK,EAAG85B,EAAUO,UAAYP,EAAUQ,SAAWF,GAEpEhqB,EAAO4E,EAAY8kB,EAAUQ,UAAY,EACzCC,EAAU,EAAInqB,EACdmD,EAAQ,EACR3a,EAASkhC,EAAUU,OAAO5hC,MAE3B,MAAgBA,EAAR2a,EAAiBA,IACxBumB,EAAUU,OAAQjnB,GAAQknB,IAAKF,EAKhC,OAFAxmB,GAASqB,WAAY3c,GAAQqhC,EAAWS,EAASvlB,IAElC,EAAVulB,GAAe3hC,EACZoc,GAEPjB,EAASrX,YAAajE,GAAQqhC,KACvB,IAGTA,EAAY/lB,EAASzZ,SACpB7B,KAAMA,EACN0oB,MAAO/rB,EAAOgG,UAAY6+B,GAC1BS,KAAMtlC,EAAOgG,QAAQ,GAAQu/B,kBAAqBl/B,GAClDm/B,mBAAoBX,EACpB/H,gBAAiBz2B,EACjB4+B,UAAWrB,IAASa,KACpBS,SAAU7+B,EAAQ6+B,SAClBE,UACAf,YAAa,SAAUne,EAAMrgB,GAC5B,GAAIu+B,GAAQpkC,EAAOylC,MAAOpiC,EAAMqhC,EAAUY,KAAMpf,EAAMrgB,EACpD6+B,EAAUY,KAAKC,cAAerf,IAAUwe,EAAUY,KAAKI,OAEzD,OADAhB,GAAUU,OAAO3kC,KAAM2jC,GAChBA,GAERtf,KAAM,SAAU6gB,GACf,GAAIxnB,GAAQ,EAGX3a,EAASmiC,EAAUjB,EAAUU,OAAO5hC,OAAS,CAC9C,IAAKshC,EACJ,MAAOxhC,KAGR,KADAwhC,GAAU,EACMthC,EAAR2a,EAAiBA,IACxBumB,EAAUU,OAAQjnB,GAAQknB,IAAK,EAUhC,OALKM,GACJhnB,EAASrX,YAAajE,GAAQqhC,EAAWiB,IAEzChnB,EAASyiB,WAAY/9B,GAAQqhC,EAAWiB,IAElCriC,QAGTyoB,EAAQ2Y,EAAU3Y,KAInB,KAFA6Z,GAAY7Z,EAAO2Y,EAAUY,KAAKC,eAElB/hC,EAAR2a,EAAiBA,IAExB,GADAtH,EAASotB,GAAqB9lB,GAAQ3Z,KAAMkgC,EAAWrhC,EAAM0oB,EAAO2Y,EAAUY,MAE7E,MAAOzuB,EAmBT,OAfA7W,GAAO4F,IAAKmmB,EAAOsY,GAAaK,GAE3B1kC,EAAOiE,WAAYygC,EAAUY,KAAKluB,QACtCstB,EAAUY,KAAKluB,MAAM5S,KAAMnB,EAAMqhC,GAGlC1kC,EAAOklB,GAAG2gB,MACT7lC,EAAOgG,OAAQ++B,GACd1hC,KAAMA,EACNyiC,KAAMpB,EACNlgB,MAAOkgB,EAAUY,KAAK9gB,SAKjBkgB,EAAUrlB,SAAUqlB,EAAUY,KAAKjmB,UACxCla,KAAMu/B,EAAUY,KAAKngC,KAAMu/B,EAAUY,KAAK5H,UAC1C9e,KAAM8lB,EAAUY,KAAK1mB,MACrBF,OAAQgmB,EAAUY,KAAK5mB,QAG1B,QAASknB,IAAY7Z,EAAOwZ,GAC3B,GAAIpnB,GAAO/X,EAAMs/B,EAAQr7B,EAAOsa,CAGhC,KAAMxG,IAAS4N,GAed,GAdA3lB,EAAOpG,EAAOiK,UAAWkU,GACzBunB,EAASH,EAAen/B,GACxBiE,EAAQ0hB,EAAO5N,GACVne,EAAOyG,QAAS4D,KACpBq7B,EAASr7B,EAAO,GAChBA,EAAQ0hB,EAAO5N,GAAU9T,EAAO,IAG5B8T,IAAU/X,IACd2lB,EAAO3lB,GAASiE,QACT0hB,GAAO5N,IAGfwG,EAAQ3kB,EAAO63B,SAAUzxB,GACpBue,GAAS,UAAYA,GAAQ,CACjCta,EAAQsa,EAAMwV,OAAQ9vB,SACf0hB,GAAO3lB,EAId,KAAM+X,IAAS9T,GACN8T,IAAS4N,KAChBA,EAAO5N,GAAU9T,EAAO8T,GACxBonB,EAAepnB,GAAUunB,OAI3BH,GAAen/B,GAASs/B,EAK3B1lC,EAAO4kC,UAAY5kC,EAAOgG,OAAQ4+B,IAEjCmB,QAAS,SAAUha,EAAO/mB,GACpBhF,EAAOiE,WAAY8nB,IACvB/mB,EAAW+mB,EACXA,GAAU,MAEVA,EAAQA,EAAMzf,MAAM,IAGrB,IAAI4Z,GACH/H,EAAQ,EACR3a,EAASuoB,EAAMvoB,MAEhB,MAAgBA,EAAR2a,EAAiBA,IACxB+H,EAAO6F,EAAO5N,GACdgmB,GAAUje,GAASie,GAAUje,OAC7Bie,GAAUje,GAAO7Q,QAASrQ,IAI5BghC,UAAW,SAAUhhC,EAAU4tB,GACzBA,EACJqR,GAAoB5uB,QAASrQ,GAE7Bi/B,GAAoBxjC,KAAMuE,KAK7B,SAASk/B,IAAkB7gC,EAAM0oB,EAAOuZ,GAEvC,GAAIpf,GAAM7b,EAAOutB,EAAQwM,EAAOzf,EAAOshB,EACtCH,EAAOxiC,KACP0qB,KACAjiB,EAAQ1I,EAAK0I,MACbyrB,EAASn0B,EAAKQ,UAAYszB,GAAU9zB,GACpC6iC,EAAWlmC,EAAOqkB,MAAOhhB,EAAM,SAG1BiiC,GAAK9gB,QACVG,EAAQ3kB,EAAO4kB,YAAavhB,EAAM,MACX,MAAlBshB,EAAMwhB,WACVxhB,EAAMwhB,SAAW,EACjBF,EAAUthB,EAAM7L,MAAMgF,KACtB6G,EAAM7L,MAAMgF,KAAO,WACZ6G,EAAMwhB,UACXF,MAIHthB,EAAMwhB,WAENL,EAAKpnB,OAAO,WAGXonB,EAAKpnB,OAAO,WACXiG,EAAMwhB,WACAnmC,EAAOwkB,MAAOnhB,EAAM,MAAOG,QAChCmhB,EAAM7L,MAAMgF,YAOO,IAAlBza,EAAKQ,WAAoB,UAAYkoB,IAAS,SAAWA,MAK7DuZ,EAAKc,UAAar6B,EAAMq6B,SAAUr6B,EAAMs6B,UAAWt6B,EAAMu6B,WAIlB,WAAlCtmC,EAAOq3B,IAAKh0B,EAAM,YACW,SAAhCrD,EAAOq3B,IAAKh0B,EAAM,WAIbrD,EAAOmI,QAAQkZ,wBAAkE,WAAxCoW,GAAoBp0B,EAAK8G,UAIvE4B,EAAM+W,KAAO,EAHb/W,EAAM6W,QAAU,iBAQd0iB,EAAKc,WACTr6B,EAAMq6B,SAAW,SACXpmC,EAAOmI,QAAQmZ,kBACpBwkB,EAAKpnB,OAAO,WACX3S,EAAMq6B,SAAWd,EAAKc,SAAU,GAChCr6B,EAAMs6B,UAAYf,EAAKc,SAAU,GACjCr6B,EAAMu6B,UAAYhB,EAAKc,SAAU,KAOpC,KAAMlgB,IAAQ6F,GAEb,GADA1hB,EAAQ0hB,EAAO7F,GACV4d,GAASrgC,KAAM4G,GAAU,CAG7B,SAFO0hB,GAAO7F,GACd0R,EAASA,GAAoB,WAAVvtB,EACdA,KAAYmtB,EAAS,OAAS,QAClC,QAEDxJ,GAAM9H,GAASggB,GAAYA,EAAUhgB,IAAUlmB,EAAO+L,MAAO1I,EAAM6iB,GAIrE,IAAMlmB,EAAOqI,cAAe2lB,GAAS,CAC/BkY,EACC,UAAYA,KAChB1O,EAAS0O,EAAS1O,QAGnB0O,EAAWlmC,EAAOqkB,MAAOhhB,EAAM,aAI3Bu0B,IACJsO,EAAS1O,QAAUA,GAEfA,EACJx3B,EAAQqD,GAAOk0B,OAEfuO,EAAK3gC,KAAK,WACTnF,EAAQqD,GAAOs0B,SAGjBmO,EAAK3gC,KAAK,WACT,GAAI+gB,EACJlmB,GAAOskB,YAAajhB,EAAM,SAC1B,KAAM6iB,IAAQ8H,GACbhuB,EAAO+L,MAAO1I,EAAM6iB,EAAM8H,EAAM9H,KAGlC,KAAMA,IAAQ8H,GACboW,EAAQC,GAAa7M,EAAS0O,EAAUhgB,GAAS,EAAGA,EAAM4f,GAElD5f,IAAQggB,KACfA,EAAUhgB,GAASke,EAAMhtB,MACpBogB,IACJ4M,EAAMv+B,IAAMu+B,EAAMhtB,MAClBgtB,EAAMhtB,MAAiB,UAAT8O,GAA6B,WAATA,EAAoB,EAAI,KAO/D,QAASuf,IAAOpiC,EAAMgD,EAAS6f,EAAMrgB,EAAK6/B,GACzC,MAAO,IAAID,IAAMxiC,UAAU1B,KAAM8B,EAAMgD,EAAS6f,EAAMrgB,EAAK6/B,GAE5D1lC,EAAOylC,MAAQA,GAEfA,GAAMxiC,WACLE,YAAasiC,GACblkC,KAAM,SAAU8B,EAAMgD,EAAS6f,EAAMrgB,EAAK6/B,EAAQpB,GACjDhhC,KAAKD,KAAOA,EACZC,KAAK4iB,KAAOA,EACZ5iB,KAAKoiC,OAASA,GAAU,QACxBpiC,KAAK+C,QAAUA,EACf/C,KAAK8T,MAAQ9T,KAAKoI,IAAMpI,KAAKwP,MAC7BxP,KAAKuC,IAAMA,EACXvC,KAAKghC,KAAOA,IAAUtkC,EAAO+3B,UAAW7R,GAAS,GAAK,OAEvDpT,IAAK,WACJ,GAAI6R,GAAQ8gB,GAAM9d,UAAWrkB,KAAK4iB,KAElC,OAAOvB,IAASA,EAAMlgB,IACrBkgB,EAAMlgB,IAAKnB,MACXmiC,GAAM9d,UAAUqD,SAASvmB,IAAKnB,OAEhC+hC,IAAK,SAAUF,GACd,GAAIoB,GACH5hB,EAAQ8gB,GAAM9d,UAAWrkB,KAAK4iB,KAoB/B,OAjBC5iB,MAAKksB,IAAM+W,EADPjjC,KAAK+C,QAAQ6+B,SACEllC,EAAO0lC,OAAQpiC,KAAKoiC,QACtCP,EAAS7hC,KAAK+C,QAAQ6+B,SAAWC,EAAS,EAAG,EAAG7hC,KAAK+C,QAAQ6+B,UAG3CC,EAEpB7hC,KAAKoI,KAAQpI,KAAKuC,IAAMvC,KAAK8T,OAAUmvB,EAAQjjC,KAAK8T,MAE/C9T,KAAK+C,QAAQmgC,MACjBljC,KAAK+C,QAAQmgC,KAAKhiC,KAAMlB,KAAKD,KAAMC,KAAKoI,IAAKpI,MAGzCqhB,GAASA,EAAMqC,IACnBrC,EAAMqC,IAAK1jB,MAEXmiC,GAAM9d,UAAUqD,SAAShE,IAAK1jB,MAExBA,OAITmiC,GAAMxiC,UAAU1B,KAAK0B,UAAYwiC,GAAMxiC,UAEvCwiC,GAAM9d,WACLqD,UACCvmB,IAAK,SAAU2/B,GACd,GAAIvtB,EAEJ,OAAiC,OAA5ButB,EAAM/gC,KAAM+gC,EAAMle,OACpBke,EAAM/gC,KAAK0I,OAA2C,MAAlCq4B,EAAM/gC,KAAK0I,MAAOq4B,EAAMle,OAQ/CrP,EAAS7W,EAAOq3B,IAAK+M,EAAM/gC,KAAM+gC,EAAMle,KAAM,IAErCrP,GAAqB,SAAXA,EAAwBA,EAAJ,GAT9ButB,EAAM/gC,KAAM+gC,EAAMle,OAW3Bc,IAAK,SAAUod,GAGTpkC,EAAOklB,GAAGshB,KAAMpC,EAAMle,MAC1BlmB,EAAOklB,GAAGshB,KAAMpC,EAAMle,MAAQke,GACnBA,EAAM/gC,KAAK0I,QAAgE,MAArDq4B,EAAM/gC,KAAK0I,MAAO/L,EAAOs4B,SAAU8L,EAAMle,QAAoBlmB,EAAO63B,SAAUuM,EAAMle,OACrHlmB,EAAO+L,MAAOq4B,EAAM/gC,KAAM+gC,EAAMle,KAAMke,EAAM14B,IAAM04B,EAAME,MAExDF,EAAM/gC,KAAM+gC,EAAMle,MAASke,EAAM14B,OASrC+5B,GAAM9d,UAAUmF,UAAY2Y,GAAM9d,UAAU+E,YAC3C1F,IAAK,SAAUod,GACTA,EAAM/gC,KAAKQ,UAAYugC,EAAM/gC,KAAKe,aACtCggC,EAAM/gC,KAAM+gC,EAAMle,MAASke,EAAM14B,OAKpC1L,EAAO+E,MAAO,SAAU,OAAQ,QAAU,SAAUU,EAAGW,GACtD,GAAIqgC,GAAQzmC,EAAOsB,GAAI8E,EACvBpG,GAAOsB,GAAI8E,GAAS,SAAUsgC,EAAOhB,EAAQ1gC,GAC5C,MAAgB,OAAT0hC,GAAkC,iBAAVA,GAC9BD,EAAMrhC,MAAO9B,KAAM+B,WACnB/B,KAAKqjC,QAASC,GAAOxgC,GAAM,GAAQsgC,EAAOhB,EAAQ1gC,MAIrDhF,EAAOsB,GAAG0E,QACT6gC,OAAQ,SAAUH,EAAOI,EAAIpB,EAAQ1gC,GAGpC,MAAO1B,MAAK6Q,OAAQgjB,IAAWE,IAAK,UAAW,GAAIE,OAGjD1xB,MAAM8gC,SAAU9lB,QAASimB,GAAMJ,EAAOhB,EAAQ1gC,IAEjD2hC,QAAS,SAAUzgB,EAAMwgB,EAAOhB,EAAQ1gC,GACvC,GAAI8T,GAAQ9Y,EAAOqI,cAAe6d,GACjC6gB,EAAS/mC,EAAO0mC,MAAOA,EAAOhB,EAAQ1gC,GACtCgiC,EAAc,WAEb,GAAIlB,GAAOlB,GAAWthC,KAAMtD,EAAOgG,UAAYkgB,GAAQ6gB,IAGlDjuB,GAAS9Y,EAAOqkB,MAAO/gB,KAAM,YACjCwiC,EAAKhhB,MAAM,GAKd,OAFCkiB,GAAYC,OAASD,EAEfluB,GAASiuB,EAAOviB,SAAU,EAChClhB,KAAKyB,KAAMiiC,GACX1jC,KAAKkhB,MAAOuiB,EAAOviB,MAAOwiB,IAE5BliB,KAAM,SAAUniB,EAAM2iB,EAAYqgB,GACjC,GAAIuB,GAAY,SAAUviB,GACzB,GAAIG,GAAOH,EAAMG,WACVH,GAAMG,KACbA,EAAM6gB,GAYP,OATqB,gBAAThjC,KACXgjC,EAAUrgB,EACVA,EAAa3iB,EACbA,EAAOpD,GAEH+lB,GAAc3iB,KAAS,GAC3BW,KAAKkhB,MAAO7hB,GAAQ,SAGdW,KAAKyB,KAAK,WAChB,GAAI0f,IAAU,EACbtG,EAAgB,MAARxb,GAAgBA,EAAO,aAC/BwkC,EAASnnC,EAAOmnC,OAChB1+B,EAAOzI,EAAOqkB,MAAO/gB,KAEtB,IAAK6a,EACC1V,EAAM0V,IAAW1V,EAAM0V,GAAQ2G,MACnCoiB,EAAWz+B,EAAM0V,QAGlB,KAAMA,IAAS1V,GACTA,EAAM0V,IAAW1V,EAAM0V,GAAQ2G,MAAQkf,GAAKjgC,KAAMoa,IACtD+oB,EAAWz+B,EAAM0V,GAKpB,KAAMA,EAAQgpB,EAAO3jC,OAAQ2a,KACvBgpB,EAAQhpB,GAAQ9a,OAASC,MAAiB,MAARX,GAAgBwkC,EAAQhpB,GAAQqG,QAAU7hB,IAChFwkC,EAAQhpB,GAAQ2nB,KAAKhhB,KAAM6gB,GAC3BlhB,GAAU,EACV0iB,EAAOphC,OAAQoY,EAAO,KAOnBsG,IAAYkhB,IAChB3lC,EAAOykB,QAASnhB,KAAMX,MAIzBskC,OAAQ,SAAUtkC,GAIjB,MAHKA,MAAS,IACbA,EAAOA,GAAQ,MAETW,KAAKyB,KAAK,WAChB,GAAIoZ,GACH1V,EAAOzI,EAAOqkB,MAAO/gB,MACrBkhB,EAAQ/b,EAAM9F,EAAO,SACrBgiB,EAAQlc,EAAM9F,EAAO,cACrBwkC,EAASnnC,EAAOmnC,OAChB3jC,EAASghB,EAAQA,EAAMhhB,OAAS,CAajC,KAVAiF,EAAKw+B,QAAS,EAGdjnC,EAAOwkB,MAAOlhB,KAAMX,MAEfgiB,GAASA,EAAMG,MACnBH,EAAMG,KAAKtgB,KAAMlB,MAAM,GAIlB6a,EAAQgpB,EAAO3jC,OAAQ2a,KACvBgpB,EAAQhpB,GAAQ9a,OAASC,MAAQ6jC,EAAQhpB,GAAQqG,QAAU7hB,IAC/DwkC,EAAQhpB,GAAQ2nB,KAAKhhB,MAAM,GAC3BqiB,EAAOphC,OAAQoY,EAAO,GAKxB,KAAMA,EAAQ,EAAW3a,EAAR2a,EAAgBA,IAC3BqG,EAAOrG,IAAWqG,EAAOrG,GAAQ8oB,QACrCziB,EAAOrG,GAAQ8oB,OAAOziC,KAAMlB,YAKvBmF,GAAKw+B,WAMf,SAASL,IAAOjkC,EAAMykC,GACrB,GAAIjb,GACHpa,GAAUs1B,OAAQ1kC,GAClB8C,EAAI,CAKL,KADA2hC,EAAeA,EAAc,EAAI,EACtB,EAAJ3hC,EAAQA,GAAK,EAAI2hC,EACvBjb,EAAQ2K,GAAWrxB,GACnBsM,EAAO,SAAWoa,GAAUpa,EAAO,UAAYoa,GAAUxpB,CAO1D,OAJKykC,KACJr1B,EAAM8O,QAAU9O,EAAMmR,MAAQvgB,GAGxBoP,EAIR/R,EAAO+E,MACNuiC,UAAWV,GAAM,QACjBW,QAASX,GAAM,QACfY,YAAaZ,GAAM,UACnBa,QAAU5mB,QAAS,QACnB6mB,SAAW7mB,QAAS,QACpB8mB,YAAc9mB,QAAS,WACrB,SAAUza,EAAM2lB,GAClB/rB,EAAOsB,GAAI8E,GAAS,SAAUsgC,EAAOhB,EAAQ1gC,GAC5C,MAAO1B,MAAKqjC,QAAS5a,EAAO2a,EAAOhB,EAAQ1gC,MAI7ChF,EAAO0mC,MAAQ,SAAUA,EAAOhB,EAAQpkC,GACvC,GAAI8e,GAAMsmB,GAA0B,gBAAVA,GAAqB1mC,EAAOgG,UAAY0gC,IACjEhJ,SAAUp8B,IAAOA,GAAMokC,GACtB1lC,EAAOiE,WAAYyiC,IAAWA,EAC/BxB,SAAUwB,EACVhB,OAAQpkC,GAAMokC,GAAUA,IAAW1lC,EAAOiE,WAAYyhC,IAAYA,EAwBnE,OArBAtlB,GAAI8kB,SAAWllC,EAAOklB,GAAG1d,IAAM,EAA4B,gBAAjB4Y,GAAI8kB,SAAwB9kB,EAAI8kB,SACzE9kB,EAAI8kB,WAAYllC,GAAOklB,GAAGC,OAASnlB,EAAOklB,GAAGC,OAAQ/E,EAAI8kB,UAAallC,EAAOklB,GAAGC,OAAO6F,UAGtE,MAAb5K,EAAIoE,OAAiBpE,EAAIoE,SAAU,KACvCpE,EAAIoE,MAAQ,MAIbpE,EAAItU,IAAMsU,EAAIsd,SAEdtd,EAAIsd,SAAW,WACT19B,EAAOiE,WAAYmc,EAAItU,MAC3BsU,EAAItU,IAAItH,KAAMlB,MAGV8c,EAAIoE,OACRxkB,EAAOykB,QAASnhB,KAAM8c,EAAIoE,QAIrBpE,GAGRpgB,EAAO0lC,QACNkC,OAAQ,SAAUC,GACjB,MAAOA,IAERC,MAAO,SAAUD,GAChB,MAAO,GAAMlhC,KAAKohC,IAAKF,EAAElhC,KAAKqhC,IAAO,IAIvChoC,EAAOmnC,UACPnnC,EAAOklB,GAAKugB,GAAMxiC,UAAU1B,KAC5BvB,EAAOklB,GAAG6f,KAAO,WAChB,GAAIc,GACHsB,EAASnnC,EAAOmnC,OAChB1hC,EAAI,CAIL,KAFAm+B,GAAQ5jC,EAAO0L,MAEHy7B,EAAO3jC,OAAXiC,EAAmBA,IAC1BogC,EAAQsB,EAAQ1hC,GAEVogC,KAAWsB,EAAQ1hC,KAAQogC,GAChCsB,EAAOphC,OAAQN,IAAK,EAIhB0hC,GAAO3jC,QACZxD,EAAOklB,GAAGJ,OAEX8e,GAAQrkC,GAGTS,EAAOklB,GAAG2gB,MAAQ,SAAUA,GACtBA,KAAW7lC,EAAOmnC,OAAO1mC,KAAMolC,IACnC7lC,EAAOklB,GAAG9N,SAIZpX,EAAOklB,GAAG+iB,SAAW,GAErBjoC,EAAOklB,GAAG9N,MAAQ,WACXysB,KACLA,GAAUqE,YAAaloC,EAAOklB,GAAG6f,KAAM/kC,EAAOklB,GAAG+iB,YAInDjoC,EAAOklB,GAAGJ,KAAO,WAChBqjB,cAAetE,IACfA,GAAU,MAGX7jC,EAAOklB,GAAGC,QACTijB,KAAM,IACNC,KAAM,IAENrd,SAAU,KAIXhrB,EAAOklB,GAAGshB,QAELxmC,EAAOsV,MAAQtV,EAAOsV,KAAKuH,UAC/B7c,EAAOsV,KAAKuH,QAAQyrB,SAAW,SAAUjlC,GACxC,MAAOrD,GAAO+K,KAAK/K,EAAOmnC,OAAQ,SAAU7lC,GAC3C,MAAO+B,KAAS/B,EAAG+B,OACjBG,SAGLxD,EAAOsB,GAAGinC,OAAS,SAAUliC,GAC5B,GAAKhB,UAAU7B,OACd,MAAO6C,KAAY9G,EAClB+D,KACAA,KAAKyB,KAAK,SAAUU,GACnBzF,EAAOuoC,OAAOC,UAAWllC,KAAM+C,EAASZ,IAI3C,IAAI5F,GAAS4oC,EACZC,GAAQx8B,IAAK,EAAG4sB,KAAM,GACtBz1B,EAAOC,KAAM,GACbkQ,EAAMnQ,GAAQA,EAAKS,aAEpB,IAAM0P,EAON,MAHA3T,GAAU2T,EAAI1T,gBAGRE,EAAOmN,SAAUtN,EAASwD,UAMpBA,GAAKslC,wBAA0BjpC,IAC1CgpC,EAAMrlC,EAAKslC,yBAEZF,EAAMG,GAAWp1B,IAEhBtH,IAAKw8B,EAAIx8B,KAASu8B,EAAII,aAAehpC,EAAQitB,YAAiBjtB,EAAQktB,WAAc,GACpF+L,KAAM4P,EAAI5P,MAAS2P,EAAIK,aAAejpC,EAAQ6sB,aAAiB7sB,EAAQ8sB,YAAc,KAX9E+b,GAeT1oC,EAAOuoC,QAENC,UAAW,SAAUnlC,EAAMgD,EAASZ,GACnC,GAAIgxB,GAAWz2B,EAAOq3B,IAAKh0B,EAAM,WAGf,YAAbozB,IACJpzB,EAAK0I,MAAM0qB,SAAW,WAGvB,IAAIsS,GAAU/oC,EAAQqD,GACrB2lC,EAAYD,EAAQR,SACpBU,EAAYjpC,EAAOq3B,IAAKh0B,EAAM,OAC9B6lC,EAAalpC,EAAOq3B,IAAKh0B,EAAM,QAC/B8lC,GAAmC,aAAb1S,GAAwC,UAAbA,IAA0Bz2B,EAAO2K,QAAQ,QAASs+B,EAAWC,IAAe,GAC7Hnd,KAAYqd,KAAkBC,EAAQC,CAGlCH,IACJC,EAAcL,EAAQtS,WACtB4S,EAASD,EAAYl9B,IACrBo9B,EAAUF,EAAYtQ,OAEtBuQ,EAASvhC,WAAYmhC,IAAe,EACpCK,EAAUxhC,WAAYohC,IAAgB,GAGlClpC,EAAOiE,WAAYoC,KACvBA,EAAUA,EAAQ7B,KAAMnB,EAAMoC,EAAGujC,IAGd,MAAf3iC,EAAQ6F,MACZ6f,EAAM7f,IAAQ7F,EAAQ6F,IAAM88B,EAAU98B,IAAQm9B,GAE1B,MAAhBhjC,EAAQyyB,OACZ/M,EAAM+M,KAASzyB,EAAQyyB,KAAOkQ,EAAUlQ,KAASwQ,GAG7C,SAAWjjC,GACfA,EAAQkjC,MAAM/kC,KAAMnB,EAAM0oB,GAE1Bgd,EAAQ1R,IAAKtL,KAMhB/rB,EAAOsB,GAAG0E,QAETywB,SAAU,WACT,GAAMnzB,KAAM,GAAZ,CAIA,GAAIkmC,GAAcjB,EACjBkB,GAAiBv9B,IAAK,EAAG4sB,KAAM,GAC/Bz1B,EAAOC,KAAM,EAwBd,OArBwC,UAAnCtD,EAAOq3B,IAAKh0B,EAAM,YAEtBklC,EAASllC,EAAKslC,yBAGda,EAAelmC,KAAKkmC,eAGpBjB,EAASjlC,KAAKilC,SACRvoC,EAAOmK,SAAUq/B,EAAc,GAAK,UACzCC,EAAeD,EAAajB,UAI7BkB,EAAav9B,KAAQlM,EAAOq3B,IAAKmS,EAAc,GAAK,kBAAkB,GACtEC,EAAa3Q,MAAQ94B,EAAOq3B,IAAKmS,EAAc,GAAK,mBAAmB,KAOvEt9B,IAAMq8B,EAAOr8B,IAAOu9B,EAAav9B,IAAMlM,EAAOq3B,IAAKh0B,EAAM,aAAa,GACtEy1B,KAAMyP,EAAOzP,KAAO2Q,EAAa3Q,KAAO94B,EAAOq3B,IAAKh0B,EAAM,cAAc,MAI1EmmC,aAAc,WACb,MAAOlmC,MAAKsC,IAAI,WACf,GAAI4jC,GAAelmC,KAAKkmC,cAAgB3pC,CACxC,OAAQ2pC,IAAmBxpC,EAAOmK,SAAUq/B,EAAc,SAAsD,WAA1CxpC,EAAOq3B,IAAKmS,EAAc,YAC/FA,EAAeA,EAAaA,YAE7B,OAAOA,IAAgB3pC,OAO1BG,EAAO+E,MAAO2nB,WAAY,cAAeI,UAAW,eAAgB,SAAUyT,EAAQra,GACrF,GAAIha,GAAM,IAAInI,KAAMmiB,EAEpBlmB,GAAOsB,GAAIi/B,GAAW,SAAUluB,GAC/B,MAAOrS,GAAOqL,OAAQ/H,KAAM,SAAUD,EAAMk9B,EAAQluB,GACnD,GAAIo2B,GAAMG,GAAWvlC,EAErB,OAAKgP,KAAQ9S,EACLkpC,EAAOviB,IAAQuiB,GAAOA,EAAKviB,GACjCuiB,EAAI7oC,SAASE,gBAAiBygC,GAC9Bl9B,EAAMk9B,IAGHkI,EACJA,EAAIiB,SACFx9B,EAAYlM,EAAQyoC,GAAM/b,aAApBra,EACPnG,EAAMmG,EAAMrS,EAAQyoC,GAAM3b,aAI3BzpB,EAAMk9B,GAAWluB,EAPlB,IASEkuB,EAAQluB,EAAKhN,UAAU7B,OAAQ,QAIpC,SAASolC,IAAWvlC,GACnB,MAAOrD,GAAO2H,SAAUtE,GACvBA,EACkB,IAAlBA,EAAKQ,SACJR,EAAKunB,aAAevnB,EAAKqQ,cACzB,EAGH1T,EAAO+E,MAAQ4kC,OAAQ,SAAUC,MAAO,SAAW,SAAUxjC,EAAMzD,GAClE3C,EAAO+E,MAAQg1B,QAAS,QAAU3zB,EAAMytB,QAASlxB,EAAM,GAAI,QAAUyD,GAAQ,SAAUyjC,EAAcC,GAEpG9pC,EAAOsB,GAAIwoC,GAAa,SAAUhQ,EAAQzvB,GACzC,GAAIiB,GAAYjG,UAAU7B,SAAYqmC,GAAkC,iBAAX/P,IAC5DtB,EAAQqR,IAAkB/P,KAAW,GAAQzvB,KAAU,EAAO,SAAW,SAE1E,OAAOrK,GAAOqL,OAAQ/H,KAAM,SAAUD,EAAMV,EAAM0H,GACjD,GAAImJ,EAEJ,OAAKxT,GAAO2H,SAAUtE,GAIdA,EAAKzD,SAASE,gBAAiB,SAAWsG,GAI3B,IAAlB/C,EAAKQ,UACT2P,EAAMnQ,EAAKvD,gBAIJ6G,KAAKiE,IACXvH,EAAK+D,KAAM,SAAWhB,GAAQoN,EAAK,SAAWpN,GAC9C/C,EAAK+D,KAAM,SAAWhB,GAAQoN,EAAK,SAAWpN,GAC9CoN,EAAK,SAAWpN,KAIXiE,IAAU9K,EAEhBS,EAAOq3B,IAAKh0B,EAAMV,EAAM61B,GAGxBx4B,EAAO+L,MAAO1I,EAAMV,EAAM0H,EAAOmuB,IAChC71B,EAAM2I,EAAYwuB,EAASv6B,EAAW+L,EAAW,WAQvDtL,EAAOsB,GAAGyoC,KAAO,WAChB,MAAOzmC,MAAKE,QAGbxD,EAAOsB,GAAG0oC,QAAUhqC,EAAOsB,GAAGouB,QAGP,gBAAXua,SAAuBA,QAAoC,gBAAnBA,QAAOC,QAK1DD,OAAOC,QAAUlqC,GAGjBV,EAAOU,OAASV,EAAOY,EAAIF,EASJ,kBAAXmqC,SAAyBA,OAAOC,KAC3CD,OAAQ,YAAc,WAAc,MAAOnqC,QAIzCV"} \ No newline at end of file
diff --git a/frontend/im/colors/js/jquery.fancybox.js b/frontend/im/colors/js/jquery.fancybox.js
new file mode 100644
index 0000000..e8e1987
--- /dev/null
+++ b/frontend/im/colors/js/jquery.fancybox.js
@@ -0,0 +1,2020 @@
+/*!
+ * fancyBox - jQuery Plugin
+ * version: 2.1.5 (Fri, 14 Jun 2013)
+ * @requires jQuery v1.6 or later
+ *
+ * Examples at http://fancyapps.com/fancybox/
+ * License: www.fancyapps.com/fancybox/#license
+ *
+ * Copyright 2012 Janis Skarnelis - janis@fancyapps.com
+ *
+ */
+
+(function (window, document, $, undefined) {
+ "use strict";
+
+ var H = $("html"),
+ W = $(window),
+ D = $(document),
+ F = $.fancybox = function () {
+ F.open.apply( this, arguments );
+ },
+ IE = navigator.userAgent.match(/msie/i),
+ didUpdate = null,
+ isTouch = document.createTouch !== undefined,
+
+ isQuery = function(obj) {
+ return obj && obj.hasOwnProperty && obj instanceof $;
+ },
+ isString = function(str) {
+ return str && $.type(str) === "string";
+ },
+ isPercentage = function(str) {
+ return isString(str) && str.indexOf('%') > 0;
+ },
+ isScrollable = function(el) {
+ return (el && !(el.style.overflow && el.style.overflow === 'hidden') && ((el.clientWidth && el.scrollWidth > el.clientWidth) || (el.clientHeight && el.scrollHeight > el.clientHeight)));
+ },
+ getScalar = function(orig, dim) {
+ var value = parseInt(orig, 10) || 0;
+
+ if (dim && isPercentage(orig)) {
+ value = F.getViewport()[ dim ] / 100 * value;
+ }
+
+ return Math.ceil(value);
+ },
+ getValue = function(value, dim) {
+ return getScalar(value, dim) + 'px';
+ };
+
+ $.extend(F, {
+ // The current version of fancyBox
+ version: '2.1.5',
+
+ defaults: {
+ padding : 15,
+ margin : 20,
+
+ width : 800,
+ height : 600,
+ minWidth : 100,
+ minHeight : 100,
+ maxWidth : 9999,
+ maxHeight : 9999,
+ pixelRatio: 1, // Set to 2 for retina display support
+
+ autoSize : true,
+ autoHeight : false,
+ autoWidth : false,
+
+ autoResize : true,
+ autoCenter : !isTouch,
+ fitToView : true,
+ aspectRatio : false,
+ topRatio : 0.5,
+ leftRatio : 0.5,
+
+ scrolling : 'auto', // 'auto', 'yes' or 'no'
+ wrapCSS : '',
+
+ arrows : true,
+ closeBtn : true,
+ closeClick : false,
+ nextClick : false,
+ mouseWheel : true,
+ autoPlay : false,
+ playSpeed : 3000,
+ preload : 3,
+ modal : false,
+ loop : true,
+
+ ajax : {
+ dataType : 'html',
+ headers : { 'X-fancyBox': true }
+ },
+ iframe : {
+ scrolling : 'auto',
+ preload : true
+ },
+ swf : {
+ wmode: 'transparent',
+ allowfullscreen : 'true',
+ allowscriptaccess : 'always'
+ },
+
+ keys : {
+ next : {
+ 13 : 'left', // enter
+ 34 : 'up', // page down
+ 39 : 'left', // right arrow
+ 40 : 'up' // down arrow
+ },
+ prev : {
+ 8 : 'right', // backspace
+ 33 : 'down', // page up
+ 37 : 'right', // left arrow
+ 38 : 'down' // up arrow
+ },
+ close : [27], // escape key
+ play : [32], // space - start/stop slideshow
+ toggle : [70] // letter "f" - toggle fullscreen
+ },
+
+ direction : {
+ next : 'left',
+ prev : 'right'
+ },
+
+ scrollOutside : true,
+
+ // Override some properties
+ index : 0,
+ type : null,
+ href : null,
+ content : null,
+ title : null,
+
+ // HTML templates
+ tpl: {
+ wrap : '<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',
+ image : '<img class="fancybox-image" src="{href}" alt="" />',
+ iframe : '<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen' + (IE ? ' allowtransparency="true"' : '') + '></iframe>',
+ error : '<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',
+ closeBtn : '<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>',
+ next : '<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',
+ prev : '<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'
+ },
+
+ // Properties for each animation type
+ // Opening fancyBox
+ openEffect : 'fade', // 'elastic', 'fade' or 'none'
+ openSpeed : 250,
+ openEasing : 'swing',
+ openOpacity : true,
+ openMethod : 'zoomIn',
+
+ // Closing fancyBox
+ closeEffect : 'fade', // 'elastic', 'fade' or 'none'
+ closeSpeed : 250,
+ closeEasing : 'swing',
+ closeOpacity : true,
+ closeMethod : 'zoomOut',
+
+ // Changing next gallery item
+ nextEffect : 'elastic', // 'elastic', 'fade' or 'none'
+ nextSpeed : 250,
+ nextEasing : 'swing',
+ nextMethod : 'changeIn',
+
+ // Changing previous gallery item
+ prevEffect : 'elastic', // 'elastic', 'fade' or 'none'
+ prevSpeed : 250,
+ prevEasing : 'swing',
+ prevMethod : 'changeOut',
+
+ // Enable default helpers
+ helpers : {
+ overlay : true,
+ title : true
+ },
+
+ // Callbacks
+ onCancel : $.noop, // If canceling
+ beforeLoad : $.noop, // Before loading
+ afterLoad : $.noop, // After loading
+ beforeShow : $.noop, // Before changing in current item
+ afterShow : $.noop, // After opening
+ beforeChange : $.noop, // Before changing gallery item
+ beforeClose : $.noop, // Before closing
+ afterClose : $.noop // After closing
+ },
+
+ //Current state
+ group : {}, // Selected group
+ opts : {}, // Group options
+ previous : null, // Previous element
+ coming : null, // Element being loaded
+ current : null, // Currently loaded element
+ isActive : false, // Is activated
+ isOpen : false, // Is currently open
+ isOpened : false, // Have been fully opened at least once
+
+ wrap : null,
+ skin : null,
+ outer : null,
+ inner : null,
+
+ player : {
+ timer : null,
+ isActive : false
+ },
+
+ // Loaders
+ ajaxLoad : null,
+ imgPreload : null,
+
+ // Some collections
+ transitions : {},
+ helpers : {},
+
+ /*
+ * Static methods
+ */
+
+ open: function (group, opts) {
+ if (!group) {
+ return;
+ }
+
+ if (!$.isPlainObject(opts)) {
+ opts = {};
+ }
+
+ // Close if already active
+ if (false === F.close(true)) {
+ return;
+ }
+
+ // Normalize group
+ if (!$.isArray(group)) {
+ group = isQuery(group) ? $(group).get() : [group];
+ }
+
+ // Recheck if the type of each element is `object` and set content type (image, ajax, etc)
+ $.each(group, function(i, element) {
+ var obj = {},
+ href,
+ title,
+ content,
+ type,
+ rez,
+ hrefParts,
+ selector;
+
+ if ($.type(element) === "object") {
+ // Check if is DOM element
+ if (element.nodeType) {
+ element = $(element);
+ }
+
+ if (isQuery(element)) {
+ obj = {
+ href : element.data('fancybox-href') || element.attr('href'),
+ title : element.data('fancybox-title') || element.attr('title'),
+ isDom : true,
+ element : element
+ };
+
+ if ($.metadata) {
+ $.extend(true, obj, element.metadata());
+ }
+
+ } else {
+ obj = element;
+ }
+ }
+
+ href = opts.href || obj.href || (isString(element) ? element : null);
+ title = opts.title !== undefined ? opts.title : obj.title || '';
+
+ content = opts.content || obj.content;
+ type = content ? 'html' : (opts.type || obj.type);
+
+ if (!type && obj.isDom) {
+ type = element.data('fancybox-type');
+
+ if (!type) {
+ rez = element.prop('class').match(/fancybox\.(\w+)/);
+ type = rez ? rez[1] : null;
+ }
+ }
+
+ if (isString(href)) {
+ // Try to guess the content type
+ if (!type) {
+ if (F.isImage(href)) {
+ type = 'image';
+
+ } else if (F.isSWF(href)) {
+ type = 'swf';
+
+ } else if (href.charAt(0) === '#') {
+ type = 'inline';
+
+ } else if (isString(element)) {
+ type = 'html';
+ content = element;
+ }
+ }
+
+ // Split url into two pieces with source url and content selector, e.g,
+ // "/mypage.html #my_id" will load "/mypage.html" and display element having id "my_id"
+ if (type === 'ajax') {
+ hrefParts = href.split(/\s+/, 2);
+ href = hrefParts.shift();
+ selector = hrefParts.shift();
+ }
+ }
+
+ if (!content) {
+ if (type === 'inline') {
+ if (href) {
+ content = $( isString(href) ? href.replace(/.*(?=#[^\s]+$)/, '') : href ); //strip for ie7
+
+ } else if (obj.isDom) {
+ content = element;
+ }
+
+ } else if (type === 'html') {
+ content = href;
+
+ } else if (!type && !href && obj.isDom) {
+ type = 'inline';
+ content = element;
+ }
+ }
+
+ $.extend(obj, {
+ href : href,
+ type : type,
+ content : content,
+ title : title,
+ selector : selector
+ });
+
+ group[ i ] = obj;
+ });
+
+ // Extend the defaults
+ F.opts = $.extend(true, {}, F.defaults, opts);
+
+ // All options are merged recursive except keys
+ if (opts.keys !== undefined) {
+ F.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false;
+ }
+
+ F.group = group;
+
+ return F._start(F.opts.index);
+ },
+
+ // Cancel image loading or abort ajax request
+ cancel: function () {
+ var coming = F.coming;
+
+ if (!coming || false === F.trigger('onCancel')) {
+ return;
+ }
+
+ F.hideLoading();
+
+ if (F.ajaxLoad) {
+ F.ajaxLoad.abort();
+ }
+
+ F.ajaxLoad = null;
+
+ if (F.imgPreload) {
+ F.imgPreload.onload = F.imgPreload.onerror = null;
+ }
+
+ if (coming.wrap) {
+ coming.wrap.stop(true, true).trigger('onReset').remove();
+ }
+
+ F.coming = null;
+
+ // If the first item has been canceled, then clear everything
+ if (!F.current) {
+ F._afterZoomOut( coming );
+ }
+ },
+
+ // Start closing animation if is open; remove immediately if opening/closing
+ close: function (event) {
+ F.cancel();
+
+ if (false === F.trigger('beforeClose')) {
+ return;
+ }
+
+ F.unbindEvents();
+
+ if (!F.isActive) {
+ return;
+ }
+
+ if (!F.isOpen || event === true) {
+ $('.fancybox-wrap').stop(true).trigger('onReset').remove();
+
+ F._afterZoomOut();
+
+ } else {
+ F.isOpen = F.isOpened = false;
+ F.isClosing = true;
+
+ $('.fancybox-item, .fancybox-nav').remove();
+
+ F.wrap.stop(true, true).removeClass('fancybox-opened');
+
+ F.transitions[ F.current.closeMethod ]();
+ }
+ },
+
+ // Manage slideshow:
+ // $.fancybox.play(); - toggle slideshow
+ // $.fancybox.play( true ); - start
+ // $.fancybox.play( false ); - stop
+ play: function ( action ) {
+ var clear = function () {
+ clearTimeout(F.player.timer);
+ },
+ set = function () {
+ clear();
+
+ if (F.current && F.player.isActive) {
+ F.player.timer = setTimeout(F.next, F.current.playSpeed);
+ }
+ },
+ stop = function () {
+ clear();
+
+ D.unbind('.player');
+
+ F.player.isActive = false;
+
+ F.trigger('onPlayEnd');
+ },
+ start = function () {
+ if (F.current && (F.current.loop || F.current.index < F.group.length - 1)) {
+ F.player.isActive = true;
+
+ D.bind({
+ 'onCancel.player beforeClose.player' : stop,
+ 'onUpdate.player' : set,
+ 'beforeLoad.player' : clear
+ });
+
+ set();
+
+ F.trigger('onPlayStart');
+ }
+ };
+
+ if (action === true || (!F.player.isActive && action !== false)) {
+ start();
+ } else {
+ stop();
+ }
+ },
+
+ // Navigate to next gallery item
+ next: function ( direction ) {
+ var current = F.current;
+
+ if (current) {
+ if (!isString(direction)) {
+ direction = current.direction.next;
+ }
+
+ F.jumpto(current.index + 1, direction, 'next');
+ }
+ },
+
+ // Navigate to previous gallery item
+ prev: function ( direction ) {
+ var current = F.current;
+
+ if (current) {
+ if (!isString(direction)) {
+ direction = current.direction.prev;
+ }
+
+ F.jumpto(current.index - 1, direction, 'prev');
+ }
+ },
+
+ // Navigate to gallery item by index
+ jumpto: function ( index, direction, router ) {
+ var current = F.current;
+
+ if (!current) {
+ return;
+ }
+
+ index = getScalar(index);
+
+ F.direction = direction || current.direction[ (index >= current.index ? 'next' : 'prev') ];
+ F.router = router || 'jumpto';
+
+ if (current.loop) {
+ if (index < 0) {
+ index = current.group.length + (index % current.group.length);
+ }
+
+ index = index % current.group.length;
+ }
+
+ if (current.group[ index ] !== undefined) {
+ F.cancel();
+
+ F._start(index);
+ }
+ },
+
+ // Center inside viewport and toggle position type to fixed or absolute if needed
+ reposition: function (e, onlyAbsolute) {
+ var current = F.current,
+ wrap = current ? current.wrap : null,
+ pos;
+
+ if (wrap) {
+ pos = F._getPosition(onlyAbsolute);
+
+ if (e && e.type === 'scroll') {
+ delete pos.position;
+
+ wrap.stop(true, true).animate(pos, 200);
+
+ } else {
+ wrap.css(pos);
+
+ current.pos = $.extend({}, current.dim, pos);
+ }
+ }
+ },
+
+ update: function (e) {
+ var type = (e && e.type),
+ anyway = !type || type === 'orientationchange';
+
+ if (anyway) {
+ clearTimeout(didUpdate);
+
+ didUpdate = null;
+ }
+
+ if (!F.isOpen || didUpdate) {
+ return;
+ }
+
+ didUpdate = setTimeout(function() {
+ var current = F.current;
+
+ if (!current || F.isClosing) {
+ return;
+ }
+
+ F.wrap.removeClass('fancybox-tmp');
+
+ if (anyway || type === 'load' || (type === 'resize' && current.autoResize)) {
+ F._setDimension();
+ }
+
+ if (!(type === 'scroll' && current.canShrink)) {
+ F.reposition(e);
+ }
+
+ F.trigger('onUpdate');
+
+ didUpdate = null;
+
+ }, (anyway && !isTouch ? 0 : 300));
+ },
+
+ // Shrink content to fit inside viewport or restore if resized
+ toggle: function ( action ) {
+ if (F.isOpen) {
+ F.current.fitToView = $.type(action) === "boolean" ? action : !F.current.fitToView;
+
+ // Help browser to restore document dimensions
+ if (isTouch) {
+ F.wrap.removeAttr('style').addClass('fancybox-tmp');
+
+ F.trigger('onUpdate');
+ }
+
+ F.update();
+ }
+ },
+
+ hideLoading: function () {
+ D.unbind('.loading');
+
+ $('#fancybox-loading').remove();
+ },
+
+ showLoading: function () {
+ var el, viewport;
+
+ F.hideLoading();
+
+ el = $('<div id="fancybox-loading"><div></div></div>').click(F.cancel).appendTo('body');
+
+ // If user will press the escape-button, the request will be canceled
+ D.bind('keydown.loading', function(e) {
+ if ((e.which || e.keyCode) === 27) {
+ e.preventDefault();
+
+ F.cancel();
+ }
+ });
+
+ if (!F.defaults.fixed) {
+ viewport = F.getViewport();
+
+ el.css({
+ position : 'absolute',
+ top : (viewport.h * 0.5) + viewport.y,
+ left : (viewport.w * 0.5) + viewport.x
+ });
+ }
+ },
+
+ getViewport: function () {
+ var locked = (F.current && F.current.locked) || false,
+ rez = {
+ x: W.scrollLeft(),
+ y: W.scrollTop()
+ };
+
+ if (locked) {
+ rez.w = locked[0].clientWidth;
+ rez.h = locked[0].clientHeight;
+
+ } else {
+ // See http://bugs.jquery.com/ticket/6724
+ rez.w = isTouch && window.innerWidth ? window.innerWidth : W.width();
+ rez.h = isTouch && window.innerHeight ? window.innerHeight : W.height();
+ }
+
+ return rez;
+ },
+
+ // Unbind the keyboard / clicking actions
+ unbindEvents: function () {
+ if (F.wrap && isQuery(F.wrap)) {
+ F.wrap.unbind('.fb');
+ }
+
+ D.unbind('.fb');
+ W.unbind('.fb');
+ },
+
+ bindEvents: function () {
+ var current = F.current,
+ keys;
+
+ if (!current) {
+ return;
+ }
+
+ // Changing document height on iOS devices triggers a 'resize' event,
+ // that can change document height... repeating infinitely
+ W.bind('orientationchange.fb' + (isTouch ? '' : ' resize.fb') + (current.autoCenter && !current.locked ? ' scroll.fb' : ''), F.update);
+
+ keys = current.keys;
+
+ if (keys) {
+ D.bind('keydown.fb', function (e) {
+ var code = e.which || e.keyCode,
+ target = e.target || e.srcElement;
+
+ // Skip esc key if loading, because showLoading will cancel preloading
+ if (code === 27 && F.coming) {
+ return false;
+ }
+
+ // Ignore key combinations and key events within form elements
+ if (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && !(target && (target.type || $(target).is('[contenteditable]')))) {
+ $.each(keys, function(i, val) {
+ if (current.group.length > 1 && val[ code ] !== undefined) {
+ F[ i ]( val[ code ] );
+
+ e.preventDefault();
+ return false;
+ }
+
+ if ($.inArray(code, val) > -1) {
+ F[ i ] ();
+
+ e.preventDefault();
+ return false;
+ }
+ });
+ }
+ });
+ }
+
+ if ($.fn.mousewheel && current.mouseWheel) {
+ F.wrap.bind('mousewheel.fb', function (e, delta, deltaX, deltaY) {
+ var target = e.target || null,
+ parent = $(target),
+ canScroll = false;
+
+ while (parent.length) {
+ if (canScroll || parent.is('.fancybox-skin') || parent.is('.fancybox-wrap')) {
+ break;
+ }
+
+ canScroll = isScrollable( parent[0] );
+ parent = $(parent).parent();
+ }
+
+ if (delta !== 0 && !canScroll) {
+ if (F.group.length > 1 && !current.canShrink) {
+ if (deltaY > 0 || deltaX > 0) {
+ F.prev( deltaY > 0 ? 'down' : 'left' );
+
+ } else if (deltaY < 0 || deltaX < 0) {
+ F.next( deltaY < 0 ? 'up' : 'right' );
+ }
+
+ e.preventDefault();
+ }
+ }
+ });
+ }
+ },
+
+ trigger: function (event, o) {
+ var ret, obj = o || F.coming || F.current;
+
+ if (!obj) {
+ return;
+ }
+
+ if ($.isFunction( obj[event] )) {
+ ret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1));
+ }
+
+ if (ret === false) {
+ return false;
+ }
+
+ if (obj.helpers) {
+ $.each(obj.helpers, function (helper, opts) {
+ if (opts && F.helpers[helper] && $.isFunction(F.helpers[helper][event])) {
+ F.helpers[helper][event]($.extend(true, {}, F.helpers[helper].defaults, opts), obj);
+ }
+ });
+ }
+
+ D.trigger(event);
+ },
+
+ isImage: function (str) {
+ return isString(str) && str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i);
+ },
+
+ isSWF: function (str) {
+ return isString(str) && str.match(/\.(swf)((\?|#).*)?$/i);
+ },
+
+ _start: function (index) {
+ var coming = {},
+ obj,
+ href,
+ type,
+ margin,
+ padding;
+
+ index = getScalar( index );
+ obj = F.group[ index ] || null;
+
+ if (!obj) {
+ return false;
+ }
+
+ coming = $.extend(true, {}, F.opts, obj);
+
+ // Convert margin and padding properties to array - top, right, bottom, left
+ margin = coming.margin;
+ padding = coming.padding;
+
+ if ($.type(margin) === 'number') {
+ coming.margin = [margin, margin, margin, margin];
+ }
+
+ if ($.type(padding) === 'number') {
+ coming.padding = [padding, padding, padding, padding];
+ }
+
+ // 'modal' propery is just a shortcut
+ if (coming.modal) {
+ $.extend(true, coming, {
+ closeBtn : false,
+ closeClick : false,
+ nextClick : false,
+ arrows : false,
+ mouseWheel : false,
+ keys : null,
+ helpers: {
+ overlay : {
+ closeClick : false
+ }
+ }
+ });
+ }
+
+ // 'autoSize' property is a shortcut, too
+ if (coming.autoSize) {
+ coming.autoWidth = coming.autoHeight = true;
+ }
+
+ if (coming.width === 'auto') {
+ coming.autoWidth = true;
+ }
+
+ if (coming.height === 'auto') {
+ coming.autoHeight = true;
+ }
+
+ /*
+ * Add reference to the group, so it`s possible to access from callbacks, example:
+ * afterLoad : function() {
+ * this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
+ * }
+ */
+
+ coming.group = F.group;
+ coming.index = index;
+
+ // Give a chance for callback or helpers to update coming item (type, title, etc)
+ F.coming = coming;
+
+ if (false === F.trigger('beforeLoad')) {
+ F.coming = null;
+
+ return;
+ }
+
+ type = coming.type;
+ href = coming.href;
+
+ if (!type) {
+ F.coming = null;
+
+ //If we can not determine content type then drop silently or display next/prev item if looping through gallery
+ if (F.current && F.router && F.router !== 'jumpto') {
+ F.current.index = index;
+
+ return F[ F.router ]( F.direction );
+ }
+
+ return false;
+ }
+
+ F.isActive = true;
+
+ if (type === 'image' || type === 'swf') {
+ coming.autoHeight = coming.autoWidth = false;
+ coming.scrolling = 'visible';
+ }
+
+ if (type === 'image') {
+ coming.aspectRatio = true;
+ }
+
+ if (type === 'iframe' && isTouch) {
+ coming.scrolling = 'scroll';
+ }
+
+ // Build the neccessary markup
+ coming.wrap = $(coming.tpl.wrap).addClass('fancybox-' + (isTouch ? 'mobile' : 'desktop') + ' fancybox-type-' + type + ' fancybox-tmp ' + coming.wrapCSS).appendTo( coming.parent || 'body' );
+
+ $.extend(coming, {
+ skin : $('.fancybox-skin', coming.wrap),
+ outer : $('.fancybox-outer', coming.wrap),
+ inner : $('.fancybox-inner', coming.wrap)
+ });
+
+ $.each(["Top", "Right", "Bottom", "Left"], function(i, v) {
+ coming.skin.css('padding' + v, getValue(coming.padding[ i ]));
+ });
+
+ F.trigger('onReady');
+
+ // Check before try to load; 'inline' and 'html' types need content, others - href
+ if (type === 'inline' || type === 'html') {
+ if (!coming.content || !coming.content.length) {
+ return F._error( 'content' );
+ }
+
+ } else if (!href) {
+ return F._error( 'href' );
+ }
+
+ if (type === 'image') {
+ F._loadImage();
+
+ } else if (type === 'ajax') {
+ F._loadAjax();
+
+ } else if (type === 'iframe') {
+ F._loadIframe();
+
+ } else {
+ F._afterLoad();
+ }
+ },
+
+ _error: function ( type ) {
+ $.extend(F.coming, {
+ type : 'html',
+ autoWidth : true,
+ autoHeight : true,
+ minWidth : 0,
+ minHeight : 0,
+ scrolling : 'no',
+ hasError : type,
+ content : F.coming.tpl.error
+ });
+
+ F._afterLoad();
+ },
+
+ _loadImage: function () {
+ // Reset preload image so it is later possible to check "complete" property
+ var img = F.imgPreload = new Image();
+
+ img.onload = function () {
+ this.onload = this.onerror = null;
+
+ F.coming.width = this.width / F.opts.pixelRatio;
+ F.coming.height = this.height / F.opts.pixelRatio;
+
+ F._afterLoad();
+ };
+
+ img.onerror = function () {
+ this.onload = this.onerror = null;
+
+ F._error( 'image' );
+ };
+
+ img.src = F.coming.href;
+
+ if (img.complete !== true) {
+ F.showLoading();
+ }
+ },
+
+ _loadAjax: function () {
+ var coming = F.coming;
+
+ F.showLoading();
+
+ F.ajaxLoad = $.ajax($.extend({}, coming.ajax, {
+ url: coming.href,
+ error: function (jqXHR, textStatus) {
+ if (F.coming && textStatus !== 'abort') {
+ F._error( 'ajax', jqXHR );
+
+ } else {
+ F.hideLoading();
+ }
+ },
+ success: function (data, textStatus) {
+ if (textStatus === 'success') {
+ coming.content = data;
+
+ F._afterLoad();
+ }
+ }
+ }));
+ },
+
+ _loadIframe: function() {
+ var coming = F.coming,
+ iframe = $(coming.tpl.iframe.replace(/\{rnd\}/g, new Date().getTime()))
+ .attr('scrolling', isTouch ? 'auto' : coming.iframe.scrolling)
+ .attr('src', coming.href);
+
+ // This helps IE
+ $(coming.wrap).bind('onReset', function () {
+ try {
+ $(this).find('iframe').hide().attr('src', '//about:blank').end().empty();
+ } catch (e) {}
+ });
+
+ if (coming.iframe.preload) {
+ F.showLoading();
+
+ iframe.one('load', function() {
+ $(this).data('ready', 1);
+
+ // iOS will lose scrolling if we resize
+ if (!isTouch) {
+ $(this).bind('load.fb', F.update);
+ }
+
+ // Without this trick:
+ // - iframe won't scroll on iOS devices
+ // - IE7 sometimes displays empty iframe
+ $(this).parents('.fancybox-wrap').width('100%').removeClass('fancybox-tmp').show();
+
+ F._afterLoad();
+ });
+ }
+
+ coming.content = iframe.appendTo( coming.inner );
+
+ if (!coming.iframe.preload) {
+ F._afterLoad();
+ }
+ },
+
+ _preloadImages: function() {
+ var group = F.group,
+ current = F.current,
+ len = group.length,
+ cnt = current.preload ? Math.min(current.preload, len - 1) : 0,
+ item,
+ i;
+
+ for (i = 1; i <= cnt; i += 1) {
+ item = group[ (current.index + i ) % len ];
+
+ if (item.type === 'image' && item.href) {
+ new Image().src = item.href;
+ }
+ }
+ },
+
+ _afterLoad: function () {
+ var coming = F.coming,
+ previous = F.current,
+ placeholder = 'fancybox-placeholder',
+ current,
+ content,
+ type,
+ scrolling,
+ href,
+ embed;
+
+ F.hideLoading();
+
+ if (!coming || F.isActive === false) {
+ return;
+ }
+
+ if (false === F.trigger('afterLoad', coming, previous)) {
+ coming.wrap.stop(true).trigger('onReset').remove();
+
+ F.coming = null;
+
+ return;
+ }
+
+ if (previous) {
+ F.trigger('beforeChange', previous);
+
+ previous.wrap.stop(true).removeClass('fancybox-opened')
+ .find('.fancybox-item, .fancybox-nav')
+ .remove();
+ }
+
+ F.unbindEvents();
+
+ current = coming;
+ content = coming.content;
+ type = coming.type;
+ scrolling = coming.scrolling;
+
+ $.extend(F, {
+ wrap : current.wrap,
+ skin : current.skin,
+ outer : current.outer,
+ inner : current.inner,
+ current : current,
+ previous : previous
+ });
+
+ href = current.href;
+
+ switch (type) {
+ case 'inline':
+ case 'ajax':
+ case 'html':
+ if (current.selector) {
+ content = $('<div>').html(content).find(current.selector);
+
+ } else if (isQuery(content)) {
+ if (!content.data(placeholder)) {
+ content.data(placeholder, $('<div class="' + placeholder + '"></div>').insertAfter( content ).hide() );
+ }
+
+ content = content.show().detach();
+
+ current.wrap.bind('onReset', function () {
+ if ($(this).find(content).length) {
+ content.hide().replaceAll( content.data(placeholder) ).data(placeholder, false);
+ }
+ });
+ }
+ break;
+
+ case 'image':
+ content = current.tpl.image.replace('{href}', href);
+ break;
+
+ case 'swf':
+ content = '<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="' + href + '"></param>';
+ embed = '';
+
+ $.each(current.swf, function(name, val) {
+ content += '<param name="' + name + '" value="' + val + '"></param>';
+ embed += ' ' + name + '="' + val + '"';
+ });
+
+ content += '<embed src="' + href + '" type="application/x-shockwave-flash" width="100%" height="100%"' + embed + '></embed></object>';
+ break;
+ }
+
+ if (!(isQuery(content) && content.parent().is(current.inner))) {
+ current.inner.append( content );
+ }
+
+ // Give a chance for helpers or callbacks to update elements
+ F.trigger('beforeShow');
+
+ // Set scrolling before calculating dimensions
+ current.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling));
+
+ // Set initial dimensions and start position
+ F._setDimension();
+
+ F.reposition();
+
+ F.isOpen = false;
+ F.coming = null;
+
+ F.bindEvents();
+
+ if (!F.isOpened) {
+ $('.fancybox-wrap').not( current.wrap ).stop(true).trigger('onReset').remove();
+
+ } else if (previous.prevMethod) {
+ F.transitions[ previous.prevMethod ]();
+ }
+
+ F.transitions[ F.isOpened ? current.nextMethod : current.openMethod ]();
+
+ F._preloadImages();
+ },
+
+ _setDimension: function () {
+ var viewport = F.getViewport(),
+ steps = 0,
+ canShrink = false,
+ canExpand = false,
+ wrap = F.wrap,
+ skin = F.skin,
+ inner = F.inner,
+ current = F.current,
+ width = current.width,
+ height = current.height,
+ minWidth = current.minWidth,
+ minHeight = current.minHeight,
+ maxWidth = current.maxWidth,
+ maxHeight = current.maxHeight,
+ scrolling = current.scrolling,
+ scrollOut = current.scrollOutside ? current.scrollbarWidth : 0,
+ margin = current.margin,
+ wMargin = getScalar(margin[1] + margin[3]),
+ hMargin = getScalar(margin[0] + margin[2]),
+ wPadding,
+ hPadding,
+ wSpace,
+ hSpace,
+ origWidth,
+ origHeight,
+ origMaxWidth,
+ origMaxHeight,
+ ratio,
+ width_,
+ height_,
+ maxWidth_,
+ maxHeight_,
+ iframe,
+ body;
+
+ // Reset dimensions so we could re-check actual size
+ wrap.add(skin).add(inner).width('auto').height('auto').removeClass('fancybox-tmp');
+
+ wPadding = getScalar(skin.outerWidth(true) - skin.width());
+ hPadding = getScalar(skin.outerHeight(true) - skin.height());
+
+ // Any space between content and viewport (margin, padding, border, title)
+ wSpace = wMargin + wPadding;
+ hSpace = hMargin + hPadding;
+
+ origWidth = isPercentage(width) ? (viewport.w - wSpace) * getScalar(width) / 100 : width;
+ origHeight = isPercentage(height) ? (viewport.h - hSpace) * getScalar(height) / 100 : height;
+
+ if (current.type === 'iframe') {
+ iframe = current.content;
+
+ if (current.autoHeight && iframe.data('ready') === 1) {
+ try {
+ if (iframe[0].contentWindow.document.location) {
+ inner.width( origWidth ).height(9999);
+
+ body = iframe.contents().find('body');
+
+ if (scrollOut) {
+ body.css('overflow-x', 'hidden');
+ }
+
+ origHeight = body.outerHeight(true);
+ }
+
+ } catch (e) {}
+ }
+
+ } else if (current.autoWidth || current.autoHeight) {
+ inner.addClass( 'fancybox-tmp' );
+
+ // Set width or height in case we need to calculate only one dimension
+ if (!current.autoWidth) {
+ inner.width( origWidth );
+ }
+
+ if (!current.autoHeight) {
+ inner.height( origHeight );
+ }
+
+ if (current.autoWidth) {
+ origWidth = inner.width();
+ }
+
+ if (current.autoHeight) {
+ origHeight = inner.height();
+ }
+
+ inner.removeClass( 'fancybox-tmp' );
+ }
+
+ width = getScalar( origWidth );
+ height = getScalar( origHeight );
+
+ ratio = origWidth / origHeight;
+
+ // Calculations for the content
+ minWidth = getScalar(isPercentage(minWidth) ? getScalar(minWidth, 'w') - wSpace : minWidth);
+ maxWidth = getScalar(isPercentage(maxWidth) ? getScalar(maxWidth, 'w') - wSpace : maxWidth);
+
+ minHeight = getScalar(isPercentage(minHeight) ? getScalar(minHeight, 'h') - hSpace : minHeight);
+ maxHeight = getScalar(isPercentage(maxHeight) ? getScalar(maxHeight, 'h') - hSpace : maxHeight);
+
+ // These will be used to determine if wrap can fit in the viewport
+ origMaxWidth = maxWidth;
+ origMaxHeight = maxHeight;
+
+ if (current.fitToView) {
+ maxWidth = Math.min(viewport.w - wSpace, maxWidth);
+ maxHeight = Math.min(viewport.h - hSpace, maxHeight);
+ }
+
+ maxWidth_ = viewport.w - wMargin;
+ maxHeight_ = viewport.h - hMargin;
+
+ if (current.aspectRatio) {
+ if (width > maxWidth) {
+ width = maxWidth;
+ height = getScalar(width / ratio);
+ }
+
+ if (height > maxHeight) {
+ height = maxHeight;
+ width = getScalar(height * ratio);
+ }
+
+ if (width < minWidth) {
+ width = minWidth;
+ height = getScalar(width / ratio);
+ }
+
+ if (height < minHeight) {
+ height = minHeight;
+ width = getScalar(height * ratio);
+ }
+
+ } else {
+ width = Math.max(minWidth, Math.min(width, maxWidth));
+
+ if (current.autoHeight && current.type !== 'iframe') {
+ inner.width( width );
+
+ height = inner.height();
+ }
+
+ height = Math.max(minHeight, Math.min(height, maxHeight));
+ }
+
+ // Try to fit inside viewport (including the title)
+ if (current.fitToView) {
+ inner.width( width ).height( height );
+
+ wrap.width( width + wPadding );
+
+ // Real wrap dimensions
+ width_ = wrap.width();
+ height_ = wrap.height();
+
+ if (current.aspectRatio) {
+ while ((width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight) {
+ if (steps++ > 19) {
+ break;
+ }
+
+ height = Math.max(minHeight, Math.min(maxHeight, height - 10));
+ width = getScalar(height * ratio);
+
+ if (width < minWidth) {
+ width = minWidth;
+ height = getScalar(width / ratio);
+ }
+
+ if (width > maxWidth) {
+ width = maxWidth;
+ height = getScalar(width / ratio);
+ }
+
+ inner.width( width ).height( height );
+
+ wrap.width( width + wPadding );
+
+ width_ = wrap.width();
+ height_ = wrap.height();
+ }
+
+ } else {
+ width = Math.max(minWidth, Math.min(width, width - (width_ - maxWidth_)));
+ height = Math.max(minHeight, Math.min(height, height - (height_ - maxHeight_)));
+ }
+ }
+
+ if (scrollOut && scrolling === 'auto' && height < origHeight && (width + wPadding + scrollOut) < maxWidth_) {
+ width += scrollOut;
+ }
+
+ inner.width( width ).height( height );
+
+ wrap.width( width + wPadding );
+
+ width_ = wrap.width();
+ height_ = wrap.height();
+
+ canShrink = (width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight;
+ canExpand = current.aspectRatio ? (width < origMaxWidth && height < origMaxHeight && width < origWidth && height < origHeight) : ((width < origMaxWidth || height < origMaxHeight) && (width < origWidth || height < origHeight));
+
+ $.extend(current, {
+ dim : {
+ width : getValue( width_ ),
+ height : getValue( height_ )
+ },
+ origWidth : origWidth,
+ origHeight : origHeight,
+ canShrink : canShrink,
+ canExpand : canExpand,
+ wPadding : wPadding,
+ hPadding : hPadding,
+ wrapSpace : height_ - skin.outerHeight(true),
+ skinSpace : skin.height() - height
+ });
+
+ if (!iframe && current.autoHeight && height > minHeight && height < maxHeight && !canExpand) {
+ inner.height('auto');
+ }
+ },
+
+ _getPosition: function (onlyAbsolute) {
+ var current = F.current,
+ viewport = F.getViewport(),
+ margin = current.margin,
+ width = F.wrap.width() + margin[1] + margin[3],
+ height = F.wrap.height() + margin[0] + margin[2],
+ rez = {
+ position: 'absolute',
+ top : margin[0],
+ left : margin[3]
+ };
+
+ if (current.autoCenter && current.fixed && !onlyAbsolute && height <= viewport.h && width <= viewport.w) {
+ rez.position = 'fixed';
+
+ } else if (!current.locked) {
+ rez.top += viewport.y;
+ rez.left += viewport.x;
+ }
+
+ rez.top = getValue(Math.max(rez.top, rez.top + ((viewport.h - height) * current.topRatio)));
+ rez.left = getValue(Math.max(rez.left, rez.left + ((viewport.w - width) * current.leftRatio)));
+
+ return rez;
+ },
+
+ _afterZoomIn: function () {
+ var current = F.current;
+
+ if (!current) {
+ return;
+ }
+
+ F.isOpen = F.isOpened = true;
+
+ F.wrap.css('overflow', 'visible').addClass('fancybox-opened');
+
+ F.update();
+
+ // Assign a click event
+ if ( current.closeClick || (current.nextClick && F.group.length > 1) ) {
+ F.inner.css('cursor', 'pointer').bind('click.fb', function(e) {
+ if (!$(e.target).is('a') && !$(e.target).parent().is('a')) {
+ e.preventDefault();
+
+ F[ current.closeClick ? 'close' : 'next' ]();
+ }
+ });
+ }
+
+ // Create a close button
+ if (current.closeBtn) {
+ $(current.tpl.closeBtn).appendTo(F.skin).bind('click.fb', function(e) {
+ e.preventDefault();
+
+ F.close();
+ });
+ }
+
+ // Create navigation arrows
+ if (current.arrows && F.group.length > 1) {
+ if (current.loop || current.index > 0) {
+ $(current.tpl.prev).appendTo(F.outer).bind('click.fb', F.prev);
+ }
+
+ if (current.loop || current.index < F.group.length - 1) {
+ $(current.tpl.next).appendTo(F.outer).bind('click.fb', F.next);
+ }
+ }
+
+ F.trigger('afterShow');
+
+ // Stop the slideshow if this is the last item
+ if (!current.loop && current.index === current.group.length - 1) {
+ F.play( false );
+
+ } else if (F.opts.autoPlay && !F.player.isActive) {
+ F.opts.autoPlay = false;
+
+ F.play();
+ }
+ },
+
+ _afterZoomOut: function ( obj ) {
+ obj = obj || F.current;
+
+ $('.fancybox-wrap').trigger('onReset').remove();
+
+ $.extend(F, {
+ group : {},
+ opts : {},
+ router : false,
+ current : null,
+ isActive : false,
+ isOpened : false,
+ isOpen : false,
+ isClosing : false,
+ wrap : null,
+ skin : null,
+ outer : null,
+ inner : null
+ });
+
+ F.trigger('afterClose', obj);
+ }
+ });
+
+ /*
+ * Default transitions
+ */
+
+ F.transitions = {
+ getOrigPosition: function () {
+ var current = F.current,
+ element = current.element,
+ orig = current.orig,
+ pos = {},
+ width = 50,
+ height = 50,
+ hPadding = current.hPadding,
+ wPadding = current.wPadding,
+ viewport = F.getViewport();
+
+ if (!orig && current.isDom && element.is(':visible')) {
+ orig = element.find('img:first');
+
+ if (!orig.length) {
+ orig = element;
+ }
+ }
+
+ if (isQuery(orig)) {
+ pos = orig.offset();
+
+ if (orig.is('img')) {
+ width = orig.outerWidth();
+ height = orig.outerHeight();
+ }
+
+ } else {
+ pos.top = viewport.y + (viewport.h - height) * current.topRatio;
+ pos.left = viewport.x + (viewport.w - width) * current.leftRatio;
+ }
+
+ if (F.wrap.css('position') === 'fixed' || current.locked) {
+ pos.top -= viewport.y;
+ pos.left -= viewport.x;
+ }
+
+ pos = {
+ top : getValue(pos.top - hPadding * current.topRatio),
+ left : getValue(pos.left - wPadding * current.leftRatio),
+ width : getValue(width + wPadding),
+ height : getValue(height + hPadding)
+ };
+
+ return pos;
+ },
+
+ step: function (now, fx) {
+ var ratio,
+ padding,
+ value,
+ prop = fx.prop,
+ current = F.current,
+ wrapSpace = current.wrapSpace,
+ skinSpace = current.skinSpace;
+
+ if (prop === 'width' || prop === 'height') {
+ ratio = fx.end === fx.start ? 1 : (now - fx.start) / (fx.end - fx.start);
+
+ if (F.isClosing) {
+ ratio = 1 - ratio;
+ }
+
+ padding = prop === 'width' ? current.wPadding : current.hPadding;
+ value = now - padding;
+
+ F.skin[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) ) );
+ F.inner[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) - (skinSpace * ratio) ) );
+ }
+ },
+
+ zoomIn: function () {
+ var current = F.current,
+ startPos = current.pos,
+ effect = current.openEffect,
+ elastic = effect === 'elastic',
+ endPos = $.extend({opacity : 1}, startPos);
+
+ // Remove "position" property that breaks older IE
+ delete endPos.position;
+
+ if (elastic) {
+ startPos = this.getOrigPosition();
+
+ if (current.openOpacity) {
+ startPos.opacity = 0.1;
+ }
+
+ } else if (effect === 'fade') {
+ startPos.opacity = 0.1;
+ }
+
+ F.wrap.css(startPos).animate(endPos, {
+ duration : effect === 'none' ? 0 : current.openSpeed,
+ easing : current.openEasing,
+ step : elastic ? this.step : null,
+ complete : F._afterZoomIn
+ });
+ },
+
+ zoomOut: function () {
+ var current = F.current,
+ effect = current.closeEffect,
+ elastic = effect === 'elastic',
+ endPos = {opacity : 0.1};
+
+ if (elastic) {
+ endPos = this.getOrigPosition();
+
+ if (current.closeOpacity) {
+ endPos.opacity = 0.1;
+ }
+ }
+
+ F.wrap.animate(endPos, {
+ duration : effect === 'none' ? 0 : current.closeSpeed,
+ easing : current.closeEasing,
+ step : elastic ? this.step : null,
+ complete : F._afterZoomOut
+ });
+ },
+
+ changeIn: function () {
+ var current = F.current,
+ effect = current.nextEffect,
+ startPos = current.pos,
+ endPos = { opacity : 1 },
+ direction = F.direction,
+ distance = 200,
+ field;
+
+ startPos.opacity = 0.1;
+
+ if (effect === 'elastic') {
+ field = direction === 'down' || direction === 'up' ? 'top' : 'left';
+
+ if (direction === 'down' || direction === 'right') {
+ startPos[ field ] = getValue(getScalar(startPos[ field ]) - distance);
+ endPos[ field ] = '+=' + distance + 'px';
+
+ } else {
+ startPos[ field ] = getValue(getScalar(startPos[ field ]) + distance);
+ endPos[ field ] = '-=' + distance + 'px';
+ }
+ }
+
+ // Workaround for http://bugs.jquery.com/ticket/12273
+ if (effect === 'none') {
+ F._afterZoomIn();
+
+ } else {
+ F.wrap.css(startPos).animate(endPos, {
+ duration : current.nextSpeed,
+ easing : current.nextEasing,
+ complete : F._afterZoomIn
+ });
+ }
+ },
+
+ changeOut: function () {
+ var previous = F.previous,
+ effect = previous.prevEffect,
+ endPos = { opacity : 0.1 },
+ direction = F.direction,
+ distance = 200;
+
+ if (effect === 'elastic') {
+ endPos[ direction === 'down' || direction === 'up' ? 'top' : 'left' ] = ( direction === 'up' || direction === 'left' ? '-' : '+' ) + '=' + distance + 'px';
+ }
+
+ previous.wrap.animate(endPos, {
+ duration : effect === 'none' ? 0 : previous.prevSpeed,
+ easing : previous.prevEasing,
+ complete : function () {
+ $(this).trigger('onReset').remove();
+ }
+ });
+ }
+ };
+
+ /*
+ * Overlay helper
+ */
+
+ F.helpers.overlay = {
+ defaults : {
+ closeClick : true, // if true, fancyBox will be closed when user clicks on the overlay
+ speedOut : 200, // duration of fadeOut animation
+ showEarly : true, // indicates if should be opened immediately or wait until the content is ready
+ css : {}, // custom CSS properties
+ locked : !isTouch, // if true, the content will be locked into overlay
+ fixed : true // if false, the overlay CSS position property will not be set to "fixed"
+ },
+
+ overlay : null, // current handle
+ fixed : false, // indicates if the overlay has position "fixed"
+ el : $('html'), // element that contains "the lock"
+
+ // Public methods
+ create : function(opts) {
+ opts = $.extend({}, this.defaults, opts);
+
+ if (this.overlay) {
+ this.close();
+ }
+
+ this.overlay = $('<div class="fancybox-overlay"></div>').appendTo( F.coming ? F.coming.parent : opts.parent );
+ this.fixed = false;
+
+ if (opts.fixed && F.defaults.fixed) {
+ this.overlay.addClass('fancybox-overlay-fixed');
+
+ this.fixed = true;
+ }
+ },
+
+ open : function(opts) {
+ var that = this;
+
+ opts = $.extend({}, this.defaults, opts);
+
+ if (this.overlay) {
+ this.overlay.unbind('.overlay').width('auto').height('auto');
+
+ } else {
+ this.create(opts);
+ }
+
+ if (!this.fixed) {
+ W.bind('resize.overlay', $.proxy( this.update, this) );
+
+ this.update();
+ }
+
+ if (opts.closeClick) {
+ this.overlay.bind('click.overlay', function(e) {
+ if ($(e.target).hasClass('fancybox-overlay')) {
+ if (F.isActive) {
+ F.close();
+ } else {
+ that.close();
+ }
+
+ return false;
+ }
+ });
+ }
+
+ this.overlay.css( opts.css ).show();
+ },
+
+ close : function() {
+ var scrollV, scrollH;
+
+ W.unbind('resize.overlay');
+
+ if (this.el.hasClass('fancybox-lock')) {
+ $('.fancybox-margin').removeClass('fancybox-margin');
+
+ scrollV = W.scrollTop();
+ scrollH = W.scrollLeft();
+
+ this.el.removeClass('fancybox-lock');
+
+ W.scrollTop( scrollV ).scrollLeft( scrollH );
+ }
+
+ $('.fancybox-overlay').remove().hide();
+
+ $.extend(this, {
+ overlay : null,
+ fixed : false
+ });
+ },
+
+ // Private, callbacks
+
+ update : function () {
+ var width = '100%', offsetWidth;
+
+ // Reset width/height so it will not mess
+ this.overlay.width(width).height('100%');
+
+ // jQuery does not return reliable result for IE
+ if (IE) {
+ offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth);
+
+ if (D.width() > offsetWidth) {
+ width = D.width();
+ }
+
+ } else if (D.width() > W.width()) {
+ width = D.width();
+ }
+
+ this.overlay.width(width).height(D.height());
+ },
+
+ // This is where we can manipulate DOM, because later it would cause iframes to reload
+ onReady : function (opts, obj) {
+ var overlay = this.overlay;
+
+ $('.fancybox-overlay').stop(true, true);
+
+ if (!overlay) {
+ this.create(opts);
+ }
+
+ if (opts.locked && this.fixed && obj.fixed) {
+ if (!overlay) {
+ this.margin = D.height() > W.height() ? $('html').css('margin-right').replace("px", "") : false;
+ }
+
+ obj.locked = this.overlay.append( obj.wrap );
+ obj.fixed = false;
+ }
+
+ if (opts.showEarly === true) {
+ this.beforeShow.apply(this, arguments);
+ }
+ },
+
+ beforeShow : function(opts, obj) {
+ var scrollV, scrollH;
+
+ if (obj.locked) {
+ if (this.margin !== false) {
+ $('*').filter(function(){
+ return ($(this).css('position') === 'fixed' && !$(this).hasClass("fancybox-overlay") && !$(this).hasClass("fancybox-wrap") );
+ }).addClass('fancybox-margin');
+
+ this.el.addClass('fancybox-margin');
+ }
+
+ scrollV = W.scrollTop();
+ scrollH = W.scrollLeft();
+
+ this.el.addClass('fancybox-lock');
+
+ W.scrollTop( scrollV ).scrollLeft( scrollH );
+ }
+
+ this.open(opts);
+ },
+
+ onUpdate : function() {
+ if (!this.fixed) {
+ this.update();
+ }
+ },
+
+ afterClose: function (opts) {
+ // Remove overlay if exists and fancyBox is not opening
+ // (e.g., it is not being open using afterClose callback)
+ //if (this.overlay && !F.isActive) {
+ if (this.overlay && !F.coming) {
+ this.overlay.fadeOut(opts.speedOut, $.proxy( this.close, this ));
+ }
+ }
+ };
+
+ /*
+ * Title helper
+ */
+
+ F.helpers.title = {
+ defaults : {
+ type : 'float', // 'float', 'inside', 'outside' or 'over',
+ position : 'bottom' // 'top' or 'bottom'
+ },
+
+ beforeShow: function (opts) {
+ var current = F.current,
+ text = current.title,
+ type = opts.type,
+ title,
+ target;
+
+ if ($.isFunction(text)) {
+ text = text.call(current.element, current);
+ }
+
+ if (!isString(text) || $.trim(text) === '') {
+ return;
+ }
+
+ title = $('<div class="fancybox-title fancybox-title-' + type + '-wrap">' + text + '</div>');
+
+ switch (type) {
+ case 'inside':
+ target = F.skin;
+ break;
+
+ case 'outside':
+ target = F.wrap;
+ break;
+
+ case 'over':
+ target = F.inner;
+ break;
+
+ default: // 'float'
+ target = F.skin;
+
+ title.appendTo('body');
+
+ if (IE) {
+ title.width( title.width() );
+ }
+
+ title.wrapInner('<span class="child"></span>');
+
+ //Increase bottom margin so this title will also fit into viewport
+ F.current.margin[2] += Math.abs( getScalar(title.css('margin-bottom')) );
+ break;
+ }
+
+ title[ (opts.position === 'top' ? 'prependTo' : 'appendTo') ](target);
+ }
+ };
+
+ // jQuery plugin initialization
+ $.fn.fancybox = function (options) {
+ var index,
+ that = $(this),
+ selector = this.selector || '',
+ run = function(e) {
+ var what = $(this).blur(), idx = index, relType, relVal;
+
+ if (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && !what.is('.fancybox-wrap')) {
+ relType = options.groupAttr || 'data-fancybox-group';
+ relVal = what.attr(relType);
+
+ if (!relVal) {
+ relType = 'rel';
+ relVal = what.get(0)[ relType ];
+ }
+
+ if (relVal && relVal !== '' && relVal !== 'nofollow') {
+ what = selector.length ? $(selector) : that;
+ what = what.filter('[' + relType + '="' + relVal + '"]');
+ idx = what.index(this);
+ }
+
+ options.index = idx;
+
+ // Stop an event from bubbling if everything is fine
+ if (F.open(what, options) !== false) {
+ e.preventDefault();
+ }
+ }
+ };
+
+ options = options || {};
+ index = options.index || 0;
+
+ if (!selector || options.live === false) {
+ that.unbind('click.fb-start').bind('click.fb-start', run);
+
+ } else {
+ D.undelegate(selector, 'click.fb-start').delegate(selector + ":not('.fancybox-item, .fancybox-nav')", 'click.fb-start', run);
+ }
+
+ this.filter('[data-fancybox-start=1]').trigger('click');
+
+ return this;
+ };
+
+ // Tests that need a body at doc ready
+ D.ready(function() {
+ var w1, w2;
+
+ if ( $.scrollbarWidth === undefined ) {
+ // http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth
+ $.scrollbarWidth = function() {
+ var parent = $('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo('body'),
+ child = parent.children(),
+ width = child.innerWidth() - child.height( 99 ).innerWidth();
+
+ parent.remove();
+
+ return width;
+ };
+ }
+
+ if ( $.support.fixedPosition === undefined ) {
+ $.support.fixedPosition = (function() {
+ var elem = $('<div style="position:fixed;top:20px;"></div>').appendTo('body'),
+ fixed = ( elem[0].offsetTop === 20 || elem[0].offsetTop === 15 );
+
+ elem.remove();
+
+ return fixed;
+ }());
+ }
+
+ $.extend(F.defaults, {
+ scrollbarWidth : $.scrollbarWidth(),
+ fixed : $.support.fixedPosition,
+ parent : $('body')
+ });
+
+ //Get real width of page scroll-bar
+ w1 = $(window).width();
+
+ H.addClass('fancybox-lock-test');
+
+ w2 = $(window).width();
+
+ H.removeClass('fancybox-lock-test');
+
+ $("<style type='text/css'>.fancybox-margin{margin-right:" + (w2 - w1) + "px;}</style>").appendTo("head");
+ });
+
+}(window, document, jQuery)); \ No newline at end of file
diff --git a/frontend/im/colors/js/jquery.mousewheel-3.0.6.pack.js b/frontend/im/colors/js/jquery.mousewheel-3.0.6.pack.js
new file mode 100644
index 0000000..e39a83a
--- /dev/null
+++ b/frontend/im/colors/js/jquery.mousewheel-3.0.6.pack.js
@@ -0,0 +1,13 @@
+/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
+ * Licensed under the MIT License (LICENSE.txt).
+ *
+ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
+ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
+ * Thanks to: Seamus Leahy for adding deltaX and deltaY
+ *
+ * Version: 3.0.6
+ *
+ * Requires: 1.2.2+
+ */
+(function(d){function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0,g=0,a=d.event.fix(b);a.type="mousewheel";b.wheelDelta&&(f=b.wheelDelta/120);b.detail&&(f=-b.detail/3);g=f;b.axis!==void 0&&b.axis===b.HORIZONTAL_AXIS&&(g=0,e=-1*f);b.wheelDeltaY!==void 0&&(g=b.wheelDeltaY/120);b.wheelDeltaX!==void 0&&(e=-1*b.wheelDeltaX/120);c.unshift(a,f,e,g);return(d.event.dispatch||d.event.handle).apply(this,c)}var c=["DOMMouseScroll","mousewheel"];if(d.event.fixHooks)for(var h=c.length;h;)d.event.fixHooks[c[--h]]=
+d.event.mouseHooks;d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=c.length;a;)this.addEventListener(c[--a],e,false);else this.onmousewheel=e},teardown:function(){if(this.removeEventListener)for(var a=c.length;a;)this.removeEventListener(c[--a],e,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery); \ No newline at end of file
diff --git a/frontend/im/colors/js/jquery.remember-state.js b/frontend/im/colors/js/jquery.remember-state.js
new file mode 100644
index 0000000..d695fbd
--- /dev/null
+++ b/frontend/im/colors/js/jquery.remember-state.js
@@ -0,0 +1,193 @@
+(function($) {
+ /* jQuery form remember state plugin
+ Name: rememberState
+ Version: 1.3.2
+ Description: When called on a form element, localStorage is used to
+ remember the values that have been input up to the point of either
+ saving or unloading. (closing window, navigating away, etc.) If
+ localStorage isn't available, nothing is bound or stored.
+ The plugin looks for an element with a class of remember_state to show
+ a note indicating there is stored data that can be repopulated by clicking
+ on the anchor within the remember_state container. If the element doesn't
+ exist, it is created and prepended to the form.
+ Usage: $("form").rememberState("my_object_name");
+ Notes: To trigger the deletion of a form's localStorage object from
+ outside the plugin, trigger the reset_state event on the form element
+ by using $("form").trigger("reset_state");
+ */
+ if (!window.localStorage || !window.JSON) {
+ if (console && console.log) {
+ !window.localStorage && console.log("ERROR: you browser does not support" +
+ " localStorage (use this polyfill https://gist.github.com/350433)");
+ !window.JSON&& console.log("ERROR: you browser does not support" +
+ " JSON (use this polyfill http://bestiejs.github.com/json3/)");
+ }
+ return $.fn.rememberState = function() { return this; };
+ }
+
+ var remember_state = {
+ name: "rememberState",
+ clearOnSubmit: true,
+ noticeDialog: (function() {
+ return $("<p />", {"class": "remember_state"})
+ .html('Do you want to <a href="#">restore your previously entered info</a>?');
+ })(),
+ ignore: null,
+ noticeSelector: ".remember_state",
+ use_ids: false,
+ objName: false,
+ clickNotice: function(e) {
+ var data = JSON.parse(localStorage.getItem(e.data.instance.objName)),
+ $f = $(this).closest("form"),
+ $e;
+ for (var i in data) {
+ $e = $f.find("[name=\"" + data[i].name + "\"]");
+ if ($e.is(":radio, :checkbox")) {
+ $e.filter("[value=" + data[i].value + "]").prop("checked", true);
+ }
+ else if ($e.is("select")) {
+ $e.find("[value=" + data[i].value + "]").prop("selected", true);
+ }
+ else {
+ $e.val(data[i].value);
+ }
+ $e.change();
+ }
+ e.data.instance.noticeDialog.remove();
+ e.preventDefault();
+ },
+ chooseStorageProp: function() {
+ if (this.$el.length > 1) {
+ if (console && console.warn) {
+ console.warn("WARNING: Cannot process more than one form with the same" +
+ " object. Attempting to use form IDs instead.");
+ }
+ this.objName = this.$el.attr("id");
+ }
+ },
+ errorNoID: function() {
+ if (console && console.log) {
+ console.log("ERROR: No form ID or object name. Add an ID or pass" +
+ " in an object name");
+ }
+ },
+ saveState: function(e) {
+ var instance = e.data.instance;
+ var values = instance.$el.serializeArray();
+ // jQuery doesn't currently support datetime-local inputs despite a
+ // comment by dmethvin stating the contrary:
+ // http://bugs.jquery.com/ticket/5667
+ // Manually storing input type until jQuery is patched
+ instance.$el.find("input[type='datetime-local']").each(function() {
+ var $i = $(this);
+ values.push({ name: $i.attr("name"), value: $i.val() });
+ });
+ values = instance.removeIgnored(values);
+ values.length && internals.setObject(instance.objName, values);
+ },
+ save: function() {
+ var instance = this;
+ if (!this.saveState) {
+ instance = this.data(remember_state.name);
+ }
+ instance.saveState({ data: { instance: instance } });
+ },
+ removeIgnored: function(values) {
+ var ignore = this.ignore;
+ if (!ignore) { return values; }
+ $.each(values, function(i, input) {
+ if ($.inArray(input.name, ignore) !== -1) {
+ values[i] = false;
+ }
+ });
+ values = $.grep(values, function(val) { return val; });
+ return values;
+ },
+ bindNoticeDialog: function() {
+ if (!this.noticeDialog.length || !this.noticeDialog.jquery) {
+ return;
+ }
+ this.noticeDialog.find("a").bind("click." + this.name, {
+ instance: this
+ }, this.clickNotice);
+ },
+ setName: function() {
+ this.objName = this.objName || this.$el.attr("id");
+ if (!this.objName) { this.errorNoID(); }
+ },
+ bindResetEvents: function() {
+ if (this.clearOnSubmit) {
+ this.$el.bind("submit." + this.name, function() {
+ this.$el.trigger("reset_state");
+ $(window).unbind("unload." + this.name);
+ });
+ }
+
+ this.$el.bind("reset_state." + this.name, function() {
+ localStorage.removeItem(this.objName);
+ });
+ this.$el.find(":reset").bind("click." + this.name, function() {
+ $(this).closest("form").trigger("reset_state");
+ });
+ },
+ createNoticeDialog: function() {
+ if (localStorage[this.objName]) {
+ if (this.noticeDialog.length && this.noticeDialog.jquery) {
+ this.noticeDialog.prependTo(this.$el);
+ }
+ else {
+ this.$el.find(this.noticeSelector).show();
+ }
+ }
+ },
+ destroy: function(destroy_local_storage) {
+ var namespace = "." + this.name;
+ this.$el.unbind(namespace).find(":reset").unbind(namespace);
+ $(window).unbind(namespace);
+ destroy_local_storage && localStorage.removeItem(this.objName);
+ },
+ init: function() {
+ this.bindNoticeDialog();
+ this.setName();
+
+ if (!this.objName) { return; }
+
+ this.bindResetEvents();
+ this.createNoticeDialog();
+
+ $(window).bind("unload." + this.name, { instance: this }, this.saveState);
+ }
+ };
+
+ var internals = {
+ setObject: function(key, value) { localStorage[key] = JSON.stringify(value); },
+ getObject: function(key) { return JSON.parse(localStorage[key]); },
+ createPlugin: function(plugin) {
+ $.fn[plugin.name] = function(opts) {
+ var $els = this,
+ method = $.isPlainObject(opts) || !opts ? "" : opts,
+ args = arguments;
+ if (method && plugin[method]) {
+ $els.each(function(i) {
+ plugin[method].apply($els.eq(i).data(plugin.name), Array.prototype.slice.call(args, 1));
+ });
+ }
+ else if (!method) {
+ $els.each(function(i) {
+ var plugin_instance = $.extend(true, {
+ $el: $els.eq(i)
+ }, plugin, opts);
+ $els.eq(i).data(plugin.name, plugin_instance);
+ plugin_instance.init();
+ });
+ }
+ else {
+ $.error('Method ' + method + ' does not exist on jQuery.' + plugin.name);
+ }
+ return $els;
+ };
+ }
+ };
+
+ internals.createPlugin(remember_state);
+})(jQuery);
diff --git a/frontend/im/colors/js/jquery.remember-state.pack.js b/frontend/im/colors/js/jquery.remember-state.pack.js
new file mode 100644
index 0000000..3aec315
--- /dev/null
+++ b/frontend/im/colors/js/jquery.remember-state.pack.js
@@ -0,0 +1 @@
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(2($){4(!k.h||!k.n){4(8&&8.s){!k.h&&8.s("B: C L D E M"+" h (F 0 N 1q://1r.O.P/1s)");!k.n&&8.s("B: C L D E M"+" n (F 0 N 1t://1u.O.P/1v/)")}9 $.Q.R=2(){9 0}}6 f={3:"R",S:w,j:(2(){9 $("<p />",{"1w":"T"}).1x(\'1y C 1z U <a 1A="#">1B 1C 1D 1E 1F</a>?\')})(),V:1G,W:".T",1H:G,7:G,X:2(e){6 a=n.Y(h.1I(e.l.o.7)),$f=$(0).Z("t"),$e;1J(6 i 10 a){$e=$f.m("[3=\\""+a[i].3+"\\"]");4($e.11(":1K, :1L")){$e.1M("[q="+a[i].q+"]").12("1N",w)}u 4($e.11("1O")){$e.m("[q="+a[i].q+"]").12("1P",w)}u{$e.13(a[i].q)}$e.1Q()}e.l.o.j.1R();e.1S()},1T:2(){4(0.$5.x>1){4(8&&8.14){8.14("1U: 1V 1W 1X 1Y 1Z t 20 21 22"+" H. 23 U F t 24 25.")}0.7=0.$5.I("15")}},16:2(){4(8&&8.s){8.s("B: 26 t 17 18 H 3. 27 19 17 18 28"+" 10 19 H 3")}},y:2(e){6 b=e.l.o;6 c=b.$5.29();b.$5.m("2a[2b=\'2c-2d\']").z(2(){6 a=$(0);c.2e({3:a.I("3"),q:a.13()})});c=b.1a(c);c.x&&g.1b(b.7,c)},2f:2(){6 a=0;4(!0.y){a=0.l(f.3)}a.y({l:{o:a}})},1a:2(b){6 c=0.V;4(!c){9 b}$.z(b,2(i,a){4($.2g(a.3,c)!==-1){b[i]=G}});b=$.2h(b,2(a){9 a});9 b},1c:2(){4(!0.j.x||!0.j.1d){9}0.j.m("a").v("1e."+0.3,{o:0},0.X)},1f:2(){0.7=0.7||0.$5.I("15");4(!0.7){0.16()}},1g:2(){4(0.S){0.$5.v("2i."+0.3,2(){0.$5.1h("J");$(k).A("1i."+0.3)})}0.$5.v("J."+0.3,2(){h.1j(0.7)});0.$5.m(":1k").v("1e."+0.3,2(){$(0).Z("t").1h("J")})},1l:2(){4(h[0.7]){4(0.j.x&&0.j.1d){0.j.2j(0.$5)}u{0.$5.m(0.W).2k()}}},2l:2(a){6 b="."+0.3;0.$5.A(b).m(":1k").A(b);$(k).A(b);a&&h.1j(0.7)},1m:2(){0.1c();0.1f();4(!0.7){9}0.1g();0.1l();$(k).v("1i."+0.3,{o:0},0.y)}};6 g={1b:2(a,b){h[a]=n.2m(b)},2n:2(a){9 n.Y(h[a])},1n:2(d){$.Q[d.3]=2(b){6 c=0,r=$.2o(b)||!b?"":b,1o=2p;4(r&&d[r]){c.z(2(i){d[r].2q(c.K(i).l(d.3),2r.2s.2t.2u(1o,1))})}u 4(!r){c.z(2(i){6 a=$.2v(w,{$5:c.K(i)},d,b);c.K(i).l(d.3,a);a.1m()})}u{$.2w(\'2x \'+r+\' D E 2y 2z 1p.\'+d.3)}9 c}}};g.1n(f)})(1p);',62,160,'this||function|name|if|el|var|objName|console|return||||||||localStorage||noticeDialog|window|data|find|JSON|instance||value|method|log|form|else|bind|true|length|saveState|each|unbind|ERROR|you|does|not|use|false|object|attr|reset_state|eq|browser|support|polyfill|github|com|fn|rememberState|clearOnSubmit|remember_state|to|ignore|noticeSelector|clickNotice|parse|closest|in|is|prop|val|warn|id|errorNoID|ID|or|an|removeIgnored|setObject|bindNoticeDialog|jquery|click|setName|bindResetEvents|trigger|unload|removeItem|reset|createNoticeDialog|init|createPlugin|args|jQuery|https|gist|350433|http|bestiejs|json3|class|html|Do|want|href|restore|your|previously|entered|info|null|use_ids|getItem|for|radio|checkbox|filter|checked|select|selected|change|remove|preventDefault|chooseStorageProp|WARNING|Cannot|process|more|than|one|with|the|same|Attempting|IDs|instead|No|Add|pass|serializeArray|input|type|datetime|local|push|save|inArray|grep|submit|prependTo|show|destroy|stringify|getObject|isPlainObject|arguments|apply|Array|prototype|slice|call|extend|error|Method|exist|on'.split('|'),0,{}))
diff --git a/frontend/im/colors_iframe.js b/frontend/im/colors_iframe.js
new file mode 100644
index 0000000..43fd5f2
--- /dev/null
+++ b/frontend/im/colors_iframe.js
@@ -0,0 +1,45 @@
+
+
+
+
+function launch_iframe(input_target){
+ $.fancybox.open({
+ href : '/im/colors/index.html',
+ width : 1100, // set the width
+ height : 710,
+ fitToView : true,
+ autoDimensions:false,
+ autoSize:false,
+ type : 'iframe',
+ closeBtn : false,
+ padding : 5,
+ beforeShow : function(){
+ $('.fancybox-iframe').contents().find('#submitvalue').click(function(){
+ $('.fancybox-iframe').contents().find('form').submit();
+ $.fancybox.close();
+ });
+ },
+ beforeClose : function(){
+ x = $('.fancybox-iframe').contents().find('#namespace').val();
+ },
+ afterClose: function(){
+ $(input_target).val(x);
+ }
+ });
+}
+$(document).ready(function(){
+ if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
+ return;
+ }
+ var element_list = [".img-white", ".img-black", ".img-subtract"]
+ element_list.forEach(
+ function(l){
+ console.log("a"+l)
+ $("a"+l).click(function(event){
+ event.preventDefault();
+ launch_iframe("input"+l)
+ });
+ }
+ )
+
+})
diff --git a/frontend/im/df.html b/frontend/im/df.html
new file mode 100755
index 0000000..9dcb486
--- /dev/null
+++ b/frontend/im/df.html
@@ -0,0 +1,10 @@
+<img src="df.png" width="388" height="171">
+<h1>We are totally running low on disk space!!!!!!!!!1</h1>
+<h2 style="font-weight: normal;white-space:pre">I have a plan to host everything on S3 but I have to find a block of time to move it over.
+There is a lot competing for my attention right now so this isn't gonna happen right away.
+If U use Photoblaster a lot please restrain yourself like ration your use.
+Not saying don't use it but like just be mindful k?
+I love what U make bb U blow my mind every day like whoa.
+</h2>
+<div style="font-size: 150px; width: 100%; text-align: right">love jules</div>
+
diff --git a/frontend/im/df.png b/frontend/im/df.png
new file mode 100755
index 0000000..c0fda7f
--- /dev/null
+++ b/frontend/im/df.png
Binary files differ
diff --git a/frontend/im/gallery/.htaccess b/frontend/im/gallery/.htaccess
new file mode 100755
index 0000000..2617f79
--- /dev/null
+++ b/frontend/im/gallery/.htaccess
@@ -0,0 +1,2 @@
+DirectoryIndex /cgi-bin/im/gallery
+
diff --git a/frontend/im/gallery/pep/.htaccess b/frontend/im/gallery/pep/.htaccess
new file mode 100755
index 0000000..74017fd
--- /dev/null
+++ b/frontend/im/gallery/pep/.htaccess
@@ -0,0 +1,2 @@
+DirectoryIndex /cgi-bin/im/peppergallery
+
diff --git a/frontend/im/gallery_style.css b/frontend/im/gallery_style.css
new file mode 100755
index 0000000..2d78a0e
--- /dev/null
+++ b/frontend/im/gallery_style.css
@@ -0,0 +1,51 @@
+/**** Isotope Filtering ****/
+
+.isotope-item {
+ z-index: 2;
+}
+
+.isotope-hidden.isotope-item {
+ pointer-events: none;
+ z-index: 1;
+}
+
+/**** Isotope CSS3 transitions ****/
+
+.isotope,
+.isotope .isotope-item {
+ -webkit-transition-duration: 0.3s;
+ -moz-transition-duration: 0.3s;
+ -ms-transition-duration: 0.3s;
+ -o-transition-duration: 0.3s;
+ transition-duration: 0.3s;
+}
+
+
+.isotope {
+ -webkit-transition-property: height, width;
+ -moz-transition-property: height, width;
+ -ms-transition-property: height, width;
+ -o-transition-property: height, width;
+ transition-property: height, width;
+}
+
+.isotope .isotope-item {
+ -webkit-transition-property: -webkit-transform, opacity;
+ -moz-transition-property: -moz-transform, opacity;
+ -ms-transition-property: -ms-transform, opacity;
+ -o-transition-property: -o-transform, opacity;
+ transition-property: transform, opacity;
+}
+
+/**** disabling Isotope CSS3 transitions ****/
+
+.isotope.no-transition,
+.isotope.no-transition .isotope-item,
+.isotope .isotope-item.no-transition {
+ -webkit-transition-duration: 0s;
+ -moz-transition-duration: 0s;
+ -ms-transition-duration: 0s;
+ -o-transition-duration: 0s;
+ transition-duration: 0s;
+}
+
diff --git a/frontend/im/gradient.html b/frontend/im/gradient.html
new file mode 100755
index 0000000..6b451bb
--- /dev/null
+++ b/frontend/im/gradient.html
@@ -0,0 +1,402 @@
+<!doctype html>
+<html>
+<head>
+<title>PHOTOBLASTER</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta property="og:title" content="PHOTOBLASTER"/>
+<meta property="og:type" content="website"/>
+<meta property="og:url" content="http://asdf.us/im/"/>
+<meta property="og:image" content="http://asdf.us/im/6e/sparklebling1_1310021111_1310071704.gif" />
+<meta property="og:site_name" content="asdf.us"/>
+<meta property="og:description" content=""/>
+<meta property="fb:admins" content="100001923956223,1709246"/>
+<style type="text/css">
+*
+ {
+ padding: 0;
+ margin: 0;
+ font-family: serif;
+ font-size: 16px;
+background-image: -webkit-gradient(
+ linear,
+ left bottom,
+ left top,
+ color-stop(0.01, #480925),
+ color-stop(0.51, #7E8585)
+);
+background-image: -moz-linear-gradient(
+ center bottom,
+ #480925 1%,
+ #7E8585 51%
+);
+
+
+ }
+body
+ {
+// overflow: hidden;
+background-image: -webkit-gradient(
+ linear,
+ left bottom,
+ left top,
+ color-stop(0.01, #480925),
+ color-stop(0.51, #7E8585)
+);
+background-image: -moz-linear-gradient(
+ center bottom,
+ #480925 1%,
+ #7E8585 51%
+);
+
+
+// background-color: red;
+ }
+#controls,#result
+ {
+ display: inline-block;
+ padding: 10px;
+ width: 430px;
+ position: absolute;
+ }
+#controls
+ {
+ font-size: 14px;
+ top: 0; left: 0;
+ max-height: 450px;
+ z-index: 5;
+ }
+#result
+ {
+ background-color: #d6d0d0;
+ top: 10px; left: 480px;
+ display: none;
+ z-index: 5;
+ }
+#instructions
+ {
+ position: absolute;
+ bottom: 10px;
+ left: 10px;
+ line-height: 18px;
+ z-index: 1;
+ }
+p
+ {
+// background-color: #fff;
+ padding: 10px;
+ font-size: 14px;
+ width: 430px;
+ display: block;
+ }
+#gallery-link
+ {
+ background-color: #fff;
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ padding: 10px;
+ z-index: 10;
+ }
+.error
+ {
+ color: red;
+ font-size: 20px;
+ }
+a
+ {
+ color: #b4d;
+ font-weight: bold;
+ }
+label
+ {
+ display: inline-block;
+ width: 190px;
+ padding-right: 10px;
+ text-align: right;
+ }
+input[type=text]
+ {
+ width: 100px;
+ }
+#img-url,#output-url,#img-background
+ {
+ width: 200px;
+ }
+#img-fuzz,#img-width,#img-height,#img-brightness,#img-saturation,#img-contrast,#img-hue,#img-rotate
+ {
+ width: 50px;
+ text-align: right;
+ }
+button
+ {
+ padding: 2px 5px;
+ font-size: 16px;
+ }
+#result img
+ {
+ max-width: 400px;
+ max-height: 400px;
+ }
+#output-cmd
+ {
+ font-size: 12px;
+ white-space: pre;
+ }
+.shim
+ {
+ height: 10px;
+ clear: both;
+ display: block;
+ }
+#output-url
+ {
+ width: 320px;
+ }
+#likebutton
+ {
+ position: absolute;
+ bottom: 10px;
+ right: 10px;
+ width: 350px;
+ background-color: #fff;
+ padding: 10px;
+ color: #ddd;
+ font-family: trebuchet ms, sans-serif;
+ }
+</style>
+<body>
+<div id="controls">
+<p>
+ <label>IMAGE URL</label>
+ <input type="text" id="img-url" />
+ <br/>
+
+
+ <label>define a width</label>
+ <input type="text" id="img-width" /><small>px</small>
+ <br/>
+
+ <label>define a height</label>
+ <input type="text" id="img-height" /><small>px</small>
+ <br/>
+
+ <span class="shim"></span>
+
+ <label>first color</label>
+ <input type="text" id="first-color" value="" />
+ <br/>
+
+ <label>second color</label>
+ <input type="text" id="second-color" value="" />
+ <br/>
+
+ <span class="shim"></span>
+
+
+ <label>brightness <small>(0-200)</small></label>
+ <input type="text" id="img-brightness" value="" />
+ <br/>
+
+<!--
+ <label>contrast <small>(0-200)</small></label>
+ <input type="text" id="img-contrast" value="" />
+ <br/>
+-->
+
+ <span class="shim"></span>
+
+ <label>flip horizontally?</label>
+ <input type="checkbox" id="img-flop" value="1" />
+ <br/>
+
+ <label>flip vertically?</label>
+ <input type="checkbox" id="img-flip" value="1" />
+ <br/>
+
+ <label>rotate <small>(0-360)</small></label>
+ <input type="text" id="img-rotate" value="" />&deg;
+ <br/>
+
+ <label>gradient type</label>
+ <select id="gradient-type">
+ <option selected="selected">Over</option>
+ <option>ATop</option>
+ <option>Dst_Over</option>
+ <option>Dst_In</option>
+ <option>Dst_Out</option>
+ <option>Multiply</option>
+ <option>Screen</option>
+ <option>Divide</option>
+ <option>Plus</option>
+ <option>Difference</option>
+ <option>Exclusion</option>
+ <option>Lighten</option>
+ <option>Darken</option>
+ <option>Overlay</option>
+ <option>Hard_Light</option>
+ <option>Soft_Light</option>
+ <option>Pegtop_Light</option>
+ <option>Linear_Light</option>
+ <option>Vivid_Light</option>
+ <option>Pin_Light</option>
+ <option>Linear_Dodge</option>
+ <option>Linear_Burn</option>
+ <option>Color_Dodge</option>
+ <option>Color_Burn</option>
+ </select>
+
+ <label>output format</label>
+ <select id="img-format">
+ <option selected="selected">gif</option>
+ <option>jpg</option>
+ <option>png</option>
+ </select>
+-->
+
+ <span class="shim"></span>
+
+ <label>your name</label>
+ <input type="text" id="img-name" />
+ <br/>
+
+ <span class="shim"></span>
+
+ <label>&nbsp;</label>
+ <button id="img-generate">GENERATE</button>
+</p>
+
+ <span class="shim"></span>
+ <p>
+ See what people are making &rarr; <a href="/im/gallery/">Image Gallery</a><br/>
+ <span class="shim"></span>
+ Some really cool photoblasts &rarr; <a href="http://photoblaster.tumblr.com/">Photoblaster Tumblr</a>
+ </p>
+<br>
+ <p>
+ <span class="shim"></span>
+ Go back to the editor &rarr; <a href"/im/">Photoblaster Editor</a></br>
+</div>
+
+
+<div id="result">
+ &rarr; <input type="text" id="output-url"/><br/>
+ <span id="output-cmd"></span><br/>
+
+ <img id="output-img" />
+</div>
+
+<div id="instructions">
+ <p>
+ Define a width and height, and choose colors for the gradient. You can also choose the gradient style.
+ <span class="shim"></span>
+ Specify colors using hex codes, or consult the list of <a href="colors.html" target="_blank">Color Names</a>.
+ </p>
+</div>
+
+<div id="likebutton">
+<div id="fb-root" style="background-color: transparent;"></div><script src="http://connect.facebook.net/en_US/all.js#appId=236917449658413&amp;xfbml=1"></script><fb:like href="http://asdf.us/im/" send="false" width="347" show_faces="true" colorscheme="light" font="" style="background-color: transparent;"></fb:like>
+</div>
+
+</body>
+<script type="text/javascript" src="/js/jquery.js"></script>
+<script type="text/javascript">
+var Main =
+ {
+ API_HEADER: "#@im",
+ enter: function (e)
+ {
+ if (e.keyCode === 13)
+ Main.go()
+ },
+ go: function ()
+ {
+ $("#output-cmd").html('generating...').show()
+ $("#result").show()
+ var data =
+ {
+ url: $("#img-url").val(),
+ transparent: $('#img-transparent:checked').val() !== undefined ? "true" : "false",
+ flip: $('#img-flip:checked').val() !== undefined ? "true" : "false",
+ flop: $('#img-flop:checked').val() !== undefined ? "true" : "false",
+ rotate: $("#img-rotate").val(),
+ subtract: $("#img-subtract").val(),
+ fuzz: $("#img-fuzz").val(),
+ width: $("#img-width").val(),
+ height: $("#img-height").val(),
+ black: $("#img-black").val(),
+ white: $("#img-white").val(),
+ brightness: $("#img-brightness").val(),
+ saturation: $("#img-saturation").val(),
+ hue: $("#img-hue").val(),
+ contrast: $("#img-contrast").val(),
+ background: $("#img-background").val(),
+ // merge_early: $('#img-merge_early:checked').val() !== undefined ? "true" : "false",
+ compose: $('#img-compose :selected').text(),
+ // tile: $('#img-tile:checked').val() !== undefined ? "true" : "false",
+ format: $('#img-format :selected').text(),
+ name: $("#img-name").val(),
+ }
+ if (data.name.length > 0)
+ document.cookie = "imname="+data.name+";path=/;domain=.asdf.us;max-age=1086400"
+ $.post("/cgi-bin/im/generate", data, Main.callback)
+ },
+ error: function (s)
+ {
+ $("#output-cmd").html("<span class='error'>ERROR: " + s + "</span>").show()
+ $("#output-url").hide()
+ $("#output-img").hide()
+ },
+ callback: function (raw)
+ {
+ lines = raw.split("\n")
+ if (lines[0] !== Main.API_HEADER)
+ return Main.error("problem loading API")
+ if (lines[1].indexOf("ERROR\t") === 0)
+ return Main.error(lines[1].split("\t")[1])
+
+ // $("#output-cmd").html(lines[1]+"<br/>"+lines[2])
+ // $("#output-cmd").hide()
+ $("#output-cmd").html("size: "+Main.filesize(lines[4])+"<br/>"+(lines[5].replace(" ", " x ").replace(/'/g,"").replace(',',"")))
+ $("#output-url").val(lines[3])
+ $("#output-img").hide().attr("src", lines[3]).fadeIn(700)
+ },
+ filesize: function (size)
+ {
+ if (size < 1024)
+ return size + " bytes"
+ if (size < 1024 * 1024)
+ return Math.floor (size/1024) + " KB"
+ else
+ return Math.floor (size/(1024*1024)) + " MB"
+ },
+ cookie: function ()
+ {
+ if (document.cookie)
+ {
+ var cookies = document.cookie.split(";")
+ for (i in cookies)
+ {
+ var cookie = cookies[i].split("=")
+ if (cookie[0].indexOf("imname") !== -1)
+ {
+ if (cookie[1] !== 'false' && cookie[1] !== 'undefined' && cookie[1].length)
+ {
+ return cookie[1]
+ }
+ }
+ }
+ }
+ return ""
+ },
+ init: function ()
+ {
+ var name = Main.cookie ()
+ $("#img-name").val(name)
+ $("#img-generate").bind("click", Main.go)
+ $("div input[type=text]").bind("keydown", Main.enter)
+ },
+ }
+Main.init ()
+</script>
+</html>
+
diff --git a/frontend/im/imcupbg.jpg b/frontend/im/imcupbg.jpg
new file mode 100755
index 0000000..b3cf3f5
--- /dev/null
+++ b/frontend/im/imcupbg.jpg
Binary files differ
diff --git a/frontend/im/index.html b/frontend/im/index.html
new file mode 100755
index 0000000..9a14e27
--- /dev/null
+++ b/frontend/im/index.html
@@ -0,0 +1,569 @@
+<!doctype html>
+<html>
+<head>
+<title>PHOTOBLASTER</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta property="og:title" content="PHOTOBLASTER"/>
+<meta property="og:type" content="website"/>
+<meta property="og:url" content="http://asdf.us/im/"/>
+<meta property="og:image" content="http://asdf.us/im/6e/sparklebling1_1310021111_1310071704.gif" />
+<meta property="og:site_name" content="asdf.us"/>
+<meta property="og:description" content="Paste a link into the first box, then use the other settings to colorize, distort, add transparency and a background."/>
+<meta property="fb:admins" content="100001923956223,1709246"/>
+<!--FOR THE COLORS IFRAME-->
+<link rel="stylesheet" type="text/css" href="/im/colors/css/jquery.fancybox.css?v=2.1.5" media="screen" />
+
+<style type="text/css">
+*
+ {
+ padding: 0;
+ margin: 0;
+ font-family: sans-serif;
+ }
+body
+ {
+ background-color: #efedee;
+ // background-color: #838388;
+ color: #555;
+ }
+#down_for_maintenance{
+ position: absolute;
+ background: url("http://asdf.us/impattern/patterns/38.png");
+ z-index:2000;
+ height: 100%;
+ width: 100%;
+ top: 0;
+ left:0;
+ display: none;
+}
+#down_for_maintenance > span{
+ background: white;
+}
+#controls,#result
+ {
+ display: inline-block;
+ margin: 10px;
+ width: 430px;
+ float: left;
+ }
+#controls
+ {
+ font-size: 14px;
+ top: 0; left: 0;
+ z-index: 5;
+ }
+#result
+ {
+ background-color: #d6d0d0;
+// background-color: #131412;
+ margin-left: 20px;
+ padding: 10px;
+ display: none;
+ z-index: 5;
+ }
+#sendtoinput
+ {
+ font-size: 10px;
+ }
+#instructions
+ {
+ position: absolute;
+ bottom: 10px;
+ left: 10px;
+ line-height: 18px;
+ z-index: 1;
+ }
+p,form
+ {
+// background-color: #010101;
+ background-color: #fff;
+// background-image: url(imcupbg.jpg);
+ background-position: center center;
+ padding: 10px;
+ font-size: 14px;
+ width: 430px;
+ display: block;
+ }
+#gallery-link
+ {
+ background-color: #fff;
+// background-image: url(imcupbg.jpg);
+ background-position: center center;
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ padding: 10px;
+ z-index: 10;
+ }
+.error
+ {
+ color: red;
+ font-size: 20px;
+ }
+a
+ {
+// color: #b4d;
+ color: #a39;
+ font-weight: bold;
+ }
+label
+ {
+ display: inline-block;
+ width: 190px;
+ padding-right: 10px;
+ text-align: right;
+ }
+small
+ {
+ color: #777;
+ }
+input[type=text]
+ {
+ width: 100px;
+ }
+#img-url,#output-url,#img-background
+ {
+ width: 200px;
+ }
+#bgswitcheroo, #colorswitcheroo
+ {
+ width: 19px;
+ height:38px;
+ display: inline-block;
+ position: absolute;
+ background-image: url(http://i.asdf.us/im/7e/user_convo_1353562627_1355449919.png);
+ //background-image: url( http://i.asdf.us/im/7b/user_convo_1353562627.png);
+ background-repeat:no-repeat;
+ background-position: 3px 10px;
+ cursor: pointer;
+ }
+#img-fuzz,#img-width,#img-height,#img-brightness,#img-saturation,#img-contrast,#img-hue,#img-rotate
+ {
+ width: 50px;
+ text-align: right;
+ }
+button
+ {
+ padding: 2px 5px;
+ font-size: 16px;
+ }
+#result img
+ {
+ max-width: 400px;
+ max-height: 400px;
+ }
+#output-cmd
+ {
+ font-size: 12px;
+ white-space: pre;
+ }
+.shim
+ {
+ height: 10px;
+ clear: both;
+ display: block;
+ }
+#output-url
+ {
+ width: 320px;
+ }
+#likebutton
+ {
+ display: none;
+ position: absolute;
+ bottom: 10px;
+ right: 10px;
+ width: 350px;
+ background-color: #fff;
+// background-image: url(imcupbg.jpg);
+ padding: 10px;
+ color: #ddd;
+ font-family: trebuchet ms, sans-serif;
+ }
+div#controls, span#userlink {
+ display: none;
+} span#userlink a {
+ text-transform: capitalize;
+}
+</style>
+
+</head>
+<body>
+<div id="down_for_maintenance">
+ <span>SORRY, this photoblaster page is down for maintenance. Will be back in an hour or so...</span>
+</div>
+<div id="controls">
+<form id="imform" action="javascript:return false">
+ <label id="img-url-label">IMAGE URL</label>
+ <input type="text" id="img-url" /><div id="bgswitcheroo"></div>
+ <!--<br/>-->
+ <label id="background-url-label">background URL</label>
+ <input type="text" id="img-background" value="" />
+ <br/>
+
+ <label>compose operator</label>
+ <select id="img-compose">
+ <option selected="selected">Over</option>
+ <option>ATop</option>
+ <option>Dst_Over</option>
+ <option>Dst_In</option>
+ <option>Dst_Out</option>
+ <option>Multiply</option>
+ <option>Screen</option>
+ <option>Divide</option>
+ <option>Plus</option>
+ <option>Difference</option>
+ <option>Exclusion</option>
+ <option>Lighten</option>
+ <option>Darken</option>
+ <option>Overlay</option>
+ <option>Hard_Light</option>
+ <option>Soft_Light</option>
+ <option>Pegtop_Light</option>
+ <option>Linear_Light</option>
+ <option>Vivid_Light</option>
+ <option>Pin_Light</option>
+ <option>Linear_Dodge</option>
+ <option>Linear_Burn</option>
+ <option>Color_Dodge</option>
+ <option>Color_Burn</option>
+ </select>
+ <br/>
+
+ <label>gravity</label>
+ <select id="img-gravity">
+ <option selected="selected">Center</option>
+ <option>East</option>
+ <option>NorthEast</option>
+ <option>North</option>
+ <option>NorthWest</option>
+ <option>West</option>
+ <option>SouthWest</option>
+ <option>South</option>
+ <option>SouthEast</option>
+ </select>
+<!-- <br>
+ <label>tile foreground?</label>
+
+ <input type="checkbox" id="img-tile" value="1" />
+ <br/> -->
+
+<!--
+ <label>merge before recolor?</label>
+ <input type="checkbox" id="img-merge_early" value="1" />
+ <br/>
+
+-->
+ <span class="shim"></span>
+
+
+ <span class="shim"></span>
+
+ <label>make semi-transparent?</label>
+ <input type="checkbox" id="img-transparent" value="1" checked="true" />
+ <br/>
+
+ <label>remove color</label>
+ <input type="text" id="img-subtract" value="white" class="img-subtract"/>&nbsp;
+<a href="colors/" class="img-subtract pick-color">pick color</a>
+ <br/>
+
+ <label>transparency fuzz</label>
+ <input type="text" id="img-fuzz" value="5" />%
+ <br/>
+
+ <span class="shim"></span>
+
+ <label>resize width</label>
+ <input type="text" id="img-width" /><small>px</small>
+ <br/>
+
+ <label>resize height</label>
+ <input type="text" id="img-height" /><small>px</small>
+ <br/>
+
+ <label>nearest neighbor?</label>
+ <input type="checkbox" id="img-nearest" value="1" />
+ <br/>
+
+ <span class="shim"></span>
+
+ <label>recolor white</label>
+ <input type="text" id="img-white" class="img-white" value="white" />&nbsp;
+<a href="colors/" class="img-white pick-color">pick color</a>
+ <div id="colorswitcheroo"></div>
+ <br/>
+
+ <label>recolor black</label>
+ <input type="text" id="img-black" class="img-black" value="black" />&nbsp;
+<a href="colors/" class="img-black pick-color">pick color</a>
+ <br />
+<!-- <label><a href="colors/index.html" target="_blank" style="font-size: 10px">-->
+<!-- List of Color Names</a></label>-->
+
+ <span class="shim"></span>
+
+ <label>hue <small>(0-200)</small></label>
+ <input type="text" id="img-hue" value="" />
+ <br/>
+<!--
+ <label>saturation <small>(0-200)</small></label>
+ <input type="text" id="img-saturation" value="" />
+ <br/>
+-->
+<!--
+ <label>brightness <small>(0-200)</small></label>
+ <input type="text" id="img-brightness" value="" />
+ <br/>
+-->
+<!--
+ <label>contrast <small>(0-200)</small></label>
+ <input type="text" id="img-contrast" value="" />
+ <br/>
+-->
+
+ <span class="shim"></span>
+
+ <label>flip horizontally?</label>
+ <input type="checkbox" id="img-flop" value="1" />
+ <br/>
+
+ <label>flip vertically?</label>
+ <input type="checkbox" id="img-flip" value="1" />
+ <br/>
+
+ <label>rotate <small>(0-360)</small></label>
+ <input type="text" id="img-rotate" value="" />&deg;
+ <br/>
+
+ <span class="shim"></span>
+
+ <label>output format</label>
+ <select id="img-format">
+ <option selected="selected">gif</option>
+ <option>jpg</option>
+ <option>png</option>
+ </select>
+<!--
+ <span id="gif-options">
+ <label>dispose</label>
+ <select id="dispose">
+ <option value="none" selected>None</option>
+ <option value="previous">Previous</option>
+ <option value="background">Background</option>
+ </select>
+ </span>
+-->
+
+ <!-- <input type="reset" id="reset-button" value="reset-button"></input>-->
+
+ <span class="shim"></span>
+
+ <label>put your name here &gt;&gt;&gt;</label>
+ <input type="text" id="img-name" value="" />
+ <br/>
+
+ <span class="shim"></span>
+
+ <label>&nbsp;</label>
+ <button id="img-generate">GENERATE</button>
+
+ </form>
+
+ <span class="shim"></span>
+ <p>
+ <img src="new.gif" width="32" height="16" />
+ Mess around with heightmaps and textures <a href="/imlandscape">Landscape</a>
+ <span class="shim"></span>
+ <img src="new.gif" width="32" height="16" />
+ Overlay patterns onto your gifs <a href="/impattern">pattern</a>
+ <span class="shim"></span>
+ Write your own effects &rarr; <a href="/shader/">Shaderblaster</a> &amp; <a href="/dither/">Dither</a>
+ <span class="shim"></span>
+ Oh now it's on....payback time &rarr; <a href="/imbreak/">FOTO FUCKER</a>
+ <span class="shim"></span>
+ <!--<img src="new.gif" width="32" height="16" />-->
+ Transform images in 3D &rarr; <a href="/imgrid/">Grid Generator</a>
+ <span class="shim"></span>
+ Gradients make everything better &rarr; <a href="/imgradient/">Gradient Generator</a>
+ </p>
+ <span class="shim"></span>
+ <p>
+ See what people are making &rarr; <a href="/im/gallery/">Image Gallery</a><br/>
+ <span class="shim"></span>
+ The best ones go here &rarr; <a href="http://photoblaster.tumblr.com/">Photoblaster Tumblr</a>
+ <span class="shim"></span>
+ View a random selection &rarr; <a href="/im/gallery/?random=1">Random Gallery</a><br/>
+ <span id="userlink">
+ <span class="shim"></span>
+ Things you've made &rarr; <a href="/im/gallery/?random=1">Your Gallery</a><br/>
+ </span>
+ </p>
+</div>
+
+<div id="result">
+ &rarr; <input type="text" id="output-url"/><br/>
+ <span id="output-cmd"></span><br/>
+
+ <img id="output-img" />
+ <br/><span id="sendtoinput"></span>
+</div>
+
+<!--
+<div id="likebutton">
+<div id="fb-root" style="background-color: transparent;"></div><script src="http://connect.facebook.net/en_US/all.js#appId=236917449658413&amp;xfbml=1"></script><fb:like href="http://asdf.us/im/" send="false" width="347" show_faces="true" colorscheme="light" font="" style="background-color: transparent;"></fb:like>
+</div>
+-->
+
+<script type="text/javascript" src="/js/jquery.js"></script>
+<script type="text/javascript">
+var Main =
+ {
+ API_HEADER: "#@im",
+ generating: false,
+ enter: function (e)
+ {
+ if (Main.generating)
+ return
+ if (e.keyCode === 13)
+ Main.go()
+ },
+ go: function ()
+ {
+ if (Main.generating)
+ return
+ Main.generating = true
+ $("#output-cmd").html('generating...').show()
+ $("#result").show()
+ var data =
+ {
+ url: $("#img-url").val(),
+ transparent: $('#img-transparent:checked').val() !== undefined ? "true" : "false",
+ flip: $('#img-flip:checked').val() !== undefined ? "true" : "false",
+ flop: $('#img-flop:checked').val() !== undefined ? "true" : "false",
+ nearest: $('#img-nearest:checked').val() !== undefined ? "true" : "false",
+ rotate: $("#img-rotate").val(),
+ subtract: $("#img-subtract").val(),
+ fuzz: $("#img-fuzz").val(),
+ width: $("#img-width").val(),
+ height: $("#img-height").val(),
+ black: $("#img-black").val(),
+ white: $("#img-white").val(),
+ //brightness: $("#img-brightness").val(),
+ //saturation: $("#img-saturation").val(),
+ hue: $("#img-hue").val(),
+ contrast: $("#img-contrast").val(),
+ background: $("#img-background").val(),
+ // merge_early: $('#img-merge_early:checked').val() !== undefined ? "true" : "false",
+ compose: $('#img-compose :selected').text(),
+ gravity: $('#img-gravity :selected').text(),
+ // tile: $('#img-tile:checked').val() !== undefined ? "true" : "false",
+ format: $('#img-format :selected').text(),
+ dispose: $('#dispose').val(),
+ username: $("#img-name").val(),
+ }
+ if (data.rotate.match(/-/)){ data.rotate=360-parseInt(data.rotate.replace("-","")); };
+ $("#img-rotate").val("");
+ if (data.username.length > 0)
+ document.cookie = "imname="+data.username+";path=/;domain=.asdf.us;max-age=1086400"
+ $.post("/im/api/generate", data, Main.callback)
+ },
+ error: function (s)
+ {
+ $("#output-cmd").html("<span class='error'>ERROR: " + s + "</span>").show()
+ $("#output-url").hide()
+ $("#output-img").hide()
+ },
+ callback: function (raw)
+ {
+ data = JSON.parse(raw)
+ console.log(data)
+ Main.generating = false
+ $("#output-cmd").html("size: "+Main.filesize(data.size)+"<br/>"
+ + data.width + " x " + data.height);
+
+ $("#output-url").val(data.url);
+ $("#output-img").hide().attr("src", data.url).fadeIn(700)
+ $("#sendtoinput").html("&nbsp;send to input <img src=\"arrow_pointing_left.png\"/>&nbsp;").css({"border": "1px solid gray", "cursor" : "pointer"}).click(function(){
+ $("#img-url").val(data.url);
+ });
+
+ },
+ filesize: function (size)
+ {
+ if (size < 1024)
+ return size + " bytes"
+ if (size < 1024 * 1024)
+ return Math.floor (size/1024) + " KB"
+ else
+ return Math.floor (size/(1024*1024)) + " MB"
+ },
+ cookie: function ()
+ {
+ if (document.cookie)
+ {
+ var cookies = document.cookie.split(";")
+ for (i in cookies)
+ {
+ var cookie = cookies[i].split("=")
+ if (cookie[0].indexOf("imname") !== -1)
+ {
+ if (cookie[1] !== 'false' && cookie[1] !== 'undefined' && cookie[1].length)
+ {
+ return cookie[1]
+ }
+ }
+ }
+ }
+ return ""
+ },
+ preloadSize: function(url,label,tag){
+ console.log(url)
+ var img = new Image()
+ img.onload = function(){ $(label).html( tag + ": " + img.naturalWidth + " x " + img.naturalHeight ) }
+ img.src = url
+ },
+ init: function ()
+ {
+ var name = Main.cookie ()
+ $("#img-name").val(name)
+ if (name)
+ {
+ $("#userlink").show()
+ $("#userlink a").attr("href", "/im/gallery/?name="+name).html(name+"'s photoblasts")
+ }
+ $("#likebutton,#controls").fadeIn(0)
+ $("#img-generate").bind("click", Main.go)
+ $("div input[type=text]").bind("keydown", Main.enter)
+ $("#img-url").change(function(){Main.preloadSize(this.value,"#img-url-label","image")})
+ $("#img-background").change(function(){Main.preloadSize(this.value,"#background-url-label","bg")})
+ $("#bgswitcheroo").click(function() {
+ a = $("#img-url").val();
+ b = $("#img-background").val();
+ $("#img-url").val(b);
+ $("#img-background").val(a);
+ });
+ $("#colorswitcheroo").click(function() {
+ a = $("#img-white").val();
+ b = $("#img-black").val();
+ $("#img-white").val(b);
+ $("#img-black").val(a);
+ });
+ $("#img-format").change(function(){
+ $("#gif-options").css( "visibility", $("#img-format").val() === "gif" ? "visible" : "hidden")
+ })
+
+ },
+ }
+document.getElementById('imform').reset();
+Main.init ()
+</script>
+<script type="text/javascript" src="http://asdf.us/js/pbembed.js"></script>
+<!--for the colors iframe-->
+<script type="text/javascript" src="jquery-ui-1.8.16.custom.min.js"></script>
+<script type="text/javascript" src="/im/colors/js/jquery.remember-state.js"></script>
+<script type="text/javascript" src="/im/colors/js/jquery.fancybox.js?v=2.1.5"></script>
+<script type="text/javascript" src="colors_iframe.js"></script>
+</body>
+</html>
+
diff --git a/frontend/im/new.gif b/frontend/im/new.gif
new file mode 100755
index 0000000..37c39d2
--- /dev/null
+++ b/frontend/im/new.gif
Binary files differ
diff --git a/frontend/im/newimagemaker.html b/frontend/im/newimagemaker.html
new file mode 100755
index 0000000..50db4df
--- /dev/null
+++ b/frontend/im/newimagemaker.html
@@ -0,0 +1,289 @@
+<!doctype html>
+<html>
+<head>
+<title>IM PORTAL</title>
+<style type="text/css">
+*
+ {
+ padding: 0;
+ margin: 0;
+ font-family: sans-serif;
+ }
+body
+ {
+ background-color: #e6e0e0;
+ }
+#controls,#result
+ {
+ display: inline-block;
+ padding: 10px;
+ width: 430px;
+ position: absolute;
+ }
+#controls
+ {
+ font-size: 14px;
+ top: 10px; left: 10px;
+ max-height: 450px;
+ background-color: #fff;
+ z-index: 5;
+ }
+#result
+ {
+ background-color: #d6d0d0;
+ top: 10px; left: 480px;
+ display: none;
+ z-index: 5;
+ }
+#instructions
+ {
+ position: absolute;
+ bottom: 10px;
+ left: 10px;
+ line-height: 18px;
+ z-index: 1;
+ }
+#instructions p
+ {
+ background-color: #fff;
+ padding: 10px;
+ font-size: 14px;
+ width: 430px;
+ }
+#gallery-link
+ {
+ background-color: #fff;
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ padding: 10px;
+ z-index: 10;
+ }
+.error
+ {
+ color: red;
+ font-size: 20px;
+ }
+a
+ {
+ color: #b4d;
+ font-weight: bold;
+ }
+label
+ {
+ display: inline-block;
+ width: 190px;
+ padding-right: 10px;
+ text-align: right;
+ }
+input[type=text]
+ {
+ width: 100px;
+ }
+#img-url,#output-url
+ {
+ width: 200px;
+ }
+#img-fuzz,#img-width,#img-height,#img-brightness,#img-saturation,#img-contrast,#img-hue,#img-rotate
+ {
+ width: 50px;
+ text-align: right;
+ }
+button
+ {
+ padding: 2px 5px;
+ font-size: 16px;
+ }
+#result img
+ {
+ max-width: 400px;
+ max-height: 400px;
+ }
+#output-cmd
+ {
+ font-size: 12px;
+ white-space: pre;
+ }
+.shim
+ {
+ height: 10px;
+ clear: both;
+ }
+#output-url
+ {
+ width: 320px;
+ }
+</style>
+<body>
+<section id="controls">
+ <label>IMAGE URL</label>
+ <input type="text" id="img-url" />
+ <br/>
+
+ <div class="shim"></div>
+
+ <label>make transparent?</label>
+ <input type="checkbox" id="img-transparent" value="1" checked="true" />
+ <br/>
+
+ <label>remove color</label>
+ <input type="text" id="img-subtract" value="white" />
+ <br/>
+
+ <label>transparency fuzz</label>
+ <input type="text" id="img-fuzz" value="5" />%
+ <br/>
+
+ <div class="shim"></div>
+
+ <label>resize width</label>
+ <input type="text" id="img-width" /><small>px</small>
+ <br/>
+
+ <label>resize height</label>
+ <input type="text" id="img-height" /><small>px</small>
+ <br/>
+
+ <div class="shim"></div>
+
+ <label>recolor white</label>
+ <input type="text" id="img-white" value="white" />
+ <br/>
+
+ <label>recolor black</label>
+ <input type="text" id="img-black" value="black" />
+ <br/>
+
+ <div class="shim"></div>
+
+ <label>hue <small>(0-200)</small></label>
+ <input type="text" id="img-hue" value="" />
+ <br/>
+
+ <label>saturation <small>(0-200)</small></label>
+ <input type="text" id="img-saturation" value="" />
+ <br/>
+
+ <label>brightness <small>(0-200)</small></label>
+ <input type="text" id="img-brightness" value="" />
+ <br/>
+
+<!--
+ <label>contrast <small>(0-200)</small></label>
+ <input type="text" id="img-contrast" value="" />
+ <br/>
+-->
+
+ <div class="shim"></div>
+
+ <label>flip horizontally?</label>
+ <input type="checkbox" id="img-flop" value="1" />
+ <br/>
+
+ <label>flip vertically?</label>
+ <input type="checkbox" id="img-flip" value="1" />
+ <br/>
+
+ <label>rotate <small>(0-360)</small></label>
+ <input type="text" id="img-rotate" value="" />&deg;
+ <br/>
+
+ <div class="shim"></div>
+
+<!--
+ <label>output format</label>
+ <select id="img-format">
+ <option selected="selected">gif</option>
+ <option>jpg</option>
+ <option>png</option>
+ </select>
+ <div class="shim"></div>
+-->
+
+ <label>&nbsp;</label>
+ <button id="img-generate">GENERATE</button>
+
+</section>
+
+<section id="result">
+ &rarr; <input type="text" id="output-url"/><br/>
+ <span id="output-cmd"></span><br/>
+
+ <img id="output-img" />
+</section>
+
+<section id="instructions">
+ <p>
+ This page provides a basic interface to the command-line image utility <a href="http://www.imagemagick.org/Usage/">IMAGEMAGICK.</a>
+ Paste a link into the first box, then use the other settings to colorize, distort, and add transparency.
+ </p>
+ <div class="shim"></div>
+ <p>
+ See what people have made &rarr; <a href="/im/gallery/">Image Gallery</a>
+ </p>
+</section>
+
+</body>
+<script type="text/javascript" src="/js/jquery.js"></script>
+<script type="text/javascript">
+var Main =
+ {
+ API_HEADER: "#@im",
+ enter: function (e)
+ {
+ if (e.keyCode === 13)
+ Main.go()
+ },
+ go: function ()
+ {
+ $("#output-cmd").html('generating...').show()
+ $("#result").show()
+ var data =
+ {
+ url: $("#img-url").val(),
+ transparent: $('#img-transparent:checked').val() !== undefined ? "true" : "false",
+ flip: $('#img-flip:checked').val() !== undefined ? "true" : "false",
+ flop: $('#img-flop:checked').val() !== undefined ? "true" : "false",
+ rotate: $("#img-rotate").val(),
+ subtract: $("#img-subtract").val(),
+ fuzz: $("#img-fuzz").val(),
+ width: $("#img-width").val(),
+ height: $("#img-height").val(),
+ black: $("#img-black").val(),
+ white: $("#img-white").val(),
+ brightness: $("#img-brightness").val(),
+ saturation: $("#img-saturation").val(),
+ hue: $("#img-hue").val(),
+ contrast: $("#img-contrast").val(),
+ }
+ $.post("/cgi-bin/im/pepperimagemaker", data, Main.callback)
+ },
+ error: function (s)
+ {
+ $("#output-cmd").html("<span class='error'>ERROR: " + s + "</span>").show()
+ $("#output-url").hide()
+ $("#output-img").hide()
+ },
+ callback: function (raw)
+ {
+ lines = raw.split("\n")
+ if (lines[0] !== Main.API_HEADER)
+ return Main.error("problem loading API")
+ if (lines[1].indexOf("ERROR\t") === 0)
+ return Main.error(lines[1].split("\t")[1])
+
+ // $("#output-cmd").html(lines[1]+"<br/>"+lines[2])
+ $("#output-cmd").hide()
+ $("#output-url").val(lines[3])
+ $("#output-img").hide().attr("src", lines[3]).fadeIn(700)
+ },
+ init: function ()
+ {
+ $("#img-generate").bind("click", Main.go)
+ $("section input[type=text]").bind("keydown", Main.enter)
+ },
+ }
+Main.init()
+</script>
+</html>
+
diff --git a/frontend/im/shader/index.html b/frontend/im/shader/index.html
new file mode 100644
index 0000000..2c7370f
--- /dev/null
+++ b/frontend/im/shader/index.html
@@ -0,0 +1,2 @@
+<meta http-equiv="refresh" content="0; url=/shader/">
+
diff --git a/frontend/im/thing1.gif b/frontend/im/thing1.gif
new file mode 100644
index 0000000..5acdf58
--- /dev/null
+++ b/frontend/im/thing1.gif
Binary files differ
diff --git a/frontend/im/thing2.png b/frontend/im/thing2.png
new file mode 100644
index 0000000..6104d00
--- /dev/null
+++ b/frontend/im/thing2.png
Binary files differ
diff --git a/frontend/imbreak/_broken_by_janie_30e_semitrans1.png b/frontend/imbreak/_broken_by_janie_30e_semitrans1.png
new file mode 100755
index 0000000..9884388
--- /dev/null
+++ b/frontend/imbreak/_broken_by_janie_30e_semitrans1.png
Binary files differ
diff --git a/frontend/imbreak/cssreset.css b/frontend/imbreak/cssreset.css
new file mode 100755
index 0000000..9329580
--- /dev/null
+++ b/frontend/imbreak/cssreset.css
@@ -0,0 +1,7 @@
+html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
+ border: 0pt none;
+ font: inherit;
+ margin: 0pt;
+ padding: 0pt;
+ vertical-align: baseline;
+} \ No newline at end of file
diff --git a/frontend/imbreak/imbreakfavico.ico b/frontend/imbreak/imbreakfavico.ico
new file mode 100755
index 0000000..9573cd4
--- /dev/null
+++ b/frontend/imbreak/imbreakfavico.ico
Binary files differ
diff --git a/frontend/imbreak/img/ALPHA20IVY20201_1323328300.gif b/frontend/imbreak/img/ALPHA20IVY20201_1323328300.gif
new file mode 100644
index 0000000..710ef2e
--- /dev/null
+++ b/frontend/imbreak/img/ALPHA20IVY20201_1323328300.gif
Binary files differ
diff --git a/frontend/imbreak/img/_broken_by_janie_147_greeks.gif b/frontend/imbreak/img/_broken_by_janie_147_greeks.gif
new file mode 100755
index 0000000..e5c4ddb
--- /dev/null
+++ b/frontend/imbreak/img/_broken_by_janie_147_greeks.gif
Binary files differ
diff --git a/frontend/imbreak/img/_broken_by_janie_16b_justhost_155x75.gif b/frontend/imbreak/img/_broken_by_janie_16b_justhost_155x75.gif
new file mode 100755
index 0000000..5b7144d
--- /dev/null
+++ b/frontend/imbreak/img/_broken_by_janie_16b_justhost_155x75.gif
Binary files differ
diff --git a/frontend/imbreak/img/_broken_by_janie_399_a_pair_of_siena_and_carved_white_marble_columns_20th_century_d5409361h.jpg b/frontend/imbreak/img/_broken_by_janie_399_a_pair_of_siena_and_carved_white_marble_columns_20th_century_d5409361h.jpg
new file mode 100755
index 0000000..d6dd790
--- /dev/null
+++ b/frontend/imbreak/img/_broken_by_janie_399_a_pair_of_siena_and_carved_white_marble_columns_20th_century_d5409361h.jpg
Binary files differ
diff --git a/frontend/imbreak/img/columns.jpg b/frontend/imbreak/img/columns.jpg
new file mode 100755
index 0000000..d6dd790
--- /dev/null
+++ b/frontend/imbreak/img/columns.jpg
Binary files differ
diff --git a/frontend/imbreak/img/firstlogo.gif b/frontend/imbreak/img/firstlogo.gif
new file mode 100755
index 0000000..5762688
--- /dev/null
+++ b/frontend/imbreak/img/firstlogo.gif
Binary files differ
diff --git a/frontend/imbreak/img/generating.gif b/frontend/imbreak/img/generating.gif
new file mode 100755
index 0000000..441abe7
--- /dev/null
+++ b/frontend/imbreak/img/generating.gif
Binary files differ
diff --git a/frontend/imbreak/img/greeks.gif b/frontend/imbreak/img/greeks.gif
new file mode 100755
index 0000000..f676210
--- /dev/null
+++ b/frontend/imbreak/img/greeks.gif
Binary files differ
diff --git a/frontend/imbreak/img/imgrid_1328137237_ivy_pepper.gif b/frontend/imbreak/img/imgrid_1328137237_ivy_pepper.gif
new file mode 100644
index 0000000..8cd7316
--- /dev/null
+++ b/frontend/imbreak/img/imgrid_1328137237_ivy_pepper.gif
Binary files differ
diff --git a/frontend/imbreak/img/ivy.gif b/frontend/imbreak/img/ivy.gif
new file mode 100755
index 0000000..b51faca
--- /dev/null
+++ b/frontend/imbreak/img/ivy.gif
Binary files differ
diff --git a/frontend/imbreak/img/ivy2.gif b/frontend/imbreak/img/ivy2.gif
new file mode 100755
index 0000000..710ef2e
--- /dev/null
+++ b/frontend/imbreak/img/ivy2.gif
Binary files differ
diff --git a/frontend/imbreak/img/newmain.gif b/frontend/imbreak/img/newmain.gif
new file mode 100755
index 0000000..8eb7e73
--- /dev/null
+++ b/frontend/imbreak/img/newmain.gif
Binary files differ
diff --git a/frontend/imbreak/img/og.jpg b/frontend/imbreak/img/og.jpg
new file mode 100755
index 0000000..d6dd790
--- /dev/null
+++ b/frontend/imbreak/img/og.jpg
Binary files differ
diff --git a/frontend/imbreak/img/on9TF_1322970909_1322970984_1323325278.gif b/frontend/imbreak/img/on9TF_1322970909_1322970984_1323325278.gif
new file mode 100755
index 0000000..8e19e59
--- /dev/null
+++ b/frontend/imbreak/img/on9TF_1322970909_1322970984_1323325278.gif
Binary files differ
diff --git a/frontend/imbreak/img/title1.gif b/frontend/imbreak/img/title1.gif
new file mode 100755
index 0000000..206723a
--- /dev/null
+++ b/frontend/imbreak/img/title1.gif
Binary files differ
diff --git a/frontend/imbreak/index.html b/frontend/imbreak/index.html
new file mode 100755
index 0000000..b84a5f3
--- /dev/null
+++ b/frontend/imbreak/index.html
@@ -0,0 +1,274 @@
+<html>
+<!--
+ * *
+ *** ***
+ **** ****
+ * ****** ****** *
+ * *************************************** *
+ ** * ______*______ * **
+ ***** * ______*______ * *****
+ ******* ______*______ *******
+ *** **** * **** ***
+ ****** *oo******* *** *******oo* ******
+ * *o********* *********o* *
+ * * * *
+ * * _ _ * *
+ * * -_ _- * *
+ * * -_ _- * *
+ * * -___- * *
+ * *
+ *********************
+ * ** ** *
+ * ** ** *
+ * _-----_ *
+ *********
+by pepper
+-->
+<head>
+ <link href='jquery-ui-1.8.16.custom.css' rel='stylesheet' type='text/css' />
+ <link href='cssreset.css' rel='stylesheet' type='text/css'/>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta property="og:title" content="FOTO FUCKER"/>
+<link rel="shortcut icon" href="imbreakfavico.ico">
+<meta property="og:type" content="website"/>
+<meta name=Author content="Pepper"/>
+<meta property="og:url" content="http://asdf.us/imbreak/"/>
+<meta property="og:image" content="http://asdf.us/imbreak/og.jpg" />
+<meta property="og:site_name" content="asdf.us"/>
+<meta property="og:description" content="now it's time to get back at those photos and fuck them up"/>
+<meta property="fb:admins" content="100001923956223,1709246"/>
+<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
+<style type='text/css'>
+body
+ {
+ font-size:11px;
+ background-image:url(img/_broken_by_janie_30e_semitrans1.png);
+ overflow:hidden;
+ }
+#header
+ {
+ -moz-border-radius:14px;
+ -webkit-border-radius:14px;
+ border-radius:14px 14px 14px 14px;
+ padding:10px;
+ width: 100%;
+ background-image:url(columns.jpg);
+ background-color:white;
+ }
+#controls
+ {
+ width:47%;
+ padding:24px;
+ background-color:rgba(240, 240, 240,0.9);
+ -moz-box-shadow: 0px 0px 9px 1px whitesmoke;
+ -webkit-box-shadow: 0px 0px 9px 1px whitesmoke;
+ box-shadow: 0px 0px 9px 1px whitesmoke;
+ position:fixed;
+ z-index:100;
+ top:48%;
+ }
+#breakmode
+ {
+ background-color:#FAFAFA;
+ }
+#copyright
+ {
+ position:absolute;
+ bottom:10px;
+ left:720px;
+ color:red;
+ }
+#likebutton
+ {
+ background-color:#F7f7f7;
+ right:20px;
+ position:absolute;
+ bottom:10px;
+ }
+#links
+ {
+ background-color:#FFFFFF;
+ }
+#url
+ {
+ width:70%;
+ font-size:11;
+ }
+#result
+ {
+ display:none;
+ position:fixed;
+ top:20px;
+ right:10px;
+ background-color:rgba(250, 250, 250,0.8);
+ width:50%;
+ -moz-box-shadow: 0px 0px 9px 1px whitesmoke;
+ -webkit-box-shadow: 0px 0px 9px 1px whitesmoke;
+ box-shadow: 0px 0px 9px 1px whitesmoke;
+ }
+.results
+ {
+ display:none;
+ z-index:100;
+ }
+#output-url
+ {
+ width:500px;
+ padding:0;
+ margin:5%;
+ }
+#output-image
+ {
+ max-height:500px;
+ max-width:500px;
+ padding-top:40px;
+ padding-left:40px;
+ }
+#output-info
+ {
+ margin-left:5%
+ }
+#therest
+ {
+ padding:20px;
+ }
+#links
+ {
+ padding:5px;
+ }
+.ui-slider-horizontal
+ {
+ background-color:whitesmoke;
+ }
+#breakangle
+ {
+ width:40px;
+ }
+#firstlogo, #secondlogo, #mainlogo, #header
+ {
+ display:inline-block;
+ pointer-events: none;
+ cursor: default;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ -o-user-select: none;
+ user-select: none;
+ }
+#ivy
+ {
+ height:500px;
+ }
+#ivy img
+ {
+ height:60%;
+ }
+</style>
+</head>
+<body>
+<div id='copyright'>SITE BY PEPPER - COPYRIGHT 2011</div>
+<div id="header">
+ <br>
+ <span style="background-color:rgba(245,245,245,0.7)">An image breaking utility from PHOTOBLASTER, this program breaks images
+ <br>and then restores them to an unbroken state so that they can be used for further editing.<br></span>
+<p>
+ <li id="ivy" style="background-image:url(img/ivy.gif);">
+ <img id="firstlogo" src="img/firstlogo.gif"></img>
+ <img id="mainlogo" src="img/newmain.gif"></img>
+ <img id="secondlogo" src="img/on9TF_1322970909_1322970984_1323325278.gif"></img>
+</li>
+<li style="display:inline; background-image:url(img/imgrid_1328137237_ivy_pepper.gif)"></li>
+</p>
+<p style="background-image:url(img/ALPHA20IVY20201_1323328300.gif)">
+
+</p>
+</div>
+<br>
+<div id="controls">
+ WHY NOT PASTE A URL HERE? (an image or gif animation)!!
+ <input id='url' placeholder="http://..." type="text">
+ </input>
+ <br>
+ <span id='example'>e.g. http://imageman.com/coolguy.jpg... or hotimagedudes/cooltimes.gif</span>
+ <button id='breakbutton'>BREAK IT!</button>&larr;&larr;CLICK HERE!! KEEP CLICKING TO KEEP FUCKING IT UP!!!
+ <br>
+
+BREAK TYPE:&nbsp;<select id="breaktype">
+ <option selected="selected" value='CLASSIC'>CLASSIC</option>
+ <option value="REDUX">REDUX</option>
+ <option value="BLURRY_BREAK">BLURRY BREAK</option>
+ <option value="BLURRY_BREAK_2">MIAMY</option>
+ <option value="SWIPE">SWIPE</option>
+ <option value="RGB_WASH">RGB WASH</option>
+ <option value="RGB_WASH_2">CHOP AND BLUR</option>
+ <option value="NOISY_BREAK">NOISY BREAK</option>
+ <option value="BROKEN_VIGNETTE">BROKEN VIGNETTE</option>
+ <option value="FAX_MACHINE">FAX MACHINE</option>
+ <option value="STRIPES">STRIPES</option>
+
+ <option value="PHOTOCOPY">PHOTOCOPY</option>
+</select>
+
+
+<br>
+ <div id='breakmode'>BREAK MODES:
+ <input type='radio' name='modeswitch' id='subtle' value='subtle' checked='checked'></input>subtle
+ <input type='radio' name='modeswitch' id='gradual' value='gradual' ></input>gradual
+ <input type='radio' name='modeswitch' id='extreme' value='extreme'></input>extreme
+ </div>
+ <br>
+BREAK ANGLE:&nbsp;<input id='breakangle' type='text' value='0'></input>
+<div id="breakangleslider" style="display:inline-block; width: 70%; height:10px;" class="slider"></div><br>
+<div id="expanded_check"></div><!--add click event in javascript-->
+</div>
+<div id='therest'>
+
+ <div id='links'>
+ <span id='imagegallery'><a href='http://asdf.us/im/gallery'>PHOTOBLASTER IMAGE GALLERY</a></span>
+<span style="margin-left:120px; background-color:rgba(240, 240, 240,0.8)">enter your username: <input type='text' id='username'></input></span>
+ <br>
+ <span id='backtotheeditor'><a href="http://asdf.us/im">&larr;BACK TO THE EDITOR</a></span>
+ </div>
+
+ <div id="likebutton">
+ <div id="fb-root" style="background-color: transparent;"></div><script src="http://connect.facebook.net/en_US/all.js#appId=236917449658413&amp;xfbml=1"></script><fb:like href="http://asdf.us/im/" send="false" width="347" show_faces="true" colorscheme="light" font="" style="background-color: transparent;"></fb:like>
+ </div>
+</div>
+</div>
+<div id='result'>
+ <span id="output-cmd" class='results'>
+</span>
+ <span id="output-img" class='results'></span>
+ <input id="output-url" class='results'></input>
+ <div id="output-info" class='results'></div>
+</div>
+<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
+<script type="text/javascript" src="js/jquery-ui.min.js"></script>
+<script type="text/javascript">
+function clearcopyright(){
+$('#copyright').html("");
+}
+$("div").bind("click",clearcopyright)
+
+
+$(function(){
+$( "#breakangleslider" ).slider({
+ value:0,
+ min: -180,
+ max: 180,
+ step: 1,
+ slide: function( event, ui ) {
+ $( "#breakangle" ).val(ui.value);
+ }
+ });
+ $( "#breakangle" ).val($( "#breakangleslider" ).slider( "value" ) );
+});
+</script>
+<script type="text/javascript" src="js/imbreak-main.js"></script>
+
+<script type="text/javascript" src="http://asdf.us/js/pbembed.js"></script>
+</body>
+
+
+
+</html>
diff --git a/frontend/imbreak/jquery-ui-1.8.16.custom.css b/frontend/imbreak/jquery-ui-1.8.16.custom.css
new file mode 100755
index 0000000..058f1b3
--- /dev/null
+++ b/frontend/imbreak/jquery-ui-1.8.16.custom.css
@@ -0,0 +1,313 @@
+/*
+ * jQuery UI CSS Framework 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=1px&bgColorHeader=cccccc&bgTextureHeader=07_diagonals_medium.png&bgImgOpacityHeader=75&borderColorHeader=ffffff&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=16_diagonal_maze.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=00FA9A&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=06_inset_hard.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=05_inset_soft.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=12_gloss_wave.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=12_gloss_wave.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=20px&offsetTopShadow=-90px&offsetLeftShadow=-30px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #aaaaaa; color: #00FA9A; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #ffffff; background: #cccccc url(images/ui-bg_diagonals-medium_75_cccccc_40x40.png) 50% 50% repeat; color: #00FA9A; font-weight: bold; }
+.ui-widget-header a { color: #00FA9A; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #00FA9A; background: #e6e6e6; font-weight: normal; color: #555555; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_inset-hard_55_fbf9ee_1x100.png) 50% bottom repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_inset-soft_95_fef1ec_1x100.png) 50% bottom repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 1px; -webkit-border-top-left-radius: 1px; -khtml-border-top-left-radius: 1px; border-top-left-radius: 1px; }
+.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 1px; -webkit-border-top-right-radius: 1px; -khtml-border-top-right-radius: 1px; border-top-right-radius: 1px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 1px; -webkit-border-bottom-left-radius: 1px; -khtml-border-bottom-left-radius: 1px; border-bottom-left-radius: 1px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 1px; -webkit-border-bottom-right-radius: 1px; -khtml-border-bottom-right-radius: 1px; border-bottom-right-radius: 1px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_gloss-wave_0_aaaaaa_500x100.png) 50% top repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -90px 0 0 -30px; padding: 20px; background: #aaaaaa url(images/ui-bg_gloss-wave_0_aaaaaa_500x100.png) 50% top repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Slider 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }
diff --git a/frontend/imbreak/js/imbreak-main.js b/frontend/imbreak/js/imbreak-main.js
new file mode 100755
index 0000000..c56c9a2
--- /dev/null
+++ b/frontend/imbreak/js/imbreak-main.js
@@ -0,0 +1,113 @@
+var Main =
+ {
+ firsttime: true,
+ generating: false,
+ thelast: "",
+ enter: function (e)
+ {
+ if (Main.generating)
+ return
+ if (e.keyCode === 13)
+ Main.go()
+ },
+ go: function ()
+ {
+ if (Main.generating)
+ return
+ Main.generating = true
+ var theloader = '<span style="width:100%;margin-right:40%"><img style="width:140px;height:120px;display:inline;" src="generating.gif"></img></span>'
+ $("#output-cmd").html(theloader).show()
+ $('.result').show()
+ $('.results').show()
+ $("#output-img").show()
+ $("#output-url").show()
+ $("#result").show()
+ var data =
+ {
+ breakmode:$('input:radio[name=modeswitch]:checked').val(),
+ breaktype: $('#breaktype :selected').val(),
+ breakangle: $("#breakangle").val(),
+ url: $('#url').val(),
+ username: $('#username').val(),
+ firsttime: Main.firsttime.toString()
+ }
+ if (data["breakmode"] == "gradual")
+ {
+ data["breakmode"] = "subtle"
+ if (Main.lines && Main.thelast == $('#url').val())
+ {
+ Main.firsttime = false
+ data["url"] = Main.lines[1]
+ }
+ }
+ else
+ {
+ Main.firsttime = true
+ }
+ Main.thelast = $('#url').val();
+ thestring = JSON.stringify(data);
+ $('#error').append(thestring);
+ if (data.username.length > 0)
+ document.cookie = "imname="+data.username+";path=/;domain=.asdf.us;max-age=1086400"
+ $.post("/im/api/imbreak", data, Main.callback)
+ },
+ error: function (s)
+ {
+ $("#output-cmd").html("<span class='error'>ERROR: " + s + "</span>").show()
+ $("#output-url").hide()
+ $("#output-img").hide()
+ },
+ filesize: function (size)
+ {
+ if (size < 1024)
+ return size.toString() + " bytes"
+ if (size < 1024 * 1024)
+ return Math.floor (size/1024).toString() + " KB"
+ else
+ return Math.floor (size/(1024*1024)).toString() + " MB"
+ },
+ callback: function (data)
+ {
+ data = JSON.parse(data)
+ $('#error').append('called');
+ $("#output-cmd").html('')
+ $('#output-url').val(data.url)
+ $("#output-img").html("click image to enlarge<br><a target=_blank href='"+data.url+"'>"+"<img src='"+data.url+"' id='output-image'></img><br>"+"</a>"
+);
+ $("#output-info").html('-ACTUAL SIZE-<br>'+Main.filesize(data.size)+'<br>'+data.width+'<br>'+data.height+'<br><br>'+'<span>see more at &rarr;<a href="http://asdf.us/im/gallery">photoblaster gallery</a></span>'+'<br>')
+ Main.generating = false
+ },
+ cookie: function ()
+ {
+ if (document.cookie)
+ {
+ var cookies = document.cookie.split(";")
+ for (i in cookies)
+ {
+ var cookie = cookies[i].split("=")
+ if (cookie[0].indexOf("imname") !== -1)
+ {
+ if (cookie[1] !== 'false' && cookie[1] !== 'undefined' && cookie[1].length)
+ {
+ return cookie[1]
+ }
+ }
+ }
+ }
+ return ""
+ },
+ init: function ()
+ {
+ var name = Main.cookie ()
+ $("#username").val(name)
+ $("#breakbutton").bind("click", Main.go)
+ $(document).bind("keydown", Main.enter)
+ }
+ }
+//$('#theform').each(function(){
+// this.reset();
+// });
+
+
+
+Main.init ()
diff --git a/frontend/imbreak/js/jcookie.js b/frontend/imbreak/js/jcookie.js
new file mode 100755
index 0000000..ee84737
--- /dev/null
+++ b/frontend/imbreak/js/jcookie.js
@@ -0,0 +1,95 @@
+cookie plugin
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+
+/**
+ * Create a cookie with the given name and value and other optional parameters.
+ *
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Set the value of a cookie.
+ * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
+ * @desc Create a cookie with all available options.
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Create a session cookie.
+ * @example $.cookie('the_cookie', null);
+ * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
+ * used when the cookie was set.
+ *
+ * @param String name The name of the cookie.
+ * @param String value The value of the cookie.
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
+ * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
+ * If set to null or omitted, the cookie will be a session cookie and will not be retained
+ * when the the browser exits.
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
+ * require a secure protocol (like HTTPS).
+ * @type undefined
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+
+/**
+ * Get the value of a cookie with the given name.
+ *
+ * @example $.cookie('the_cookie');
+ * @desc Get the value of a cookie.
+ *
+ * @param String name The name of the cookie.
+ * @return The value of the cookie.
+ * @type String
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+jQuery.cookie = function(name, value, options) {
+ if (typeof value != 'undefined') { // name and value given, set cookie
+ options = options || {};
+ if (value === null) {
+ value = '';
+ options.expires = -1;
+ }
+ var expires = '';
+ if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
+ var date;
+ if (typeof options.expires == 'number') {
+ date = new Date();
+ date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
+ } else {
+ date = options.expires;
+ }
+ expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
+ }
+ // CAUTION: Needed to parenthesize options.path and options.domain
+ // in the following expressions, otherwise they evaluate to undefined
+ // in the packed version for some reason...
+ var path = options.path ? '; path=' + (options.path) : '';
+ var domain = options.domain ? '; domain=' + (options.domain) : '';
+ var secure = options.secure ? '; secure' : '';
+ document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
+ } else { // only name given, get cookie
+ var cookieValue = null;
+ if (document.cookie && document.cookie != '') {
+ var cookies = document.cookie.split(';');
+ for (var i = 0; i < cookies.length; i++) {
+ var cookie = jQuery.trim(cookies[i]);
+ // Does this cookie string begin with the name we want?
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+ break;
+ }
+ }
+ }
+ return cookieValue;
+ }
+};
diff --git a/frontend/imbreak/js/jquery-ui.min.js b/frontend/imbreak/js/jquery-ui.min.js
new file mode 100755
index 0000000..0202506
--- /dev/null
+++ b/frontend/imbreak/js/jquery-ui.min.js
@@ -0,0 +1,414 @@
+/*!
+ * jQuery UI 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(a,d){function c(h,g){var i=h.nodeName.toLowerCase();if("area"===i){g=h.parentNode;i=g.name;if(!h.href||!i||g.nodeName.toLowerCase()!=="map")return false;h=a("img[usemap=#"+i+"]")[0];return!!h&&e(h)}return(/input|select|textarea|button|object/.test(i)?!h.disabled:"a"==i?h.href||g:g)&&e(h)}function e(h){return!a(h).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(!a.ui.version){a.extend(a.ui,{version:"1.8.16",
+keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(h,g){return typeof h==="number"?this.each(function(){var i=
+this;setTimeout(function(){a(i).focus();g&&g.call(i)},h)}):this._focus.apply(this,arguments)},scrollParent:function(){var h;h=a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,
+"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!h.length?a(document):h},zIndex:function(h){if(h!==d)return this.css("zIndex",h);if(this.length){h=a(this[0]);for(var g;h.length&&h[0]!==document;){g=h.css("position");if(g==="absolute"||g==="relative"||g==="fixed"){g=parseInt(h.css("zIndex"),10);if(!isNaN(g)&&g!==0)return g}h=h.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":
+"mousedown")+".ui-disableSelection",function(h){h.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(h,g){function i(l,o,n,k){a.each(b,function(){o-=parseFloat(a.curCSS(l,"padding"+this,true))||0;if(n)o-=parseFloat(a.curCSS(l,"border"+this+"Width",true))||0;if(k)o-=parseFloat(a.curCSS(l,"margin"+this,true))||0});return o}var b=g==="Width"?["Left","Right"]:["Top","Bottom"],f=g.toLowerCase(),j={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,
+outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+g]=function(l){if(l===d)return j["inner"+g].call(this);return this.each(function(){a(this).css(f,i(this,l)+"px")})};a.fn["outer"+g]=function(l,o){if(typeof l!=="number")return j["outer"+g].call(this,l);return this.each(function(){a(this).css(f,i(this,l,true,o)+"px")})}});a.extend(a.expr[":"],{data:function(h,g,i){return!!a.data(h,i[3])},focusable:function(h){return c(h,!isNaN(a.attr(h,"tabindex")))},tabbable:function(h){var g=a.attr(h,
+"tabindex"),i=isNaN(g);return(i||g>=0)&&c(h,!i)}});a(function(){var h=document.body,g=h.appendChild(g=document.createElement("div"));a.extend(g.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=g.offsetHeight===100;a.support.selectstart="onselectstart"in g;h.removeChild(g).style.display="none"});a.extend(a.ui,{plugin:{add:function(h,g,i){h=a.ui[h].prototype;for(var b in i){h.plugins[b]=h.plugins[b]||[];h.plugins[b].push([g,i[b]])}},call:function(h,g,i){if((g=h.plugins[g])&&
+h.element[0].parentNode)for(var b=0;b<g.length;b++)h.options[g[b][0]]&&g[b][1].apply(h.element,i)}},contains:function(h,g){return document.compareDocumentPosition?h.compareDocumentPosition(g)&16:h!==g&&h.contains(g)},hasScroll:function(h,g){if(a(h).css("overflow")==="hidden")return false;g=g&&g==="left"?"scrollLeft":"scrollTop";var i=false;if(h[g]>0)return true;h[g]=1;i=h[g]>0;h[g]=0;return i},isOverAxis:function(h,g,i){return h>g&&h<g+i},isOver:function(h,g,i,b,f,j){return a.ui.isOverAxis(h,i,f)&&
+a.ui.isOverAxis(g,b,j)}})}})(jQuery);
+(function(a,d){if(a.cleanData){var c=a.cleanData;a.cleanData=function(h){for(var g=0,i;(i=h[g])!=null;g++)try{a(i).triggerHandler("remove")}catch(b){}c(h)}}else{var e=a.fn.remove;a.fn.remove=function(h,g){return this.each(function(){if(!g)if(!h||a.filter(h,[this]).length)a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(i){}});return e.call(a(this),h,g)})}}a.widget=function(h,g,i){var b=h.split(".")[0],f;h=h.split(".")[1];f=b+"-"+h;if(!i){i=g;g=a.Widget}a.expr[":"][f]=
+function(j){return!!a.data(j,h)};a[b]=a[b]||{};a[b][h]=function(j,l){arguments.length&&this._createWidget(j,l)};g=new g;g.options=a.extend(true,{},g.options);a[b][h].prototype=a.extend(true,g,{namespace:b,widgetName:h,widgetEventPrefix:a[b][h].prototype.widgetEventPrefix||h,widgetBaseClass:f},i);a.widget.bridge(h,a[b][h])};a.widget.bridge=function(h,g){a.fn[h]=function(i){var b=typeof i==="string",f=Array.prototype.slice.call(arguments,1),j=this;i=!b&&f.length?a.extend.apply(null,[true,i].concat(f)):
+i;if(b&&i.charAt(0)==="_")return j;b?this.each(function(){var l=a.data(this,h),o=l&&a.isFunction(l[i])?l[i].apply(l,f):l;if(o!==l&&o!==d){j=o;return false}}):this.each(function(){var l=a.data(this,h);l?l.option(i||{})._init():a.data(this,h,new g(i,this))});return j}};a.Widget=function(h,g){arguments.length&&this._createWidget(h,g)};a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(h,g){a.data(g,this.widgetName,this);this.element=a(g);this.options=
+a.extend(true,{},this.options,this._getCreateOptions(),h);var i=this;this.element.bind("remove."+this.widgetName,function(){i.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+
+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(h,g){var i=h;if(arguments.length===0)return a.extend({},this.options);if(typeof h==="string"){if(g===d)return this.options[h];i={};i[h]=g}this._setOptions(i);return this},_setOptions:function(h){var g=this;a.each(h,function(i,b){g._setOption(i,b)});return this},_setOption:function(h,g){this.options[h]=g;if(h==="disabled")this.widget()[g?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",
+g);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(h,g,i){var b=this.options[h];g=a.Event(g);g.type=(h===this.widgetEventPrefix?h:this.widgetEventPrefix+h).toLowerCase();i=i||{};if(g.originalEvent){h=a.event.props.length;for(var f;h;){f=a.event.props[--h];g[f]=g.originalEvent[f]}}this.element.trigger(g,i);return!(a.isFunction(b)&&b.call(this.element[0],g,i)===false||g.isDefaultPrevented())}}})(jQuery);
+(function(a){var d=false;a(document).mouseup(function(){d=false});a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var c=this;this.element.bind("mousedown."+this.widgetName,function(e){return c._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===a.data(e.target,c.widgetName+".preventClickEvent")){a.removeData(e.target,c.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
+this.widgetName)},_mouseDown:function(c){if(!d){this._mouseStarted&&this._mouseUp(c);this._mouseDownEvent=c;var e=this,h=c.which==1,g=typeof this.options.cancel=="string"&&c.target.nodeName?a(c.target).closest(this.options.cancel).length:false;if(!h||g||!this._mouseCapture(c))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(c)&&this._mouseDelayMet(c)){this._mouseStarted=
+this._mouseStart(c)!==false;if(!this._mouseStarted){c.preventDefault();return true}}true===a.data(c.target,this.widgetName+".preventClickEvent")&&a.removeData(c.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(i){return e._mouseMove(i)};this._mouseUpDelegate=function(i){return e._mouseUp(i)};a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.preventDefault();return d=true}},_mouseMove:function(c){if(a.browser.msie&&
+!(document.documentMode>=9)&&!c.button)return this._mouseUp(c);if(this._mouseStarted){this._mouseDrag(c);return c.preventDefault()}if(this._mouseDistanceMet(c)&&this._mouseDelayMet(c))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,c)!==false)?this._mouseDrag(c):this._mouseUp(c);return!this._mouseStarted},_mouseUp:function(c){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=
+false;c.target==this._mouseDownEvent.target&&a.data(c.target,this.widgetName+".preventClickEvent",true);this._mouseStop(c)}return false},_mouseDistanceMet:function(c){return Math.max(Math.abs(this._mouseDownEvent.pageX-c.pageX),Math.abs(this._mouseDownEvent.pageY-c.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+(function(a){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper==
+"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(d){var c=
+this.options;if(this.helper||c.disabled||a(d.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(d);if(!this.handle)return false;if(c.iframeFix)a(c.iframeFix===true?"iframe":c.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(a(this).offset()).appendTo("body")});return true},_mouseStart:function(d){var c=this.options;
+this.helper=this._createHelper(d);this._cacheHelperProportions();if(a.ui.ddmanager)a.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:d.pageX-this.offset.left,top:d.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});
+this.originalPosition=this.position=this._generatePosition(d);this.originalPageX=d.pageX;this.originalPageY=d.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);c.containment&&this._setContainment();if(this._trigger("start",d)===false){this._clear();return false}this._cacheHelperProportions();a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,d);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(d,true);a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,d);return true},
+_mouseDrag:function(d,c){this.position=this._generatePosition(d);this.positionAbs=this._convertPositionTo("absolute");if(!c){c=this._uiHash();if(this._trigger("drag",d,c)===false){this._mouseUp({});return false}this.position=c.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,d);return false},_mouseStop:function(d){var c=
+false;if(a.ui.ddmanager&&!this.options.dropBehaviour)c=a.ui.ddmanager.drop(this,d);if(this.dropped){c=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===true||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var e=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,
+10),function(){e._trigger("stop",d)!==false&&e._clear()})}else this._trigger("stop",d)!==false&&this._clear();return false},_mouseUp:function(d){this.options.iframeFix===true&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,d);return a.ui.mouse.prototype._mouseUp.call(this,d)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(d){var c=!this.options.handle||
+!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==d.target)c=true});return c},_createHelper:function(d){var c=this.options;d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[d])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo);d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&
+d.css("position","absolute");return d},_adjustOffsetFromHelper:function(d){if(typeof d=="string")d=d.split(" ");if(a.isArray(d))d={left:+d[0],top:+d[1]||0};if("left"in d)this.offset.click.left=d.left+this.margins.left;if("right"in d)this.offset.click.left=this.helperProportions.width-d.right+this.margins.left;if("top"in d)this.offset.click.top=d.top+this.margins.top;if("bottom"in d)this.offset.click.top=this.helperProportions.height-d.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=
+this.helper.offsetParent();var d=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){d.left+=this.scrollParent.scrollLeft();d.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)d={top:0,left:0};return{top:d.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:d.left+(parseInt(this.offsetParent.css("borderLeftWidth"),
+10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var d=this.element.position();return{top:d.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:d.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),
+10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var d=this.options;if(d.containment=="parent")d.containment=this.helper[0].parentNode;if(d.containment=="document"||d.containment=="window")this.containment=[d.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,d.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,
+(d.containment=="document"?0:a(window).scrollLeft())+a(d.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(d.containment=="document"?0:a(window).scrollTop())+(a(d.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(d.containment)&&d.containment.constructor!=Array){d=a(d.containment);var c=d[0];if(c){d.offset();var e=a(c).css("overflow")!=
+"hidden";this.containment=[(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0),(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0),(e?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),
+10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=d}}else if(d.containment.constructor==Array)this.containment=d.containment},_convertPositionTo:function(d,c){if(!c)c=this.position;d=d=="absolute"?1:-1;var e=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,h=/(html|body)/i.test(e[0].tagName);return{top:c.top+
+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():h?0:e.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():h?0:e.scrollLeft())*d)}},_generatePosition:function(d){var c=this.options,e=this.cssPosition=="absolute"&&
+!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,h=/(html|body)/i.test(e[0].tagName),g=d.pageX,i=d.pageY;if(this.originalPosition){var b;if(this.containment){if(this.relative_container){b=this.relative_container.offset();b=[this.containment[0]+b.left,this.containment[1]+b.top,this.containment[2]+b.left,this.containment[3]+b.top]}else b=this.containment;if(d.pageX-this.offset.click.left<b[0])g=b[0]+this.offset.click.left;
+if(d.pageY-this.offset.click.top<b[1])i=b[1]+this.offset.click.top;if(d.pageX-this.offset.click.left>b[2])g=b[2]+this.offset.click.left;if(d.pageY-this.offset.click.top>b[3])i=b[3]+this.offset.click.top}if(c.grid){i=c.grid[1]?this.originalPageY+Math.round((i-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;i=b?!(i-this.offset.click.top<b[1]||i-this.offset.click.top>b[3])?i:!(i-this.offset.click.top<b[1])?i-c.grid[1]:i+c.grid[1]:i;g=c.grid[0]?this.originalPageX+Math.round((g-this.originalPageX)/
+c.grid[0])*c.grid[0]:this.originalPageX;g=b?!(g-this.offset.click.left<b[0]||g-this.offset.click.left>b[2])?g:!(g-this.offset.click.left<b[0])?g-c.grid[0]:g+c.grid[0]:g}}return{top:i-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():h?0:e.scrollTop()),left:g-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<
+526&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():h?0:e.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=false},_trigger:function(d,c,e){e=e||this._uiHash();a.ui.plugin.call(this,d,[c,e]);if(d=="drag")this.positionAbs=this._convertPositionTo("absolute");return a.Widget.prototype._trigger.call(this,d,c,
+e)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});a.extend(a.ui.draggable,{version:"1.8.16"});a.ui.plugin.add("draggable","connectToSortable",{start:function(d,c){var e=a(this).data("draggable"),h=e.options,g=a.extend({},c,{item:e.element});e.sortables=[];a(h.connectToSortable).each(function(){var i=a.data(this,"sortable");if(i&&!i.options.disabled){e.sortables.push({instance:i,shouldRevert:i.options.revert});
+i.refreshPositions();i._trigger("activate",d,g)}})},stop:function(d,c){var e=a(this).data("draggable"),h=a.extend({},c,{item:e.element});a.each(e.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;e.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert)this.instance.options.revert=true;this.instance._mouseStop(d);this.instance.options.helper=this.instance.options._helper;e.options.helper=="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})}else{this.instance.cancelHelperRemoval=
+false;this.instance._trigger("deactivate",d,h)}})},drag:function(d,c){var e=a(this).data("draggable"),h=this;a.each(e.sortables,function(){this.instance.positionAbs=e.positionAbs;this.instance.helperProportions=e.helperProportions;this.instance.offset.click=e.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(h).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",true);
+this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return c.helper[0]};d.target=this.instance.currentItem[0];this.instance._mouseCapture(d,true);this.instance._mouseStart(d,true,true);this.instance.offset.click.top=e.offset.click.top;this.instance.offset.click.left=e.offset.click.left;this.instance.offset.parent.left-=e.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=e.offset.parent.top-this.instance.offset.parent.top;
+e._trigger("toSortable",d);e.dropped=this.instance.element;e.currentItem=e.element;this.instance.fromOutside=e}this.instance.currentItem&&this.instance._mouseDrag(d)}else if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",d,this.instance._uiHash(this.instance));this.instance._mouseStop(d,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();this.instance.placeholder&&
+this.instance.placeholder.remove();e._trigger("fromSortable",d);e.dropped=false}})}});a.ui.plugin.add("draggable","cursor",{start:function(){var d=a("body"),c=a(this).data("draggable").options;if(d.css("cursor"))c._cursor=d.css("cursor");d.css("cursor",c.cursor)},stop:function(){var d=a(this).data("draggable").options;d._cursor&&a("body").css("cursor",d._cursor)}});a.ui.plugin.add("draggable","opacity",{start:function(d,c){d=a(c.helper);c=a(this).data("draggable").options;if(d.css("opacity"))c._opacity=
+d.css("opacity");d.css("opacity",c.opacity)},stop:function(d,c){d=a(this).data("draggable").options;d._opacity&&a(c.helper).css("opacity",d._opacity)}});a.ui.plugin.add("draggable","scroll",{start:function(){var d=a(this).data("draggable");if(d.scrollParent[0]!=document&&d.scrollParent[0].tagName!="HTML")d.overflowOffset=d.scrollParent.offset()},drag:function(d){var c=a(this).data("draggable"),e=c.options,h=false;if(c.scrollParent[0]!=document&&c.scrollParent[0].tagName!="HTML"){if(!e.axis||e.axis!=
+"x")if(c.overflowOffset.top+c.scrollParent[0].offsetHeight-d.pageY<e.scrollSensitivity)c.scrollParent[0].scrollTop=h=c.scrollParent[0].scrollTop+e.scrollSpeed;else if(d.pageY-c.overflowOffset.top<e.scrollSensitivity)c.scrollParent[0].scrollTop=h=c.scrollParent[0].scrollTop-e.scrollSpeed;if(!e.axis||e.axis!="y")if(c.overflowOffset.left+c.scrollParent[0].offsetWidth-d.pageX<e.scrollSensitivity)c.scrollParent[0].scrollLeft=h=c.scrollParent[0].scrollLeft+e.scrollSpeed;else if(d.pageX-c.overflowOffset.left<
+e.scrollSensitivity)c.scrollParent[0].scrollLeft=h=c.scrollParent[0].scrollLeft-e.scrollSpeed}else{if(!e.axis||e.axis!="x")if(d.pageY-a(document).scrollTop()<e.scrollSensitivity)h=a(document).scrollTop(a(document).scrollTop()-e.scrollSpeed);else if(a(window).height()-(d.pageY-a(document).scrollTop())<e.scrollSensitivity)h=a(document).scrollTop(a(document).scrollTop()+e.scrollSpeed);if(!e.axis||e.axis!="y")if(d.pageX-a(document).scrollLeft()<e.scrollSensitivity)h=a(document).scrollLeft(a(document).scrollLeft()-
+e.scrollSpeed);else if(a(window).width()-(d.pageX-a(document).scrollLeft())<e.scrollSensitivity)h=a(document).scrollLeft(a(document).scrollLeft()+e.scrollSpeed)}h!==false&&a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(c,d)}});a.ui.plugin.add("draggable","snap",{start:function(){var d=a(this).data("draggable"),c=d.options;d.snapElements=[];a(c.snap.constructor!=String?c.snap.items||":data(draggable)":c.snap).each(function(){var e=a(this),h=e.offset();this!=d.element[0]&&d.snapElements.push({item:this,
+width:e.outerWidth(),height:e.outerHeight(),top:h.top,left:h.left})})},drag:function(d,c){for(var e=a(this).data("draggable"),h=e.options,g=h.snapTolerance,i=c.offset.left,b=i+e.helperProportions.width,f=c.offset.top,j=f+e.helperProportions.height,l=e.snapElements.length-1;l>=0;l--){var o=e.snapElements[l].left,n=o+e.snapElements[l].width,k=e.snapElements[l].top,m=k+e.snapElements[l].height;if(o-g<i&&i<n+g&&k-g<f&&f<m+g||o-g<i&&i<n+g&&k-g<j&&j<m+g||o-g<b&&b<n+g&&k-g<f&&f<m+g||o-g<b&&b<n+g&&k-g<j&&
+j<m+g){if(h.snapMode!="inner"){var p=Math.abs(k-j)<=g,q=Math.abs(m-f)<=g,s=Math.abs(o-b)<=g,r=Math.abs(n-i)<=g;if(p)c.position.top=e._convertPositionTo("relative",{top:k-e.helperProportions.height,left:0}).top-e.margins.top;if(q)c.position.top=e._convertPositionTo("relative",{top:m,left:0}).top-e.margins.top;if(s)c.position.left=e._convertPositionTo("relative",{top:0,left:o-e.helperProportions.width}).left-e.margins.left;if(r)c.position.left=e._convertPositionTo("relative",{top:0,left:n}).left-e.margins.left}var u=
+p||q||s||r;if(h.snapMode!="outer"){p=Math.abs(k-f)<=g;q=Math.abs(m-j)<=g;s=Math.abs(o-i)<=g;r=Math.abs(n-b)<=g;if(p)c.position.top=e._convertPositionTo("relative",{top:k,left:0}).top-e.margins.top;if(q)c.position.top=e._convertPositionTo("relative",{top:m-e.helperProportions.height,left:0}).top-e.margins.top;if(s)c.position.left=e._convertPositionTo("relative",{top:0,left:o}).left-e.margins.left;if(r)c.position.left=e._convertPositionTo("relative",{top:0,left:n-e.helperProportions.width}).left-e.margins.left}if(!e.snapElements[l].snapping&&
+(p||q||s||r||u))e.options.snap.snap&&e.options.snap.snap.call(e.element,d,a.extend(e._uiHash(),{snapItem:e.snapElements[l].item}));e.snapElements[l].snapping=p||q||s||r||u}else{e.snapElements[l].snapping&&e.options.snap.release&&e.options.snap.release.call(e.element,d,a.extend(e._uiHash(),{snapItem:e.snapElements[l].item}));e.snapElements[l].snapping=false}}}});a.ui.plugin.add("draggable","stack",{start:function(){var d=a(this).data("draggable").options;d=a.makeArray(a(d.stack)).sort(function(e,h){return(parseInt(a(e).css("zIndex"),
+10)||0)-(parseInt(a(h).css("zIndex"),10)||0)});if(d.length){var c=parseInt(d[0].style.zIndex)||0;a(d).each(function(e){this.style.zIndex=c+e});this[0].style.zIndex=c+d.length}}});a.ui.plugin.add("draggable","zIndex",{start:function(d,c){d=a(c.helper);c=a(this).data("draggable").options;if(d.css("zIndex"))c._zIndex=d.css("zIndex");d.css("zIndex",c.zIndex)},stop:function(d,c){d=a(this).data("draggable").options;d._zIndex&&a(c.helper).css("zIndex",d._zIndex)}})})(jQuery);
+(function(a){a.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var d=this.options,c=d.accept;this.isover=0;this.isout=1;this.accept=a.isFunction(c)?c:function(e){return e.is(c)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};a.ui.ddmanager.droppables[d.scope]=a.ui.ddmanager.droppables[d.scope]||[];a.ui.ddmanager.droppables[d.scope].push(this);
+d.addClasses&&this.element.addClass("ui-droppable")},destroy:function(){for(var d=a.ui.ddmanager.droppables[this.options.scope],c=0;c<d.length;c++)d[c]==this&&d.splice(c,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(d,c){if(d=="accept")this.accept=a.isFunction(c)?c:function(e){return e.is(c)};a.Widget.prototype._setOption.apply(this,arguments)},_activate:function(d){var c=a.ui.ddmanager.current;this.options.activeClass&&
+this.element.addClass(this.options.activeClass);c&&this._trigger("activate",d,this.ui(c))},_deactivate:function(d){var c=a.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass);c&&this._trigger("deactivate",d,this.ui(c))},_over:function(d){var c=a.ui.ddmanager.current;if(!(!c||(c.currentItem||c.element)[0]==this.element[0]))if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.hoverClass&&this.element.addClass(this.options.hoverClass);
+this._trigger("over",d,this.ui(c))}},_out:function(d){var c=a.ui.ddmanager.current;if(!(!c||(c.currentItem||c.element)[0]==this.element[0]))if(this.accept.call(this.element[0],c.currentItem||c.element)){this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("out",d,this.ui(c))}},_drop:function(d,c){var e=c||a.ui.ddmanager.current;if(!e||(e.currentItem||e.element)[0]==this.element[0])return false;var h=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var g=
+a.data(this,"droppable");if(g.options.greedy&&!g.options.disabled&&g.options.scope==e.options.scope&&g.accept.call(g.element[0],e.currentItem||e.element)&&a.ui.intersect(e,a.extend(g,{offset:g.element.offset()}),g.options.tolerance)){h=true;return false}});if(h)return false;if(this.accept.call(this.element[0],e.currentItem||e.element)){this.options.activeClass&&this.element.removeClass(this.options.activeClass);this.options.hoverClass&&this.element.removeClass(this.options.hoverClass);this._trigger("drop",
+d,this.ui(e));return this.element}return false},ui:function(d){return{draggable:d.currentItem||d.element,helper:d.helper,position:d.position,offset:d.positionAbs}}});a.extend(a.ui.droppable,{version:"1.8.16"});a.ui.intersect=function(d,c,e){if(!c.offset)return false;var h=(d.positionAbs||d.position.absolute).left,g=h+d.helperProportions.width,i=(d.positionAbs||d.position.absolute).top,b=i+d.helperProportions.height,f=c.offset.left,j=f+c.proportions.width,l=c.offset.top,o=l+c.proportions.height;
+switch(e){case "fit":return f<=h&&g<=j&&l<=i&&b<=o;case "intersect":return f<h+d.helperProportions.width/2&&g-d.helperProportions.width/2<j&&l<i+d.helperProportions.height/2&&b-d.helperProportions.height/2<o;case "pointer":return a.ui.isOver((d.positionAbs||d.position.absolute).top+(d.clickOffset||d.offset.click).top,(d.positionAbs||d.position.absolute).left+(d.clickOffset||d.offset.click).left,l,f,c.proportions.height,c.proportions.width);case "touch":return(i>=l&&i<=o||b>=l&&b<=o||i<l&&b>o)&&(h>=
+f&&h<=j||g>=f&&g<=j||h<f&&g>j);default:return false}};a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(d,c){var e=a.ui.ddmanager.droppables[d.options.scope]||[],h=c?c.type:null,g=(d.currentItem||d.element).find(":data(droppable)").andSelf(),i=0;a:for(;i<e.length;i++)if(!(e[i].options.disabled||d&&!e[i].accept.call(e[i].element[0],d.currentItem||d.element))){for(var b=0;b<g.length;b++)if(g[b]==e[i].element[0]){e[i].proportions.height=0;continue a}e[i].visible=e[i].element.css("display")!=
+"none";if(e[i].visible){h=="mousedown"&&e[i]._activate.call(e[i],c);e[i].offset=e[i].element.offset();e[i].proportions={width:e[i].element[0].offsetWidth,height:e[i].element[0].offsetHeight}}}},drop:function(d,c){var e=false;a.each(a.ui.ddmanager.droppables[d.options.scope]||[],function(){if(this.options){if(!this.options.disabled&&this.visible&&a.ui.intersect(d,this,this.options.tolerance))e=e||this._drop.call(this,c);if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],d.currentItem||
+d.element)){this.isout=1;this.isover=0;this._deactivate.call(this,c)}}});return e},dragStart:function(d,c){d.element.parents(":not(body,html)").bind("scroll.droppable",function(){d.options.refreshPositions||a.ui.ddmanager.prepareOffsets(d,c)})},drag:function(d,c){d.options.refreshPositions&&a.ui.ddmanager.prepareOffsets(d,c);a.each(a.ui.ddmanager.droppables[d.options.scope]||[],function(){if(!(this.options.disabled||this.greedyChild||!this.visible)){var e=a.ui.intersect(d,this,this.options.tolerance);
+if(e=!e&&this.isover==1?"isout":e&&this.isover==0?"isover":null){var h;if(this.options.greedy){var g=this.element.parents(":data(droppable):eq(0)");if(g.length){h=a.data(g[0],"droppable");h.greedyChild=e=="isover"?1:0}}if(h&&e=="isover"){h.isover=0;h.isout=1;h._out.call(h,c)}this[e]=1;this[e=="isout"?"isover":"isout"]=0;this[e=="isover"?"_over":"_out"].call(this,c);if(h&&e=="isout"){h.isout=0;h.isover=1;h._over.call(h,c)}}}})},dragStop:function(d,c){d.element.parents(":not(body,html)").unbind("scroll.droppable");
+d.options.refreshPositions||a.ui.ddmanager.prepareOffsets(d,c)}}})(jQuery);
+(function(a){a.widget("ui.resizable",a.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var e=this,h=this.options;this.element.addClass("ui-resizable");a.extend(this,{_aspectRatio:!!h.aspectRatio,aspectRatio:h.aspectRatio,originalElement:this.element,
+_proportionallyResizeElements:[],_helper:h.helper||h.ghost||h.animate?h.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&a.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(a('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),
+top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=
+this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=h.handles||(!a(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",
+nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var g=this.handles.split(",");this.handles={};for(var i=0;i<g.length;i++){var b=a.trim(g[i]),f=a('<div class="ui-resizable-handle '+("ui-resizable-"+b)+'"></div>');/sw|se|ne|nw/.test(b)&&f.css({zIndex:++h.zIndex});"se"==b&&f.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[b]=".ui-resizable-"+b;this.element.append(f)}}this._renderAxis=function(j){j=j||this.element;for(var l in this.handles){if(this.handles[l].constructor==
+String)this.handles[l]=a(this.handles[l],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=a(this.handles[l],this.element),n=0;n=/sw|ne|nw|se|n|s/.test(l)?o.outerHeight():o.outerWidth();o=["padding",/ne|nw|n/.test(l)?"Top":/se|sw|s/.test(l)?"Bottom":/^e$/.test(l)?"Right":"Left"].join("");j.css(o,n);this._proportionallyResize()}a(this.handles[l])}};this._renderAxis(this.element);this._handles=a(".ui-resizable-handle",this.element).disableSelection();
+this._handles.mouseover(function(){if(!e.resizing){if(this.className)var j=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);e.axis=j&&j[1]?j[1]:"se"}});if(h.autoHide){this._handles.hide();a(this.element).addClass("ui-resizable-autohide").hover(function(){if(!h.disabled){a(this).removeClass("ui-resizable-autohide");e._handles.show()}},function(){if(!h.disabled)if(!e.resizing){a(this).addClass("ui-resizable-autohide");e._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();
+var e=function(g){a(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var h=this.element;h.after(this.originalElement.css({position:h.css("position"),width:h.outerWidth(),height:h.outerHeight(),top:h.css("top"),left:h.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(e){var h=
+false;for(var g in this.handles)if(a(this.handles[g])[0]==e.target)h=true;return!this.options.disabled&&h},_mouseStart:function(e){var h=this.options,g=this.element.position(),i=this.element;this.resizing=true;this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()};if(i.is(".ui-draggable")||/absolute/.test(i.css("position")))i.css({position:"absolute",top:g.top,left:g.left});a.browser.opera&&/relative/.test(i.css("position"))&&i.css({position:"relative",top:"auto",left:"auto"});
+this._renderProxy();g=d(this.helper.css("left"));var b=d(this.helper.css("top"));if(h.containment){g+=a(h.containment).scrollLeft()||0;b+=a(h.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:g,top:b};this.size=this._helper?{width:i.outerWidth(),height:i.outerHeight()}:{width:i.width(),height:i.height()};this.originalSize=this._helper?{width:i.outerWidth(),height:i.outerHeight()}:{width:i.width(),height:i.height()};this.originalPosition={left:g,top:b};this.sizeDiff=
+{width:i.outerWidth()-i.width(),height:i.outerHeight()-i.height()};this.originalMousePosition={left:e.pageX,top:e.pageY};this.aspectRatio=typeof h.aspectRatio=="number"?h.aspectRatio:this.originalSize.width/this.originalSize.height||1;h=a(".ui-resizable-"+this.axis).css("cursor");a("body").css("cursor",h=="auto"?this.axis+"-resize":h);i.addClass("ui-resizable-resizing");this._propagate("start",e);return true},_mouseDrag:function(e){var h=this.helper,g=this.originalMousePosition,i=this._change[this.axis];
+if(!i)return false;g=i.apply(this,[e,e.pageX-g.left||0,e.pageY-g.top||0]);this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey)g=this._updateRatio(g,e);g=this._respectSize(g,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(g);this._trigger("resize",e,this.ui());return false},
+_mouseStop:function(e){this.resizing=false;var h=this.options,g=this;if(this._helper){var i=this._proportionallyResizeElements,b=i.length&&/textarea/i.test(i[0].nodeName);i=b&&a.ui.hasScroll(i[0],"left")?0:g.sizeDiff.height;b=b?0:g.sizeDiff.width;b={width:g.helper.width()-b,height:g.helper.height()-i};i=parseInt(g.element.css("left"),10)+(g.position.left-g.originalPosition.left)||null;var f=parseInt(g.element.css("top"),10)+(g.position.top-g.originalPosition.top)||null;h.animate||this.element.css(a.extend(b,
+{top:f,left:i}));g.helper.height(g.size.height);g.helper.width(g.size.width);this._helper&&!h.animate&&this._proportionallyResize()}a("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",e);this._helper&&this.helper.remove();return false},_updateVirtualBoundaries:function(e){var h=this.options,g,i,b;h={minWidth:c(h.minWidth)?h.minWidth:0,maxWidth:c(h.maxWidth)?h.maxWidth:Infinity,minHeight:c(h.minHeight)?h.minHeight:0,maxHeight:c(h.maxHeight)?h.maxHeight:
+Infinity};if(this._aspectRatio||e){e=h.minHeight*this.aspectRatio;i=h.minWidth/this.aspectRatio;g=h.maxHeight*this.aspectRatio;b=h.maxWidth/this.aspectRatio;if(e>h.minWidth)h.minWidth=e;if(i>h.minHeight)h.minHeight=i;if(g<h.maxWidth)h.maxWidth=g;if(b<h.maxHeight)h.maxHeight=b}this._vBoundaries=h},_updateCache:function(e){this.offset=this.helper.offset();if(c(e.left))this.position.left=e.left;if(c(e.top))this.position.top=e.top;if(c(e.height))this.size.height=e.height;if(c(e.width))this.size.width=
+e.width},_updateRatio:function(e){var h=this.position,g=this.size,i=this.axis;if(c(e.height))e.width=e.height*this.aspectRatio;else if(c(e.width))e.height=e.width/this.aspectRatio;if(i=="sw"){e.left=h.left+(g.width-e.width);e.top=null}if(i=="nw"){e.top=h.top+(g.height-e.height);e.left=h.left+(g.width-e.width)}return e},_respectSize:function(e){var h=this._vBoundaries,g=this.axis,i=c(e.width)&&h.maxWidth&&h.maxWidth<e.width,b=c(e.height)&&h.maxHeight&&h.maxHeight<e.height,f=c(e.width)&&h.minWidth&&
+h.minWidth>e.width,j=c(e.height)&&h.minHeight&&h.minHeight>e.height;if(f)e.width=h.minWidth;if(j)e.height=h.minHeight;if(i)e.width=h.maxWidth;if(b)e.height=h.maxHeight;var l=this.originalPosition.left+this.originalSize.width,o=this.position.top+this.size.height,n=/sw|nw|w/.test(g);g=/nw|ne|n/.test(g);if(f&&n)e.left=l-h.minWidth;if(i&&n)e.left=l-h.maxWidth;if(j&&g)e.top=o-h.minHeight;if(b&&g)e.top=o-h.maxHeight;if((h=!e.width&&!e.height)&&!e.left&&e.top)e.top=null;else if(h&&!e.top&&e.left)e.left=
+null;return e},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e=this.helper||this.element,h=0;h<this._proportionallyResizeElements.length;h++){var g=this._proportionallyResizeElements[h];if(!this.borderDif){var i=[g.css("borderTopWidth"),g.css("borderRightWidth"),g.css("borderBottomWidth"),g.css("borderLeftWidth")],b=[g.css("paddingTop"),g.css("paddingRight"),g.css("paddingBottom"),g.css("paddingLeft")];this.borderDif=a.map(i,function(f,j){f=parseInt(f,10)||
+0;j=parseInt(b[j],10)||0;return f+j})}a.browser.msie&&(a(e).is(":hidden")||a(e).parents(":hidden").length)||g.css({height:e.height()-this.borderDif[0]-this.borderDif[2]||0,width:e.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var e=this.options;this.elementOffset=this.element.offset();if(this._helper){this.helper=this.helper||a('<div style="overflow:hidden;"></div>');var h=a.browser.msie&&a.browser.version<7,g=h?1:0;h=h?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+
+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++e.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(e,h){return{width:this.originalSize.width+h}},w:function(e,h){return{left:this.originalPosition.left+h,width:this.originalSize.width-h}},n:function(e,h,g){return{top:this.originalPosition.top+g,height:this.originalSize.height-g}},s:function(e,h,g){return{height:this.originalSize.height+
+g}},se:function(e,h,g){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,h,g]))},sw:function(e,h,g){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,h,g]))},ne:function(e,h,g){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,h,g]))},nw:function(e,h,g){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,h,g]))}},_propagate:function(e,h){a.ui.plugin.call(this,e,[h,this.ui()]);
+e!="resize"&&this._trigger(e,h,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});a.extend(a.ui.resizable,{version:"1.8.16"});a.ui.plugin.add("resizable","alsoResize",{start:function(){var e=a(this).data("resizable").options,h=function(g){a(g).each(function(){var i=a(this);i.data("resizable-alsoresize",{width:parseInt(i.width(),
+10),height:parseInt(i.height(),10),left:parseInt(i.css("left"),10),top:parseInt(i.css("top"),10),position:i.css("position")})})};if(typeof e.alsoResize=="object"&&!e.alsoResize.parentNode)if(e.alsoResize.length){e.alsoResize=e.alsoResize[0];h(e.alsoResize)}else a.each(e.alsoResize,function(g){h(g)});else h(e.alsoResize)},resize:function(e,h){var g=a(this).data("resizable");e=g.options;var i=g.originalSize,b=g.originalPosition,f={height:g.size.height-i.height||0,width:g.size.width-i.width||0,top:g.position.top-
+b.top||0,left:g.position.left-b.left||0},j=function(l,o){a(l).each(function(){var n=a(this),k=a(this).data("resizable-alsoresize"),m={},p=o&&o.length?o:n.parents(h.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(p,function(q,s){if((q=(k[s]||0)+(f[s]||0))&&q>=0)m[s]=q||null});if(a.browser.opera&&/relative/.test(n.css("position"))){g._revertToRelativePosition=true;n.css({position:"absolute",top:"auto",left:"auto"})}n.css(m)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?
+a.each(e.alsoResize,function(l,o){j(l,o)}):j(e.alsoResize)},stop:function(){var e=a(this).data("resizable"),h=e.options,g=function(i){a(i).each(function(){var b=a(this);b.css({position:b.data("resizable-alsoresize").position})})};if(e._revertToRelativePosition){e._revertToRelativePosition=false;typeof h.alsoResize=="object"&&!h.alsoResize.nodeType?a.each(h.alsoResize,function(i){g(i)}):g(h.alsoResize)}a(this).removeData("resizable-alsoresize")}});a.ui.plugin.add("resizable","animate",{stop:function(e){var h=
+a(this).data("resizable"),g=h.options,i=h._proportionallyResizeElements,b=i.length&&/textarea/i.test(i[0].nodeName),f=b&&a.ui.hasScroll(i[0],"left")?0:h.sizeDiff.height;b={width:h.size.width-(b?0:h.sizeDiff.width),height:h.size.height-f};f=parseInt(h.element.css("left"),10)+(h.position.left-h.originalPosition.left)||null;var j=parseInt(h.element.css("top"),10)+(h.position.top-h.originalPosition.top)||null;h.element.animate(a.extend(b,j&&f?{top:j,left:f}:{}),{duration:g.animateDuration,easing:g.animateEasing,
+step:function(){var l={width:parseInt(h.element.css("width"),10),height:parseInt(h.element.css("height"),10),top:parseInt(h.element.css("top"),10),left:parseInt(h.element.css("left"),10)};i&&i.length&&a(i[0]).css({width:l.width,height:l.height});h._updateCache(l);h._propagate("resize",e)}})}});a.ui.plugin.add("resizable","containment",{start:function(){var e=a(this).data("resizable"),h=e.element,g=e.options.containment;if(h=g instanceof a?g.get(0):/parent/.test(g)?h.parent().get(0):g){e.containerElement=
+a(h);if(/document/.test(g)||g==document){e.containerOffset={left:0,top:0};e.containerPosition={left:0,top:0};e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight}}else{var i=a(h),b=[];a(["Top","Right","Left","Bottom"]).each(function(l,o){b[l]=d(i.css("padding"+o))});e.containerOffset=i.offset();e.containerPosition=i.position();e.containerSize={height:i.innerHeight()-b[3],width:i.innerWidth()-b[1]};g=e.containerOffset;
+var f=e.containerSize.height,j=e.containerSize.width;j=a.ui.hasScroll(h,"left")?h.scrollWidth:j;f=a.ui.hasScroll(h)?h.scrollHeight:f;e.parentData={element:h,left:g.left,top:g.top,width:j,height:f}}}},resize:function(e){var h=a(this).data("resizable"),g=h.options,i=h.containerOffset,b=h.position;e=h._aspectRatio||e.shiftKey;var f={top:0,left:0},j=h.containerElement;if(j[0]!=document&&/static/.test(j.css("position")))f=i;if(b.left<(h._helper?i.left:0)){h.size.width+=h._helper?h.position.left-i.left:
+h.position.left-f.left;if(e)h.size.height=h.size.width/g.aspectRatio;h.position.left=g.helper?i.left:0}if(b.top<(h._helper?i.top:0)){h.size.height+=h._helper?h.position.top-i.top:h.position.top;if(e)h.size.width=h.size.height*g.aspectRatio;h.position.top=h._helper?i.top:0}h.offset.left=h.parentData.left+h.position.left;h.offset.top=h.parentData.top+h.position.top;g=Math.abs((h._helper?h.offset.left-f.left:h.offset.left-f.left)+h.sizeDiff.width);i=Math.abs((h._helper?h.offset.top-f.top:h.offset.top-
+i.top)+h.sizeDiff.height);b=h.containerElement.get(0)==h.element.parent().get(0);f=/relative|absolute/.test(h.containerElement.css("position"));if(b&&f)g-=h.parentData.left;if(g+h.size.width>=h.parentData.width){h.size.width=h.parentData.width-g;if(e)h.size.height=h.size.width/h.aspectRatio}if(i+h.size.height>=h.parentData.height){h.size.height=h.parentData.height-i;if(e)h.size.width=h.size.height*h.aspectRatio}},stop:function(){var e=a(this).data("resizable"),h=e.options,g=e.containerOffset,i=e.containerPosition,
+b=e.containerElement,f=a(e.helper),j=f.offset(),l=f.outerWidth()-e.sizeDiff.width;f=f.outerHeight()-e.sizeDiff.height;e._helper&&!h.animate&&/relative/.test(b.css("position"))&&a(this).css({left:j.left-i.left-g.left,width:l,height:f});e._helper&&!h.animate&&/static/.test(b.css("position"))&&a(this).css({left:j.left-i.left-g.left,width:l,height:f})}});a.ui.plugin.add("resizable","ghost",{start:function(){var e=a(this).data("resizable"),h=e.options,g=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,
+display:"block",position:"relative",height:g.height,width:g.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof h.ghost=="string"?h.ghost:"");e.ghost.appendTo(e.helper)},resize:function(){var e=a(this).data("resizable");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=a(this).data("resizable");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}});a.ui.plugin.add("resizable","grid",{resize:function(){var e=
+a(this).data("resizable"),h=e.options,g=e.size,i=e.originalSize,b=e.originalPosition,f=e.axis;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var j=Math.round((g.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1);h=Math.round((g.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(f)){e.size.width=i.width+j;e.size.height=i.height+h}else if(/^(ne)$/.test(f)){e.size.width=i.width+j;e.size.height=i.height+h;e.position.top=b.top-h}else{if(/^(sw)$/.test(f)){e.size.width=i.width+j;e.size.height=
+i.height+h}else{e.size.width=i.width+j;e.size.height=i.height+h;e.position.top=b.top-h}e.position.left=b.left-j}}});var d=function(e){return parseInt(e,10)||0},c=function(e){return!isNaN(parseInt(e,10))}})(jQuery);
+(function(a){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var d=this;this.element.addClass("ui-selectable");this.dragged=false;var c;this.refresh=function(){c=a(d.options.filter,d.element[0]);c.each(function(){var e=a(this),h=e.offset();a.data(this,"selectable-item",{element:this,$element:e,left:h.left,top:h.top,right:h.left+e.outerWidth(),bottom:h.top+e.outerHeight(),startselected:false,selected:e.hasClass("ui-selected"),
+selecting:e.hasClass("ui-selecting"),unselecting:e.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=a("<div class='ui-selectable-helper'></div>")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(d){var c=this;this.opos=[d.pageX,
+d.pageY];if(!this.options.disabled){var e=this.options;this.selectees=a(e.filter,this.element[0]);this._trigger("start",d);a(e.appendTo).append(this.helper);this.helper.css({left:d.clientX,top:d.clientY,width:0,height:0});e.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var h=a.data(this,"selectable-item");h.startselected=true;if(!d.metaKey){h.$element.removeClass("ui-selected");h.selected=false;h.$element.addClass("ui-unselecting");h.unselecting=true;c._trigger("unselecting",
+d,{unselecting:h.element})}});a(d.target).parents().andSelf().each(function(){var h=a.data(this,"selectable-item");if(h){var g=!d.metaKey||!h.$element.hasClass("ui-selected");h.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");h.unselecting=!g;h.selecting=g;(h.selected=g)?c._trigger("selecting",d,{selecting:h.element}):c._trigger("unselecting",d,{unselecting:h.element});return false}})}},_mouseDrag:function(d){var c=this;this.dragged=true;if(!this.options.disabled){var e=
+this.options,h=this.opos[0],g=this.opos[1],i=d.pageX,b=d.pageY;if(h>i){var f=i;i=h;h=f}if(g>b){f=b;b=g;g=f}this.helper.css({left:h,top:g,width:i-h,height:b-g});this.selectees.each(function(){var j=a.data(this,"selectable-item");if(!(!j||j.element==c.element[0])){var l=false;if(e.tolerance=="touch")l=!(j.left>i||j.right<h||j.top>b||j.bottom<g);else if(e.tolerance=="fit")l=j.left>h&&j.right<i&&j.top>g&&j.bottom<b;if(l){if(j.selected){j.$element.removeClass("ui-selected");j.selected=false}if(j.unselecting){j.$element.removeClass("ui-unselecting");
+j.unselecting=false}if(!j.selecting){j.$element.addClass("ui-selecting");j.selecting=true;c._trigger("selecting",d,{selecting:j.element})}}else{if(j.selecting)if(d.metaKey&&j.startselected){j.$element.removeClass("ui-selecting");j.selecting=false;j.$element.addClass("ui-selected");j.selected=true}else{j.$element.removeClass("ui-selecting");j.selecting=false;if(j.startselected){j.$element.addClass("ui-unselecting");j.unselecting=true}c._trigger("unselecting",d,{unselecting:j.element})}if(j.selected)if(!d.metaKey&&
+!j.startselected){j.$element.removeClass("ui-selected");j.selected=false;j.$element.addClass("ui-unselecting");j.unselecting=true;c._trigger("unselecting",d,{unselecting:j.element})}}}});return false}},_mouseStop:function(d){var c=this;this.dragged=false;a(".ui-unselecting",this.element[0]).each(function(){var e=a.data(this,"selectable-item");e.$element.removeClass("ui-unselecting");e.unselecting=false;e.startselected=false;c._trigger("unselected",d,{unselected:e.element})});a(".ui-selecting",this.element[0]).each(function(){var e=
+a.data(this,"selectable-item");e.$element.removeClass("ui-selecting").addClass("ui-selected");e.selecting=false;e.selected=true;e.startselected=true;c._trigger("selected",d,{selected:e.element})});this._trigger("stop",d);this.helper.remove();return false}});a.extend(a.ui.selectable,{version:"1.8.16"})})(jQuery);
+(function(a){a.widget("ui.sortable",a.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var d=this.options;this.containerCache={};this.element.addClass("ui-sortable");
+this.refresh();this.floating=this.items.length?d.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var d=this.items.length-1;d>=0;d--)this.items[d].item.removeData("sortable-item");return this},_setOption:function(d,c){if(d===
+"disabled"){this.options[d]=c;this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")}else a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(d,c){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(d);var e=null,h=this;a(d.target).parents().each(function(){if(a.data(this,"sortable-item")==h){e=a(this);return false}});if(a.data(d.target,"sortable-item")==h)e=a(d.target);if(!e)return false;if(this.options.handle&&
+!c){var g=false;a(this.options.handle,e).find("*").andSelf().each(function(){if(this==d.target)g=true});if(!g)return false}this.currentItem=e;this._removeCurrentsFromItems();return true},_mouseStart:function(d,c,e){c=this.options;var h=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(d);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,
+left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");a.extend(this.offset,{click:{left:d.pageX-this.offset.left,top:d.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(d);this.originalPageX=d.pageX;this.originalPageY=d.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};
+this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();c.containment&&this._setContainment();if(c.cursor){if(a("body").css("cursor"))this._storedCursor=a("body").css("cursor");a("body").css("cursor",c.cursor)}if(c.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",c.opacity)}if(c.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",c.zIndex)}if(this.scrollParent[0]!=
+document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",d,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!e)for(e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("activate",d,h._uiHash(this));if(a.ui.ddmanager)a.ui.ddmanager.current=this;a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,d);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(d);
+return true},_mouseDrag:function(d){this.position=this._generatePosition(d);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var c=this.options,e=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-d.pageY<c.scrollSensitivity)this.scrollParent[0].scrollTop=e=this.scrollParent[0].scrollTop+c.scrollSpeed;else if(d.pageY-this.overflowOffset.top<
+c.scrollSensitivity)this.scrollParent[0].scrollTop=e=this.scrollParent[0].scrollTop-c.scrollSpeed;if(this.overflowOffset.left+this.scrollParent[0].offsetWidth-d.pageX<c.scrollSensitivity)this.scrollParent[0].scrollLeft=e=this.scrollParent[0].scrollLeft+c.scrollSpeed;else if(d.pageX-this.overflowOffset.left<c.scrollSensitivity)this.scrollParent[0].scrollLeft=e=this.scrollParent[0].scrollLeft-c.scrollSpeed}else{if(d.pageY-a(document).scrollTop()<c.scrollSensitivity)e=a(document).scrollTop(a(document).scrollTop()-
+c.scrollSpeed);else if(a(window).height()-(d.pageY-a(document).scrollTop())<c.scrollSensitivity)e=a(document).scrollTop(a(document).scrollTop()+c.scrollSpeed);if(d.pageX-a(document).scrollLeft()<c.scrollSensitivity)e=a(document).scrollLeft(a(document).scrollLeft()-c.scrollSpeed);else if(a(window).width()-(d.pageX-a(document).scrollLeft())<c.scrollSensitivity)e=a(document).scrollLeft(a(document).scrollLeft()+c.scrollSpeed)}e!==false&&a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,
+d)}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";for(c=this.items.length-1;c>=0;c--){e=this.items[c];var h=e.item[0],g=this._intersectsWithPointer(e);if(g)if(h!=this.currentItem[0]&&this.placeholder[g==1?"next":"prev"]()[0]!=h&&!a.ui.contains(this.placeholder[0],h)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],
+h):true)){this.direction=g==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(e))this._rearrange(d,e);else break;this._trigger("change",d,this._uiHash());break}}this._contactContainers(d);a.ui.ddmanager&&a.ui.ddmanager.drag(this,d);this._trigger("sort",d,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(d,c){if(d){a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,d);if(this.options.revert){var e=this;c=e.placeholder.offset();
+e.reverting=true;a(this.helper).animate({left:c.left-this.offset.parent.left-e.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:c.top-this.offset.parent.top-e.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){e._clear(d)})}else this._clear(d,c);return false}},cancel:function(){var d=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):
+this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--){this.containers[c]._trigger("deactivate",null,d._uiHash(this));if(this.containers[c].containerCache.over){this.containers[c]._trigger("out",null,d._uiHash(this));this.containers[c].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();a.extend(this,{helper:null,
+dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(d){var c=this._getItemsAsjQuery(d&&d.connected),e=[];d=d||{};a(c).each(function(){var h=(a(d.item||this).attr(d.attribute||"id")||"").match(d.expression||/(.+)[-=_](.+)/);if(h)e.push((d.key||h[1]+"[]")+"="+(d.key&&d.expression?h[1]:h[2]))});!e.length&&d.key&&e.push(d.key+"=");return e.join("&")},
+toArray:function(d){var c=this._getItemsAsjQuery(d&&d.connected),e=[];d=d||{};c.each(function(){e.push(a(d.item||this).attr(d.attribute||"id")||"")});return e},_intersectsWith:function(d){var c=this.positionAbs.left,e=c+this.helperProportions.width,h=this.positionAbs.top,g=h+this.helperProportions.height,i=d.left,b=i+d.width,f=d.top,j=f+d.height,l=this.offset.click.top,o=this.offset.click.left;l=h+l>f&&h+l<j&&c+o>i&&c+o<b;return this.options.tolerance=="pointer"||this.options.forcePointerForContainers||
+this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>d[this.floating?"width":"height"]?l:i<c+this.helperProportions.width/2&&e-this.helperProportions.width/2<b&&f<h+this.helperProportions.height/2&&g-this.helperProportions.height/2<j},_intersectsWithPointer:function(d){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,d.top,d.height);d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,d.left,d.width);c=c&&d;d=this._getDragVerticalDirection();
+var e=this._getDragHorizontalDirection();if(!c)return false;return this.floating?e&&e=="right"||d=="down"?2:1:d&&(d=="down"?2:1)},_intersectsWithSides:function(d){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,d.top+d.height/2,d.height);d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,d.left+d.width/2,d.width);var e=this._getDragVerticalDirection(),h=this._getDragHorizontalDirection();return this.floating&&h?h=="right"&&d||h=="left"&&!d:e&&(e=="down"&&c||e=="up"&&!c)},
+_getDragVerticalDirection:function(){var d=this.positionAbs.top-this.lastPositionAbs.top;return d!=0&&(d>0?"down":"up")},_getDragHorizontalDirection:function(){var d=this.positionAbs.left-this.lastPositionAbs.left;return d!=0&&(d>0?"right":"left")},refresh:function(d){this._refreshItems(d);this.refreshPositions();return this},_connectWith:function(){var d=this.options;return d.connectWith.constructor==String?[d.connectWith]:d.connectWith},_getItemsAsjQuery:function(d){var c=[],e=[],h=this._connectWith();
+if(h&&d)for(d=h.length-1;d>=0;d--)for(var g=a(h[d]),i=g.length-1;i>=0;i--){var b=a.data(g[i],"sortable");if(b&&b!=this&&!b.options.disabled)e.push([a.isFunction(b.options.items)?b.options.items.call(b.element):a(b.options.items,b.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),b])}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),
+this]);for(d=e.length-1;d>=0;d--)e[d][0].each(function(){c.push(this)});return a(c)},_removeCurrentsFromItems:function(){for(var d=this.currentItem.find(":data(sortable-item)"),c=0;c<this.items.length;c++)for(var e=0;e<d.length;e++)d[e]==this.items[c].item[0]&&this.items.splice(c,1)},_refreshItems:function(d){this.items=[];this.containers=[this];var c=this.items,e=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],d,{item:this.currentItem}):a(this.options.items,this.element),
+this]],h=this._connectWith();if(h)for(var g=h.length-1;g>=0;g--)for(var i=a(h[g]),b=i.length-1;b>=0;b--){var f=a.data(i[b],"sortable");if(f&&f!=this&&!f.options.disabled){e.push([a.isFunction(f.options.items)?f.options.items.call(f.element[0],d,{item:this.currentItem}):a(f.options.items,f.element),f]);this.containers.push(f)}}for(g=e.length-1;g>=0;g--){d=e[g][1];h=e[g][0];b=0;for(i=h.length;b<i;b++){f=a(h[b]);f.data("sortable-item",d);c.push({item:f,instance:d,width:0,height:0,left:0,top:0})}}},refreshPositions:function(d){if(this.offsetParent&&
+this.helper)this.offset.parent=this._getParentOffset();for(var c=this.items.length-1;c>=0;c--){var e=this.items[c];if(!(e.instance!=this.currentContainer&&this.currentContainer&&e.item[0]!=this.currentItem[0])){var h=this.options.toleranceElement?a(this.options.toleranceElement,e.item):e.item;if(!d){e.width=h.outerWidth();e.height=h.outerHeight()}h=h.offset();e.left=h.left;e.top=h.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(c=
+this.containers.length-1;c>=0;c--){h=this.containers[c].element.offset();this.containers[c].containerCache.left=h.left;this.containers[c].containerCache.top=h.top;this.containers[c].containerCache.width=this.containers[c].element.outerWidth();this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(d){var c=d||this,e=c.options;if(!e.placeholder||e.placeholder.constructor==String){var h=e.placeholder;e.placeholder={element:function(){var g=
+a(document.createElement(c.currentItem[0].nodeName)).addClass(h||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!h)g.style.visibility="hidden";return g},update:function(g,i){if(!(h&&!e.forcePlaceholderSize)){i.height()||i.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10));i.width()||i.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||
+0,10))}}}}c.placeholder=a(e.placeholder.element.call(c.element,c.currentItem));c.currentItem.after(c.placeholder);e.placeholder.update(c,c.placeholder)},_contactContainers:function(d){for(var c=null,e=null,h=this.containers.length-1;h>=0;h--)if(!a.ui.contains(this.currentItem[0],this.containers[h].element[0]))if(this._intersectsWith(this.containers[h].containerCache)){if(!(c&&a.ui.contains(this.containers[h].element[0],c.element[0]))){c=this.containers[h];e=h}}else if(this.containers[h].containerCache.over){this.containers[h]._trigger("out",
+d,this._uiHash(this));this.containers[h].containerCache.over=0}if(c)if(this.containers.length===1){this.containers[e]._trigger("over",d,this._uiHash(this));this.containers[e].containerCache.over=1}else if(this.currentContainer!=this.containers[e]){c=1E4;h=null;for(var g=this.positionAbs[this.containers[e].floating?"left":"top"],i=this.items.length-1;i>=0;i--)if(a.ui.contains(this.containers[e].element[0],this.items[i].item[0])){var b=this.items[i][this.containers[e].floating?"left":"top"];if(Math.abs(b-
+g)<c){c=Math.abs(b-g);h=this.items[i]}}if(h||this.options.dropOnEmpty){this.currentContainer=this.containers[e];h?this._rearrange(d,h,null,true):this._rearrange(d,null,this.containers[e].element,true);this._trigger("change",d,this._uiHash());this.containers[e]._trigger("change",d,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder);this.containers[e]._trigger("over",d,this._uiHash(this));this.containers[e].containerCache.over=1}}},_createHelper:function(d){var c=
+this.options;d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[d,this.currentItem])):c.helper=="clone"?this.currentItem.clone():this.currentItem;d.parents("body").length||a(c.appendTo!="parent"?c.appendTo:this.currentItem[0].parentNode)[0].appendChild(d[0]);if(d[0]==this.currentItem[0])this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")};if(d[0].style.width==
+""||c.forceHelperSize)d.width(this.currentItem.width());if(d[0].style.height==""||c.forceHelperSize)d.height(this.currentItem.height());return d},_adjustOffsetFromHelper:function(d){if(typeof d=="string")d=d.split(" ");if(a.isArray(d))d={left:+d[0],top:+d[1]||0};if("left"in d)this.offset.click.left=d.left+this.margins.left;if("right"in d)this.offset.click.left=this.helperProportions.width-d.right+this.margins.left;if("top"in d)this.offset.click.top=d.top+this.margins.top;if("bottom"in d)this.offset.click.top=
+this.helperProportions.height-d.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var d=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){d.left+=this.scrollParent.scrollLeft();d.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)d=
+{top:0,left:0};return{top:d.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:d.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var d=this.currentItem.position();return{top:d.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:d.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),
+10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var d=this.options;if(d.containment=="parent")d.containment=this.helper[0].parentNode;if(d.containment=="document"||d.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(d.containment=="document"?
+document:window).width()-this.helperProportions.width-this.margins.left,(a(d.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(d.containment)){var c=a(d.containment)[0];d=a(d.containment).offset();var e=a(c).css("overflow")!="hidden";this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),
+10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(e?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(e?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(d,c){if(!c)c=
+this.position;d=d=="absolute"?1:-1;var e=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,h=/(html|body)/i.test(e[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():h?0:e.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&
+this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():h?0:e.scrollLeft())*d)}},_generatePosition:function(d){var c=this.options,e=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,h=/(html|body)/i.test(e[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0]))this.offset.relative=this._getRelativeOffset();
+var g=d.pageX,i=d.pageY;if(this.originalPosition){if(this.containment){if(d.pageX-this.offset.click.left<this.containment[0])g=this.containment[0]+this.offset.click.left;if(d.pageY-this.offset.click.top<this.containment[1])i=this.containment[1]+this.offset.click.top;if(d.pageX-this.offset.click.left>this.containment[2])g=this.containment[2]+this.offset.click.left;if(d.pageY-this.offset.click.top>this.containment[3])i=this.containment[3]+this.offset.click.top}if(c.grid){i=this.originalPageY+Math.round((i-
+this.originalPageY)/c.grid[1])*c.grid[1];i=this.containment?!(i-this.offset.click.top<this.containment[1]||i-this.offset.click.top>this.containment[3])?i:!(i-this.offset.click.top<this.containment[1])?i-c.grid[1]:i+c.grid[1]:i;g=this.originalPageX+Math.round((g-this.originalPageX)/c.grid[0])*c.grid[0];g=this.containment?!(g-this.offset.click.left<this.containment[0]||g-this.offset.click.left>this.containment[2])?g:!(g-this.offset.click.left<this.containment[0])?g-c.grid[0]:g+c.grid[0]:g}}return{top:i-
+this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollTop():h?0:e.scrollTop()),left:g-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():h?0:e.scrollLeft())}},_rearrange:function(d,c,e,h){e?e[0].appendChild(this.placeholder[0]):c.item[0].parentNode.insertBefore(this.placeholder[0],
+this.direction=="down"?c.item[0]:c.item[0].nextSibling);this.counter=this.counter?++this.counter:1;var g=this,i=this.counter;window.setTimeout(function(){i==g.counter&&g.refreshPositions(!h)},0)},_clear:function(d,c){this.reverting=false;var e=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem);this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var h in this._storedCSS)if(this._storedCSS[h]=="auto"||this._storedCSS[h]=="static")this._storedCSS[h]=
+"";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!c&&e.push(function(g){this._trigger("receive",g,this._uiHash(this.fromOutside))});if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!c)e.push(function(g){this._trigger("update",g,this._uiHash())});if(!a.ui.contains(this.element[0],this.currentItem[0])){c||e.push(function(g){this._trigger("remove",
+g,this._uiHash())});for(h=this.containers.length-1;h>=0;h--)if(a.ui.contains(this.containers[h].element[0],this.currentItem[0])&&!c){e.push(function(g){return function(i){g._trigger("receive",i,this._uiHash(this))}}.call(this,this.containers[h]));e.push(function(g){return function(i){g._trigger("update",i,this._uiHash(this))}}.call(this,this.containers[h]))}}for(h=this.containers.length-1;h>=0;h--){c||e.push(function(g){return function(i){g._trigger("deactivate",i,this._uiHash(this))}}.call(this,
+this.containers[h]));if(this.containers[h].containerCache.over){e.push(function(g){return function(i){g._trigger("out",i,this._uiHash(this))}}.call(this,this.containers[h]));this.containers[h].containerCache.over=0}}this._storedCursor&&a("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",
+d,this._uiHash());for(h=0;h<e.length;h++)e[h].call(this,d);this._trigger("stop",d,this._uiHash())}return false}c||this._trigger("beforeStop",d,this._uiHash());this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.helper[0]!=this.currentItem[0]&&this.helper.remove();this.helper=null;if(!c){for(h=0;h<e.length;h++)e[h].call(this,d);this._trigger("stop",d,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){a.Widget.prototype._trigger.apply(this,arguments)===false&&this.cancel()},
+_uiHash:function(d){var c=d||this;return{helper:c.helper,placeholder:c.placeholder||a([]),position:c.position,originalPosition:c.originalPosition,offset:c.positionAbs,item:c.currentItem,sender:d?d.element:null}}});a.extend(a.ui.sortable,{version:"1.8.16"})})(jQuery);
+jQuery.effects||function(a,d){function c(n){var k;if(n&&n.constructor==Array&&n.length==3)return n;if(k=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(n))return[parseInt(k[1],10),parseInt(k[2],10),parseInt(k[3],10)];if(k=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(n))return[parseFloat(k[1])*2.55,parseFloat(k[2])*2.55,parseFloat(k[3])*2.55];if(k=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(n))return[parseInt(k[1],
+16),parseInt(k[2],16),parseInt(k[3],16)];if(k=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(n))return[parseInt(k[1]+k[1],16),parseInt(k[2]+k[2],16),parseInt(k[3]+k[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(n))return j.transparent;return j[a.trim(n).toLowerCase()]}function e(n,k){var m;do{m=a.curCSS(n,k);if(m!=""&&m!="transparent"||a.nodeName(n,"body"))break;k="backgroundColor"}while(n=n.parentNode);return c(m)}function h(){var n=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,
+k={},m,p;if(n&&n.length&&n[0]&&n[n[0]])for(var q=n.length;q--;){m=n[q];if(typeof n[m]=="string"){p=m.replace(/\-(\w)/g,function(s,r){return r.toUpperCase()});k[p]=n[m]}}else for(m in n)if(typeof n[m]==="string")k[m]=n[m];return k}function g(n){var k,m;for(k in n){m=n[k];if(m==null||a.isFunction(m)||k in o||/scrollbar/.test(k)||!/color/i.test(k)&&isNaN(parseFloat(m)))delete n[k]}return n}function i(n,k){var m={_:0},p;for(p in k)if(n[p]!=k[p])m[p]=k[p];return m}function b(n,k,m,p){if(typeof n=="object"){p=
+k;m=null;k=n;n=k.effect}if(a.isFunction(k)){p=k;m=null;k={}}if(typeof k=="number"||a.fx.speeds[k]){p=m;m=k;k={}}if(a.isFunction(m)){p=m;m=null}k=k||{};m=m||k.duration;m=a.fx.off?0:typeof m=="number"?m:m in a.fx.speeds?a.fx.speeds[m]:a.fx.speeds._default;p=p||k.complete;return[n,k,m,p]}function f(n){if(!n||typeof n==="number"||a.fx.speeds[n])return true;if(typeof n==="string"&&!a.effects[n])return true;return false}a.effects={};a.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor",
+"borderTopColor","borderColor","color","outlineColor"],function(n,k){a.fx.step[k]=function(m){if(!m.colorInit){m.start=e(m.elem,k);m.end=c(m.end);m.colorInit=true}m.elem.style[k]="rgb("+Math.max(Math.min(parseInt(m.pos*(m.end[0]-m.start[0])+m.start[0],10),255),0)+","+Math.max(Math.min(parseInt(m.pos*(m.end[1]-m.start[1])+m.start[1],10),255),0)+","+Math.max(Math.min(parseInt(m.pos*(m.end[2]-m.start[2])+m.start[2],10),255),0)+")"}});var j={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,
+0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,
+211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},l=["add","remove","toggle"],o={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};a.effects.animateClass=function(n,k,m,
+p){if(a.isFunction(m)){p=m;m=null}return this.queue(function(){var q=a(this),s=q.attr("style")||" ",r=g(h.call(this)),u,v=q.attr("class");a.each(l,function(w,x){n[x]&&q[x+"Class"](n[x])});u=g(h.call(this));q.attr("class",v);q.animate(i(r,u),{queue:false,duration:k,easing:m,complete:function(){a.each(l,function(w,x){n[x]&&q[x+"Class"](n[x])});if(typeof q.attr("style")=="object"){q.attr("style").cssText="";q.attr("style").cssText=s}else q.attr("style",s);p&&p.apply(this,arguments);a.dequeue(this)}})})};
+a.fn.extend({_addClass:a.fn.addClass,addClass:function(n,k,m,p){return k?a.effects.animateClass.apply(this,[{add:n},k,m,p]):this._addClass(n)},_removeClass:a.fn.removeClass,removeClass:function(n,k,m,p){return k?a.effects.animateClass.apply(this,[{remove:n},k,m,p]):this._removeClass(n)},_toggleClass:a.fn.toggleClass,toggleClass:function(n,k,m,p,q){return typeof k=="boolean"||k===d?m?a.effects.animateClass.apply(this,[k?{add:n}:{remove:n},m,p,q]):this._toggleClass(n,k):a.effects.animateClass.apply(this,
+[{toggle:n},k,m,p])},switchClass:function(n,k,m,p,q){return a.effects.animateClass.apply(this,[{add:k,remove:n},m,p,q])}});a.extend(a.effects,{version:"1.8.16",save:function(n,k){for(var m=0;m<k.length;m++)k[m]!==null&&n.data("ec.storage."+k[m],n[0].style[k[m]])},restore:function(n,k){for(var m=0;m<k.length;m++)k[m]!==null&&n.css(k[m],n.data("ec.storage."+k[m]))},setMode:function(n,k){if(k=="toggle")k=n.is(":hidden")?"show":"hide";return k},getBaseline:function(n,k){var m;switch(n[0]){case "top":m=
+0;break;case "middle":m=0.5;break;case "bottom":m=1;break;default:m=n[0]/k.height}switch(n[1]){case "left":n=0;break;case "center":n=0.5;break;case "right":n=1;break;default:n=n[1]/k.width}return{x:n,y:m}},createWrapper:function(n){if(n.parent().is(".ui-effects-wrapper"))return n.parent();var k={width:n.outerWidth(true),height:n.outerHeight(true),"float":n.css("float")},m=a("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),
+p=document.activeElement;n.wrap(m);if(n[0]===p||a.contains(n[0],p))a(p).focus();m=n.parent();if(n.css("position")=="static"){m.css({position:"relative"});n.css({position:"relative"})}else{a.extend(k,{position:n.css("position"),zIndex:n.css("z-index")});a.each(["top","left","bottom","right"],function(q,s){k[s]=n.css(s);if(isNaN(parseInt(k[s],10)))k[s]="auto"});n.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return m.css(k).show()},removeWrapper:function(n){var k,m=document.activeElement;
+if(n.parent().is(".ui-effects-wrapper")){k=n.parent().replaceWith(n);if(n[0]===m||a.contains(n[0],m))a(m).focus();return k}return n},setTransition:function(n,k,m,p){p=p||{};a.each(k,function(q,s){unit=n.cssUnit(s);if(unit[0]>0)p[s]=unit[0]*m+unit[1]});return p}});a.fn.extend({effect:function(n){var k=b.apply(this,arguments),m={options:k[1],duration:k[2],callback:k[3]};k=m.options.mode;var p=a.effects[n];if(a.fx.off||!p)return k?this[k](m.duration,m.callback):this.each(function(){m.callback&&m.callback.call(this)});
+return p.call(this,m)},_show:a.fn.show,show:function(n){if(f(n))return this._show.apply(this,arguments);else{var k=b.apply(this,arguments);k[1].mode="show";return this.effect.apply(this,k)}},_hide:a.fn.hide,hide:function(n){if(f(n))return this._hide.apply(this,arguments);else{var k=b.apply(this,arguments);k[1].mode="hide";return this.effect.apply(this,k)}},__toggle:a.fn.toggle,toggle:function(n){if(f(n)||typeof n==="boolean"||a.isFunction(n))return this.__toggle.apply(this,arguments);else{var k=b.apply(this,
+arguments);k[1].mode="toggle";return this.effect.apply(this,k)}},cssUnit:function(n){var k=this.css(n),m=[];a.each(["em","px","%","pt"],function(p,q){if(k.indexOf(q)>0)m=[parseFloat(k),q]});return m}});a.easing.jswing=a.easing.swing;a.extend(a.easing,{def:"easeOutQuad",swing:function(n,k,m,p,q){return a.easing[a.easing.def](n,k,m,p,q)},easeInQuad:function(n,k,m,p,q){return p*(k/=q)*k+m},easeOutQuad:function(n,k,m,p,q){return-p*(k/=q)*(k-2)+m},easeInOutQuad:function(n,k,m,p,q){if((k/=q/2)<1)return p/
+2*k*k+m;return-p/2*(--k*(k-2)-1)+m},easeInCubic:function(n,k,m,p,q){return p*(k/=q)*k*k+m},easeOutCubic:function(n,k,m,p,q){return p*((k=k/q-1)*k*k+1)+m},easeInOutCubic:function(n,k,m,p,q){if((k/=q/2)<1)return p/2*k*k*k+m;return p/2*((k-=2)*k*k+2)+m},easeInQuart:function(n,k,m,p,q){return p*(k/=q)*k*k*k+m},easeOutQuart:function(n,k,m,p,q){return-p*((k=k/q-1)*k*k*k-1)+m},easeInOutQuart:function(n,k,m,p,q){if((k/=q/2)<1)return p/2*k*k*k*k+m;return-p/2*((k-=2)*k*k*k-2)+m},easeInQuint:function(n,k,m,
+p,q){return p*(k/=q)*k*k*k*k+m},easeOutQuint:function(n,k,m,p,q){return p*((k=k/q-1)*k*k*k*k+1)+m},easeInOutQuint:function(n,k,m,p,q){if((k/=q/2)<1)return p/2*k*k*k*k*k+m;return p/2*((k-=2)*k*k*k*k+2)+m},easeInSine:function(n,k,m,p,q){return-p*Math.cos(k/q*(Math.PI/2))+p+m},easeOutSine:function(n,k,m,p,q){return p*Math.sin(k/q*(Math.PI/2))+m},easeInOutSine:function(n,k,m,p,q){return-p/2*(Math.cos(Math.PI*k/q)-1)+m},easeInExpo:function(n,k,m,p,q){return k==0?m:p*Math.pow(2,10*(k/q-1))+m},easeOutExpo:function(n,
+k,m,p,q){return k==q?m+p:p*(-Math.pow(2,-10*k/q)+1)+m},easeInOutExpo:function(n,k,m,p,q){if(k==0)return m;if(k==q)return m+p;if((k/=q/2)<1)return p/2*Math.pow(2,10*(k-1))+m;return p/2*(-Math.pow(2,-10*--k)+2)+m},easeInCirc:function(n,k,m,p,q){return-p*(Math.sqrt(1-(k/=q)*k)-1)+m},easeOutCirc:function(n,k,m,p,q){return p*Math.sqrt(1-(k=k/q-1)*k)+m},easeInOutCirc:function(n,k,m,p,q){if((k/=q/2)<1)return-p/2*(Math.sqrt(1-k*k)-1)+m;return p/2*(Math.sqrt(1-(k-=2)*k)+1)+m},easeInElastic:function(n,k,m,
+p,q){n=1.70158;var s=0,r=p;if(k==0)return m;if((k/=q)==1)return m+p;s||(s=q*0.3);if(r<Math.abs(p)){r=p;n=s/4}else n=s/(2*Math.PI)*Math.asin(p/r);return-(r*Math.pow(2,10*(k-=1))*Math.sin((k*q-n)*2*Math.PI/s))+m},easeOutElastic:function(n,k,m,p,q){n=1.70158;var s=0,r=p;if(k==0)return m;if((k/=q)==1)return m+p;s||(s=q*0.3);if(r<Math.abs(p)){r=p;n=s/4}else n=s/(2*Math.PI)*Math.asin(p/r);return r*Math.pow(2,-10*k)*Math.sin((k*q-n)*2*Math.PI/s)+p+m},easeInOutElastic:function(n,k,m,p,q){n=1.70158;var s=
+0,r=p;if(k==0)return m;if((k/=q/2)==2)return m+p;s||(s=q*0.3*1.5);if(r<Math.abs(p)){r=p;n=s/4}else n=s/(2*Math.PI)*Math.asin(p/r);if(k<1)return-0.5*r*Math.pow(2,10*(k-=1))*Math.sin((k*q-n)*2*Math.PI/s)+m;return r*Math.pow(2,-10*(k-=1))*Math.sin((k*q-n)*2*Math.PI/s)*0.5+p+m},easeInBack:function(n,k,m,p,q,s){if(s==d)s=1.70158;return p*(k/=q)*k*((s+1)*k-s)+m},easeOutBack:function(n,k,m,p,q,s){if(s==d)s=1.70158;return p*((k=k/q-1)*k*((s+1)*k+s)+1)+m},easeInOutBack:function(n,k,m,p,q,s){if(s==d)s=1.70158;
+if((k/=q/2)<1)return p/2*k*k*(((s*=1.525)+1)*k-s)+m;return p/2*((k-=2)*k*(((s*=1.525)+1)*k+s)+2)+m},easeInBounce:function(n,k,m,p,q){return p-a.easing.easeOutBounce(n,q-k,0,p,q)+m},easeOutBounce:function(n,k,m,p,q){return(k/=q)<1/2.75?p*7.5625*k*k+m:k<2/2.75?p*(7.5625*(k-=1.5/2.75)*k+0.75)+m:k<2.5/2.75?p*(7.5625*(k-=2.25/2.75)*k+0.9375)+m:p*(7.5625*(k-=2.625/2.75)*k+0.984375)+m},easeInOutBounce:function(n,k,m,p,q){if(k<q/2)return a.easing.easeInBounce(n,k*2,0,p,q)*0.5+m;return a.easing.easeOutBounce(n,
+k*2-q,0,p,q)*0.5+p*0.5+m}})}(jQuery);
+(function(a){a.effects.blind=function(d){return this.queue(function(){var c=a(this),e=["position","top","bottom","left","right"],h=a.effects.setMode(c,d.options.mode||"hide"),g=d.options.direction||"vertical";a.effects.save(c,e);c.show();var i=a.effects.createWrapper(c).css({overflow:"hidden"}),b=g=="vertical"?"height":"width";g=g=="vertical"?i.height():i.width();h=="show"&&i.css(b,0);var f={};f[b]=h=="show"?g:0;i.animate(f,d.duration,d.options.easing,function(){h=="hide"&&c.hide();a.effects.restore(c,
+e);a.effects.removeWrapper(c);d.callback&&d.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery);
+(function(a){a.effects.bounce=function(d){return this.queue(function(){var c=a(this),e=["position","top","bottom","left","right"],h=a.effects.setMode(c,d.options.mode||"effect"),g=d.options.direction||"up",i=d.options.distance||20,b=d.options.times||5,f=d.duration||250;/show|hide/.test(h)&&e.push("opacity");a.effects.save(c,e);c.show();a.effects.createWrapper(c);var j=g=="up"||g=="down"?"top":"left";g=g=="up"||g=="left"?"pos":"neg";i=d.options.distance||(j=="top"?c.outerHeight({margin:true})/3:c.outerWidth({margin:true})/
+3);if(h=="show")c.css("opacity",0).css(j,g=="pos"?-i:i);if(h=="hide")i/=b*2;h!="hide"&&b--;if(h=="show"){var l={opacity:1};l[j]=(g=="pos"?"+=":"-=")+i;c.animate(l,f/2,d.options.easing);i/=2;b--}for(l=0;l<b;l++){var o={},n={};o[j]=(g=="pos"?"-=":"+=")+i;n[j]=(g=="pos"?"+=":"-=")+i;c.animate(o,f/2,d.options.easing).animate(n,f/2,d.options.easing);i=h=="hide"?i*2:i/2}if(h=="hide"){l={opacity:0};l[j]=(g=="pos"?"-=":"+=")+i;c.animate(l,f/2,d.options.easing,function(){c.hide();a.effects.restore(c,e);a.effects.removeWrapper(c);
+d.callback&&d.callback.apply(this,arguments)})}else{o={};n={};o[j]=(g=="pos"?"-=":"+=")+i;n[j]=(g=="pos"?"+=":"-=")+i;c.animate(o,f/2,d.options.easing).animate(n,f/2,d.options.easing,function(){a.effects.restore(c,e);a.effects.removeWrapper(c);d.callback&&d.callback.apply(this,arguments)})}c.queue("fx",function(){c.dequeue()});c.dequeue()})}})(jQuery);
+(function(a){a.effects.clip=function(d){return this.queue(function(){var c=a(this),e=["position","top","bottom","left","right","height","width"],h=a.effects.setMode(c,d.options.mode||"hide"),g=d.options.direction||"vertical";a.effects.save(c,e);c.show();var i=a.effects.createWrapper(c).css({overflow:"hidden"});i=c[0].tagName=="IMG"?i:c;var b={size:g=="vertical"?"height":"width",position:g=="vertical"?"top":"left"};g=g=="vertical"?i.height():i.width();if(h=="show"){i.css(b.size,0);i.css(b.position,
+g/2)}var f={};f[b.size]=h=="show"?g:0;f[b.position]=h=="show"?0:g/2;i.animate(f,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){h=="hide"&&c.hide();a.effects.restore(c,e);a.effects.removeWrapper(c);d.callback&&d.callback.apply(c[0],arguments);c.dequeue()}})})}})(jQuery);
+(function(a){a.effects.drop=function(d){return this.queue(function(){var c=a(this),e=["position","top","bottom","left","right","opacity"],h=a.effects.setMode(c,d.options.mode||"hide"),g=d.options.direction||"left";a.effects.save(c,e);c.show();a.effects.createWrapper(c);var i=g=="up"||g=="down"?"top":"left";g=g=="up"||g=="left"?"pos":"neg";var b=d.options.distance||(i=="top"?c.outerHeight({margin:true})/2:c.outerWidth({margin:true})/2);if(h=="show")c.css("opacity",0).css(i,g=="pos"?-b:b);var f={opacity:h==
+"show"?1:0};f[i]=(h=="show"?g=="pos"?"+=":"-=":g=="pos"?"-=":"+=")+b;c.animate(f,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){h=="hide"&&c.hide();a.effects.restore(c,e);a.effects.removeWrapper(c);d.callback&&d.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(a){a.effects.explode=function(d){return this.queue(function(){var c=d.options.pieces?Math.round(Math.sqrt(d.options.pieces)):3,e=d.options.pieces?Math.round(Math.sqrt(d.options.pieces)):3;d.options.mode=d.options.mode=="toggle"?a(this).is(":visible")?"hide":"show":d.options.mode;var h=a(this).show().css("visibility","hidden"),g=h.offset();g.top-=parseInt(h.css("marginTop"),10)||0;g.left-=parseInt(h.css("marginLeft"),10)||0;for(var i=h.outerWidth(true),b=h.outerHeight(true),f=0;f<c;f++)for(var j=
+0;j<e;j++)h.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-j*(i/e),top:-f*(b/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:i/e,height:b/c,left:g.left+j*(i/e)+(d.options.mode=="show"?(j-Math.floor(e/2))*(i/e):0),top:g.top+f*(b/c)+(d.options.mode=="show"?(f-Math.floor(c/2))*(b/c):0),opacity:d.options.mode=="show"?0:1}).animate({left:g.left+j*(i/e)+(d.options.mode=="show"?0:(j-Math.floor(e/2))*(i/e)),top:g.top+
+f*(b/c)+(d.options.mode=="show"?0:(f-Math.floor(c/2))*(b/c)),opacity:d.options.mode=="show"?1:0},d.duration||500);setTimeout(function(){d.options.mode=="show"?h.css({visibility:"visible"}):h.css({visibility:"visible"}).hide();d.callback&&d.callback.apply(h[0]);h.dequeue();a("div.ui-effects-explode").remove()},d.duration||500)})}})(jQuery);
+(function(a){a.effects.fade=function(d){return this.queue(function(){var c=a(this),e=a.effects.setMode(c,d.options.mode||"hide");c.animate({opacity:e},{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){d.callback&&d.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(a){a.effects.fold=function(d){return this.queue(function(){var c=a(this),e=["position","top","bottom","left","right"],h=a.effects.setMode(c,d.options.mode||"hide"),g=d.options.size||15,i=!!d.options.horizFirst,b=d.duration?d.duration/2:a.fx.speeds._default/2;a.effects.save(c,e);c.show();var f=a.effects.createWrapper(c).css({overflow:"hidden"}),j=h=="show"!=i,l=j?["width","height"]:["height","width"];j=j?[f.width(),f.height()]:[f.height(),f.width()];var o=/([0-9]+)%/.exec(g);if(o)g=parseInt(o[1],
+10)/100*j[h=="hide"?0:1];if(h=="show")f.css(i?{height:0,width:g}:{height:g,width:0});i={};o={};i[l[0]]=h=="show"?j[0]:g;o[l[1]]=h=="show"?j[1]:0;f.animate(i,b,d.options.easing).animate(o,b,d.options.easing,function(){h=="hide"&&c.hide();a.effects.restore(c,e);a.effects.removeWrapper(c);d.callback&&d.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery);
+(function(a){a.effects.highlight=function(d){return this.queue(function(){var c=a(this),e=["backgroundImage","backgroundColor","opacity"],h=a.effects.setMode(c,d.options.mode||"show"),g={backgroundColor:c.css("backgroundColor")};if(h=="hide")g.opacity=0;a.effects.save(c,e);c.show().css({backgroundImage:"none",backgroundColor:d.options.color||"#ffff99"}).animate(g,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){h=="hide"&&c.hide();a.effects.restore(c,e);h=="show"&&!a.support.opacity&&
+this.style.removeAttribute("filter");d.callback&&d.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(a){a.effects.pulsate=function(d){return this.queue(function(){var c=a(this),e=a.effects.setMode(c,d.options.mode||"show");times=(d.options.times||5)*2-1;duration=d.duration?d.duration/2:a.fx.speeds._default/2;isVisible=c.is(":visible");animateTo=0;if(!isVisible){c.css("opacity",0).show();animateTo=1}if(e=="hide"&&isVisible||e=="show"&&!isVisible)times--;for(e=0;e<times;e++){c.animate({opacity:animateTo},duration,d.options.easing);animateTo=(animateTo+1)%2}c.animate({opacity:animateTo},duration,
+d.options.easing,function(){animateTo==0&&c.hide();d.callback&&d.callback.apply(this,arguments)});c.queue("fx",function(){c.dequeue()}).dequeue()})}})(jQuery);
+(function(a){a.effects.puff=function(d){return this.queue(function(){var c=a(this),e=a.effects.setMode(c,d.options.mode||"hide"),h=parseInt(d.options.percent,10)||150,g=h/100,i={height:c.height(),width:c.width()};a.extend(d.options,{fade:true,mode:e,percent:e=="hide"?h:100,from:e=="hide"?i:{height:i.height*g,width:i.width*g}});c.effect("scale",d.options,d.duration,d.callback);c.dequeue()})};a.effects.scale=function(d){return this.queue(function(){var c=a(this),e=a.extend(true,{},d.options),h=a.effects.setMode(c,
+d.options.mode||"effect"),g=parseInt(d.options.percent,10)||(parseInt(d.options.percent,10)==0?0:h=="hide"?0:100),i=d.options.direction||"both",b=d.options.origin;if(h!="effect"){e.origin=b||["middle","center"];e.restore=true}b={height:c.height(),width:c.width()};c.from=d.options.from||(h=="show"?{height:0,width:0}:b);g={y:i!="horizontal"?g/100:1,x:i!="vertical"?g/100:1};c.to={height:b.height*g.y,width:b.width*g.x};if(d.options.fade){if(h=="show"){c.from.opacity=0;c.to.opacity=1}if(h=="hide"){c.from.opacity=
+1;c.to.opacity=0}}e.from=c.from;e.to=c.to;e.mode=h;c.effect("size",e,d.duration,d.callback);c.dequeue()})};a.effects.size=function(d){return this.queue(function(){var c=a(this),e=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],g=["width","height","overflow"],i=["fontSize"],b=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],f=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],
+j=a.effects.setMode(c,d.options.mode||"effect"),l=d.options.restore||false,o=d.options.scale||"both",n=d.options.origin,k={height:c.height(),width:c.width()};c.from=d.options.from||k;c.to=d.options.to||k;if(n){n=a.effects.getBaseline(n,k);c.from.top=(k.height-c.from.height)*n.y;c.from.left=(k.width-c.from.width)*n.x;c.to.top=(k.height-c.to.height)*n.y;c.to.left=(k.width-c.to.width)*n.x}var m={from:{y:c.from.height/k.height,x:c.from.width/k.width},to:{y:c.to.height/k.height,x:c.to.width/k.width}};
+if(o=="box"||o=="both"){if(m.from.y!=m.to.y){e=e.concat(b);c.from=a.effects.setTransition(c,b,m.from.y,c.from);c.to=a.effects.setTransition(c,b,m.to.y,c.to)}if(m.from.x!=m.to.x){e=e.concat(f);c.from=a.effects.setTransition(c,f,m.from.x,c.from);c.to=a.effects.setTransition(c,f,m.to.x,c.to)}}if(o=="content"||o=="both")if(m.from.y!=m.to.y){e=e.concat(i);c.from=a.effects.setTransition(c,i,m.from.y,c.from);c.to=a.effects.setTransition(c,i,m.to.y,c.to)}a.effects.save(c,l?e:h);c.show();a.effects.createWrapper(c);
+c.css("overflow","hidden").css(c.from);if(o=="content"||o=="both"){b=b.concat(["marginTop","marginBottom"]).concat(i);f=f.concat(["marginLeft","marginRight"]);g=e.concat(b).concat(f);c.find("*[width]").each(function(){child=a(this);l&&a.effects.save(child,g);var p={height:child.height(),width:child.width()};child.from={height:p.height*m.from.y,width:p.width*m.from.x};child.to={height:p.height*m.to.y,width:p.width*m.to.x};if(m.from.y!=m.to.y){child.from=a.effects.setTransition(child,b,m.from.y,child.from);
+child.to=a.effects.setTransition(child,b,m.to.y,child.to)}if(m.from.x!=m.to.x){child.from=a.effects.setTransition(child,f,m.from.x,child.from);child.to=a.effects.setTransition(child,f,m.to.x,child.to)}child.css(child.from);child.animate(child.to,d.duration,d.options.easing,function(){l&&a.effects.restore(child,g)})})}c.animate(c.to,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){c.to.opacity===0&&c.css("opacity",c.from.opacity);j=="hide"&&c.hide();a.effects.restore(c,
+l?e:h);a.effects.removeWrapper(c);d.callback&&d.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(a){a.effects.shake=function(d){return this.queue(function(){var c=a(this),e=["position","top","bottom","left","right"];a.effects.setMode(c,d.options.mode||"effect");var h=d.options.direction||"left",g=d.options.distance||20,i=d.options.times||3,b=d.duration||d.options.duration||140;a.effects.save(c,e);c.show();a.effects.createWrapper(c);var f=h=="up"||h=="down"?"top":"left",j=h=="up"||h=="left"?"pos":"neg";h={};var l={},o={};h[f]=(j=="pos"?"-=":"+=")+g;l[f]=(j=="pos"?"+=":"-=")+g*2;o[f]=
+(j=="pos"?"-=":"+=")+g*2;c.animate(h,b,d.options.easing);for(g=1;g<i;g++)c.animate(l,b,d.options.easing).animate(o,b,d.options.easing);c.animate(l,b,d.options.easing).animate(h,b/2,d.options.easing,function(){a.effects.restore(c,e);a.effects.removeWrapper(c);d.callback&&d.callback.apply(this,arguments)});c.queue("fx",function(){c.dequeue()});c.dequeue()})}})(jQuery);
+(function(a){a.effects.slide=function(d){return this.queue(function(){var c=a(this),e=["position","top","bottom","left","right"],h=a.effects.setMode(c,d.options.mode||"show"),g=d.options.direction||"left";a.effects.save(c,e);c.show();a.effects.createWrapper(c).css({overflow:"hidden"});var i=g=="up"||g=="down"?"top":"left";g=g=="up"||g=="left"?"pos":"neg";var b=d.options.distance||(i=="top"?c.outerHeight({margin:true}):c.outerWidth({margin:true}));if(h=="show")c.css(i,g=="pos"?isNaN(b)?"-"+b:-b:b);
+var f={};f[i]=(h=="show"?g=="pos"?"+=":"-=":g=="pos"?"-=":"+=")+b;c.animate(f,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){h=="hide"&&c.hide();a.effects.restore(c,e);a.effects.removeWrapper(c);d.callback&&d.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
+(function(a){a.effects.transfer=function(d){return this.queue(function(){var c=a(this),e=a(d.options.to),h=e.offset();e={top:h.top,left:h.left,height:e.innerHeight(),width:e.innerWidth()};h=c.offset();var g=a('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(d.options.className).css({top:h.top,left:h.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(e,d.duration,d.options.easing,function(){g.remove();d.callback&&d.callback.apply(c[0],arguments);
+c.dequeue()})})}})(jQuery);
+(function(a){a.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var d=this,c=d.options;d.running=0;d.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");d.headers=
+d.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){c.disabled||a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){c.disabled||a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){c.disabled||a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){c.disabled||a(this).removeClass("ui-state-focus")});d.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
+if(c.navigation){var e=d.element.find("a").filter(c.navigationFilter).eq(0);if(e.length){var h=e.closest(".ui-accordion-header");d.active=h.length?h:e.closest(".ui-accordion-content").prev()}}d.active=d._findActive(d.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");d.active.next().addClass("ui-accordion-content-active");d._createIcons();d.resize();d.element.attr("role","tablist");d.headers.attr("role","tab").bind("keydown.accordion",
+function(g){return d._keydown(g)}).next().attr("role","tabpanel");d.headers.not(d.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();d.active.length?d.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):d.headers.eq(0).attr("tabIndex",0);a.browser.safari||d.headers.find("a").attr("tabIndex",-1);c.event&&d.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(g){d._clickHandler.call(d,g,this);g.preventDefault()})},_createIcons:function(){var d=
+this.options;if(d.icons){a("<span></span>").addClass("ui-icon "+d.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(d.icons.header).toggleClass(d.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var d=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex");
+this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(d.autoHeight||d.fillHeight)c.css("height","");return a.Widget.prototype.destroy.call(this)},_setOption:function(d,c){a.Widget.prototype._setOption.apply(this,arguments);d=="active"&&this.activate(c);if(d=="icons"){this._destroyIcons();
+c&&this._createIcons()}if(d=="disabled")this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(d){if(!(this.options.disabled||d.altKey||d.ctrlKey)){var c=a.ui.keyCode,e=this.headers.length,h=this.headers.index(d.target),g=false;switch(d.keyCode){case c.RIGHT:case c.DOWN:g=this.headers[(h+1)%e];break;case c.LEFT:case c.UP:g=this.headers[(h-1+e)%e];break;case c.SPACE:case c.ENTER:this._clickHandler({target:d.target},d.target);
+d.preventDefault()}if(g){a(d.target).attr("tabIndex",-1);a(g).attr("tabIndex",0);g.focus();return false}return true}},resize:function(){var d=this.options,c;if(d.fillSpace){if(a.browser.msie){var e=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height();a.browser.msie&&this.element.parent().css("overflow",e);this.headers.each(function(){c-=a(this).outerHeight(true)});this.headers.next().each(function(){a(this).height(Math.max(0,c-a(this).innerHeight()+
+a(this).height()))}).css("overflow","auto")}else if(d.autoHeight){c=0;this.headers.next().each(function(){c=Math.max(c,a(this).height("").height())}).height(c)}return this},activate:function(d){this.options.active=d;d=this._findActive(d)[0];this._clickHandler({target:d},d);return this},_findActive:function(d){return d?typeof d==="number"?this.headers.filter(":eq("+d+")"):this.headers.not(this.headers.not(d)):d===false?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(d,c){var e=this.options;
+if(!e.disabled)if(d.target){d=a(d.currentTarget||c);c=d[0]===this.active[0];e.active=e.collapsible&&c?false:this.headers.index(d);if(!(this.running||!e.collapsible&&c)){var h=this.active;f=d.next();i=this.active.next();b={options:e,newHeader:c&&e.collapsible?a([]):d,oldHeader:this.active,newContent:c&&e.collapsible?a([]):f,oldContent:i};var g=this.headers.index(this.active[0])>this.headers.index(d[0]);this.active=c?a([]):d;this._toggle(f,i,b,c,g);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(e.icons.headerSelected).addClass(e.icons.header);
+if(!c){d.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(e.icons.header).addClass(e.icons.headerSelected);d.next().addClass("ui-accordion-content-active")}}}else if(e.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(e.icons.headerSelected).addClass(e.icons.header);this.active.next().addClass("ui-accordion-content-active");var i=this.active.next(),
+b={options:e,newHeader:a([]),oldHeader:e.active,newContent:a([]),oldContent:i},f=this.active=a([]);this._toggle(f,i,b)}},_toggle:function(d,c,e,h,g){var i=this,b=i.options;i.toShow=d;i.toHide=c;i.data=e;var f=function(){if(i)return i._completed.apply(i,arguments)};i._trigger("changestart",null,i.data);i.running=c.size()===0?d.size():c.size();if(b.animated){e={};e=b.collapsible&&h?{toShow:a([]),toHide:c,complete:f,down:g,autoHeight:b.autoHeight||b.fillSpace}:{toShow:d,toHide:c,complete:f,down:g,autoHeight:b.autoHeight||
+b.fillSpace};if(!b.proxied)b.proxied=b.animated;if(!b.proxiedDuration)b.proxiedDuration=b.duration;b.animated=a.isFunction(b.proxied)?b.proxied(e):b.proxied;b.duration=a.isFunction(b.proxiedDuration)?b.proxiedDuration(e):b.proxiedDuration;h=a.ui.accordion.animations;var j=b.duration,l=b.animated;if(l&&!h[l]&&!a.easing[l])l="slide";h[l]||(h[l]=function(o){this.slide(o,{easing:l,duration:j||700})});h[l](e)}else{if(b.collapsible&&h)d.toggle();else{c.hide();d.show()}f(true)}c.prev().attr({"aria-expanded":"false",
+"aria-selected":"false",tabIndex:-1}).blur();d.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(d){this.running=d?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});a.extend(a.ui.accordion,{version:"1.8.16",
+animations:{slide:function(d,c){d=a.extend({easing:"swing",duration:300},d,c);if(d.toHide.size())if(d.toShow.size()){var e=d.toShow.css("overflow"),h=0,g={},i={},b;c=d.toShow;b=c[0].style.width;c.width(parseInt(c.parent().width(),10)-parseInt(c.css("paddingLeft"),10)-parseInt(c.css("paddingRight"),10)-(parseInt(c.css("borderLeftWidth"),10)||0)-(parseInt(c.css("borderRightWidth"),10)||0));a.each(["height","paddingTop","paddingBottom"],function(f,j){i[j]="hide";f=(""+a.css(d.toShow[0],j)).match(/^([\d+-.]+)(.*)$/);
+g[j]={value:f[1],unit:f[2]||"px"}});d.toShow.css({height:0,overflow:"hidden"}).show();d.toHide.filter(":hidden").each(d.complete).end().filter(":visible").animate(i,{step:function(f,j){if(j.prop=="height")h=j.end-j.start===0?0:(j.now-j.start)/(j.end-j.start);d.toShow[0].style[j.prop]=h*g[j.prop].value+g[j.prop].unit},duration:d.duration,easing:d.easing,complete:function(){d.autoHeight||d.toShow.css("height","");d.toShow.css({width:b,overflow:e});d.complete()}})}else d.toHide.animate({height:"hide",
+paddingTop:"hide",paddingBottom:"hide"},d);else d.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},d)},bounceslide:function(d){this.slide(d,{easing:d.down?"easeOutBounce":"swing",duration:d.down?1E3:200})}}})})(jQuery);
+(function(a){var d=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var c=this,e=this.element[0].ownerDocument,h;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(g){if(!(c.options.disabled||c.element.propAttr("readOnly"))){h=
+false;var i=a.ui.keyCode;switch(g.keyCode){case i.PAGE_UP:c._move("previousPage",g);break;case i.PAGE_DOWN:c._move("nextPage",g);break;case i.UP:c._move("previous",g);g.preventDefault();break;case i.DOWN:c._move("next",g);g.preventDefault();break;case i.ENTER:case i.NUMPAD_ENTER:if(c.menu.active){h=true;g.preventDefault()}case i.TAB:if(!c.menu.active)return;c.menu.select(g);break;case i.ESCAPE:c.element.val(c.term);c.close(g);break;default:clearTimeout(c.searching);c.searching=setTimeout(function(){if(c.term!=
+c.element.val()){c.selectedItem=null;c.search(null,g)}},c.options.delay);break}}}).bind("keypress.autocomplete",function(g){if(h){h=false;g.preventDefault()}}).bind("focus.autocomplete",function(){if(!c.options.disabled){c.selectedItem=null;c.previous=c.element.val()}}).bind("blur.autocomplete",function(g){if(!c.options.disabled){clearTimeout(c.searching);c.closing=setTimeout(function(){c.close(g);c._change(g)},150)}});this._initSource();this.response=function(){return c._response.apply(c,arguments)};
+this.menu=a("<ul></ul>").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",e)[0]).mousedown(function(g){var i=c.menu.element[0];a(g.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(b){b.target!==c.element[0]&&b.target!==i&&!a.ui.contains(i,b.target)&&c.close()})},1);setTimeout(function(){clearTimeout(c.closing)},13)}).menu({focus:function(g,i){i=i.item.data("item.autocomplete");false!==c._trigger("focus",g,{item:i})&&/^key/.test(g.originalEvent.type)&&
+c.element.val(i.value)},selected:function(g,i){var b=i.item.data("item.autocomplete"),f=c.previous;if(c.element[0]!==e.activeElement){c.element.focus();c.previous=f;setTimeout(function(){c.previous=f;c.selectedItem=b},1)}false!==c._trigger("select",g,{item:b})&&c.element.val(b.value);c.term=c.element.val();c.close(g);c.selectedItem=b},blur:function(){c.menu.element.is(":visible")&&c.element.val()!==c.term&&c.element.val(c.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");
+a.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();a.Widget.prototype.destroy.call(this)},_setOption:function(c,e){a.Widget.prototype._setOption.apply(this,arguments);c==="source"&&this._initSource();if(c==="appendTo")this.menu.element.appendTo(a(e||"body",this.element[0].ownerDocument)[0]);c==="disabled"&&
+e&&this.xhr&&this.xhr.abort()},_initSource:function(){var c=this,e,h;if(a.isArray(this.options.source)){e=this.options.source;this.source=function(g,i){i(a.ui.autocomplete.filter(e,g.term))}}else if(typeof this.options.source==="string"){h=this.options.source;this.source=function(g,i){c.xhr&&c.xhr.abort();c.xhr=a.ajax({url:h,data:g,dataType:"json",autocompleteRequest:++d,success:function(b){this.autocompleteRequest===d&&i(b)},error:function(){this.autocompleteRequest===d&&i([])}})}}else this.source=
+this.options.source},search:function(c,e){c=c!=null?c:this.element.val();this.term=this.element.val();if(c.length<this.options.minLength)return this.close(e);clearTimeout(this.closing);if(this._trigger("search",e)!==false)return this._search(c)},_search:function(c){this.pending++;this.element.addClass("ui-autocomplete-loading");this.source({term:c},this.response)},_response:function(c){if(!this.options.disabled&&c&&c.length){c=this._normalize(c);this._suggest(c);this._trigger("open")}else this.close();
+this.pending--;this.pending||this.element.removeClass("ui-autocomplete-loading")},close:function(c){clearTimeout(this.closing);if(this.menu.element.is(":visible")){this.menu.element.hide();this.menu.deactivate();this._trigger("close",c)}},_change:function(c){this.previous!==this.element.val()&&this._trigger("change",c,{item:this.selectedItem})},_normalize:function(c){if(c.length&&c[0].label&&c[0].value)return c;return a.map(c,function(e){if(typeof e==="string")return{label:e,value:e};return a.extend({label:e.label||
+e.value,value:e.value||e.label},e)})},_suggest:function(c){var e=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(e,c);this.menu.deactivate();this.menu.refresh();e.show();this._resizeMenu();e.position(a.extend({of:this.element},this.options.position));this.options.autoFocus&&this.menu.next(new a.Event("mouseover"))},_resizeMenu:function(){var c=this.menu.element;c.outerWidth(Math.max(c.width("").outerWidth(),this.element.outerWidth()))},_renderMenu:function(c,e){var h=this;
+a.each(e,function(g,i){h._renderItem(c,i)})},_renderItem:function(c,e){return a("<li></li>").data("item.autocomplete",e).append(a("<a></a>").text(e.label)).appendTo(c)},_move:function(c,e){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(c)||this.menu.last()&&/^next/.test(c)){this.element.val(this.term);this.menu.deactivate()}else this.menu[c](e);else this.search(null,e)},widget:function(){return this.menu.element}});a.extend(a.ui.autocomplete,{escapeRegex:function(c){return c.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,
+"\\$&")},filter:function(c,e){var h=new RegExp(a.ui.autocomplete.escapeRegex(e),"i");return a.grep(c,function(g){return h.test(g.label||g.value||g)})}})})(jQuery);
+(function(a){a.widget("ui.menu",{_create:function(){var d=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(a(c.target).closest(".ui-menu-item a").length){c.preventDefault();d.select(c)}});this.refresh()},refresh:function(){var d=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex",
+-1).mouseenter(function(c){d.activate(c,a(this).parent())}).mouseleave(function(){d.deactivate()})},activate:function(d,c){this.deactivate();if(this.hasScroll()){var e=c.offset().top-this.element.offset().top,h=this.element.scrollTop(),g=this.element.height();if(e<0)this.element.scrollTop(h+e);else e>=g&&this.element.scrollTop(h+e-g+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",d,{item:c})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");
+this._trigger("blur");this.active=null}},next:function(d){this.move("next",".ui-menu-item:first",d)},previous:function(d){this.move("prev",".ui-menu-item:last",d)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(d,c,e){if(this.active){d=this.active[d+"All"](".ui-menu-item").eq(0);d.length?this.activate(e,d):this.activate(e,this.element.children(c))}else this.activate(e,
+this.element.children(c))},nextPage:function(d){if(this.hasScroll())if(!this.active||this.last())this.activate(d,this.element.children(".ui-menu-item:first"));else{var c=this.active.offset().top,e=this.element.height(),h=this.element.children(".ui-menu-item").filter(function(){var g=a(this).offset().top-c-e+a(this).height();return g<10&&g>-10});h.length||(h=this.element.children(".ui-menu-item:last"));this.activate(d,h)}else this.activate(d,this.element.children(".ui-menu-item").filter(!this.active||
+this.last()?":first":":last"))},previousPage:function(d){if(this.hasScroll())if(!this.active||this.first())this.activate(d,this.element.children(".ui-menu-item:last"));else{var c=this.active.offset().top,e=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var h=a(this).offset().top-c+e-a(this).height();return h<10&&h>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(d,result)}else this.activate(d,this.element.children(".ui-menu-item").filter(!this.active||
+this.first()?":last":":first"))},hasScroll:function(){return this.element.height()<this.element[a.fn.prop?"prop":"attr"]("scrollHeight")},select:function(d){this._trigger("selected",d,{item:this.active})}})})(jQuery);
+(function(a){var d,c,e,h,g=function(){var b=a(this).find(":ui-button");setTimeout(function(){b.button("refresh")},1)},i=function(b){var f=b.name,j=b.form,l=a([]);if(f)l=j?a(j).find("[name='"+f+"']"):a("[name='"+f+"']",b.ownerDocument).filter(function(){return!this.form});return l};a.widget("ui.button",{options:{disabled:null,text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",g);if(typeof this.options.disabled!==
+"boolean")this.options.disabled=this.element.propAttr("disabled");this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var b=this,f=this.options,j=this.type==="checkbox"||this.type==="radio",l="ui-state-hover"+(!j?" ui-state-active":"");if(f.label===null)f.label=this.buttonElement.html();if(this.element.is(":disabled"))f.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",function(){if(!f.disabled){a(this).addClass("ui-state-hover");
+this===d&&a(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){f.disabled||a(this).removeClass(l)}).bind("click.button",function(o){if(f.disabled){o.preventDefault();o.stopImmediatePropagation()}});this.element.bind("focus.button",function(){b.buttonElement.addClass("ui-state-focus")}).bind("blur.button",function(){b.buttonElement.removeClass("ui-state-focus")});if(j){this.element.bind("change.button",function(){h||b.refresh()});this.buttonElement.bind("mousedown.button",function(o){if(!f.disabled){h=
+false;c=o.pageX;e=o.pageY}}).bind("mouseup.button",function(o){if(!f.disabled)if(c!==o.pageX||e!==o.pageY)h=true})}if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(f.disabled||h)return false;a(this).toggleClass("ui-state-active");b.buttonElement.attr("aria-pressed",b.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",function(){if(f.disabled||h)return false;a(this).addClass("ui-state-active");b.buttonElement.attr("aria-pressed","true");
+var o=b.element[0];i(o).not(o).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")});else{this.buttonElement.bind("mousedown.button",function(){if(f.disabled)return false;a(this).addClass("ui-state-active");d=this;a(document).one("mouseup",function(){d=null})}).bind("mouseup.button",function(){if(f.disabled)return false;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(o){if(f.disabled)return false;if(o.keyCode==a.ui.keyCode.SPACE||
+o.keyCode==a.ui.keyCode.ENTER)a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(o){o.keyCode===a.ui.keyCode.SPACE&&a(this).click()})}this._setOption("disabled",f.disabled);this._resetButton()},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if(this.type==="checkbox"||this.type===
+"radio"){var b=this.element.parents().filter(":last"),f="label[for='"+this.element.attr("id")+"']";this.buttonElement=b.find(f);if(!this.buttonElement.length){b=b.length?b.siblings():this.element.siblings();this.buttonElement=b.filter(f);if(!this.buttonElement.length)this.buttonElement=b.find(f)}this.element.addClass("ui-helper-hidden-accessible");(b=this.element.is(":checked"))&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=this.element},
+widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());this.hasTitle||this.buttonElement.removeAttr("title");
+a.Widget.prototype.destroy.call(this)},_setOption:function(b,f){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled")f?this.element.propAttr("disabled",true):this.element.propAttr("disabled",false);else this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b);if(this.type==="radio")i(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed",
+"true"):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false")},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"),
+f=a("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),j=this.options.icons,l=j.primary&&j.secondary,o=[];if(j.primary||j.secondary){if(this.options.text)o.push("ui-button-text-icon"+(l?"s":j.primary?"-primary":"-secondary"));j.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+j.primary+"'></span>");j.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+j.secondary+"'></span>");if(!this.options.text){o.push(l?"ui-button-icons-only":
+"ui-button-icon-only");this.hasTitle||b.attr("title",f)}}else o.push("ui-button-text-only");b.addClass(o.join(" "))}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,f){b==="disabled"&&this.buttons.button("option",b,f);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var b=this.element.css("direction")===
+"ltr";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(b?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(b?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");
+a.Widget.prototype.destroy.call(this)}})})(jQuery);
+(function(a,d){function c(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass=
+"ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su",
+"Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",
+minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false,disabled:false};a.extend(this._defaults,this.regional[""]);this.dpDiv=e(a('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function e(b){return b.bind("mouseout",
+function(f){f=a(f.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");f.length&&f.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(f){f=a(f.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!(a.datepicker._isDisabledDatepicker(i.inline?b.parent()[0]:i.input[0])||!f.length)){f.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
+f.addClass("ui-state-hover");f.hasClass("ui-datepicker-prev")&&f.addClass("ui-datepicker-prev-hover");f.hasClass("ui-datepicker-next")&&f.addClass("ui-datepicker-next-hover")}})}function h(b,f){a.extend(b,f);for(var j in f)if(f[j]==null||f[j]==d)b[j]=f[j];return b}a.extend(a.ui,{datepicker:{version:"1.8.16"}});var g=(new Date).getTime(),i;a.extend(c.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},
+setDefaults:function(b){h(this._defaults,b||{});return this},_attachDatepicker:function(b,f){var j=null;for(var l in this._defaults){var o=b.getAttribute("date:"+l);if(o){j=j||{};try{j[l]=eval(o)}catch(n){j[l]=o}}}l=b.nodeName.toLowerCase();o=l=="div"||l=="span";if(!b.id){this.uuid+=1;b.id="dp"+this.uuid}var k=this._newInst(a(b),o);k.settings=a.extend({},f||{},j||{});if(l=="input")this._connectDatepicker(b,k);else o&&this._inlineDatepicker(b,k)},_newInst:function(b,f){return{id:b[0].id.replace(/([^A-Za-z0-9_-])/g,
+"\\\\$1"),input:b,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:f,dpDiv:!f?this.dpDiv:e(a('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(b,f){var j=a(b);f.append=a([]);f.trigger=a([]);if(!j.hasClass(this.markerClassName)){this._attachments(j,f);j.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",
+function(l,o,n){f.settings[o]=n}).bind("getData.datepicker",function(l,o){return this._get(f,o)});this._autoSize(f);a.data(b,"datepicker",f);f.settings.disabled&&this._disableDatepicker(b)}},_attachments:function(b,f){var j=this._get(f,"appendText"),l=this._get(f,"isRTL");f.append&&f.append.remove();if(j){f.append=a('<span class="'+this._appendClass+'">'+j+"</span>");b[l?"before":"after"](f.append)}b.unbind("focus",this._showDatepicker);f.trigger&&f.trigger.remove();j=this._get(f,"showOn");if(j==
+"focus"||j=="both")b.focus(this._showDatepicker);if(j=="button"||j=="both"){j=this._get(f,"buttonText");var o=this._get(f,"buttonImage");f.trigger=a(this._get(f,"buttonImageOnly")?a("<img/>").addClass(this._triggerClass).attr({src:o,alt:j,title:j}):a('<button type="button"></button>').addClass(this._triggerClass).html(o==""?j:a("<img/>").attr({src:o,alt:j,title:j})));b[l?"before":"after"](f.trigger);f.trigger.click(function(){a.datepicker._datepickerShowing&&a.datepicker._lastInput==b[0]?a.datepicker._hideDatepicker():
+a.datepicker._showDatepicker(b[0]);return false})}},_autoSize:function(b){if(this._get(b,"autoSize")&&!b.inline){var f=new Date(2009,11,20),j=this._get(b,"dateFormat");if(j.match(/[DM]/)){var l=function(o){for(var n=0,k=0,m=0;m<o.length;m++)if(o[m].length>n){n=o[m].length;k=m}return k};f.setMonth(l(this._get(b,j.match(/MM/)?"monthNames":"monthNamesShort")));f.setDate(l(this._get(b,j.match(/DD/)?"dayNames":"dayNamesShort"))+20-f.getDay())}b.input.attr("size",this._formatDate(b,f).length)}},_inlineDatepicker:function(b,
+f){var j=a(b);if(!j.hasClass(this.markerClassName)){j.addClass(this.markerClassName).append(f.dpDiv).bind("setData.datepicker",function(l,o,n){f.settings[o]=n}).bind("getData.datepicker",function(l,o){return this._get(f,o)});a.data(b,"datepicker",f);this._setDate(f,this._getDefaultDate(f),true);this._updateDatepicker(f);this._updateAlternate(f);f.settings.disabled&&this._disableDatepicker(b);f.dpDiv.css("display","block")}},_dialogDatepicker:function(b,f,j,l,o){b=this._dialogInst;if(!b){this.uuid+=
+1;this._dialogInput=a('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);a("body").append(this._dialogInput);b=this._dialogInst=this._newInst(this._dialogInput,false);b.settings={};a.data(this._dialogInput[0],"datepicker",b)}h(b.settings,l||{});f=f&&f.constructor==Date?this._formatDate(b,f):f;this._dialogInput.val(f);this._pos=o?o.length?o:[o.pageX,o.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/
+2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");b.settings.onSelect=j;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);a.blockUI&&a.blockUI(this.dpDiv);a.data(this._dialogInput[0],"datepicker",b);return this},_destroyDatepicker:function(b){var f=
+a(b),j=a.data(b,"datepicker");if(f.hasClass(this.markerClassName)){var l=b.nodeName.toLowerCase();a.removeData(b,"datepicker");if(l=="input"){j.append.remove();j.trigger.remove();f.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(l=="div"||l=="span")f.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(b){var f=a(b),j=a.data(b,"datepicker");if(f.hasClass(this.markerClassName)){var l=
+b.nodeName.toLowerCase();if(l=="input"){b.disabled=false;j.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(l=="div"||l=="span"){f=f.children("."+this._inlineClass);f.children().removeClass("ui-state-disabled");f.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=a.map(this._disabledInputs,function(o){return o==b?null:o})}},_disableDatepicker:function(b){var f=a(b),j=a.data(b,
+"datepicker");if(f.hasClass(this.markerClassName)){var l=b.nodeName.toLowerCase();if(l=="input"){b.disabled=true;j.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(l=="div"||l=="span"){f=f.children("."+this._inlineClass);f.children().addClass("ui-state-disabled");f.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=a.map(this._disabledInputs,function(o){return o==
+b?null:o});this._disabledInputs[this._disabledInputs.length]=b}},_isDisabledDatepicker:function(b){if(!b)return false;for(var f=0;f<this._disabledInputs.length;f++)if(this._disabledInputs[f]==b)return true;return false},_getInst:function(b){try{return a.data(b,"datepicker")}catch(f){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(b,f,j){var l=this._getInst(b);if(arguments.length==2&&typeof f=="string")return f=="defaults"?a.extend({},a.datepicker._defaults):l?f=="all"?
+a.extend({},l.settings):this._get(l,f):null;var o=f||{};if(typeof f=="string"){o={};o[f]=j}if(l){this._curInst==l&&this._hideDatepicker();var n=this._getDateDatepicker(b,true),k=this._getMinMaxDate(l,"min"),m=this._getMinMaxDate(l,"max");h(l.settings,o);if(k!==null&&o.dateFormat!==d&&o.minDate===d)l.settings.minDate=this._formatDate(l,k);if(m!==null&&o.dateFormat!==d&&o.maxDate===d)l.settings.maxDate=this._formatDate(l,m);this._attachments(a(b),l);this._autoSize(l);this._setDate(l,n);this._updateAlternate(l);
+this._updateDatepicker(l)}},_changeDatepicker:function(b,f,j){this._optionDatepicker(b,f,j)},_refreshDatepicker:function(b){(b=this._getInst(b))&&this._updateDatepicker(b)},_setDateDatepicker:function(b,f){if(b=this._getInst(b)){this._setDate(b,f);this._updateDatepicker(b);this._updateAlternate(b)}},_getDateDatepicker:function(b,f){(b=this._getInst(b))&&!b.inline&&this._setDateFromField(b,f);return b?this._getDate(b):null},_doKeyDown:function(b){var f=a.datepicker._getInst(b.target),j=true,l=f.dpDiv.is(".ui-datepicker-rtl");
+f._keyEvent=true;if(a.datepicker._datepickerShowing)switch(b.keyCode){case 9:a.datepicker._hideDatepicker();j=false;break;case 13:j=a("td."+a.datepicker._dayOverClass+":not(."+a.datepicker._currentClass+")",f.dpDiv);j[0]&&a.datepicker._selectDay(b.target,f.selectedMonth,f.selectedYear,j[0]);if(b=a.datepicker._get(f,"onSelect")){j=a.datepicker._formatDate(f);b.apply(f.input?f.input[0]:null,[j,f])}else a.datepicker._hideDatepicker();return false;case 27:a.datepicker._hideDatepicker();break;case 33:a.datepicker._adjustDate(b.target,
+b.ctrlKey?-a.datepicker._get(f,"stepBigMonths"):-a.datepicker._get(f,"stepMonths"),"M");break;case 34:a.datepicker._adjustDate(b.target,b.ctrlKey?+a.datepicker._get(f,"stepBigMonths"):+a.datepicker._get(f,"stepMonths"),"M");break;case 35:if(b.ctrlKey||b.metaKey)a.datepicker._clearDate(b.target);j=b.ctrlKey||b.metaKey;break;case 36:if(b.ctrlKey||b.metaKey)a.datepicker._gotoToday(b.target);j=b.ctrlKey||b.metaKey;break;case 37:if(b.ctrlKey||b.metaKey)a.datepicker._adjustDate(b.target,l?+1:-1,"D");j=
+b.ctrlKey||b.metaKey;if(b.originalEvent.altKey)a.datepicker._adjustDate(b.target,b.ctrlKey?-a.datepicker._get(f,"stepBigMonths"):-a.datepicker._get(f,"stepMonths"),"M");break;case 38:if(b.ctrlKey||b.metaKey)a.datepicker._adjustDate(b.target,-7,"D");j=b.ctrlKey||b.metaKey;break;case 39:if(b.ctrlKey||b.metaKey)a.datepicker._adjustDate(b.target,l?-1:+1,"D");j=b.ctrlKey||b.metaKey;if(b.originalEvent.altKey)a.datepicker._adjustDate(b.target,b.ctrlKey?+a.datepicker._get(f,"stepBigMonths"):+a.datepicker._get(f,
+"stepMonths"),"M");break;case 40:if(b.ctrlKey||b.metaKey)a.datepicker._adjustDate(b.target,+7,"D");j=b.ctrlKey||b.metaKey;break;default:j=false}else if(b.keyCode==36&&b.ctrlKey)a.datepicker._showDatepicker(this);else j=false;if(j){b.preventDefault();b.stopPropagation()}},_doKeyPress:function(b){var f=a.datepicker._getInst(b.target);if(a.datepicker._get(f,"constrainInput")){f=a.datepicker._possibleChars(a.datepicker._get(f,"dateFormat"));var j=String.fromCharCode(b.charCode==d?b.keyCode:b.charCode);
+return b.ctrlKey||b.metaKey||j<" "||!f||f.indexOf(j)>-1}},_doKeyUp:function(b){b=a.datepicker._getInst(b.target);if(b.input.val()!=b.lastVal)try{if(a.datepicker.parseDate(a.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,a.datepicker._getFormatConfig(b))){a.datepicker._setDateFromField(b);a.datepicker._updateAlternate(b);a.datepicker._updateDatepicker(b)}}catch(f){a.datepicker.log(f)}return true},_showDatepicker:function(b){b=b.target||b;if(b.nodeName.toLowerCase()!="input")b=a("input",
+b.parentNode)[0];if(!(a.datepicker._isDisabledDatepicker(b)||a.datepicker._lastInput==b)){var f=a.datepicker._getInst(b);if(a.datepicker._curInst&&a.datepicker._curInst!=f){a.datepicker._datepickerShowing&&a.datepicker._triggerOnClose(a.datepicker._curInst);a.datepicker._curInst.dpDiv.stop(true,true)}var j=a.datepicker._get(f,"beforeShow");j=j?j.apply(b,[b,f]):{};if(j!==false){h(f.settings,j);f.lastVal=null;a.datepicker._lastInput=b;a.datepicker._setDateFromField(f);if(a.datepicker._inDialog)b.value=
+"";if(!a.datepicker._pos){a.datepicker._pos=a.datepicker._findPos(b);a.datepicker._pos[1]+=b.offsetHeight}var l=false;a(b).parents().each(function(){l|=a(this).css("position")=="fixed";return!l});if(l&&a.browser.opera){a.datepicker._pos[0]-=document.documentElement.scrollLeft;a.datepicker._pos[1]-=document.documentElement.scrollTop}j={left:a.datepicker._pos[0],top:a.datepicker._pos[1]};a.datepicker._pos=null;f.dpDiv.empty();f.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});a.datepicker._updateDatepicker(f);
+j=a.datepicker._checkOffset(f,j,l);f.dpDiv.css({position:a.datepicker._inDialog&&a.blockUI?"static":l?"fixed":"absolute",display:"none",left:j.left+"px",top:j.top+"px"});if(!f.inline){j=a.datepicker._get(f,"showAnim");var o=a.datepicker._get(f,"duration"),n=function(){var k=f.dpDiv.find("iframe.ui-datepicker-cover");if(k.length){var m=a.datepicker._getBorders(f.dpDiv);k.css({left:-m[0],top:-m[1],width:f.dpDiv.outerWidth(),height:f.dpDiv.outerHeight()})}};f.dpDiv.zIndex(a(b).zIndex()+1);a.datepicker._datepickerShowing=
+true;a.effects&&a.effects[j]?f.dpDiv.show(j,a.datepicker._get(f,"showOptions"),o,n):f.dpDiv[j||"show"](j?o:null,n);if(!j||!o)n();f.input.is(":visible")&&!f.input.is(":disabled")&&f.input.focus();a.datepicker._curInst=f}}}},_updateDatepicker:function(b){this.maxRows=4;var f=a.datepicker._getBorders(b.dpDiv);i=b;b.dpDiv.empty().append(this._generateHTML(b));var j=b.dpDiv.find("iframe.ui-datepicker-cover");j.length&&j.css({left:-f[0],top:-f[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()});
+b.dpDiv.find("."+this._dayOverClass+" a").mouseover();f=this._getNumberOfMonths(b);j=f[1];b.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");j>1&&b.dpDiv.addClass("ui-datepicker-multi-"+j).css("width",17*j+"em");b.dpDiv[(f[0]!=1||f[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");b.dpDiv[(this._get(b,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");b==a.datepicker._curInst&&a.datepicker._datepickerShowing&&b.input&&b.input.is(":visible")&&
+!b.input.is(":disabled")&&b.input[0]!=document.activeElement&&b.input.focus();if(b.yearshtml){var l=b.yearshtml;setTimeout(function(){l===b.yearshtml&&b.yearshtml&&b.dpDiv.find("select.ui-datepicker-year:first").replaceWith(b.yearshtml);l=b.yearshtml=null},0)}},_getBorders:function(b){var f=function(j){return{thin:1,medium:2,thick:3}[j]||j};return[parseFloat(f(b.css("border-left-width"))),parseFloat(f(b.css("border-top-width")))]},_checkOffset:function(b,f,j){var l=b.dpDiv.outerWidth(),o=b.dpDiv.outerHeight(),
+n=b.input?b.input.outerWidth():0,k=b.input?b.input.outerHeight():0,m=document.documentElement.clientWidth+a(document).scrollLeft(),p=document.documentElement.clientHeight+a(document).scrollTop();f.left-=this._get(b,"isRTL")?l-n:0;f.left-=j&&f.left==b.input.offset().left?a(document).scrollLeft():0;f.top-=j&&f.top==b.input.offset().top+k?a(document).scrollTop():0;f.left-=Math.min(f.left,f.left+l>m&&m>l?Math.abs(f.left+l-m):0);f.top-=Math.min(f.top,f.top+o>p&&p>o?Math.abs(o+k):0);return f},_findPos:function(b){for(var f=
+this._get(this._getInst(b),"isRTL");b&&(b.type=="hidden"||b.nodeType!=1||a.expr.filters.hidden(b));)b=b[f?"previousSibling":"nextSibling"];b=a(b).offset();return[b.left,b.top]},_triggerOnClose:function(b){var f=this._get(b,"onClose");if(f)f.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b])},_hideDatepicker:function(b){var f=this._curInst;if(!(!f||b&&f!=a.data(b,"datepicker")))if(this._datepickerShowing){b=this._get(f,"showAnim");var j=this._get(f,"duration"),l=function(){a.datepicker._tidyDialog(f);
+this._curInst=null};a.effects&&a.effects[b]?f.dpDiv.hide(b,a.datepicker._get(f,"showOptions"),j,l):f.dpDiv[b=="slideDown"?"slideUp":b=="fadeIn"?"fadeOut":"hide"](b?j:null,l);b||l();a.datepicker._triggerOnClose(f);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(a.blockUI){a.unblockUI();a("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(b){b.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},
+_checkExternalClick:function(b){if(a.datepicker._curInst){b=a(b.target);b[0].id!=a.datepicker._mainDivId&&b.parents("#"+a.datepicker._mainDivId).length==0&&!b.hasClass(a.datepicker.markerClassName)&&!b.hasClass(a.datepicker._triggerClass)&&a.datepicker._datepickerShowing&&!(a.datepicker._inDialog&&a.blockUI)&&a.datepicker._hideDatepicker()}},_adjustDate:function(b,f,j){b=a(b);var l=this._getInst(b[0]);if(!this._isDisabledDatepicker(b[0])){this._adjustInstDate(l,f+(j=="M"?this._get(l,"showCurrentAtPos"):
+0),j);this._updateDatepicker(l)}},_gotoToday:function(b){b=a(b);var f=this._getInst(b[0]);if(this._get(f,"gotoCurrent")&&f.currentDay){f.selectedDay=f.currentDay;f.drawMonth=f.selectedMonth=f.currentMonth;f.drawYear=f.selectedYear=f.currentYear}else{var j=new Date;f.selectedDay=j.getDate();f.drawMonth=f.selectedMonth=j.getMonth();f.drawYear=f.selectedYear=j.getFullYear()}this._notifyChange(f);this._adjustDate(b)},_selectMonthYear:function(b,f,j){b=a(b);var l=this._getInst(b[0]);l["selected"+(j=="M"?
+"Month":"Year")]=l["draw"+(j=="M"?"Month":"Year")]=parseInt(f.options[f.selectedIndex].value,10);this._notifyChange(l);this._adjustDate(b)},_selectDay:function(b,f,j,l){var o=a(b);if(!(a(l).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0]))){o=this._getInst(o[0]);o.selectedDay=o.currentDay=a("a",l).html();o.selectedMonth=o.currentMonth=f;o.selectedYear=o.currentYear=j;this._selectDate(b,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear))}},_clearDate:function(b){b=a(b);
+this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(b,f){b=this._getInst(a(b)[0]);f=f!=null?f:this._formatDate(b);b.input&&b.input.val(f);this._updateAlternate(b);var j=this._get(b,"onSelect");if(j)j.apply(b.input?b.input[0]:null,[f,b]);else b.input&&b.input.trigger("change");if(b.inline)this._updateDatepicker(b);else{this._hideDatepicker();this._lastInput=b.input[0];typeof b.input[0]!="object"&&b.input.focus();this._lastInput=null}},_updateAlternate:function(b){var f=this._get(b,"altField");
+if(f){var j=this._get(b,"altFormat")||this._get(b,"dateFormat"),l=this._getDate(b),o=this.formatDate(j,l,this._getFormatConfig(b));a(f).each(function(){a(this).val(o)})}},noWeekends:function(b){b=b.getDay();return[b>0&&b<6,""]},iso8601Week:function(b){b=new Date(b.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var f=b.getTime();b.setMonth(0);b.setDate(1);return Math.floor(Math.round((f-b)/864E5)/7)+1},parseDate:function(b,f,j){if(b==null||f==null)throw"Invalid arguments";f=typeof f=="object"?
+f.toString():f+"";if(f=="")return null;var l=(j?j.shortYearCutoff:null)||this._defaults.shortYearCutoff;l=typeof l!="string"?l:(new Date).getFullYear()%100+parseInt(l,10);for(var o=(j?j.dayNamesShort:null)||this._defaults.dayNamesShort,n=(j?j.dayNames:null)||this._defaults.dayNames,k=(j?j.monthNamesShort:null)||this._defaults.monthNamesShort,m=(j?j.monthNames:null)||this._defaults.monthNames,p=j=-1,q=-1,s=-1,r=false,u=function(z){(z=H+1<b.length&&b.charAt(H+1)==z)&&H++;return z},v=function(z){var I=
+u(z);z=new RegExp("^\\d{1,"+(z=="@"?14:z=="!"?20:z=="y"&&I?4:z=="o"?3:2)+"}");z=f.substring(y).match(z);if(!z)throw"Missing number at position "+y;y+=z[0].length;return parseInt(z[0],10)},w=function(z,I,N){z=a.map(u(z)?N:I,function(D,E){return[[E,D]]}).sort(function(D,E){return-(D[1].length-E[1].length)});var J=-1;a.each(z,function(D,E){D=E[1];if(f.substr(y,D.length).toLowerCase()==D.toLowerCase()){J=E[0];y+=D.length;return false}});if(J!=-1)return J+1;else throw"Unknown name at position "+y;},x=
+function(){if(f.charAt(y)!=b.charAt(H))throw"Unexpected literal at position "+y;y++},y=0,H=0;H<b.length;H++)if(r)if(b.charAt(H)=="'"&&!u("'"))r=false;else x();else switch(b.charAt(H)){case "d":q=v("d");break;case "D":w("D",o,n);break;case "o":s=v("o");break;case "m":p=v("m");break;case "M":p=w("M",k,m);break;case "y":j=v("y");break;case "@":var C=new Date(v("@"));j=C.getFullYear();p=C.getMonth()+1;q=C.getDate();break;case "!":C=new Date((v("!")-this._ticksTo1970)/1E4);j=C.getFullYear();p=C.getMonth()+
+1;q=C.getDate();break;case "'":if(u("'"))x();else r=true;break;default:x()}if(y<f.length)throw"Extra/unparsed characters found in date: "+f.substring(y);if(j==-1)j=(new Date).getFullYear();else if(j<100)j+=(new Date).getFullYear()-(new Date).getFullYear()%100+(j<=l?0:-100);if(s>-1){p=1;q=s;do{l=this._getDaysInMonth(j,p-1);if(q<=l)break;p++;q-=l}while(1)}C=this._daylightSavingAdjust(new Date(j,p-1,q));if(C.getFullYear()!=j||C.getMonth()+1!=p||C.getDate()!=q)throw"Invalid date";return C},ATOM:"yy-mm-dd",
+COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(b,f,j){if(!f)return"";var l=(j?j.dayNamesShort:null)||this._defaults.dayNamesShort,o=(j?j.dayNames:null)||this._defaults.dayNames,n=(j?j.monthNamesShort:null)||this._defaults.monthNamesShort;j=(j?j.monthNames:
+null)||this._defaults.monthNames;var k=function(u){(u=r+1<b.length&&b.charAt(r+1)==u)&&r++;return u},m=function(u,v,w){v=""+v;if(k(u))for(;v.length<w;)v="0"+v;return v},p=function(u,v,w,x){return k(u)?x[v]:w[v]},q="",s=false;if(f)for(var r=0;r<b.length;r++)if(s)if(b.charAt(r)=="'"&&!k("'"))s=false;else q+=b.charAt(r);else switch(b.charAt(r)){case "d":q+=m("d",f.getDate(),2);break;case "D":q+=p("D",f.getDay(),l,o);break;case "o":q+=m("o",Math.round(((new Date(f.getFullYear(),f.getMonth(),f.getDate())).getTime()-
+(new Date(f.getFullYear(),0,0)).getTime())/864E5),3);break;case "m":q+=m("m",f.getMonth()+1,2);break;case "M":q+=p("M",f.getMonth(),n,j);break;case "y":q+=k("y")?f.getFullYear():(f.getYear()%100<10?"0":"")+f.getYear()%100;break;case "@":q+=f.getTime();break;case "!":q+=f.getTime()*1E4+this._ticksTo1970;break;case "'":if(k("'"))q+="'";else s=true;break;default:q+=b.charAt(r)}return q},_possibleChars:function(b){for(var f="",j=false,l=function(n){(n=o+1<b.length&&b.charAt(o+1)==n)&&o++;return n},o=
+0;o<b.length;o++)if(j)if(b.charAt(o)=="'"&&!l("'"))j=false;else f+=b.charAt(o);else switch(b.charAt(o)){case "d":case "m":case "y":case "@":f+="0123456789";break;case "D":case "M":return null;case "'":if(l("'"))f+="'";else j=true;break;default:f+=b.charAt(o)}return f},_get:function(b,f){return b.settings[f]!==d?b.settings[f]:this._defaults[f]},_setDateFromField:function(b,f){if(b.input.val()!=b.lastVal){var j=this._get(b,"dateFormat"),l=b.lastVal=b.input?b.input.val():null,o,n;o=n=this._getDefaultDate(b);
+var k=this._getFormatConfig(b);try{o=this.parseDate(j,l,k)||n}catch(m){this.log(m);l=f?"":l}b.selectedDay=o.getDate();b.drawMonth=b.selectedMonth=o.getMonth();b.drawYear=b.selectedYear=o.getFullYear();b.currentDay=l?o.getDate():0;b.currentMonth=l?o.getMonth():0;b.currentYear=l?o.getFullYear():0;this._adjustInstDate(b)}},_getDefaultDate:function(b){return this._restrictMinMax(b,this._determineDate(b,this._get(b,"defaultDate"),new Date))},_determineDate:function(b,f,j){var l=function(n){var k=new Date;
+k.setDate(k.getDate()+n);return k},o=function(n){try{return a.datepicker.parseDate(a.datepicker._get(b,"dateFormat"),n,a.datepicker._getFormatConfig(b))}catch(k){}var m=(n.toLowerCase().match(/^c/)?a.datepicker._getDate(b):null)||new Date,p=m.getFullYear(),q=m.getMonth();m=m.getDate();for(var s=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,r=s.exec(n);r;){switch(r[2]||"d"){case "d":case "D":m+=parseInt(r[1],10);break;case "w":case "W":m+=parseInt(r[1],10)*7;break;case "m":case "M":q+=parseInt(r[1],10);m=
+Math.min(m,a.datepicker._getDaysInMonth(p,q));break;case "y":case "Y":p+=parseInt(r[1],10);m=Math.min(m,a.datepicker._getDaysInMonth(p,q));break}r=s.exec(n)}return new Date(p,q,m)};if(f=(f=f==null||f===""?j:typeof f=="string"?o(f):typeof f=="number"?isNaN(f)?j:l(f):new Date(f.getTime()))&&f.toString()=="Invalid Date"?j:f){f.setHours(0);f.setMinutes(0);f.setSeconds(0);f.setMilliseconds(0)}return this._daylightSavingAdjust(f)},_daylightSavingAdjust:function(b){if(!b)return null;b.setHours(b.getHours()>
+12?b.getHours()+2:0);return b},_setDate:function(b,f,j){var l=!f,o=b.selectedMonth,n=b.selectedYear;f=this._restrictMinMax(b,this._determineDate(b,f,new Date));b.selectedDay=b.currentDay=f.getDate();b.drawMonth=b.selectedMonth=b.currentMonth=f.getMonth();b.drawYear=b.selectedYear=b.currentYear=f.getFullYear();if((o!=b.selectedMonth||n!=b.selectedYear)&&!j)this._notifyChange(b);this._adjustInstDate(b);if(b.input)b.input.val(l?"":this._formatDate(b))},_getDate:function(b){return!b.currentYear||b.input&&
+b.input.val()==""?null:this._daylightSavingAdjust(new Date(b.currentYear,b.currentMonth,b.currentDay))},_generateHTML:function(b){var f=new Date;f=this._daylightSavingAdjust(new Date(f.getFullYear(),f.getMonth(),f.getDate()));var j=this._get(b,"isRTL"),l=this._get(b,"showButtonPanel"),o=this._get(b,"hideIfNoPrevNext"),n=this._get(b,"navigationAsDateFormat"),k=this._getNumberOfMonths(b),m=this._get(b,"showCurrentAtPos"),p=this._get(b,"stepMonths"),q=k[0]!=1||k[1]!=1,s=this._daylightSavingAdjust(!b.currentDay?
+new Date(9999,9,9):new Date(b.currentYear,b.currentMonth,b.currentDay)),r=this._getMinMaxDate(b,"min"),u=this._getMinMaxDate(b,"max");m=b.drawMonth-m;var v=b.drawYear;if(m<0){m+=12;v--}if(u){var w=this._daylightSavingAdjust(new Date(u.getFullYear(),u.getMonth()-k[0]*k[1]+1,u.getDate()));for(w=r&&w<r?r:w;this._daylightSavingAdjust(new Date(v,m,1))>w;){m--;if(m<0){m=11;v--}}}b.drawMonth=m;b.drawYear=v;w=this._get(b,"prevText");w=!n?w:this.formatDate(w,this._daylightSavingAdjust(new Date(v,m-p,1)),this._getFormatConfig(b));
+w=this._canAdjustMonth(b,-1,v,m)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+g+".datepicker._adjustDate('#"+b.id+"', -"+p+", 'M');\" title=\""+w+'"><span class="ui-icon ui-icon-circle-triangle-'+(j?"e":"w")+'">'+w+"</span></a>":o?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+w+'"><span class="ui-icon ui-icon-circle-triangle-'+(j?"e":"w")+'">'+w+"</span></a>";var x=this._get(b,"nextText");x=!n?x:this.formatDate(x,this._daylightSavingAdjust(new Date(v,
+m+p,1)),this._getFormatConfig(b));o=this._canAdjustMonth(b,+1,v,m)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+g+".datepicker._adjustDate('#"+b.id+"', +"+p+", 'M');\" title=\""+x+'"><span class="ui-icon ui-icon-circle-triangle-'+(j?"w":"e")+'">'+x+"</span></a>":o?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+x+'"><span class="ui-icon ui-icon-circle-triangle-'+(j?"w":"e")+'">'+x+"</span></a>";p=this._get(b,"currentText");x=this._get(b,"gotoCurrent")&&
+b.currentDay?s:f;p=!n?p:this.formatDate(p,x,this._getFormatConfig(b));n=!b.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+g+'.datepicker._hideDatepicker();">'+this._get(b,"closeText")+"</button>":"";l=l?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(j?n:"")+(this._isInRange(b,x)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+
+g+".datepicker._gotoToday('#"+b.id+"');\">"+p+"</button>":"")+(j?"":n)+"</div>":"";n=parseInt(this._get(b,"firstDay"),10);n=isNaN(n)?0:n;p=this._get(b,"showWeek");x=this._get(b,"dayNames");this._get(b,"dayNamesShort");var y=this._get(b,"dayNamesMin"),H=this._get(b,"monthNames"),C=this._get(b,"monthNamesShort"),z=this._get(b,"beforeShowDay"),I=this._get(b,"showOtherMonths"),N=this._get(b,"selectOtherMonths");this._get(b,"calculateWeek");for(var J=this._getDefaultDate(b),D="",E=0;E<k[0];E++){var P=
+"";this.maxRows=4;for(var L=0;L<k[1];L++){var Q=this._daylightSavingAdjust(new Date(v,m,b.selectedDay)),B=" ui-corner-all",F="";if(q){F+='<div class="ui-datepicker-group';if(k[1]>1)switch(L){case 0:F+=" ui-datepicker-group-first";B=" ui-corner-"+(j?"right":"left");break;case k[1]-1:F+=" ui-datepicker-group-last";B=" ui-corner-"+(j?"left":"right");break;default:F+=" ui-datepicker-group-middle";B="";break}F+='">'}F+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+B+'">'+(/all|left/.test(B)&&
+E==0?j?o:w:"")+(/all|right/.test(B)&&E==0?j?w:o:"")+this._generateMonthYearHeader(b,m,v,r,u,E>0||L>0,H,C)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var G=p?'<th class="ui-datepicker-week-col">'+this._get(b,"weekHeader")+"</th>":"";for(B=0;B<7;B++){var A=(B+n)%7;G+="<th"+((B+n+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+x[A]+'">'+y[A]+"</span></th>"}F+=G+"</tr></thead><tbody>";G=this._getDaysInMonth(v,m);if(v==b.selectedYear&&m==b.selectedMonth)b.selectedDay=Math.min(b.selectedDay,
+G);B=(this._getFirstDayOfMonth(v,m)-n+7)%7;G=Math.ceil((B+G)/7);this.maxRows=G=q?this.maxRows>G?this.maxRows:G:G;A=this._daylightSavingAdjust(new Date(v,m,1-B));for(var R=0;R<G;R++){F+="<tr>";var S=!p?"":'<td class="ui-datepicker-week-col">'+this._get(b,"calculateWeek")(A)+"</td>";for(B=0;B<7;B++){var M=z?z.apply(b.input?b.input[0]:null,[A]):[true,""],K=A.getMonth()!=m,O=K&&!N||!M[0]||r&&A<r||u&&A>u;S+='<td class="'+((B+n+6)%7>=5?" ui-datepicker-week-end":"")+(K?" ui-datepicker-other-month":"")+(A.getTime()==
+Q.getTime()&&m==b.selectedMonth&&b._keyEvent||J.getTime()==A.getTime()&&J.getTime()==Q.getTime()?" "+this._dayOverClass:"")+(O?" "+this._unselectableClass+" ui-state-disabled":"")+(K&&!I?"":" "+M[1]+(A.getTime()==s.getTime()?" "+this._currentClass:"")+(A.getTime()==f.getTime()?" ui-datepicker-today":""))+'"'+((!K||I)&&M[2]?' title="'+M[2]+'"':"")+(O?"":' onclick="DP_jQuery_'+g+".datepicker._selectDay('#"+b.id+"',"+A.getMonth()+","+A.getFullYear()+', this);return false;"')+">"+(K&&!I?"&#xa0;":O?'<span class="ui-state-default">'+
+A.getDate()+"</span>":'<a class="ui-state-default'+(A.getTime()==f.getTime()?" ui-state-highlight":"")+(A.getTime()==s.getTime()?" ui-state-active":"")+(K?" ui-priority-secondary":"")+'" href="#">'+A.getDate()+"</a>")+"</td>";A.setDate(A.getDate()+1);A=this._daylightSavingAdjust(A)}F+=S+"</tr>"}m++;if(m>11){m=0;v++}F+="</tbody></table>"+(q?"</div>"+(k[0]>0&&L==k[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");P+=F}D+=P}D+=l+(a.browser.msie&&parseInt(a.browser.version,10)<7&&!b.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':
+"");b._keyEvent=false;return D},_generateMonthYearHeader:function(b,f,j,l,o,n,k,m){var p=this._get(b,"changeMonth"),q=this._get(b,"changeYear"),s=this._get(b,"showMonthAfterYear"),r='<div class="ui-datepicker-title">',u="";if(n||!p)u+='<span class="ui-datepicker-month">'+k[f]+"</span>";else{k=l&&l.getFullYear()==j;var v=o&&o.getFullYear()==j;u+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+g+".datepicker._selectMonthYear('#"+b.id+"', this, 'M');\" >";for(var w=0;w<12;w++)if((!k||w>=l.getMonth())&&
+(!v||w<=o.getMonth()))u+='<option value="'+w+'"'+(w==f?' selected="selected"':"")+">"+m[w]+"</option>";u+="</select>"}s||(r+=u+(n||!(p&&q)?"&#xa0;":""));if(!b.yearshtml){b.yearshtml="";if(n||!q)r+='<span class="ui-datepicker-year">'+j+"</span>";else{m=this._get(b,"yearRange").split(":");var x=(new Date).getFullYear();k=function(y){y=y.match(/c[+-].*/)?j+parseInt(y.substring(1),10):y.match(/[+-].*/)?x+parseInt(y,10):parseInt(y,10);return isNaN(y)?x:y};f=k(m[0]);m=Math.max(f,k(m[1]||""));f=l?Math.max(f,
+l.getFullYear()):f;m=o?Math.min(m,o.getFullYear()):m;for(b.yearshtml+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+g+".datepicker._selectMonthYear('#"+b.id+"', this, 'Y');\" >";f<=m;f++)b.yearshtml+='<option value="'+f+'"'+(f==j?' selected="selected"':"")+">"+f+"</option>";b.yearshtml+="</select>";r+=b.yearshtml;b.yearshtml=null}}r+=this._get(b,"yearSuffix");if(s)r+=(n||!(p&&q)?"&#xa0;":"")+u;r+="</div>";return r},_adjustInstDate:function(b,f,j){var l=b.drawYear+(j=="Y"?f:0),o=b.drawMonth+
+(j=="M"?f:0);f=Math.min(b.selectedDay,this._getDaysInMonth(l,o))+(j=="D"?f:0);l=this._restrictMinMax(b,this._daylightSavingAdjust(new Date(l,o,f)));b.selectedDay=l.getDate();b.drawMonth=b.selectedMonth=l.getMonth();b.drawYear=b.selectedYear=l.getFullYear();if(j=="M"||j=="Y")this._notifyChange(b)},_restrictMinMax:function(b,f){var j=this._getMinMaxDate(b,"min");b=this._getMinMaxDate(b,"max");f=j&&f<j?j:f;return f=b&&f>b?b:f},_notifyChange:function(b){var f=this._get(b,"onChangeMonthYear");if(f)f.apply(b.input?
+b.input[0]:null,[b.selectedYear,b.selectedMonth+1,b])},_getNumberOfMonths:function(b){b=this._get(b,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(b,f){return this._determineDate(b,this._get(b,f+"Date"),null)},_getDaysInMonth:function(b,f){return 32-this._daylightSavingAdjust(new Date(b,f,32)).getDate()},_getFirstDayOfMonth:function(b,f){return(new Date(b,f,1)).getDay()},_canAdjustMonth:function(b,f,j,l){var o=this._getNumberOfMonths(b);j=this._daylightSavingAdjust(new Date(j,
+l+(f<0?f:o[0]*o[1]),1));f<0&&j.setDate(this._getDaysInMonth(j.getFullYear(),j.getMonth()));return this._isInRange(b,j)},_isInRange:function(b,f){var j=this._getMinMaxDate(b,"min");b=this._getMinMaxDate(b,"max");return(!j||f.getTime()>=j.getTime())&&(!b||f.getTime()<=b.getTime())},_getFormatConfig:function(b){var f=this._get(b,"shortYearCutoff");f=typeof f!="string"?f:(new Date).getFullYear()%100+parseInt(f,10);return{shortYearCutoff:f,dayNamesShort:this._get(b,"dayNamesShort"),dayNames:this._get(b,
+"dayNames"),monthNamesShort:this._get(b,"monthNamesShort"),monthNames:this._get(b,"monthNames")}},_formatDate:function(b,f,j,l){if(!f){b.currentDay=b.selectedDay;b.currentMonth=b.selectedMonth;b.currentYear=b.selectedYear}f=f?typeof f=="object"?f:this._daylightSavingAdjust(new Date(l,j,f)):this._daylightSavingAdjust(new Date(b.currentYear,b.currentMonth,b.currentDay));return this.formatDate(this._get(b,"dateFormat"),f,this._getFormatConfig(b))}});a.fn.datepicker=function(b){if(!this.length)return this;
+if(!a.datepicker.initialized){a(document).mousedown(a.datepicker._checkExternalClick).find("body").append(a.datepicker.dpDiv);a.datepicker.initialized=true}var f=Array.prototype.slice.call(arguments,1);if(typeof b=="string"&&(b=="isDisabled"||b=="getDate"||b=="widget"))return a.datepicker["_"+b+"Datepicker"].apply(a.datepicker,[this[0]].concat(f));if(b=="option"&&arguments.length==2&&typeof arguments[1]=="string")return a.datepicker["_"+b+"Datepicker"].apply(a.datepicker,[this[0]].concat(f));return this.each(function(){typeof b==
+"string"?a.datepicker["_"+b+"Datepicker"].apply(a.datepicker,[this].concat(f)):a.datepicker._attachDatepicker(this,b)})};a.datepicker=new c;a.datepicker.initialized=false;a.datepicker.uuid=(new Date).getTime();a.datepicker.version="1.8.16";window["DP_jQuery_"+g]=a})(jQuery);
+(function(a,d){var c={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},e={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},h=a.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};a.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,
+position:{my:"center",at:"center",collision:"fit",using:function(g){var i=a(this).css(g).offset().top;i<0&&a(this).css("top",g.top-i)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var g=this,i=g.options,b=i.title||"&#160;",f=a.ui.dialog.getTitleId(g.element),j=(g.uiDialog=a("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+
+i.dialogClass).css({zIndex:i.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(n){if(i.closeOnEscape&&!n.isDefaultPrevented()&&n.keyCode&&n.keyCode===a.ui.keyCode.ESCAPE){g.close(n);n.preventDefault()}}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(n){g.moveToTop(false,n)});g.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(j);var l=(g.uiDialogTitlebar=a("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(j),
+o=a('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){o.addClass("ui-state-hover")},function(){o.removeClass("ui-state-hover")}).focus(function(){o.addClass("ui-state-focus")}).blur(function(){o.removeClass("ui-state-focus")}).click(function(n){g.close(n);return false}).appendTo(l);(g.uiDialogTitlebarCloseText=a("<span></span>")).addClass("ui-icon ui-icon-closethick").text(i.closeText).appendTo(o);a("<span></span>").addClass("ui-dialog-title").attr("id",
+f).html(b).prependTo(l);if(a.isFunction(i.beforeclose)&&!a.isFunction(i.beforeClose))i.beforeClose=i.beforeclose;l.find("*").add(l).disableSelection();i.draggable&&a.fn.draggable&&g._makeDraggable();i.resizable&&a.fn.resizable&&g._makeResizable();g._createButtons(i.buttons);g._isOpen=false;a.fn.bgiframe&&j.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var g=this;g.overlay&&g.overlay.destroy();g.uiDialog.hide();g.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");
+g.uiDialog.remove();g.originalTitle&&g.element.attr("title",g.originalTitle);return g},widget:function(){return this.uiDialog},close:function(g){var i=this,b,f;if(false!==i._trigger("beforeClose",g)){i.overlay&&i.overlay.destroy();i.uiDialog.unbind("keypress.ui-dialog");i._isOpen=false;if(i.options.hide)i.uiDialog.hide(i.options.hide,function(){i._trigger("close",g)});else{i.uiDialog.hide();i._trigger("close",g)}a.ui.dialog.overlay.resize();if(i.options.modal){b=0;a(".ui-dialog").each(function(){if(this!==
+i.uiDialog[0]){f=a(this).css("z-index");isNaN(f)||(b=Math.max(b,f))}});a.ui.dialog.maxZ=b}return i}},isOpen:function(){return this._isOpen},moveToTop:function(g,i){var b=this,f=b.options;if(f.modal&&!g||!f.stack&&!f.modal)return b._trigger("focus",i);if(f.zIndex>a.ui.dialog.maxZ)a.ui.dialog.maxZ=f.zIndex;if(b.overlay){a.ui.dialog.maxZ+=1;b.overlay.$el.css("z-index",a.ui.dialog.overlay.maxZ=a.ui.dialog.maxZ)}g={scrollTop:b.element.scrollTop(),scrollLeft:b.element.scrollLeft()};a.ui.dialog.maxZ+=1;
+b.uiDialog.css("z-index",a.ui.dialog.maxZ);b.element.attr(g);b._trigger("focus",i);return b},open:function(){if(!this._isOpen){var g=this,i=g.options,b=g.uiDialog;g.overlay=i.modal?new a.ui.dialog.overlay(g):null;g._size();g._position(i.position);b.show(i.show);g.moveToTop(true);i.modal&&b.bind("keypress.ui-dialog",function(f){if(f.keyCode===a.ui.keyCode.TAB){var j=a(":tabbable",this),l=j.filter(":first");j=j.filter(":last");if(f.target===j[0]&&!f.shiftKey){l.focus(1);return false}else if(f.target===
+l[0]&&f.shiftKey){j.focus(1);return false}}});a(g.element.find(":tabbable").get().concat(b.find(".ui-dialog-buttonpane :tabbable").get().concat(b.get()))).eq(0).focus();g._isOpen=true;g._trigger("open");return g}},_createButtons:function(g){var i=this,b=false,f=a("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),j=a("<div></div>").addClass("ui-dialog-buttonset").appendTo(f);i.uiDialog.find(".ui-dialog-buttonpane").remove();typeof g==="object"&&g!==null&&a.each(g,
+function(){return!(b=true)});if(b){a.each(g,function(l,o){o=a.isFunction(o)?{click:o,text:l}:o;var n=a('<button type="button"></button>').click(function(){o.click.apply(i.element[0],arguments)}).appendTo(j);a.each(o,function(k,m){if(k!=="click")k in h?n[k](m):n.attr(k,m)});a.fn.button&&n.button()});f.appendTo(i.uiDialog)}},_makeDraggable:function(){function g(l){return{position:l.position,offset:l.offset}}var i=this,b=i.options,f=a(document),j;i.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",
+handle:".ui-dialog-titlebar",containment:"document",start:function(l,o){j=b.height==="auto"?"auto":a(this).height();a(this).height(a(this).height()).addClass("ui-dialog-dragging");i._trigger("dragStart",l,g(o))},drag:function(l,o){i._trigger("drag",l,g(o))},stop:function(l,o){b.position=[o.position.left-f.scrollLeft(),o.position.top-f.scrollTop()];a(this).removeClass("ui-dialog-dragging").height(j);i._trigger("dragStop",l,g(o));a.ui.dialog.overlay.resize()}})},_makeResizable:function(g){function i(l){return{originalPosition:l.originalPosition,
+originalSize:l.originalSize,position:l.position,size:l.size}}g=g===d?this.options.resizable:g;var b=this,f=b.options,j=b.uiDialog.css("position");g=typeof g==="string"?g:"n,e,s,w,se,sw,ne,nw";b.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:b.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:b._minHeight(),handles:g,start:function(l,o){a(this).addClass("ui-dialog-resizing");b._trigger("resizeStart",l,i(o))},resize:function(l,o){b._trigger("resize",
+l,i(o))},stop:function(l,o){a(this).removeClass("ui-dialog-resizing");f.height=a(this).height();f.width=a(this).width();b._trigger("resizeStop",l,i(o));a.ui.dialog.overlay.resize()}}).css("position",j).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var g=this.options;return g.height==="auto"?g.minHeight:Math.min(g.minHeight,g.height)},_position:function(g){var i=[],b=[0,0],f;if(g){if(typeof g==="string"||typeof g==="object"&&"0"in g){i=g.split?g.split(" "):
+[g[0],g[1]];if(i.length===1)i[1]=i[0];a.each(["left","top"],function(j,l){if(+i[j]===i[j]){b[j]=i[j];i[j]=l}});g={my:i.join(" "),at:i.join(" "),offset:b.join(" ")}}g=a.extend({},a.ui.dialog.prototype.options.position,g)}else g=a.ui.dialog.prototype.options.position;(f=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(a.extend({of:window},g));f||this.uiDialog.hide()},_setOptions:function(g){var i=this,b={},f=false;a.each(g,function(j,l){i._setOption(j,l);
+if(j in c)f=true;if(j in e)b[j]=l});f&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",b)},_setOption:function(g,i){var b=this,f=b.uiDialog;switch(g){case "beforeclose":g="beforeClose";break;case "buttons":b._createButtons(i);break;case "closeText":b.uiDialogTitlebarCloseText.text(""+i);break;case "dialogClass":f.removeClass(b.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+i);break;case "disabled":i?f.addClass("ui-dialog-disabled"):
+f.removeClass("ui-dialog-disabled");break;case "draggable":var j=f.is(":data(draggable)");j&&!i&&f.draggable("destroy");!j&&i&&b._makeDraggable();break;case "position":b._position(i);break;case "resizable":(j=f.is(":data(resizable)"))&&!i&&f.resizable("destroy");j&&typeof i==="string"&&f.resizable("option","handles",i);!j&&i!==false&&b._makeResizable(i);break;case "title":a(".ui-dialog-title",b.uiDialogTitlebar).html(""+(i||"&#160;"));break}a.Widget.prototype._setOption.apply(b,arguments)},_size:function(){var g=
+this.options,i,b,f=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(g.minWidth>g.width)g.width=g.minWidth;i=this.uiDialog.css({height:"auto",width:g.width}).height();b=Math.max(0,g.minHeight-i);if(g.height==="auto")if(a.support.minHeight)this.element.css({minHeight:b,height:"auto"});else{this.uiDialog.show();g=this.element.css("height","auto").height();f||this.uiDialog.hide();this.element.height(Math.max(g,b))}else this.element.height(Math.max(g.height-
+i,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});a.extend(a.ui.dialog,{version:"1.8.16",uuid:0,maxZ:0,getTitleId:function(g){g=g.attr("id");if(!g){this.uuid+=1;g=this.uuid}return"ui-dialog-title-"+g},overlay:function(g){this.$el=a.ui.dialog.overlay.create(g)}});a.extend(a.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:a.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(g){return g+".dialog-overlay"}).join(" "),
+create:function(g){if(this.instances.length===0){setTimeout(function(){a.ui.dialog.overlay.instances.length&&a(document).bind(a.ui.dialog.overlay.events,function(b){if(a(b.target).zIndex()<a.ui.dialog.overlay.maxZ)return false})},1);a(document).bind("keydown.dialog-overlay",function(b){if(g.options.closeOnEscape&&!b.isDefaultPrevented()&&b.keyCode&&b.keyCode===a.ui.keyCode.ESCAPE){g.close(b);b.preventDefault()}});a(window).bind("resize.dialog-overlay",a.ui.dialog.overlay.resize)}var i=(this.oldInstances.pop()||
+a("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});a.fn.bgiframe&&i.bgiframe();this.instances.push(i);return i},destroy:function(g){var i=a.inArray(g,this.instances);i!=-1&&this.oldInstances.push(this.instances.splice(i,1)[0]);this.instances.length===0&&a([document,window]).unbind(".dialog-overlay");g.remove();var b=0;a.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var g,i;if(a.browser.msie&&
+a.browser.version<7){g=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);i=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return g<i?a(window).height()+"px":g+"px"}else return a(document).height()+"px"},width:function(){var g,i;if(a.browser.msie){g=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);i=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return g<i?a(window).width()+"px":g+"px"}else return a(document).width()+
+"px"},resize:function(){var g=a([]);a.each(a.ui.dialog.overlay.instances,function(){g=g.add(this)});g.css({width:0,height:0}).css({width:a.ui.dialog.overlay.width(),height:a.ui.dialog.overlay.height()})}});a.extend(a.ui.dialog.overlay.prototype,{destroy:function(){a.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
+(function(a){a.ui=a.ui||{};var d=/left|center|right/,c=/top|center|bottom/,e=a.fn.position,h=a.fn.offset;a.fn.position=function(g){if(!g||!g.of)return e.apply(this,arguments);g=a.extend({},g);var i=a(g.of),b=i[0],f=(g.collision||"flip").split(" "),j=g.offset?g.offset.split(" "):[0,0],l,o,n;if(b.nodeType===9){l=i.width();o=i.height();n={top:0,left:0}}else if(b.setTimeout){l=i.width();o=i.height();n={top:i.scrollTop(),left:i.scrollLeft()}}else if(b.preventDefault){g.at="left top";l=o=0;n={top:g.of.pageY,
+left:g.of.pageX}}else{l=i.outerWidth();o=i.outerHeight();n=i.offset()}a.each(["my","at"],function(){var k=(g[this]||"").split(" ");if(k.length===1)k=d.test(k[0])?k.concat(["center"]):c.test(k[0])?["center"].concat(k):["center","center"];k[0]=d.test(k[0])?k[0]:"center";k[1]=c.test(k[1])?k[1]:"center";g[this]=k});if(f.length===1)f[1]=f[0];j[0]=parseInt(j[0],10)||0;if(j.length===1)j[1]=j[0];j[1]=parseInt(j[1],10)||0;if(g.at[0]==="right")n.left+=l;else if(g.at[0]==="center")n.left+=l/2;if(g.at[1]==="bottom")n.top+=
+o;else if(g.at[1]==="center")n.top+=o/2;n.left+=j[0];n.top+=j[1];return this.each(function(){var k=a(this),m=k.outerWidth(),p=k.outerHeight(),q=parseInt(a.curCSS(this,"marginLeft",true))||0,s=parseInt(a.curCSS(this,"marginTop",true))||0,r=m+q+(parseInt(a.curCSS(this,"marginRight",true))||0),u=p+s+(parseInt(a.curCSS(this,"marginBottom",true))||0),v=a.extend({},n),w;if(g.my[0]==="right")v.left-=m;else if(g.my[0]==="center")v.left-=m/2;if(g.my[1]==="bottom")v.top-=p;else if(g.my[1]==="center")v.top-=
+p/2;v.left=Math.round(v.left);v.top=Math.round(v.top);w={left:v.left-q,top:v.top-s};a.each(["left","top"],function(x,y){a.ui.position[f[x]]&&a.ui.position[f[x]][y](v,{targetWidth:l,targetHeight:o,elemWidth:m,elemHeight:p,collisionPosition:w,collisionWidth:r,collisionHeight:u,offset:j,my:g.my,at:g.at})});a.fn.bgiframe&&k.bgiframe();k.offset(a.extend(v,{using:g.using}))})};a.ui.position={fit:{left:function(g,i){var b=a(window);b=i.collisionPosition.left+i.collisionWidth-b.width()-b.scrollLeft();g.left=
+b>0?g.left-b:Math.max(g.left-i.collisionPosition.left,g.left)},top:function(g,i){var b=a(window);b=i.collisionPosition.top+i.collisionHeight-b.height()-b.scrollTop();g.top=b>0?g.top-b:Math.max(g.top-i.collisionPosition.top,g.top)}},flip:{left:function(g,i){if(i.at[0]!=="center"){var b=a(window);b=i.collisionPosition.left+i.collisionWidth-b.width()-b.scrollLeft();var f=i.my[0]==="left"?-i.elemWidth:i.my[0]==="right"?i.elemWidth:0,j=i.at[0]==="left"?i.targetWidth:-i.targetWidth,l=-2*i.offset[0];g.left+=
+i.collisionPosition.left<0?f+j+l:b>0?f+j+l:0}},top:function(g,i){if(i.at[1]!=="center"){var b=a(window);b=i.collisionPosition.top+i.collisionHeight-b.height()-b.scrollTop();var f=i.my[1]==="top"?-i.elemHeight:i.my[1]==="bottom"?i.elemHeight:0,j=i.at[1]==="top"?i.targetHeight:-i.targetHeight,l=-2*i.offset[1];g.top+=i.collisionPosition.top<0?f+j+l:b>0?f+j+l:0}}}};if(!a.offset.setOffset){a.offset.setOffset=function(g,i){if(/static/.test(a.curCSS(g,"position")))g.style.position="relative";var b=a(g),
+f=b.offset(),j=parseInt(a.curCSS(g,"top",true),10)||0,l=parseInt(a.curCSS(g,"left",true),10)||0;f={top:i.top-f.top+j,left:i.left-f.left+l};"using"in i?i.using.call(g,f):b.css(f)};a.fn.offset=function(g){var i=this[0];if(!i||!i.ownerDocument)return null;if(g)return this.each(function(){a.offset.setOffset(this,g)});return h.call(this)}}})(jQuery);
+(function(a,d){a.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=a("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow");
+this.valueDiv.remove();a.Widget.prototype.destroy.apply(this,arguments)},value:function(c){if(c===d)return this._value();this._setOption("value",c);return this},_setOption:function(c,e){if(c==="value"){this.options.value=e;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var c=this.options.value;if(typeof c!=="number")c=0;return Math.min(this.options.max,Math.max(this.min,c))},_percentage:function(){return 100*
+this._value()/this.options.max},_refreshValue:function(){var c=this.value(),e=this._percentage();if(this.oldValue!==c){this.oldValue=c;this._trigger("change")}this.valueDiv.toggle(c>this.min).toggleClass("ui-corner-right",c===this.options.max).width(e.toFixed(0)+"%");this.element.attr("aria-valuenow",c)}});a.extend(a.ui.progressbar,{version:"1.8.16"})})(jQuery);
+(function(a){a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var d=this,c=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),h=c.values&&c.values.length||1,g=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+
+this.orientation+" ui-widget ui-widget-content ui-corner-all"+(c.disabled?" ui-slider-disabled ui-disabled":""));this.range=a([]);if(c.range){if(c.range===true){if(!c.values)c.values=[this._valueMin(),this._valueMin()];if(c.values.length&&c.values.length!==2)c.values=[c.values[0],c.values[0]]}this.range=a("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(c.range==="min"||c.range==="max"?" ui-slider-range-"+c.range:""))}for(var i=e.length;i<h;i+=1)g.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
+this.handles=e.add(a(g.join("")).appendTo(d.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(b){b.preventDefault()}).hover(function(){c.disabled||a(this).addClass("ui-state-hover")},function(){a(this).removeClass("ui-state-hover")}).focus(function(){if(c.disabled)a(this).blur();else{a(".ui-slider .ui-state-focus").removeClass("ui-state-focus");a(this).addClass("ui-state-focus")}}).blur(function(){a(this).removeClass("ui-state-focus")});this.handles.each(function(b){a(this).data("index.ui-slider-handle",
+b)});this.handles.keydown(function(b){var f=true,j=a(this).data("index.ui-slider-handle"),l,o,n;if(!d.options.disabled){switch(b.keyCode){case a.ui.keyCode.HOME:case a.ui.keyCode.END:case a.ui.keyCode.PAGE_UP:case a.ui.keyCode.PAGE_DOWN:case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:f=false;if(!d._keySliding){d._keySliding=true;a(this).addClass("ui-state-active");l=d._start(b,j);if(l===false)return}break}n=d.options.step;l=d.options.values&&d.options.values.length?
+(o=d.values(j)):(o=d.value());switch(b.keyCode){case a.ui.keyCode.HOME:o=d._valueMin();break;case a.ui.keyCode.END:o=d._valueMax();break;case a.ui.keyCode.PAGE_UP:o=d._trimAlignValue(l+(d._valueMax()-d._valueMin())/5);break;case a.ui.keyCode.PAGE_DOWN:o=d._trimAlignValue(l-(d._valueMax()-d._valueMin())/5);break;case a.ui.keyCode.UP:case a.ui.keyCode.RIGHT:if(l===d._valueMax())return;o=d._trimAlignValue(l+n);break;case a.ui.keyCode.DOWN:case a.ui.keyCode.LEFT:if(l===d._valueMin())return;o=d._trimAlignValue(l-
+n);break}d._slide(b,j,o);return f}}).keyup(function(b){var f=a(this).data("index.ui-slider-handle");if(d._keySliding){d._keySliding=false;d._stop(b,f);d._change(b,f);a(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();
+return this},_mouseCapture:function(d){var c=this.options,e,h,g,i,b;if(c.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();e=this._normValueFromMouse({x:d.pageX,y:d.pageY});h=this._valueMax()-this._valueMin()+1;i=this;this.handles.each(function(f){var j=Math.abs(e-i.values(f));if(h>j){h=j;g=a(this);b=f}});if(c.range===true&&this.values(1)===c.min){b+=1;g=a(this.handles[b])}if(this._start(d,b)===false)return false;
+this._mouseSliding=true;i._handleIndex=b;g.addClass("ui-state-active").focus();c=g.offset();this._clickOffset=!a(d.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:d.pageX-c.left-g.width()/2,top:d.pageY-c.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(d,b,e);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(d){var c=
+this._normValueFromMouse({x:d.pageX,y:d.pageY});this._slide(d,this._handleIndex,c);return false},_mouseStop:function(d){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(d,this._handleIndex);this._change(d,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(d){var c;if(this.orientation==="horizontal"){c=
+this.elementSize.width;d=d.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{c=this.elementSize.height;d=d.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}c=d/c;if(c>1)c=1;if(c<0)c=0;if(this.orientation==="vertical")c=1-c;d=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+c*d)},_start:function(d,c){var e={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){e.value=this.values(c);
+e.values=this.values()}return this._trigger("start",d,e)},_slide:function(d,c,e){var h;if(this.options.values&&this.options.values.length){h=this.values(c?0:1);if(this.options.values.length===2&&this.options.range===true&&(c===0&&e>h||c===1&&e<h))e=h;if(e!==this.values(c)){h=this.values();h[c]=e;d=this._trigger("slide",d,{handle:this.handles[c],value:e,values:h});this.values(c?0:1);d!==false&&this.values(c,e,true)}}else if(e!==this.value()){d=this._trigger("slide",d,{handle:this.handles[c],value:e});
+d!==false&&this.value(e)}},_stop:function(d,c){var e={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){e.value=this.values(c);e.values=this.values()}this._trigger("stop",d,e)},_change:function(d,c){if(!this._keySliding&&!this._mouseSliding){var e={handle:this.handles[c],value:this.value()};if(this.options.values&&this.options.values.length){e.value=this.values(c);e.values=this.values()}this._trigger("change",d,e)}},value:function(d){if(arguments.length){this.options.value=
+this._trimAlignValue(d);this._refreshValue();this._change(null,0)}else return this._value()},values:function(d,c){var e,h,g;if(arguments.length>1){this.options.values[d]=this._trimAlignValue(c);this._refreshValue();this._change(null,d)}else if(arguments.length)if(a.isArray(arguments[0])){e=this.options.values;h=arguments[0];for(g=0;g<e.length;g+=1){e[g]=this._trimAlignValue(h[g]);this._change(null,g)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(d):
+this.value();else return this._values()},_setOption:function(d,c){var e,h=0;if(a.isArray(this.options.values))h=this.options.values.length;a.Widget.prototype._setOption.apply(this,arguments);switch(d){case "disabled":if(c){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.propAttr("disabled",true);this.element.addClass("ui-disabled")}else{this.handles.propAttr("disabled",false);this.element.removeClass("ui-disabled")}break;case "orientation":this._detectOrientation();
+this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(e=0;e<h;e+=1)this._change(null,e);this._animateOff=false;break}},_value:function(){var d=this.options.value;return d=this._trimAlignValue(d)},_values:function(d){var c,e;if(arguments.length){c=this.options.values[d];
+return c=this._trimAlignValue(c)}else{c=this.options.values.slice();for(e=0;e<c.length;e+=1)c[e]=this._trimAlignValue(c[e]);return c}},_trimAlignValue:function(d){if(d<=this._valueMin())return this._valueMin();if(d>=this._valueMax())return this._valueMax();var c=this.options.step>0?this.options.step:1,e=(d-this._valueMin())%c;d=d-e;if(Math.abs(e)*2>=c)d+=e>0?c:-c;return parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var d=
+this.options.range,c=this.options,e=this,h=!this._animateOff?c.animate:false,g,i={},b,f,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(o){g=(e.values(o)-e._valueMin())/(e._valueMax()-e._valueMin())*100;i[e.orientation==="horizontal"?"left":"bottom"]=g+"%";a(this).stop(1,1)[h?"animate":"css"](i,c.animate);if(e.options.range===true)if(e.orientation==="horizontal"){if(o===0)e.range.stop(1,1)[h?"animate":"css"]({left:g+"%"},c.animate);if(o===1)e.range[h?"animate":"css"]({width:g-
+b+"%"},{queue:false,duration:c.animate})}else{if(o===0)e.range.stop(1,1)[h?"animate":"css"]({bottom:g+"%"},c.animate);if(o===1)e.range[h?"animate":"css"]({height:g-b+"%"},{queue:false,duration:c.animate})}b=g});else{f=this.value();j=this._valueMin();l=this._valueMax();g=l!==j?(f-j)/(l-j)*100:0;i[e.orientation==="horizontal"?"left":"bottom"]=g+"%";this.handle.stop(1,1)[h?"animate":"css"](i,c.animate);if(d==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[h?"animate":"css"]({width:g+"%"},
+c.animate);if(d==="max"&&this.orientation==="horizontal")this.range[h?"animate":"css"]({width:100-g+"%"},{queue:false,duration:c.animate});if(d==="min"&&this.orientation==="vertical")this.range.stop(1,1)[h?"animate":"css"]({height:g+"%"},c.animate);if(d==="max"&&this.orientation==="vertical")this.range[h?"animate":"css"]({height:100-g+"%"},{queue:false,duration:c.animate})}}});a.extend(a.ui.slider,{version:"1.8.16"})})(jQuery);
+(function(a,d){function c(){return++h}function e(){return++g}var h=0,g=0;a.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading&#8230;</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(true)},_setOption:function(i,b){if(i=="selected")this.options.collapsible&&
+b==this.options.selected||this.select(b);else{this.options[i]=b;this._tabify()}},_tabId:function(i){return i.title&&i.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+c()},_sanitizeSelector:function(i){return i.replace(/:/g,"\\:")},_cookie:function(){var i=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+e());return a.cookie.apply(null,[i].concat(a.makeArray(arguments)))},_ui:function(i,b){return{tab:i,panel:b,index:this.anchors.index(i)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var i=
+a(this);i.html(i.data("label.tabs")).removeData("label.tabs")})},_tabify:function(i){function b(r,u){r.css("display","");!a.support.opacity&&u.opacity&&r[0].style.removeAttribute("filter")}var f=this,j=this.options,l=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=a(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return a("a",this)[0]});this.panels=a([]);this.anchors.each(function(r,u){var v=a(u).attr("href"),w=v.split("#")[0],x;if(w&&(w===location.toString().split("#")[0]||
+(x=a("base")[0])&&w===x.href)){v=u.hash;u.href=v}if(l.test(v))f.panels=f.panels.add(f.element.find(f._sanitizeSelector(v)));else if(v&&v!=="#"){a.data(u,"href.tabs",v);a.data(u,"load.tabs",v.replace(/#.*$/,""));v=f._tabId(u);u.href="#"+v;u=f.element.find("#"+v);if(!u.length){u=a(j.panelTemplate).attr("id",v).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(f.panels[r-1]||f.list);u.data("destroy.tabs",true)}f.panels=f.panels.add(u)}else j.disabled.push(r)});if(i){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");
+this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(j.selected===d){location.hash&&this.anchors.each(function(r,u){if(u.hash==location.hash){j.selected=r;return false}});if(typeof j.selected!=="number"&&j.cookie)j.selected=parseInt(f._cookie(),10);if(typeof j.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)j.selected=
+this.lis.index(this.lis.filter(".ui-tabs-selected"));j.selected=j.selected||(this.lis.length?0:-1)}else if(j.selected===null)j.selected=-1;j.selected=j.selected>=0&&this.anchors[j.selected]||j.selected<0?j.selected:0;j.disabled=a.unique(j.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(r){return f.lis.index(r)}))).sort();a.inArray(j.selected,j.disabled)!=-1&&j.disabled.splice(a.inArray(j.selected,j.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active");
+if(j.selected>=0&&this.anchors.length){f.element.find(f._sanitizeSelector(f.anchors[j.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(j.selected).addClass("ui-tabs-selected ui-state-active");f.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[j.selected],f.element.find(f._sanitizeSelector(f.anchors[j.selected].hash))[0]))});this.load(j.selected)}a(window).bind("unload",function(){f.lis.add(f.anchors).unbind(".tabs");f.lis=f.anchors=f.panels=null})}else j.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));
+this.element[j.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");j.cookie&&this._cookie(j.selected,j.cookie);i=0;for(var o;o=this.lis[i];i++)a(o)[a.inArray(i,j.disabled)!=-1&&!a(o).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");j.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(j.event!=="mouseover"){var n=function(r,u){u.is(":not(.ui-state-disabled)")&&u.addClass("ui-state-"+r)},k=function(r,u){u.removeClass("ui-state-"+
+r)};this.lis.bind("mouseover.tabs",function(){n("hover",a(this))});this.lis.bind("mouseout.tabs",function(){k("hover",a(this))});this.anchors.bind("focus.tabs",function(){n("focus",a(this).closest("li"))});this.anchors.bind("blur.tabs",function(){k("focus",a(this).closest("li"))})}var m,p;if(j.fx)if(a.isArray(j.fx)){m=j.fx[0];p=j.fx[1]}else m=p=j.fx;var q=p?function(r,u){a(r).closest("li").addClass("ui-tabs-selected ui-state-active");u.hide().removeClass("ui-tabs-hide").animate(p,p.duration||"normal",
+function(){b(u,p);f._trigger("show",null,f._ui(r,u[0]))})}:function(r,u){a(r).closest("li").addClass("ui-tabs-selected ui-state-active");u.removeClass("ui-tabs-hide");f._trigger("show",null,f._ui(r,u[0]))},s=m?function(r,u){u.animate(m,m.duration||"normal",function(){f.lis.removeClass("ui-tabs-selected ui-state-active");u.addClass("ui-tabs-hide");b(u,m);f.element.dequeue("tabs")})}:function(r,u){f.lis.removeClass("ui-tabs-selected ui-state-active");u.addClass("ui-tabs-hide");f.element.dequeue("tabs")};
+this.anchors.bind(j.event+".tabs",function(){var r=this,u=a(r).closest("li"),v=f.panels.filter(":not(.ui-tabs-hide)"),w=f.element.find(f._sanitizeSelector(r.hash));if(u.hasClass("ui-tabs-selected")&&!j.collapsible||u.hasClass("ui-state-disabled")||u.hasClass("ui-state-processing")||f.panels.filter(":animated").length||f._trigger("select",null,f._ui(this,w[0]))===false){this.blur();return false}j.selected=f.anchors.index(this);f.abort();if(j.collapsible)if(u.hasClass("ui-tabs-selected")){j.selected=
+-1;j.cookie&&f._cookie(j.selected,j.cookie);f.element.queue("tabs",function(){s(r,v)}).dequeue("tabs");this.blur();return false}else if(!v.length){j.cookie&&f._cookie(j.selected,j.cookie);f.element.queue("tabs",function(){q(r,w)});f.load(f.anchors.index(this));this.blur();return false}j.cookie&&f._cookie(j.selected,j.cookie);if(w.length){v.length&&f.element.queue("tabs",function(){s(r,v)});f.element.queue("tabs",function(){q(r,w)});f.load(f.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";
+a.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(i){if(typeof i=="string")i=this.anchors.index(this.anchors.filter("[href$="+i+"]"));return i},destroy:function(){var i=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var b=
+a.data(this,"href.tabs");if(b)this.href=b;var f=a(this).unbind(".tabs");a.each(["href","load","cache"],function(j,l){f.removeData(l+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});i.cookie&&this._cookie(null,i.cookie);return this},add:function(i,
+b,f){if(f===d)f=this.anchors.length;var j=this,l=this.options;b=a(l.tabTemplate.replace(/#\{href\}/g,i).replace(/#\{label\}/g,b));i=!i.indexOf("#")?i.replace("#",""):this._tabId(a("a",b)[0]);b.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var o=j.element.find("#"+i);o.length||(o=a(l.panelTemplate).attr("id",i).data("destroy.tabs",true));o.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(f>=this.lis.length){b.appendTo(this.list);o.appendTo(this.list[0].parentNode)}else{b.insertBefore(this.lis[f]);
+o.insertBefore(this.panels[f])}l.disabled=a.map(l.disabled,function(n){return n>=f?++n:n});this._tabify();if(this.anchors.length==1){l.selected=0;b.addClass("ui-tabs-selected ui-state-active");o.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){j._trigger("show",null,j._ui(j.anchors[0],j.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[f],this.panels[f]));return this},remove:function(i){i=this._getIndex(i);var b=this.options,f=this.lis.eq(i).remove(),j=this.panels.eq(i).remove();
+if(f.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(i+(i+1<this.anchors.length?1:-1));b.disabled=a.map(a.grep(b.disabled,function(l){return l!=i}),function(l){return l>=i?--l:l});this._tabify();this._trigger("remove",null,this._ui(f.find("a")[0],j[0]));return this},enable:function(i){i=this._getIndex(i);var b=this.options;if(a.inArray(i,b.disabled)!=-1){this.lis.eq(i).removeClass("ui-state-disabled");b.disabled=a.grep(b.disabled,function(f){return f!=i});this._trigger("enable",null,
+this._ui(this.anchors[i],this.panels[i]));return this}},disable:function(i){i=this._getIndex(i);var b=this.options;if(i!=b.selected){this.lis.eq(i).addClass("ui-state-disabled");b.disabled.push(i);b.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[i],this.panels[i]))}return this},select:function(i){i=this._getIndex(i);if(i==-1)if(this.options.collapsible&&this.options.selected!=-1)i=this.options.selected;else return this;this.anchors.eq(i).trigger(this.options.event+".tabs");return this},
+load:function(i){i=this._getIndex(i);var b=this,f=this.options,j=this.anchors.eq(i)[0],l=a.data(j,"load.tabs");this.abort();if(!l||this.element.queue("tabs").length!==0&&a.data(j,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(i).addClass("ui-state-processing");if(f.spinner){var o=a("span",j);o.data("label.tabs",o.html()).html(f.spinner)}this.xhr=a.ajax(a.extend({},f.ajaxOptions,{url:l,success:function(n,k){b.element.find(b._sanitizeSelector(j.hash)).html(n);b._cleanup();f.cache&&a.data(j,
+"cache.tabs",true);b._trigger("load",null,b._ui(b.anchors[i],b.panels[i]));try{f.ajaxOptions.success(n,k)}catch(m){}},error:function(n,k){b._cleanup();b._trigger("load",null,b._ui(b.anchors[i],b.panels[i]));try{f.ajaxOptions.error(n,k,i,j)}catch(m){}}}));b.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},
+url:function(i,b){this.anchors.eq(i).removeData("cache.tabs").data("load.tabs",b);return this},length:function(){return this.anchors.length}});a.extend(a.ui.tabs,{version:"1.8.16"});a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(i,b){var f=this,j=this.options,l=f._rotate||(f._rotate=function(o){clearTimeout(f.rotation);f.rotation=setTimeout(function(){var n=j.selected;f.select(++n<f.anchors.length?n:0)},i);o&&o.stopPropagation()});b=f._unrotate||(f._unrotate=!b?function(o){o.clientX&&
+f.rotate(null)}:function(){t=j.selected;l()});if(i){this.element.bind("tabsshow",l);this.anchors.bind(j.event+".tabs",b);l()}else{clearTimeout(f.rotation);this.element.unbind("tabsshow",l);this.anchors.unbind(j.event+".tabs",b);delete this._rotate;delete this._unrotate}return this}})})(jQuery);
diff --git a/frontend/imbreak/js/jquery.cookie.js b/frontend/imbreak/js/jquery.cookie.js
new file mode 100755
index 0000000..6036754
--- /dev/null
+++ b/frontend/imbreak/js/jquery.cookie.js
@@ -0,0 +1,96 @@
+/**
+ * Cookie plugin
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+
+/**
+ * Create a cookie with the given name and value and other optional parameters.
+ *
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Set the value of a cookie.
+ * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
+ * @desc Create a cookie with all available options.
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Create a session cookie.
+ * @example $.cookie('the_cookie', null);
+ * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
+ * used when the cookie was set.
+ *
+ * @param String name The name of the cookie.
+ * @param String value The value of the cookie.
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
+ * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
+ * If set to null or omitted, the cookie will be a session cookie and will not be retained
+ * when the the browser exits.
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
+ * require a secure protocol (like HTTPS).
+ * @type undefined
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+
+/**
+ * Get the value of a cookie with the given name.
+ *
+ * @example $.cookie('the_cookie');
+ * @desc Get the value of a cookie.
+ *
+ * @param String name The name of the cookie.
+ * @return The value of the cookie.
+ * @type String
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+jQuery.cookie = function(name, value, options) {
+ if (typeof value != 'undefined') { // name and value given, set cookie
+ options = options || {};
+ if (value === null) {
+ value = '';
+ options.expires = -1;
+ }
+ var expires = '';
+ if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
+ var date;
+ if (typeof options.expires == 'number') {
+ date = new Date();
+ date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
+ } else {
+ date = options.expires;
+ }
+ expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
+ }
+ // CAUTION: Needed to parenthesize options.path and options.domain
+ // in the following expressions, otherwise they evaluate to undefined
+ // in the packed version for some reason...
+ var path = options.path ? '; path=' + (options.path) : '';
+ var domain = options.domain ? '; domain=' + (options.domain) : '';
+ var secure = options.secure ? '; secure' : '';
+ document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
+ } else { // only name given, get cookie
+ var cookieValue = null;
+ if (document.cookie && document.cookie != '') {
+ var cookies = document.cookie.split(';');
+ for (var i = 0; i < cookies.length; i++) {
+ var cookie = jQuery.trim(cookies[i]);
+ // Does this cookie string begin with the name we want?
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+ break;
+ }
+ }
+ }
+ return cookieValue;
+ }
+}; \ No newline at end of file
diff --git a/frontend/imbreak/js/jquery.min.js b/frontend/imbreak/js/jquery.min.js
new file mode 100755
index 0000000..198b3ff
--- /dev/null
+++ b/frontend/imbreak/js/jquery.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.7.1 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
+f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
+{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file
diff --git a/frontend/imbreak/newindex.html b/frontend/imbreak/newindex.html
new file mode 100755
index 0000000..64e0be2
--- /dev/null
+++ b/frontend/imbreak/newindex.html
@@ -0,0 +1,74 @@
+<html>
+<head>
+ <link href='jquery-ui-1.8.16.custom.css' rel='stylesheet' type='text/css' />
+ <link href='cssreset.css' rel='stylesheet' type='text/css'/>
+</head>
+<body>
+<!--<form id="theform">-->
+<br>
+BREAK TYPE&nbsp;<select id="breaktype">
+ <option selected="selected" value='CLASSIC'>CLASSIC</option>
+ <option value="REDUX">REDUX</option>
+ <option value="BLURRY_BREAK">BLURRY BREAK</option>
+ <option value="BLURRY_BREAK_2">BLURRY BREAK 2</option>
+ <option value="RGB_WASH">RGB WASH</option>
+ <option value="RGB_WASH_2">RGB WASH 2</option>
+ <option value="NOISY_BREAK">NOISY BREAK</option>
+ <option value="NOISY_BREAK_2">NOISY BREAK 2</option>
+ <option value="BROKEN_VIGNETTE">BROKEN VIGNETTE</option>
+ <option value="FAX_MACHINE">FAX MACHINE</option>
+ <option value="STRIPES">STRIPES</option>
+
+ <option value="PHOTOCOPY">PHOTOCOPY</option>
+</select>
+
+
+<br>
+ <div id='breakmodes'>BREAK MODES:
+ <input type='radio' name='modeswitch' id='gradual' value='gradual' checked='checked'></input>gradual
+ <input type='radio' name='modeswitch' id='subtle' value='subtle'></input>subtle
+ <input type='radio' name='modeswitch' id='extreme' value='extreme'></input>extreme
+ </div>
+ <br>
+BREAK ANGLE&nbsp;<input id='breakangle' type='text' value='0'></input>
+<div id="breakangleslider" class="slider"></div><br>
+<div id="expanded_check"></div><!--add click event in javascript-->
+IMAGE URL&nbsp;<input type="text" id="url"></input><br>
+<button id="breakbutton">BREAK IT!</button><br>
+USERNAME&nbsp;<input type="text" id="username"></input>
+
+<!--</form>-->
+<div id='result'>
+ <span id="output-cmd" class='results'>
+</span>
+ <span id="output-img" class='results'></span>
+ <input id="output-url" class='results'></input>
+ <div id="output-info" class='results'></div>
+</div>
+<div id="error" style="background-color:red;height:40px;width:400px;"></div>
+<span class='copyright' style="position:fixed; bottom:10px; left:10px;">COPYRIGHT 2011 PEPPER DREAMTEAMER</span>
+<script type="text/javascript" src="jquery.min.js"></script>
+<script type="text/javascript" src="jquery-ui.min.js"></script>
+<script type="text/javascript" src="main.js"></script>
+<script type="text/javascript">
+$('input').click(function(){$('#copyright').html("")});
+$(function(){
+$( "#breakangleslider" ).slider({
+ value:0,
+ min: -180,
+ max: 180,
+ step: 1,
+ slide: function( event, ui ) {
+ $( "#breakangle" ).val(ui.value);
+ }
+ });
+ $( "#breakangle" ).val($( "#breakangleslider" ).slider( "value" ) );
+});
+$('#copyright').click(function(){$('#copyright').html("")});
+</script>
+
+</body>
+
+
+
+</html>
diff --git a/frontend/imbreak/semitrans1.png b/frontend/imbreak/semitrans1.png
new file mode 100755
index 0000000..d6c9525
--- /dev/null
+++ b/frontend/imbreak/semitrans1.png
Binary files differ
diff --git a/frontend/imbreak/thegif/1.gif b/frontend/imbreak/thegif/1.gif
new file mode 100755
index 0000000..f4bd658
--- /dev/null
+++ b/frontend/imbreak/thegif/1.gif
Binary files differ
diff --git a/frontend/imbreak/thegif/2.gif b/frontend/imbreak/thegif/2.gif
new file mode 100755
index 0000000..bba2284
--- /dev/null
+++ b/frontend/imbreak/thegif/2.gif
Binary files differ
diff --git a/frontend/imbreak/thegif/2.jpg b/frontend/imbreak/thegif/2.jpg
new file mode 100755
index 0000000..e390e59
--- /dev/null
+++ b/frontend/imbreak/thegif/2.jpg
Binary files differ
diff --git a/frontend/imbreak/thegif/3.gif b/frontend/imbreak/thegif/3.gif
new file mode 100755
index 0000000..7ca1e90
--- /dev/null
+++ b/frontend/imbreak/thegif/3.gif
Binary files differ
diff --git a/frontend/imbreak/thegif/4.gif b/frontend/imbreak/thegif/4.gif
new file mode 100755
index 0000000..d5e6f2f
--- /dev/null
+++ b/frontend/imbreak/thegif/4.gif
Binary files differ
diff --git a/frontend/imbreak/thegif/5.gif b/frontend/imbreak/thegif/5.gif
new file mode 100755
index 0000000..08c8d42
--- /dev/null
+++ b/frontend/imbreak/thegif/5.gif
Binary files differ
diff --git a/frontend/imbreak/thegif/6.gif b/frontend/imbreak/thegif/6.gif
new file mode 100755
index 0000000..0768847
--- /dev/null
+++ b/frontend/imbreak/thegif/6.gif
Binary files differ
diff --git a/frontend/imbreak/thegif/6.jpg b/frontend/imbreak/thegif/6.jpg
new file mode 100755
index 0000000..423cf71
--- /dev/null
+++ b/frontend/imbreak/thegif/6.jpg
Binary files differ
diff --git a/frontend/imbreak/thegif/6.sun b/frontend/imbreak/thegif/6.sun
new file mode 100755
index 0000000..7846a53
--- /dev/null
+++ b/frontend/imbreak/thegif/6.sun
Binary files differ
diff --git a/frontend/imbreak/thegif/three.gif b/frontend/imbreak/thegif/three.gif
new file mode 100755
index 0000000..99021d5
--- /dev/null
+++ b/frontend/imbreak/thegif/three.gif
Binary files differ
diff --git a/frontend/imdither/.gitignore b/frontend/imdither/.gitignore
new file mode 100755
index 0000000..85254be
--- /dev/null
+++ b/frontend/imdither/.gitignore
@@ -0,0 +1,2 @@
+dithers/.*
+dithers/*
diff --git a/frontend/imdither/18.bmp b/frontend/imdither/18.bmp
new file mode 100755
index 0000000..058594d
--- /dev/null
+++ b/frontend/imdither/18.bmp
Binary files differ
diff --git a/frontend/imdither/bottle.py b/frontend/imdither/bottle.py
new file mode 100755
index 0000000..40a858d
--- /dev/null
+++ b/frontend/imdither/bottle.py
@@ -0,0 +1,3605 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+Bottle is a fast and simple micro-framework for small web applications. It
+offers request dispatching (Routes) with url parameter support, templates,
+a built-in HTTP Server and adapters for many third party WSGI/HTTP-server and
+template engines - all in a single file and with no dependencies other than the
+Python Standard Library.
+
+Homepage and documentation: http://bottlepy.org/
+
+Copyright (c) 2012, Marcel Hellkamp.
+License: MIT (see LICENSE for details)
+"""
+
+from __future__ import with_statement
+
+__author__ = 'Marcel Hellkamp'
+__version__ = '0.12-dev'
+__license__ = 'MIT'
+
+# The gevent server adapter needs to patch some modules before they are imported
+# This is why we parse the commandline parameters here but handle them later
+if __name__ == '__main__':
+ from optparse import OptionParser
+ _cmd_parser = OptionParser(usage="usage: %prog [options] package.module:app")
+ _opt = _cmd_parser.add_option
+ _opt("--version", action="store_true", help="show version number.")
+ _opt("-b", "--bind", metavar="ADDRESS", help="bind socket to ADDRESS.")
+ _opt("-s", "--server", default='wsgiref', help="use SERVER as backend.")
+ _opt("-p", "--plugin", action="append", help="install additional plugin/s.")
+ _opt("--debug", action="store_true", help="start server in debug mode.")
+ _opt("--reload", action="store_true", help="auto-reload on file changes.")
+ _cmd_options, _cmd_args = _cmd_parser.parse_args()
+ if _cmd_options.server and _cmd_options.server.startswith('gevent'):
+ import gevent.monkey; gevent.monkey.patch_all()
+
+import base64, cgi, email.utils, functools, hmac, imp, itertools, mimetypes,\
+ os, re, subprocess, sys, tempfile, threading, time, warnings
+
+from datetime import date as datedate, datetime, timedelta
+from tempfile import TemporaryFile
+from traceback import format_exc, print_exc
+from inspect import getargspec
+
+try: from simplejson import dumps as json_dumps, loads as json_lds
+except ImportError: # pragma: no cover
+ try: from json import dumps as json_dumps, loads as json_lds
+ except ImportError:
+ try: from django.utils.simplejson import dumps as json_dumps, loads as json_lds
+ except ImportError:
+ def json_dumps(data):
+ raise ImportError("JSON support requires Python 2.6 or simplejson.")
+ json_lds = json_dumps
+
+
+
+# We now try to fix 2.5/2.6/3.1/3.2 incompatibilities.
+# It ain't pretty but it works... Sorry for the mess.
+
+py = sys.version_info
+py3k = py >= (3, 0, 0)
+py25 = py < (2, 6, 0)
+py31 = (3, 1, 0) <= py < (3, 2, 0)
+
+# Workaround for the missing "as" keyword in py3k.
+def _e(): return sys.exc_info()[1]
+
+# Workaround for the "print is a keyword/function" Python 2/3 dilemma
+# and a fallback for mod_wsgi (resticts stdout/err attribute access)
+try:
+ _stdout, _stderr = sys.stdout.write, sys.stderr.write
+except IOError:
+ _stdout = lambda x: sys.stdout.write(x)
+ _stderr = lambda x: sys.stderr.write(x)
+
+# Lots of stdlib and builtin differences.
+if py3k:
+ import http.client as httplib
+ import _thread as thread
+ from urllib.parse import urljoin, SplitResult as UrlSplitResult
+ from urllib.parse import urlencode, quote as urlquote, unquote as urlunquote
+ urlunquote = functools.partial(urlunquote, encoding='latin1')
+ from http.cookies import SimpleCookie
+ from collections import MutableMapping as DictMixin
+ import pickle
+ from io import BytesIO
+ from configparser import ConfigParser
+ basestring = str
+ unicode = str
+ json_loads = lambda s: json_lds(touni(s))
+ callable = lambda x: hasattr(x, '__call__')
+ imap = map
+ def _raise(*a): raise a[0](a[1]).with_traceback(a[2])
+else: # 2.x
+ import httplib
+ import thread
+ from urlparse import urljoin, SplitResult as UrlSplitResult
+ from urllib import urlencode, quote as urlquote, unquote as urlunquote
+ from Cookie import SimpleCookie
+ from itertools import imap
+ import cPickle as pickle
+ from StringIO import StringIO as BytesIO
+ from ConfigParser import SafeConfigParser as ConfigParser
+ if py25:
+ msg = "Python 2.5 support may be dropped in future versions of Bottle."
+ warnings.warn(msg, DeprecationWarning)
+ from UserDict import DictMixin
+ def next(it): return it.next()
+ bytes = str
+ else: # 2.6, 2.7
+ from collections import MutableMapping as DictMixin
+ json_loads = json_lds
+ eval(compile('def _raise(*a): raise a[0], a[1], a[2]', '<py3fix>', 'exec'))
+
+# Some helpers for string/byte handling
+def tob(s, enc='utf8'):
+ return s.encode(enc) if isinstance(s, unicode) else bytes(s)
+def touni(s, enc='utf8', err='strict'):
+ return s.decode(enc, err) if isinstance(s, bytes) else unicode(s)
+tonat = touni if py3k else tob
+
+# 3.2 fixes cgi.FieldStorage to accept bytes (which makes a lot of sense).
+# 3.1 needs a workaround.
+if py31:
+ from io import TextIOWrapper
+ class NCTextIOWrapper(TextIOWrapper):
+ def close(self): pass # Keep wrapped buffer open.
+
+
+# A bug in functools causes it to break if the wrapper is an instance method
+def update_wrapper(wrapper, wrapped, *a, **ka):
+ try: functools.update_wrapper(wrapper, wrapped, *a, **ka)
+ except AttributeError: pass
+
+
+
+# These helpers are used at module level and need to be defined first.
+# And yes, I know PEP-8, but sometimes a lower-case classname makes more sense.
+
+def depr(message, hard=False):
+ warnings.warn(message, DeprecationWarning, stacklevel=3)
+
+def makelist(data): # This is just to handy
+ if isinstance(data, (tuple, list, set, dict)): return list(data)
+ elif data: return [data]
+ else: return []
+
+
+class DictProperty(object):
+ ''' Property that maps to a key in a local dict-like attribute. '''
+ def __init__(self, attr, key=None, read_only=False):
+ self.attr, self.key, self.read_only = attr, key, read_only
+
+ def __call__(self, func):
+ functools.update_wrapper(self, func, updated=[])
+ self.getter, self.key = func, self.key or func.__name__
+ return self
+
+ def __get__(self, obj, cls):
+ if obj is None: return self
+ key, storage = self.key, getattr(obj, self.attr)
+ if key not in storage: storage[key] = self.getter(obj)
+ return storage[key]
+
+ def __set__(self, obj, value):
+ if self.read_only: raise AttributeError("Read-Only property.")
+ getattr(obj, self.attr)[self.key] = value
+
+ def __delete__(self, obj):
+ if self.read_only: raise AttributeError("Read-Only property.")
+ del getattr(obj, self.attr)[self.key]
+
+
+class cached_property(object):
+ ''' A property that is only computed once per instance and then replaces
+ itself with an ordinary attribute. Deleting the attribute resets the
+ property. '''
+
+ def __init__(self, func):
+ self.__doc__ = getattr(func, '__doc__')
+ self.func = func
+
+ def __get__(self, obj, cls):
+ if obj is None: return self
+ value = obj.__dict__[self.func.__name__] = self.func(obj)
+ return value
+
+
+class lazy_attribute(object):
+ ''' A property that caches itself to the class object. '''
+ def __init__(self, func):
+ functools.update_wrapper(self, func, updated=[])
+ self.getter = func
+
+ def __get__(self, obj, cls):
+ value = self.getter(cls)
+ setattr(cls, self.__name__, value)
+ return value
+
+
+
+
+
+
+###############################################################################
+# Exceptions and Events ########################################################
+###############################################################################
+
+
+class BottleException(Exception):
+ """ A base class for exceptions used by bottle. """
+ pass
+
+
+
+
+
+
+###############################################################################
+# Routing ######################################################################
+###############################################################################
+
+
+class RouteError(BottleException):
+ """ This is a base class for all routing related exceptions """
+
+
+class RouteReset(BottleException):
+ """ If raised by a plugin or request handler, the route is reset and all
+ plugins are re-applied. """
+
+class RouterUnknownModeError(RouteError): pass
+
+
+class RouteSyntaxError(RouteError):
+ """ The route parser found something not supported by this router. """
+
+
+class RouteBuildError(RouteError):
+ """ The route could not be built. """
+
+
+def _re_flatten(p):
+ ''' Turn all capturing groups in a regular expression pattern into
+ non-capturing groups. '''
+ if '(' not in p: return p
+ return re.sub(r'(\\*)(\(\?P<[^>]+>|\((?!\?))',
+ lambda m: m.group(0) if len(m.group(1)) % 2 else m.group(1) + '(?:', p)
+
+
+class Router(object):
+ ''' A Router is an ordered collection of route->target pairs. It is used to
+ efficiently match WSGI requests against a number of routes and return
+ the first target that satisfies the request. The target may be anything,
+ usually a string, ID or callable object. A route consists of a path-rule
+ and a HTTP method.
+
+ The path-rule is either a static path (e.g. `/contact`) or a dynamic
+ path that contains wildcards (e.g. `/wiki/<page>`). The wildcard syntax
+ and details on the matching order are described in docs:`routing`.
+ '''
+
+ default_pattern = '[^/]+'
+ default_filter = 're'
+
+ #: The current CPython regexp implementation does not allow more
+ #: than 99 matching groups per regular expression.
+ _MAX_GROUPS_PER_PATTERN = 99
+
+ def __init__(self, strict=False):
+ self.rules = [] # All rules in order
+ self._groups = {} # index of regexes to find them in dyna_routes
+ self.builder = {} # Data structure for the url builder
+ self.static = {} # Search structure for static routes
+ self.dyna_routes = {}
+ self.dyna_regexes = {} # Search structure for dynamic routes
+ #: If true, static routes are no longer checked first.
+ self.strict_order = strict
+ self.filters = {
+ 're': lambda conf:
+ (_re_flatten(conf or self.default_pattern), None, None),
+ 'int': lambda conf: (r'-?\d+', int, lambda x: str(int(x))),
+ 'float': lambda conf: (r'-?[\d.]+', float, lambda x: str(float(x))),
+ 'path': lambda conf: (r'.+?', None, None)}
+
+ def add_filter(self, name, func):
+ ''' Add a filter. The provided function is called with the configuration
+ string as parameter and must return a (regexp, to_python, to_url) tuple.
+ The first element is a string, the last two are callables or None. '''
+ self.filters[name] = func
+
+ rule_syntax = re.compile('(\\\\*)'\
+ '(?:(?::([a-zA-Z_][a-zA-Z_0-9]*)?()(?:#(.*?)#)?)'\
+ '|(?:<([a-zA-Z_][a-zA-Z_0-9]*)?(?::([a-zA-Z_]*)'\
+ '(?::((?:\\\\.|[^\\\\>]+)+)?)?)?>))')
+
+ def _itertokens(self, rule):
+ offset, prefix = 0, ''
+ for match in self.rule_syntax.finditer(rule):
+ prefix += rule[offset:match.start()]
+ g = match.groups()
+ if len(g[0])%2: # Escaped wildcard
+ prefix += match.group(0)[len(g[0]):]
+ offset = match.end()
+ continue
+ if prefix:
+ yield prefix, None, None
+ name, filtr, conf = g[4:7] if g[2] is None else g[1:4]
+ yield name, filtr or 'default', conf or None
+ offset, prefix = match.end(), ''
+ if offset <= len(rule) or prefix:
+ yield prefix+rule[offset:], None, None
+
+ def add(self, rule, method, target, name=None):
+ ''' Add a new rule or replace the target for an existing rule. '''
+ anons = 0 # Number of anonymous wildcards found
+ keys = [] # Names of keys
+ pattern = '' # Regular expression pattern with named groups
+ filters = [] # Lists of wildcard input filters
+ builder = [] # Data structure for the URL builder
+ is_static = True
+
+ for key, mode, conf in self._itertokens(rule):
+ if mode:
+ is_static = False
+ if mode == 'default': mode = self.default_filter
+ mask, in_filter, out_filter = self.filters[mode](conf)
+ if not key:
+ pattern += '(?:%s)' % mask
+ key = 'anon%d' % anons
+ anons += 1
+ else:
+ pattern += '(?P<%s>%s)' % (key, mask)
+ keys.append(key)
+ if in_filter: filters.append((key, in_filter))
+ builder.append((key, out_filter or str))
+ elif key:
+ pattern += re.escape(key)
+ builder.append((None, key))
+
+ self.builder[rule] = builder
+ if name: self.builder[name] = builder
+
+ if is_static and not self.strict_order:
+ self.static.setdefault(method, {})
+ self.static[method][self.build(rule)] = (target, None)
+ return
+
+ try:
+ re_pattern = re.compile('^(%s)$' % pattern)
+ re_match = re_pattern.match
+ except re.error:
+ raise RouteSyntaxError("Could not add Route: %s (%s)" % (rule, _e()))
+
+ if filters:
+ def getargs(path):
+ url_args = re_match(path).groupdict()
+ for name, wildcard_filter in filters:
+ try:
+ url_args[name] = wildcard_filter(url_args[name])
+ except ValueError:
+ raise HTTPError(400, 'Path has wrong format.')
+ return url_args
+ elif re_pattern.groupindex:
+ def getargs(path):
+ return re_match(path).groupdict()
+ else:
+ getargs = None
+
+ flatpat = _re_flatten(pattern)
+ whole_rule = (rule, flatpat, target, getargs)
+
+ if (flatpat, method) in self._groups:
+ if DEBUG:
+ msg = 'Route <%s %s> overwrites a previously defined route'
+ warnings.warn(msg % (method, rule), RuntimeWarning)
+ self.dyna_routes[method][self._groups[flatpat, method]] = whole_rule
+ else:
+ self.dyna_routes.setdefault(method, []).append(whole_rule)
+ self._groups[flatpat, method] = len(self.dyna_routes[method]) - 1
+
+ self._compile(method)
+
+ def _compile(self, method):
+ all_rules = self.dyna_routes[method]
+ comborules = self.dyna_regexes[method] = []
+ maxgroups = self._MAX_GROUPS_PER_PATTERN
+ for x in range(0, len(all_rules), maxgroups):
+ some = all_rules[x:x+maxgroups]
+ combined = (flatpat for (_, flatpat, _, _) in some)
+ combined = '|'.join('(^%s$)' % flatpat for flatpat in combined)
+ combined = re.compile(combined).match
+ rules = [(target, getargs) for (_, _, target, getargs) in some]
+ comborules.append((combined, rules))
+
+ def build(self, _name, *anons, **query):
+ ''' Build an URL by filling the wildcards in a rule. '''
+ builder = self.builder.get(_name)
+ if not builder: raise RouteBuildError("No route with that name.", _name)
+ try:
+ for i, value in enumerate(anons): query['anon%d'%i] = value
+ url = ''.join([f(query.pop(n)) if n else f for (n,f) in builder])
+ return url if not query else url+'?'+urlencode(query)
+ except KeyError:
+ raise RouteBuildError('Missing URL argument: %r' % _e().args[0])
+
+ def match(self, environ):
+ ''' Return a (target, url_agrs) tuple or raise HTTPError(400/404/405). '''
+ verb = environ['REQUEST_METHOD'].upper()
+ path = environ['PATH_INFO'] or '/'
+ target = None
+ methods = [verb, 'GET', 'ANY'] if verb == 'HEAD' else [verb, 'ANY']
+
+ for method in methods:
+ if method in self.static and path in self.static[method]:
+ target, getargs = self.static[method][path]
+ return target, getargs(path) if getargs else {}
+ elif method in self.dyna_regexes:
+ for combined, rules in self.dyna_regexes[method]:
+ match = combined(path)
+ if match:
+ target, getargs = rules[match.lastindex - 1]
+ return target, getargs(path) if getargs else {}
+
+ # No matching route found. Collect alternative methods for 405 response
+ allowed = set([])
+ nocheck = set(methods)
+ for method in set(self.static) - nocheck:
+ if path in self.static[method]:
+ allowed.add(verb)
+ for method in set(self.dyna_regexes) - allowed - nocheck:
+ for combined, rules in self.dyna_regexes[method]:
+ match = combined(path)
+ if match:
+ allowed.add(method)
+ if allowed:
+ allow_header = ",".join(sorted(allowed))
+ raise HTTPError(405, "Method not allowed.", Allow=allow_header)
+
+ # No matching route and no alternative method found. We give up
+ raise HTTPError(404, "Not found: " + repr(path))
+
+
+
+
+
+
+class Route(object):
+ ''' This class wraps a route callback along with route specific metadata and
+ configuration and applies Plugins on demand. It is also responsible for
+ turing an URL path rule into a regular expression usable by the Router.
+ '''
+
+ def __init__(self, app, rule, method, callback, name=None,
+ plugins=None, skiplist=None, **config):
+ #: The application this route is installed to.
+ self.app = app
+ #: The path-rule string (e.g. ``/wiki/:page``).
+ self.rule = rule
+ #: The HTTP method as a string (e.g. ``GET``).
+ self.method = method
+ #: The original callback with no plugins applied. Useful for introspection.
+ self.callback = callback
+ #: The name of the route (if specified) or ``None``.
+ self.name = name or None
+ #: A list of route-specific plugins (see :meth:`Bottle.route`).
+ self.plugins = plugins or []
+ #: A list of plugins to not apply to this route (see :meth:`Bottle.route`).
+ self.skiplist = skiplist or []
+ #: Additional keyword arguments passed to the :meth:`Bottle.route`
+ #: decorator are stored in this dictionary. Used for route-specific
+ #: plugin configuration and meta-data.
+ self.config = ConfigDict().load_dict(config)
+
+ def __call__(self, *a, **ka):
+ depr("Some APIs changed to return Route() instances instead of"\
+ " callables. Make sure to use the Route.call method and not to"\
+ " call Route instances directly.")
+ return self.call(*a, **ka)
+
+ @cached_property
+ def call(self):
+ ''' The route callback with all plugins applied. This property is
+ created on demand and then cached to speed up subsequent requests.'''
+ return self._make_callback()
+
+ def reset(self):
+ ''' Forget any cached values. The next time :attr:`call` is accessed,
+ all plugins are re-applied. '''
+ self.__dict__.pop('call', None)
+
+ def prepare(self):
+ ''' Do all on-demand work immediately (useful for debugging).'''
+ self.call
+
+ @property
+ def _context(self):
+ depr('Switch to Plugin API v2 and access the Route object directly.')
+ return dict(rule=self.rule, method=self.method, callback=self.callback,
+ name=self.name, app=self.app, config=self.config,
+ apply=self.plugins, skip=self.skiplist)
+
+ def all_plugins(self):
+ ''' Yield all Plugins affecting this route. '''
+ unique = set()
+ for p in reversed(self.app.plugins + self.plugins):
+ if True in self.skiplist: break
+ name = getattr(p, 'name', False)
+ if name and (name in self.skiplist or name in unique): continue
+ if p in self.skiplist or type(p) in self.skiplist: continue
+ if name: unique.add(name)
+ yield p
+
+ def _make_callback(self):
+ callback = self.callback
+ for plugin in self.all_plugins():
+ try:
+ if hasattr(plugin, 'apply'):
+ api = getattr(plugin, 'api', 1)
+ context = self if api > 1 else self._context
+ callback = plugin.apply(callback, context)
+ else:
+ callback = plugin(callback)
+ except RouteReset: # Try again with changed configuration.
+ return self._make_callback()
+ if not callback is self.callback:
+ update_wrapper(callback, self.callback)
+ return callback
+
+ def get_undecorated_callback(self):
+ ''' Return the callback. If the callback is a decorated function, try to
+ recover the original function. '''
+ func = self.callback
+ func = getattr(func, '__func__' if py3k else 'im_func', func)
+ closure_attr = '__closure__' if py3k else 'func_closure'
+ while hasattr(func, closure_attr) and getattr(func, closure_attr):
+ func = getattr(func, closure_attr)[0].cell_contents
+ return func
+
+ def get_callback_args(self):
+ ''' Return a list of argument names the callback (most likely) accepts
+ as keyword arguments. If the callback is a decorated function, try
+ to recover the original function before inspection. '''
+ return getargspec(self.get_undecorated_callback())[0]
+
+ def get_config(key, default=None):
+ ''' Lookup a config field and return its value, first checking the
+ route.config, then route.app.config.'''
+ for conf in (self.config, self.app.conifg):
+ if key in conf: return conf[key]
+ return default
+
+ def __repr__(self):
+ cb = self.get_undecorated_callback()
+ return '<%s %r %r>' % (self.method, self.rule, cb)
+
+
+
+
+
+
+###############################################################################
+# Application Object ###########################################################
+###############################################################################
+
+
+class Bottle(object):
+ """ Each Bottle object represents a single, distinct web application and
+ consists of routes, callbacks, plugins, resources and configuration.
+ Instances are callable WSGI applications.
+
+ :param catchall: If true (default), handle all exceptions. Turn off to
+ let debugging middleware handle exceptions.
+ """
+
+ def __init__(self, catchall=True, autojson=True):
+
+ #: A :class:`ConfigDict` for app specific configuration.
+ self.config = ConfigDict()
+ self.config._on_change = functools.partial(self.trigger_hook, 'config')
+ self.config.meta_set('autojson', 'validate', bool)
+ self.config.meta_set('catchall', 'validate', bool)
+ self.config['catchall'] = catchall
+ self.config['autojson'] = autojson
+
+ #: A :class:`ResourceManager` for application files
+ self.resources = ResourceManager()
+
+ self.routes = [] # List of installed :class:`Route` instances.
+ self.router = Router() # Maps requests to :class:`Route` instances.
+ self.error_handler = {}
+
+ # Core plugins
+ self.plugins = [] # List of installed plugins.
+ if self.config['autojson']:
+ self.install(JSONPlugin())
+ self.install(TemplatePlugin())
+
+ #: If true, most exceptions are caught and returned as :exc:`HTTPError`
+ catchall = DictProperty('config', 'catchall')
+
+ __hook_names = 'before_request', 'after_request', 'app_reset', 'config'
+ __hook_reversed = 'after_request'
+
+ @cached_property
+ def _hooks(self):
+ return dict((name, []) for name in self.__hook_names)
+
+ def add_hook(self, name, func):
+ ''' Attach a callback to a hook. Three hooks are currently implemented:
+
+ before_request
+ Executed once before each request. The request context is
+ available, but no routing has happened yet.
+ after_request
+ Executed once after each request regardless of its outcome.
+ app_reset
+ Called whenever :meth:`Bottle.reset` is called.
+ '''
+ if name in self.__hook_reversed:
+ self._hooks[name].insert(0, func)
+ else:
+ self._hooks[name].append(func)
+
+ def remove_hook(self, name, func):
+ ''' Remove a callback from a hook. '''
+ if name in self._hooks and func in self._hooks[name]:
+ self._hooks[name].remove(func)
+ return True
+
+ def trigger_hook(self, __name, *args, **kwargs):
+ ''' Trigger a hook and return a list of results. '''
+ return [hook(*args, **kwargs) for hook in self._hooks[__name][:]]
+
+ def hook(self, name):
+ """ Return a decorator that attaches a callback to a hook. See
+ :meth:`add_hook` for details."""
+ def decorator(func):
+ self.add_hook(name, func)
+ return func
+ return decorator
+
+ def mount(self, prefix, app, **options):
+ ''' Mount an application (:class:`Bottle` or plain WSGI) to a specific
+ URL prefix. Example::
+
+ root_app.mount('/admin/', admin_app)
+
+ :param prefix: path prefix or `mount-point`. If it ends in a slash,
+ that slash is mandatory.
+ :param app: an instance of :class:`Bottle` or a WSGI application.
+
+ All other parameters are passed to the underlying :meth:`route` call.
+ '''
+ if isinstance(app, basestring):
+ depr('Parameter order of Bottle.mount() changed.', True) # 0.10
+
+ segments = [p for p in prefix.split('/') if p]
+ if not segments: raise ValueError('Empty path prefix.')
+ path_depth = len(segments)
+
+ def mountpoint_wrapper():
+ try:
+ request.path_shift(path_depth)
+ rs = HTTPResponse([])
+ def start_response(status, headerlist, exc_info=None):
+ if exc_info:
+ try:
+ _raise(*exc_info)
+ finally:
+ exc_info = None
+ rs.status = status
+ for name, value in headerlist: rs.add_header(name, value)
+ return rs.body.append
+ body = app(request.environ, start_response)
+ if body and rs.body: body = itertools.chain(rs.body, body)
+ rs.body = body or rs.body
+ return rs
+ finally:
+ request.path_shift(-path_depth)
+
+ options.setdefault('skip', True)
+ options.setdefault('method', 'ANY')
+ options.setdefault('mountpoint', {'prefix': prefix, 'target': app})
+ options['callback'] = mountpoint_wrapper
+
+ self.route('/%s/<:re:.*>' % '/'.join(segments), **options)
+ if not prefix.endswith('/'):
+ self.route('/' + '/'.join(segments), **options)
+
+ def merge(self, routes):
+ ''' Merge the routes of another :class:`Bottle` application or a list of
+ :class:`Route` objects into this application. The routes keep their
+ 'owner', meaning that the :data:`Route.app` attribute is not
+ changed. '''
+ if isinstance(routes, Bottle):
+ routes = routes.routes
+ for route in routes:
+ self.add_route(route)
+
+ def install(self, plugin):
+ ''' Add a plugin to the list of plugins and prepare it for being
+ applied to all routes of this application. A plugin may be a simple
+ decorator or an object that implements the :class:`Plugin` API.
+ '''
+ if hasattr(plugin, 'setup'): plugin.setup(self)
+ if not callable(plugin) and not hasattr(plugin, 'apply'):
+ raise TypeError("Plugins must be callable or implement .apply()")
+ self.plugins.append(plugin)
+ self.reset()
+ return plugin
+
+ def uninstall(self, plugin):
+ ''' Uninstall plugins. Pass an instance to remove a specific plugin, a type
+ object to remove all plugins that match that type, a string to remove
+ all plugins with a matching ``name`` attribute or ``True`` to remove all
+ plugins. Return the list of removed plugins. '''
+ removed, remove = [], plugin
+ for i, plugin in list(enumerate(self.plugins))[::-1]:
+ if remove is True or remove is plugin or remove is type(plugin) \
+ or getattr(plugin, 'name', True) == remove:
+ removed.append(plugin)
+ del self.plugins[i]
+ if hasattr(plugin, 'close'): plugin.close()
+ if removed: self.reset()
+ return removed
+
+ def reset(self, route=None):
+ ''' Reset all routes (force plugins to be re-applied) and clear all
+ caches. If an ID or route object is given, only that specific route
+ is affected. '''
+ if route is None: routes = self.routes
+ elif isinstance(route, Route): routes = [route]
+ else: routes = [self.routes[route]]
+ for route in routes: route.reset()
+ if DEBUG:
+ for route in routes: route.prepare()
+ self.trigger_hook('app_reset')
+
+ def close(self):
+ ''' Close the application and all installed plugins. '''
+ for plugin in self.plugins:
+ if hasattr(plugin, 'close'): plugin.close()
+ self.stopped = True
+
+ def run(self, **kwargs):
+ ''' Calls :func:`run` with the same parameters. '''
+ run(self, **kwargs)
+
+ def match(self, environ):
+ """ Search for a matching route and return a (:class:`Route` , urlargs)
+ tuple. The second value is a dictionary with parameters extracted
+ from the URL. Raise :exc:`HTTPError` (404/405) on a non-match."""
+ return self.router.match(environ)
+
+ def get_url(self, routename, **kargs):
+ """ Return a string that matches a named route """
+ scriptname = request.environ.get('SCRIPT_NAME', '').strip('/') + '/'
+ location = self.router.build(routename, **kargs).lstrip('/')
+ return urljoin(urljoin('/', scriptname), location)
+
+ def add_route(self, route):
+ ''' Add a route object, but do not change the :data:`Route.app`
+ attribute.'''
+ self.routes.append(route)
+ self.router.add(route.rule, route.method, route, name=route.name)
+ if DEBUG: route.prepare()
+
+ def route(self, path=None, method='GET', callback=None, name=None,
+ apply=None, skip=None, **config):
+ """ A decorator to bind a function to a request URL. Example::
+
+ @app.route('/hello/:name')
+ def hello(name):
+ return 'Hello %s' % name
+
+ The ``:name`` part is a wildcard. See :class:`Router` for syntax
+ details.
+
+ :param path: Request path or a list of paths to listen to. If no
+ path is specified, it is automatically generated from the
+ signature of the function.
+ :param method: HTTP method (`GET`, `POST`, `PUT`, ...) or a list of
+ methods to listen to. (default: `GET`)
+ :param callback: An optional shortcut to avoid the decorator
+ syntax. ``route(..., callback=func)`` equals ``route(...)(func)``
+ :param name: The name for this route. (default: None)
+ :param apply: A decorator or plugin or a list of plugins. These are
+ applied to the route callback in addition to installed plugins.
+ :param skip: A list of plugins, plugin classes or names. Matching
+ plugins are not installed to this route. ``True`` skips all.
+
+ Any additional keyword arguments are stored as route-specific
+ configuration and passed to plugins (see :meth:`Plugin.apply`).
+ """
+ if callable(path): path, callback = None, path
+ plugins = makelist(apply)
+ skiplist = makelist(skip)
+ def decorator(callback):
+ # TODO: Documentation and tests
+ if isinstance(callback, basestring): callback = load(callback)
+ for rule in makelist(path) or yieldroutes(callback):
+ for verb in makelist(method):
+ verb = verb.upper()
+ route = Route(self, rule, verb, callback, name=name,
+ plugins=plugins, skiplist=skiplist, **config)
+ self.add_route(route)
+ return callback
+ return decorator(callback) if callback else decorator
+
+ def get(self, path=None, method='GET', **options):
+ """ Equals :meth:`route`. """
+ return self.route(path, method, **options)
+
+ def post(self, path=None, method='POST', **options):
+ """ Equals :meth:`route` with a ``POST`` method parameter. """
+ return self.route(path, method, **options)
+
+ def put(self, path=None, method='PUT', **options):
+ """ Equals :meth:`route` with a ``PUT`` method parameter. """
+ return self.route(path, method, **options)
+
+ def delete(self, path=None, method='DELETE', **options):
+ """ Equals :meth:`route` with a ``DELETE`` method parameter. """
+ return self.route(path, method, **options)
+
+ def error(self, code=500):
+ """ Decorator: Register an output handler for a HTTP error code"""
+ def wrapper(handler):
+ self.error_handler[int(code)] = handler
+ return handler
+ return wrapper
+
+ def handle(self, path, method='GET'):
+ """ (deprecated) Execute the first matching route callback and return
+ the result. :exc:`HTTPResponse` exceptions are caught and returned.
+ If :attr:`Bottle.catchall` is true, other exceptions are caught as
+ well and returned as :exc:`HTTPError` instances (500).
+ """
+ depr("This method will change semantics in 0.10. Try to avoid it.")
+ if isinstance(path, dict):
+ return self._handle(path)
+ return self._handle({'PATH_INFO': path, 'REQUEST_METHOD': method.upper()})
+
+ def default_error_handler(self, res):
+ return tob(template(ERROR_PAGE_TEMPLATE, e=res))
+
+ def _handle(self, environ):
+ try:
+ environ['bottle.app'] = self
+ request.bind(environ)
+ response.bind()
+
+ try:
+ self.trigger_hook('before_request')
+ route, args = self.router.match(environ)
+ environ['route.handle'] = route
+ environ['bottle.route'] = route
+ environ['route.url_args'] = args
+ return route.call(**args)
+ finally:
+ self.trigger_hook('after_request')
+
+ except HTTPResponse:
+ return _e()
+ except RouteReset:
+ route.reset()
+ return self._handle(environ)
+ except (KeyboardInterrupt, SystemExit, MemoryError):
+ raise
+ except Exception:
+ if not self.catchall: raise
+ stacktrace = format_exc()
+ environ['wsgi.errors'].write(stacktrace)
+ return HTTPError(500, "Internal Server Error", _e(), stacktrace)
+
+ def _cast(self, out, peek=None):
+ """ Try to convert the parameter into something WSGI compatible and set
+ correct HTTP headers when possible.
+ Support: False, str, unicode, dict, HTTPResponse, HTTPError, file-like,
+ iterable of strings and iterable of unicodes
+ """
+
+ # Empty output is done here
+ if not out:
+ if 'Content-Length' not in response:
+ response['Content-Length'] = 0
+ return []
+ # Join lists of byte or unicode strings. Mixed lists are NOT supported
+ if isinstance(out, (tuple, list))\
+ and isinstance(out[0], (bytes, unicode)):
+ out = out[0][0:0].join(out) # b'abc'[0:0] -> b''
+ # Encode unicode strings
+ if isinstance(out, unicode):
+ out = out.encode(response.charset)
+ # Byte Strings are just returned
+ if isinstance(out, bytes):
+ if 'Content-Length' not in response:
+ response['Content-Length'] = len(out)
+ return [out]
+ # HTTPError or HTTPException (recursive, because they may wrap anything)
+ # TODO: Handle these explicitly in handle() or make them iterable.
+ if isinstance(out, HTTPError):
+ out.apply(response)
+ out = self.error_handler.get(out.status_code, self.default_error_handler)(out)
+ return self._cast(out)
+ if isinstance(out, HTTPResponse):
+ out.apply(response)
+ return self._cast(out.body)
+
+ # File-like objects.
+ if hasattr(out, 'read'):
+ if 'wsgi.file_wrapper' in request.environ:
+ return request.environ['wsgi.file_wrapper'](out)
+ elif hasattr(out, 'close') or not hasattr(out, '__iter__'):
+ return WSGIFileWrapper(out)
+
+ # Handle Iterables. We peek into them to detect their inner type.
+ try:
+ iout = iter(out)
+ first = next(iout)
+ while not first:
+ first = next(iout)
+ except StopIteration:
+ return self._cast('')
+ except HTTPResponse:
+ first = _e()
+ except (KeyboardInterrupt, SystemExit, MemoryError):
+ raise
+ except Exception:
+ if not self.catchall: raise
+ first = HTTPError(500, 'Unhandled exception', _e(), format_exc())
+
+ # These are the inner types allowed in iterator or generator objects.
+ if isinstance(first, HTTPResponse):
+ return self._cast(first)
+ elif isinstance(first, bytes):
+ new_iter = itertools.chain([first], iout)
+ elif isinstance(first, unicode):
+ encoder = lambda x: x.encode(response.charset)
+ new_iter = imap(encoder, itertools.chain([first], iout))
+ else:
+ msg = 'Unsupported response type: %s' % type(first)
+ return self._cast(HTTPError(500, msg))
+ if hasattr(out, 'close'):
+ new_iter = _closeiter(new_iter, out.close)
+ return new_iter
+
+ def wsgi(self, environ, start_response):
+ """ The bottle WSGI-interface. """
+ try:
+ out = self._cast(self._handle(environ))
+ # rfc2616 section 4.3
+ if response._status_code in (100, 101, 204, 304)\
+ or environ['REQUEST_METHOD'] == 'HEAD':
+ if hasattr(out, 'close'): out.close()
+ out = []
+ start_response(response._status_line, response.headerlist)
+ return out
+ except (KeyboardInterrupt, SystemExit, MemoryError):
+ raise
+ except Exception:
+ if not self.catchall: raise
+ err = '<h1>Critical error while processing request: %s</h1>' \
+ % html_escape(environ.get('PATH_INFO', '/'))
+ if DEBUG:
+ err += '<h2>Error:</h2>\n<pre>\n%s\n</pre>\n' \
+ '<h2>Traceback:</h2>\n<pre>\n%s\n</pre>\n' \
+ % (html_escape(repr(_e())), html_escape(format_exc()))
+ environ['wsgi.errors'].write(err)
+ headers = [('Content-Type', 'text/html; charset=UTF-8')]
+ start_response('500 INTERNAL SERVER ERROR', headers, sys.exc_info())
+ return [tob(err)]
+
+ def __call__(self, environ, start_response):
+ ''' Each instance of :class:'Bottle' is a WSGI application. '''
+ return self.wsgi(environ, start_response)
+
+
+
+
+
+
+###############################################################################
+# HTTP and WSGI Tools ##########################################################
+###############################################################################
+
+class BaseRequest(object):
+ """ A wrapper for WSGI environment dictionaries that adds a lot of
+ convenient access methods and properties. Most of them are read-only.
+
+ Adding new attributes to a request actually adds them to the environ
+ dictionary (as 'bottle.request.ext.<name>'). This is the recommended
+ way to store and access request-specific data.
+ """
+
+ __slots__ = ('environ')
+
+ #: Maximum size of memory buffer for :attr:`body` in bytes.
+ MEMFILE_MAX = 102400
+ #: Maximum number pr GET or POST parameters per request
+ MAX_PARAMS = 100
+
+ def __init__(self, environ=None):
+ """ Wrap a WSGI environ dictionary. """
+ #: The wrapped WSGI environ dictionary. This is the only real attribute.
+ #: All other attributes actually are read-only properties.
+ self.environ = {} if environ is None else environ
+ self.environ['bottle.request'] = self
+
+ @DictProperty('environ', 'bottle.app', read_only=True)
+ def app(self):
+ ''' Bottle application handling this request. '''
+ raise RuntimeError('This request is not connected to an application.')
+
+ @DictProperty('environ', 'bottle.route', read_only=True)
+ def route(self):
+ """ The bottle :class:`Route` object that matches this request. """
+ raise RuntimeError('This request is not connected to a route.')
+
+ @DictProperty('environ', 'route.url_args', read_only=True)
+ def url_args(self):
+ """ The arguments extracted from the URL. """
+ raise RuntimeError('This request is not connected to a route.')
+
+ @property
+ def path(self):
+ ''' The value of ``PATH_INFO`` with exactly one prefixed slash (to fix
+ broken clients and avoid the "empty path" edge case). '''
+ return '/' + self.environ.get('PATH_INFO','').lstrip('/')
+
+ @property
+ def method(self):
+ ''' The ``REQUEST_METHOD`` value as an uppercase string. '''
+ return self.environ.get('REQUEST_METHOD', 'GET').upper()
+
+ @DictProperty('environ', 'bottle.request.headers', read_only=True)
+ def headers(self):
+ ''' A :class:`WSGIHeaderDict` that provides case-insensitive access to
+ HTTP request headers. '''
+ return WSGIHeaderDict(self.environ)
+
+ def get_header(self, name, default=None):
+ ''' Return the value of a request header, or a given default value. '''
+ return self.headers.get(name, default)
+
+ @DictProperty('environ', 'bottle.request.cookies', read_only=True)
+ def cookies(self):
+ """ Cookies parsed into a :class:`FormsDict`. Signed cookies are NOT
+ decoded. Use :meth:`get_cookie` if you expect signed cookies. """
+ cookies = SimpleCookie(self.environ.get('HTTP_COOKIE','')).values()
+ if len(cookies) > self.MAX_PARAMS:
+ raise HTTPError(413, 'Too many cookies')
+ return FormsDict((c.key, c.value) for c in cookies)
+
+ def get_cookie(self, key, default=None, secret=None):
+ """ Return the content of a cookie. To read a `Signed Cookie`, the
+ `secret` must match the one used to create the cookie (see
+ :meth:`BaseResponse.set_cookie`). If anything goes wrong (missing
+ cookie or wrong signature), return a default value. """
+ value = self.cookies.get(key)
+ if secret and value:
+ dec = cookie_decode(value, secret) # (key, value) tuple or None
+ return dec[1] if dec and dec[0] == key else default
+ return value or default
+
+ @DictProperty('environ', 'bottle.request.query', read_only=True)
+ def query(self):
+ ''' The :attr:`query_string` parsed into a :class:`FormsDict`. These
+ values are sometimes called "URL arguments" or "GET parameters", but
+ not to be confused with "URL wildcards" as they are provided by the
+ :class:`Router`. '''
+ get = self.environ['bottle.get'] = FormsDict()
+ pairs = _parse_qsl(self.environ.get('QUERY_STRING', ''))
+ if len(pairs) > self.MAX_PARAMS:
+ raise HTTPError(413, 'Too many parameters')
+ for key, value in pairs:
+ get[key] = value
+ return get
+
+ @DictProperty('environ', 'bottle.request.forms', read_only=True)
+ def forms(self):
+ """ Form values parsed from an `url-encoded` or `multipart/form-data`
+ encoded POST or PUT request body. The result is returned as a
+ :class:`FormsDict`. All keys and values are strings. File uploads
+ are stored separately in :attr:`files`. """
+ forms = FormsDict()
+ for name, item in self.POST.allitems():
+ if not isinstance(item, FileUpload):
+ forms[name] = item
+ return forms
+
+ @DictProperty('environ', 'bottle.request.params', read_only=True)
+ def params(self):
+ """ A :class:`FormsDict` with the combined values of :attr:`query` and
+ :attr:`forms`. File uploads are stored in :attr:`files`. """
+ params = FormsDict()
+ for key, value in self.query.allitems():
+ params[key] = value
+ for key, value in self.forms.allitems():
+ params[key] = value
+ return params
+
+ @DictProperty('environ', 'bottle.request.files', read_only=True)
+ def files(self):
+ """ File uploads parsed from `multipart/form-data` encoded POST or PUT
+ request body. The values are instances of :class:`FileUpload`.
+
+ """
+ files = FormsDict()
+ for name, item in self.POST.allitems():
+ if isinstance(item, FileUpload):
+ files[name] = item
+ return files
+
+ @DictProperty('environ', 'bottle.request.json', read_only=True)
+ def json(self):
+ ''' If the ``Content-Type`` header is ``application/json``, this
+ property holds the parsed content of the request body. Only requests
+ smaller than :attr:`MEMFILE_MAX` are processed to avoid memory
+ exhaustion. '''
+ if 'application/json' in self.environ.get('CONTENT_TYPE', ''):
+ return json_loads(self._get_body_string())
+ return None
+
+ @DictProperty('environ', 'bottle.request.body', read_only=True)
+ def _body(self):
+ maxread = max(0, self.content_length)
+ stream = self.environ['wsgi.input']
+ body = BytesIO() if maxread < self.MEMFILE_MAX else TemporaryFile(mode='w+b')
+ while maxread > 0:
+ part = stream.read(min(maxread, self.MEMFILE_MAX))
+ if not part: break
+ body.write(part)
+ maxread -= len(part)
+ self.environ['wsgi.input'] = body
+ body.seek(0)
+ return body
+
+ def _get_body_string(self):
+ ''' read body until content-length or MEMFILE_MAX into a string. Raise
+ HTTPError(413) on requests that are to large. '''
+ clen = self.content_length
+ if clen > self.MEMFILE_MAX:
+ raise HTTPError(413, 'Request to large')
+ if clen < 0: clen = self.MEMFILE_MAX + 1
+ data = self.body.read(clen)
+ if len(data) > self.MEMFILE_MAX: # Fail fast
+ raise HTTPError(413, 'Request to large')
+ return data
+
+ @property
+ def body(self):
+ """ The HTTP request body as a seek-able file-like object. Depending on
+ :attr:`MEMFILE_MAX`, this is either a temporary file or a
+ :class:`io.BytesIO` instance. Accessing this property for the first
+ time reads and replaces the ``wsgi.input`` environ variable.
+ Subsequent accesses just do a `seek(0)` on the file object. """
+ self._body.seek(0)
+ return self._body
+
+ #: An alias for :attr:`query`.
+ GET = query
+
+ @DictProperty('environ', 'bottle.request.post', read_only=True)
+ def POST(self):
+ """ The values of :attr:`forms` and :attr:`files` combined into a single
+ :class:`FormsDict`. Values are either strings (form values) or
+ instances of :class:`cgi.FieldStorage` (file uploads).
+ """
+ post = FormsDict()
+ # We default to application/x-www-form-urlencoded for everything that
+ # is not multipart and take the fast path (also: 3.1 workaround)
+ if not self.content_type.startswith('multipart/'):
+ pairs = _parse_qsl(tonat(self._get_body_string(), 'latin1'))
+ if len(pairs) > self.MAX_PARAMS:
+ raise HTTPError(413, 'Too many parameters')
+ for key, value in pairs:
+ post[key] = value
+ return post
+
+ safe_env = {'QUERY_STRING':''} # Build a safe environment for cgi
+ for key in ('REQUEST_METHOD', 'CONTENT_TYPE', 'CONTENT_LENGTH'):
+ if key in self.environ: safe_env[key] = self.environ[key]
+ args = dict(fp=self.body, environ=safe_env, keep_blank_values=True)
+ if py31:
+ args['fp'] = NCTextIOWrapper(args['fp'], encoding='latin1',
+ newline='\n')
+ elif py3k:
+ args['encoding'] = 'latin1'
+ data = cgi.FieldStorage(**args)
+ data = data.list or []
+ if len(data) > self.MAX_PARAMS:
+ raise HTTPError(413, 'Too many parameters')
+ for item in data:
+ if item.filename:
+ post[item.name] = FileUpload(item.file, item.name,
+ item.filename, item.headers)
+ else:
+ post[item.name] = item.value
+ return post
+
+ @property
+ def COOKIES(self):
+ ''' Alias for :attr:`cookies` (deprecated). '''
+ depr('BaseRequest.COOKIES was renamed to BaseRequest.cookies (lowercase).')
+ return self.cookies
+
+ @property
+ def url(self):
+ """ The full request URI including hostname and scheme. If your app
+ lives behind a reverse proxy or load balancer and you get confusing
+ results, make sure that the ``X-Forwarded-Host`` header is set
+ correctly. """
+ return self.urlparts.geturl()
+
+ @DictProperty('environ', 'bottle.request.urlparts', read_only=True)
+ def urlparts(self):
+ ''' The :attr:`url` string as an :class:`urlparse.SplitResult` tuple.
+ The tuple contains (scheme, host, path, query_string and fragment),
+ but the fragment is always empty because it is not visible to the
+ server. '''
+ env = self.environ
+ http = env.get('HTTP_X_FORWARDED_PROTO') or env.get('wsgi.url_scheme', 'http')
+ host = env.get('HTTP_X_FORWARDED_HOST') or env.get('HTTP_HOST')
+ if not host:
+ # HTTP 1.1 requires a Host-header. This is for HTTP/1.0 clients.
+ host = env.get('SERVER_NAME', '127.0.0.1')
+ port = env.get('SERVER_PORT')
+ if port and port != ('80' if http == 'http' else '443'):
+ host += ':' + port
+ path = urlquote(self.fullpath)
+ return UrlSplitResult(http, host, path, env.get('QUERY_STRING'), '')
+
+ @property
+ def fullpath(self):
+ """ Request path including :attr:`script_name` (if present). """
+ return urljoin(self.script_name, self.path.lstrip('/'))
+
+ @property
+ def query_string(self):
+ """ The raw :attr:`query` part of the URL (everything in between ``?``
+ and ``#``) as a string. """
+ return self.environ.get('QUERY_STRING', '')
+
+ @property
+ def script_name(self):
+ ''' The initial portion of the URL's `path` that was removed by a higher
+ level (server or routing middleware) before the application was
+ called. This script path is returned with leading and tailing
+ slashes. '''
+ script_name = self.environ.get('SCRIPT_NAME', '').strip('/')
+ return '/' + script_name + '/' if script_name else '/'
+
+ def path_shift(self, shift=1):
+ ''' Shift path segments from :attr:`path` to :attr:`script_name` and
+ vice versa.
+
+ :param shift: The number of path segments to shift. May be negative
+ to change the shift direction. (default: 1)
+ '''
+ script = self.environ.get('SCRIPT_NAME','/')
+ self['SCRIPT_NAME'], self['PATH_INFO'] = path_shift(script, self.path, shift)
+
+ @property
+ def content_length(self):
+ ''' The request body length as an integer. The client is responsible to
+ set this header. Otherwise, the real length of the body is unknown
+ and -1 is returned. In this case, :attr:`body` will be empty. '''
+ return int(self.environ.get('CONTENT_LENGTH') or -1)
+
+ @property
+ def content_type(self):
+ ''' The Content-Type header as a lowercase-string (default: empty). '''
+ return self.environ.get('CONTENT_TYPE', '').lower()
+
+ @property
+ def is_xhr(self):
+ ''' True if the request was triggered by a XMLHttpRequest. This only
+ works with JavaScript libraries that support the `X-Requested-With`
+ header (most of the popular libraries do). '''
+ requested_with = self.environ.get('HTTP_X_REQUESTED_WITH','')
+ return requested_with.lower() == 'xmlhttprequest'
+
+ @property
+ def is_ajax(self):
+ ''' Alias for :attr:`is_xhr`. "Ajax" is not the right term. '''
+ return self.is_xhr
+
+ @property
+ def auth(self):
+ """ HTTP authentication data as a (user, password) tuple. This
+ implementation currently supports basic (not digest) authentication
+ only. If the authentication happened at a higher level (e.g. in the
+ front web-server or a middleware), the password field is None, but
+ the user field is looked up from the ``REMOTE_USER`` environ
+ variable. On any errors, None is returned. """
+ basic = parse_auth(self.environ.get('HTTP_AUTHORIZATION',''))
+ if basic: return basic
+ ruser = self.environ.get('REMOTE_USER')
+ if ruser: return (ruser, None)
+ return None
+
+ @property
+ def remote_route(self):
+ """ A list of all IPs that were involved in this request, starting with
+ the client IP and followed by zero or more proxies. This does only
+ work if all proxies support the ```X-Forwarded-For`` header. Note
+ that this information can be forged by malicious clients. """
+ proxy = self.environ.get('HTTP_X_FORWARDED_FOR')
+ if proxy: return [ip.strip() for ip in proxy.split(',')]
+ remote = self.environ.get('REMOTE_ADDR')
+ return [remote] if remote else []
+
+ @property
+ def remote_addr(self):
+ """ The client IP as a string. Note that this information can be forged
+ by malicious clients. """
+ route = self.remote_route
+ return route[0] if route else None
+
+ def copy(self):
+ """ Return a new :class:`Request` with a shallow :attr:`environ` copy. """
+ return Request(self.environ.copy())
+
+ def get(self, value, default=None): return self.environ.get(value, default)
+ def __getitem__(self, key): return self.environ[key]
+ def __delitem__(self, key): self[key] = ""; del(self.environ[key])
+ def __iter__(self): return iter(self.environ)
+ def __len__(self): return len(self.environ)
+ def keys(self): return self.environ.keys()
+ def __setitem__(self, key, value):
+ """ Change an environ value and clear all caches that depend on it. """
+
+ if self.environ.get('bottle.request.readonly'):
+ raise KeyError('The environ dictionary is read-only.')
+
+ self.environ[key] = value
+ todelete = ()
+
+ if key == 'wsgi.input':
+ todelete = ('body', 'forms', 'files', 'params', 'post', 'json')
+ elif key == 'QUERY_STRING':
+ todelete = ('query', 'params')
+ elif key.startswith('HTTP_'):
+ todelete = ('headers', 'cookies')
+
+ for key in todelete:
+ self.environ.pop('bottle.request.'+key, None)
+
+ def __repr__(self):
+ return '<%s: %s %s>' % (self.__class__.__name__, self.method, self.url)
+
+ def __getattr__(self, name):
+ ''' Search in self.environ for additional user defined attributes. '''
+ try:
+ var = self.environ['bottle.request.ext.%s'%name]
+ return var.__get__(self) if hasattr(var, '__get__') else var
+ except KeyError:
+ raise AttributeError('Attribute %r not defined.' % name)
+
+ def __setattr__(self, name, value):
+ if name == 'environ': return object.__setattr__(self, name, value)
+ self.environ['bottle.request.ext.%s'%name] = value
+
+
+
+
+def _hkey(s):
+ return s.title().replace('_','-')
+
+
+class HeaderProperty(object):
+ def __init__(self, name, reader=None, writer=str, default=''):
+ self.name, self.default = name, default
+ self.reader, self.writer = reader, writer
+ self.__doc__ = 'Current value of the %r header.' % name.title()
+
+ def __get__(self, obj, cls):
+ if obj is None: return self
+ value = obj.headers.get(self.name, self.default)
+ return self.reader(value) if self.reader else value
+
+ def __set__(self, obj, value):
+ obj.headers[self.name] = self.writer(value)
+
+ def __delete__(self, obj):
+ del obj.headers[self.name]
+
+
+class BaseResponse(object):
+ """ Storage class for a response body as well as headers and cookies.
+
+ This class does support dict-like case-insensitive item-access to
+ headers, but is NOT a dict. Most notably, iterating over a response
+ yields parts of the body and not the headers.
+
+ :param body: The response body as one of the supported types.
+ :param status: Either an HTTP status code (e.g. 200) or a status line
+ including the reason phrase (e.g. '200 OK').
+ :param headers: A dictionary or a list of name-value pairs.
+
+ Additional keyword arguments are added to the list of headers.
+ Underscores in the header name are replaced with dashes.
+ """
+
+ default_status = 200
+ default_content_type = 'text/html; charset=UTF-8'
+
+ # Header blacklist for specific response codes
+ # (rfc2616 section 10.2.3 and 10.3.5)
+ bad_headers = {
+ 204: set(('Content-Type',)),
+ 304: set(('Allow', 'Content-Encoding', 'Content-Language',
+ 'Content-Length', 'Content-Range', 'Content-Type',
+ 'Content-Md5', 'Last-Modified'))}
+
+ def __init__(self, body='', status=None, headers=None, **more_headers):
+ self._cookies = None
+ self._headers = {}
+ self.body = body
+ self.status = status or self.default_status
+ if headers:
+ if isinstance(headers, dict):
+ headers = headers.items()
+ for name, value in headers:
+ self.add_header(name, value)
+ if more_headers:
+ for name, value in more_headers.items():
+ self.add_header(name, value)
+
+ def copy(self, cls=None):
+ ''' Returns a copy of self. '''
+ cls = cls or BaseResponse
+ assert issubclass(cls, BaseResponse)
+ copy = cls()
+ copy.status = self.status
+ copy._headers = dict((k, v[:]) for (k, v) in self._headers.items())
+ copy.COOKIES.load(self.COOKIES.output())
+ return copy
+
+ def __iter__(self):
+ return iter(self.body)
+
+ def close(self):
+ if hasattr(self.body, 'close'):
+ self.body.close()
+
+ @property
+ def status_line(self):
+ ''' The HTTP status line as a string (e.g. ``404 Not Found``).'''
+ return self._status_line
+
+ @property
+ def status_code(self):
+ ''' The HTTP status code as an integer (e.g. 404).'''
+ return self._status_code
+
+ def _set_status(self, status):
+ if isinstance(status, int):
+ code, status = status, _HTTP_STATUS_LINES.get(status)
+ elif ' ' in status:
+ status = status.strip()
+ code = int(status.split()[0])
+ else:
+ raise ValueError('String status line without a reason phrase.')
+ if not 100 <= code <= 999: raise ValueError('Status code out of range.')
+ self._status_code = code
+ self._status_line = str(status or ('%d Unknown' % code))
+
+ def _get_status(self):
+ return self._status_line
+
+ status = property(_get_status, _set_status, None,
+ ''' A writeable property to change the HTTP response status. It accepts
+ either a numeric code (100-999) or a string with a custom reason
+ phrase (e.g. "404 Brain not found"). Both :data:`status_line` and
+ :data:`status_code` are updated accordingly. The return value is
+ always a status string. ''')
+ del _get_status, _set_status
+
+ @property
+ def headers(self):
+ ''' An instance of :class:`HeaderDict`, a case-insensitive dict-like
+ view on the response headers. '''
+ hdict = HeaderDict()
+ hdict.dict = self._headers
+ return hdict
+
+ def __contains__(self, name): return _hkey(name) in self._headers
+ def __delitem__(self, name): del self._headers[_hkey(name)]
+ def __getitem__(self, name): return self._headers[_hkey(name)][-1]
+ def __setitem__(self, name, value): self._headers[_hkey(name)] = [str(value)]
+
+ def get_header(self, name, default=None):
+ ''' Return the value of a previously defined header. If there is no
+ header with that name, return a default value. '''
+ return self._headers.get(_hkey(name), [default])[-1]
+
+ def set_header(self, name, value):
+ ''' Create a new response header, replacing any previously defined
+ headers with the same name. '''
+ self._headers[_hkey(name)] = [str(value)]
+
+ def add_header(self, name, value):
+ ''' Add an additional response header, not removing duplicates. '''
+ self._headers.setdefault(_hkey(name), []).append(str(value))
+
+ def iter_headers(self):
+ ''' Yield (header, value) tuples, skipping headers that are not
+ allowed with the current response status code. '''
+ return self.headerlist
+
+ def wsgiheader(self):
+ depr('The wsgiheader method is deprecated. See headerlist.') #0.10
+ return self.headerlist
+
+ @property
+ def headerlist(self):
+ ''' WSGI conform list of (header, value) tuples. '''
+ out = []
+ headers = list(self._headers.items())
+ if 'Content-Type' not in self._headers:
+ headers.append(('Content-Type', [self.default_content_type]))
+ if self._status_code in self.bad_headers:
+ bad_headers = self.bad_headers[self._status_code]
+ headers = [h for h in headers if h[0] not in bad_headers]
+ out += [(name, val) for name, vals in headers for val in vals]
+ if self._cookies:
+ for c in self._cookies.values():
+ out.append(('Set-Cookie', c.OutputString()))
+ return out
+
+ content_type = HeaderProperty('Content-Type')
+ content_length = HeaderProperty('Content-Length', reader=int)
+ expires = HeaderProperty('Expires',
+ reader=lambda x: datetime.utcfromtimestamp(parse_date(x)),
+ writer=lambda x: http_date(x))
+
+ @property
+ def charset(self, default='UTF-8'):
+ """ Return the charset specified in the content-type header (default: utf8). """
+ if 'charset=' in self.content_type:
+ return self.content_type.split('charset=')[-1].split(';')[0].strip()
+ return default
+
+ @property
+ def COOKIES(self):
+ """ A dict-like SimpleCookie instance. This should not be used directly.
+ See :meth:`set_cookie`. """
+ depr('The COOKIES dict is deprecated. Use `set_cookie()` instead.') # 0.10
+ if not self._cookies:
+ self._cookies = SimpleCookie()
+ return self._cookies
+
+ def set_cookie(self, name, value, secret=None, **options):
+ ''' Create a new cookie or replace an old one. If the `secret` parameter is
+ set, create a `Signed Cookie` (described below).
+
+ :param name: the name of the cookie.
+ :param value: the value of the cookie.
+ :param secret: a signature key required for signed cookies.
+
+ Additionally, this method accepts all RFC 2109 attributes that are
+ supported by :class:`cookie.Morsel`, including:
+
+ :param max_age: maximum age in seconds. (default: None)
+ :param expires: a datetime object or UNIX timestamp. (default: None)
+ :param domain: the domain that is allowed to read the cookie.
+ (default: current domain)
+ :param path: limits the cookie to a given path (default: current path)
+ :param secure: limit the cookie to HTTPS connections (default: off).
+ :param httponly: prevents client-side javascript to read this cookie
+ (default: off, requires Python 2.6 or newer).
+
+ If neither `expires` nor `max_age` is set (default), the cookie will
+ expire at the end of the browser session (as soon as the browser
+ window is closed).
+
+ Signed cookies may store any pickle-able object and are
+ cryptographically signed to prevent manipulation. Keep in mind that
+ cookies are limited to 4kb in most browsers.
+
+ Warning: Signed cookies are not encrypted (the client can still see
+ the content) and not copy-protected (the client can restore an old
+ cookie). The main intention is to make pickling and unpickling
+ save, not to store secret information at client side.
+ '''
+ if not self._cookies:
+ self._cookies = SimpleCookie()
+
+ if secret:
+ value = touni(cookie_encode((name, value), secret))
+ elif not isinstance(value, basestring):
+ raise TypeError('Secret key missing for non-string Cookie.')
+
+ if len(value) > 4096: raise ValueError('Cookie value to long.')
+ self._cookies[name] = value
+
+ for key, value in options.items():
+ if key == 'max_age':
+ if isinstance(value, timedelta):
+ value = value.seconds + value.days * 24 * 3600
+ if key == 'expires':
+ if isinstance(value, (datedate, datetime)):
+ value = value.timetuple()
+ elif isinstance(value, (int, float)):
+ value = time.gmtime(value)
+ value = time.strftime("%a, %d %b %Y %H:%M:%S GMT", value)
+ self._cookies[name][key.replace('_', '-')] = value
+
+ def delete_cookie(self, key, **kwargs):
+ ''' Delete a cookie. Be sure to use the same `domain` and `path`
+ settings as used to create the cookie. '''
+ kwargs['max_age'] = -1
+ kwargs['expires'] = 0
+ self.set_cookie(key, '', **kwargs)
+
+ def __repr__(self):
+ out = ''
+ for name, value in self.headerlist:
+ out += '%s: %s\n' % (name.title(), value.strip())
+ return out
+
+#: Thread-local storage for :class:`LocalRequest` and :class:`LocalResponse`
+#: attributes.
+_lctx = threading.local()
+
+def local_property(name):
+ def fget(self):
+ try:
+ return getattr(_lctx, name)
+ except AttributeError:
+ raise RuntimeError("Request context not initialized.")
+ def fset(self, value): setattr(_lctx, name, value)
+ def fdel(self): delattr(_lctx, name)
+ return property(fget, fset, fdel,
+ 'Thread-local property stored in :data:`_lctx.%s`' % name)
+
+
+class LocalRequest(BaseRequest):
+ ''' A thread-local subclass of :class:`BaseRequest` with a different
+ set of attribues for each thread. There is usually only one global
+ instance of this class (:data:`request`). If accessed during a
+ request/response cycle, this instance always refers to the *current*
+ request (even on a multithreaded server). '''
+ bind = BaseRequest.__init__
+ environ = local_property('request_environ')
+
+
+class LocalResponse(BaseResponse):
+ ''' A thread-local subclass of :class:`BaseResponse` with a different
+ set of attribues for each thread. There is usually only one global
+ instance of this class (:data:`response`). Its attributes are used
+ to build the HTTP response at the end of the request/response cycle.
+ '''
+ bind = BaseResponse.__init__
+ _status_line = local_property('response_status_line')
+ _status_code = local_property('response_status_code')
+ _cookies = local_property('response_cookies')
+ _headers = local_property('response_headers')
+ body = local_property('response_body')
+
+
+Request = BaseRequest
+Response = BaseResponse
+
+
+class HTTPResponse(Response, BottleException):
+ def __init__(self, body='', status=None, headers=None,
+ header=None, **more_headers):
+ if header or 'output' in more_headers:
+ depr('Call signature changed (for the better). See BaseResponse')
+ if header: more_headers.update(header)
+ if 'output' in more_headers: body = more_headers.pop('output')
+ super(HTTPResponse, self).__init__(body, status, headers, **more_headers)
+
+ def apply(self, response):
+ response._status_code = self._status_code
+ response._status_line = self._status_line
+ response._headers = self._headers
+ response._cookies = self._cookies
+ response.body = self.body
+
+ def _output(self, value=None):
+ depr('Use HTTPResponse.body instead of HTTPResponse.output')
+ if value is None: return self.body
+ self.body = value
+
+ output = property(_output, _output, doc='Alias for .body')
+
+
+class HTTPError(HTTPResponse):
+ default_status = 500
+ def __init__(self, status=None, body=None, exception=None, traceback=None,
+ **options):
+ self.exception = exception
+ self.traceback = traceback
+ super(HTTPError, self).__init__(body, status, **options)
+
+
+
+
+
+###############################################################################
+# Plugins ######################################################################
+###############################################################################
+
+class PluginError(BottleException): pass
+
+
+class JSONPlugin(object):
+ name = 'json'
+ api = 2
+
+ def __init__(self, json_dumps=json_dumps):
+ self.json_dumps = json_dumps
+
+ def apply(self, callback, route):
+ dumps = self.json_dumps
+ if not dumps: return callback
+ def wrapper(*a, **ka):
+ try:
+ rv = callback(*a, **ka)
+ except HTTPError:
+ rv = _e()
+
+ if isinstance(rv, dict):
+ #Attempt to serialize, raises exception on failure
+ json_response = dumps(rv)
+ #Set content type only if serialization succesful
+ response.content_type = 'application/json'
+ return json_response
+ elif isinstance(rv, HTTPResponse) and isinstance(rv.body, dict):
+ rv.body = dumps(rv.body)
+ rv.content_type = 'application/json'
+ return rv
+
+ return wrapper
+
+
+class TemplatePlugin(object):
+ ''' This plugin applies the :func:`view` decorator to all routes with a
+ `template` config parameter. If the parameter is a tuple, the second
+ element must be a dict with additional options (e.g. `template_engine`)
+ or default variables for the template. '''
+ name = 'template'
+ api = 2
+
+ def apply(self, callback, route):
+ conf = route.config.get('template')
+ if isinstance(conf, (tuple, list)) and len(conf) == 2:
+ return view(conf[0], **conf[1])(callback)
+ elif isinstance(conf, str):
+ return view(conf)(callback)
+ else:
+ return callback
+
+
+#: Not a plugin, but part of the plugin API. TODO: Find a better place.
+class _ImportRedirect(object):
+ def __init__(self, name, impmask):
+ ''' Create a virtual package that redirects imports (see PEP 302). '''
+ self.name = name
+ self.impmask = impmask
+ self.module = sys.modules.setdefault(name, imp.new_module(name))
+ self.module.__dict__.update({'__file__': __file__, '__path__': [],
+ '__all__': [], '__loader__': self})
+ sys.meta_path.append(self)
+
+ def find_module(self, fullname, path=None):
+ if '.' not in fullname: return
+ packname, modname = fullname.rsplit('.', 1)
+ if packname != self.name: return
+ return self
+
+ def load_module(self, fullname):
+ if fullname in sys.modules: return sys.modules[fullname]
+ packname, modname = fullname.rsplit('.', 1)
+ realname = self.impmask % modname
+ __import__(realname)
+ module = sys.modules[fullname] = sys.modules[realname]
+ setattr(self.module, modname, module)
+ module.__loader__ = self
+ return module
+
+
+
+
+
+
+###############################################################################
+# Common Utilities #############################################################
+###############################################################################
+
+
+class MultiDict(DictMixin):
+ """ This dict stores multiple values per key, but behaves exactly like a
+ normal dict in that it returns only the newest value for any given key.
+ There are special methods available to access the full list of values.
+ """
+
+ def __init__(self, *a, **k):
+ self.dict = dict((k, [v]) for (k, v) in dict(*a, **k).items())
+
+ def __len__(self): return len(self.dict)
+ def __iter__(self): return iter(self.dict)
+ def __contains__(self, key): return key in self.dict
+ def __delitem__(self, key): del self.dict[key]
+ def __getitem__(self, key): return self.dict[key][-1]
+ def __setitem__(self, key, value): self.append(key, value)
+ def keys(self): return self.dict.keys()
+
+ if py3k:
+ def values(self): return (v[-1] for v in self.dict.values())
+ def items(self): return ((k, v[-1]) for k, v in self.dict.items())
+ def allitems(self):
+ return ((k, v) for k, vl in self.dict.items() for v in vl)
+ iterkeys = keys
+ itervalues = values
+ iteritems = items
+ iterallitems = allitems
+
+ else:
+ def values(self): return [v[-1] for v in self.dict.values()]
+ def items(self): return [(k, v[-1]) for k, v in self.dict.items()]
+ def iterkeys(self): return self.dict.iterkeys()
+ def itervalues(self): return (v[-1] for v in self.dict.itervalues())
+ def iteritems(self):
+ return ((k, v[-1]) for k, v in self.dict.iteritems())
+ def iterallitems(self):
+ return ((k, v) for k, vl in self.dict.iteritems() for v in vl)
+ def allitems(self):
+ return [(k, v) for k, vl in self.dict.iteritems() for v in vl]
+
+ def get(self, key, default=None, index=-1, type=None):
+ ''' Return the most recent value for a key.
+
+ :param default: The default value to be returned if the key is not
+ present or the type conversion fails.
+ :param index: An index for the list of available values.
+ :param type: If defined, this callable is used to cast the value
+ into a specific type. Exception are suppressed and result in
+ the default value to be returned.
+ '''
+ try:
+ val = self.dict[key][index]
+ return type(val) if type else val
+ except Exception:
+ pass
+ return default
+
+ def append(self, key, value):
+ ''' Add a new value to the list of values for this key. '''
+ self.dict.setdefault(key, []).append(value)
+
+ def replace(self, key, value):
+ ''' Replace the list of values with a single value. '''
+ self.dict[key] = [value]
+
+ def getall(self, key):
+ ''' Return a (possibly empty) list of values for a key. '''
+ return self.dict.get(key) or []
+
+ #: Aliases for WTForms to mimic other multi-dict APIs (Django)
+ getone = get
+ getlist = getall
+
+
+class FormsDict(MultiDict):
+ ''' This :class:`MultiDict` subclass is used to store request form data.
+ Additionally to the normal dict-like item access methods (which return
+ unmodified data as native strings), this container also supports
+ attribute-like access to its values. Attributes are automatically de-
+ or recoded to match :attr:`input_encoding` (default: 'utf8'). Missing
+ attributes default to an empty string. '''
+
+ #: Encoding used for attribute values.
+ input_encoding = 'utf8'
+ #: If true (default), unicode strings are first encoded with `latin1`
+ #: and then decoded to match :attr:`input_encoding`.
+ recode_unicode = True
+
+ def _fix(self, s, encoding=None):
+ if isinstance(s, unicode) and self.recode_unicode: # Python 3 WSGI
+ s = s.encode('latin1')
+ if isinstance(s, bytes): # Python 2 WSGI
+ return s.decode(encoding or self.input_encoding)
+ return s
+
+ def decode(self, encoding=None):
+ ''' Returns a copy with all keys and values de- or recoded to match
+ :attr:`input_encoding`. Some libraries (e.g. WTForms) want a
+ unicode dictionary. '''
+ copy = FormsDict()
+ enc = copy.input_encoding = encoding or self.input_encoding
+ copy.recode_unicode = False
+ for key, value in self.allitems():
+ copy.append(self._fix(key, enc), self._fix(value, enc))
+ return copy
+
+ def getunicode(self, name, default=None, encoding=None):
+ ''' Return the value as a unicode string, or the default. '''
+ try:
+ return self._fix(self[name], encoding)
+ except (UnicodeError, KeyError):
+ return default
+
+ def __getattr__(self, name, default=unicode()):
+ # Without this guard, pickle generates a cryptic TypeError:
+ if name.startswith('__') and name.endswith('__'):
+ return super(FormsDict, self).__getattr__(name)
+ return self.getunicode(name, default=default)
+
+
+class HeaderDict(MultiDict):
+ """ A case-insensitive version of :class:`MultiDict` that defaults to
+ replace the old value instead of appending it. """
+
+ def __init__(self, *a, **ka):
+ self.dict = {}
+ if a or ka: self.update(*a, **ka)
+
+ def __contains__(self, key): return _hkey(key) in self.dict
+ def __delitem__(self, key): del self.dict[_hkey(key)]
+ def __getitem__(self, key): return self.dict[_hkey(key)][-1]
+ def __setitem__(self, key, value): self.dict[_hkey(key)] = [str(value)]
+ def append(self, key, value):
+ self.dict.setdefault(_hkey(key), []).append(str(value))
+ def replace(self, key, value): self.dict[_hkey(key)] = [str(value)]
+ def getall(self, key): return self.dict.get(_hkey(key)) or []
+ def get(self, key, default=None, index=-1):
+ return MultiDict.get(self, _hkey(key), default, index)
+ def filter(self, names):
+ for name in [_hkey(n) for n in names]:
+ if name in self.dict:
+ del self.dict[name]
+
+
+class WSGIHeaderDict(DictMixin):
+ ''' This dict-like class wraps a WSGI environ dict and provides convenient
+ access to HTTP_* fields. Keys and values are native strings
+ (2.x bytes or 3.x unicode) and keys are case-insensitive. If the WSGI
+ environment contains non-native string values, these are de- or encoded
+ using a lossless 'latin1' character set.
+
+ The API will remain stable even on changes to the relevant PEPs.
+ Currently PEP 333, 444 and 3333 are supported. (PEP 444 is the only one
+ that uses non-native strings.)
+ '''
+ #: List of keys that do not have a ``HTTP_`` prefix.
+ cgikeys = ('CONTENT_TYPE', 'CONTENT_LENGTH')
+
+ def __init__(self, environ):
+ self.environ = environ
+
+ def _ekey(self, key):
+ ''' Translate header field name to CGI/WSGI environ key. '''
+ key = key.replace('-','_').upper()
+ if key in self.cgikeys:
+ return key
+ return 'HTTP_' + key
+
+ def raw(self, key, default=None):
+ ''' Return the header value as is (may be bytes or unicode). '''
+ return self.environ.get(self._ekey(key), default)
+
+ def __getitem__(self, key):
+ return tonat(self.environ[self._ekey(key)], 'latin1')
+
+ def __setitem__(self, key, value):
+ raise TypeError("%s is read-only." % self.__class__)
+
+ def __delitem__(self, key):
+ raise TypeError("%s is read-only." % self.__class__)
+
+ def __iter__(self):
+ for key in self.environ:
+ if key[:5] == 'HTTP_':
+ yield key[5:].replace('_', '-').title()
+ elif key in self.cgikeys:
+ yield key.replace('_', '-').title()
+
+ def keys(self): return [x for x in self]
+ def __len__(self): return len(self.keys())
+ def __contains__(self, key): return self._ekey(key) in self.environ
+
+
+
+class ConfigDict(dict):
+ ''' A dict-like configuration storage with additional support for
+ namespaces, validators, meta-data, on_change listeners and more.
+ '''
+
+ __slots__ = ('_meta', '_on_change')
+
+ def __init__(self, *a, **ka):
+ self._meta = {}
+ self._on_change = lambda name, value: None
+ if a or ka:
+ depr('Constructor does no longer accept parameters.')
+ self.update(*a, **ka)
+
+ def load_config(self, filename):
+ ''' Load values from an *.ini style config file.
+
+ If the config file contains sections, their names are used as
+ namespaces for the values within. The two special sections
+ ``DEFAULT`` and ``bottle`` refer to the root namespace (no prefix).
+ '''
+ conf = ConfigParser()
+ conf.read(filename)
+ for section in conf.sections():
+ for key, value in conf.items(section):
+ if section not in ('DEFAULT', 'bottle'):
+ key = section + '.' + key
+ self[key] = value
+ return self
+
+ def load_dict(self, source, namespace=''):
+ ''' Load values from a dictionary structure. Nesting can be used to
+ represent namespaces.
+
+ >>> c.load_dict({'some': {'namespace': {'key': 'value'} } })
+ {'some.namespace.key': 'value'}
+ '''
+ for key, value in source.items():
+ if isinstance(key, str):
+ nskey = (namespace + '.' + key).strip('.')
+ if isinstance(value, dict):
+ self.load_dict(value, namespace=nskey)
+ else:
+ self[nskey] = value
+ else:
+ raise TypeError('Key has type %r (not a string)' % type(key))
+ return self
+
+ def update(self, *a, **ka):
+ ''' If the first parameter is a string, all keys are prefixed with this
+ namespace. Apart from that it works just as the usual dict.update().
+ Example: ``update('some.namespace', key='value')`` '''
+ prefix = ''
+ if a and isinstance(a[0], str):
+ prefix = a[0].strip('.') + '.'
+ a = a[1:]
+ for key, value in dict(*a, **ka).items():
+ self[prefix+key] = value
+
+ def setdefault(self, key, value):
+ if key not in self:
+ self[key] = value
+
+ def __setitem__(self, key, value):
+ if not isinstance(key, str):
+ raise TypeError('Key has type %r (not a string)' % type(key))
+ value = self.meta_get(key, 'filter', lambda x: x)(value)
+ if key in self and self[key] is value:
+ return
+ self._on_change(key, value)
+ dict.__setitem__(self, key, value)
+
+ def __delitem__(self, key):
+ self._on_change(key, None)
+ dict.__delitem__(self, key)
+
+ def meta_get(self, key, metafield, default=None):
+ ''' Return the value of a meta field for a key. '''
+ return self._meta.get(key, {}).get(metafield, default)
+
+ def meta_set(self, key, metafield, value):
+ ''' Set the meta field for a key to a new value. This triggers the
+ on-change handler for existing keys. '''
+ self._meta.setdefault(key, {})[metafield] = value
+ if key in self:
+ self[key] = self[key]
+
+ def meta_list(self, key):
+ ''' Return an iterable of meta field names defined for a key. '''
+ return self._meta.get(key, {}).keys()
+
+ # Deprecated ConfigDict features
+ def __getattr__(self, key):
+ depr('Attribute access is deprecated.') #0.12
+ if key not in self and key[0].isupper():
+ self[key] = ConfigDict()
+ return self.get(key)
+
+ def __setattr__(self, key, value):
+ if key in self.__slots__:
+ return dict.__setattr__(self, key, value)
+ depr('Attribute assignment is deprecated.') #0.12
+ if hasattr(dict, key):
+ raise AttributeError('Read-only attribute.')
+ if key in self and self[key] and isinstance(self[key], ConfigDict):
+ raise AttributeError('Non-empty namespace attribute.')
+ self[key] = value
+
+ def __delattr__(self, key):
+ if key in self: del self[key]
+
+ def __call__(self, *a, **ka):
+ depr('Calling ConfDict is deprecated. Use the update() method.') #0.12
+ self.update(*a, **ka)
+ return self
+
+
+
+class AppStack(list):
+ """ A stack-like list. Calling it returns the head of the stack. """
+
+ def __call__(self):
+ """ Return the current default application. """
+ return self[-1]
+
+ def push(self, value=None):
+ """ Add a new :class:`Bottle` instance to the stack """
+ if not isinstance(value, Bottle):
+ value = Bottle()
+ self.append(value)
+ return value
+
+
+class WSGIFileWrapper(object):
+
+ def __init__(self, fp, buffer_size=1024*64):
+ self.fp, self.buffer_size = fp, buffer_size
+ for attr in ('fileno', 'close', 'read', 'readlines', 'tell', 'seek'):
+ if hasattr(fp, attr): setattr(self, attr, getattr(fp, attr))
+
+ def __iter__(self):
+ buff, read = self.buffer_size, self.read
+ while True:
+ part = read(buff)
+ if not part: return
+ yield part
+
+
+class _closeiter(object):
+ ''' This only exists to be able to attach a .close method to iterators that
+ do not support attribute assignment (most of itertools). '''
+
+ def __init__(self, iterator, close=None):
+ self.iterator = iterator
+ self.close_callbacks = makelist(close)
+
+ def __iter__(self):
+ return iter(self.iterator)
+
+ def close(self):
+ for func in self.close_callbacks:
+ func()
+
+
+class ResourceManager(object):
+ ''' This class manages a list of search paths and helps to find and open
+ application-bound resources (files).
+
+ :param base: default value for :meth:`add_path` calls.
+ :param opener: callable used to open resources.
+ :param cachemode: controls which lookups are cached. One of 'all',
+ 'found' or 'none'.
+ '''
+
+ def __init__(self, base='./', opener=open, cachemode='all'):
+ self.opener = open
+ self.base = base
+ self.cachemode = cachemode
+
+ #: A list of search paths. See :meth:`add_path` for details.
+ self.path = []
+ #: A cache for resolved paths. ``res.cache.clear()`` clears the cache.
+ self.cache = {}
+
+ def add_path(self, path, base=None, index=None, create=False):
+ ''' Add a new path to the list of search paths. Return False if the
+ path does not exist.
+
+ :param path: The new search path. Relative paths are turned into
+ an absolute and normalized form. If the path looks like a file
+ (not ending in `/`), the filename is stripped off.
+ :param base: Path used to absolutize relative search paths.
+ Defaults to :attr:`base` which defaults to ``os.getcwd()``.
+ :param index: Position within the list of search paths. Defaults
+ to last index (appends to the list).
+
+ The `base` parameter makes it easy to reference files installed
+ along with a python module or package::
+
+ res.add_path('./resources/', __file__)
+ '''
+ base = os.path.abspath(os.path.dirname(base or self.base))
+ path = os.path.abspath(os.path.join(base, os.path.dirname(path)))
+ path += os.sep
+ if path in self.path:
+ self.path.remove(path)
+ if create and not os.path.isdir(path):
+ os.makedirs(path)
+ if index is None:
+ self.path.append(path)
+ else:
+ self.path.insert(index, path)
+ self.cache.clear()
+ return os.path.exists(path)
+
+ def __iter__(self):
+ ''' Iterate over all existing files in all registered paths. '''
+ search = self.path[:]
+ while search:
+ path = search.pop()
+ if not os.path.isdir(path): continue
+ for name in os.listdir(path):
+ full = os.path.join(path, name)
+ if os.path.isdir(full): search.append(full)
+ else: yield full
+
+ def lookup(self, name):
+ ''' Search for a resource and return an absolute file path, or `None`.
+
+ The :attr:`path` list is searched in order. The first match is
+ returend. Symlinks are followed. The result is cached to speed up
+ future lookups. '''
+ if name not in self.cache or DEBUG:
+ for path in self.path:
+ fpath = os.path.join(path, name)
+ if os.path.isfile(fpath):
+ if self.cachemode in ('all', 'found'):
+ self.cache[name] = fpath
+ return fpath
+ if self.cachemode == 'all':
+ self.cache[name] = None
+ return self.cache[name]
+
+ def open(self, name, mode='r', *args, **kwargs):
+ ''' Find a resource and return a file object, or raise IOError. '''
+ fname = self.lookup(name)
+ if not fname: raise IOError("Resource %r not found." % name)
+ return self.opener(fname, mode=mode, *args, **kwargs)
+
+
+class FileUpload(object):
+
+ def __init__(self, fileobj, name, filename, headers=None):
+ ''' Wrapper for file uploads. '''
+ #: Open file(-like) object (BytesIO buffer or temporary file)
+ self.file = fileobj
+ #: Name of the upload form field
+ self.name = name
+ #: Raw filename as sent by the client (may contain unsafe characters)
+ self.raw_filename = filename
+ #: A :class:`HeaderDict` with additional headers (e.g. content-type)
+ self.headers = HeaderDict(headers) if headers else HeaderDict()
+
+ content_type = HeaderProperty('Content-Type')
+ content_length = HeaderProperty('Content-Length', reader=int, default=-1)
+
+ @cached_property
+ def filename(self):
+ ''' Name of the file on the client file system, but normalized to ensure
+ file system compatibility (lowercase, no whitespace, no path
+ separators, no unsafe characters, ASCII only). An empty filename
+ is returned as 'empty'.
+ '''
+ from unicodedata import normalize #TODO: Module level import?
+ fname = self.raw_filename
+ if isinstance(fname, unicode):
+ fname = normalize('NFKD', fname).encode('ASCII', 'ignore')
+ fname = fname.decode('ASCII', 'ignore')
+ fname = os.path.basename(fname.replace('\\', os.path.sep))
+ fname = re.sub(r'[^a-zA-Z0-9-_.\s]', '', fname).strip().lower()
+ fname = re.sub(r'[-\s]+', '-', fname.strip('.').strip())
+ return fname or 'empty'
+
+ def _copy_file(self, fp, chunk_size=2**16):
+ read, write, offset = self.file.read, fp.write, self.file.tell()
+ while 1:
+ buf = read(chunk_size)
+ if not buf: break
+ write(buf)
+ self.file.seek(offset)
+
+ def save(self, destination, overwrite=False, chunk_size=2**16):
+ ''' Save file to disk or copy its content to an open file(-like) object.
+ If *destination* is a directory, :attr:`filename` is added to the
+ path. Existing files are not overwritten by default (IOError).
+
+ :param destination: File path, directory or file(-like) object.
+ :param overwrite: If True, replace existing files. (default: False)
+ :param chunk_size: Bytes to read at a time. (default: 64kb)
+ '''
+ if isinstance(destination, basestring): # Except file-likes here
+ if os.path.isdir(destination):
+ destination = os.path.join(destination, self.filename)
+ if not overwrite and os.path.exists(destination):
+ raise IOError('File exists.')
+ with open(destination, 'wb') as fp:
+ self._copy_file(fp, chunk_size)
+ else:
+ self._copy_file(destination, chunk_size)
+
+
+
+
+
+
+###############################################################################
+# Application Helper ###########################################################
+###############################################################################
+
+
+def abort(code=500, text='Unknown Error: Application stopped.'):
+ """ Aborts execution and causes a HTTP error. """
+ raise HTTPError(code, text)
+
+
+def redirect(url, code=None):
+ """ Aborts execution and causes a 303 or 302 redirect, depending on
+ the HTTP protocol version. """
+ if not code:
+ code = 303 if request.get('SERVER_PROTOCOL') == "HTTP/1.1" else 302
+ res = response.copy(cls=HTTPResponse)
+ res.status = code
+ res.body = ""
+ res.set_header('Location', urljoin(request.url, url))
+ raise res
+
+
+def _file_iter_range(fp, offset, bytes, maxread=1024*1024):
+ ''' Yield chunks from a range in a file. No chunk is bigger than maxread.'''
+ fp.seek(offset)
+ while bytes > 0:
+ part = fp.read(min(bytes, maxread))
+ if not part: break
+ bytes -= len(part)
+ yield part
+
+
+def static_file(filename, root, mimetype='auto', download=False, charset='UTF-8'):
+ """ Open a file in a safe way and return :exc:`HTTPResponse` with status
+ code 200, 305, 401 or 404. The ``Content-Type``, ``Content-Encoding``,
+ ``Content-Length`` and ``Last-Modified`` headers are set if possible.
+ Special support for ``If-Modified-Since``, ``Range`` and ``HEAD``
+ requests.
+
+ :param filename: Name or path of the file to send.
+ :param root: Root path for file lookups. Should be an absolute directory
+ path.
+ :param mimetype: Defines the content-type header (default: guess from
+ file extension)
+ :param download: If True, ask the browser to open a `Save as...` dialog
+ instead of opening the file with the associated program. You can
+ specify a custom filename as a string. If not specified, the
+ original filename is used (default: False).
+ :param charset: The charset to use for files with a ``text/*``
+ mime-type. (default: UTF-8)
+ """
+
+ root = os.path.abspath(root) + os.sep
+ filename = os.path.abspath(os.path.join(root, filename.strip('/\\')))
+ headers = dict()
+
+ if not filename.startswith(root):
+ return HTTPError(403, "Access denied.")
+ if not os.path.exists(filename) or not os.path.isfile(filename):
+ return HTTPError(404, "File does not exist.")
+ if not os.access(filename, os.R_OK):
+ return HTTPError(403, "You do not have permission to access this file.")
+
+ if mimetype == 'auto':
+ mimetype, encoding = mimetypes.guess_type(filename)
+ if encoding: headers['Content-Encoding'] = encoding
+
+ if mimetype:
+ if mimetype[:5] == 'text/' and charset and 'charset' not in mimetype:
+ mimetype += '; charset=%s' % charset
+ headers['Content-Type'] = mimetype
+
+ if download:
+ download = os.path.basename(filename if download == True else download)
+ headers['Content-Disposition'] = 'attachment; filename="%s"' % download
+
+ stats = os.stat(filename)
+ headers['Content-Length'] = clen = stats.st_size
+ lm = time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(stats.st_mtime))
+ headers['Last-Modified'] = lm
+
+ ims = request.environ.get('HTTP_IF_MODIFIED_SINCE')
+ if ims:
+ ims = parse_date(ims.split(";")[0].strip())
+ if ims is not None and ims >= int(stats.st_mtime):
+ headers['Date'] = time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime())
+ return HTTPResponse(status=304, **headers)
+
+ body = '' if request.method == 'HEAD' else open(filename, 'rb')
+
+ headers["Accept-Ranges"] = "bytes"
+ ranges = request.environ.get('HTTP_RANGE')
+ if 'HTTP_RANGE' in request.environ:
+ ranges = list(parse_range_header(request.environ['HTTP_RANGE'], clen))
+ if not ranges:
+ return HTTPError(416, "Requested Range Not Satisfiable")
+ offset, end = ranges[0]
+ headers["Content-Range"] = "bytes %d-%d/%d" % (offset, end-1, clen)
+ headers["Content-Length"] = str(end-offset)
+ if body: body = _file_iter_range(body, offset, end-offset)
+ return HTTPResponse(body, status=206, **headers)
+ return HTTPResponse(body, **headers)
+
+
+
+
+
+
+###############################################################################
+# HTTP Utilities and MISC (TODO) ###############################################
+###############################################################################
+
+
+def debug(mode=True):
+ """ Change the debug level.
+ There is only one debug level supported at the moment."""
+ global DEBUG
+ if mode: warnings.simplefilter('default')
+ DEBUG = bool(mode)
+
+def http_date(value):
+ if isinstance(value, (datedate, datetime)):
+ value = value.utctimetuple()
+ elif isinstance(value, (int, float)):
+ value = time.gmtime(value)
+ if not isinstance(value, basestring):
+ value = time.strftime("%a, %d %b %Y %H:%M:%S GMT", value)
+ return value
+
+def parse_date(ims):
+ """ Parse rfc1123, rfc850 and asctime timestamps and return UTC epoch. """
+ try:
+ ts = email.utils.parsedate_tz(ims)
+ return time.mktime(ts[:8] + (0,)) - (ts[9] or 0) - time.timezone
+ except (TypeError, ValueError, IndexError, OverflowError):
+ return None
+
+def parse_auth(header):
+ """ Parse rfc2617 HTTP authentication header string (basic) and return (user,pass) tuple or None"""
+ try:
+ method, data = header.split(None, 1)
+ if method.lower() == 'basic':
+ user, pwd = touni(base64.b64decode(tob(data))).split(':',1)
+ return user, pwd
+ except (KeyError, ValueError):
+ return None
+
+def parse_range_header(header, maxlen=0):
+ ''' Yield (start, end) ranges parsed from a HTTP Range header. Skip
+ unsatisfiable ranges. The end index is non-inclusive.'''
+ if not header or header[:6] != 'bytes=': return
+ ranges = [r.split('-', 1) for r in header[6:].split(',') if '-' in r]
+ for start, end in ranges:
+ try:
+ if not start: # bytes=-100 -> last 100 bytes
+ start, end = max(0, maxlen-int(end)), maxlen
+ elif not end: # bytes=100- -> all but the first 99 bytes
+ start, end = int(start), maxlen
+ else: # bytes=100-200 -> bytes 100-200 (inclusive)
+ start, end = int(start), min(int(end)+1, maxlen)
+ if 0 <= start < end <= maxlen:
+ yield start, end
+ except ValueError:
+ pass
+
+def _parse_qsl(qs):
+ r = []
+ for pair in qs.replace(';','&').split('&'):
+ if not pair: continue
+ nv = pair.split('=', 1)
+ if len(nv) != 2: nv.append('')
+ key = urlunquote(nv[0].replace('+', ' '))
+ value = urlunquote(nv[1].replace('+', ' '))
+ r.append((key, value))
+ return r
+
+def _lscmp(a, b):
+ ''' Compares two strings in a cryptographically safe way:
+ Runtime is not affected by length of common prefix. '''
+ return not sum(0 if x==y else 1 for x, y in zip(a, b)) and len(a) == len(b)
+
+
+def cookie_encode(data, key):
+ ''' Encode and sign a pickle-able object. Return a (byte) string '''
+ msg = base64.b64encode(pickle.dumps(data, -1))
+ sig = base64.b64encode(hmac.new(tob(key), msg).digest())
+ return tob('!') + sig + tob('?') + msg
+
+
+def cookie_decode(data, key):
+ ''' Verify and decode an encoded string. Return an object or None.'''
+ data = tob(data)
+ if cookie_is_encoded(data):
+ sig, msg = data.split(tob('?'), 1)
+ if _lscmp(sig[1:], base64.b64encode(hmac.new(tob(key), msg).digest())):
+ return pickle.loads(base64.b64decode(msg))
+ return None
+
+
+def cookie_is_encoded(data):
+ ''' Return True if the argument looks like a encoded cookie.'''
+ return bool(data.startswith(tob('!')) and tob('?') in data)
+
+
+def html_escape(string):
+ ''' Escape HTML special characters ``&<>`` and quotes ``'"``. '''
+ return string.replace('&','&amp;').replace('<','&lt;').replace('>','&gt;')\
+ .replace('"','&quot;').replace("'",'&#039;')
+
+
+def html_quote(string):
+ ''' Escape and quote a string to be used as an HTTP attribute.'''
+ return '"%s"' % html_escape(string).replace('\n','%#10;')\
+ .replace('\r','&#13;').replace('\t','&#9;')
+
+
+def yieldroutes(func):
+ """ Return a generator for routes that match the signature (name, args)
+ of the func parameter. This may yield more than one route if the function
+ takes optional keyword arguments. The output is best described by example::
+
+ a() -> '/a'
+ b(x, y) -> '/b/<x>/<y>'
+ c(x, y=5) -> '/c/<x>' and '/c/<x>/<y>'
+ d(x=5, y=6) -> '/d' and '/d/<x>' and '/d/<x>/<y>'
+ """
+ path = '/' + func.__name__.replace('__','/').lstrip('/')
+ spec = getargspec(func)
+ argc = len(spec[0]) - len(spec[3] or [])
+ path += ('/<%s>' * argc) % tuple(spec[0][:argc])
+ yield path
+ for arg in spec[0][argc:]:
+ path += '/<%s>' % arg
+ yield path
+
+
+def path_shift(script_name, path_info, shift=1):
+ ''' Shift path fragments from PATH_INFO to SCRIPT_NAME and vice versa.
+
+ :return: The modified paths.
+ :param script_name: The SCRIPT_NAME path.
+ :param script_name: The PATH_INFO path.
+ :param shift: The number of path fragments to shift. May be negative to
+ change the shift direction. (default: 1)
+ '''
+ if shift == 0: return script_name, path_info
+ pathlist = path_info.strip('/').split('/')
+ scriptlist = script_name.strip('/').split('/')
+ if pathlist and pathlist[0] == '': pathlist = []
+ if scriptlist and scriptlist[0] == '': scriptlist = []
+ if shift > 0 and shift <= len(pathlist):
+ moved = pathlist[:shift]
+ scriptlist = scriptlist + moved
+ pathlist = pathlist[shift:]
+ elif shift < 0 and shift >= -len(scriptlist):
+ moved = scriptlist[shift:]
+ pathlist = moved + pathlist
+ scriptlist = scriptlist[:shift]
+ else:
+ empty = 'SCRIPT_NAME' if shift < 0 else 'PATH_INFO'
+ raise AssertionError("Cannot shift. Nothing left from %s" % empty)
+ new_script_name = '/' + '/'.join(scriptlist)
+ new_path_info = '/' + '/'.join(pathlist)
+ if path_info.endswith('/') and pathlist: new_path_info += '/'
+ return new_script_name, new_path_info
+
+
+def auth_basic(check, realm="private", text="Access denied"):
+ ''' Callback decorator to require HTTP auth (basic).
+ TODO: Add route(check_auth=...) parameter. '''
+ def decorator(func):
+ def wrapper(*a, **ka):
+ user, password = request.auth or (None, None)
+ if user is None or not check(user, password):
+ err = HTTPError(401, text)
+ err.add_header('WWW-Authenticate', 'Basic realm="%s"' % realm)
+ return err
+ return func(*a, **ka)
+ return wrapper
+ return decorator
+
+
+# Shortcuts for common Bottle methods.
+# They all refer to the current default application.
+
+def make_default_app_wrapper(name):
+ ''' Return a callable that relays calls to the current default app. '''
+ @functools.wraps(getattr(Bottle, name))
+ def wrapper(*a, **ka):
+ return getattr(app(), name)(*a, **ka)
+ return wrapper
+
+route = make_default_app_wrapper('route')
+get = make_default_app_wrapper('get')
+post = make_default_app_wrapper('post')
+put = make_default_app_wrapper('put')
+delete = make_default_app_wrapper('delete')
+error = make_default_app_wrapper('error')
+mount = make_default_app_wrapper('mount')
+hook = make_default_app_wrapper('hook')
+install = make_default_app_wrapper('install')
+uninstall = make_default_app_wrapper('uninstall')
+url = make_default_app_wrapper('get_url')
+
+
+
+
+
+
+
+###############################################################################
+# Server Adapter ###############################################################
+###############################################################################
+
+
+class ServerAdapter(object):
+ quiet = False
+ def __init__(self, host='127.0.0.1', port=8080, **options):
+ self.options = options
+ self.host = host
+ self.port = int(port)
+
+ def run(self, handler): # pragma: no cover
+ pass
+
+ def __repr__(self):
+ args = ', '.join(['%s=%s'%(k,repr(v)) for k, v in self.options.items()])
+ return "%s(%s)" % (self.__class__.__name__, args)
+
+
+class CGIServer(ServerAdapter):
+ quiet = True
+ def run(self, handler): # pragma: no cover
+ from wsgiref.handlers import CGIHandler
+ def fixed_environ(environ, start_response):
+ environ.setdefault('PATH_INFO', '')
+ return handler(environ, start_response)
+ CGIHandler().run(fixed_environ)
+
+
+class FlupFCGIServer(ServerAdapter):
+ def run(self, handler): # pragma: no cover
+ import flup.server.fcgi
+ self.options.setdefault('bindAddress', (self.host, self.port))
+ flup.server.fcgi.WSGIServer(handler, **self.options).run()
+
+
+class WSGIRefServer(ServerAdapter):
+ def run(self, app): # pragma: no cover
+ from wsgiref.simple_server import WSGIRequestHandler, WSGIServer
+ from wsgiref.simple_server import make_server
+ import socket
+
+ class FixedHandler(WSGIRequestHandler):
+ def address_string(self): # Prevent reverse DNS lookups please.
+ return self.client_address[0]
+ def log_request(*args, **kw):
+ if not self.quiet:
+ return WSGIRequestHandler.log_request(*args, **kw)
+
+ handler_cls = self.options.get('handler_class', FixedHandler)
+ server_cls = self.options.get('server_class', WSGIServer)
+
+ if ':' in self.host: # Fix wsgiref for IPv6 addresses.
+ if getattr(server_cls, 'address_family') == socket.AF_INET:
+ class server_cls(server_cls):
+ address_family = socket.AF_INET6
+
+ srv = make_server(self.host, self.port, app, server_cls, handler_cls)
+ srv.serve_forever()
+
+
+class CherryPyServer(ServerAdapter):
+ def run(self, handler): # pragma: no cover
+ from cherrypy import wsgiserver
+ self.options['bind_addr'] = (self.host, self.port)
+ self.options['wsgi_app'] = handler
+ server = wsgiserver.CherryPyWSGIServer(**self.options)
+ try:
+ server.start()
+ finally:
+ server.stop()
+
+
+class WaitressServer(ServerAdapter):
+ def run(self, handler):
+ from waitress import serve
+ serve(handler, host=self.host, port=self.port)
+
+
+class PasteServer(ServerAdapter):
+ def run(self, handler): # pragma: no cover
+ from paste import httpserver
+ from paste.translogger import TransLogger
+ handler = TransLogger(handler, setup_console_handler=(not self.quiet))
+ httpserver.serve(handler, host=self.host, port=str(self.port),
+ **self.options)
+
+
+class MeinheldServer(ServerAdapter):
+ def run(self, handler):
+ from meinheld import server
+ server.listen((self.host, self.port))
+ server.run(handler)
+
+
+class FapwsServer(ServerAdapter):
+ """ Extremely fast webserver using libev. See http://www.fapws.org/ """
+ def run(self, handler): # pragma: no cover
+ import fapws._evwsgi as evwsgi
+ from fapws import base, config
+ port = self.port
+ if float(config.SERVER_IDENT[-2:]) > 0.4:
+ # fapws3 silently changed its API in 0.5
+ port = str(port)
+ evwsgi.start(self.host, port)
+ # fapws3 never releases the GIL. Complain upstream. I tried. No luck.
+ if 'BOTTLE_CHILD' in os.environ and not self.quiet:
+ _stderr("WARNING: Auto-reloading does not work with Fapws3.\n")
+ _stderr(" (Fapws3 breaks python thread support)\n")
+ evwsgi.set_base_module(base)
+ def app(environ, start_response):
+ environ['wsgi.multiprocess'] = False
+ return handler(environ, start_response)
+ evwsgi.wsgi_cb(('', app))
+ evwsgi.run()
+
+
+class TornadoServer(ServerAdapter):
+ """ The super hyped asynchronous server by facebook. Untested. """
+ def run(self, handler): # pragma: no cover
+ import tornado.wsgi, tornado.httpserver, tornado.ioloop
+ container = tornado.wsgi.WSGIContainer(handler)
+ server = tornado.httpserver.HTTPServer(container)
+ server.listen(port=self.port,address=self.host)
+ tornado.ioloop.IOLoop.instance().start()
+
+
+class AppEngineServer(ServerAdapter):
+ """ Adapter for Google App Engine. """
+ quiet = True
+ def run(self, handler):
+ from google.appengine.ext.webapp import util
+ # A main() function in the handler script enables 'App Caching'.
+ # Lets makes sure it is there. This _really_ improves performance.
+ module = sys.modules.get('__main__')
+ if module and not hasattr(module, 'main'):
+ module.main = lambda: util.run_wsgi_app(handler)
+ util.run_wsgi_app(handler)
+
+
+class TwistedServer(ServerAdapter):
+ """ Untested. """
+ def run(self, handler):
+ from twisted.web import server, wsgi
+ from twisted.python.threadpool import ThreadPool
+ from twisted.internet import reactor
+ thread_pool = ThreadPool()
+ thread_pool.start()
+ reactor.addSystemEventTrigger('after', 'shutdown', thread_pool.stop)
+ factory = server.Site(wsgi.WSGIResource(reactor, thread_pool, handler))
+ reactor.listenTCP(self.port, factory, interface=self.host)
+ reactor.run()
+
+
+class DieselServer(ServerAdapter):
+ """ Untested. """
+ def run(self, handler):
+ from diesel.protocols.wsgi import WSGIApplication
+ app = WSGIApplication(handler, port=self.port)
+ app.run()
+
+
+class GeventServer(ServerAdapter):
+ """ Untested. Options:
+
+ * `fast` (default: False) uses libevent's http server, but has some
+ issues: No streaming, no pipelining, no SSL.
+ * See gevent.wsgi.WSGIServer() documentation for more options.
+ """
+ def run(self, handler):
+ from gevent import wsgi, pywsgi, local
+ if not isinstance(_lctx, local.local):
+ msg = "Bottle requires gevent.monkey.patch_all() (before import)"
+ raise RuntimeError(msg)
+ if not self.options.pop('fast', None): wsgi = pywsgi
+ self.options['log'] = None if self.quiet else 'default'
+ address = (self.host, self.port)
+ wsgi.WSGIServer(address, handler, **self.options).serve_forever()
+
+
+class GunicornServer(ServerAdapter):
+ """ Untested. See http://gunicorn.org/configure.html for options. """
+ def run(self, handler):
+ from gunicorn.app.base import Application
+
+ config = {'bind': "%s:%d" % (self.host, int(self.port))}
+ config.update(self.options)
+
+ class GunicornApplication(Application):
+ def init(self, parser, opts, args):
+ return config
+
+ def load(self):
+ return handler
+
+ GunicornApplication().run()
+
+
+class EventletServer(ServerAdapter):
+ """ Untested """
+ def run(self, handler):
+ from eventlet import wsgi, listen
+ try:
+ wsgi.server(listen((self.host, self.port)), handler,
+ log_output=(not self.quiet))
+ except TypeError:
+ # Fallback, if we have old version of eventlet
+ wsgi.server(listen((self.host, self.port)), handler)
+
+
+class RocketServer(ServerAdapter):
+ """ Untested. """
+ def run(self, handler):
+ from rocket import Rocket
+ server = Rocket((self.host, self.port), 'wsgi', { 'wsgi_app' : handler })
+ server.start()
+
+
+class BjoernServer(ServerAdapter):
+ """ Fast server written in C: https://github.com/jonashaag/bjoern """
+ def run(self, handler):
+ from bjoern import run
+ run(handler, self.host, self.port)
+
+
+class AutoServer(ServerAdapter):
+ """ Untested. """
+ adapters = [WaitressServer, PasteServer, TwistedServer, CherryPyServer, WSGIRefServer]
+ def run(self, handler):
+ for sa in self.adapters:
+ try:
+ return sa(self.host, self.port, **self.options).run(handler)
+ except ImportError:
+ pass
+
+server_names = {
+ 'cgi': CGIServer,
+ 'flup': FlupFCGIServer,
+ 'wsgiref': WSGIRefServer,
+ 'waitress': WaitressServer,
+ 'cherrypy': CherryPyServer,
+ 'paste': PasteServer,
+ 'fapws3': FapwsServer,
+ 'tornado': TornadoServer,
+ 'gae': AppEngineServer,
+ 'twisted': TwistedServer,
+ 'diesel': DieselServer,
+ 'meinheld': MeinheldServer,
+ 'gunicorn': GunicornServer,
+ 'eventlet': EventletServer,
+ 'gevent': GeventServer,
+ 'rocket': RocketServer,
+ 'bjoern' : BjoernServer,
+ 'auto': AutoServer,
+}
+
+
+
+
+
+
+###############################################################################
+# Application Control ##########################################################
+###############################################################################
+
+
+def load(target, **namespace):
+ """ Import a module or fetch an object from a module.
+
+ * ``package.module`` returns `module` as a module object.
+ * ``pack.mod:name`` returns the module variable `name` from `pack.mod`.
+ * ``pack.mod:func()`` calls `pack.mod.func()` and returns the result.
+
+ The last form accepts not only function calls, but any type of
+ expression. Keyword arguments passed to this function are available as
+ local variables. Example: ``import_string('re:compile(x)', x='[a-z]')``
+ """
+ module, target = target.split(":", 1) if ':' in target else (target, None)
+ if module not in sys.modules: __import__(module)
+ if not target: return sys.modules[module]
+ if target.isalnum(): return getattr(sys.modules[module], target)
+ package_name = module.split('.')[0]
+ namespace[package_name] = sys.modules[package_name]
+ return eval('%s.%s' % (module, target), namespace)
+
+
+def load_app(target):
+ """ Load a bottle application from a module and make sure that the import
+ does not affect the current default application, but returns a separate
+ application object. See :func:`load` for the target parameter. """
+ global NORUN; NORUN, nr_old = True, NORUN
+ try:
+ tmp = default_app.push() # Create a new "default application"
+ rv = load(target) # Import the target module
+ return rv if callable(rv) else tmp
+ finally:
+ default_app.remove(tmp) # Remove the temporary added default application
+ NORUN = nr_old
+
+_debug = debug
+def run(app=None, server='wsgiref', host='127.0.0.1', port=8080,
+ interval=1, reloader=False, quiet=False, plugins=None,
+ debug=None, **kargs):
+ """ Start a server instance. This method blocks until the server terminates.
+
+ :param app: WSGI application or target string supported by
+ :func:`load_app`. (default: :func:`default_app`)
+ :param server: Server adapter to use. See :data:`server_names` keys
+ for valid names or pass a :class:`ServerAdapter` subclass.
+ (default: `wsgiref`)
+ :param host: Server address to bind to. Pass ``0.0.0.0`` to listens on
+ all interfaces including the external one. (default: 127.0.0.1)
+ :param port: Server port to bind to. Values below 1024 require root
+ privileges. (default: 8080)
+ :param reloader: Start auto-reloading server? (default: False)
+ :param interval: Auto-reloader interval in seconds (default: 1)
+ :param quiet: Suppress output to stdout and stderr? (default: False)
+ :param options: Options passed to the server adapter.
+ """
+ if NORUN: return
+ if reloader and not os.environ.get('BOTTLE_CHILD'):
+ try:
+ lockfile = None
+ fd, lockfile = tempfile.mkstemp(prefix='bottle.', suffix='.lock')
+ os.close(fd) # We only need this file to exist. We never write to it
+ while os.path.exists(lockfile):
+ args = [sys.executable] + sys.argv
+ environ = os.environ.copy()
+ environ['BOTTLE_CHILD'] = 'true'
+ environ['BOTTLE_LOCKFILE'] = lockfile
+ p = subprocess.Popen(args, env=environ)
+ while p.poll() is None: # Busy wait...
+ os.utime(lockfile, None) # I am alive!
+ time.sleep(interval)
+ if p.poll() != 3:
+ if os.path.exists(lockfile): os.unlink(lockfile)
+ sys.exit(p.poll())
+ except KeyboardInterrupt:
+ pass
+ finally:
+ if os.path.exists(lockfile):
+ os.unlink(lockfile)
+ return
+
+ try:
+ if debug is not None: _debug(debug)
+ app = app or default_app()
+ if isinstance(app, basestring):
+ app = load_app(app)
+ if not callable(app):
+ raise ValueError("Application is not callable: %r" % app)
+
+ for plugin in plugins or []:
+ app.install(plugin)
+
+ if server in server_names:
+ server = server_names.get(server)
+ if isinstance(server, basestring):
+ server = load(server)
+ if isinstance(server, type):
+ server = server(host=host, port=port, **kargs)
+ if not isinstance(server, ServerAdapter):
+ raise ValueError("Unknown or unsupported server: %r" % server)
+
+ server.quiet = server.quiet or quiet
+ if not server.quiet:
+ _stderr("Bottle v%s server starting up (using %s)...\n" % (__version__, repr(server)))
+ _stderr("Listening on http://%s:%d/\n" % (server.host, server.port))
+ _stderr("Hit Ctrl-C to quit.\n\n")
+
+ if reloader:
+ lockfile = os.environ.get('BOTTLE_LOCKFILE')
+ bgcheck = FileCheckerThread(lockfile, interval)
+ with bgcheck:
+ server.run(app)
+ if bgcheck.status == 'reload':
+ sys.exit(3)
+ else:
+ server.run(app)
+ except KeyboardInterrupt:
+ pass
+ except (SystemExit, MemoryError):
+ raise
+ except:
+ if not reloader: raise
+ if not getattr(server, 'quiet', quiet):
+ print_exc()
+ time.sleep(interval)
+ sys.exit(3)
+
+
+
+class FileCheckerThread(threading.Thread):
+ ''' Interrupt main-thread as soon as a changed module file is detected,
+ the lockfile gets deleted or gets to old. '''
+
+ def __init__(self, lockfile, interval):
+ threading.Thread.__init__(self)
+ self.lockfile, self.interval = lockfile, interval
+ #: Is one of 'reload', 'error' or 'exit'
+ self.status = None
+
+ def run(self):
+ exists = os.path.exists
+ mtime = lambda path: os.stat(path).st_mtime
+ files = dict()
+
+ for module in list(sys.modules.values()):
+ path = getattr(module, '__file__', '')
+ if path[-4:] in ('.pyo', '.pyc'): path = path[:-1]
+ if path and exists(path): files[path] = mtime(path)
+
+ while not self.status:
+ if not exists(self.lockfile)\
+ or mtime(self.lockfile) < time.time() - self.interval - 5:
+ self.status = 'error'
+ thread.interrupt_main()
+ for path, lmtime in list(files.items()):
+ if not exists(path) or mtime(path) > lmtime:
+ self.status = 'reload'
+ thread.interrupt_main()
+ break
+ time.sleep(self.interval)
+
+ def __enter__(self):
+ self.start()
+
+ def __exit__(self, exc_type, exc_val, exc_tb):
+ if not self.status: self.status = 'exit' # silent exit
+ self.join()
+ return exc_type is not None and issubclass(exc_type, KeyboardInterrupt)
+
+
+
+
+
+###############################################################################
+# Template Adapters ############################################################
+###############################################################################
+
+
+class TemplateError(HTTPError):
+ def __init__(self, message):
+ HTTPError.__init__(self, 500, message)
+
+
+class BaseTemplate(object):
+ """ Base class and minimal API for template adapters """
+ extensions = ['tpl','html','thtml','stpl']
+ settings = {} #used in prepare()
+ defaults = {} #used in render()
+
+ def __init__(self, source=None, name=None, lookup=[], encoding='utf8', **settings):
+ """ Create a new template.
+ If the source parameter (str or buffer) is missing, the name argument
+ is used to guess a template filename. Subclasses can assume that
+ self.source and/or self.filename are set. Both are strings.
+ The lookup, encoding and settings parameters are stored as instance
+ variables.
+ The lookup parameter stores a list containing directory paths.
+ The encoding parameter should be used to decode byte strings or files.
+ The settings parameter contains a dict for engine-specific settings.
+ """
+ self.name = name
+ self.source = source.read() if hasattr(source, 'read') else source
+ self.filename = source.filename if hasattr(source, 'filename') else None
+ self.lookup = [os.path.abspath(x) for x in lookup]
+ self.encoding = encoding
+ self.settings = self.settings.copy() # Copy from class variable
+ self.settings.update(settings) # Apply
+ if not self.source and self.name:
+ self.filename = self.search(self.name, self.lookup)
+ if not self.filename:
+ raise TemplateError('Template %s not found.' % repr(name))
+ if not self.source and not self.filename:
+ raise TemplateError('No template specified.')
+ self.prepare(**self.settings)
+
+ @classmethod
+ def search(cls, name, lookup=[]):
+ """ Search name in all directories specified in lookup.
+ First without, then with common extensions. Return first hit. """
+ if not lookup:
+ depr('The template lookup path list should not be empty.')
+ lookup = ['.']
+
+ if os.path.isabs(name) and os.path.isfile(name):
+ depr('Absolute template path names are deprecated.')
+ return os.path.abspath(name)
+
+ for spath in lookup:
+ spath = os.path.abspath(spath) + os.sep
+ fname = os.path.abspath(os.path.join(spath, name))
+ if not fname.startswith(spath): continue
+ if os.path.isfile(fname): return fname
+ for ext in cls.extensions:
+ if os.path.isfile('%s.%s' % (fname, ext)):
+ return '%s.%s' % (fname, ext)
+
+ @classmethod
+ def global_config(cls, key, *args):
+ ''' This reads or sets the global settings stored in class.settings. '''
+ if args:
+ cls.settings = cls.settings.copy() # Make settings local to class
+ cls.settings[key] = args[0]
+ else:
+ return cls.settings[key]
+
+ def prepare(self, **options):
+ """ Run preparations (parsing, caching, ...).
+ It should be possible to call this again to refresh a template or to
+ update settings.
+ """
+ raise NotImplementedError
+
+ def render(self, *args, **kwargs):
+ """ Render the template with the specified local variables and return
+ a single byte or unicode string. If it is a byte string, the encoding
+ must match self.encoding. This method must be thread-safe!
+ Local variables may be provided in dictionaries (args)
+ or directly, as keywords (kwargs).
+ """
+ raise NotImplementedError
+
+
+class MakoTemplate(BaseTemplate):
+ def prepare(self, **options):
+ from mako.template import Template
+ from mako.lookup import TemplateLookup
+ options.update({'input_encoding':self.encoding})
+ options.setdefault('format_exceptions', bool(DEBUG))
+ lookup = TemplateLookup(directories=self.lookup, **options)
+ if self.source:
+ self.tpl = Template(self.source, lookup=lookup, **options)
+ else:
+ self.tpl = Template(uri=self.name, filename=self.filename, lookup=lookup, **options)
+
+ def render(self, *args, **kwargs):
+ for dictarg in args: kwargs.update(dictarg)
+ _defaults = self.defaults.copy()
+ _defaults.update(kwargs)
+ return self.tpl.render(**_defaults)
+
+
+class CheetahTemplate(BaseTemplate):
+ def prepare(self, **options):
+ from Cheetah.Template import Template
+ self.context = threading.local()
+ self.context.vars = {}
+ options['searchList'] = [self.context.vars]
+ if self.source:
+ self.tpl = Template(source=self.source, **options)
+ else:
+ self.tpl = Template(file=self.filename, **options)
+
+ def render(self, *args, **kwargs):
+ for dictarg in args: kwargs.update(dictarg)
+ self.context.vars.update(self.defaults)
+ self.context.vars.update(kwargs)
+ out = str(self.tpl)
+ self.context.vars.clear()
+ return out
+
+
+class Jinja2Template(BaseTemplate):
+ def prepare(self, filters=None, tests=None, **kwargs):
+ from jinja2 import Environment, FunctionLoader
+ if 'prefix' in kwargs: # TODO: to be removed after a while
+ raise RuntimeError('The keyword argument `prefix` has been removed. '
+ 'Use the full jinja2 environment name line_statement_prefix instead.')
+ self.env = Environment(loader=FunctionLoader(self.loader), **kwargs)
+ if filters: self.env.filters.update(filters)
+ if tests: self.env.tests.update(tests)
+ if self.source:
+ self.tpl = self.env.from_string(self.source)
+ else:
+ self.tpl = self.env.get_template(self.filename)
+
+ def render(self, *args, **kwargs):
+ for dictarg in args: kwargs.update(dictarg)
+ _defaults = self.defaults.copy()
+ _defaults.update(kwargs)
+ return self.tpl.render(**_defaults)
+
+ def loader(self, name):
+ fname = self.search(name, self.lookup)
+ if not fname: return
+ with open(fname, "rb") as f:
+ return f.read().decode(self.encoding)
+
+
+class SimpleTemplate(BaseTemplate):
+
+ def prepare(self, escape_func=html_escape, noescape=False, syntax=None, **ka):
+ self.cache = {}
+ enc = self.encoding
+ self._str = lambda x: touni(x, enc)
+ self._escape = lambda x: escape_func(touni(x, enc))
+ self.syntax = syntax
+ if noescape:
+ self._str, self._escape = self._escape, self._str
+
+ @cached_property
+ def co(self):
+ return compile(self.code, self.filename or '<string>', 'exec')
+
+ @cached_property
+ def code(self):
+ source = self.source or open(self.filename, 'rb').read()
+ try:
+ source, encoding = touni(source), 'utf8'
+ except UnicodeError:
+ depr('Template encodings other than utf8 are no longer supported.')
+ source, encoding = touni(source, 'latin1'), 'latin1'
+ parser = StplParser(source, encoding=encoding, syntax=self.syntax)
+ code = parser.translate()
+ self.encoding = parser.encoding
+ return code
+
+ def _rebase(self, _env, _name=None, **kwargs):
+ if _name is None:
+ depr('Rebase function called without arguments.'
+ ' You were probably looking for {{base}}?', True)
+ _env['_rebase'] = (_name, kwargs)
+
+ def _include(self, _env, _name=None, **kwargs):
+ if _name is None:
+ depr('Rebase function called without arguments.'
+ ' You were probably looking for {{base}}?', True)
+ env = _env.copy()
+ env.update(kwargs)
+ if _name not in self.cache:
+ self.cache[_name] = self.__class__(name=_name, lookup=self.lookup)
+ return self.cache[_name].execute(env['_stdout'], env)
+
+ def execute(self, _stdout, kwargs):
+ env = self.defaults.copy()
+ env.update(kwargs)
+ env.update({'_stdout': _stdout, '_printlist': _stdout.extend,
+ 'include': functools.partial(self._include, env),
+ 'rebase': functools.partial(self._rebase, env), '_rebase': None,
+ '_str': self._str, '_escape': self._escape, 'get': env.get,
+ 'setdefault': env.setdefault, 'defined': env.__contains__ })
+ eval(self.co, env)
+ if env.get('_rebase'):
+ subtpl, rargs = env.pop('_rebase')
+ rargs['base'] = ''.join(_stdout) #copy stdout
+ del _stdout[:] # clear stdout
+ return self._include(env, subtpl, **rargs)
+ return env
+
+ def render(self, *args, **kwargs):
+ """ Render the template using keyword arguments as local variables. """
+ env = {}; stdout = []
+ for dictarg in args: env.update(dictarg)
+ env.update(kwargs)
+ self.execute(stdout, env)
+ return ''.join(stdout)
+
+
+class StplSyntaxError(TemplateError): pass
+
+
+class StplParser(object):
+ ''' Parser for stpl templates. '''
+ _re_cache = {} #: Cache for compiled re patterns
+ # This huge pile of voodoo magic splits python code into 8 different tokens.
+ # 1: All kinds of python strings (trust me, it works)
+ _re_tok = '((?m)[urbURB]?(?:\'\'(?!\')|""(?!")|\'{6}|"{6}' \
+ '|\'(?:[^\\\\\']|\\\\.)+?\'|"(?:[^\\\\"]|\\\\.)+?"' \
+ '|\'{3}(?:[^\\\\]|\\\\.|\\n)+?\'{3}' \
+ '|"{3}(?:[^\\\\]|\\\\.|\\n)+?"{3}))'
+ _re_inl = _re_tok.replace('|\\n','') # We re-use this string pattern later
+ # 2: Comments (until end of line, but not the newline itself)
+ _re_tok += '|(#.*)'
+ # 3,4: Keywords that start or continue a python block (only start of line)
+ _re_tok += '|^([ \\t]*(?:if|for|while|with|try|def|class)\\b)' \
+ '|^([ \\t]*(?:elif|else|except|finally)\\b)'
+ # 5: Our special 'end' keyword (but only if it stands alone)
+ _re_tok += '|((?:^|;)[ \\t]*end[ \\t]*(?=(?:%(block_close)s[ \\t]*)?\\r?$|;|#))'
+ # 6: A customizable end-of-code-block template token (only end of line)
+ _re_tok += '|(%(block_close)s[ \\t]*(?=$))'
+ # 7: And finally, a single newline. The 8th token is 'everything else'
+ _re_tok += '|(\\r?\\n)'
+ # Match the start tokens of code areas in a template
+ _re_split = '(?m)^[ \t]*(\\\\?)((%(line_start)s)|(%(block_start)s))(%%?)'
+ # Match inline statements (may contain python strings)
+ _re_inl = '%%(inline_start)s((?:%s|[^\'"\n]*?)+)%%(inline_end)s' % _re_inl
+
+ default_syntax = '<% %> % {{ }}'
+
+ def __init__(self, source, syntax=None, encoding='utf8'):
+ self.source, self.encoding = touni(source, encoding), encoding
+ self.set_syntax(syntax or self.default_syntax)
+ self.code_buffer, self.text_buffer = [], []
+ self.lineno, self.offset = 1, 0
+ self.indent, self.indent_mod = 0, 0
+
+ def get_syntax(self):
+ ''' Tokens as a space separated string (default: <% %> % {{ }}) '''
+ return self._syntax
+
+ def set_syntax(self, syntax):
+ self._syntax = syntax
+ self._tokens = syntax.split()
+ if not syntax in self._re_cache:
+ names = 'block_start block_close line_start inline_start inline_end'
+ etokens = map(re.escape, self._tokens)
+ pattern_vars = dict(zip(names.split(), etokens))
+ patterns = (self._re_split, self._re_tok, self._re_inl)
+ patterns = [re.compile(p%pattern_vars) for p in patterns]
+ self._re_cache[syntax] = patterns
+ self.re_split, self.re_tok, self.re_inl = self._re_cache[syntax]
+
+ syntax = property(get_syntax, set_syntax)
+
+ def translate(self):
+ if self.offset: raise RuntimeError('Parser is a one time instance.')
+ while True:
+ m = self.re_split.search(self.source[self.offset:])
+ if m:
+ text = self.source[self.offset:self.offset+m.start()]
+ self.text_buffer.append(text)
+ self.offset += m.end()
+ if m.group(1): # New escape syntax
+ line, sep, _ = self.source[self.offset:].partition('\n')
+ self.text_buffer.append(m.group(2)+m.group(5)+line+sep)
+ self.offset += len(line+sep)+1
+ continue
+ elif m.group(5): # Old escape syntax
+ depr('Escape code lines with a backslash.')
+ line, sep, _ = self.source[self.offset:].partition('\n')
+ self.text_buffer.append(m.group(2)+line+sep)
+ self.offset += len(line+sep)+1
+ continue
+ self.flush_text()
+ self.read_code(multiline=bool(m.group(4)))
+ else: break
+ self.text_buffer.append(self.source[self.offset:])
+ self.flush_text()
+ return ''.join(self.code_buffer)
+
+ def read_code(self, multiline):
+ code_line, comment, start_line = '', '', self.lineno
+ while True:
+ m = self.re_tok.search(self.source[self.offset:])
+ if not m:
+ code_line += self.source[self.offset:]
+ self.offset = len(self.source)
+ self.write_code(code_line.strip(), comment)
+ return
+ code_line += self.source[self.offset:self.offset+m.start()]
+ self.offset += m.end()
+ _str, _com, _blk1, _blk2, _end, _cend, _nl = m.groups()
+ if _str: # Python string
+ code_line += _str
+ elif _com: # Python comment (up to EOL)
+ comment = _com
+ if multiline and _com.strip().endswith(self._tokens[1]):
+ multiline = False # Allow end-of-block in comments
+ elif _blk1: # Start-block keyword (if/for/while/def/try/...)
+ code_line, self.indent_mod = _blk1, -1
+ self.indent += 1
+ elif _blk2: # Continue-block keyword (else/elif/except/...)
+ code_line, self.indent_mod = _blk2, -1
+ elif _end: # The non-standard 'end'-keyword (ends a block)
+ self.indent -= 1
+ elif _cend: # The end-code-block template token (usually '%>')
+ if multiline: multiline = False
+ else: code_line += _cend
+ else: # \n
+ self.write_code(code_line.strip(), comment)
+ self.lineno += 1
+ code_line, comment, self.indent_mod = '', '', 0
+ if not multiline:
+ break
+
+ def flush_text(self):
+ text = ''.join(self.text_buffer)
+ del self.text_buffer[:]
+ if not text: return
+ parts, pos, nl = [], 0, '\\\n'+' '*self.indent
+ for m in self.re_inl.finditer(text):
+ prefix, pos = text[pos:m.start()], m.end()
+ if prefix:
+ parts.append(nl.join(map(repr, prefix.splitlines(True))))
+ if prefix.endswith('\n'): parts[-1] += nl
+ parts.append(self.process_inline(m.group(1).strip()))
+ if pos < len(text):
+ prefix = text[pos:]
+ lines = prefix.splitlines(True)
+ if lines[-1].endswith('\\\\\n'): lines[-1] = lines[-1][:-3]
+ parts.append(nl.join(map(repr, lines)))
+ code = '_printlist((%s,))' % ', '.join(parts)
+ self.lineno += code.count('\n')+1
+ self.write_code(code)
+
+ def process_inline(self, chunk):
+ if chunk[0] == '!': return '_str(%s)' % chunk[1:]
+ return '_escape(%s)' % chunk
+
+ def write_code(self, line, comment=''):
+ line, comment = self.fix_backward_compatibility(line, comment)
+ code = ' ' * (self.indent+self.indent_mod)
+ code += line.lstrip() + comment + '\n'
+ self.code_buffer.append(code)
+
+ def fix_backward_compatibility(self, line, comment):
+ parts = line.strip().split(None, 2)
+ if parts and parts[0] in ('include', 'rebase'):
+ depr('The include and rebase keywords are functions now.')
+ if len(parts) == 1: return "_printlist([base])", comment
+ elif len(parts) == 2: return "_=%s(%r)" % tuple(parts), comment
+ else: return "_=%s(%r, %s)" % tuple(parts), comment
+ if self.lineno <= 2 and not line.strip() and 'coding' in comment:
+ m = re.match(r"#.*coding[:=]\s*([-\w.]+)", comment)
+ if m:
+ depr('PEP263 encoding strings in templates are deprecated.')
+ enc = m.group(1)
+ self.source = self.source.encode(self.encoding).decode(enc)
+ self.encoding = enc
+ return line, comment.replace('coding','coding*')
+ return line, comment
+
+
+def template(*args, **kwargs):
+ '''
+ Get a rendered template as a string iterator.
+ You can use a name, a filename or a template string as first parameter.
+ Template rendering arguments can be passed as dictionaries
+ or directly (as keyword arguments).
+ '''
+ tpl = args[0] if args else None
+ adapter = kwargs.pop('template_adapter', SimpleTemplate)
+ lookup = kwargs.pop('template_lookup', TEMPLATE_PATH)
+ tplid = (id(lookup), tpl)
+ if tplid not in TEMPLATES or DEBUG:
+ settings = kwargs.pop('template_settings', {})
+ if isinstance(tpl, adapter):
+ TEMPLATES[tplid] = tpl
+ if settings: TEMPLATES[tplid].prepare(**settings)
+ elif "\n" in tpl or "{" in tpl or "%" in tpl or '$' in tpl:
+ TEMPLATES[tplid] = adapter(source=tpl, lookup=lookup, **settings)
+ else:
+ TEMPLATES[tplid] = adapter(name=tpl, lookup=lookup, **settings)
+ if not TEMPLATES[tplid]:
+ abort(500, 'Template (%s) not found' % tpl)
+ for dictarg in args[1:]: kwargs.update(dictarg)
+ return TEMPLATES[tplid].render(kwargs)
+
+mako_template = functools.partial(template, template_adapter=MakoTemplate)
+cheetah_template = functools.partial(template, template_adapter=CheetahTemplate)
+jinja2_template = functools.partial(template, template_adapter=Jinja2Template)
+
+
+def view(tpl_name, **defaults):
+ ''' Decorator: renders a template for a handler.
+ The handler can control its behavior like that:
+
+ - return a dict of template vars to fill out the template
+ - return something other than a dict and the view decorator will not
+ process the template, but return the handler result as is.
+ This includes returning a HTTPResponse(dict) to get,
+ for instance, JSON with autojson or other castfilters.
+ '''
+ def decorator(func):
+ @functools.wraps(func)
+ def wrapper(*args, **kwargs):
+ result = func(*args, **kwargs)
+ if isinstance(result, (dict, DictMixin)):
+ tplvars = defaults.copy()
+ tplvars.update(result)
+ return template(tpl_name, **tplvars)
+ elif result is None:
+ return template(tpl_name, defaults)
+ return result
+ return wrapper
+ return decorator
+
+mako_view = functools.partial(view, template_adapter=MakoTemplate)
+cheetah_view = functools.partial(view, template_adapter=CheetahTemplate)
+jinja2_view = functools.partial(view, template_adapter=Jinja2Template)
+
+
+
+
+
+
+###############################################################################
+# Constants and Globals ########################################################
+###############################################################################
+
+
+TEMPLATE_PATH = ['./', './views/']
+TEMPLATES = {}
+DEBUG = False
+NORUN = False # If set, run() does nothing. Used by load_app()
+
+#: A dict to map HTTP status codes (e.g. 404) to phrases (e.g. 'Not Found')
+HTTP_CODES = httplib.responses
+HTTP_CODES[418] = "I'm a teapot" # RFC 2324
+HTTP_CODES[428] = "Precondition Required"
+HTTP_CODES[429] = "Too Many Requests"
+HTTP_CODES[431] = "Request Header Fields Too Large"
+HTTP_CODES[511] = "Network Authentication Required"
+_HTTP_STATUS_LINES = dict((k, '%d %s'%(k,v)) for (k,v) in HTTP_CODES.items())
+
+#: The default template used for error pages. Override with @error()
+ERROR_PAGE_TEMPLATE = """
+%%try:
+ %%from %s import DEBUG, HTTP_CODES, request, touni
+ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+ <html>
+ <head>
+ <title>Error: {{e.status}}</title>
+ <style type="text/css">
+ html {background-color: #eee; font-family: sans;}
+ body {background-color: #fff; border: 1px solid #ddd;
+ padding: 15px; margin: 15px;}
+ pre {background-color: #eee; border: 1px solid #ddd; padding: 5px;}
+ </style>
+ </head>
+ <body>
+ <h1>Error: {{e.status}}</h1>
+ <p>Sorry, the requested URL <tt>{{repr(request.url)}}</tt>
+ caused an error:</p>
+ <pre>{{e.body}}</pre>
+ %%if DEBUG and e.exception:
+ <h2>Exception:</h2>
+ <pre>{{repr(e.exception)}}</pre>
+ %%end
+ %%if DEBUG and e.traceback:
+ <h2>Traceback:</h2>
+ <pre>{{e.traceback}}</pre>
+ %%end
+ </body>
+ </html>
+%%except ImportError:
+ <b>ImportError:</b> Could not generate the error page. Please add bottle to
+ the import path.
+%%end
+""" % __name__
+
+#: A thread-safe instance of :class:`LocalRequest`. If accessed from within a
+#: request callback, this instance always refers to the *current* request
+#: (even on a multithreaded server).
+request = LocalRequest()
+
+#: A thread-safe instance of :class:`LocalResponse`. It is used to change the
+#: HTTP response for the *current* request.
+response = LocalResponse()
+
+#: A thread-safe namespace. Not used by Bottle.
+local = threading.local()
+
+# Initialize app stack (create first empty Bottle app)
+# BC: 0.6.4 and needed for run()
+app = default_app = AppStack()
+app.push()
+
+#: A virtual package that redirects import statements.
+#: Example: ``import bottle.ext.sqlite`` actually imports `bottle_sqlite`.
+ext = _ImportRedirect('bottle.ext' if __name__ == '__main__' else __name__+".ext", 'bottle_%s').module
+
+if __name__ == '__main__':
+ opt, args, parser = _cmd_options, _cmd_args, _cmd_parser
+ if opt.version:
+ _stdout('Bottle %s\n'%__version__)
+ sys.exit(0)
+ if not args:
+ parser.print_help()
+ _stderr('\nError: No application specified.\n')
+ sys.exit(1)
+
+ sys.path.insert(0, '.')
+ sys.modules.setdefault('bottle', sys.modules['__main__'])
+
+ host, port = (opt.bind or 'localhost'), 8080
+ if ':' in host and host.rfind(']') < host.rfind(':'):
+ host, port = host.rsplit(':', 1)
+ host = host.strip('[]')
+
+ run(args[0], host=host, port=int(port), server=opt.server,
+ reloader=opt.reload, plugins=opt.plugin, debug=opt.debug)
+
+
+
+
+# THE END
diff --git a/frontend/imdither/imdither.html b/frontend/imdither/imdither.html
new file mode 100755
index 0000000..1aee616
--- /dev/null
+++ b/frontend/imdither/imdither.html
@@ -0,0 +1,291 @@
+<html>
+<head>
+<link href='http://fonts.googleapis.com/css?family=Orienta|Roboto' rel='stylesheet' type='text/css'>
+<style type="text/css">
+body{
+font-family: 'Roboto', sans-serif;
+}
+.title{
+ font-family: 'Orienta', sans-serif;
+ font-size:3em;
+ text-shadow: 2px 4px 3px rgba(153,153,153,0.3);
+ color: #1C1C1C;
+}
+#sample
+ {
+ border-style: outset;
+ border-color: gray;
+ border-width: 5px;
+ }
+table.dithertable {
+ border-width: 5px;
+ border-spacing: 3px;
+ border-style: outset;
+ border-color: gray;
+ border-collapse: separate;
+ background-color: rgb(250, 240, 230);
+}
+table.dithertable th {
+ border-width: medium;
+ padding: 2px;
+ border-style: ridge;
+ border-color: gray;
+ background-color: rgb(255, 255, 240);
+ -moz-border-radius: ;
+}
+table.dithertable td {
+ border-width: medium;
+ padding: 2px;
+ border-style: ridge;
+ border-color: gray;
+ background-color: rgb(255, 255, 240);
+ -moz-border-radius: ;
+ background-color:white;
+}
+.dithers
+ {
+ width:10px;
+ height:10px;
+ cursor:pointer;
+ }
+#dithertable
+ {
+ width:50%;
+ display:inline-block;
+ }
+tr
+ {
+ height:40px;
+ }
+.dontshowme{
+ display: none;
+
+}
+</style>
+
+</head>
+<body>
+<div id="imdither">
+ <img src="img/logo.png"/>
+</div>
+
+<div id="step1">
+Step 1: Choose your dither
+</div>
+<table class="dithertable" id="dithertable">
+<tr>
+<td class='dithers' style='background-image:url(dithers/1.png)' id='dither_1'>&nbsp;</td>
+<td class='dithers' style='background-image:url(dithers/10.png)' id='dither_10'>&nbsp;</td>
+<td class='dithers' style='background-image:url(dithers/11.png)' id='dither_11'></td>
+<td class='dithers' style='background-image:url(dithers/12.png)' id='dither_12'></td>
+<td class='dithers' style='background-image:url(dithers/13.png)' id='dither_13'></td>
+<td class='dithers' style='background-image:url(dithers/14.png)' id='dither_14'></td>
+<td class='dithers' style='background-image:url(dithers/15.png)' id='dither_15'></td>
+<td class='dithers' style='background-image:url(dithers/16.png)' id='dither_16'></td>
+<td class='dithers' style='background-image:url(dithers/17.png)' id='dither_17'></td>
+<td class='dithers' style='background-image:url(dithers/18.png)' id='dither_18'></td>
+<td class='dithers' style='background-image:url(dithers/19.png)' id='dither_19'></td>
+<td class='dithers' style='background-image:url(dithers/2.png)' id='dither_2'></td>
+<td class='dithers' style='background-image:url(dithers/20.png)' id='dither_20'></td>
+<td class='dithers' style='background-image:url(dithers/21.png)' id='dither_21'></td>
+<td class='dithers' style='background-image:url(dithers/22.png)' id='dither_22'></td>
+<td class='dithers' style='background-image:url(dithers/23.png)' id='dither_23'></td>
+<td class='dithers' style='background-image:url(dithers/24.png)' id='dither_24'></td>
+<td class='dithers' style='background-image:url(dithers/25.png)' id='dither_25'></td>
+<td class='dithers' style='background-image:url(dithers/26.png)' id='dither_26'></td>
+<td class='dithers' style='background-image:url(dithers/27.png)' id='dither_27'></td>
+<td class='dithers' style='background-image:url(dithers/28.png)' id='dither_28'></td>
+<td class='dithers' style='background-image:url(dithers/29.png)' id='dither_29'></td>
+<td class='dithers' style='background-image:url(dithers/3.png)' id='dither_3'></td>
+<td class='dithers' style='background-image:url(dithers/30.png)' id='dither_30'></td>
+</tr>
+<tr>
+<td class='dithers' style='background-image:url(dithers/31.png)' id='dither_31'></td>
+<td class='dithers' style='background-image:url(dithers/32.png)' id='dither_32'></td>
+<td class='dithers' style='background-image:url(dithers/33.png)' id='dither_33'></td>
+<td class='dithers' style='background-image:url(dithers/34.png)' id='dither_34'></td>
+<td class='dithers' style='background-image:url(dithers/35.png)' id='dither_35'></td>
+<td class='dithers' style='background-image:url(dithers/36.png)' id='dither_36'></td>
+<td class='dithers' style='background-image:url(dithers/37.png)' id='dither_37'></td>
+<td class='dithers' style='background-image:url(dithers/38.png)' id='dither_38'></td>
+<td class='dithers' style='background-image:url(dithers/39.png)' id='dither_39'></td>
+<td class='dithers' style='background-image:url(dithers/4.png)' id='dither_4'></td>
+<td class='dithers' style='background-image:url(dithers/40.png)' id='dither_40'></td>
+<td class='dithers' style='background-image:url(dithers/41.png)' id='dither_41'></td>
+<td class='dithers' style='background-image:url(dithers/42.png)' id='dither_42'></td>
+<td class='dithers' style='background-image:url(dithers/43.png)' id='dither_43'></td>
+<td class='dithers' style='background-image:url(dithers/44.png)' id='dither_44'></td>
+<td class='dithers' style='background-image:url(dithers/45.png)' id='dither_45'></td>
+<td class='dithers' style='background-image:url(dithers/46.png)' id='dither_46'></td>
+<td class='dithers' style='background-image:url(dithers/47.png)' id='dither_47'></td>
+<td class='dithers' style='background-image:url(dithers/48.png)' id='dither_48'></td>
+<td class='dithers' style='background-image:url(dithers/49.png)' id='dither_49'></td>
+<td class='dithers' style='background-image:url(dithers/5.png)' id='dither_5'></td>
+<td class='dithers' style='background-image:url(dithers/50.png)' id='dither_50'></td>
+<td class='dithers' style='background-image:url(dithers/51.png)' id='dither_51'></td>
+<td class='dithers' style='background-image:url(dithers/52.png)' id='dither_52'></td>
+</tr>
+<tr>
+
+<td class='dithers' style='background-image:url(dithers/53.png)' id='dither_53'></td>
+<td class='dithers' style='background-image:url(dithers/54.png)' id='dither_54'></td>
+<td class='dithers' style='background-image:url(dithers/55.png)' id='dither_55'></td>
+<td class='dithers' style='background-image:url(dithers/56.png)' id='dither_56'></td>
+<td class='dithers' style='background-image:url(dithers/57.png)' id='dither_57'></td>
+<td class='dithers' style='background-image:url(dithers/58.png)' id='dither_58'></td>
+<td class='dithers' style='background-image:url(dithers/59.png)' id='dither_59'></td>
+<td class='dithers' style='background-image:url(dithers/6.png)' id='dither_6'></td>
+<td class='dithers' style='background-image:url(dithers/60.png)' id='dither_60'></td>
+
+<td class='dithers' style='background-image:url(dithers/61.png)' id='dither_61'></td>
+<td class='dithers' style='background-image:url(dithers/62.png)' id='dither_62'></td>
+<td class='dithers' style='background-image:url(dithers/63.png)' id='dither_63'></td>
+<td class='dithers' style='background-image:url(dithers/64.png)' id='dither_64'></td>
+<td class='dithers' style='background-image:url(dithers/65.png)' id='dither_65'></td>
+<td class='dithers' style='background-image:url(dithers/66.png)' id='dither_66'></td>
+<td class='dithers' style='background-image:url(dithers/67.png)' id='dither_67'></td>
+<td class='dithers' style='background-image:url(dithers/68.png)' id='dither_68'></td>
+<td class='dithers' style='background-image:url(dithers/69.png)' id='dither_69'></td>
+<td class='dithers' style='background-image:url(dithers/7.png)' id='dither_7'></td>
+<td class='dithers' style='background-image:url(dithers/70.png)' id='dither_70'></td>
+<td class='dithers' style='background-image:url(dithers/71.png)' id='dither_71'></td>
+<td class='dithers' style='background-image:url(dithers/72.png)' id='dither_72'></td>
+<td class='dithers' style='background-image:url(dithers/73.png)' id='dither_73'></td>
+<td class='dithers' style='background-image:url(dithers/74.png)' id='dither_74'></td>
+</tr>
+<tr>
+<td class='dithers' style='background-image:url(dithers/75.png)' id='dither_75'></td>
+<td class='dithers' style='background-image:url(dithers/76.png)' id='dither_76'></td>
+<td class='dithers' style='background-image:url(dithers/77.png)' id='dither_77'></td>
+<td class='dithers' style='background-image:url(dithers/78.png)' id='dither_78'></td>
+<td class='dithers' style='background-image:url(dithers/79.png)' id='dither_79'></td>
+<td class='dithers' style='background-image:url(dithers/8.png)' id='dither_8'></td>
+<td class='dithers' style='background-image:url(dithers/80.png)' id='dither_80'></td>
+<td class='dithers' style='background-image:url(dithers/81.png)' id='dither_81'></td>
+<td class='dithers' style='background-image:url(dithers/82.png)' id='dither_82'></td>
+<td class='dithers' style='background-image:url(dithers/83.png)' id='dither_83'></td>
+<td class='dithers' style='background-image:url(dithers/84.png)' id='dither_84'></td>
+<td class='dithers' style='background-image:url(dithers/85.png)' id='dither_85'></td>
+<td class='dithers' style='background-image:url(dithers/86.png)' id='dither_86'></td>
+<td class='dithers' style='background-image:url(dithers/87.png)' id='dither_87'></td>
+<td class='dithers' style='background-image:url(dithers/88.png)' id='dither_88'></td>
+<td class='dithers' style='background-image:url(dithers/89.png)' id='dither_89'></td>
+<td class='dithers' style='background-image:url(dithers/9.png)' id='dither_9'></td>
+<td class='dithers' style='background-image:url(dithers/90.png)' id='dither_90'></td>
+<td class='dithers' style='background-image:url(dithers/91.png)' id='dither_91'></td>
+<td class='dithers' style='background-image:url(dithers/92.png)' id='dither_92'></td>
+<td class='dithers' style='background-image:url(dithers/93.png)' id='dither_93'></td>
+<td class='dithers' style='background-image:url(dithers/94.png)' id='dither_94'></td>
+<td class='dithers' style='background-image:url(dithers/95.png)' id='dither_95'></td>
+<td class='dithers' style='background-image:url(dithers/96.png)' id='dither_96'></td>
+
+</tr>
+<tr>
+<td class='dithers' style='background-image:url(dithers/a0.png)' id='dither_a0'></td>
+<td class='dithers' style='background-image:url(dithers/a1.png)' id='dither_a1'></td>
+<td class='dithers' style='background-image:url(dithers/a10.png)' id='dither_a10'></td>
+<td class='dithers' style='background-image:url(dithers/a11.png)' id='dither_a11'></td>
+<td class='dithers' style='background-image:url(dithers/a12.png)' id='dither_a12'></td>
+<td class='dithers' style='background-image:url(dithers/a13.png)' id='dither_a13'></td>
+<td class='dithers' style='background-image:url(dithers/a14.png)' id='dither_a14'></td>
+<td class='dithers' style='background-image:url(dithers/a15.png)' id='dither_a15'></td>
+<td class='dithers' style='background-image:url(dithers/a16.png)' id='dither_a16'></td>
+<td class='dithers' style='background-image:url(dithers/a17.png)' id='dither_a17'></td>
+<td class='dithers' style='background-image:url(dithers/a18.png)' id='dither_a18'></td>
+<td class='dithers' style='background-image:url(dithers/a19.png)' id='dither_a19'></td>
+<td class='dithers' style='background-image:url(dithers/a2.png)' id='dither_a2'></td>
+<td class='dithers' style='background-image:url(dithers/a20.png)' id='dither_a20'></td>
+<td class='dithers' style='background-image:url(dithers/a21.png)' id='dither_a21'></td>
+<td class='dithers' style='background-image:url(dithers/a22.png)' id='dither_a22'></td>
+<td class='dithers' style='background-image:url(dithers/a23.png)' id='dither_a23'></td>
+<td class='dithers' style='background-image:url(dithers/a24.png)' id='dither_a24'></td>
+<td class='dithers' style='background-image:url(dithers/a25.png)' id='dither_a25'></td>
+<td class='dithers' style='background-image:url(dithers/a26.png)' id='dither_a26'></td>
+<td class='dithers' style='background-image:url(dithers/a27.png)' id='dither_a27'></td>
+<td class='dithers' style='background-image:url(dithers/a28.png)' id='dither_a28'></td>
+<td class='dithers' style='background-image:url(dithers/a29.png)' id='dither_a29'></td>
+<td class='dithers' style='background-image:url(dithers/a3.png)' id='dither_a3'></td>
+
+</tr>
+<tr>
+<td class='dithers' style='background-image:url(dithers/a30.png)' id='dither_a30'></td>
+<td class='dithers' style='background-image:url(dithers/a31.png)' id='dither_a31'></td>
+<td class='dithers' style='background-image:url(dithers/a32.png)' id='dither_a32'></td>
+<td class='dithers' style='background-image:url(dithers/a33.png)' id='dither_a33'></td>
+<td class='dithers' style='background-image:url(dithers/a34.png)' id='dither_a34'></td>
+<td class='dithers' style='background-image:url(dithers/a35.png)' id='dither_a35'></td>
+<td class='dithers' style='background-image:url(dithers/a36.png)' id='dither_a36'></td>
+<td class='dithers' style='background-image:url(dithers/a37.png)' id='dither_a37'></td>
+<td class='dithers' style='background-image:url(dithers/a38.png)' id='dither_a38'></td>
+<td class='dithers' style='background-image:url(dithers/a39.png)' id='dither_a39'></td>
+<td class='dithers' style='background-image:url(dithers/a4.png)' id='dither_a4'></td>
+<td class='dithers' style='background-image:url(dithers/a40.png)' id='dither_a40'></td>
+<td class='dithers' style='background-image:url(dithers/a41.png)' id='dither_a41'></td>
+<td class='dithers' style='background-image:url(dithers/a5.png)' id='dither_a5'></td>
+<td class='dithers' style='background-image:url(dithers/a6.png)' id='dither_a6'></td>
+<td class='dithers' style='background-image:url(dithers/a7.png)' id='dither_a7'></td>
+<td class='dithers' style='background-image:url(dithers/a8.png)' id='dither_a8'></td>
+<td class='dithers' style='background-image:url(dithers/a9.png)' id='dither_a9'></td>
+</tr>
+</table>
+
+
+<div id="sample">&nbsp;
+</div>
+
+</br>
+<span class="parameter">Image to overlay:</span><input type="text/css" class="image_input" value="Enter an image url here"></input>
+<span class="parameter">Or Upload</span><input type="text/css" class="image_input" value="Enter an image url here"></input>
+</br><span class="uploadError dontshowme unsubmitted"></span>
+<button id="submit">SUBMIT</button>
+
+<div class="processing dontshowme"></div>
+<div class="result dontshowme"></div>
+
+<script type="text/javascript" src="jquery.min.js"></script>
+<script type="text/javascript">
+function makesample(){
+theheight = $('#dithertable').height()
+$('#sample').css({'width':"20%",'height':theheight,'display':'inline-block'})
+}
+makesample()
+var preview_box = $("#sample")
+$('.dithers').click(function(){
+ $('.dithers').css({'border-color':'gray','-moz-box-shadow': 'none','-webkit-box-shadow':'none','box-shadow': 'none'});
+ $(this).css({'border-color':'#EE0000','-moz-box-shadow': '0px 0px 9px 3px firebrick','-webkit-box-shadow':'0px 0px 9px 3px firebrick','box-shadow': '0px 0px 9px 3px firebrick'})
+ var dither = $(this).css("background-image");
+ preview_box.css("background-image", dither);
+ });
+$(".image_input").clicked = false;
+$(".image_input").click(function(){
+ if(! $(this).clicked){
+ $(this).attr("value", "");
+ $(this).clicked = true;
+ }
+})
+$("#submit").click(function(){
+ if (! $(".uploadError").hasClass("dontshowme") ){
+ $(".uploadError").addClass("dontshowme")
+ }
+
+ var image_url = $(".image_input").val()
+ if (! image_url || image_url == "Enter an image url here"){
+ uploadError = $(".uploadError")
+ uploadError.html("you didn't provide an image url")
+ uploadError.removeClass("dontshowme")
+ return false;
+ }
+ $.ajax({
+ type: "POST",
+ url: "process",
+ data: { url: image_url }
+ }).done(function( msg ) {
+ alert( "Data Saved: " + msg );
+ });
+})
+</script>
+
+
+</body>
+</html>
+
diff --git a/frontend/imdither/img/logo.png b/frontend/imdither/img/logo.png
new file mode 100755
index 0000000..64432e3
--- /dev/null
+++ b/frontend/imdither/img/logo.png
Binary files differ
diff --git a/frontend/imdither/jquery.min.js b/frontend/imdither/jquery.min.js
new file mode 100755
index 0000000..b2ac174
--- /dev/null
+++ b/frontend/imdither/jquery.min.js
@@ -0,0 +1,18 @@
+/*!
+ * jQuery JavaScript Library v1.6.1
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu May 12 15:04:36 2011 -0400
+ */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write("<!doctype><html><body></body></html>");b=cl.createElement(a),cl.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ck)}cj[a]=d}return cj[a]}function cu(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function ct(){cq=b}function cs(){setTimeout(ct,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bF.test(a)?d(a,e):b_(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bU,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bQ),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bD(a,b,c){var d=b==="width"?bx:by,e=b==="width"?a.offsetWidth:a.offsetHeight;if(c==="border")return e;f.each(d,function(){c||(e-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?e+=parseFloat(f.css(a,"margin"+this))||0:e-=parseFloat(f.css(a,"border"+this+"Width"))||0});return e}function bn(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bm(a){f.nodeName(a,"input")?bl(a):a.getElementsByTagName&&f.grep(a.getElementsByTagName("input"),bl)}function bl(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bk(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bj(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bi(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bh(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function X(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(S.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function W(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function O(a,b){return(a&&a!=="*"?a+".":"")+b.replace(A,"`").replace(B,"&")}function N(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(y,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function L(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function F(){return!0}function E(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.1",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:E?function(a){return a==null?"":E.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?C.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(F)return F.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=D.call(arguments,2),g=function(){return a.apply(c,f.concat(D.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){G["[object "+b+"]"]=b.toLowerCase()}),x=e.uaMatch(w),x.browser&&(e.browser[x.browser]=!0,e.browser.version=x.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?z=function(){c.removeEventListener("DOMContentLoaded",z,!1),e.ready()}:c.attachEvent&&(z=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",z),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g](h)}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};f=c.createElement("select"),g=f.appendChild(c.createElement("option")),h=a.getElementsByTagName("input")[0],j={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},h.checked=!0,j.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,j.optDisabled=!g.disabled;try{delete a.test}catch(s){j.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function b(){j.noCloneEvent=!1,a.detachEvent("onclick",b)}),a.cloneNode(!0).fireEvent("onclick")),h=c.createElement("input"),h.value="t",h.setAttribute("type","radio"),j.radioValue=h.value==="t",h.setAttribute("checked","checked"),a.appendChild(h),k=c.createDocumentFragment(),k.appendChild(a.firstChild),j.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",l=c.createElement("body"),m={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(q in m)l.style[q]=m[q];l.appendChild(a),b.insertBefore(l,b.firstChild),j.appendChecked=h.checked,j.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,j.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",j.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",n=a.getElementsByTagName("td"),r=n[0].offsetHeight===0,n[0].style.display="",n[1].style.display="none",j.reliableHiddenOffsets=r&&n[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(i=c.createElement("div"),i.style.width="0",i.style.marginRight="0",a.appendChild(i),j.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(i,null)||{marginRight:0}).marginRight,10)||0)===0),l.innerHTML="",b.removeChild(l);if(a.attachEvent)for(q in{submit:1,change:1,focusin:1})p="on"+q,r=p in a,r||(a.setAttribute(p,"return;"),r=typeof a[p]=="function"),j[q+"Bubbles"]=r;return j}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/\:/,v,w;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.addClass(a.call(this,b,c.attr("class")||""))});if(a&&typeof a=="string"){var b=(a||"").split(o);for(var c=0,d=this.length;c<d;c++){var e=this[c];if(e.nodeType===1)if(!e.className)e.className=a;else{var g=" "+e.className+" ",h=e.className;for(var i=0,j=b.length;i<j;i++)g.indexOf(" "+b[i]+" ")<0&&(h+=" "+b[i]);e.className=f.trim(h)}}}return this},removeClass:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.removeClass(a.call(this,b,c.attr("class")))});if(a&&typeof a=="string"||a===b){var c=(a||"").split(o);for(var d=0,e=this.length;d<e;d++){var g=this[d];if(g.nodeType===1&&g.className)if(a){var h=(" "+g.className+" ").replace(n," ");for(var i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){var d=f(this);d.toggleClass(a.call(this,c,d.attr("class"),b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c],i||(!t.test(c)||typeof d!="boolean"&&d!==b&&d.toLowerCase()!==c.toLowerCase()?v&&(f.nodeName(a,"form")||u.test(c))&&(i=v):i=w);if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return a[f.propFix[c]||c]?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=b),a.setAttribute(c,c.toLowerCase()));return c}},f.attrHooks.value={get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return a.value},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=Object.prototype.hasOwnProperty,y=/\.(.*)$/,z=/^(?:textarea|input|select)$/i,A=/\./g,B=/ /g,C=/[^\w\s.|`]/g,D=function(a){return a.replace(C,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=E;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=E);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),D).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem
+)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,O(a.origType,a.selector),f.extend({},a,{handler:N,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,O(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?F:E):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=F;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=F;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=F,this.stopPropagation()},isDefaultPrevented:E,isPropagationStopped:E,isImmediatePropagationStopped:E};var G=function(a){var b=a.relatedTarget;a.type=a.data;try{if(b&&b!==c&&!b.parentNode)return;while(b&&b!==this)b=b.parentNode;b!==this&&f.event.handle.apply(this,arguments)}catch(d){}},H=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?H:G,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?H:G)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&L("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&L("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var I,J=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},K=function(c){var d=c.target,e,g;if(!!z.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=J(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:K,beforedeactivate:K,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&K.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&K.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",J(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in I)f.event.add(this,c+".specialChange",I[c]);return z.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return z.test(this.nodeName)}},I=f.event.special.change.filters,I.focus=I.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var M={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||E,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=y.exec(h),k="",j&&(k=j[0],h=h.replace(y,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,M[h]?(a.push(M[h]+k),h=h+k):h=(M[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+O(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+O(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var P=/Until$/,Q=/^(?:parents|prevUntil|prevAll)/,R=/,/,S=/^.[^:#\[\.,]*$/,T=Array.prototype.slice,U=f.expr.match.POS,V={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(X(this,a,!1),"not",a)},filter:function(a){return this.pushStack(X(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=U.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=U.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(W(c[0])||W(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=T.call(arguments);P.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!V[a]?f.unique(e):e,(this.length>1||R.test(d))&&Q.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y=/ jQuery\d+="(?:\d+|null)"/g,Z=/^\s+/,$=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,_=/<([\w:]+)/,ba=/<tbody/i,bb=/<|&#?\w+;/,bc=/<(?:script|object|embed|option|style)/i,bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Y,""):null;if(typeof a=="string"&&!bc.test(a)&&(f.support.leadingWhitespace||!Z.test(a))&&!bg[(_.exec(a)||["",""])[1].toLowerCase()]){a=a.replace($,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bh(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bn)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i=b&&b[0]?b[0].ownerDocument||b[0]:c;a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!bc.test(a[0])&&(f.support.checkClone||!bd.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bj(a,d),e=bk(a),g=bk(d);for(h=0;e[h];++h)bj(e[h],g[h])}if(b){bi(a,d);if(c){e=bk(a),g=bk(d);for(h=0;e[h];++h)bi(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||
+b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bb.test(k))k=b.createTextNode(k);else{k=k.replace($,"<$1></$2>");var l=(_.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=ba.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Z.test(k)&&o.insertBefore(b.createTextNode(Z.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bm(k[i]);else bm(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bo=/alpha\([^)]*\)/i,bp=/opacity=([^)]*)/,bq=/-([a-z])/ig,br=/([A-Z]|^ms)/g,bs=/^-?\d+(?:px)?$/i,bt=/^-?\d/,bu=/^[+\-]=/,bv=/[^+\-\.\de]+/g,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB,bC=function(a,b){return b.toUpperCase()};f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0,widows:!0,orphans:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bu.test(d)&&(d=+d.replace(bv,"")+parseFloat(f.css(a,c))),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bq,bC)}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){a.offsetWidth!==0?e=bD(a,b,d):f.swap(a,bw,function(){e=bD(a,b,d)});if(e<=0){e=bz(a,b,b),e==="0px"&&bB&&(e=bB(a,b,b));if(e!=null)return e===""||e==="auto"?"0px":e}if(e<0||e==null){e=a.style[b];return e===""||e==="auto"?"0px":e}return typeof e=="string"?e:e+"px"}},set:function(a,b){if(!bs.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bp.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bo.test(g)?g.replace(bo,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,c){var d,e,g;c=c.replace(br,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bs.test(d)&&bt.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bE=/%20/g,bF=/\[\]$/,bG=/\r?\n/g,bH=/#.*$/,bI=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bJ=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bK=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bL=/^(?:GET|HEAD)$/,bM=/^\/\//,bN=/\?/,bO=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bP=/^(?:select|textarea)/i,bQ=/\s+/,bR=/([?&])_=[^&]*/,bS=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bT=f.fn.load,bU={},bV={},bW,bX;try{bW=e.href}catch(bY){bW=c.createElement("a"),bW.href="",bW=bW.href}bX=bS.exec(bW.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bT)return bT.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bO,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bP.test(this.nodeName)||bJ.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bG,"\r\n")}}):{name:b.name,value:c.replace(bG,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bW,isLocal:bK.test(bX[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bZ(bU),ajaxTransport:bZ(bV),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?ca(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=cb(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bI.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bH,"").replace(bM,bX[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bQ),d.crossDomain==null&&(r=bS.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bX[1]&&r[2]==bX[2]&&(r[3]||(r[1]==="http:"?80:443))==(bX[3]||(bX[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bU,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bL.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bN.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bR,"$1_="+x);d.url=y+(y===d.url?(bN.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bV,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bE,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq,cr=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cv(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cm.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=cn.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this),f.isFunction(d.old)&&d.old.call(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function h(a){return d.step(a)}var d=this,e=f.fx,g;this.startTime=cq||cs(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,h.elem=this.elem,h()&&f.timers.push(h)&&!co&&(cr?(co=1,g=function(){co&&(cr(g),e.tick())},cr(g)):co=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cq||cs(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file
diff --git a/frontend/imdither/makeDither.py b/frontend/imdither/makeDither.py
new file mode 100755
index 0000000..57775fb
--- /dev/null
+++ b/frontend/imdither/makeDither.py
@@ -0,0 +1,72 @@
+#!/usr/bin/python2.7
+
+import cgi
+import pbutils
+from os import getpid, path
+from subprocess import call
+
+MAIN_DIRECTORY = ""
+BIN_CONVERT = "convert"
+BIN_IDENTIFY = "identify"
+BIN_COMPOSITE = "composite"
+
+class Dither:
+ def __init__(self,
+ input_file_path,
+ dither_file="1.png",
+ username="",
+ ):
+
+ self.nametag = "imDither";
+ if username:
+ self.username = username
+ else:
+ self.username = "";
+
+ self.pid = str(getpid())
+ self.dither_file = dither_file;
+ self.original_file = input_file_path;
+ self.MAX_NAME_LENGTH = 10;
+
+ self.image_format = self.original_file.split(".")[-1]
+ try:
+ self.dimensions = pbutils.image_dimensions_and_test(self.original_file);
+ except Exception as E:
+ pbutils.error("Corrupt image")
+ self.canvas_file = self.pid+"blank_canvas.png";
+ self.makeCanvas();
+ self.mask_file = self.pid+"mask_file"+"."+self.image_format;
+ self.makeMask();
+ self.result_file = self.makeResultFilename();
+ self.fuseMask();
+
+ def makeResultFilename(self):
+ file_base, extension = path.splitext(self.original_file)
+ if len(file_base) > self.MAX_NAME_LENGTH:
+ file_base = file_base[0:self.MAX_NAME_LENGTH]
+ return "%s_%s_%s%s%s" % (file_base, self.username, self.nametag, pbutils.now(), extension)
+
+ #first step
+ def makeCanvas(self):
+ call([BIN_CONVERT,"-size",self.dimensions[0]+"x"+self.dimensions[1],"canvas:transparent", self.canvas_file])
+
+ #second step use the Canvas as a background
+ def makeMask(self):
+ #tile the dither pattern on the canvas
+ call([BIN_COMPOSITE,"-tile", self.dither_file, self.canvas_file, self.mask_file])
+
+ #fuse the tiled file to create a mask
+ #convert thebg.gif -compose Dst_In null: thefile.gif -matte -layers composite new.gif
+ call([BIN_CONVERT, self.mask_file, "-compose", "Dst_In", "null:", self.original_file, "-matte", "-layers", "composite", self.mask_file])
+
+ #cleanup
+ call(["rm", self.canvas_file])
+
+ #third step
+ def fuseMask(self, fuse_mode="Pin_Light"):
+ call([BIN_CONVERT, self.mask_file, "null:", self.original_file, "-matte", "-compose", fuse_mode, "-layers", "composite", self.result_file])
+ call(["rm", self.mask_file])
+
+
+if __name__ == "__main__":
+ dither = Dither("./test.gif");
diff --git a/frontend/imdither/pbutils.py b/frontend/imdither/pbutils.py
new file mode 100755
index 0000000..bcc188d
--- /dev/null
+++ b/frontend/imdither/pbutils.py
@@ -0,0 +1,238 @@
+#!/usr/bin/python
+import time
+import re
+from urllib2 import Request, urlopen
+from subprocess import check_output, call, Popen, PIPE
+from os import stat, path
+from random import randint
+from hashlib import sha1
+import mimetypes
+import s3
+import MySQLdb
+import logging
+
+
+ACCEPTABLE_FILE_TYPES = [".png", ".jpg", ".gif", ".jpeg"]
+MAX_DOWNLOAD_SIZE = 1024 * 1024 * 1.2
+
+AWS_ACCESS_KEY_ID = "SECRETID"
+AWS_SECRET_ACCESS_KEY = "SECRETACCESSKEY"
+BUCKET_NAME = "i.asdf.us"
+
+MYSQLUSER = "secretuser"
+MYSQLDB = "secretdb"
+MYSQLPW = "secretpw"
+
+BASE_DIR = "/var/www/asdf.us/im/"
+IDENTIFY = "/usr/bin/identify"
+CONVERT = "/usr/bin/convert"
+
+def now():
+ return str(int(time.time()))
+
+class pb_log:
+ " creates a log for each script "
+ def __init__(self, logname):
+ self.logger = logging.getLogger(logname)
+ hdlr = logging.FileHandler("/var/tmp/photoblaster/"+logname+".log")
+ formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+ hdlr.setFormatter(formatter)
+ self.logger.addHandler(hdlr)
+ self.logger.setLevel(logging.WARNING)
+ def log(self, message):
+ self.logger.warning(message)
+
+
+def error(s):
+ " returns an error and exits the program "
+ print("ERROR: "+s)
+ exit(1)
+
+def hexdir(filename):
+ " creates a two-letter directory name "
+ return sha1(filename.encode()).hexdigest()[:2]
+
+def image_dimensions_and_test(filename):
+ ident = Popen([IDENTIFY, filename], stdout=PIPE).communicate()[0]
+ partz = ident.split(" ")
+ filetype = "."+partz[1]
+ size = partz[6]
+ if filetype.lower() not in ACCEPTABLE_FILE_TYPES:
+ error("file was not an image")
+ return partz[2].split("x")
+
+#ok is this a little better? yes, add a dot to filetype since ACCEPTABLE_FILE_TYPES have one
+
+def image_dimensions(filename):
+ ident = Popen([IDENTIFY, filename], stdout=PIPE).communicate()[0]
+ partz = ident.split(" ")
+ return partz[2].split("x")
+
+
+def process_form(form, param_list):
+ """ converts form returned from form submission into an object with values
+ takes the form and splitted param param_list as args """
+ return dict([(key, form[key].value() or "" ) for key in param_list])
+
+
+def sanitize(s):
+ " sanitizes potential shell commands out of form entries "
+ return re.sub("[^a-zA-Z0-9]", '', s)
+
+
+def is_number(s):
+ " makes sure that the number entries are numbers, not malicious strings "
+ try:
+ float(s)
+ if s.lower() == "nan": raise ValueError
+ return True
+ except (ValueError, TypeError):
+ error("One of the number values entered is not a number.")
+ return False
+
+
+def check_color(colorparam, index, defaultcolors):
+ " makes sure that there aren't malicious strings in the colorparam "
+ if not colorparam:
+ return defaultcolors[index]
+ elif colorparam[0] != "#" and "rgb" not in colorparam:
+ return sanitize(colorparam)
+ else:
+ return colorparam
+
+
+class gifCheck:
+ " checks to see if file is a gif "
+
+ def __init__(self, f):
+ self.f = f
+ frames = check_output([IDENTIFY, f]).decode().split('\n')
+ self.frames = frames.remove('')
+
+ def check_anim(self):
+ return len(self.frames) > 1
+
+ def pick_frame(self):
+ if self.check_anim() is True:
+ i = randint(0, (len(self.frames) - 1))
+ choice = self.f + "[" + str(i) + "]"
+ return choice
+ else:
+ return self.f
+
+ def collapse(self):
+ choice = self.pick_frame()
+ call([CONVERT, choice, self.f])
+
+
+def pb_s3(hexdir,filename):
+ " sends a file to s3 and returns the new url "
+ s3object = '/'.join(('im',hexdir,filename))
+ f = path.join(BASE_DIR, "im", hexdir, filename)
+ conn = s3.AWSAuthConnection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
+ with open(f, 'rb') as opened:
+ filedata = opened.read()
+ content_type = mimetypes.guess_type(f)[0]
+ if not content_type:
+ content_type = 'text/plain'
+ try:
+ conn.put(BUCKET_NAME, s3object, s3.S3Object(filedata),
+ {'x-amz-acl': 'public-read', 'Content-Type': content_type,
+ 'x-amz-storage-class': 'REDUCED_REDUNDANCY'})
+ call(['rm',f])
+ return "http://i.asdf.us/"+s3object
+ except Exception as e:
+ return e
+
+
+#so now I need to test the image? yes
+
+def test_image(basename, ext):
+ """ checks to make sure the image is an image """
+
+
+def download_image(url, filename=None,final_path=""):
+ " downloads an image and stores it in a directory "
+ headers = {
+ 'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
+ 'Accept': '*/*',
+ }
+ if not filename:
+ filename = url.split("/")[-1]
+ try:
+ req = Request(url, None, headers)
+ response = urlopen(req).read()
+ if not response: error("File did not exist or was zero-length")
+ if len(response) > MAX_DOWNLOAD_SIZE:
+ error(
+ "file too big: max size %sKB\n %s is %s KB" %
+ ( MAX_DOWNLOAD_SIZE/1024, filename, len(response)/1024 )
+ )
+ f = open(final_path+filename, "w")
+ f.write(response)
+ f.close()
+ return final_path
+
+ except Exception as E:
+ error('There is a problem with the url or an I/O error: \n %s' % (E))
+
+
+
+def new_filename_from_url(url, username="", nametag=""):
+ " creates a safe filename from a url "
+ parts = url.rsplit("/", -1)
+ try:
+ name, filetype = parts.rsplit(".", -1)
+ except:
+ error("Invalid url") # I could pass in the logging function as an argument if you wanted to store the invalid urls
+ if "?" in filetype: filetype = filetype.split("?")[1]
+ name = sanitize(name)
+ filetype = sanitize(filetype)
+ if not ('.' + filetype.lower()) in ACCEPTABLE_FILE_TYPES:
+ error("Invalid url")
+
+
+ if len(name) > 32: name = "__abridged"
+ name = now()+"_"+name
+
+ if username: name += "_" + username
+ if nametag: name += "_" + nametag
+ return name +"."+filetype
+
+def new_filename(filetype, username="", nametag=""):
+ " creates a new image filename "
+ parts = now()
+ if username: parts += "_"+username
+ if nametag: parts += "_"+nametag
+ return parts+"."+filetype
+
+
+def file_size (file):
+ " returns the file size in bytes "
+ return stat(file)[6]
+
+
+class db:
+ " initializes the database connection "
+ def __init__ (self):
+ self.conn = None
+ self.cursor = None
+ self.connect()
+
+ def connect (self):
+ self.conn = MySQLdb.connect (host = "localhost",
+ user = MYSQLUSER,
+ passwd = MYSQLPW,
+ db = MYSQLDB)
+ self.cursor = self.conn.cursor ()
+
+ def execute (self,sql,args=()):
+ try:
+ self.cursor.execute(sql,args)
+ except MySQLdb.Error, e:
+ error(" %d: %s" % (e.args[0], e.args[1]))
+
+ def lastinsertid (self):
+ return self.conn.insert_id()
+
+#pb_db = db()
diff --git a/frontend/imdither/run.py b/frontend/imdither/run.py
new file mode 100755
index 0000000..3fed429
--- /dev/null
+++ b/frontend/imdither/run.py
@@ -0,0 +1,35 @@
+#!/usr/bin/python2.7
+from bottle import route, run, static_file, request
+import makeDither
+import urlDownload
+
+@route('/')
+def server_static():
+ return static_file("imdither.html", root='./')
+
+@route('/dithers/<filename>')
+def server_static(filename):
+ return static_file(filename, root='./dithers/')
+
+@route('/img/<filename>')
+def server_static(filename):
+ return static_file(filename, root='./img/')
+
+@route('/<filename>')
+def server_static(filename):
+ return static_file(filename, root='./')
+
+@route('/process', method='POST')
+def process_image():
+ url = request.forms.get('url')
+ params = request.forms.get('params')
+ download = urlDownload.UrlDownload(url)
+ tempfile = download.dir + download.filename
+ makeDither.Dither(tempfile)
+
+@route('/status', method='GET')
+def show_status():
+ pass
+#run(host='0.0.0.0', port=4111, debug=True)
+run(server='flup', host='localhost', port=4111, debug=True)
+
diff --git a/frontend/imdither/s3.py b/frontend/imdither/s3.py
new file mode 100755
index 0000000..1c2b09e
--- /dev/null
+++ b/frontend/imdither/s3.py
@@ -0,0 +1,618 @@
+#!/usr/bin/env python
+
+# This software code is made available "AS IS" without warranties of any
+# kind. You may copy, display, modify and redistribute the software
+# code either by itself or as incorporated into your code; provided that
+# you do not remove any proprietary notices. Your use of this software
+# code is at your own risk and you waive any claim against Amazon
+# Digital Services, Inc. or its affiliates with respect to your use of
+# this software code. (c) 2006-2007 Amazon Digital Services, Inc. or its
+# affiliates.
+
+import base64
+import hmac
+import httplib
+import re
+import sha
+import sys
+import time
+import urllib
+import urlparse
+import xml.sax
+
+DEFAULT_HOST = 's3.amazonaws.com'
+PORTS_BY_SECURITY = { True: 443, False: 80 }
+METADATA_PREFIX = 'x-amz-meta-'
+AMAZON_HEADER_PREFIX = 'x-amz-'
+
+# generates the aws canonical string for the given parameters
+def canonical_string(method, bucket="", key="", query_args={}, headers={}, expires=None):
+ interesting_headers = {}
+ for header_key in headers:
+ lk = header_key.lower()
+ if lk in ['content-md5', 'content-type', 'date'] or lk.startswith(AMAZON_HEADER_PREFIX):
+ interesting_headers[lk] = headers[header_key].strip()
+
+ # these keys get empty strings if they don't exist
+ if not interesting_headers.has_key('content-type'):
+ interesting_headers['content-type'] = ''
+ if not interesting_headers.has_key('content-md5'):
+ interesting_headers['content-md5'] = ''
+
+ # just in case someone used this. it's not necessary in this lib.
+ if interesting_headers.has_key('x-amz-date'):
+ interesting_headers['date'] = ''
+
+ # if you're using expires for query string auth, then it trumps date
+ # (and x-amz-date)
+ if expires:
+ interesting_headers['date'] = str(expires)
+
+ sorted_header_keys = interesting_headers.keys()
+ sorted_header_keys.sort()
+
+ buf = "%s\n" % method
+ for header_key in sorted_header_keys:
+ if header_key.startswith(AMAZON_HEADER_PREFIX):
+ buf += "%s:%s\n" % (header_key, interesting_headers[header_key])
+ else:
+ buf += "%s\n" % interesting_headers[header_key]
+
+ # append the bucket if it exists
+ if bucket != "":
+ buf += "/%s" % bucket
+
+ # add the key. even if it doesn't exist, add the slash
+ buf += "/%s" % urllib.quote_plus(key)
+
+ # handle special query string arguments
+
+ if query_args.has_key("acl"):
+ buf += "?acl"
+ elif query_args.has_key("torrent"):
+ buf += "?torrent"
+ elif query_args.has_key("logging"):
+ buf += "?logging"
+ elif query_args.has_key("location"):
+ buf += "?location"
+
+ return buf
+
+# computes the base64'ed hmac-sha hash of the canonical string and the secret
+# access key, optionally urlencoding the result
+def encode(aws_secret_access_key, str, urlencode=False):
+ b64_hmac = base64.encodestring(hmac.new(aws_secret_access_key, str, sha).digest()).strip()
+ if urlencode:
+ return urllib.quote_plus(b64_hmac)
+ else:
+ return b64_hmac
+
+def merge_meta(headers, metadata):
+ final_headers = headers.copy()
+ for k in metadata.keys():
+ final_headers[METADATA_PREFIX + k] = metadata[k]
+
+ return final_headers
+
+# builds the query arg string
+def query_args_hash_to_string(query_args):
+ query_string = ""
+ pairs = []
+ for k, v in query_args.items():
+ piece = k
+ if v != None:
+ piece += "=%s" % urllib.quote_plus(str(v))
+ pairs.append(piece)
+
+ return '&'.join(pairs)
+
+
+class CallingFormat:
+ PATH = 1
+ SUBDOMAIN = 2
+ VANITY = 3
+
+ def build_url_base(protocol, server, port, bucket, calling_format):
+ url_base = '%s://' % protocol
+
+ if bucket == '':
+ url_base += server
+ elif calling_format == CallingFormat.SUBDOMAIN:
+ url_base += "%s.%s" % (bucket, server)
+ elif calling_format == CallingFormat.VANITY:
+ url_base += bucket
+ else:
+ url_base += server
+
+ url_base += ":%s" % port
+
+ if (bucket != '') and (calling_format == CallingFormat.PATH):
+ url_base += "/%s" % bucket
+
+ return url_base
+
+ build_url_base = staticmethod(build_url_base)
+
+
+
+class Location:
+ DEFAULT = None
+ EU = 'EU'
+
+
+
+class AWSAuthConnection:
+ def __init__(self, aws_access_key_id, aws_secret_access_key, is_secure=True,
+ server=DEFAULT_HOST, port=None, calling_format=CallingFormat.SUBDOMAIN):
+
+ if not port:
+ port = PORTS_BY_SECURITY[is_secure]
+
+ self.aws_access_key_id = aws_access_key_id
+ self.aws_secret_access_key = aws_secret_access_key
+ self.is_secure = is_secure
+ self.server = server
+ self.port = port
+ self.calling_format = calling_format
+
+ def create_bucket(self, bucket, headers={}):
+ return Response(self._make_request('PUT', bucket, '', {}, headers))
+
+ def create_located_bucket(self, bucket, location=Location.DEFAULT, headers={}):
+ if location == Location.DEFAULT:
+ body = ""
+ else:
+ body = "<CreateBucketConstraint><LocationConstraint>" + \
+ location + \
+ "</LocationConstraint></CreateBucketConstraint>"
+ return Response(self._make_request('PUT', bucket, '', {}, headers, body))
+
+ def check_bucket_exists(self, bucket):
+ return self._make_request('HEAD', bucket, '', {}, {})
+
+ def list_bucket(self, bucket, options={}, headers={}):
+ return ListBucketResponse(self._make_request('GET', bucket, '', options, headers))
+
+ def delete_bucket(self, bucket, headers={}):
+ return Response(self._make_request('DELETE', bucket, '', {}, headers))
+
+ def put(self, bucket, key, object, headers={}):
+ if not isinstance(object, S3Object):
+ object = S3Object(object)
+
+ return Response(
+ self._make_request(
+ 'PUT',
+ bucket,
+ key,
+ {},
+ headers,
+ object.data,
+ object.metadata))
+
+ def get(self, bucket, key, headers={}):
+ return GetResponse(
+ self._make_request('GET', bucket, key, {}, headers))
+
+ def delete(self, bucket, key, headers={}):
+ return Response(
+ self._make_request('DELETE', bucket, key, {}, headers))
+
+ def get_bucket_logging(self, bucket, headers={}):
+ return GetResponse(self._make_request('GET', bucket, '', { 'logging': None }, headers))
+
+ def put_bucket_logging(self, bucket, logging_xml_doc, headers={}):
+ return Response(self._make_request('PUT', bucket, '', { 'logging': None }, headers, logging_xml_doc))
+
+ def get_bucket_acl(self, bucket, headers={}):
+ return self.get_acl(bucket, '', headers)
+
+ def get_acl(self, bucket, key, headers={}):
+ return GetResponse(
+ self._make_request('GET', bucket, key, { 'acl': None }, headers))
+
+ def put_bucket_acl(self, bucket, acl_xml_document, headers={}):
+ return self.put_acl(bucket, '', acl_xml_document, headers)
+
+ def put_acl(self, bucket, key, acl_xml_document, headers={}):
+ return Response(
+ self._make_request(
+ 'PUT',
+ bucket,
+ key,
+ { 'acl': None },
+ headers,
+ acl_xml_document))
+
+ def list_all_my_buckets(self, headers={}):
+ return ListAllMyBucketsResponse(self._make_request('GET', '', '', {}, headers))
+
+ def get_bucket_location(self, bucket):
+ return LocationResponse(self._make_request('GET', bucket, '', {'location' : None}))
+
+ # end public methods
+
+ def _make_request(self, method, bucket='', key='', query_args={}, headers={}, data='', metadata={}):
+
+ server = ''
+ if bucket == '':
+ server = self.server
+ elif self.calling_format == CallingFormat.SUBDOMAIN:
+ server = "%s.%s" % (bucket, self.server)
+ elif self.calling_format == CallingFormat.VANITY:
+ server = bucket
+ else:
+ server = self.server
+
+ path = ''
+
+ if (bucket != '') and (self.calling_format == CallingFormat.PATH):
+ path += "/%s" % bucket
+
+ # add the slash after the bucket regardless
+ # the key will be appended if it is non-empty
+ path += "/%s" % urllib.quote_plus(key)
+
+
+ # build the path_argument string
+ # add the ? in all cases since
+ # signature and credentials follow path args
+ if len(query_args):
+ path += "?" + query_args_hash_to_string(query_args)
+
+ is_secure = self.is_secure
+ host = "%s:%d" % (server, self.port)
+ while True:
+ if (is_secure):
+ connection = httplib.HTTPSConnection(host)
+ else:
+ connection = httplib.HTTPConnection(host)
+
+ final_headers = merge_meta(headers, metadata);
+ # add auth header
+ self._add_aws_auth_header(final_headers, method, bucket, key, query_args)
+
+ connection.request(method, path, data, final_headers)
+ resp = connection.getresponse()
+ if resp.status < 300 or resp.status >= 400:
+ return resp
+ # handle redirect
+ location = resp.getheader('location')
+ if not location:
+ return resp
+ # (close connection)
+ resp.read()
+ scheme, host, path, params, query, fragment \
+ = urlparse.urlparse(location)
+ if scheme == "http": is_secure = True
+ elif scheme == "https": is_secure = False
+ else: raise invalidURL("Not http/https: " + location)
+ if query: path += "?" + query
+ # retry with redirect
+
+ def _add_aws_auth_header(self, headers, method, bucket, key, query_args):
+ if not headers.has_key('Date'):
+ headers['Date'] = time.strftime("%a, %d %b %Y %X GMT", time.gmtime())
+
+ c_string = canonical_string(method, bucket, key, query_args, headers)
+ headers['Authorization'] = \
+ "AWS %s:%s" % (self.aws_access_key_id, encode(self.aws_secret_access_key, c_string))
+
+
+class QueryStringAuthGenerator:
+ # by default, expire in 1 minute
+ DEFAULT_EXPIRES_IN = 60
+
+ def __init__(self, aws_access_key_id, aws_secret_access_key, is_secure=True,
+ server=DEFAULT_HOST, port=None, calling_format=CallingFormat.SUBDOMAIN):
+
+ if not port:
+ port = PORTS_BY_SECURITY[is_secure]
+
+ self.aws_access_key_id = aws_access_key_id
+ self.aws_secret_access_key = aws_secret_access_key
+ if (is_secure):
+ self.protocol = 'https'
+ else:
+ self.protocol = 'http'
+
+ self.is_secure = is_secure
+ self.server = server
+ self.port = port
+ self.calling_format = calling_format
+ self.__expires_in = QueryStringAuthGenerator.DEFAULT_EXPIRES_IN
+ self.__expires = None
+
+ # for backwards compatibility with older versions
+ self.server_name = "%s:%s" % (self.server, self.port)
+
+ def set_expires_in(self, expires_in):
+ self.__expires_in = expires_in
+ self.__expires = None
+
+ def set_expires(self, expires):
+ self.__expires = expires
+ self.__expires_in = None
+
+ def create_bucket(self, bucket, headers={}):
+ return self.generate_url('PUT', bucket, '', {}, headers)
+
+ def list_bucket(self, bucket, options={}, headers={}):
+ return self.generate_url('GET', bucket, '', options, headers)
+
+ def delete_bucket(self, bucket, headers={}):
+ return self.generate_url('DELETE', bucket, '', {}, headers)
+
+ def put(self, bucket, key, object, headers={}):
+ if not isinstance(object, S3Object):
+ object = S3Object(object)
+
+ return self.generate_url(
+ 'PUT',
+ bucket,
+ key,
+ {},
+ merge_meta(headers, object.metadata))
+
+ def get(self, bucket, key, headers={}):
+ return self.generate_url('GET', bucket, key, {}, headers)
+
+ def delete(self, bucket, key, headers={}):
+ return self.generate_url('DELETE', bucket, key, {}, headers)
+
+ def get_bucket_logging(self, bucket, headers={}):
+ return self.generate_url('GET', bucket, '', { 'logging': None }, headers)
+
+ def put_bucket_logging(self, bucket, logging_xml_doc, headers={}):
+ return self.generate_url('PUT', bucket, '', { 'logging': None }, headers)
+
+ def get_bucket_acl(self, bucket, headers={}):
+ return self.get_acl(bucket, '', headers)
+
+ def get_acl(self, bucket, key='', headers={}):
+ return self.generate_url('GET', bucket, key, { 'acl': None }, headers)
+
+ def put_bucket_acl(self, bucket, acl_xml_document, headers={}):
+ return self.put_acl(bucket, '', acl_xml_document, headers)
+
+ # don't really care what the doc is here.
+ def put_acl(self, bucket, key, acl_xml_document, headers={}):
+ return self.generate_url('PUT', bucket, key, { 'acl': None }, headers)
+
+ def list_all_my_buckets(self, headers={}):
+ return self.generate_url('GET', '', '', {}, headers)
+
+ def make_bare_url(self, bucket, key=''):
+ full_url = self.generate_url(self, bucket, key)
+ return full_url[:full_url.index('?')]
+
+ def generate_url(self, method, bucket='', key='', query_args={}, headers={}):
+ expires = 0
+ if self.__expires_in != None:
+ expires = int(time.time() + self.__expires_in)
+ elif self.__expires != None:
+ expires = int(self.__expires)
+ else:
+ raise "Invalid expires state"
+
+ canonical_str = canonical_string(method, bucket, key, query_args, headers, expires)
+ encoded_canonical = encode(self.aws_secret_access_key, canonical_str)
+
+ url = CallingFormat.build_url_base(self.protocol, self.server, self.port, bucket, self.calling_format)
+
+ url += "/%s" % urllib.quote_plus(key)
+
+ query_args['Signature'] = encoded_canonical
+ query_args['Expires'] = expires
+ query_args['AWSAccessKeyId'] = self.aws_access_key_id
+
+ url += "?%s" % query_args_hash_to_string(query_args)
+
+ return url
+
+
+class S3Object:
+ def __init__(self, data, metadata={}):
+ self.data = data
+ self.metadata = metadata
+
+class Owner:
+ def __init__(self, id='', display_name=''):
+ self.id = id
+ self.display_name = display_name
+
+class ListEntry:
+ def __init__(self, key='', last_modified=None, etag='', size=0, storage_class='', owner=None):
+ self.key = key
+ self.last_modified = last_modified
+ self.etag = etag
+ self.size = size
+ self.storage_class = storage_class
+ self.owner = owner
+
+class CommonPrefixEntry:
+ def __init(self, prefix=''):
+ self.prefix = prefix
+
+class Bucket:
+ def __init__(self, name='', creation_date=''):
+ self.name = name
+ self.creation_date = creation_date
+
+class Response:
+ def __init__(self, http_response):
+ self.http_response = http_response
+ # you have to do this read, even if you don't expect a body.
+ # otherwise, the next request fails.
+ self.body = http_response.read()
+ if http_response.status >= 300 and self.body:
+ self.message = self.body
+ else:
+ self.message = "%03d %s" % (http_response.status, http_response.reason)
+
+
+
+class ListBucketResponse(Response):
+ def __init__(self, http_response):
+ Response.__init__(self, http_response)
+ if http_response.status < 300:
+ handler = ListBucketHandler()
+ xml.sax.parseString(self.body, handler)
+ self.entries = handler.entries
+ self.common_prefixes = handler.common_prefixes
+ self.name = handler.name
+ self.marker = handler.marker
+ self.prefix = handler.prefix
+ self.is_truncated = handler.is_truncated
+ self.delimiter = handler.delimiter
+ self.max_keys = handler.max_keys
+ self.next_marker = handler.next_marker
+ else:
+ self.entries = []
+
+class ListAllMyBucketsResponse(Response):
+ def __init__(self, http_response):
+ Response.__init__(self, http_response)
+ if http_response.status < 300:
+ handler = ListAllMyBucketsHandler()
+ xml.sax.parseString(self.body, handler)
+ self.entries = handler.entries
+ else:
+ self.entries = []
+
+class GetResponse(Response):
+ def __init__(self, http_response):
+ Response.__init__(self, http_response)
+ response_headers = http_response.msg # older pythons don't have getheaders
+ metadata = self.get_aws_metadata(response_headers)
+ self.object = S3Object(self.body, metadata)
+
+ def get_aws_metadata(self, headers):
+ metadata = {}
+ for hkey in headers.keys():
+ if hkey.lower().startswith(METADATA_PREFIX):
+ metadata[hkey[len(METADATA_PREFIX):]] = headers[hkey]
+ del headers[hkey]
+
+ return metadata
+
+class LocationResponse(Response):
+ def __init__(self, http_response):
+ Response.__init__(self, http_response)
+ if http_response.status < 300:
+ handler = LocationHandler()
+ xml.sax.parseString(self.body, handler)
+ self.location = handler.location
+
+class ListBucketHandler(xml.sax.ContentHandler):
+ def __init__(self):
+ self.entries = []
+ self.curr_entry = None
+ self.curr_text = ''
+ self.common_prefixes = []
+ self.curr_common_prefix = None
+ self.name = ''
+ self.marker = ''
+ self.prefix = ''
+ self.is_truncated = False
+ self.delimiter = ''
+ self.max_keys = 0
+ self.next_marker = ''
+ self.is_echoed_prefix_set = False
+
+ def startElement(self, name, attrs):
+ if name == 'Contents':
+ self.curr_entry = ListEntry()
+ elif name == 'Owner':
+ self.curr_entry.owner = Owner()
+ elif name == 'CommonPrefixes':
+ self.curr_common_prefix = CommonPrefixEntry()
+
+
+ def endElement(self, name):
+ if name == 'Contents':
+ self.entries.append(self.curr_entry)
+ elif name == 'CommonPrefixes':
+ self.common_prefixes.append(self.curr_common_prefix)
+ elif name == 'Key':
+ self.curr_entry.key = self.curr_text
+ elif name == 'LastModified':
+ self.curr_entry.last_modified = self.curr_text
+ elif name == 'ETag':
+ self.curr_entry.etag = self.curr_text
+ elif name == 'Size':
+ self.curr_entry.size = int(self.curr_text)
+ elif name == 'ID':
+ self.curr_entry.owner.id = self.curr_text
+ elif name == 'DisplayName':
+ self.curr_entry.owner.display_name = self.curr_text
+ elif name == 'StorageClass':
+ self.curr_entry.storage_class = self.curr_text
+ elif name == 'Name':
+ self.name = self.curr_text
+ elif name == 'Prefix' and self.is_echoed_prefix_set:
+ self.curr_common_prefix.prefix = self.curr_text
+ elif name == 'Prefix':
+ self.prefix = self.curr_text
+ self.is_echoed_prefix_set = True
+ elif name == 'Marker':
+ self.marker = self.curr_text
+ elif name == 'IsTruncated':
+ self.is_truncated = self.curr_text == 'true'
+ elif name == 'Delimiter':
+ self.delimiter = self.curr_text
+ elif name == 'MaxKeys':
+ self.max_keys = int(self.curr_text)
+ elif name == 'NextMarker':
+ self.next_marker = self.curr_text
+
+ self.curr_text = ''
+
+ def characters(self, content):
+ self.curr_text += content
+
+
+class ListAllMyBucketsHandler(xml.sax.ContentHandler):
+ def __init__(self):
+ self.entries = []
+ self.curr_entry = None
+ self.curr_text = ''
+
+ def startElement(self, name, attrs):
+ if name == 'Bucket':
+ self.curr_entry = Bucket()
+
+ def endElement(self, name):
+ if name == 'Name':
+ self.curr_entry.name = self.curr_text
+ elif name == 'CreationDate':
+ self.curr_entry.creation_date = self.curr_text
+ elif name == 'Bucket':
+ self.entries.append(self.curr_entry)
+
+ def characters(self, content):
+ self.curr_text = content
+
+
+class LocationHandler(xml.sax.ContentHandler):
+ def __init__(self):
+ self.location = None
+ self.state = 'init'
+
+ def startElement(self, name, attrs):
+ if self.state == 'init':
+ if name == 'LocationConstraint':
+ self.state = 'tag_location'
+ self.location = ''
+ else: self.state = 'bad'
+ else: self.state = 'bad'
+
+ def endElement(self, name):
+ if self.state == 'tag_location' and name == 'LocationConstraint':
+ self.state = 'done'
+ else: self.state = 'bad'
+
+ def characters(self, content):
+ if self.state == 'tag_location':
+ self.location += content
+
diff --git a/frontend/imdither/urlDownload.py b/frontend/imdither/urlDownload.py
new file mode 100755
index 0000000..f806650
--- /dev/null
+++ b/frontend/imdither/urlDownload.py
@@ -0,0 +1,33 @@
+#!/usr/bin/python2.7
+import pbutils
+from os import getpid
+class UrlDownload:
+ def __init__(self, url):
+ self.dir = "/tmp/";
+ self.url = url
+ self.filename = self.makeTempname()
+ try:
+ self.download();
+ except Exception as E:
+ print E
+ pbutils.error("Could not download image")
+
+ def makeTempname(self):
+ self.url = self.url.split("?")[0]
+ parts = self.url.split(".")
+ namepart = pbutils.sanitize(parts[-2].split("/")[-1])
+ extension = pbutils.sanitize(parts[-1])
+ return str(getpid()) + namepart + "." + extension;
+
+
+ def getFilename(self):
+ return self.filename
+ def download(self):
+ pbutils.download_image(self.url, self.filename, self.dir)
+
+from sys import argv
+
+if __name__ == "__main__":
+ if len(argv) < 2:
+ pbutils.error("supply a url as an argument")
+ download = UrlDownload(argv[1])
diff --git a/frontend/img/ALPHA20IVY20201_1323328300.gif b/frontend/img/ALPHA20IVY20201_1323328300.gif
new file mode 120000
index 0000000..97c32d3
--- /dev/null
+++ b/frontend/img/ALPHA20IVY20201_1323328300.gif
@@ -0,0 +1 @@
+../imbreak/img/ALPHA20IVY20201_1323328300.gif \ No newline at end of file
diff --git a/frontend/img/_broken_by_janie_147_greeks.gif b/frontend/img/_broken_by_janie_147_greeks.gif
new file mode 120000
index 0000000..29caea0
--- /dev/null
+++ b/frontend/img/_broken_by_janie_147_greeks.gif
@@ -0,0 +1 @@
+../imbreak/img/_broken_by_janie_147_greeks.gif \ No newline at end of file
diff --git a/frontend/img/_broken_by_janie_16b_justhost_155x75.gif b/frontend/img/_broken_by_janie_16b_justhost_155x75.gif
new file mode 120000
index 0000000..3736d16
--- /dev/null
+++ b/frontend/img/_broken_by_janie_16b_justhost_155x75.gif
@@ -0,0 +1 @@
+../imbreak/img/_broken_by_janie_16b_justhost_155x75.gif \ No newline at end of file
diff --git a/frontend/img/_broken_by_janie_399_a_pair_of_siena_and_carved_white_marble_columns_20th_century_d5409361h.jpg b/frontend/img/_broken_by_janie_399_a_pair_of_siena_and_carved_white_marble_columns_20th_century_d5409361h.jpg
new file mode 120000
index 0000000..a3d6e08
--- /dev/null
+++ b/frontend/img/_broken_by_janie_399_a_pair_of_siena_and_carved_white_marble_columns_20th_century_d5409361h.jpg
@@ -0,0 +1 @@
+../imbreak/img/_broken_by_janie_399_a_pair_of_siena_and_carved_white_marble_columns_20th_century_d5409361h.jpg \ No newline at end of file
diff --git a/frontend/img/athenafinal.gif b/frontend/img/athenafinal.gif
new file mode 120000
index 0000000..0cd8f3e
--- /dev/null
+++ b/frontend/img/athenafinal.gif
@@ -0,0 +1 @@
+../imgrid/img/athenafinal.gif \ No newline at end of file
diff --git a/frontend/img/background.gif b/frontend/img/background.gif
new file mode 120000
index 0000000..f8aa1a3
--- /dev/null
+++ b/frontend/img/background.gif
@@ -0,0 +1 @@
+../imgrid/img/background.gif \ No newline at end of file
diff --git a/frontend/img/blackplant.png b/frontend/img/blackplant.png
new file mode 120000
index 0000000..e65f323
--- /dev/null
+++ b/frontend/img/blackplant.png
@@ -0,0 +1 @@
+../imgrid/img/blackplant.png \ No newline at end of file
diff --git a/frontend/img/blackplant2.png b/frontend/img/blackplant2.png
new file mode 120000
index 0000000..0bed1b2
--- /dev/null
+++ b/frontend/img/blackplant2.png
@@ -0,0 +1 @@
+../imgrid/img/blackplant2.png \ No newline at end of file
diff --git a/frontend/img/blackplant3.png b/frontend/img/blackplant3.png
new file mode 120000
index 0000000..15af280
--- /dev/null
+++ b/frontend/img/blackplant3.png
@@ -0,0 +1 @@
+../imgrid/img/blackplant3.png \ No newline at end of file
diff --git a/frontend/img/bros.png b/frontend/img/bros.png
new file mode 120000
index 0000000..672b466
--- /dev/null
+++ b/frontend/img/bros.png
@@ -0,0 +1 @@
+../imgrid/img/bros.png \ No newline at end of file
diff --git a/frontend/img/brush.png b/frontend/img/brush.png
new file mode 120000
index 0000000..2fa4e68
--- /dev/null
+++ b/frontend/img/brush.png
@@ -0,0 +1 @@
+../impattern/img/brush.png \ No newline at end of file
diff --git a/frontend/img/columns.jpg b/frontend/img/columns.jpg
new file mode 120000
index 0000000..372104d
--- /dev/null
+++ b/frontend/img/columns.jpg
@@ -0,0 +1 @@
+../imbreak/img/columns.jpg \ No newline at end of file
diff --git a/frontend/img/eraser.png b/frontend/img/eraser.png
new file mode 120000
index 0000000..fb9853e
--- /dev/null
+++ b/frontend/img/eraser.png
@@ -0,0 +1 @@
+../impattern/img/eraser.png \ No newline at end of file
diff --git a/frontend/img/facebookimage.png b/frontend/img/facebookimage.png
new file mode 120000
index 0000000..b577a5f
--- /dev/null
+++ b/frontend/img/facebookimage.png
@@ -0,0 +1 @@
+../imgrid/img/facebookimage.png \ No newline at end of file
diff --git a/frontend/img/firstlogo.gif b/frontend/img/firstlogo.gif
new file mode 120000
index 0000000..4b682ca
--- /dev/null
+++ b/frontend/img/firstlogo.gif
@@ -0,0 +1 @@
+../imbreak/img/firstlogo.gif \ No newline at end of file
diff --git a/frontend/img/generating.gif b/frontend/img/generating.gif
new file mode 120000
index 0000000..f3e29ef
--- /dev/null
+++ b/frontend/img/generating.gif
@@ -0,0 +1 @@
+../imgrid/img/generating.gif \ No newline at end of file
diff --git a/frontend/img/greeks.gif b/frontend/img/greeks.gif
new file mode 120000
index 0000000..c691a2d
--- /dev/null
+++ b/frontend/img/greeks.gif
@@ -0,0 +1 @@
+../imbreak/img/greeks.gif \ No newline at end of file
diff --git a/frontend/img/harrisbros.png b/frontend/img/harrisbros.png
new file mode 120000
index 0000000..7875be6
--- /dev/null
+++ b/frontend/img/harrisbros.png
@@ -0,0 +1 @@
+../imgrid/img/harrisbros.png \ No newline at end of file
diff --git a/frontend/img/imgrid.png b/frontend/img/imgrid.png
new file mode 120000
index 0000000..d74b0db
--- /dev/null
+++ b/frontend/img/imgrid.png
@@ -0,0 +1 @@
+../imgrid/img/imgrid.png \ No newline at end of file
diff --git a/frontend/img/imgrid_1328137237_ivy_pepper.gif b/frontend/img/imgrid_1328137237_ivy_pepper.gif
new file mode 120000
index 0000000..122081e
--- /dev/null
+++ b/frontend/img/imgrid_1328137237_ivy_pepper.gif
@@ -0,0 +1 @@
+../imbreak/img/imgrid_1328137237_ivy_pepper.gif \ No newline at end of file
diff --git a/frontend/img/impattern.png b/frontend/img/impattern.png
new file mode 120000
index 0000000..b879f57
--- /dev/null
+++ b/frontend/img/impattern.png
@@ -0,0 +1 @@
+../impattern/img/impattern.png \ No newline at end of file
diff --git a/frontend/img/ivy.gif b/frontend/img/ivy.gif
new file mode 120000
index 0000000..5a66e61
--- /dev/null
+++ b/frontend/img/ivy.gif
@@ -0,0 +1 @@
+../imbreak/img/ivy.gif \ No newline at end of file
diff --git a/frontend/img/ivy2.gif b/frontend/img/ivy2.gif
new file mode 120000
index 0000000..a54ded9
--- /dev/null
+++ b/frontend/img/ivy2.gif
@@ -0,0 +1 @@
+../imbreak/img/ivy2.gif \ No newline at end of file
diff --git a/frontend/img/loading.gif b/frontend/img/loading.gif
new file mode 120000
index 0000000..f9152ce
--- /dev/null
+++ b/frontend/img/loading.gif
@@ -0,0 +1 @@
+../impattern/img/loading.gif \ No newline at end of file
diff --git a/frontend/img/logo.gif b/frontend/img/logo.gif
new file mode 120000
index 0000000..7d0de6a
--- /dev/null
+++ b/frontend/img/logo.gif
@@ -0,0 +1 @@
+../impattern/img/logo.gif \ No newline at end of file
diff --git a/frontend/img/newmain.gif b/frontend/img/newmain.gif
new file mode 120000
index 0000000..9fa84e9
--- /dev/null
+++ b/frontend/img/newmain.gif
@@ -0,0 +1 @@
+../imbreak/img/newmain.gif \ No newline at end of file
diff --git a/frontend/img/og.jpg b/frontend/img/og.jpg
new file mode 120000
index 0000000..9807db4
--- /dev/null
+++ b/frontend/img/og.jpg
@@ -0,0 +1 @@
+../imbreak/img/og.jpg \ No newline at end of file
diff --git a/frontend/img/oldathena.gif b/frontend/img/oldathena.gif
new file mode 120000
index 0000000..ab760ad
--- /dev/null
+++ b/frontend/img/oldathena.gif
@@ -0,0 +1 @@
+../imgrid/img/oldathena.gif \ No newline at end of file
diff --git a/frontend/img/on9TF_1322970909_1322970984_1323325278.gif b/frontend/img/on9TF_1322970909_1322970984_1323325278.gif
new file mode 120000
index 0000000..5cdca1f
--- /dev/null
+++ b/frontend/img/on9TF_1322970909_1322970984_1323325278.gif
@@ -0,0 +1 @@
+../imbreak/img/on9TF_1322970909_1322970984_1323325278.gif \ No newline at end of file
diff --git a/frontend/img/test.gif b/frontend/img/test.gif
new file mode 120000
index 0000000..a9e9cf0
--- /dev/null
+++ b/frontend/img/test.gif
@@ -0,0 +1 @@
+../imgrid/img/test.gif \ No newline at end of file
diff --git a/frontend/img/thatbackground.gif b/frontend/img/thatbackground.gif
new file mode 120000
index 0000000..bdf00cf
--- /dev/null
+++ b/frontend/img/thatbackground.gif
@@ -0,0 +1 @@
+../imgrid/img/thatbackground.gif \ No newline at end of file
diff --git a/frontend/img/title1.gif b/frontend/img/title1.gif
new file mode 120000
index 0000000..913fede
--- /dev/null
+++ b/frontend/img/title1.gif
@@ -0,0 +1 @@
+../imbreak/img/title1.gif \ No newline at end of file
diff --git a/frontend/imgradient/bevelborder(2) b/frontend/imgradient/bevelborder(2)
new file mode 100755
index 0000000..20774dd
--- /dev/null
+++ b/frontend/imgradient/bevelborder(2)
@@ -0,0 +1,295 @@
+#!/bin/bash
+#
+# Developed by Fred Weinhaus 7/16/2010 .......... revised 6/30/2011
+#
+# USAGE: bevelborder [-s size] [-m method] [-p percent] [-c contrast] [-b bcolor] [-a amount] [-t type] infile outfile
+# USAGE: bevelborder [-h or -help]
+#
+# OPTIONS:
+#
+# -s size size of border in pixels; same in both dimensions;
+# default equals 10% of min(imagewidth, imageheight)
+# -m method bevel method; choices are: outer, inner or split;
+# default=outer
+# -p percent split percent between outer and inner bevel;
+# 100 is outer bevel only; 0 is inner bevel only;
+# default=50 applies only to method=split
+# -c contrast contrast percent for bevel; 0<=integer<=100;
+# default=50
+# -b bcolor border coloring; any IM opaque color is allowed;
+# default is no coloring
+# -a amount amount of border coloring; 0<=integer<=100;
+# default=25
+# -t type type of compose; hardlight, linearlight or
+# vividlight; default=hardlight
+#
+###
+#
+# NAME: BEVELBORDER
+#
+# PURPOSE: To applies a bevel effect to the border of an image.
+#
+# DESCRIPTION: BEVELBORDER applies a bevel effect to the border of an image.
+# The bevel can be an outer bevel (raised effect), an inner bevel (depressed
+# effect) or a split (mix) of the two. The border may also be colorized.
+#
+#
+# ARGUMENTS:
+#
+# -s size ... SIZE is the dimensions of the border region in pixels. The same
+# value is used in both dimensions. Values are integers greater than 0. The
+# default is 10% of the min(width,height) of the image.
+#
+# -m method ... METHOD is the bevel method. Choices are: outer, which makes a
+# raised effect; inner, which makes a depressed effect; and split, which is
+# part raised and part depressed. The amount of each is controlled by the
+# percent argument. The default is outer.
+#
+# -p percent ... PERCENT is the percent split between outer and inner bevels.
+# Values are integers such that 0<=percent<=100. A value of 100 is full outer
+# bevel. A value of 0 is full inner bevel. The default is 50 and only applies
+# when the method=split.
+#
+# -c contrast ... CONTRAST percent for innerbevel or outerbevel. Values are
+# integers between 0 and 100. The default=50.
+#
+# -b bcolor ... BCOLOR is the bevel colorization color. Any valid opaque IM
+# color is allowed. The default is no additional colorization.
+#
+# -a amount ... AMOUNT of colorization. Values are integers between 0 and 100.
+# The default=25.
+#
+# -t type ... TYPE of compose. Choices are: hardlight, linearlight and
+# vividlight. The default=hardlight
+#
+# REQUIREMENTS: IM 6.5.9.0 or higher due to the use of -brightness-contrast.
+#
+# CAVEAT: No guarantee that this script will work on all platforms,
+# nor that trapping of inconsistent parameters is complete and
+# foolproof. Use At Your Own Risk.
+#
+######
+#
+
+# set default values
+size="" # bevel border amount in pixels
+method="outer" # outer, inner, split
+percent=50 # split percent; 0 to 100; 100 is outer; 0 is inner
+contrast=50 # bevel contrast percent
+bcolor="" # bevel color
+amount=25 # amount of coloring; 0<=integer<=100
+type="hardlight" # bevel compose method
+
+# set directory for temporary files
+dir="." # suggestions are dir="." or dir="/tmp"
+
+# set up functions to report Usage and Usage with Description
+PROGNAME=`type $0 | awk '{print $3}'` # search for executable on path
+PROGDIR=`dirname $PROGNAME` # extract directory of program
+PROGNAME=`basename $PROGNAME` # base name of program
+usage1()
+ {
+ echo >&2 ""
+ echo >&2 "$PROGNAME:" "$@"
+ sed >&2 -n '/^###/q; /^#/!q; s/^#//; s/^ //; 4,$p' "$PROGDIR/$PROGNAME"
+ }
+usage2()
+ {
+ echo >&2 ""
+ echo >&2 "$PROGNAME:" "$@"
+ sed >&2 -n '/^######/q; /^#/!q; s/^#*//; s/^ //; 4,$p' "$PROGDIR/$PROGNAME"
+ }
+
+
+# function to report error messages
+errMsg()
+ {
+ echo ""
+ echo $1
+ echo ""
+ usage1
+ exit 1
+ }
+
+
+# function to test for minus at start of value of second part of option 1 or 2
+checkMinus()
+ {
+ test=`echo "$1" | grep -c '^-.*$'` # returns 1 if match; 0 otherwise
+ [ $test -eq 1 ] && errMsg "$errorMsg"
+ }
+
+# test for correct number of arguments and get values
+if [ $# -eq 0 ]
+ then
+ # help information
+ echo ""
+ usage2
+ exit 0
+elif [ $# -gt 16 ]
+ then
+ errMsg "--- TOO MANY ARGUMENTS WERE PROVIDED ---"
+else
+ while [ $# -gt 0 ]
+ do
+ # get parameter values
+ case "$1" in
+ -h|-help) # help information
+ echo ""
+ usage2
+ exit 0
+ ;;
+ -s) # get size
+ shift # to get the next parameter
+ # test if parameter starts with minus sign
+ errorMsg="--- INVALID SIZE SPECIFICATION ---"
+ checkMinus "$1"
+ size=`expr "$1" : '\([0-9]*\)'`
+ [ "$size" = "" ] && errMsg "--- SIZE=$size MUST BE A NON-NEGATIVE INTEGER VALUE (with no sign) ---"
+ testA=`echo "$size <= 0" | bc`
+ [ $testA -eq 1 ] && errMsg "--- SIZE=$size MUST BE A POSITIVE INTEGER ---"
+ ;;
+ -m) # get method
+ shift # to get the next parameter
+ # test if parameter starts with minus sign
+ errorMsg="--- INVALID METHOD SPECIFICATION ---"
+ checkMinus "$1"
+ # test type values
+ method=`echo "$1" | tr "[:upper:]" "[:lower:]"`
+ case "$method" in
+ outer|inner|split) ;; # do nothing - valid type
+ *) errMsg "--- METHOD=$method IS NOT A VALID VALUE ---" ;;
+ esac
+ ;;
+ -p) # get percent
+ shift # to get the next parameter
+ # test if parameter starts with minus sign
+ errorMsg="--- INVALID PERCENT SPECIFICATION ---"
+ checkMinus "$1"
+ percent=`expr "$1" : '\([0-9]*\)'`
+ [ "$percent" = "" ] && errMsg "--- PERCENT=$percent MUST BE A NON-NEGATIVE INTEGER ---"
+ testA=`echo "$percent < 0" | bc`
+ testB=`echo "$percent > 100" | bc`
+ [ $testA -eq 1 -o $testB -eq 1 ] && errMsg "--- PERCENT=$percent MUST BE AN INTEGER BETWEEN 0 AND 100 ---"
+ ;;
+ -c) # get contrast
+ shift # to get the next parameter
+ # test if parameter starts with minus sign
+ errorMsg="--- INVALID CONTRAST SPECIFICATION ---"
+ checkMinus "$1"
+ contrast=`expr "$1" : '\([0-9]*\)'`
+ [ "$contrast" = "" ] && errMsg "--- CONTRAST=$contrast MUST BE A NON-NEGATIVE INTEGER ---"
+ testA=`echo "$contrast < 0" | bc`
+ testB=`echo "$contrast > 100" | bc`
+ [ $testA -eq 1 -o $testB -eq 1 ] && errMsg "--- CONTRAST=$contrast MUST BE AN INTEGER BETWEEN 0 AND 100 ---"
+ ;;
+ -b) # get bcolor
+ shift # to get the next parameter
+ # test if parameter starts with minus sign
+ errorMsg="--- INVALID BCOLOR SPECIFICATION ---"
+ checkMinus "$1"
+ bcolor="$1"
+ ;;
+ -a) # get amount
+ shift # to get the next parameter
+ # test if parameter starts with minus sign
+ errorMsg="--- INVALID AMOUNT SPECIFICATION ---"
+ checkMinus "$1"
+ amount=`expr "$1" : '\([0-9]*\)'`
+ [ "$amount" = "" ] && errMsg "--- AMOUNT=$amount MUST BE A NON-NEGATIVE INTEGER ---"
+ testA=`echo "$amount < 0" | bc`
+ testB=`echo "$amount > 100" | bc`
+ [ $testA -eq 1 -o $testB -eq 1 ] && errMsg "--- AMOUNT=$amount MUST BE AN INTEGER BETWEEN 0 AND 100 ---"
+ ;;
+ -t) # get type
+ shift # to get the next parameter
+ # test if parameter starts with minus sign
+ errorMsg="--- INVALID TYPE SPECIFICATION ---"
+ checkMinus "$1"
+ # test type values
+ type=`echo "$1" | tr "[:upper:]" "[:lower:]"`
+ case "$type" in
+ hardlight|linearlight|vividlight) ;; # do nothing - valid type
+ *) errMsg "--- METHOD=$method IS NOT A VALID VALUE ---" ;;
+ esac
+ ;;
+ -) # STDIN and end of arguments
+ break
+ ;;
+ -*) # any other - argument
+ errMsg "--- UNKNOWN OPTION ---"
+ ;;
+ *) # end of arguments
+ break
+ ;;
+ esac
+ shift # next option
+ done
+ #
+ # get infile and outfile
+ infile=$1
+ outfile=$2
+fi
+
+# test that infile provided
+[ "$infile" = "" ] && errMsg "NO INPUT FILE SPECIFIED"
+
+# test that outfile provided
+[ "$outfile" = "" ] && errMsg "NO OUTPUT FILE SPECIFIED"
+
+
+tmpA="$dir/bevelborder_$$.mpc"
+tmpB="$dir/bevelborder_$$.cache"
+trap "rm -f $tmpA $tmpB; exit 0" 0
+trap "rm -f $tmpA $tmpB; exit 1" 1 2 3 15
+
+
+# read the input image into the TMP cached image.
+convert -quiet -regard-warnings "$infile" +repage "$tmpA" ||
+ errMsg "--- FILE $infile NOT READABLE OR HAS ZERO SIZE ---"
+
+# set default size
+if [ "$size" = "" ]; then
+ size=`convert $tmpA -ping -format "%[fx:floor(0.1*min(w,h))]" info:`
+ wsize=$size
+ hsize=$size
+fi
+
+# get input image size
+ww=`convert $infile -ping -format "%w" info:`
+hh=`convert $infile -ping -format "%h" info:`
+wd=`convert xc: -format "%[fx:$ww-2*$size]" info:`
+ht=`convert xc: -format "%[fx:$hh-2*$size]" info:`
+
+# adjust contrast and transparency to fractions
+contr1=`convert xc: -format "%[fx:$contrast-100]" info:`
+
+# setup bevel parameters
+if [ "$method" = "outer" ]; then
+ wsize2=$size
+ hsize2=0
+elif [ "$method" = "inner" ]; then
+ hsize2=$size
+ wsize2=0
+elif [ "$method" = "split" ]; then
+ wsize2=`convert xc: -format "%[fx:floor($percent*$size/100)]" info:`
+ hsize2=$(($size-$wsize2))
+fi
+echo "ww=$ww; hh=$hh; wd=$wd; ht=$ht; wsize2=$wsize2; hsize2=$hsize2"
+
+if [ "$bcolor" = "" ]; then
+ colorize=""
+else
+ colorize="-fill $bcolor -colorize $amount%"
+fi
+
+# process image
+convert $tmpA -size ${wd}x${ht} xc:"gray(50%)" \
+\( -clone 1 -frame ${size}x${size}+${wsize2}+${hsize2} \
+-auto-level -black-threshold 25% -white-threshold 75% $colorize \
+-brightness-contrast 0,${contr1}% \
+-clone 1 -gravity center -composite \) \
+-delete 1 -compose $type -composite \
+$outfile
+
+exit 0 \ No newline at end of file
diff --git a/frontend/imgradient/colors.html b/frontend/imgradient/colors.html
new file mode 100755
index 0000000..0ef22f9
--- /dev/null
+++ b/frontend/imgradient/colors.html
@@ -0,0 +1,5429 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- saved from url=(0124)https://mail.google.com/mail/?ui=2&ik=8c5c6e41c0&view=att&th=131a60939ee4c454&attid=0.1&disp=inline&realattid=f_gr2htzs60&zw -->
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head>
+<style type="text/css">
+*
+ {
+ font-family: sans-serif;
+ }
+</style>
+<body>
+
+
+
+<div>
+<h1><a></a>List of Color Names</h1>
+<div>
+
+<p>a list of named colors for use with PHOTOBLASTER:</p>
+
+<table>
+<tbody>
+ <tr>
+ <th align="right">Name</th>
+ <th align="center">Color</th>
+ <th align="left">RGB</th>
+ <th align="left">Hex</th>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow</td>
+ <td align="center" style="background-color:rgb(255, 250, 250)">snow</td>
+ <td align="left">rgb(255, 250, 250)</td>
+ <td align="left">#FFFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow1</td>
+ <td align="center" style="background-color:rgb(255, 250, 250)">snow1</td>
+ <td align="left">rgb(255, 250, 250)</td>
+ <td align="left">#FFFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow2</td>
+ <td align="center" style="background-color:rgb(238, 233, 233)">snow2</td>
+ <td align="left">rgb(238, 233, 233)</td>
+ <td align="left">#EEE9E9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown1</td>
+ <td align="center" style="background-color:rgb(255, 193, 193)">RosyBrown1</td>
+ <td align="left">rgb(255, 193, 193)</td>
+ <td align="left">#FFC1C1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown2</td>
+ <td align="center" style="background-color:rgb(238, 180, 180)">RosyBrown2</td>
+ <td align="left">rgb(238, 180, 180)</td>
+ <td align="left">#EEB4B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow3</td>
+ <td align="center" style="background-color:rgb(205, 201, 201)">snow3</td>
+ <td align="left">rgb(205, 201, 201)</td>
+ <td align="left">#CDC9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCoral</td>
+ <td align="center" style="background-color:rgb(240, 128, 128)">LightCoral</td>
+ <td align="left">rgb(240, 128, 128)</td>
+ <td align="left">#F08080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed1</td>
+ <td align="center" style="background-color:rgb(255, 106, 106)">IndianRed1</td>
+ <td align="left">rgb(255, 106, 106)</td>
+ <td align="left">#FF6A6A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown3</td>
+ <td align="center" style="background-color:rgb(205, 155, 155)">RosyBrown3</td>
+ <td align="left">rgb(205, 155, 155)</td>
+ <td align="left">#CD9B9B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed2</td>
+ <td align="center" style="background-color:rgb(238, 99, 99)">IndianRed2</td>
+ <td align="left">rgb(238, 99, 99)</td>
+ <td align="left">#EE6363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown</td>
+ <td align="center" style="background-color:rgb(188, 143, 143)">RosyBrown</td>
+ <td align="left">rgb(188, 143, 143)</td>
+ <td align="left">#BC8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown1</td>
+ <td align="center" style="background-color:rgb(255, 64, 64)">brown1</td>
+ <td align="left">rgb(255, 64, 64)</td>
+ <td align="left">#FF4040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick1</td>
+ <td align="center" style="background-color:rgb(255, 48, 48)">firebrick1</td>
+ <td align="left">rgb(255, 48, 48)</td>
+ <td align="left">#FF3030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown2</td>
+ <td align="center" style="background-color:rgb(238, 59, 59)">brown2</td>
+ <td align="left">rgb(238, 59, 59)</td>
+ <td align="left">#EE3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed</td>
+ <td align="center" style="background-color:rgb(205, 92, 92)">IndianRed</td>
+ <td align="left">rgb(205, 92, 92)</td>
+ <td align="left">#CD5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed3</td>
+ <td align="center" style="background-color:rgb(205, 85, 85)">IndianRed3</td>
+ <td align="left">rgb(205, 85, 85)</td>
+ <td align="left">#CD5555</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick2</td>
+ <td align="center" style="background-color:rgb(238, 44, 44)">firebrick2</td>
+ <td align="left">rgb(238, 44, 44)</td>
+ <td align="left">#EE2C2C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow4</td>
+ <td align="center" style="background-color:rgb(139, 137, 137)">snow4</td>
+ <td align="left">rgb(139, 137, 137)</td>
+ <td align="left">#8B8989</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown3</td>
+ <td align="center" style="background-color:rgb(205, 51, 51)">brown3</td>
+ <td align="left">rgb(205, 51, 51)</td>
+ <td align="left">#CD3333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red</td>
+ <td align="center" style="background-color:rgb(255, 0, 0)">red</td>
+ <td align="left">rgb(255, 0, 0)</td>
+ <td align="left">#FF0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red1</td>
+ <td align="center" style="background-color:rgb(255, 0, 0)">red1</td>
+ <td align="left">rgb(255, 0, 0)</td>
+ <td align="left">#FF0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown4</td>
+ <td align="center" style="background-color:rgb(139, 105, 105)">RosyBrown4</td>
+ <td align="left">rgb(139, 105, 105)</td>
+ <td align="left">#8B6969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick3</td>
+ <td align="center" style="background-color:rgb(205, 38, 38)">firebrick3</td>
+ <td align="left">rgb(205, 38, 38)</td>
+ <td align="left">#CD2626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red2</td>
+ <td align="center" style="background-color:rgb(238, 0, 0)">red2</td>
+ <td align="left">rgb(238, 0, 0)</td>
+ <td align="left">#EE0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick</td>
+ <td align="center" style="background-color:rgb(178, 34, 34)">firebrick</td>
+ <td align="left">rgb(178, 34, 34)</td>
+ <td align="left">#B22222</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown</td>
+ <td align="center" style="background-color:rgb(165, 42, 42)">brown</td>
+ <td align="left">rgb(165, 42, 42)</td>
+ <td align="left">#A52A2A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red3</td>
+ <td align="center" style="background-color:rgb(205, 0, 0)">red3</td>
+ <td align="left">rgb(205, 0, 0)</td>
+ <td align="left">#CD0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed4</td>
+ <td align="center" style="background-color:rgb(139, 58, 58)">IndianRed4</td>
+ <td align="left">rgb(139, 58, 58)</td>
+ <td align="left">#8B3A3A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown4</td>
+ <td align="center" style="background-color:rgb(139, 35, 35)">brown4</td>
+ <td align="left">rgb(139, 35, 35)</td>
+ <td align="left">#8B2323</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick4</td>
+ <td align="center" style="background-color:rgb(139, 26, 26)">firebrick4</td>
+ <td align="left">rgb(139, 26, 26)</td>
+ <td align="left">#8B1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkRed</td>
+ <td align="center" style="background-color:rgb(139, 0, 0)">DarkRed</td>
+ <td align="left">rgb(139, 0, 0)</td>
+ <td align="left">#8B0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red4</td>
+ <td align="center" style="background-color:rgb(139, 0, 0)">red4</td>
+ <td align="left">rgb(139, 0, 0)</td>
+ <td align="left">#8B0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon</td>
+ <td align="center" style="background-color:rgb(128, 0, 0)">maroon</td>
+ <td align="left">rgb(128, 0, 0)</td>
+ <td align="left">#800000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink1</td>
+ <td align="center" style="background-color:rgb(255, 174, 185)">LightPink1</td>
+ <td align="left">rgb(255, 174, 185)</td>
+ <td align="left">#FFAEB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink3</td>
+ <td align="center" style="background-color:rgb(205, 140, 149)">LightPink3</td>
+ <td align="left">rgb(205, 140, 149)</td>
+ <td align="left">#CD8C95</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink4</td>
+ <td align="center" style="background-color:rgb(139, 95, 101)">LightPink4</td>
+ <td align="left">rgb(139, 95, 101)</td>
+ <td align="left">#8B5F65</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink2</td>
+ <td align="center" style="background-color:rgb(238, 162, 173)">LightPink2</td>
+ <td align="left">rgb(238, 162, 173)</td>
+ <td align="left">#EEA2AD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink</td>
+ <td align="center" style="background-color:rgb(255, 182, 193)">LightPink</td>
+ <td align="left">rgb(255, 182, 193)</td>
+ <td align="left">#FFB6C1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink</td>
+ <td align="center" style="background-color:rgb(255, 192, 203)">pink</td>
+ <td align="left">rgb(255, 192, 203)</td>
+ <td align="left">#FFC0CB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">crimson</td>
+ <td align="center" style="background-color:rgb(220, 20, 60)">crimson</td>
+ <td align="left">rgb(220, 20, 60)</td>
+ <td align="left">#DC143C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink1</td>
+ <td align="center" style="background-color:rgb(255, 181, 197)">pink1</td>
+ <td align="left">rgb(255, 181, 197)</td>
+ <td align="left">#FFB5C5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink2</td>
+ <td align="center" style="background-color:rgb(238, 169, 184)">pink2</td>
+ <td align="left">rgb(238, 169, 184)</td>
+ <td align="left">#EEA9B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink3</td>
+ <td align="center" style="background-color:rgb(205, 145, 158)">pink3</td>
+ <td align="left">rgb(205, 145, 158)</td>
+ <td align="left">#CD919E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink4</td>
+ <td align="center" style="background-color:rgb(139, 99, 108)">pink4</td>
+ <td align="left">rgb(139, 99, 108)</td>
+ <td align="left">#8B636C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed4</td>
+ <td align="center" style="background-color:rgb(139, 71, 93)">PaleVioletRed4</td>
+ <td align="left">rgb(139, 71, 93)</td>
+ <td align="left">#8B475D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed</td>
+ <td align="center" style="background-color:rgb(219, 112, 147)">PaleVioletRed</td>
+ <td align="left">rgb(219, 112, 147)</td>
+ <td align="left">#DB7093</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed2</td>
+ <td align="center" style="background-color:rgb(238, 121, 159)">PaleVioletRed2</td>
+ <td align="left">rgb(238, 121, 159)</td>
+ <td align="left">#EE799F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed1</td>
+ <td align="center" style="background-color:rgb(255, 130, 171)">PaleVioletRed1</td>
+ <td align="left">rgb(255, 130, 171)</td>
+ <td align="left">#FF82AB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed3</td>
+ <td align="center" style="background-color:rgb(205, 104, 137)">PaleVioletRed3</td>
+ <td align="left">rgb(205, 104, 137)</td>
+ <td align="left">#CD6889</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush</td>
+ <td align="center" style="background-color:rgb(255, 240, 245)">LavenderBlush</td>
+ <td align="left">rgb(255, 240, 245)</td>
+ <td align="left">#FFF0F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush1</td>
+ <td align="center" style="background-color:rgb(255, 240, 245)">LavenderBlush1</td>
+ <td align="left">rgb(255, 240, 245)</td>
+ <td align="left">#FFF0F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush3</td>
+ <td align="center" style="background-color:rgb(205, 193, 197)">LavenderBlush3</td>
+ <td align="left">rgb(205, 193, 197)</td>
+ <td align="left">#CDC1C5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush2</td>
+ <td align="center" style="background-color:rgb(238, 224, 229)">LavenderBlush2</td>
+ <td align="left">rgb(238, 224, 229)</td>
+ <td align="left">#EEE0E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush4</td>
+ <td align="center" style="background-color:rgb(139, 131, 134)">LavenderBlush4</td>
+ <td align="left">rgb(139, 131, 134)</td>
+ <td align="left">#8B8386</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon</td>
+ <td align="center" style="background-color:rgb(176, 48, 96)">maroon</td>
+ <td align="left">rgb(176, 48, 96)</td>
+ <td align="left">#B03060</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink3</td>
+ <td align="center" style="background-color:rgb(205, 96, 144)">HotPink3</td>
+ <td align="left">rgb(205, 96, 144)</td>
+ <td align="left">#CD6090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed3</td>
+ <td align="center" style="background-color:rgb(205, 50, 120)">VioletRed3</td>
+ <td align="left">rgb(205, 50, 120)</td>
+ <td align="left">#CD3278</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed1</td>
+ <td align="center" style="background-color:rgb(255, 62, 150)">VioletRed1</td>
+ <td align="left">rgb(255, 62, 150)</td>
+ <td align="left">#FF3E96</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed2</td>
+ <td align="center" style="background-color:rgb(238, 58, 140)">VioletRed2</td>
+ <td align="left">rgb(238, 58, 140)</td>
+ <td align="left">#EE3A8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed4</td>
+ <td align="center" style="background-color:rgb(139, 34, 82)">VioletRed4</td>
+ <td align="left">rgb(139, 34, 82)</td>
+ <td align="left">#8B2252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink2</td>
+ <td align="center" style="background-color:rgb(238, 106, 167)">HotPink2</td>
+ <td align="left">rgb(238, 106, 167)</td>
+ <td align="left">#EE6AA7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink1</td>
+ <td align="center" style="background-color:rgb(255, 110, 180)">HotPink1</td>
+ <td align="left">rgb(255, 110, 180)</td>
+ <td align="left">#FF6EB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink4</td>
+ <td align="center" style="background-color:rgb(139, 58, 98)">HotPink4</td>
+ <td align="left">rgb(139, 58, 98)</td>
+ <td align="left">#8B3A62</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink</td>
+ <td align="center" style="background-color:rgb(255, 105, 180)">HotPink</td>
+ <td align="left">rgb(255, 105, 180)</td>
+ <td align="left">#FF69B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink</td>
+ <td align="center" style="background-color:rgb(255, 20, 147)">DeepPink</td>
+ <td align="left">rgb(255, 20, 147)</td>
+ <td align="left">#FF1493</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink1</td>
+ <td align="center" style="background-color:rgb(255, 20, 147)">DeepPink1</td>
+ <td align="left">rgb(255, 20, 147)</td>
+ <td align="left">#FF1493</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink2</td>
+ <td align="center" style="background-color:rgb(238, 18, 137)">DeepPink2</td>
+ <td align="left">rgb(238, 18, 137)</td>
+ <td align="left">#EE1289</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink3</td>
+ <td align="center" style="background-color:rgb(205, 16, 118)">DeepPink3</td>
+ <td align="left">rgb(205, 16, 118)</td>
+ <td align="left">#CD1076</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink4</td>
+ <td align="center" style="background-color:rgb(139, 10, 80)">DeepPink4</td>
+ <td align="left">rgb(139, 10, 80)</td>
+ <td align="left">#8B0A50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon1</td>
+ <td align="center" style="background-color:rgb(255, 52, 179)">maroon1</td>
+ <td align="left">rgb(255, 52, 179)</td>
+ <td align="left">#FF34B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon2</td>
+ <td align="center" style="background-color:rgb(238, 48, 167)">maroon2</td>
+ <td align="left">rgb(238, 48, 167)</td>
+ <td align="left">#EE30A7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon3</td>
+ <td align="center" style="background-color:rgb(205, 41, 144)">maroon3</td>
+ <td align="left">rgb(205, 41, 144)</td>
+ <td align="left">#CD2990</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon4</td>
+ <td align="center" style="background-color:rgb(139, 28, 98)">maroon4</td>
+ <td align="left">rgb(139, 28, 98)</td>
+ <td align="left">#8B1C62</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumVioletRed</td>
+ <td align="center" style="background-color:rgb(199, 21, 133)">MediumVioletRed</td>
+ <td align="left">rgb(199, 21, 133)</td>
+ <td align="left">#C71585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed</td>
+ <td align="center" style="background-color:rgb(208, 32, 144)">VioletRed</td>
+ <td align="left">rgb(208, 32, 144)</td>
+ <td align="left">#D02090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid2</td>
+ <td align="center" style="background-color:rgb(238, 122, 233)">orchid2</td>
+ <td align="left">rgb(238, 122, 233)</td>
+ <td align="left">#EE7AE9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid</td>
+ <td align="center" style="background-color:rgb(218, 112, 214)">orchid</td>
+ <td align="left">rgb(218, 112, 214)</td>
+ <td align="left">#DA70D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid1</td>
+ <td align="center" style="background-color:rgb(255, 131, 250)">orchid1</td>
+ <td align="left">rgb(255, 131, 250)</td>
+ <td align="left">#FF83FA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid3</td>
+ <td align="center" style="background-color:rgb(205, 105, 201)">orchid3</td>
+ <td align="left">rgb(205, 105, 201)</td>
+ <td align="left">#CD69C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid4</td>
+ <td align="center" style="background-color:rgb(139, 71, 137)">orchid4</td>
+ <td align="left">rgb(139, 71, 137)</td>
+ <td align="left">#8B4789</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle1</td>
+ <td align="center" style="background-color:rgb(255, 225, 255)">thistle1</td>
+ <td align="left">rgb(255, 225, 255)</td>
+ <td align="left">#FFE1FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle2</td>
+ <td align="center" style="background-color:rgb(238, 210, 238)">thistle2</td>
+ <td align="left">rgb(238, 210, 238)</td>
+ <td align="left">#EED2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum1</td>
+ <td align="center" style="background-color:rgb(255, 187, 255)">plum1</td>
+ <td align="left">rgb(255, 187, 255)</td>
+ <td align="left">#FFBBFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum2</td>
+ <td align="center" style="background-color:rgb(238, 174, 238)">plum2</td>
+ <td align="left">rgb(238, 174, 238)</td>
+ <td align="left">#EEAEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle</td>
+ <td align="center" style="background-color:rgb(216, 191, 216)">thistle</td>
+ <td align="left">rgb(216, 191, 216)</td>
+ <td align="left">#D8BFD8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle3</td>
+ <td align="center" style="background-color:rgb(205, 181, 205)">thistle3</td>
+ <td align="left">rgb(205, 181, 205)</td>
+ <td align="left">#CDB5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum</td>
+ <td align="center" style="background-color:rgb(221, 160, 221)">plum</td>
+ <td align="left">rgb(221, 160, 221)</td>
+ <td align="left">#DDA0DD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">violet</td>
+ <td align="center" style="background-color:rgb(238, 130, 238)">violet</td>
+ <td align="left">rgb(238, 130, 238)</td>
+ <td align="left">#EE82EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum3</td>
+ <td align="center" style="background-color:rgb(205, 150, 205)">plum3</td>
+ <td align="left">rgb(205, 150, 205)</td>
+ <td align="left">#CD96CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle4</td>
+ <td align="center" style="background-color:rgb(139, 123, 139)">thistle4</td>
+ <td align="left">rgb(139, 123, 139)</td>
+ <td align="left">#8B7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">fuchsia</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">fuchsia</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">magenta</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta1</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">magenta1</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum4</td>
+ <td align="center" style="background-color:rgb(139, 102, 139)">plum4</td>
+ <td align="left">rgb(139, 102, 139)</td>
+ <td align="left">#8B668B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta2</td>
+ <td align="center" style="background-color:rgb(238, 0, 238)">magenta2</td>
+ <td align="left">rgb(238, 0, 238)</td>
+ <td align="left">#EE00EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta3</td>
+ <td align="center" style="background-color:rgb(205, 0, 205)">magenta3</td>
+ <td align="left">rgb(205, 0, 205)</td>
+ <td align="left">#CD00CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkMagenta</td>
+ <td align="center" style="background-color:rgb(139, 0, 139)">DarkMagenta</td>
+ <td align="left">rgb(139, 0, 139)</td>
+ <td align="left">#8B008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta4</td>
+ <td align="center" style="background-color:rgb(139, 0, 139)">magenta4</td>
+ <td align="left">rgb(139, 0, 139)</td>
+ <td align="left">#8B008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple</td>
+ <td align="center" style="background-color:rgb(128, 0, 128)">purple</td>
+ <td align="left">rgb(128, 0, 128)</td>
+ <td align="left">#800080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid</td>
+ <td align="center" style="background-color:rgb(186, 85, 211)">MediumOrchid</td>
+ <td align="left">rgb(186, 85, 211)</td>
+ <td align="left">#BA55D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid1</td>
+ <td align="center" style="background-color:rgb(224, 102, 255)">MediumOrchid1</td>
+ <td align="left">rgb(224, 102, 255)</td>
+ <td align="left">#E066FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid2</td>
+ <td align="center" style="background-color:rgb(209, 95, 238)">MediumOrchid2</td>
+ <td align="left">rgb(209, 95, 238)</td>
+ <td align="left">#D15FEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid3</td>
+ <td align="center" style="background-color:rgb(180, 82, 205)">MediumOrchid3</td>
+ <td align="left">rgb(180, 82, 205)</td>
+ <td align="left">#B452CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid4</td>
+ <td align="center" style="background-color:rgb(122, 55, 139)">MediumOrchid4</td>
+ <td align="left">rgb(122, 55, 139)</td>
+ <td align="left">#7A378B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkViolet</td>
+ <td align="center" style="background-color:rgb(148, 0, 211)">DarkViolet</td>
+ <td align="left">rgb(148, 0, 211)</td>
+ <td align="left">#9400D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid</td>
+ <td align="center" style="background-color:rgb(153, 50, 204)">DarkOrchid</td>
+ <td align="left">rgb(153, 50, 204)</td>
+ <td align="left">#9932CC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid1</td>
+ <td align="center" style="background-color:rgb(191, 62, 255)">DarkOrchid1</td>
+ <td align="left">rgb(191, 62, 255)</td>
+ <td align="left">#BF3EFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid3</td>
+ <td align="center" style="background-color:rgb(154, 50, 205)">DarkOrchid3</td>
+ <td align="left">rgb(154, 50, 205)</td>
+ <td align="left">#9A32CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid2</td>
+ <td align="center" style="background-color:rgb(178, 58, 238)">DarkOrchid2</td>
+ <td align="left">rgb(178, 58, 238)</td>
+ <td align="left">#B23AEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid4</td>
+ <td align="center" style="background-color:rgb(104, 34, 139)">DarkOrchid4</td>
+ <td align="left">rgb(104, 34, 139)</td>
+ <td align="left">#68228B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple</td>
+ <td align="center" style="background-color:rgb(160, 32, 240)">purple</td>
+ <td align="left">rgb(160, 32, 240)</td>
+ <td align="left">#A020F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">indigo</td>
+ <td align="center" style="background-color:rgb( 75, 0, 130)">indigo</td>
+ <td align="left">rgb( 75, 0, 130)</td>
+ <td align="left">#4B0082</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">BlueViolet</td>
+ <td align="center" style="background-color:rgb(138, 43, 226)">BlueViolet</td>
+ <td align="left">rgb(138, 43, 226)</td>
+ <td align="left">#8A2BE2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple2</td>
+ <td align="center" style="background-color:rgb(145, 44, 238)">purple2</td>
+ <td align="left">rgb(145, 44, 238)</td>
+ <td align="left">#912CEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple3</td>
+ <td align="center" style="background-color:rgb(125, 38, 205)">purple3</td>
+ <td align="left">rgb(125, 38, 205)</td>
+ <td align="left">#7D26CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple4</td>
+ <td align="center" style="background-color:rgb( 85, 26, 139)">purple4</td>
+ <td align="left">rgb( 85, 26, 139)</td>
+ <td align="left">#551A8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple1</td>
+ <td align="center" style="background-color:rgb(155, 48, 255)">purple1</td>
+ <td align="left">rgb(155, 48, 255)</td>
+ <td align="left">#9B30FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple</td>
+ <td align="center" style="background-color:rgb(147, 112, 219)">MediumPurple</td>
+ <td align="left">rgb(147, 112, 219)</td>
+ <td align="left">#9370DB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple1</td>
+ <td align="center" style="background-color:rgb(171, 130, 255)">MediumPurple1</td>
+ <td align="left">rgb(171, 130, 255)</td>
+ <td align="left">#AB82FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple2</td>
+ <td align="center" style="background-color:rgb(159, 121, 238)">MediumPurple2</td>
+ <td align="left">rgb(159, 121, 238)</td>
+ <td align="left">#9F79EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple3</td>
+ <td align="center" style="background-color:rgb(137, 104, 205)">MediumPurple3</td>
+ <td align="left">rgb(137, 104, 205)</td>
+ <td align="left">#8968CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple4</td>
+ <td align="center" style="background-color:rgb( 93, 71, 139)">MediumPurple4</td>
+ <td align="left">rgb( 93, 71, 139)</td>
+ <td align="left">#5D478B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateBlue</td>
+ <td align="center" style="background-color:rgb( 72, 61, 139)">DarkSlateBlue</td>
+ <td align="left">rgb( 72, 61, 139)</td>
+ <td align="left">#483D8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateBlue</td>
+ <td align="center" style="background-color:rgb(132, 112, 255)">LightSlateBlue</td>
+ <td align="left">rgb(132, 112, 255)</td>
+ <td align="left">#8470FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSlateBlue</td>
+ <td align="center" style="background-color:rgb(123, 104, 238)">MediumSlateBlue</td>
+ <td align="left">rgb(123, 104, 238)</td>
+ <td align="left">#7B68EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue</td>
+ <td align="center" style="background-color:rgb(106, 90, 205)">SlateBlue</td>
+ <td align="left">rgb(106, 90, 205)</td>
+ <td align="left">#6A5ACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue1</td>
+ <td align="center" style="background-color:rgb(131, 111, 255)">SlateBlue1</td>
+ <td align="left">rgb(131, 111, 255)</td>
+ <td align="left">#836FFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue2</td>
+ <td align="center" style="background-color:rgb(122, 103, 238)">SlateBlue2</td>
+ <td align="left">rgb(122, 103, 238)</td>
+ <td align="left">#7A67EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue3</td>
+ <td align="center" style="background-color:rgb(105, 89, 205)">SlateBlue3</td>
+ <td align="left">rgb(105, 89, 205)</td>
+ <td align="left">#6959CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue4</td>
+ <td align="center" style="background-color:rgb( 71, 60, 139)">SlateBlue4</td>
+ <td align="left">rgb( 71, 60, 139)</td>
+ <td align="left">#473C8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">GhostWhite</td>
+ <td align="center" style="background-color:rgb(248, 248, 255)">GhostWhite</td>
+ <td align="left">rgb(248, 248, 255)</td>
+ <td align="left">#F8F8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">lavender</td>
+ <td align="center" style="background-color:rgb(230, 230, 250)">lavender</td>
+ <td align="left">rgb(230, 230, 250)</td>
+ <td align="left">#E6E6FA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 255)">blue</td>
+ <td align="left">rgb( 0, 0, 255)</td>
+ <td align="left">#0000FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue1</td>
+ <td align="center" style="background-color:rgb( 0, 0, 255)">blue1</td>
+ <td align="left">rgb( 0, 0, 255)</td>
+ <td align="left">#0000FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue2</td>
+ <td align="center" style="background-color:rgb( 0, 0, 238)">blue2</td>
+ <td align="left">rgb( 0, 0, 238)</td>
+ <td align="left">#0000EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue3</td>
+ <td align="center" style="background-color:rgb( 0, 0, 205)">blue3</td>
+ <td align="left">rgb( 0, 0, 205)</td>
+ <td align="left">#0000CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 205)">MediumBlue</td>
+ <td align="left">rgb( 0, 0, 205)</td>
+ <td align="left">#0000CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue4</td>
+ <td align="center" style="background-color:rgb( 0, 0, 139)">blue4</td>
+ <td align="left">rgb( 0, 0, 139)</td>
+ <td align="left">#00008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 139)">DarkBlue</td>
+ <td align="left">rgb( 0, 0, 139)</td>
+ <td align="left">#00008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MidnightBlue</td>
+ <td align="center" style="background-color:rgb( 25, 25, 112)">MidnightBlue</td>
+ <td align="left">rgb( 25, 25, 112)</td>
+ <td align="left">#191970</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">navy</td>
+ <td align="center" style="background-color:rgb( 0, 0, 128)">navy</td>
+ <td align="left">rgb( 0, 0, 128)</td>
+ <td align="left">#000080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavyBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 128)">NavyBlue</td>
+ <td align="left">rgb( 0, 0, 128)</td>
+ <td align="left">#000080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue</td>
+ <td align="center" style="background-color:rgb( 65, 105, 225)">RoyalBlue</td>
+ <td align="left">rgb( 65, 105, 225)</td>
+ <td align="left">#4169E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue1</td>
+ <td align="center" style="background-color:rgb( 72, 118, 255)">RoyalBlue1</td>
+ <td align="left">rgb( 72, 118, 255)</td>
+ <td align="left">#4876FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue2</td>
+ <td align="center" style="background-color:rgb( 67, 110, 238)">RoyalBlue2</td>
+ <td align="left">rgb( 67, 110, 238)</td>
+ <td align="left">#436EEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue3</td>
+ <td align="center" style="background-color:rgb( 58, 95, 205)">RoyalBlue3</td>
+ <td align="left">rgb( 58, 95, 205)</td>
+ <td align="left">#3A5FCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue4</td>
+ <td align="center" style="background-color:rgb( 39, 64, 139)">RoyalBlue4</td>
+ <td align="left">rgb( 39, 64, 139)</td>
+ <td align="left">#27408B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CornflowerBlue</td>
+ <td align="center" style="background-color:rgb(100, 149, 237)">CornflowerBlue</td>
+ <td align="left">rgb(100, 149, 237)</td>
+ <td align="left">#6495ED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue</td>
+ <td align="center" style="background-color:rgb(176, 196, 222)">LightSteelBlue</td>
+ <td align="left">rgb(176, 196, 222)</td>
+ <td align="left">#B0C4DE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue1</td>
+ <td align="center" style="background-color:rgb(202, 225, 255)">LightSteelBlue1</td>
+ <td align="left">rgb(202, 225, 255)</td>
+ <td align="left">#CAE1FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue2</td>
+ <td align="center" style="background-color:rgb(188, 210, 238)">LightSteelBlue2</td>
+ <td align="left">rgb(188, 210, 238)</td>
+ <td align="left">#BCD2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue3</td>
+ <td align="center" style="background-color:rgb(162, 181, 205)">LightSteelBlue3</td>
+ <td align="left">rgb(162, 181, 205)</td>
+ <td align="left">#A2B5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue4</td>
+ <td align="center" style="background-color:rgb(110, 123, 139)">LightSteelBlue4</td>
+ <td align="left">rgb(110, 123, 139)</td>
+ <td align="left">#6E7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray4</td>
+ <td align="center" style="background-color:rgb(108, 123, 139)">SlateGray4</td>
+ <td align="left">rgb(108, 123, 139)</td>
+ <td align="left">#6C7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray1</td>
+ <td align="center" style="background-color:rgb(198, 226, 255)">SlateGray1</td>
+ <td align="left">rgb(198, 226, 255)</td>
+ <td align="left">#C6E2FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray2</td>
+ <td align="center" style="background-color:rgb(185, 211, 238)">SlateGray2</td>
+ <td align="left">rgb(185, 211, 238)</td>
+ <td align="left">#B9D3EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray3</td>
+ <td align="center" style="background-color:rgb(159, 182, 205)">SlateGray3</td>
+ <td align="left">rgb(159, 182, 205)</td>
+ <td align="left">#9FB6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateGray</td>
+ <td align="center" style="background-color:rgb(119, 136, 153)">LightSlateGray</td>
+ <td align="left">rgb(119, 136, 153)</td>
+ <td align="left">#778899</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateGrey</td>
+ <td align="center" style="background-color:rgb(119, 136, 153)">LightSlateGrey</td>
+ <td align="left">rgb(119, 136, 153)</td>
+ <td align="left">#778899</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray</td>
+ <td align="center" style="background-color:rgb(112, 128, 144)">SlateGray</td>
+ <td align="left">rgb(112, 128, 144)</td>
+ <td align="left">#708090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGrey</td>
+ <td align="center" style="background-color:rgb(112, 128, 144)">SlateGrey</td>
+ <td align="left">rgb(112, 128, 144)</td>
+ <td align="left">#708090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue</td>
+ <td align="center" style="background-color:rgb( 30, 144, 255)">DodgerBlue</td>
+ <td align="left">rgb( 30, 144, 255)</td>
+ <td align="left">#1E90FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue1</td>
+ <td align="center" style="background-color:rgb( 30, 144, 255)">DodgerBlue1</td>
+ <td align="left">rgb( 30, 144, 255)</td>
+ <td align="left">#1E90FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue2</td>
+ <td align="center" style="background-color:rgb( 28, 134, 238)">DodgerBlue2</td>
+ <td align="left">rgb( 28, 134, 238)</td>
+ <td align="left">#1C86EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue4</td>
+ <td align="center" style="background-color:rgb( 16, 78, 139)">DodgerBlue4</td>
+ <td align="left">rgb( 16, 78, 139)</td>
+ <td align="left">#104E8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue3</td>
+ <td align="center" style="background-color:rgb( 24, 116, 205)">DodgerBlue3</td>
+ <td align="left">rgb( 24, 116, 205)</td>
+ <td align="left">#1874CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AliceBlue</td>
+ <td align="center" style="background-color:rgb(240, 248, 255)">AliceBlue</td>
+ <td align="left">rgb(240, 248, 255)</td>
+ <td align="left">#F0F8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue4</td>
+ <td align="center" style="background-color:rgb( 54, 100, 139)">SteelBlue4</td>
+ <td align="left">rgb( 54, 100, 139)</td>
+ <td align="left">#36648B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue</td>
+ <td align="center" style="background-color:rgb( 70, 130, 180)">SteelBlue</td>
+ <td align="left">rgb( 70, 130, 180)</td>
+ <td align="left">#4682B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue1</td>
+ <td align="center" style="background-color:rgb( 99, 184, 255)">SteelBlue1</td>
+ <td align="left">rgb( 99, 184, 255)</td>
+ <td align="left">#63B8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue2</td>
+ <td align="center" style="background-color:rgb( 92, 172, 238)">SteelBlue2</td>
+ <td align="left">rgb( 92, 172, 238)</td>
+ <td align="left">#5CACEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue3</td>
+ <td align="center" style="background-color:rgb( 79, 148, 205)">SteelBlue3</td>
+ <td align="left">rgb( 79, 148, 205)</td>
+ <td align="left">#4F94CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue4</td>
+ <td align="center" style="background-color:rgb( 74, 112, 139)">SkyBlue4</td>
+ <td align="left">rgb( 74, 112, 139)</td>
+ <td align="left">#4A708B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue1</td>
+ <td align="center" style="background-color:rgb(135, 206, 255)">SkyBlue1</td>
+ <td align="left">rgb(135, 206, 255)</td>
+ <td align="left">#87CEFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue2</td>
+ <td align="center" style="background-color:rgb(126, 192, 238)">SkyBlue2</td>
+ <td align="left">rgb(126, 192, 238)</td>
+ <td align="left">#7EC0EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue3</td>
+ <td align="center" style="background-color:rgb(108, 166, 205)">SkyBlue3</td>
+ <td align="left">rgb(108, 166, 205)</td>
+ <td align="left">#6CA6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue</td>
+ <td align="center" style="background-color:rgb(135, 206, 250)">LightSkyBlue</td>
+ <td align="left">rgb(135, 206, 250)</td>
+ <td align="left">#87CEFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue4</td>
+ <td align="center" style="background-color:rgb( 96, 123, 139)">LightSkyBlue4</td>
+ <td align="left">rgb( 96, 123, 139)</td>
+ <td align="left">#607B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue1</td>
+ <td align="center" style="background-color:rgb(176, 226, 255)">LightSkyBlue1</td>
+ <td align="left">rgb(176, 226, 255)</td>
+ <td align="left">#B0E2FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue2</td>
+ <td align="center" style="background-color:rgb(164, 211, 238)">LightSkyBlue2</td>
+ <td align="left">rgb(164, 211, 238)</td>
+ <td align="left">#A4D3EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue3</td>
+ <td align="center" style="background-color:rgb(141, 182, 205)">LightSkyBlue3</td>
+ <td align="left">rgb(141, 182, 205)</td>
+ <td align="left">#8DB6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue</td>
+ <td align="center" style="background-color:rgb(135, 206, 235)">SkyBlue</td>
+ <td align="left">rgb(135, 206, 235)</td>
+ <td align="left">#87CEEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue3</td>
+ <td align="center" style="background-color:rgb(154, 192, 205)">LightBlue3</td>
+ <td align="left">rgb(154, 192, 205)</td>
+ <td align="left">#9AC0CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue</td>
+ <td align="center" style="background-color:rgb( 0, 191, 255)">DeepSkyBlue</td>
+ <td align="left">rgb( 0, 191, 255)</td>
+ <td align="left">#00BFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue1</td>
+ <td align="center" style="background-color:rgb( 0, 191, 255)">DeepSkyBlue1</td>
+ <td align="left">rgb( 0, 191, 255)</td>
+ <td align="left">#00BFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue2</td>
+ <td align="center" style="background-color:rgb( 0, 178, 238)">DeepSkyBlue2</td>
+ <td align="left">rgb( 0, 178, 238)</td>
+ <td align="left">#00B2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue4</td>
+ <td align="center" style="background-color:rgb( 0, 104, 139)">DeepSkyBlue4</td>
+ <td align="left">rgb( 0, 104, 139)</td>
+ <td align="left">#00688B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue3</td>
+ <td align="center" style="background-color:rgb( 0, 154, 205)">DeepSkyBlue3</td>
+ <td align="left">rgb( 0, 154, 205)</td>
+ <td align="left">#009ACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue1</td>
+ <td align="center" style="background-color:rgb(191, 239, 255)">LightBlue1</td>
+ <td align="left">rgb(191, 239, 255)</td>
+ <td align="left">#BFEFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue2</td>
+ <td align="center" style="background-color:rgb(178, 223, 238)">LightBlue2</td>
+ <td align="left">rgb(178, 223, 238)</td>
+ <td align="left">#B2DFEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue</td>
+ <td align="center" style="background-color:rgb(173, 216, 230)">LightBlue</td>
+ <td align="left">rgb(173, 216, 230)</td>
+ <td align="left">#ADD8E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue4</td>
+ <td align="center" style="background-color:rgb(104, 131, 139)">LightBlue4</td>
+ <td align="left">rgb(104, 131, 139)</td>
+ <td align="left">#68838B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PowderBlue</td>
+ <td align="center" style="background-color:rgb(176, 224, 230)">PowderBlue</td>
+ <td align="left">rgb(176, 224, 230)</td>
+ <td align="left">#B0E0E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue1</td>
+ <td align="center" style="background-color:rgb(152, 245, 255)">CadetBlue1</td>
+ <td align="left">rgb(152, 245, 255)</td>
+ <td align="left">#98F5FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue2</td>
+ <td align="center" style="background-color:rgb(142, 229, 238)">CadetBlue2</td>
+ <td align="left">rgb(142, 229, 238)</td>
+ <td align="left">#8EE5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue3</td>
+ <td align="center" style="background-color:rgb(122, 197, 205)">CadetBlue3</td>
+ <td align="left">rgb(122, 197, 205)</td>
+ <td align="left">#7AC5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue4</td>
+ <td align="center" style="background-color:rgb( 83, 134, 139)">CadetBlue4</td>
+ <td align="left">rgb( 83, 134, 139)</td>
+ <td align="left">#53868B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise1</td>
+ <td align="center" style="background-color:rgb( 0, 245, 255)">turquoise1</td>
+ <td align="left">rgb( 0, 245, 255)</td>
+ <td align="left">#00F5FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise2</td>
+ <td align="center" style="background-color:rgb( 0, 229, 238)">turquoise2</td>
+ <td align="left">rgb( 0, 229, 238)</td>
+ <td align="left">#00E5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise3</td>
+ <td align="center" style="background-color:rgb( 0, 197, 205)">turquoise3</td>
+ <td align="left">rgb( 0, 197, 205)</td>
+ <td align="left">#00C5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise4</td>
+ <td align="center" style="background-color:rgb( 0, 134, 139)">turquoise4</td>
+ <td align="left">rgb( 0, 134, 139)</td>
+ <td align="left">#00868B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cadet blue</td>
+ <td align="center" style="background-color:rgb( 95, 158, 160)">cadet blue</td>
+ <td align="left">rgb( 95, 158, 160)</td>
+ <td align="left">#5F9EA0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue</td>
+ <td align="center" style="background-color:rgb( 95, 158, 160)">CadetBlue</td>
+ <td align="left">rgb( 95, 158, 160)</td>
+ <td align="left">#5F9EA0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkTurquoise</td>
+ <td align="center" style="background-color:rgb( 0, 206, 209)">DarkTurquoise</td>
+ <td align="left">rgb( 0, 206, 209)</td>
+ <td align="left">#00CED1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure</td>
+ <td align="center" style="background-color:rgb(240, 255, 255)">azure</td>
+ <td align="left">rgb(240, 255, 255)</td>
+ <td align="left">#F0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure1</td>
+ <td align="center" style="background-color:rgb(240, 255, 255)">azure1</td>
+ <td align="left">rgb(240, 255, 255)</td>
+ <td align="left">#F0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan</td>
+ <td align="center" style="background-color:rgb(224, 255, 255)">LightCyan</td>
+ <td align="left">rgb(224, 255, 255)</td>
+ <td align="left">#E0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan1</td>
+ <td align="center" style="background-color:rgb(224, 255, 255)">LightCyan1</td>
+ <td align="left">rgb(224, 255, 255)</td>
+ <td align="left">#E0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure2</td>
+ <td align="center" style="background-color:rgb(224, 238, 238)">azure2</td>
+ <td align="left">rgb(224, 238, 238)</td>
+ <td align="left">#E0EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan2</td>
+ <td align="center" style="background-color:rgb(209, 238, 238)">LightCyan2</td>
+ <td align="left">rgb(209, 238, 238)</td>
+ <td align="left">#D1EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise1</td>
+ <td align="center" style="background-color:rgb(187, 255, 255)">PaleTurquoise1</td>
+ <td align="left">rgb(187, 255, 255)</td>
+ <td align="left">#BBFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise</td>
+ <td align="center" style="background-color:rgb(175, 238, 238)">PaleTurquoise</td>
+ <td align="left">rgb(175, 238, 238)</td>
+ <td align="left">#AFEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise2</td>
+ <td align="center" style="background-color:rgb(174, 238, 238)">PaleTurquoise2</td>
+ <td align="left">rgb(174, 238, 238)</td>
+ <td align="left">#AEEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray1</td>
+ <td align="center" style="background-color:rgb(151, 255, 255)">DarkSlateGray1</td>
+ <td align="left">rgb(151, 255, 255)</td>
+ <td align="left">#97FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure3</td>
+ <td align="center" style="background-color:rgb(193, 205, 205)">azure3</td>
+ <td align="left">rgb(193, 205, 205)</td>
+ <td align="left">#C1CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan3</td>
+ <td align="center" style="background-color:rgb(180, 205, 205)">LightCyan3</td>
+ <td align="left">rgb(180, 205, 205)</td>
+ <td align="left">#B4CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray2</td>
+ <td align="center" style="background-color:rgb(141, 238, 238)">DarkSlateGray2</td>
+ <td align="left">rgb(141, 238, 238)</td>
+ <td align="left">#8DEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise3</td>
+ <td align="center" style="background-color:rgb(150, 205, 205)">PaleTurquoise3</td>
+ <td align="left">rgb(150, 205, 205)</td>
+ <td align="left">#96CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray3</td>
+ <td align="center" style="background-color:rgb(121, 205, 205)">DarkSlateGray3</td>
+ <td align="left">rgb(121, 205, 205)</td>
+ <td align="left">#79CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure4</td>
+ <td align="center" style="background-color:rgb(131, 139, 139)">azure4</td>
+ <td align="left">rgb(131, 139, 139)</td>
+ <td align="left">#838B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan4</td>
+ <td align="center" style="background-color:rgb(122, 139, 139)">LightCyan4</td>
+ <td align="left">rgb(122, 139, 139)</td>
+ <td align="left">#7A8B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aqua</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">aqua</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">cyan</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">cyan1</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise4</td>
+ <td align="center" style="background-color:rgb(102, 139, 139)">PaleTurquoise4</td>
+ <td align="left">rgb(102, 139, 139)</td>
+ <td align="left">#668B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 238)">cyan2</td>
+ <td align="left">rgb( 0, 238, 238)</td>
+ <td align="left">#00EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray4</td>
+ <td align="center" style="background-color:rgb( 82, 139, 139)">DarkSlateGray4</td>
+ <td align="left">rgb( 82, 139, 139)</td>
+ <td align="left">#528B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 205)">cyan3</td>
+ <td align="left">rgb( 0, 205, 205)</td>
+ <td align="left">#00CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 139)">cyan4</td>
+ <td align="left">rgb( 0, 139, 139)</td>
+ <td align="left">#008B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkCyan</td>
+ <td align="center" style="background-color:rgb( 0, 139, 139)">DarkCyan</td>
+ <td align="left">rgb( 0, 139, 139)</td>
+ <td align="left">#008B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">teal</td>
+ <td align="center" style="background-color:rgb( 0, 128, 128)">teal</td>
+ <td align="left">rgb( 0, 128, 128)</td>
+ <td align="left">#008080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray</td>
+ <td align="center" style="background-color:rgb( 47, 79, 79)">DarkSlateGray</td>
+ <td align="left">rgb( 47, 79, 79)</td>
+ <td align="left">#2F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGrey</td>
+ <td align="center" style="background-color:rgb( 47, 79, 79)">DarkSlateGrey</td>
+ <td align="left">rgb( 47, 79, 79)</td>
+ <td align="left">#2F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumTurquoise</td>
+ <td align="center" style="background-color:rgb( 72, 209, 204)">MediumTurquoise</td>
+ <td align="left">rgb( 72, 209, 204)</td>
+ <td align="left">#48D1CC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSeaGreen</td>
+ <td align="center" style="background-color:rgb( 32, 178, 170)">LightSeaGreen</td>
+ <td align="left">rgb( 32, 178, 170)</td>
+ <td align="left">#20B2AA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise</td>
+ <td align="center" style="background-color:rgb( 64, 224, 208)">turquoise</td>
+ <td align="left">rgb( 64, 224, 208)</td>
+ <td align="left">#40E0D0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine4</td>
+ <td align="center" style="background-color:rgb( 69, 139, 116)">aquamarine4</td>
+ <td align="left">rgb( 69, 139, 116)</td>
+ <td align="left">#458B74</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine</td>
+ <td align="center" style="background-color:rgb(127, 255, 212)">aquamarine</td>
+ <td align="left">rgb(127, 255, 212)</td>
+ <td align="left">#7FFFD4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine1</td>
+ <td align="center" style="background-color:rgb(127, 255, 212)">aquamarine1</td>
+ <td align="left">rgb(127, 255, 212)</td>
+ <td align="left">#7FFFD4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine2</td>
+ <td align="center" style="background-color:rgb(118, 238, 198)">aquamarine2</td>
+ <td align="left">rgb(118, 238, 198)</td>
+ <td align="left">#76EEC6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine3</td>
+ <td align="center" style="background-color:rgb(102, 205, 170)">aquamarine3</td>
+ <td align="left">rgb(102, 205, 170)</td>
+ <td align="left">#66CDAA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumAquamarine</td>
+ <td align="center" style="background-color:rgb(102, 205, 170)">MediumAquamarine</td>
+ <td align="left">rgb(102, 205, 170)</td>
+ <td align="left">#66CDAA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSpringGreen</td>
+ <td align="center" style="background-color:rgb( 0, 250, 154)">MediumSpringGreen</td>
+ <td align="left">rgb( 0, 250, 154)</td>
+ <td align="left">#00FA9A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MintCream</td>
+ <td align="center" style="background-color:rgb(245, 255, 250)">MintCream</td>
+ <td align="left">rgb(245, 255, 250)</td>
+ <td align="left">#F5FFFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen</td>
+ <td align="center" style="background-color:rgb( 0, 255, 127)">SpringGreen</td>
+ <td align="left">rgb( 0, 255, 127)</td>
+ <td align="left">#00FF7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 127)">SpringGreen1</td>
+ <td align="left">rgb( 0, 255, 127)</td>
+ <td align="left">#00FF7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 118)">SpringGreen2</td>
+ <td align="left">rgb( 0, 238, 118)</td>
+ <td align="left">#00EE76</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 102)">SpringGreen3</td>
+ <td align="left">rgb( 0, 205, 102)</td>
+ <td align="left">#00CD66</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 69)">SpringGreen4</td>
+ <td align="left">rgb( 0, 139, 69)</td>
+ <td align="left">#008B45</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSeaGreen</td>
+ <td align="center" style="background-color:rgb( 60, 179, 113)">MediumSeaGreen</td>
+ <td align="left">rgb( 60, 179, 113)</td>
+ <td align="left">#3CB371</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen</td>
+ <td align="center" style="background-color:rgb( 46, 139, 87)">SeaGreen</td>
+ <td align="left">rgb( 46, 139, 87)</td>
+ <td align="left">#2E8B57</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen3</td>
+ <td align="center" style="background-color:rgb( 67, 205, 128)">SeaGreen3</td>
+ <td align="left">rgb( 67, 205, 128)</td>
+ <td align="left">#43CD80</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen1</td>
+ <td align="center" style="background-color:rgb( 84, 255, 159)">SeaGreen1</td>
+ <td align="left">rgb( 84, 255, 159)</td>
+ <td align="left">#54FF9F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen4</td>
+ <td align="center" style="background-color:rgb( 46, 139, 87)">SeaGreen4</td>
+ <td align="left">rgb( 46, 139, 87)</td>
+ <td align="left">#2E8B57</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen2</td>
+ <td align="center" style="background-color:rgb( 78, 238, 148)">SeaGreen2</td>
+ <td align="left">rgb( 78, 238, 148)</td>
+ <td align="left">#4EEE94</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumForestGreen</td>
+ <td align="center" style="background-color:rgb( 50, 129, 75)">MediumForestGreen</td>
+ <td align="left">rgb( 50, 129, 75)</td>
+ <td align="left">#32814B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew</td>
+ <td align="center" style="background-color:rgb(240, 255, 240)">honeydew</td>
+ <td align="left">rgb(240, 255, 240)</td>
+ <td align="left">#F0FFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew1</td>
+ <td align="center" style="background-color:rgb(240, 255, 240)">honeydew1</td>
+ <td align="left">rgb(240, 255, 240)</td>
+ <td align="left">#F0FFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew2</td>
+ <td align="center" style="background-color:rgb(224, 238, 224)">honeydew2</td>
+ <td align="left">rgb(224, 238, 224)</td>
+ <td align="left">#E0EEE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen1</td>
+ <td align="center" style="background-color:rgb(193, 255, 193)">DarkSeaGreen1</td>
+ <td align="left">rgb(193, 255, 193)</td>
+ <td align="left">#C1FFC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen2</td>
+ <td align="center" style="background-color:rgb(180, 238, 180)">DarkSeaGreen2</td>
+ <td align="left">rgb(180, 238, 180)</td>
+ <td align="left">#B4EEB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen1</td>
+ <td align="center" style="background-color:rgb(154, 255, 154)">PaleGreen1</td>
+ <td align="left">rgb(154, 255, 154)</td>
+ <td align="left">#9AFF9A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen</td>
+ <td align="center" style="background-color:rgb(152, 251, 152)">PaleGreen</td>
+ <td align="left">rgb(152, 251, 152)</td>
+ <td align="left">#98FB98</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew3</td>
+ <td align="center" style="background-color:rgb(193, 205, 193)">honeydew3</td>
+ <td align="left">rgb(193, 205, 193)</td>
+ <td align="left">#C1CDC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGreen</td>
+ <td align="center" style="background-color:rgb(144, 238, 144)">LightGreen</td>
+ <td align="left">rgb(144, 238, 144)</td>
+ <td align="left">#90EE90</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen2</td>
+ <td align="center" style="background-color:rgb(144, 238, 144)">PaleGreen2</td>
+ <td align="left">rgb(144, 238, 144)</td>
+ <td align="left">#90EE90</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen3</td>
+ <td align="center" style="background-color:rgb(155, 205, 155)">DarkSeaGreen3</td>
+ <td align="left">rgb(155, 205, 155)</td>
+ <td align="left">#9BCD9B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen</td>
+ <td align="center" style="background-color:rgb(143, 188, 143)">DarkSeaGreen</td>
+ <td align="left">rgb(143, 188, 143)</td>
+ <td align="left">#8FBC8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen3</td>
+ <td align="center" style="background-color:rgb(124, 205, 124)">PaleGreen3</td>
+ <td align="left">rgb(124, 205, 124)</td>
+ <td align="left">#7CCD7C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew4</td>
+ <td align="center" style="background-color:rgb(131, 139, 131)">honeydew4</td>
+ <td align="left">rgb(131, 139, 131)</td>
+ <td align="left">#838B83</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 0)">green1</td>
+ <td align="left">rgb( 0, 255, 0)</td>
+ <td align="left">#00FF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">lime</td>
+ <td align="center" style="background-color:rgb( 0, 255, 0)">lime</td>
+ <td align="left">rgb( 0, 255, 0)</td>
+ <td align="left">#00FF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LimeGreen</td>
+ <td align="center" style="background-color:rgb( 50, 205, 50)">LimeGreen</td>
+ <td align="left">rgb( 50, 205, 50)</td>
+ <td align="left">#32CD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen4</td>
+ <td align="center" style="background-color:rgb(105, 139, 105)">DarkSeaGreen4</td>
+ <td align="left">rgb(105, 139, 105)</td>
+ <td align="left">#698B69</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 0)">green2</td>
+ <td align="left">rgb( 0, 238, 0)</td>
+ <td align="left">#00EE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen4</td>
+ <td align="center" style="background-color:rgb( 84, 139, 84)">PaleGreen4</td>
+ <td align="left">rgb( 84, 139, 84)</td>
+ <td align="left">#548B54</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 0)">green3</td>
+ <td align="left">rgb( 0, 205, 0)</td>
+ <td align="left">#00CD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ForestGreen</td>
+ <td align="center" style="background-color:rgb( 34, 139, 34)">ForestGreen</td>
+ <td align="left">rgb( 34, 139, 34)</td>
+ <td align="left">#228B22</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 0)">green4</td>
+ <td align="left">rgb( 0, 139, 0)</td>
+ <td align="left">#008B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green</td>
+ <td align="center" style="background-color:rgb( 0, 128, 0)">green</td>
+ <td align="left">rgb( 0, 128, 0)</td>
+ <td align="left">#008000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGreen</td>
+ <td align="center" style="background-color:rgb( 0, 100, 0)">DarkGreen</td>
+ <td align="left">rgb( 0, 100, 0)</td>
+ <td align="left">#006400</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LawnGreen</td>
+ <td align="center" style="background-color:rgb(124, 252, 0)">LawnGreen</td>
+ <td align="left">rgb(124, 252, 0)</td>
+ <td align="left">#7CFC00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse</td>
+ <td align="center" style="background-color:rgb(127, 255, 0)">chartreuse</td>
+ <td align="left">rgb(127, 255, 0)</td>
+ <td align="left">#7FFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse1</td>
+ <td align="center" style="background-color:rgb(127, 255, 0)">chartreuse1</td>
+ <td align="left">rgb(127, 255, 0)</td>
+ <td align="left">#7FFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse2</td>
+ <td align="center" style="background-color:rgb(118, 238, 0)">chartreuse2</td>
+ <td align="left">rgb(118, 238, 0)</td>
+ <td align="left">#76EE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse3</td>
+ <td align="center" style="background-color:rgb(102, 205, 0)">chartreuse3</td>
+ <td align="left">rgb(102, 205, 0)</td>
+ <td align="left">#66CD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse4</td>
+ <td align="center" style="background-color:rgb( 69, 139, 0)">chartreuse4</td>
+ <td align="left">rgb( 69, 139, 0)</td>
+ <td align="left">#458B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">GreenYellow</td>
+ <td align="center" style="background-color:rgb(173, 255, 47)">GreenYellow</td>
+ <td align="left">rgb(173, 255, 47)</td>
+ <td align="left">#ADFF2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen3</td>
+ <td align="center" style="background-color:rgb(162, 205, 90)">DarkOliveGreen3</td>
+ <td align="left">rgb(162, 205, 90)</td>
+ <td align="left">#A2CD5A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen1</td>
+ <td align="center" style="background-color:rgb(202, 255, 112)">DarkOliveGreen1</td>
+ <td align="left">rgb(202, 255, 112)</td>
+ <td align="left">#CAFF70</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen2</td>
+ <td align="center" style="background-color:rgb(188, 238, 104)">DarkOliveGreen2</td>
+ <td align="left">rgb(188, 238, 104)</td>
+ <td align="left">#BCEE68</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen4</td>
+ <td align="center" style="background-color:rgb(110, 139, 61)">DarkOliveGreen4</td>
+ <td align="left">rgb(110, 139, 61)</td>
+ <td align="left">#6E8B3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen</td>
+ <td align="center" style="background-color:rgb( 85, 107, 47)">DarkOliveGreen</td>
+ <td align="left">rgb( 85, 107, 47)</td>
+ <td align="left">#556B2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab</td>
+ <td align="center" style="background-color:rgb(107, 142, 35)">OliveDrab</td>
+ <td align="left">rgb(107, 142, 35)</td>
+ <td align="left">#6B8E23</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab1</td>
+ <td align="center" style="background-color:rgb(192, 255, 62)">OliveDrab1</td>
+ <td align="left">rgb(192, 255, 62)</td>
+ <td align="left">#C0FF3E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab2</td>
+ <td align="center" style="background-color:rgb(179, 238, 58)">OliveDrab2</td>
+ <td align="left">rgb(179, 238, 58)</td>
+ <td align="left">#B3EE3A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab3</td>
+ <td align="center" style="background-color:rgb(154, 205, 50)">OliveDrab3</td>
+ <td align="left">rgb(154, 205, 50)</td>
+ <td align="left">#9ACD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">YellowGreen</td>
+ <td align="center" style="background-color:rgb(154, 205, 50)">YellowGreen</td>
+ <td align="left">rgb(154, 205, 50)</td>
+ <td align="left">#9ACD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab4</td>
+ <td align="center" style="background-color:rgb(105, 139, 34)">OliveDrab4</td>
+ <td align="left">rgb(105, 139, 34)</td>
+ <td align="left">#698B22</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory</td>
+ <td align="center" style="background-color:rgb(255, 255, 240)">ivory</td>
+ <td align="left">rgb(255, 255, 240)</td>
+ <td align="left">#FFFFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory1</td>
+ <td align="center" style="background-color:rgb(255, 255, 240)">ivory1</td>
+ <td align="left">rgb(255, 255, 240)</td>
+ <td align="left">#FFFFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow</td>
+ <td align="center" style="background-color:rgb(255, 255, 224)">LightYellow</td>
+ <td align="left">rgb(255, 255, 224)</td>
+ <td align="left">#FFFFE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow1</td>
+ <td align="center" style="background-color:rgb(255, 255, 224)">LightYellow1</td>
+ <td align="left">rgb(255, 255, 224)</td>
+ <td align="left">#FFFFE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">beige</td>
+ <td align="center" style="background-color:rgb(245, 245, 220)">beige</td>
+ <td align="left">rgb(245, 245, 220)</td>
+ <td align="left">#F5F5DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory2</td>
+ <td align="center" style="background-color:rgb(238, 238, 224)">ivory2</td>
+ <td align="left">rgb(238, 238, 224)</td>
+ <td align="left">#EEEEE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrodYellow</td>
+ <td align="center" style="background-color:rgb(250, 250, 210)">LightGoldenrodYellow</td>
+ <td align="left">rgb(250, 250, 210)</td>
+ <td align="left">#FAFAD2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow2</td>
+ <td align="center" style="background-color:rgb(238, 238, 209)">LightYellow2</td>
+ <td align="left">rgb(238, 238, 209)</td>
+ <td align="left">#EEEED1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory3</td>
+ <td align="center" style="background-color:rgb(205, 205, 193)">ivory3</td>
+ <td align="left">rgb(205, 205, 193)</td>
+ <td align="left">#CDCDC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow3</td>
+ <td align="center" style="background-color:rgb(205, 205, 180)">LightYellow3</td>
+ <td align="left">rgb(205, 205, 180)</td>
+ <td align="left">#CDCDB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory4</td>
+ <td align="center" style="background-color:rgb(139, 139, 131)">ivory4</td>
+ <td align="left">rgb(139, 139, 131)</td>
+ <td align="left">#8B8B83</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow4</td>
+ <td align="center" style="background-color:rgb(139, 139, 122)">LightYellow4</td>
+ <td align="left">rgb(139, 139, 122)</td>
+ <td align="left">#8B8B7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow</td>
+ <td align="center" style="background-color:rgb(255, 255, 0)">yellow</td>
+ <td align="left">rgb(255, 255, 0)</td>
+ <td align="left">#FFFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow1</td>
+ <td align="center" style="background-color:rgb(255, 255, 0)">yellow1</td>
+ <td align="left">rgb(255, 255, 0)</td>
+ <td align="left">#FFFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow2</td>
+ <td align="center" style="background-color:rgb(238, 238, 0)">yellow2</td>
+ <td align="left">rgb(238, 238, 0)</td>
+ <td align="left">#EEEE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow3</td>
+ <td align="center" style="background-color:rgb(205, 205, 0)">yellow3</td>
+ <td align="left">rgb(205, 205, 0)</td>
+ <td align="left">#CDCD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow4</td>
+ <td align="center" style="background-color:rgb(139, 139, 0)">yellow4</td>
+ <td align="left">rgb(139, 139, 0)</td>
+ <td align="left">#8B8B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">olive</td>
+ <td align="center" style="background-color:rgb(128, 128, 0)">olive</td>
+ <td align="left">rgb(128, 128, 0)</td>
+ <td align="left">#808000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkKhaki</td>
+ <td align="center" style="background-color:rgb(189, 183, 107)">DarkKhaki</td>
+ <td align="left">rgb(189, 183, 107)</td>
+ <td align="left">#BDB76B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki2</td>
+ <td align="center" style="background-color:rgb(238, 230, 133)">khaki2</td>
+ <td align="left">rgb(238, 230, 133)</td>
+ <td align="left">#EEE685</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon4</td>
+ <td align="center" style="background-color:rgb(139, 137, 112)">LemonChiffon4</td>
+ <td align="left">rgb(139, 137, 112)</td>
+ <td align="left">#8B8970</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki1</td>
+ <td align="center" style="background-color:rgb(255, 246, 143)">khaki1</td>
+ <td align="left">rgb(255, 246, 143)</td>
+ <td align="left">#FFF68F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki3</td>
+ <td align="center" style="background-color:rgb(205, 198, 115)">khaki3</td>
+ <td align="left">rgb(205, 198, 115)</td>
+ <td align="left">#CDC673</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki4</td>
+ <td align="center" style="background-color:rgb(139, 134, 78)">khaki4</td>
+ <td align="left">rgb(139, 134, 78)</td>
+ <td align="left">#8B864E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGoldenrod</td>
+ <td align="center" style="background-color:rgb(238, 232, 170)">PaleGoldenrod</td>
+ <td align="left">rgb(238, 232, 170)</td>
+ <td align="left">#EEE8AA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon</td>
+ <td align="center" style="background-color:rgb(255, 250, 205)">LemonChiffon</td>
+ <td align="left">rgb(255, 250, 205)</td>
+ <td align="left">#FFFACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon1</td>
+ <td align="center" style="background-color:rgb(255, 250, 205)">LemonChiffon1</td>
+ <td align="left">rgb(255, 250, 205)</td>
+ <td align="left">#FFFACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki</td>
+ <td align="center" style="background-color:rgb(240, 230, 140)">khaki</td>
+ <td align="left">rgb(240, 230, 140)</td>
+ <td align="left">#F0E68C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon3</td>
+ <td align="center" style="background-color:rgb(205, 201, 165)">LemonChiffon3</td>
+ <td align="left">rgb(205, 201, 165)</td>
+ <td align="left">#CDC9A5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon2</td>
+ <td align="center" style="background-color:rgb(238, 233, 191)">LemonChiffon2</td>
+ <td align="left">rgb(238, 233, 191)</td>
+ <td align="left">#EEE9BF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumGoldenRod</td>
+ <td align="center" style="background-color:rgb(209, 193, 102)">MediumGoldenRod</td>
+ <td align="left">rgb(209, 193, 102)</td>
+ <td align="left">#D1C166</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk4</td>
+ <td align="center" style="background-color:rgb(139, 136, 120)">cornsilk4</td>
+ <td align="left">rgb(139, 136, 120)</td>
+ <td align="left">#8B8878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold</td>
+ <td align="center" style="background-color:rgb(255, 215, 0)">gold</td>
+ <td align="left">rgb(255, 215, 0)</td>
+ <td align="left">#FFD700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold1</td>
+ <td align="center" style="background-color:rgb(255, 215, 0)">gold1</td>
+ <td align="left">rgb(255, 215, 0)</td>
+ <td align="left">#FFD700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold2</td>
+ <td align="center" style="background-color:rgb(238, 201, 0)">gold2</td>
+ <td align="left">rgb(238, 201, 0)</td>
+ <td align="left">#EEC900</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold3</td>
+ <td align="center" style="background-color:rgb(205, 173, 0)">gold3</td>
+ <td align="left">rgb(205, 173, 0)</td>
+ <td align="left">#CDAD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold4</td>
+ <td align="center" style="background-color:rgb(139, 117, 0)">gold4</td>
+ <td align="left">rgb(139, 117, 0)</td>
+ <td align="left">#8B7500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod</td>
+ <td align="center" style="background-color:rgb(238, 221, 130)">LightGoldenrod</td>
+ <td align="left">rgb(238, 221, 130)</td>
+ <td align="left">#EEDD82</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 129, 76)">LightGoldenrod4</td>
+ <td align="left">rgb(139, 129, 76)</td>
+ <td align="left">#8B814C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 236, 139)">LightGoldenrod1</td>
+ <td align="left">rgb(255, 236, 139)</td>
+ <td align="left">#FFEC8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 190, 112)">LightGoldenrod3</td>
+ <td align="left">rgb(205, 190, 112)</td>
+ <td align="left">#CDBE70</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 220, 130)">LightGoldenrod2</td>
+ <td align="left">rgb(238, 220, 130)</td>
+ <td align="left">#EEDC82</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk3</td>
+ <td align="center" style="background-color:rgb(205, 200, 177)">cornsilk3</td>
+ <td align="left">rgb(205, 200, 177)</td>
+ <td align="left">#CDC8B1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk2</td>
+ <td align="center" style="background-color:rgb(238, 232, 205)">cornsilk2</td>
+ <td align="left">rgb(238, 232, 205)</td>
+ <td align="left">#EEE8CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk</td>
+ <td align="center" style="background-color:rgb(255, 248, 220)">cornsilk</td>
+ <td align="left">rgb(255, 248, 220)</td>
+ <td align="left">#FFF8DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk1</td>
+ <td align="center" style="background-color:rgb(255, 248, 220)">cornsilk1</td>
+ <td align="left">rgb(255, 248, 220)</td>
+ <td align="left">#FFF8DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod</td>
+ <td align="center" style="background-color:rgb(218, 165, 32)">goldenrod</td>
+ <td align="left">rgb(218, 165, 32)</td>
+ <td align="left">#DAA520</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 193, 37)">goldenrod1</td>
+ <td align="left">rgb(255, 193, 37)</td>
+ <td align="left">#FFC125</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 180, 34)">goldenrod2</td>
+ <td align="left">rgb(238, 180, 34)</td>
+ <td align="left">#EEB422</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 155, 29)">goldenrod3</td>
+ <td align="left">rgb(205, 155, 29)</td>
+ <td align="left">#CD9B1D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 105, 20)">goldenrod4</td>
+ <td align="left">rgb(139, 105, 20)</td>
+ <td align="left">#8B6914</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod</td>
+ <td align="center" style="background-color:rgb(184, 134, 11)">DarkGoldenrod</td>
+ <td align="left">rgb(184, 134, 11)</td>
+ <td align="left">#B8860B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 185, 15)">DarkGoldenrod1</td>
+ <td align="left">rgb(255, 185, 15)</td>
+ <td align="left">#FFB90F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 173, 14)">DarkGoldenrod2</td>
+ <td align="left">rgb(238, 173, 14)</td>
+ <td align="left">#EEAD0E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 149, 12)">DarkGoldenrod3</td>
+ <td align="left">rgb(205, 149, 12)</td>
+ <td align="left">#CD950C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 101, 8)">DarkGoldenrod4</td>
+ <td align="left">rgb(139, 101, 8)</td>
+ <td align="left">#8B6508</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">FloralWhite</td>
+ <td align="center" style="background-color:rgb(255, 250, 240)">FloralWhite</td>
+ <td align="left">rgb(255, 250, 240)</td>
+ <td align="left">#FFFAF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat2</td>
+ <td align="center" style="background-color:rgb(238, 216, 174)">wheat2</td>
+ <td align="left">rgb(238, 216, 174)</td>
+ <td align="left">#EED8AE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OldLace</td>
+ <td align="center" style="background-color:rgb(253, 245, 230)">OldLace</td>
+ <td align="left">rgb(253, 245, 230)</td>
+ <td align="left">#FDF5E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat</td>
+ <td align="center" style="background-color:rgb(245, 222, 179)">wheat</td>
+ <td align="left">rgb(245, 222, 179)</td>
+ <td align="left">#F5DEB3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat1</td>
+ <td align="center" style="background-color:rgb(255, 231, 186)">wheat1</td>
+ <td align="left">rgb(255, 231, 186)</td>
+ <td align="left">#FFE7BA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat3</td>
+ <td align="center" style="background-color:rgb(205, 186, 150)">wheat3</td>
+ <td align="left">rgb(205, 186, 150)</td>
+ <td align="left">#CDBA96</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange</td>
+ <td align="center" style="background-color:rgb(255, 165, 0)">orange</td>
+ <td align="left">rgb(255, 165, 0)</td>
+ <td align="left">#FFA500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange1</td>
+ <td align="center" style="background-color:rgb(255, 165, 0)">orange1</td>
+ <td align="left">rgb(255, 165, 0)</td>
+ <td align="left">#FFA500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange2</td>
+ <td align="center" style="background-color:rgb(238, 154, 0)">orange2</td>
+ <td align="left">rgb(238, 154, 0)</td>
+ <td align="left">#EE9A00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange3</td>
+ <td align="center" style="background-color:rgb(205, 133, 0)">orange3</td>
+ <td align="left">rgb(205, 133, 0)</td>
+ <td align="left">#CD8500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange4</td>
+ <td align="center" style="background-color:rgb(139, 90, 0)">orange4</td>
+ <td align="left">rgb(139, 90, 0)</td>
+ <td align="left">#8B5A00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat4</td>
+ <td align="center" style="background-color:rgb(139, 126, 102)">wheat4</td>
+ <td align="left">rgb(139, 126, 102)</td>
+ <td align="left">#8B7E66</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">moccasin</td>
+ <td align="center" style="background-color:rgb(255, 228, 181)">moccasin</td>
+ <td align="left">rgb(255, 228, 181)</td>
+ <td align="left">#FFE4B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PapayaWhip</td>
+ <td align="center" style="background-color:rgb(255, 239, 213)">PapayaWhip</td>
+ <td align="left">rgb(255, 239, 213)</td>
+ <td align="left">#FFEFD5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite3</td>
+ <td align="center" style="background-color:rgb(205, 179, 139)">NavajoWhite3</td>
+ <td align="left">rgb(205, 179, 139)</td>
+ <td align="left">#CDB38B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">BlanchedAlmond</td>
+ <td align="center" style="background-color:rgb(255, 235, 205)">BlanchedAlmond</td>
+ <td align="left">rgb(255, 235, 205)</td>
+ <td align="left">#FFEBCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite</td>
+ <td align="center" style="background-color:rgb(255, 222, 173)">NavajoWhite</td>
+ <td align="left">rgb(255, 222, 173)</td>
+ <td align="left">#FFDEAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite1</td>
+ <td align="center" style="background-color:rgb(255, 222, 173)">NavajoWhite1</td>
+ <td align="left">rgb(255, 222, 173)</td>
+ <td align="left">#FFDEAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite2</td>
+ <td align="center" style="background-color:rgb(238, 207, 161)">NavajoWhite2</td>
+ <td align="left">rgb(238, 207, 161)</td>
+ <td align="left">#EECFA1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite4</td>
+ <td align="center" style="background-color:rgb(139, 121, 94)">NavajoWhite4</td>
+ <td align="left">rgb(139, 121, 94)</td>
+ <td align="left">#8B795E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite4</td>
+ <td align="center" style="background-color:rgb(139, 131, 120)">AntiqueWhite4</td>
+ <td align="left">rgb(139, 131, 120)</td>
+ <td align="left">#8B8378</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite</td>
+ <td align="center" style="background-color:rgb(250, 235, 215)">AntiqueWhite</td>
+ <td align="left">rgb(250, 235, 215)</td>
+ <td align="left">#FAEBD7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan</td>
+ <td align="center" style="background-color:rgb(210, 180, 140)">tan</td>
+ <td align="left">rgb(210, 180, 140)</td>
+ <td align="left">#D2B48C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque4</td>
+ <td align="center" style="background-color:rgb(139, 125, 107)">bisque4</td>
+ <td align="left">rgb(139, 125, 107)</td>
+ <td align="left">#8B7D6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood</td>
+ <td align="center" style="background-color:rgb(222, 184, 135)">burlywood</td>
+ <td align="left">rgb(222, 184, 135)</td>
+ <td align="left">#DEB887</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite2</td>
+ <td align="center" style="background-color:rgb(238, 223, 204)">AntiqueWhite2</td>
+ <td align="left">rgb(238, 223, 204)</td>
+ <td align="left">#EEDFCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood1</td>
+ <td align="center" style="background-color:rgb(255, 211, 155)">burlywood1</td>
+ <td align="left">rgb(255, 211, 155)</td>
+ <td align="left">#FFD39B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood3</td>
+ <td align="center" style="background-color:rgb(205, 170, 125)">burlywood3</td>
+ <td align="left">rgb(205, 170, 125)</td>
+ <td align="left">#CDAA7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood2</td>
+ <td align="center" style="background-color:rgb(238, 197, 145)">burlywood2</td>
+ <td align="left">rgb(238, 197, 145)</td>
+ <td align="left">#EEC591</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite1</td>
+ <td align="center" style="background-color:rgb(255, 239, 219)">AntiqueWhite1</td>
+ <td align="left">rgb(255, 239, 219)</td>
+ <td align="left">#FFEFDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood4</td>
+ <td align="center" style="background-color:rgb(139, 115, 85)">burlywood4</td>
+ <td align="left">rgb(139, 115, 85)</td>
+ <td align="left">#8B7355</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite3</td>
+ <td align="center" style="background-color:rgb(205, 192, 176)">AntiqueWhite3</td>
+ <td align="left">rgb(205, 192, 176)</td>
+ <td align="left">#CDC0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange</td>
+ <td align="center" style="background-color:rgb(255, 140, 0)">DarkOrange</td>
+ <td align="left">rgb(255, 140, 0)</td>
+ <td align="left">#FF8C00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque2</td>
+ <td align="center" style="background-color:rgb(238, 213, 183)">bisque2</td>
+ <td align="left">rgb(238, 213, 183)</td>
+ <td align="left">#EED5B7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque</td>
+ <td align="center" style="background-color:rgb(255, 228, 196)">bisque</td>
+ <td align="left">rgb(255, 228, 196)</td>
+ <td align="left">#FFE4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque1</td>
+ <td align="center" style="background-color:rgb(255, 228, 196)">bisque1</td>
+ <td align="left">rgb(255, 228, 196)</td>
+ <td align="left">#FFE4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque3</td>
+ <td align="center" style="background-color:rgb(205, 183, 158)">bisque3</td>
+ <td align="left">rgb(205, 183, 158)</td>
+ <td align="left">#CDB79E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange1</td>
+ <td align="center" style="background-color:rgb(255, 127, 0)">DarkOrange1</td>
+ <td align="left">rgb(255, 127, 0)</td>
+ <td align="left">#FF7F00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">linen</td>
+ <td align="center" style="background-color:rgb(250, 240, 230)">linen</td>
+ <td align="left">rgb(250, 240, 230)</td>
+ <td align="left">#FAF0E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange2</td>
+ <td align="center" style="background-color:rgb(238, 118, 0)">DarkOrange2</td>
+ <td align="left">rgb(238, 118, 0)</td>
+ <td align="left">#EE7600</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange3</td>
+ <td align="center" style="background-color:rgb(205, 102, 0)">DarkOrange3</td>
+ <td align="left">rgb(205, 102, 0)</td>
+ <td align="left">#CD6600</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange4</td>
+ <td align="center" style="background-color:rgb(139, 69, 0)">DarkOrange4</td>
+ <td align="left">rgb(139, 69, 0)</td>
+ <td align="left">#8B4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">peru</td>
+ <td align="center" style="background-color:rgb(205, 133, 63)">peru</td>
+ <td align="left">rgb(205, 133, 63)</td>
+ <td align="left">#CD853F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan1</td>
+ <td align="center" style="background-color:rgb(255, 165, 79)">tan1</td>
+ <td align="left">rgb(255, 165, 79)</td>
+ <td align="left">#FFA54F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan2</td>
+ <td align="center" style="background-color:rgb(238, 154, 73)">tan2</td>
+ <td align="left">rgb(238, 154, 73)</td>
+ <td align="left">#EE9A49</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan3</td>
+ <td align="center" style="background-color:rgb(205, 133, 63)">tan3</td>
+ <td align="left">rgb(205, 133, 63)</td>
+ <td align="left">#CD853F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan4</td>
+ <td align="center" style="background-color:rgb(139, 90, 43)">tan4</td>
+ <td align="left">rgb(139, 90, 43)</td>
+ <td align="left">#8B5A2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff</td>
+ <td align="center" style="background-color:rgb(255, 218, 185)">PeachPuff</td>
+ <td align="left">rgb(255, 218, 185)</td>
+ <td align="left">#FFDAB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff1</td>
+ <td align="center" style="background-color:rgb(255, 218, 185)">PeachPuff1</td>
+ <td align="left">rgb(255, 218, 185)</td>
+ <td align="left">#FFDAB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff4</td>
+ <td align="center" style="background-color:rgb(139, 119, 101)">PeachPuff4</td>
+ <td align="left">rgb(139, 119, 101)</td>
+ <td align="left">#8B7765</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff2</td>
+ <td align="center" style="background-color:rgb(238, 203, 173)">PeachPuff2</td>
+ <td align="left">rgb(238, 203, 173)</td>
+ <td align="left">#EECBAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff3</td>
+ <td align="center" style="background-color:rgb(205, 175, 149)">PeachPuff3</td>
+ <td align="left">rgb(205, 175, 149)</td>
+ <td align="left">#CDAF95</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SandyBrown</td>
+ <td align="center" style="background-color:rgb(244, 164, 96)">SandyBrown</td>
+ <td align="left">rgb(244, 164, 96)</td>
+ <td align="left">#F4A460</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell4</td>
+ <td align="center" style="background-color:rgb(139, 134, 130)">seashell4</td>
+ <td align="left">rgb(139, 134, 130)</td>
+ <td align="left">#8B8682</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell2</td>
+ <td align="center" style="background-color:rgb(238, 229, 222)">seashell2</td>
+ <td align="left">rgb(238, 229, 222)</td>
+ <td align="left">#EEE5DE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell3</td>
+ <td align="center" style="background-color:rgb(205, 197, 191)">seashell3</td>
+ <td align="left">rgb(205, 197, 191)</td>
+ <td align="left">#CDC5BF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate</td>
+ <td align="center" style="background-color:rgb(210, 105, 30)">chocolate</td>
+ <td align="left">rgb(210, 105, 30)</td>
+ <td align="left">#D2691E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate1</td>
+ <td align="center" style="background-color:rgb(255, 127, 36)">chocolate1</td>
+ <td align="left">rgb(255, 127, 36)</td>
+ <td align="left">#FF7F24</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate2</td>
+ <td align="center" style="background-color:rgb(238, 118, 33)">chocolate2</td>
+ <td align="left">rgb(238, 118, 33)</td>
+ <td align="left">#EE7621</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate3</td>
+ <td align="center" style="background-color:rgb(205, 102, 29)">chocolate3</td>
+ <td align="left">rgb(205, 102, 29)</td>
+ <td align="left">#CD661D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate4</td>
+ <td align="center" style="background-color:rgb(139, 69, 19)">chocolate4</td>
+ <td align="left">rgb(139, 69, 19)</td>
+ <td align="left">#8B4513</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SaddleBrown</td>
+ <td align="center" style="background-color:rgb(139, 69, 19)">SaddleBrown</td>
+ <td align="left">rgb(139, 69, 19)</td>
+ <td align="left">#8B4513</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell</td>
+ <td align="center" style="background-color:rgb(255, 245, 238)">seashell</td>
+ <td align="left">rgb(255, 245, 238)</td>
+ <td align="left">#FFF5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell1</td>
+ <td align="center" style="background-color:rgb(255, 245, 238)">seashell1</td>
+ <td align="left">rgb(255, 245, 238)</td>
+ <td align="left">#FFF5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna4</td>
+ <td align="center" style="background-color:rgb(139, 71, 38)">sienna4</td>
+ <td align="left">rgb(139, 71, 38)</td>
+ <td align="left">#8B4726</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna</td>
+ <td align="center" style="background-color:rgb(160, 82, 45)">sienna</td>
+ <td align="left">rgb(160, 82, 45)</td>
+ <td align="left">#A0522D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna1</td>
+ <td align="center" style="background-color:rgb(255, 130, 71)">sienna1</td>
+ <td align="left">rgb(255, 130, 71)</td>
+ <td align="left">#FF8247</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna2</td>
+ <td align="center" style="background-color:rgb(238, 121, 66)">sienna2</td>
+ <td align="left">rgb(238, 121, 66)</td>
+ <td align="left">#EE7942</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna3</td>
+ <td align="center" style="background-color:rgb(205, 104, 57)">sienna3</td>
+ <td align="left">rgb(205, 104, 57)</td>
+ <td align="left">#CD6839</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon3</td>
+ <td align="center" style="background-color:rgb(205, 129, 98)">LightSalmon3</td>
+ <td align="left">rgb(205, 129, 98)</td>
+ <td align="left">#CD8162</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon</td>
+ <td align="center" style="background-color:rgb(255, 160, 122)">LightSalmon</td>
+ <td align="left">rgb(255, 160, 122)</td>
+ <td align="left">#FFA07A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon1</td>
+ <td align="center" style="background-color:rgb(255, 160, 122)">LightSalmon1</td>
+ <td align="left">rgb(255, 160, 122)</td>
+ <td align="left">#FFA07A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon4</td>
+ <td align="center" style="background-color:rgb(139, 87, 66)">LightSalmon4</td>
+ <td align="left">rgb(139, 87, 66)</td>
+ <td align="left">#8B5742</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon2</td>
+ <td align="center" style="background-color:rgb(238, 149, 114)">LightSalmon2</td>
+ <td align="left">rgb(238, 149, 114)</td>
+ <td align="left">#EE9572</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral</td>
+ <td align="center" style="background-color:rgb(255, 127, 80)">coral</td>
+ <td align="left">rgb(255, 127, 80)</td>
+ <td align="left">#FF7F50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed</td>
+ <td align="center" style="background-color:rgb(255, 69, 0)">OrangeRed</td>
+ <td align="left">rgb(255, 69, 0)</td>
+ <td align="left">#FF4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed1</td>
+ <td align="center" style="background-color:rgb(255, 69, 0)">OrangeRed1</td>
+ <td align="left">rgb(255, 69, 0)</td>
+ <td align="left">#FF4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed2</td>
+ <td align="center" style="background-color:rgb(238, 64, 0)">OrangeRed2</td>
+ <td align="left">rgb(238, 64, 0)</td>
+ <td align="left">#EE4000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed3</td>
+ <td align="center" style="background-color:rgb(205, 55, 0)">OrangeRed3</td>
+ <td align="left">rgb(205, 55, 0)</td>
+ <td align="left">#CD3700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed4</td>
+ <td align="center" style="background-color:rgb(139, 37, 0)">OrangeRed4</td>
+ <td align="left">rgb(139, 37, 0)</td>
+ <td align="left">#8B2500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSalmon</td>
+ <td align="center" style="background-color:rgb(233, 150, 122)">DarkSalmon</td>
+ <td align="left">rgb(233, 150, 122)</td>
+ <td align="left">#E9967A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon1</td>
+ <td align="center" style="background-color:rgb(255, 140, 105)">salmon1</td>
+ <td align="left">rgb(255, 140, 105)</td>
+ <td align="left">#FF8C69</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon2</td>
+ <td align="center" style="background-color:rgb(238, 130, 98)">salmon2</td>
+ <td align="left">rgb(238, 130, 98)</td>
+ <td align="left">#EE8262</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon3</td>
+ <td align="center" style="background-color:rgb(205, 112, 84)">salmon3</td>
+ <td align="left">rgb(205, 112, 84)</td>
+ <td align="left">#CD7054</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon4</td>
+ <td align="center" style="background-color:rgb(139, 76, 57)">salmon4</td>
+ <td align="left">rgb(139, 76, 57)</td>
+ <td align="left">#8B4C39</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral1</td>
+ <td align="center" style="background-color:rgb(255, 114, 86)">coral1</td>
+ <td align="left">rgb(255, 114, 86)</td>
+ <td align="left">#FF7256</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral2</td>
+ <td align="center" style="background-color:rgb(238, 106, 80)">coral2</td>
+ <td align="left">rgb(238, 106, 80)</td>
+ <td align="left">#EE6A50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral3</td>
+ <td align="center" style="background-color:rgb(205, 91, 69)">coral3</td>
+ <td align="left">rgb(205, 91, 69)</td>
+ <td align="left">#CD5B45</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral4</td>
+ <td align="center" style="background-color:rgb(139, 62, 47)">coral4</td>
+ <td align="left">rgb(139, 62, 47)</td>
+ <td align="left">#8B3E2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato4</td>
+ <td align="center" style="background-color:rgb(139, 54, 38)">tomato4</td>
+ <td align="left">rgb(139, 54, 38)</td>
+ <td align="left">#8B3626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato</td>
+ <td align="center" style="background-color:rgb(255, 99, 71)">tomato</td>
+ <td align="left">rgb(255, 99, 71)</td>
+ <td align="left">#FF6347</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato1</td>
+ <td align="center" style="background-color:rgb(255, 99, 71)">tomato1</td>
+ <td align="left">rgb(255, 99, 71)</td>
+ <td align="left">#FF6347</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato2</td>
+ <td align="center" style="background-color:rgb(238, 92, 66)">tomato2</td>
+ <td align="left">rgb(238, 92, 66)</td>
+ <td align="left">#EE5C42</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato3</td>
+ <td align="center" style="background-color:rgb(205, 79, 57)">tomato3</td>
+ <td align="left">rgb(205, 79, 57)</td>
+ <td align="left">#CD4F39</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose4</td>
+ <td align="center" style="background-color:rgb(139, 125, 123)">MistyRose4</td>
+ <td align="left">rgb(139, 125, 123)</td>
+ <td align="left">#8B7D7B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose2</td>
+ <td align="center" style="background-color:rgb(238, 213, 210)">MistyRose2</td>
+ <td align="left">rgb(238, 213, 210)</td>
+ <td align="left">#EED5D2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose</td>
+ <td align="center" style="background-color:rgb(255, 228, 225)">MistyRose</td>
+ <td align="left">rgb(255, 228, 225)</td>
+ <td align="left">#FFE4E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose1</td>
+ <td align="center" style="background-color:rgb(255, 228, 225)">MistyRose1</td>
+ <td align="left">rgb(255, 228, 225)</td>
+ <td align="left">#FFE4E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon</td>
+ <td align="center" style="background-color:rgb(250, 128, 114)">salmon</td>
+ <td align="left">rgb(250, 128, 114)</td>
+ <td align="left">#FA8072</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose3</td>
+ <td align="center" style="background-color:rgb(205, 183, 181)">MistyRose3</td>
+ <td align="left">rgb(205, 183, 181)</td>
+ <td align="left">#CDB7B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">white</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">white</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">gray100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">grey100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">grey100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray99</td>
+ <td align="center" style="background-color:rgb(252, 252, 252)">gray99</td>
+ <td align="left">rgb(252, 252, 252)</td>
+ <td align="left">#FCFCFC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey99</td>
+ <td align="center" style="background-color:rgb(252, 252, 252)">grey99</td>
+ <td align="left">rgb(252, 252, 252)</td>
+ <td align="left">#FCFCFC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray98</td>
+ <td align="center" style="background-color:rgb(250, 250, 250)">gray98</td>
+ <td align="left">rgb(250, 250, 250)</td>
+ <td align="left">#FAFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey98</td>
+ <td align="center" style="background-color:rgb(250, 250, 250)">grey98</td>
+ <td align="left">rgb(250, 250, 250)</td>
+ <td align="left">#FAFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray97</td>
+ <td align="center" style="background-color:rgb(247, 247, 247)">gray97</td>
+ <td align="left">rgb(247, 247, 247)</td>
+ <td align="left">#F7F7F7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey97</td>
+ <td align="center" style="background-color:rgb(247, 247, 247)">grey97</td>
+ <td align="left">rgb(247, 247, 247)</td>
+ <td align="left">#F7F7F7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray96</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">gray96</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey96</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">grey96</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">WhiteSmoke</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">WhiteSmoke</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray95</td>
+ <td align="center" style="background-color:rgb(242, 242, 242)">gray95</td>
+ <td align="left">rgb(242, 242, 242)</td>
+ <td align="left">#F2F2F2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey95</td>
+ <td align="center" style="background-color:rgb(242, 242, 242)">grey95</td>
+ <td align="left">rgb(242, 242, 242)</td>
+ <td align="left">#F2F2F2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray94</td>
+ <td align="center" style="background-color:rgb(240, 240, 240)">gray94</td>
+ <td align="left">rgb(240, 240, 240)</td>
+ <td align="left">#F0F0F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey94</td>
+ <td align="center" style="background-color:rgb(240, 240, 240)">grey94</td>
+ <td align="left">rgb(240, 240, 240)</td>
+ <td align="left">#F0F0F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray93</td>
+ <td align="center" style="background-color:rgb(237, 237, 237)">gray93</td>
+ <td align="left">rgb(237, 237, 237)</td>
+ <td align="left">#EDEDED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey93</td>
+ <td align="center" style="background-color:rgb(237, 237, 237)">grey93</td>
+ <td align="left">rgb(237, 237, 237)</td>
+ <td align="left">#EDEDED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray92</td>
+ <td align="center" style="background-color:rgb(235, 235, 235)">gray92</td>
+ <td align="left">rgb(235, 235, 235)</td>
+ <td align="left">#EBEBEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey92</td>
+ <td align="center" style="background-color:rgb(235, 235, 235)">grey92</td>
+ <td align="left">rgb(235, 235, 235)</td>
+ <td align="left">#EBEBEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray91</td>
+ <td align="center" style="background-color:rgb(232, 232, 232)">gray91</td>
+ <td align="left">rgb(232, 232, 232)</td>
+ <td align="left">#E8E8E8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey91</td>
+ <td align="center" style="background-color:rgb(232, 232, 232)">grey91</td>
+ <td align="left">rgb(232, 232, 232)</td>
+ <td align="left">#E8E8E8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray90</td>
+ <td align="center" style="background-color:rgb(229, 229, 229)">gray90</td>
+ <td align="left">rgb(229, 229, 229)</td>
+ <td align="left">#E5E5E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey90</td>
+ <td align="center" style="background-color:rgb(229, 229, 229)">grey90</td>
+ <td align="left">rgb(229, 229, 229)</td>
+ <td align="left">#E5E5E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray89</td>
+ <td align="center" style="background-color:rgb(227, 227, 227)">gray89</td>
+ <td align="left">rgb(227, 227, 227)</td>
+ <td align="left">#E3E3E3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey89</td>
+ <td align="center" style="background-color:rgb(227, 227, 227)">grey89</td>
+ <td align="left">rgb(227, 227, 227)</td>
+ <td align="left">#E3E3E3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray88</td>
+ <td align="center" style="background-color:rgb(224, 224, 224)">gray88</td>
+ <td align="left">rgb(224, 224, 224)</td>
+ <td align="left">#E0E0E0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey88</td>
+ <td align="center" style="background-color:rgb(224, 224, 224)">grey88</td>
+ <td align="left">rgb(224, 224, 224)</td>
+ <td align="left">#E0E0E0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray87</td>
+ <td align="center" style="background-color:rgb(222, 222, 222)">gray87</td>
+ <td align="left">rgb(222, 222, 222)</td>
+ <td align="left">#DEDEDE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey87</td>
+ <td align="center" style="background-color:rgb(222, 222, 222)">grey87</td>
+ <td align="left">rgb(222, 222, 222)</td>
+ <td align="left">#DEDEDE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gainsboro</td>
+ <td align="center" style="background-color:rgb(220, 220, 220)">gainsboro</td>
+ <td align="left">rgb(220, 220, 220)</td>
+ <td align="left">#DCDCDC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray86</td>
+ <td align="center" style="background-color:rgb(219, 219, 219)">gray86</td>
+ <td align="left">rgb(219, 219, 219)</td>
+ <td align="left">#DBDBDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey86</td>
+ <td align="center" style="background-color:rgb(219, 219, 219)">grey86</td>
+ <td align="left">rgb(219, 219, 219)</td>
+ <td align="left">#DBDBDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray85</td>
+ <td align="center" style="background-color:rgb(217, 217, 217)">gray85</td>
+ <td align="left">rgb(217, 217, 217)</td>
+ <td align="left">#D9D9D9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey85</td>
+ <td align="center" style="background-color:rgb(217, 217, 217)">grey85</td>
+ <td align="left">rgb(217, 217, 217)</td>
+ <td align="left">#D9D9D9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray84</td>
+ <td align="center" style="background-color:rgb(214, 214, 214)">gray84</td>
+ <td align="left">rgb(214, 214, 214)</td>
+ <td align="left">#D6D6D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey84</td>
+ <td align="center" style="background-color:rgb(214, 214, 214)">grey84</td>
+ <td align="left">rgb(214, 214, 214)</td>
+ <td align="left">#D6D6D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray83</td>
+ <td align="center" style="background-color:rgb(212, 212, 212)">gray83</td>
+ <td align="left">rgb(212, 212, 212)</td>
+ <td align="left">#D4D4D4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey83</td>
+ <td align="center" style="background-color:rgb(212, 212, 212)">grey83</td>
+ <td align="left">rgb(212, 212, 212)</td>
+ <td align="left">#D4D4D4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGray</td>
+ <td align="center" style="background-color:rgb(211, 211, 211)">LightGray</td>
+ <td align="left">rgb(211, 211, 211)</td>
+ <td align="left">#D3D3D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGrey</td>
+ <td align="center" style="background-color:rgb(211, 211, 211)">LightGrey</td>
+ <td align="left">rgb(211, 211, 211)</td>
+ <td align="left">#D3D3D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray82</td>
+ <td align="center" style="background-color:rgb(209, 209, 209)">gray82</td>
+ <td align="left">rgb(209, 209, 209)</td>
+ <td align="left">#D1D1D1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey82</td>
+ <td align="center" style="background-color:rgb(209, 209, 209)">grey82</td>
+ <td align="left">rgb(209, 209, 209)</td>
+ <td align="left">#D1D1D1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray81</td>
+ <td align="center" style="background-color:rgb(207, 207, 207)">gray81</td>
+ <td align="left">rgb(207, 207, 207)</td>
+ <td align="left">#CFCFCF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey81</td>
+ <td align="center" style="background-color:rgb(207, 207, 207)">grey81</td>
+ <td align="left">rgb(207, 207, 207)</td>
+ <td align="left">#CFCFCF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray80</td>
+ <td align="center" style="background-color:rgb(204, 204, 204)">gray80</td>
+ <td align="left">rgb(204, 204, 204)</td>
+ <td align="left">#CCCCCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey80</td>
+ <td align="center" style="background-color:rgb(204, 204, 204)">grey80</td>
+ <td align="left">rgb(204, 204, 204)</td>
+ <td align="left">#CCCCCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray79</td>
+ <td align="center" style="background-color:rgb(201, 201, 201)">gray79</td>
+ <td align="left">rgb(201, 201, 201)</td>
+ <td align="left">#C9C9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey79</td>
+ <td align="center" style="background-color:rgb(201, 201, 201)">grey79</td>
+ <td align="left">rgb(201, 201, 201)</td>
+ <td align="left">#C9C9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray78</td>
+ <td align="center" style="background-color:rgb(199, 199, 199)">gray78</td>
+ <td align="left">rgb(199, 199, 199)</td>
+ <td align="left">#C7C7C7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey78</td>
+ <td align="center" style="background-color:rgb(199, 199, 199)">grey78</td>
+ <td align="left">rgb(199, 199, 199)</td>
+ <td align="left">#C7C7C7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray77</td>
+ <td align="center" style="background-color:rgb(196, 196, 196)">gray77</td>
+ <td align="left">rgb(196, 196, 196)</td>
+ <td align="left">#C4C4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey77</td>
+ <td align="center" style="background-color:rgb(196, 196, 196)">grey77</td>
+ <td align="left">rgb(196, 196, 196)</td>
+ <td align="left">#C4C4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray76</td>
+ <td align="center" style="background-color:rgb(194, 194, 194)">gray76</td>
+ <td align="left">rgb(194, 194, 194)</td>
+ <td align="left">#C2C2C2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey76</td>
+ <td align="center" style="background-color:rgb(194, 194, 194)">grey76</td>
+ <td align="left">rgb(194, 194, 194)</td>
+ <td align="left">#C2C2C2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">silver</td>
+ <td align="center" style="background-color:rgb(192, 192, 192)">silver</td>
+ <td align="left">rgb(192, 192, 192)</td>
+ <td align="left">#C0C0C0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray75</td>
+ <td align="center" style="background-color:rgb(191, 191, 191)">gray75</td>
+ <td align="left">rgb(191, 191, 191)</td>
+ <td align="left">#BFBFBF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey75</td>
+ <td align="center" style="background-color:rgb(191, 191, 191)">grey75</td>
+ <td align="left">rgb(191, 191, 191)</td>
+ <td align="left">#BFBFBF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray74</td>
+ <td align="center" style="background-color:rgb(189, 189, 189)">gray74</td>
+ <td align="left">rgb(189, 189, 189)</td>
+ <td align="left">#BDBDBD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey74</td>
+ <td align="center" style="background-color:rgb(189, 189, 189)">grey74</td>
+ <td align="left">rgb(189, 189, 189)</td>
+ <td align="left">#BDBDBD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray73</td>
+ <td align="center" style="background-color:rgb(186, 186, 186)">gray73</td>
+ <td align="left">rgb(186, 186, 186)</td>
+ <td align="left">#BABABA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey73</td>
+ <td align="center" style="background-color:rgb(186, 186, 186)">grey73</td>
+ <td align="left">rgb(186, 186, 186)</td>
+ <td align="left">#BABABA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray72</td>
+ <td align="center" style="background-color:rgb(184, 184, 184)">gray72</td>
+ <td align="left">rgb(184, 184, 184)</td>
+ <td align="left">#B8B8B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey72</td>
+ <td align="center" style="background-color:rgb(184, 184, 184)">grey72</td>
+ <td align="left">rgb(184, 184, 184)</td>
+ <td align="left">#B8B8B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray71</td>
+ <td align="center" style="background-color:rgb(181, 181, 181)">gray71</td>
+ <td align="left">rgb(181, 181, 181)</td>
+ <td align="left">#B5B5B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey71</td>
+ <td align="center" style="background-color:rgb(181, 181, 181)">grey71</td>
+ <td align="left">rgb(181, 181, 181)</td>
+ <td align="left">#B5B5B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray70</td>
+ <td align="center" style="background-color:rgb(179, 179, 179)">gray70</td>
+ <td align="left">rgb(179, 179, 179)</td>
+ <td align="left">#B3B3B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey70</td>
+ <td align="center" style="background-color:rgb(179, 179, 179)">grey70</td>
+ <td align="left">rgb(179, 179, 179)</td>
+ <td align="left">#B3B3B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray69</td>
+ <td align="center" style="background-color:rgb(176, 176, 176)">gray69</td>
+ <td align="left">rgb(176, 176, 176)</td>
+ <td align="left">#B0B0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey69</td>
+ <td align="center" style="background-color:rgb(176, 176, 176)">grey69</td>
+ <td align="left">rgb(176, 176, 176)</td>
+ <td align="left">#B0B0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray68</td>
+ <td align="center" style="background-color:rgb(173, 173, 173)">gray68</td>
+ <td align="left">rgb(173, 173, 173)</td>
+ <td align="left">#ADADAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey68</td>
+ <td align="center" style="background-color:rgb(173, 173, 173)">grey68</td>
+ <td align="left">rgb(173, 173, 173)</td>
+ <td align="left">#ADADAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray67</td>
+ <td align="center" style="background-color:rgb(171, 171, 171)">gray67</td>
+ <td align="left">rgb(171, 171, 171)</td>
+ <td align="left">#ABABAB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey67</td>
+ <td align="center" style="background-color:rgb(171, 171, 171)">grey67</td>
+ <td align="left">rgb(171, 171, 171)</td>
+ <td align="left">#ABABAB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGray</td>
+ <td align="center" style="background-color:rgb(169, 169, 169)">DarkGray</td>
+ <td align="left">rgb(169, 169, 169)</td>
+ <td align="left">#A9A9A9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGrey</td>
+ <td align="center" style="background-color:rgb(169, 169, 169)">DarkGrey</td>
+ <td align="left">rgb(169, 169, 169)</td>
+ <td align="left">#A9A9A9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray66</td>
+ <td align="center" style="background-color:rgb(168, 168, 168)">gray66</td>
+ <td align="left">rgb(168, 168, 168)</td>
+ <td align="left">#A8A8A8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey66</td>
+ <td align="center" style="background-color:rgb(168, 168, 168)">grey66</td>
+ <td align="left">rgb(168, 168, 168)</td>
+ <td align="left">#A8A8A8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray65</td>
+ <td align="center" style="background-color:rgb(166, 166, 166)">gray65</td>
+ <td align="left">rgb(166, 166, 166)</td>
+ <td align="left">#A6A6A6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey65</td>
+ <td align="center" style="background-color:rgb(166, 166, 166)">grey65</td>
+ <td align="left">rgb(166, 166, 166)</td>
+ <td align="left">#A6A6A6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray64</td>
+ <td align="center" style="background-color:rgb(163, 163, 163)">gray64</td>
+ <td align="left">rgb(163, 163, 163)</td>
+ <td align="left">#A3A3A3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey64</td>
+ <td align="center" style="background-color:rgb(163, 163, 163)">grey64</td>
+ <td align="left">rgb(163, 163, 163)</td>
+ <td align="left">#A3A3A3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray63</td>
+ <td align="center" style="background-color:rgb(161, 161, 161)">gray63</td>
+ <td align="left">rgb(161, 161, 161)</td>
+ <td align="left">#A1A1A1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey63</td>
+ <td align="center" style="background-color:rgb(161, 161, 161)">grey63</td>
+ <td align="left">rgb(161, 161, 161)</td>
+ <td align="left">#A1A1A1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray62</td>
+ <td align="center" style="background-color:rgb(158, 158, 158)">gray62</td>
+ <td align="left">rgb(158, 158, 158)</td>
+ <td align="left">#9E9E9E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey62</td>
+ <td align="center" style="background-color:rgb(158, 158, 158)">grey62</td>
+ <td align="left">rgb(158, 158, 158)</td>
+ <td align="left">#9E9E9E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray61</td>
+ <td align="center" style="background-color:rgb(156, 156, 156)">gray61</td>
+ <td align="left">rgb(156, 156, 156)</td>
+ <td align="left">#9C9C9C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey61</td>
+ <td align="center" style="background-color:rgb(156, 156, 156)">grey61</td>
+ <td align="left">rgb(156, 156, 156)</td>
+ <td align="left">#9C9C9C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray60</td>
+ <td align="center" style="background-color:rgb(153, 153, 153)">gray60</td>
+ <td align="left">rgb(153, 153, 153)</td>
+ <td align="left">#999999</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey60</td>
+ <td align="center" style="background-color:rgb(153, 153, 153)">grey60</td>
+ <td align="left">rgb(153, 153, 153)</td>
+ <td align="left">#999999</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray59</td>
+ <td align="center" style="background-color:rgb(150, 150, 150)">gray59</td>
+ <td align="left">rgb(150, 150, 150)</td>
+ <td align="left">#969696</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey59</td>
+ <td align="center" style="background-color:rgb(150, 150, 150)">grey59</td>
+ <td align="left">rgb(150, 150, 150)</td>
+ <td align="left">#969696</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray58</td>
+ <td align="center" style="background-color:rgb(148, 148, 148)">gray58</td>
+ <td align="left">rgb(148, 148, 148)</td>
+ <td align="left">#949494</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey58</td>
+ <td align="center" style="background-color:rgb(148, 148, 148)">grey58</td>
+ <td align="left">rgb(148, 148, 148)</td>
+ <td align="left">#949494</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray57</td>
+ <td align="center" style="background-color:rgb(145, 145, 145)">gray57</td>
+ <td align="left">rgb(145, 145, 145)</td>
+ <td align="left">#919191</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey57</td>
+ <td align="center" style="background-color:rgb(145, 145, 145)">grey57</td>
+ <td align="left">rgb(145, 145, 145)</td>
+ <td align="left">#919191</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray56</td>
+ <td align="center" style="background-color:rgb(143, 143, 143)">gray56</td>
+ <td align="left">rgb(143, 143, 143)</td>
+ <td align="left">#8F8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey56</td>
+ <td align="center" style="background-color:rgb(143, 143, 143)">grey56</td>
+ <td align="left">rgb(143, 143, 143)</td>
+ <td align="left">#8F8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray55</td>
+ <td align="center" style="background-color:rgb(140, 140, 140)">gray55</td>
+ <td align="left">rgb(140, 140, 140)</td>
+ <td align="left">#8C8C8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey55</td>
+ <td align="center" style="background-color:rgb(140, 140, 140)">grey55</td>
+ <td align="left">rgb(140, 140, 140)</td>
+ <td align="left">#8C8C8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray54</td>
+ <td align="center" style="background-color:rgb(138, 138, 138)">gray54</td>
+ <td align="left">rgb(138, 138, 138)</td>
+ <td align="left">#8A8A8A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey54</td>
+ <td align="center" style="background-color:rgb(138, 138, 138)">grey54</td>
+ <td align="left">rgb(138, 138, 138)</td>
+ <td align="left">#8A8A8A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray53</td>
+ <td align="center" style="background-color:rgb(135, 135, 135)">gray53</td>
+ <td align="left">rgb(135, 135, 135)</td>
+ <td align="left">#878787</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey53</td>
+ <td align="center" style="background-color:rgb(135, 135, 135)">grey53</td>
+ <td align="left">rgb(135, 135, 135)</td>
+ <td align="left">#878787</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray52</td>
+ <td align="center" style="background-color:rgb(133, 133, 133)">gray52</td>
+ <td align="left">rgb(133, 133, 133)</td>
+ <td align="left">#858585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey52</td>
+ <td align="center" style="background-color:rgb(133, 133, 133)">grey52</td>
+ <td align="left">rgb(133, 133, 133)</td>
+ <td align="left">#858585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray51</td>
+ <td align="center" style="background-color:rgb(130, 130, 130)">gray51</td>
+ <td align="left">rgb(130, 130, 130)</td>
+ <td align="left">#828282</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey51</td>
+ <td align="center" style="background-color:rgb(130, 130, 130)">grey51</td>
+ <td align="left">rgb(130, 130, 130)</td>
+ <td align="left">#828282</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">fractal</td>
+ <td align="center" style="background-color:rgb(128, 128, 128)">fractal</td>
+ <td align="left">rgb(128, 128, 128)</td>
+ <td align="left">#808080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray50</td>
+ <td align="center" style="background-color:rgb(127, 127, 127)">gray50</td>
+ <td align="left">rgb(127, 127, 127)</td>
+ <td align="left">#7F7F7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey50</td>
+ <td align="center" style="background-color:rgb(127, 127, 127)">grey50</td>
+ <td align="left">rgb(127, 127, 127)</td>
+ <td align="left">#7F7F7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray</td>
+ <td align="center" style="background-color:rgb(126, 126, 126)">gray</td>
+ <td align="left">rgb(126, 126, 126)</td>
+ <td align="left">#7E7E7E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray49</td>
+ <td align="center" style="background-color:rgb(125, 125, 125)">gray49</td>
+ <td align="left">rgb(125, 125, 125)</td>
+ <td align="left">#7D7D7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey49</td>
+ <td align="center" style="background-color:rgb(125, 125, 125)">grey49</td>
+ <td align="left">rgb(125, 125, 125)</td>
+ <td align="left">#7D7D7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray48</td>
+ <td align="center" style="background-color:rgb(122, 122, 122)">gray48</td>
+ <td align="left">rgb(122, 122, 122)</td>
+ <td align="left">#7A7A7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey48</td>
+ <td align="center" style="background-color:rgb(122, 122, 122)">grey48</td>
+ <td align="left">rgb(122, 122, 122)</td>
+ <td align="left">#7A7A7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray47</td>
+ <td align="center" style="background-color:rgb(120, 120, 120)">gray47</td>
+ <td align="left">rgb(120, 120, 120)</td>
+ <td align="left">#787878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey47</td>
+ <td align="center" style="background-color:rgb(120, 120, 120)">grey47</td>
+ <td align="left">rgb(120, 120, 120)</td>
+ <td align="left">#787878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray46</td>
+ <td align="center" style="background-color:rgb(117, 117, 117)">gray46</td>
+ <td align="left">rgb(117, 117, 117)</td>
+ <td align="left">#757575</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey46</td>
+ <td align="center" style="background-color:rgb(117, 117, 117)">grey46</td>
+ <td align="left">rgb(117, 117, 117)</td>
+ <td align="left">#757575</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray45</td>
+ <td align="center" style="background-color:rgb(115, 115, 115)">gray45</td>
+ <td align="left">rgb(115, 115, 115)</td>
+ <td align="left">#737373</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey45</td>
+ <td align="center" style="background-color:rgb(115, 115, 115)">grey45</td>
+ <td align="left">rgb(115, 115, 115)</td>
+ <td align="left">#737373</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray44</td>
+ <td align="center" style="background-color:rgb(112, 112, 112)">gray44</td>
+ <td align="left">rgb(112, 112, 112)</td>
+ <td align="left">#707070</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey44</td>
+ <td align="center" style="background-color:rgb(112, 112, 112)">grey44</td>
+ <td align="left">rgb(112, 112, 112)</td>
+ <td align="left">#707070</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray43</td>
+ <td align="center" style="background-color:rgb(110, 110, 110)">gray43</td>
+ <td align="left">rgb(110, 110, 110)</td>
+ <td align="left">#6E6E6E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey43</td>
+ <td align="center" style="background-color:rgb(110, 110, 110)">grey43</td>
+ <td align="left">rgb(110, 110, 110)</td>
+ <td align="left">#6E6E6E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray42</td>
+ <td align="center" style="background-color:rgb(107, 107, 107)">gray42</td>
+ <td align="left">rgb(107, 107, 107)</td>
+ <td align="left">#6B6B6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey42</td>
+ <td align="center" style="background-color:rgb(107, 107, 107)">grey42</td>
+ <td align="left">rgb(107, 107, 107)</td>
+ <td align="left">#6B6B6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DimGray</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">DimGray</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DimGrey</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">DimGrey</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray41</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">gray41</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey41</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">grey41</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray40</td>
+ <td align="center" style="background-color:rgb(102, 102, 102)">gray40</td>
+ <td align="left">rgb(102, 102, 102)</td>
+ <td align="left">#666666</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey40</td>
+ <td align="center" style="background-color:rgb(102, 102, 102)">grey40</td>
+ <td align="left">rgb(102, 102, 102)</td>
+ <td align="left">#666666</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray39</td>
+ <td align="center" style="background-color:rgb( 99, 99, 99)">gray39</td>
+ <td align="left">rgb( 99, 99, 99)</td>
+ <td align="left">#636363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey39</td>
+ <td align="center" style="background-color:rgb( 99, 99, 99)">grey39</td>
+ <td align="left">rgb( 99, 99, 99)</td>
+ <td align="left">#636363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray38</td>
+ <td align="center" style="background-color:rgb( 97, 97, 97)">gray38</td>
+ <td align="left">rgb( 97, 97, 97)</td>
+ <td align="left">#616161</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey38</td>
+ <td align="center" style="background-color:rgb( 97, 97, 97)">grey38</td>
+ <td align="left">rgb( 97, 97, 97)</td>
+ <td align="left">#616161</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray37</td>
+ <td align="center" style="background-color:rgb( 94, 94, 94)">gray37</td>
+ <td align="left">rgb( 94, 94, 94)</td>
+ <td align="left">#5E5E5E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey37</td>
+ <td align="center" style="background-color:rgb( 94, 94, 94)">grey37</td>
+ <td align="left">rgb( 94, 94, 94)</td>
+ <td align="left">#5E5E5E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray36</td>
+ <td align="center" style="background-color:rgb( 92, 92, 92)">gray36</td>
+ <td align="left">rgb( 92, 92, 92)</td>
+ <td align="left">#5C5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey36</td>
+ <td align="center" style="background-color:rgb( 92, 92, 92)">grey36</td>
+ <td align="left">rgb( 92, 92, 92)</td>
+ <td align="left">#5C5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray35</td>
+ <td align="center" style="background-color:rgb( 89, 89, 89)">gray35</td>
+ <td align="left">rgb( 89, 89, 89)</td>
+ <td align="left">#595959</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey35</td>
+ <td align="center" style="background-color:rgb( 89, 89, 89)">grey35</td>
+ <td align="left">rgb( 89, 89, 89)</td>
+ <td align="left">#595959</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray34</td>
+ <td align="center" style="background-color:rgb( 87, 87, 87)">gray34</td>
+ <td align="left">rgb( 87, 87, 87)</td>
+ <td align="left">#575757</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey34</td>
+ <td align="center" style="background-color:rgb( 87, 87, 87)">grey34</td>
+ <td align="left">rgb( 87, 87, 87)</td>
+ <td align="left">#575757</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray33</td>
+ <td align="center" style="background-color:rgb( 84, 84, 84)">gray33</td>
+ <td align="left">rgb( 84, 84, 84)</td>
+ <td align="left">#545454</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey33</td>
+ <td align="center" style="background-color:rgb( 84, 84, 84)">grey33</td>
+ <td align="left">rgb( 84, 84, 84)</td>
+ <td align="left">#545454</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray32</td>
+ <td align="center" style="background-color:rgb( 82, 82, 82)">gray32</td>
+ <td align="left">rgb( 82, 82, 82)</td>
+ <td align="left">#525252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey32</td>
+ <td align="center" style="background-color:rgb( 82, 82, 82)">grey32</td>
+ <td align="left">rgb( 82, 82, 82)</td>
+ <td align="left">#525252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray31</td>
+ <td align="center" style="background-color:rgb( 79, 79, 79)">gray31</td>
+ <td align="left">rgb( 79, 79, 79)</td>
+ <td align="left">#4F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey31</td>
+ <td align="center" style="background-color:rgb( 79, 79, 79)">grey31</td>
+ <td align="left">rgb( 79, 79, 79)</td>
+ <td align="left">#4F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray30</td>
+ <td align="center" style="background-color:rgb( 77, 77, 77)">gray30</td>
+ <td align="left">rgb( 77, 77, 77)</td>
+ <td align="left">#4D4D4D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey30</td>
+ <td align="center" style="background-color:rgb( 77, 77, 77)">grey30</td>
+ <td align="left">rgb( 77, 77, 77)</td>
+ <td align="left">#4D4D4D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray29</td>
+ <td align="center" style="background-color:rgb( 74, 74, 74)">gray29</td>
+ <td align="left">rgb( 74, 74, 74)</td>
+ <td align="left">#4A4A4A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey29</td>
+ <td align="center" style="background-color:rgb( 74, 74, 74)">grey29</td>
+ <td align="left">rgb( 74, 74, 74)</td>
+ <td align="left">#4A4A4A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray28</td>
+ <td align="center" style="background-color:rgb( 71, 71, 71)">gray28</td>
+ <td align="left">rgb( 71, 71, 71)</td>
+ <td align="left">#474747</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey28</td>
+ <td align="center" style="background-color:rgb( 71, 71, 71)">grey28</td>
+ <td align="left">rgb( 71, 71, 71)</td>
+ <td align="left">#474747</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray27</td>
+ <td align="center" style="background-color:rgb( 69, 69, 69)">gray27</td>
+ <td align="left">rgb( 69, 69, 69)</td>
+ <td align="left">#454545</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey27</td>
+ <td align="center" style="background-color:rgb( 69, 69, 69)">grey27</td>
+ <td align="left">rgb( 69, 69, 69)</td>
+ <td align="left">#454545</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray26</td>
+ <td align="center" style="background-color:rgb( 66, 66, 66)">gray26</td>
+ <td align="left">rgb( 66, 66, 66)</td>
+ <td align="left">#424242</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey26</td>
+ <td align="center" style="background-color:rgb( 66, 66, 66)">grey26</td>
+ <td align="left">rgb( 66, 66, 66)</td>
+ <td align="left">#424242</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray25</td>
+ <td align="center" style="background-color:rgb( 64, 64, 64)">gray25</td>
+ <td align="left">rgb( 64, 64, 64)</td>
+ <td align="left">#404040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey25</td>
+ <td align="center" style="background-color:rgb( 64, 64, 64)">grey25</td>
+ <td align="left">rgb( 64, 64, 64)</td>
+ <td align="left">#404040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray24</td>
+ <td align="center" style="background-color:rgb( 61, 61, 61)">gray24</td>
+ <td align="left">rgb( 61, 61, 61)</td>
+ <td align="left">#3D3D3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey24</td>
+ <td align="center" style="background-color:rgb( 61, 61, 61)">grey24</td>
+ <td align="left">rgb( 61, 61, 61)</td>
+ <td align="left">#3D3D3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray23</td>
+ <td align="center" style="background-color:rgb( 59, 59, 59)">gray23</td>
+ <td align="left">rgb( 59, 59, 59)</td>
+ <td align="left">#3B3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey23</td>
+ <td align="center" style="background-color:rgb( 59, 59, 59)">grey23</td>
+ <td align="left">rgb( 59, 59, 59)</td>
+ <td align="left">#3B3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray22</td>
+ <td align="center" style="background-color:rgb( 56, 56, 56)">gray22</td>
+ <td align="left">rgb( 56, 56, 56)</td>
+ <td align="left">#383838</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey22</td>
+ <td align="center" style="background-color:rgb( 56, 56, 56)">grey22</td>
+ <td align="left">rgb( 56, 56, 56)</td>
+ <td align="left">#383838</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray21</td>
+ <td align="center" style="background-color:rgb( 54, 54, 54)">gray21</td>
+ <td align="left">rgb( 54, 54, 54)</td>
+ <td align="left">#363636</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey21</td>
+ <td align="center" style="background-color:rgb( 54, 54, 54)">grey21</td>
+ <td align="left">rgb( 54, 54, 54)</td>
+ <td align="left">#363636</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray20</td>
+ <td align="center" style="background-color:rgb( 51, 51, 51)">gray20</td>
+ <td align="left">rgb( 51, 51, 51)</td>
+ <td align="left">#333333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey20</td>
+ <td align="center" style="background-color:rgb( 51, 51, 51)">grey20</td>
+ <td align="left">rgb( 51, 51, 51)</td>
+ <td align="left">#333333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray19</td>
+ <td align="center" style="background-color:rgb( 48, 48, 48)">gray19</td>
+ <td align="left">rgb( 48, 48, 48)</td>
+ <td align="left">#303030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey19</td>
+ <td align="center" style="background-color:rgb( 48, 48, 48)">grey19</td>
+ <td align="left">rgb( 48, 48, 48)</td>
+ <td align="left">#303030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray18</td>
+ <td align="center" style="background-color:rgb( 46, 46, 46)">gray18</td>
+ <td align="left">rgb( 46, 46, 46)</td>
+ <td align="left">#2E2E2E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey18</td>
+ <td align="center" style="background-color:rgb( 46, 46, 46)">grey18</td>
+ <td align="left">rgb( 46, 46, 46)</td>
+ <td align="left">#2E2E2E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray17</td>
+ <td align="center" style="background-color:rgb( 43, 43, 43)">gray17</td>
+ <td align="left">rgb( 43, 43, 43)</td>
+ <td align="left">#2B2B2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey17</td>
+ <td align="center" style="background-color:rgb( 43, 43, 43)">grey17</td>
+ <td align="left">rgb( 43, 43, 43)</td>
+ <td align="left">#2B2B2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray16</td>
+ <td align="center" style="background-color:rgb( 41, 41, 41)">gray16</td>
+ <td align="left">rgb( 41, 41, 41)</td>
+ <td align="left">#292929</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey16</td>
+ <td align="center" style="background-color:rgb( 41, 41, 41)">grey16</td>
+ <td align="left">rgb( 41, 41, 41)</td>
+ <td align="left">#292929</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray15</td>
+ <td align="center" style="background-color:rgb( 38, 38, 38)">gray15</td>
+ <td align="left">rgb( 38, 38, 38)</td>
+ <td align="left">#262626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey15</td>
+ <td align="center" style="background-color:rgb( 38, 38, 38)">grey15</td>
+ <td align="left">rgb( 38, 38, 38)</td>
+ <td align="left">#262626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray14</td>
+ <td align="center" style="background-color:rgb( 36, 36, 36)">gray14</td>
+ <td align="left">rgb( 36, 36, 36)</td>
+ <td align="left">#242424</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey14</td>
+ <td align="center" style="background-color:rgb( 36, 36, 36)">grey14</td>
+ <td align="left">rgb( 36, 36, 36)</td>
+ <td align="left">#242424</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray13</td>
+ <td align="center" style="background-color:rgb( 33, 33, 33)">gray13</td>
+ <td align="left">rgb( 33, 33, 33)</td>
+ <td align="left">#212121</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey13</td>
+ <td align="center" style="background-color:rgb( 33, 33, 33)">grey13</td>
+ <td align="left">rgb( 33, 33, 33)</td>
+ <td align="left">#212121</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray12</td>
+ <td align="center" style="background-color:rgb( 31, 31, 31)">gray12</td>
+ <td align="left">rgb( 31, 31, 31)</td>
+ <td align="left">#1F1F1F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey12</td>
+ <td align="center" style="background-color:rgb( 31, 31, 31)">grey12</td>
+ <td align="left">rgb( 31, 31, 31)</td>
+ <td align="left">#1F1F1F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray11</td>
+ <td align="center" style="background-color:rgb( 28, 28, 28)">gray11</td>
+ <td align="left">rgb( 28, 28, 28)</td>
+ <td align="left">#1C1C1C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey11</td>
+ <td align="center" style="background-color:rgb( 28, 28, 28)">grey11</td>
+ <td align="left">rgb( 28, 28, 28)</td>
+ <td align="left">#1C1C1C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray10</td>
+ <td align="center" style="background-color:rgb( 26, 26, 26)">gray10</td>
+ <td align="left">rgb( 26, 26, 26)</td>
+ <td align="left">#1A1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey10</td>
+ <td align="center" style="background-color:rgb( 26, 26, 26)">grey10</td>
+ <td align="left">rgb( 26, 26, 26)</td>
+ <td align="left">#1A1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray9</td>
+ <td align="center" style="background-color:rgb( 23, 23, 23)">gray9</td>
+ <td align="left">rgb( 23, 23, 23)</td>
+ <td align="left">#171717</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey9</td>
+ <td align="center" style="background-color:rgb( 23, 23, 23)">grey9</td>
+ <td align="left">rgb( 23, 23, 23)</td>
+ <td align="left">#171717</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray8</td>
+ <td align="center" style="background-color:rgb( 20, 20, 20)">gray8</td>
+ <td align="left">rgb( 20, 20, 20)</td>
+ <td align="left">#141414</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey8</td>
+ <td align="center" style="background-color:rgb( 20, 20, 20)">grey8</td>
+ <td align="left">rgb( 20, 20, 20)</td>
+ <td align="left">#141414</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray7</td>
+ <td align="center" style="background-color:rgb( 18, 18, 18)">gray7</td>
+ <td align="left">rgb( 18, 18, 18)</td>
+ <td align="left">#121212</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey7</td>
+ <td align="center" style="background-color:rgb( 18, 18, 18)">grey7</td>
+ <td align="left">rgb( 18, 18, 18)</td>
+ <td align="left">#121212</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray6</td>
+ <td align="center" style="background-color:rgb( 15, 15, 15)">gray6</td>
+ <td align="left">rgb( 15, 15, 15)</td>
+ <td align="left">#0F0F0F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey6</td>
+ <td align="center" style="background-color:rgb( 15, 15, 15)">grey6</td>
+ <td align="left">rgb( 15, 15, 15)</td>
+ <td align="left">#0F0F0F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray5</td>
+ <td align="center" style="background-color:rgb( 13, 13, 13)">gray5</td>
+ <td align="left">rgb( 13, 13, 13)</td>
+ <td align="left">#0D0D0D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey5</td>
+ <td align="center" style="background-color:rgb( 13, 13, 13)">grey5</td>
+ <td align="left">rgb( 13, 13, 13)</td>
+ <td align="left">#0D0D0D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray4</td>
+ <td align="center" style="background-color:rgb( 10, 10, 10)">gray4</td>
+ <td align="left">rgb( 10, 10, 10)</td>
+ <td align="left">#0A0A0A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey4</td>
+ <td align="center" style="background-color:rgb( 10, 10, 10)">grey4</td>
+ <td align="left">rgb( 10, 10, 10)</td>
+ <td align="left">#0A0A0A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray3</td>
+ <td align="center" style="background-color:rgb( 8, 8, 8)">gray3</td>
+ <td align="left">rgb( 8, 8, 8)</td>
+ <td align="left">#080808</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey3</td>
+ <td align="center" style="background-color:rgb( 8, 8, 8)">grey3</td>
+ <td align="left">rgb( 8, 8, 8)</td>
+ <td align="left">#080808</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray2</td>
+ <td align="center" style="background-color:rgb( 5, 5, 5)">gray2</td>
+ <td align="left">rgb( 5, 5, 5)</td>
+ <td align="left">#050505</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey2</td>
+ <td align="center" style="background-color:rgb( 5, 5, 5)">grey2</td>
+ <td align="left">rgb( 5, 5, 5)</td>
+ <td align="left">#050505</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray1</td>
+ <td align="center" style="background-color:rgb( 3, 3, 3)">gray1</td>
+ <td align="left">rgb( 3, 3, 3)</td>
+ <td align="left">#030303</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey1</td>
+ <td align="center" style="background-color:rgb( 3, 3, 3)">grey1</td>
+ <td align="left">rgb( 3, 3, 3)</td>
+ <td align="left">#030303</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">black</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">black</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray0</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">gray0</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey0</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">grey0</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">opaque</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">opaque</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">none</td>
+ <td align="center" style="background-color:white">none</td>
+ <td align="left">rgba( 0, 0, 0, 0.0)</td>
+ <td align="left">#00000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">transparent</td>
+ <td align="center" style="background-color:white">transparent</td>
+ <td align="left">rgba( 0, 0, 0, 0.0)</td>
+ <td align="left">#00000000</td>
+
+ </tr>
+
+ </tbody>
+</table>
+
+</div>
+
+</div>
+
+</body></html>
diff --git a/frontend/imgradient/colors_iframe.js b/frontend/imgradient/colors_iframe.js
new file mode 100644
index 0000000..0a1e728
--- /dev/null
+++ b/frontend/imgradient/colors_iframe.js
@@ -0,0 +1,82 @@
+//but I tool a procedural approach, and I wanted to make something more like OOP. just didn't know
+//how do deal with the fact that $.fancybox is a class...a singleton class is totally fine.
+//like colorpicker_iframe. just need to know what it would look like
+//well in this case you might not need oop approach, as it doesn't solve any issues here. its fine to use procedural code then you
+//don't need oop. also js is sort of using procedural way then asking to provide onclick code and other methods like .click() in jquery,
+//so it's kind of callback\procedural oriented, and oop doesn't fit in very well. you can wrap it in oop if really want, it will look like:
+//
+//function ColorPicker(){
+// this.element = $(".something");
+// this.init = function(){
+// this.options = options
+// this.element.click(this.onclick);
+// this.myfancybox = $.fancybox;
+// this.myfancybox_iframe = ".fancybox-iframe";
+// }
+// this.onclick = function(){
+// this.myfancybox.open(
+// do I do something like this
+// _.extend({ autoDimensions: false,
+// autoDimensions: false,
+// beforeShow: this.fancybox_cb_1, //something like this? yes ok I think that it's the right thing for methods
+// to reach for these classes for trivial things for a while, so that I can used to thinking this way.
+// I understand that there are no real benefits performance/readability-wise here, but it's a different paradigm,
+// right? yes ok cool. Well
+// }, options) //? yep
+//
+// this.options
+// ...
+// callback: funciton(){ this.color_picked = ...from fancybox .. }
+// callback: this.callback,
+// );
+// }
+// this.color_picked = function()
+// this.color_picked_as_hex = function()
+// this.color_picked_as_rgb = function()
+// this.callback = function(){
+// $(this.myfancybox_iframe). ....
+// }
+//}
+//and so on yeah good
+//
+function launch_iframe(input_target){
+ $.fancybox.open({
+ href : '/im/colors/index.html',
+ width : 1100, // set the width
+ height : 710,
+ fitToView : true,
+ autoDimensions:false,
+ autoSize:false,
+ type : 'iframe',
+ closeBtn : false,
+ padding : 5,
+ beforeShow : function(){
+ $('.fancybox-iframe').contents().find('#submitvalue').click(function(){
+ $('.fancybox-iframe').contents().find('form').submit();
+ $.fancybox.close();
+ });
+ },
+ beforeClose : function(){
+ x = $('.fancybox-iframe').contents().find('#namespace').val();
+ },
+ afterClose: function(){
+ $(input_target).val(x);
+ }
+ });
+}
+$(document).ready(function(){
+ if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
+ return;
+ }
+ var element_list = [".color1", ".color2"]
+ element_list.forEach(
+ function(l){
+ console.log("a"+l)
+ $("a"+l).click(function(event){
+ event.preventDefault();
+ launch_iframe("input"+l)
+ });
+ }
+ )
+
+})
diff --git a/frontend/imgradient/css/custom-theme/images/ui-bg_diagonal-maze_75_ffffff_10x10.png b/frontend/imgradient/css/custom-theme/images/ui-bg_diagonal-maze_75_ffffff_10x10.png
new file mode 100755
index 0000000..b5db23a
--- /dev/null
+++ b/frontend/imgradient/css/custom-theme/images/ui-bg_diagonal-maze_75_ffffff_10x10.png
Binary files differ
diff --git a/frontend/imgradient/css/custom-theme/images/ui-bg_diagonals-medium_75_cccccc_40x40.png b/frontend/imgradient/css/custom-theme/images/ui-bg_diagonals-medium_75_cccccc_40x40.png
new file mode 100755
index 0000000..907d9da
--- /dev/null
+++ b/frontend/imgradient/css/custom-theme/images/ui-bg_diagonals-medium_75_cccccc_40x40.png
Binary files differ
diff --git a/frontend/imgradient/css/custom-theme/images/ui-bg_glass_65_ffffff_1x400.png b/frontend/imgradient/css/custom-theme/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100755
index 0000000..42ccba2
--- /dev/null
+++ b/frontend/imgradient/css/custom-theme/images/ui-bg_glass_65_ffffff_1x400.png
Binary files differ
diff --git a/frontend/imgradient/css/custom-theme/images/ui-bg_glass_75_dadada_1x400.png b/frontend/imgradient/css/custom-theme/images/ui-bg_glass_75_dadada_1x400.png
new file mode 100755
index 0000000..5a46b47
--- /dev/null
+++ b/frontend/imgradient/css/custom-theme/images/ui-bg_glass_75_dadada_1x400.png
Binary files differ
diff --git a/frontend/imgradient/css/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.png b/frontend/imgradient/css/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100755
index 0000000..86c2baa
--- /dev/null
+++ b/frontend/imgradient/css/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.png
Binary files differ
diff --git a/frontend/imgradient/css/custom-theme/images/ui-bg_gloss-wave_0_aaaaaa_500x100.png b/frontend/imgradient/css/custom-theme/images/ui-bg_gloss-wave_0_aaaaaa_500x100.png
new file mode 100755
index 0000000..1a21c4f
--- /dev/null
+++ b/frontend/imgradient/css/custom-theme/images/ui-bg_gloss-wave_0_aaaaaa_500x100.png
Binary files differ
diff --git a/frontend/imgradient/css/custom-theme/images/ui-bg_inset-hard_55_fbf9ee_1x100.png b/frontend/imgradient/css/custom-theme/images/ui-bg_inset-hard_55_fbf9ee_1x100.png
new file mode 100755
index 0000000..481bf22
--- /dev/null
+++ b/frontend/imgradient/css/custom-theme/images/ui-bg_inset-hard_55_fbf9ee_1x100.png
Binary files differ
diff --git a/frontend/imgradient/css/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png b/frontend/imgradient/css/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png
new file mode 100755
index 0000000..0e05810
--- /dev/null
+++ b/frontend/imgradient/css/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png
Binary files differ
diff --git a/frontend/imgradient/css/custom-theme/images/ui-icons_222222_256x240.png b/frontend/imgradient/css/custom-theme/images/ui-icons_222222_256x240.png
new file mode 100755
index 0000000..b273ff1
--- /dev/null
+++ b/frontend/imgradient/css/custom-theme/images/ui-icons_222222_256x240.png
Binary files differ
diff --git a/frontend/imgradient/css/custom-theme/images/ui-icons_2e83ff_256x240.png b/frontend/imgradient/css/custom-theme/images/ui-icons_2e83ff_256x240.png
new file mode 100755
index 0000000..09d1cdc
--- /dev/null
+++ b/frontend/imgradient/css/custom-theme/images/ui-icons_2e83ff_256x240.png
Binary files differ
diff --git a/frontend/imgradient/css/custom-theme/images/ui-icons_454545_256x240.png b/frontend/imgradient/css/custom-theme/images/ui-icons_454545_256x240.png
new file mode 100755
index 0000000..59bd45b
--- /dev/null
+++ b/frontend/imgradient/css/custom-theme/images/ui-icons_454545_256x240.png
Binary files differ
diff --git a/frontend/imgradient/css/custom-theme/images/ui-icons_888888_256x240.png b/frontend/imgradient/css/custom-theme/images/ui-icons_888888_256x240.png
new file mode 100755
index 0000000..6d02426
--- /dev/null
+++ b/frontend/imgradient/css/custom-theme/images/ui-icons_888888_256x240.png
Binary files differ
diff --git a/frontend/imgradient/css/custom-theme/images/ui-icons_cd0a0a_256x240.png b/frontend/imgradient/css/custom-theme/images/ui-icons_cd0a0a_256x240.png
new file mode 100755
index 0000000..2ab019b
--- /dev/null
+++ b/frontend/imgradient/css/custom-theme/images/ui-icons_cd0a0a_256x240.png
Binary files differ
diff --git a/frontend/imgradient/css/custom-theme/jquery-ui-1.8.16.custom.css b/frontend/imgradient/css/custom-theme/jquery-ui-1.8.16.custom.css
new file mode 100755
index 0000000..9e3cc66
--- /dev/null
+++ b/frontend/imgradient/css/custom-theme/jquery-ui-1.8.16.custom.css
@@ -0,0 +1,313 @@
+/*
+ * jQuery UI CSS Framework 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=1px&bgColorHeader=cccccc&bgTextureHeader=07_diagonals_medium.png&bgImgOpacityHeader=75&borderColorHeader=ffffff&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=16_diagonal_maze.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=06_inset_hard.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=05_inset_soft.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=12_gloss_wave.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=12_gloss_wave.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=20px&offsetTopShadow=-90px&offsetLeftShadow=-30px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #aaaaaa; color: #DCDCDC; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #ffffff; background: #cccccc url(images/ui-bg_diagonals-medium_75_cccccc_40x40.png) 50% 50% repeat; color: #DCDCDC; font-weight: bold; }
+.ui-widget-header a { color: #DCDCDC; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_inset-hard_55_fbf9ee_1x100.png) 50% bottom repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_inset-soft_95_fef1ec_1x100.png) 50% bottom repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 1px; -webkit-border-top-left-radius: 1px; -khtml-border-top-left-radius: 1px; border-top-left-radius: 1px; }
+.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 1px; -webkit-border-top-right-radius: 1px; -khtml-border-top-right-radius: 1px; border-top-right-radius: 1px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 1px; -webkit-border-bottom-left-radius: 1px; -khtml-border-bottom-left-radius: 1px; border-bottom-left-radius: 1px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 1px; -webkit-border-bottom-right-radius: 1px; -khtml-border-bottom-right-radius: 1px; border-bottom-right-radius: 1px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_gloss-wave_0_aaaaaa_500x100.png) 50% top repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -90px 0 0 -30px; padding: 20px; background: #aaaaaa url(images/ui-bg_gloss-wave_0_aaaaaa_500x100.png) 50% top repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Slider 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }
diff --git a/frontend/imgradient/dirs.html b/frontend/imgradient/dirs.html
new file mode 100755
index 0000000..afe2db7
--- /dev/null
+++ b/frontend/imgradient/dirs.html
@@ -0,0 +1,256 @@
+0000 00
+0001 01
+0002 02
+0003 03
+0004 04
+0005 05
+0006 06
+0007 07
+0008 08
+0009 09
+0010 0a
+0011 0b
+0012 0c
+0013 0d
+0014 0e
+0015 0f
+0016 10
+0017 11
+0018 12
+0019 13
+0020 14
+0021 15
+0022 16
+0023 17
+0024 18
+0025 19
+0026 1a
+0027 1b
+0028 1c
+0029 1d
+0030 1e
+0031 1f
+0032 20
+0033 21
+0034 22
+0035 23
+0036 24
+0037 25
+0038 26
+0039 27
+0040 28
+0041 29
+0042 2a
+0043 2b
+0044 2c
+0045 2d
+0046 2e
+0047 2f
+0048 30
+0049 31
+0050 32
+0051 33
+0052 34
+0053 35
+0054 36
+0055 37
+0056 38
+0057 39
+0058 3a
+0059 3b
+0060 3c
+0061 3d
+0062 3e
+0063 3f
+0064 40
+0065 41
+0066 42
+0067 43
+0068 44
+0069 45
+0070 46
+0071 47
+0072 48
+0073 49
+0074 4a
+0075 4b
+0076 4c
+0077 4d
+0078 4e
+0079 4f
+0080 50
+0081 51
+0082 52
+0083 53
+0084 54
+0085 55
+0086 56
+0087 57
+0088 58
+0089 59
+0090 5a
+0091 5b
+0092 5c
+0093 5d
+0094 5e
+0095 5f
+0096 60
+0097 61
+0098 62
+0099 63
+0100 64
+0101 65
+0102 66
+0103 67
+0104 68
+0105 69
+0106 6a
+0107 6b
+0108 6c
+0109 6d
+0110 6e
+0111 6f
+0112 70
+0113 71
+0114 72
+0115 73
+0116 74
+0117 75
+0118 76
+0119 77
+0120 78
+0121 79
+0122 7a
+0123 7b
+0124 7c
+0125 7d
+0126 7e
+0127 7f
+0128 80
+0129 81
+0130 82
+0131 83
+0132 84
+0133 85
+0134 86
+0135 87
+0136 88
+0137 89
+0138 8a
+0139 8b
+0140 8c
+0141 8d
+0142 8e
+0143 8f
+0144 90
+0145 91
+0146 92
+0147 93
+0148 94
+0149 95
+0150 96
+0151 97
+0152 98
+0153 99
+0154 9a
+0155 9b
+0156 9c
+0157 9d
+0158 9e
+0159 9f
+0160 a0
+0161 a1
+0162 a2
+0163 a3
+0164 a4
+0165 a5
+0166 a6
+0167 a7
+0168 a8
+0169 a9
+0170 aa
+0171 ab
+0172 ac
+0173 ad
+0174 ae
+0175 af
+0176 b0
+0177 b1
+0178 b2
+0179 b3
+0180 b4
+0181 b5
+0182 b6
+0183 b7
+0184 b8
+0185 b9
+0186 ba
+0187 bb
+0188 bc
+0189 bd
+0190 be
+0191 bf
+0192 c0
+0193 c1
+0194 c2
+0195 c3
+0196 c4
+0197 c5
+0198 c6
+0199 c7
+0200 c8
+0201 c9
+0202 ca
+0203 cb
+0204 cc
+0205 cd
+0206 ce
+0207 cf
+0208 d0
+0209 d1
+0210 d2
+0211 d3
+0212 d4
+0213 d5
+0214 d6
+0215 d7
+0216 d8
+0217 d9
+0218 da
+0219 db
+0220 dc
+0221 dd
+0222 de
+0223 df
+0224 e0
+0225 e1
+0226 e2
+0227 e3
+0228 e4
+0229 e5
+0230 e6
+0231 e7
+0232 e8
+0233 e9
+0234 ea
+0235 eb
+0236 ec
+0237 ed
+0238 ee
+0239 ef
+0240 f0
+0241 f1
+0242 f2
+0243 f3
+0244 f4
+0245 f5
+0246 f6
+0247 f7
+0248 f8
+0249 f9
+0250 fa
+0251 fb
+0252 fc
+0253 fd
+0254 fe
+0255 ff
diff --git a/frontend/imgradient/dirs.py b/frontend/imgradient/dirs.py
new file mode 100755
index 0000000..1cb9fa5
--- /dev/null
+++ b/frontend/imgradient/dirs.py
@@ -0,0 +1,7 @@
+#!/usr/bin/python2.7
+
+import os
+
+for i in xrange(256):
+ print "%04d %02x" % (i,i)
+# os.mkdir ("%02x" % i)
diff --git a/frontend/imgradient/firstrun/blue-turquoise_1315104576.gif b/frontend/imgradient/firstrun/blue-turquoise_1315104576.gif
new file mode 100755
index 0000000..ebaaa1c
--- /dev/null
+++ b/frontend/imgradient/firstrun/blue-turquoise_1315104576.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/blue-turquoise_1315104586.gif b/frontend/imgradient/firstrun/blue-turquoise_1315104586.gif
new file mode 100755
index 0000000..1bd11e4
--- /dev/null
+++ b/frontend/imgradient/firstrun/blue-turquoise_1315104586.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/blue-turquoise_1315104592.gif b/frontend/imgradient/firstrun/blue-turquoise_1315104592.gif
new file mode 100755
index 0000000..1bd11e4
--- /dev/null
+++ b/frontend/imgradient/firstrun/blue-turquoise_1315104592.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/blue-turquoise_1315104597.gif b/frontend/imgradient/firstrun/blue-turquoise_1315104597.gif
new file mode 100755
index 0000000..1bd11e4
--- /dev/null
+++ b/frontend/imgradient/firstrun/blue-turquoise_1315104597.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/blue-turquoise_1315104604.gif b/frontend/imgradient/firstrun/blue-turquoise_1315104604.gif
new file mode 100755
index 0000000..e27009e
--- /dev/null
+++ b/frontend/imgradient/firstrun/blue-turquoise_1315104604.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/blue-turquoise_1315104609.gif b/frontend/imgradient/firstrun/blue-turquoise_1315104609.gif
new file mode 100755
index 0000000..1bd11e4
--- /dev/null
+++ b/frontend/imgradient/firstrun/blue-turquoise_1315104609.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/green-black_1315122389.gif b/frontend/imgradient/firstrun/green-black_1315122389.gif
new file mode 100755
index 0000000..6b82eb8
--- /dev/null
+++ b/frontend/imgradient/firstrun/green-black_1315122389.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/green-black_1315122400.gif b/frontend/imgradient/firstrun/green-black_1315122400.gif
new file mode 100755
index 0000000..62bbeef
--- /dev/null
+++ b/frontend/imgradient/firstrun/green-black_1315122400.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/green-black_1315122410.gif b/frontend/imgradient/firstrun/green-black_1315122410.gif
new file mode 100755
index 0000000..632996c
--- /dev/null
+++ b/frontend/imgradient/firstrun/green-black_1315122410.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/green-black_1315122420.gif b/frontend/imgradient/firstrun/green-black_1315122420.gif
new file mode 100755
index 0000000..5358fbe
--- /dev/null
+++ b/frontend/imgradient/firstrun/green-black_1315122420.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/green-black_1315122433.gif b/frontend/imgradient/firstrun/green-black_1315122433.gif
new file mode 100755
index 0000000..148f3de
--- /dev/null
+++ b/frontend/imgradient/firstrun/green-black_1315122433.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/green-black_1315122439.gif b/frontend/imgradient/firstrun/green-black_1315122439.gif
new file mode 100755
index 0000000..124ddea
--- /dev/null
+++ b/frontend/imgradient/firstrun/green-black_1315122439.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/green-black_1315122450.gif b/frontend/imgradient/firstrun/green-black_1315122450.gif
new file mode 100755
index 0000000..fd32367
--- /dev/null
+++ b/frontend/imgradient/firstrun/green-black_1315122450.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/green-darkorchid_1315122486.gif b/frontend/imgradient/firstrun/green-darkorchid_1315122486.gif
new file mode 100755
index 0000000..4537a2d
--- /dev/null
+++ b/frontend/imgradient/firstrun/green-darkorchid_1315122486.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/pink-brown_1315117256_pepper.gif b/frontend/imgradient/firstrun/pink-brown_1315117256_pepper.gif
new file mode 100755
index 0000000..6af4c65
--- /dev/null
+++ b/frontend/imgradient/firstrun/pink-brown_1315117256_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/pink-brown_1315117275_pepper.gif b/frontend/imgradient/firstrun/pink-brown_1315117275_pepper.gif
new file mode 100755
index 0000000..aaebf53
--- /dev/null
+++ b/frontend/imgradient/firstrun/pink-brown_1315117275_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/pink-brown_1315117282_pepper.gif b/frontend/imgradient/firstrun/pink-brown_1315117282_pepper.gif
new file mode 100755
index 0000000..bdab6d8
--- /dev/null
+++ b/frontend/imgradient/firstrun/pink-brown_1315117282_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/pink-brown_1315117337_pepper.gif b/frontend/imgradient/firstrun/pink-brown_1315117337_pepper.gif
new file mode 100755
index 0000000..b919dd4
--- /dev/null
+++ b/frontend/imgradient/firstrun/pink-brown_1315117337_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/pink-brown_1315117344_pepper.gif b/frontend/imgradient/firstrun/pink-brown_1315117344_pepper.gif
new file mode 100755
index 0000000..44aa4bb
--- /dev/null
+++ b/frontend/imgradient/firstrun/pink-brown_1315117344_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/red-black_1315104452_pepper.gif b/frontend/imgradient/firstrun/red-black_1315104452_pepper.gif
new file mode 100755
index 0000000..0c5e456
--- /dev/null
+++ b/frontend/imgradient/firstrun/red-black_1315104452_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/red-black_1315104469_pepper.gif b/frontend/imgradient/firstrun/red-black_1315104469_pepper.gif
new file mode 100755
index 0000000..0c5e456
--- /dev/null
+++ b/frontend/imgradient/firstrun/red-black_1315104469_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/red-black_1315104474_pepper.gif b/frontend/imgradient/firstrun/red-black_1315104474_pepper.gif
new file mode 100755
index 0000000..60c971c
--- /dev/null
+++ b/frontend/imgradient/firstrun/red-black_1315104474_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/red-black_1315104486_pepper.gif b/frontend/imgradient/firstrun/red-black_1315104486_pepper.gif
new file mode 100755
index 0000000..56a4573
--- /dev/null
+++ b/frontend/imgradient/firstrun/red-black_1315104486_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/red-black_1315104496_pepper.gif b/frontend/imgradient/firstrun/red-black_1315104496_pepper.gif
new file mode 100755
index 0000000..d7077e0
--- /dev/null
+++ b/frontend/imgradient/firstrun/red-black_1315104496_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/red-black_1315104503_pepper.gif b/frontend/imgradient/firstrun/red-black_1315104503_pepper.gif
new file mode 100755
index 0000000..d7077e0
--- /dev/null
+++ b/frontend/imgradient/firstrun/red-black_1315104503_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/red-black_1315104513_pepper.gif b/frontend/imgradient/firstrun/red-black_1315104513_pepper.gif
new file mode 100755
index 0000000..7a0b613
--- /dev/null
+++ b/frontend/imgradient/firstrun/red-black_1315104513_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/red-black_1315104557_pepper.gif b/frontend/imgradient/firstrun/red-black_1315104557_pepper.gif
new file mode 100755
index 0000000..ecbe32a
--- /dev/null
+++ b/frontend/imgradient/firstrun/red-black_1315104557_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/red-black_1315104564_pepper.gif b/frontend/imgradient/firstrun/red-black_1315104564_pepper.gif
new file mode 100755
index 0000000..bf2c16a
--- /dev/null
+++ b/frontend/imgradient/firstrun/red-black_1315104564_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/red-black_1315104570_pepper.gif b/frontend/imgradient/firstrun/red-black_1315104570_pepper.gif
new file mode 100755
index 0000000..ecbe32a
--- /dev/null
+++ b/frontend/imgradient/firstrun/red-black_1315104570_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/red-black_1315104579_pepper.gif b/frontend/imgradient/firstrun/red-black_1315104579_pepper.gif
new file mode 100755
index 0000000..ecbe32a
--- /dev/null
+++ b/frontend/imgradient/firstrun/red-black_1315104579_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/red-black_1315104583_pepper.gif b/frontend/imgradient/firstrun/red-black_1315104583_pepper.gif
new file mode 100755
index 0000000..ecbe32a
--- /dev/null
+++ b/frontend/imgradient/firstrun/red-black_1315104583_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/red-black_1315105326_pepper.gif b/frontend/imgradient/firstrun/red-black_1315105326_pepper.gif
new file mode 100755
index 0000000..6644b29
--- /dev/null
+++ b/frontend/imgradient/firstrun/red-black_1315105326_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/snow2-orange_1315118700.gif b/frontend/imgradient/firstrun/snow2-orange_1315118700.gif
new file mode 100755
index 0000000..6f6d7ad
--- /dev/null
+++ b/frontend/imgradient/firstrun/snow2-orange_1315118700.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/snow2-rosybrown1_1315117026_pepper.gif b/frontend/imgradient/firstrun/snow2-rosybrown1_1315117026_pepper.gif
new file mode 100755
index 0000000..b38750f
--- /dev/null
+++ b/frontend/imgradient/firstrun/snow2-rosybrown1_1315117026_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/turquoise-black_1315109992.gif b/frontend/imgradient/firstrun/turquoise-black_1315109992.gif
new file mode 100755
index 0000000..9cf70fd
--- /dev/null
+++ b/frontend/imgradient/firstrun/turquoise-black_1315109992.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/turquoise-black_1315109999.gif b/frontend/imgradient/firstrun/turquoise-black_1315109999.gif
new file mode 100755
index 0000000..483e674
--- /dev/null
+++ b/frontend/imgradient/firstrun/turquoise-black_1315109999.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/turquoise-black_1315110014.gif b/frontend/imgradient/firstrun/turquoise-black_1315110014.gif
new file mode 100755
index 0000000..9cf70fd
--- /dev/null
+++ b/frontend/imgradient/firstrun/turquoise-black_1315110014.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/turquoise-black_1315110018.gif b/frontend/imgradient/firstrun/turquoise-black_1315110018.gif
new file mode 100755
index 0000000..6f38016
--- /dev/null
+++ b/frontend/imgradient/firstrun/turquoise-black_1315110018.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/turquoise-black_1315116328_pepper.gif b/frontend/imgradient/firstrun/turquoise-black_1315116328_pepper.gif
new file mode 100755
index 0000000..9cf70fd
--- /dev/null
+++ b/frontend/imgradient/firstrun/turquoise-black_1315116328_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/turquoise-indianred_1315106124_pepper.gif b/frontend/imgradient/firstrun/turquoise-indianred_1315106124_pepper.gif
new file mode 100755
index 0000000..81b90d7
--- /dev/null
+++ b/frontend/imgradient/firstrun/turquoise-indianred_1315106124_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/turquoise-indianred_1315106162_pepper.gif b/frontend/imgradient/firstrun/turquoise-indianred_1315106162_pepper.gif
new file mode 100755
index 0000000..71e6c54
--- /dev/null
+++ b/frontend/imgradient/firstrun/turquoise-indianred_1315106162_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/turquoise-indianred_1315106185_pepper.gif b/frontend/imgradient/firstrun/turquoise-indianred_1315106185_pepper.gif
new file mode 100755
index 0000000..301981e
--- /dev/null
+++ b/frontend/imgradient/firstrun/turquoise-indianred_1315106185_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/turquoise-indianred_1315106200_pepper.gif b/frontend/imgradient/firstrun/turquoise-indianred_1315106200_pepper.gif
new file mode 100755
index 0000000..8944689
--- /dev/null
+++ b/frontend/imgradient/firstrun/turquoise-indianred_1315106200_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/turquoise-turquoise1_1315165837_pepper.gif b/frontend/imgradient/firstrun/turquoise-turquoise1_1315165837_pepper.gif
new file mode 100755
index 0000000..99091ca
--- /dev/null
+++ b/frontend/imgradient/firstrun/turquoise-turquoise1_1315165837_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/turquoise-turquoise1_1315165849_pepper.gif b/frontend/imgradient/firstrun/turquoise-turquoise1_1315165849_pepper.gif
new file mode 100755
index 0000000..76d760e
--- /dev/null
+++ b/frontend/imgradient/firstrun/turquoise-turquoise1_1315165849_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315090214.gif b/frontend/imgradient/firstrun/white-black_1315090214.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315090214.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315090397.gif b/frontend/imgradient/firstrun/white-black_1315090397.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315090397.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315104253_pepper.gif b/frontend/imgradient/firstrun/white-black_1315104253_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315104253_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315104262_pepper.gif b/frontend/imgradient/firstrun/white-black_1315104262_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315104262_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315104264_pepper.gif b/frontend/imgradient/firstrun/white-black_1315104264_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315104264_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315104276_pepper.gif b/frontend/imgradient/firstrun/white-black_1315104276_pepper.gif
new file mode 100755
index 0000000..77b98c8
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315104276_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315104281_pepper.gif b/frontend/imgradient/firstrun/white-black_1315104281_pepper.gif
new file mode 100755
index 0000000..1a840f7
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315104281_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315104287_pepper.gif b/frontend/imgradient/firstrun/white-black_1315104287_pepper.gif
new file mode 100755
index 0000000..77b98c8
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315104287_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315104447_pepper.gif b/frontend/imgradient/firstrun/white-black_1315104447_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315104447_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315106725_pepper.gif b/frontend/imgradient/firstrun/white-black_1315106725_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315106725_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315113027.gif b/frontend/imgradient/firstrun/white-black_1315113027.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315113027.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315113031.gif b/frontend/imgradient/firstrun/white-black_1315113031.gif
new file mode 100755
index 0000000..8174625
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315113031.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315113039.gif b/frontend/imgradient/firstrun/white-black_1315113039.gif
new file mode 100755
index 0000000..05df7ec
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315113039.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315113043.gif b/frontend/imgradient/firstrun/white-black_1315113043.gif
new file mode 100755
index 0000000..f3fc060
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315113043.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315113054.gif b/frontend/imgradient/firstrun/white-black_1315113054.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315113054.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315113059.gif b/frontend/imgradient/firstrun/white-black_1315113059.gif
new file mode 100755
index 0000000..b4efc24
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315113059.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315113066.gif b/frontend/imgradient/firstrun/white-black_1315113066.gif
new file mode 100755
index 0000000..05df7ec
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315113066.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315113070.gif b/frontend/imgradient/firstrun/white-black_1315113070.gif
new file mode 100755
index 0000000..f3fc060
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315113070.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315113080.gif b/frontend/imgradient/firstrun/white-black_1315113080.gif
new file mode 100755
index 0000000..d3d895d
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315113080.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315113215.gif b/frontend/imgradient/firstrun/white-black_1315113215.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315113215.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315113231_pepper.gif b/frontend/imgradient/firstrun/white-black_1315113231_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315113231_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315113240_pepper.gif b/frontend/imgradient/firstrun/white-black_1315113240_pepper.gif
new file mode 100755
index 0000000..05df7ec
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315113240_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315113554_pepper.gif b/frontend/imgradient/firstrun/white-black_1315113554_pepper.gif
new file mode 100755
index 0000000..05df7ec
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315113554_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315113558_pepper.gif b/frontend/imgradient/firstrun/white-black_1315113558_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315113558_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315114146_pepper.gif b/frontend/imgradient/firstrun/white-black_1315114146_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315114146_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315114150_pepper.gif b/frontend/imgradient/firstrun/white-black_1315114150_pepper.gif
new file mode 100755
index 0000000..a460627
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315114150_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315114156_pepper.gif b/frontend/imgradient/firstrun/white-black_1315114156_pepper.gif
new file mode 100755
index 0000000..05df7ec
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315114156_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315114160_pepper.gif b/frontend/imgradient/firstrun/white-black_1315114160_pepper.gif
new file mode 100755
index 0000000..f3fc060
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315114160_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315115826_pepper.gif b/frontend/imgradient/firstrun/white-black_1315115826_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315115826_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315115828_pepper.gif b/frontend/imgradient/firstrun/white-black_1315115828_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315115828_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315115830_pepper.gif b/frontend/imgradient/firstrun/white-black_1315115830_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315115830_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315115831_pepper.gif b/frontend/imgradient/firstrun/white-black_1315115831_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315115831_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315116319_pepper.gif b/frontend/imgradient/firstrun/white-black_1315116319_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315116319_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315117463_pepper.gif b/frontend/imgradient/firstrun/white-black_1315117463_pepper.gif
new file mode 100755
index 0000000..a4cb01c
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315117463_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315118264_pepper.gif b/frontend/imgradient/firstrun/white-black_1315118264_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315118264_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315118293_pepper.gif b/frontend/imgradient/firstrun/white-black_1315118293_pepper.gif
new file mode 100755
index 0000000..2870694
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315118293_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315118571_pepper.gif b/frontend/imgradient/firstrun/white-black_1315118571_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315118571_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315119305_pepper.gif b/frontend/imgradient/firstrun/white-black_1315119305_pepper.gif
new file mode 100755
index 0000000..4604f76
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315119305_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315119637_pepper.gif b/frontend/imgradient/firstrun/white-black_1315119637_pepper.gif
new file mode 100755
index 0000000..f3fc060
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315119637_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315120513_pepper.gif b/frontend/imgradient/firstrun/white-black_1315120513_pepper.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315120513_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315121913_pepper.gif b/frontend/imgradient/firstrun/white-black_1315121913_pepper.gif
new file mode 100755
index 0000000..05df7ec
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315121913_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315121922_pepper.gif b/frontend/imgradient/firstrun/white-black_1315121922_pepper.gif
new file mode 100755
index 0000000..f3fc060
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315121922_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315121930_pepper.gif b/frontend/imgradient/firstrun/white-black_1315121930_pepper.gif
new file mode 100755
index 0000000..9a0f7d9
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315121930_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315122356.gif b/frontend/imgradient/firstrun/white-black_1315122356.gif
new file mode 100755
index 0000000..9d68cfd
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315122356.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315122405.gif b/frontend/imgradient/firstrun/white-black_1315122405.gif
new file mode 100755
index 0000000..ca9c9fe
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315122405.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-black_1315159828_pepper.gif b/frontend/imgradient/firstrun/white-black_1315159828_pepper.gif
new file mode 100755
index 0000000..ebae0c0
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-black_1315159828_pepper.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-turquoise_1315113096.gif b/frontend/imgradient/firstrun/white-turquoise_1315113096.gif
new file mode 100755
index 0000000..3ae9b16
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-turquoise_1315113096.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-turquoise_1315113100.gif b/frontend/imgradient/firstrun/white-turquoise_1315113100.gif
new file mode 100755
index 0000000..3ae9b16
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-turquoise_1315113100.gif
Binary files differ
diff --git a/frontend/imgradient/firstrun/white-turquoise_1315113101.gif b/frontend/imgradient/firstrun/white-turquoise_1315113101.gif
new file mode 100755
index 0000000..3ae9b16
--- /dev/null
+++ b/frontend/imgradient/firstrun/white-turquoise_1315113101.gif
Binary files differ
diff --git a/frontend/imgradient/index.html b/frontend/imgradient/index.html
new file mode 100755
index 0000000..dd4c8f4
--- /dev/null
+++ b/frontend/imgradient/index.html
@@ -0,0 +1,541 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<!--
+ __ __ __ __ __ __ __
+/_/\/\ /_/\/\ /_/\/\ /_/\/\ /_/\/\ /_/\/\ /_/\/\
+\_\ / \_\ / \_\ / \_\ / \_\ / \_\ / \_\ /
+/_/ \ /_/ \ /_/ \ /_/ \ /_/ \ /_/ \ /_/ \
+\_\/\ \ \_\/\ \ \_\/\ \ \_\/\ \ \_\/\ \ \_\/\ \ \_\/\ \
+ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/
+-->
+
+<html>
+<head>
+<title>GRADIENT PHOTOBLASTER</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta property="og:title" content="GRADIENT PHOTOBLASTER"/>
+<meta property="og:type" content="website"/>
+<meta name=Author content="Pepper .... with help from Jules Welter/LaPlace"/>
+<meta property="og:url" content="http://asdf.us/imgradient/"/>
+<meta property="og:image" content="http://asdf.us/g/experiment/whitegreencrazy.jpg" />
+<meta property="og:site_name" content="asdf.us"/>
+<meta property="og:description" content="choose colors and options, let it flow out of you."/>
+<meta property="fb:admins" content="100001923956223,1709246"/>
+<link href="css/custom-theme/jquery-ui-1.8.16.custom.css" rel="stylesheet" type="text/css" />
+<link rel="stylesheet" type="text/css" href="/im/colors/css/jquery.fancybox.css?v=2.1.5" media="screen" />
+<style type="text/css">
+*
+ {
+ padding: 0;
+ margin: 0;
+ font-family: times;
+ }
+body
+ {
+ background-color: #e6e0e0;
+ color: #696969;
+ overflow-x:hidden;
+ }
+h1
+ {
+ font-size: 40px;
+ }
+#brightness-slider,#hue-slider,#saturation-slider,#blur-slider
+ {
+ margin-top:10px;
+ margin-bottom:10px;
+ background-color:#B3B3B3;
+ }
+#stripenumber,#stripeintensity,#percentbeveled
+ {
+ height:10px;
+ width :25px;
+ font-size:9;
+ }
+#controls,#result
+ {
+ padding: 10px;
+ width: 460px;
+ }
+#controls
+ {
+ display:block;
+ font-size: 14px;
+ top: 10px; left: 10px;
+ z-index: 5;
+ background-color: #fff;
+ -moz-box-shadow: 0px 0px 9px 3px mediumseagreen;
+ -webkit-box-shadow: 0px 0px 9px 3px mediumseagreen;
+ box-shadow: 0px 0px 9px 3px mediumseagreen;
+ border: 60px outset #777;
+ }
+#result
+ {
+ background-color: #d6d0d0;
+ top: 10px; left: 580px;
+ z-index: 5;
+ display: none;
+ position: fixed;
+ }
+#instructions
+ {
+ position: absolute;
+ bottom: 10px;
+ left: 10px;
+ line-height: 18px;
+ z-index: 1;
+ }
+p
+ {
+ background-color: #fff;
+ padding: 10px;
+ font-size: 14px;
+ width: 430px;
+ display: block;
+ }
+#gallery-link
+ {
+ background-color: #fff;
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ padding: 10px;
+ z-index: 10;
+ }
+.error
+ {
+ color: red;
+ font-size: 20px;
+ }
+a
+ {
+ color: #b4d;
+ font-weight: bold;
+ }
+label
+
+ {
+ display: inline-block;
+ width: 300px;
+ padding-right: 10px;
+ text-align: center;
+ }
+input[type=text]
+ {
+ width: 50px;
+ }
+#img-url,#output-url,#img-background
+ {
+ width: 200px;
+ }
+#img-width,#img-height,#img-brightness,#img-saturation,#img-contrast,#img-hue,#img-rotate,#img-blur,#img-tilt
+ {
+ width: 50px;
+ text-align: right;
+ }
+button
+ {
+ padding: 2px 5px;
+ font-size: 16px;
+ width:200px;
+ float:right;
+ font-weight:bold;
+ color:#222222;
+ }
+#result img
+ {
+ max-width: 400px;
+ max-height: 400px;
+ }
+#output-cmd
+ {
+ font-size: 12px;
+ white-space: pre;
+ }
+.shim
+ {
+ height: 10px;
+ clear: both;
+ display: block;
+ }
+#output-url
+ {
+ width: 320px;
+ }
+#likebutton
+ {
+ position: fixed;
+ bottom: 10px;
+ right: 10px;
+ width: 350px;
+ background-color: #fff;
+ padding: 10px;
+ color: #ddd;
+ font-family: times;
+ text-transform: uppercase;
+ }
+.arrow
+ {
+ float:right;
+ white-space:inherit;
+ display:inline;
+ }
+
+</style>
+<body>
+<div id="error"></div>
+<div id="controls">
+<form id="reset" onsubmit="return false">
+<h1>
+ GRADIENT GENERATOR FOR PHOTOBLASTER
+ <img src="http://i.asdf.us/im/4e/angreekcolumnshowcaselg_1315115918_pepper.gif"/>
+ <img src="http://i.asdf.us/im/4e/angreekcolumnshowcaselg_1315115933_pepper.gif"/>
+ <img src="http://i.asdf.us/im/4e/angreekcolumnshowcaselg_1315115941_pepper.gif"/>
+ <img src="http://i.asdf.us/im/4e/angreekcolumnshowcaselg_1315115946_pepper.gif"/>
+ <img src="http://i.asdf.us/im/4e/angreekcolumnshowcaselg_1315115946_pepper.gif"/>
+ <img src="http://i.asdf.us/im/4e/angreekcolumnshowcaselg_1315115946_pepper.gif"/>
+ <img src="http://i.asdf.us/im/4e/angreekcolumnshowcaselg_1315115946_pepper.gif"/>
+ <img src="http://i.asdf.us/im/4e/angreekcolumnshowcaselg_1315115946_pepper.gif"/>
+</h1>
+
+ <span class="shim"></span>
+
+
+ <label><span style="font-weight:bold; color:black;">CHOOSE A GRADIENT TYPE<span class="arrow">&rarr;</span></span></label>
+ <select id="gradient-type">
+ <option selected="selected" value="gradient">STRAIGHT FADE</option>
+ <option value="plasma">PLASMA</option>
+ <!-- <option value="-function sinusoid 4,-90 gradient:">bands</option>-->
+ <option value="canvas">JUST A FLAT COLOR</option>
+ <option value="radial">RADIAL GRADIENT</option>
+ <option value="colorspace">GRAYSCALE PLASMA</option>
+ <option value="plasmawash">PLASMA WASH</option>
+ <option value="gradientwash">GRADIENT WASH</option>
+ <option value="mirrored">MIRRORED PLASMA</option>
+ <option value="noise">RANDOM NOISE</option>
+ </select>
+
+ <span class="shim"></span>
+
+ <label><span style="font-weight:bold">ADJUST THE WIDTH</span><span class="arrow">&rarr;</span></label>
+ <input type="text" id="img-width" value="400" /><small>px</small>
+ <br/>
+
+ <span class="shim"></span>
+
+ <label><span style="font-weight:bold">ADJUST THE HEIGHT</span><span class="arrow">&rarr;</span></label>
+ <input type="text" id="img-height" value="400" /><small>px</small>
+ <br/>
+
+ <span class="shim"></span>
+
+ <label>CHOOSE SOME COLORS<span class="arrow">&rarr;</span></label>
+ <span class="shim"></span>
+
+ <label><span style="font-weight:bold; color:black;">COLOR 1</span><span class="arrow">&rarr;</span></label>
+ <input type="text" id="img-color1" value="white" class="color1" />&nbsp;<a href="http://asdf.us/im/colors" target="_blank" class="color1">color list</a>
+ <br/>
+
+ <span class="shim"></span>
+
+ <label><span style="font-weight:bold; color:black;">COLOR 2</span><span class="arrow">&rarr;</span></label>
+ <input type="text" id="img-color2" value="black" class="color2"/>&nbsp;<a href="http://asdf.us/im/colors" target="_blank" class="color2">color list</a>
+ <br/>
+
+ <span class="shim"></span>
+
+ <span style="font-size:11px">
+ <label>BANDS(also called stripes)?<span class="arrow">&rarr;</span></label>
+ <input type="checkbox" id="stripes" value="1" />
+ <small>if yes...</small><label>NUMBER:</label><input value="" type="text" id="stripenumber"></input><small>0-400</small><label>INTENSITY:</label><input value="" type="text" id="stripeintensity"></input><small>0-2000</small>
+ </span>
+
+ <span class="shim"></span>
+ <span class="shim"></span>
+
+ <label>BLURRINESS <small>(0-20)</small><span class="arrow">&rarr;</span></label>
+ <input type="text" id="img-blur" value="" />
+ <br/>
+
+ <div class="slider" id="blur-slider"></div>
+
+ <label>HUE <small>(0-200)</small><span class="arrow">&rarr;</span></label>
+ <input type="text" id="img-hue" value="" />
+ <br/>
+
+ <div class="slider" id="hue-slider"></div>
+
+ <label>SATURATION <small>(0-200)</small><span class="arrow">&rarr;</span></label>
+ <input type="text" id="img-saturation" value="" />
+ <br/>
+
+ <div class="slider" id="saturation-slider"></div>
+
+ <label>BRIGHTNESS <small>(0-200)</small><span class="arrow">&rarr;</span></label>
+ <input type="text" id="img-brightness" value="" />
+ <br/>
+
+ <div class="slider" id="brightness-slider"></div>
+
+ <span class="shim"></span>
+
+
+ <label><span style="font-size:11px">CHOOSE A HALFTONE FILTER</span><span class="arrow">&rarr;</span></label>
+ <select id="halftone-type">
+ <option selected="selected" value="">None</option>
+ <option value="checkeredfade">checkered-fade</option>
+ <option value="etchedtransition">etched-transition</option>
+ <option value="bendaydots">benday dots</option>
+ <option value="smallerdots1">smaller dots 1</option>
+ <option value="smallerdots2">smaller dots 2</option>
+ <option value="flatstripes">flat stripes</option>
+ </select>
+
+
+ <span class="shim"></span>
+
+ <label><span style="font-size:11px">ADD A BEVELED BORDER</span><span class="arrow">&rarr;</span></label>
+
+ <select id="bevel-type">
+ <option selected="selected" value="">None</option>
+ <option value="flatout">flat out</option>
+ <option value="flatinner">flat inner</option>
+ <option value="evenlyframed">evely framed</option>
+ <option value="biginner">big inner</option>
+ <option value="bigouter">big outer</option>
+ <option value="dramaticflatout">dramatic flat out</option>
+ <option value="dramaticflatinner">dramatic flat inner</option>
+ </select>
+
+ <span style="font-size:11px"><label>PERCENT BEVELED?</label></span> <input val="" type="text" id="percentbeveled"><small>%</small>
+
+
+ <span class="shim"></span>
+ <span class="shim"></span>
+ <label>FLIP HORIZONTALLY?
+ <span class="arrow">&rarr;</span></label>
+ <input type="checkbox" id="img-flop" value="1" />
+ <br/>
+
+ <label>FLIP VERTICALLY?<span class="arrow">&rarr;</span></label>
+ <input type="checkbox" id="img-flip" value="1" />
+ <br/>
+ <label>TILT<small>(0-360)</small><span class="arrow">&rarr;</span></label>
+ <input type="text" id="img-tilt" value="" />&deg;
+ <br/>
+ <span class="shim"></span>
+
+ <label>ROTATE THE CANVAS<small>(0-360)</small><span class="arrow">&rarr;</span></label>
+ <input type="text" id="img-rotate" value="" />&deg;
+ <br/>
+
+ <span class="shim"></span>
+
+ <span class="shim"></span>
+
+ <label>output format:</label>
+ <select id="img-format">
+ <option selected="selected">png</option>
+ <option>jpg</option>
+ <option>gif</option>
+ </select>
+
+ <span class="shim"></span>
+
+ <label>PUT YOUR NAME HERE &gt;&gt;&gt;</label>
+ <input type="text" id="img-name" value="" />
+ <br/>
+
+ <span class="shim"></span>
+
+ <label>&nbsp;</label>
+ <button id="img-generate">GENERATE</button>
+
+ <span class="shim"></span>
+ <br>
+ VIEW AND ARRANGE THE PHOTOBLASTS &rarr; <a href="/im/gallery/" target="_blank">Image Gallery</a><br/>
+ <span class="shim"></span>
+ OPEN THE PHOTOBLASTER EDITOR &rarr; <a href="/im" target="_blank">PHOTOBLASTER</a>
+ <span class="shim"></span>
+ TOP PHOTOBLASTS GO TO THE TUMBLR &rarr; <a href="http://photoblaster.tumblr.com/">Photoblaster Tumblr</a>
+ </p>
+
+</div>
+
+<div id="result">
+ &rarr; <input type="text" id="output-url"/><br/>
+ <span id="output-cmd"></span><br/>
+
+ <img id="output-img" />
+</div>
+</form>
+</div>
+
+<div id="likebutton">
+<div id="fb-root" style="background-color: transparent;"></div><script src="http://connect.facebook.net/en_US/all.js#appId=236917449658413&amp;xfbml=1"></script><fb:like href="http://asdf.us/im/" send="false" width="347" show_faces="true" colorscheme="light" font="" style="background-color: transparent;"></fb:like>
+</div>
+
+<script type="text/javascript" src="/js/jquery.js"></script>
+<script type="text/javascript" src="/js/jquery-ui-1.8.16.custom.min.js"></script>
+<script type="text/javascript" src="/im/colors/js/jquery.remember-state.js"></script>
+<script type="text/javascript" src="/im/colors/js/jquery.fancybox.js?v=2.1.5"></script>
+<script type="text/javascript" src="/js/colors_iframe.js"></script>
+<script type="text/javascript">
+
+ $(function() {
+ $( "#blur-slider" ).slider({
+ value:0,
+ min: 0,
+ max: 20,
+ step: 1,
+ slide: function( event, ui ) {
+ $( "#img-blur" ).val(ui.value);
+ }
+ });
+ $( "#img-blur" ).val( $( "#blur-slider" ).slider( "value" ) );
+
+ $( "#brightness-slider" ).slider({
+ value:100,
+ min: 0,
+ max: 200,
+ step: 1,
+ slide: function( event, ui ) {
+ $( "#img-brightness" ).val(ui.value);
+ }
+ });
+ $( "#img-brightness" ).val( $( "#brightness-slider" ).slider( "value" ) );
+
+ $( "#hue-slider" ).slider({
+ value:100,
+ min: 0,
+ max: 200,
+ step: 1,
+ slide: function( event, ui ) {
+ $( "#img-hue" ).val(ui.value);
+ }
+ });
+ $( "#img-hue" ).val($( "#hue-slider" ).slider( "value" ) );
+
+ $( "#saturation-slider" ).slider({
+ value:100,
+ min: 0,
+ max: 200,
+ step: 1,
+ slide: function( event, ui ) {
+ $( "#img-saturation" ).val(ui.value);
+ }
+ });
+ $( "#img-saturation" ).val($( "#saturation-slider" ).slider( "value" ) );
+ });
+
+var Main =
+ {
+ API_HEADER: "#@imgradient",
+ enter: function (e)
+ {
+// console.log("calling enter")
+ if (e.keyCode === 13){
+ Main.go()
+ }
+ },
+ go: function ()
+ {
+ $("#output-cmd").html('generating...').show()
+ $("#result").show()
+ var data =
+ {
+ flip: $('#img-flip:checked').val() !== undefined ? "true" : "false",
+ flop: $('#img-flop:checked').val() !== undefined ? "true" : "false",
+ tilt: $('#img-tilt').val(),
+ rotate: $("#img-rotate").val(),
+ subtract: $("#img-subtract").val(),
+ width: $("#img-width").val(),
+ height: $("#img-height").val(),
+ color2: $("#img-color2").val(),
+ color1: $("#img-color1").val(),
+ brightness: $("#img-brightness").val(),
+ saturation: $("#img-saturation").val(),
+ blurriness: $("#img-blur").val(),
+ hue: $("#img-hue").val(),
+ contrast: $("#img-contrast").val(),
+ gradienttype: $('#gradient-type :selected').val(),
+ bevel: $('#bevel-type :selected').val(),
+ percentbeveled: $('#percentbeveled').val(),
+ halftone: $('#halftone-type :selected').val(),
+ stripes: $('#stripes:checked').val() !== undefined ? "true" : "false",
+ stripenumber: $('#stripenumber').val(),
+ stripeintensity: $('#stripeintensity').val(),
+ format: $('#img-format :selected').text(),
+ name: $("#img-name").val(),
+ }
+ if (data.name.length > 0){
+ document.cookie = "imname="+data.name+";path=/;domain=.asdf.us;max-age=1086400"
+ }
+ $.post("/im/api/imgradient", data, Main.callback)
+ $("#controls").css('margin',"")
+ },
+ error: function (s)
+ {
+ $("#output-cmd").html("<span class='error'>ERROR: " + s + "</span>").show()
+ $("#output-url").hide()
+ $("#output-img").hide()
+ },
+ callback: function (data)
+ {
+ data = JSON.parse(data)
+ if (data.error){
+ return Main.error(data.error)
+ }
+ $("#output-cmd").html("size: "+Main.filesize(data.size)+"<br/>"+data.height + "&nbsp;x&nbsp;" + data.width)
+ $("#output-url").val(data.url)
+ $("#output-img").hide().attr("src", data.url).fadeIn(700)
+ },
+ filesize: function (size)
+ {
+ if (size < 1024)
+ return size + " bytes"
+ if (size < 1024 * 1024)
+ return Math.floor (size/1024) + " KB"
+ else
+ return Math.floor (size/(1024*1024)) + " MB"
+ },
+ cookie: function ()
+ {
+ if (document.cookie)
+ {
+ var cookies = document.cookie.split(";")
+ for (i in cookies)
+ {
+ var cookie = cookies[i].split("=")
+ if (cookie[0].indexOf("imname") !== -1)
+ {
+ if (cookie[1] !== 'false' && cookie[1] !== 'undefined' && cookie[1].length)
+ {
+ return cookie[1]
+ }
+ }
+ }
+ }
+ return ""
+ },
+ init: function ()
+ {
+ var name = Main.cookie ()
+ $("#img-name").val(name)
+ },
+}
+
+$(document).ready(function(){
+ Main.init ()
+ $('form').submit(function() {
+ return false;
+ });
+ $(document).keydown(Main.enter)
+ $("#img-generate").click(Main.go)
+ document.getElementById("reset").reset()
+})
+</script>
+<!--<script type="text/javascript" src="http://asdf.us/js/pbembed.js"></script>-->
+</body>
+</html>
+
diff --git a/frontend/imgradient/jquery-ui-1.8.16.custom.min.js b/frontend/imgradient/jquery-ui-1.8.16.custom.min.js
new file mode 100755
index 0000000..3042d0b
--- /dev/null
+++ b/frontend/imgradient/jquery-ui-1.8.16.custom.min.js
@@ -0,0 +1,84 @@
+/*!
+ * jQuery UI 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.16",
+keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({propAttr:c.fn.prop||c.fn.attr,_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=
+this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,
+"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":
+"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,
+outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,
+"tabindex"),d=isNaN(b);return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&
+a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&
+c.ui.isOverAxis(b,e,i)}})}})(jQuery);
+;/*!
+ * jQuery UI Widget 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)try{b(d).triggerHandler("remove")}catch(e){}k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(d){}});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=
+function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):
+d;if(e&&d.charAt(0)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=
+b.extend(true,{},this.options,this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+
+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",
+c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
+;/*!
+ * jQuery UI Mouse 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ * jquery.ui.widget.js
+ */
+(function(b){var d=false;b(document).mouseup(function(){d=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(c){return a._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(true===b.data(c.target,a.widgetName+".preventClickEvent")){b.removeData(c.target,a.widgetName+".preventClickEvent");c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
+this.widgetName)},_mouseDown:function(a){if(!d){this._mouseStarted&&this._mouseUp(a);this._mouseDownEvent=a;var c=this,f=a.which==1,g=typeof this.options.cancel=="string"&&a.target.nodeName?b(a.target).closest(this.options.cancel).length:false;if(!f||g||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=
+this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();return true}}true===b.data(a.target,this.widgetName+".preventClickEvent")&&b.removeData(a.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(e){return c._mouseMove(e)};this._mouseUpDelegate=function(e){return c._mouseUp(e)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return d=true}},_mouseMove:function(a){if(b.browser.msie&&
+!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=
+false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+;/*
+ * jQuery UI Slider 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.mouse.js
+ * jquery.ui.widget.js
+ */
+(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var a=this,b=this.options,c=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f=b.values&&b.values.length||1,e=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+
+this.orientation+" ui-widget ui-widget-content ui-corner-all"+(b.disabled?" ui-slider-disabled ui-disabled":""));this.range=d([]);if(b.range){if(b.range===true){if(!b.values)b.values=[this._valueMin(),this._valueMin()];if(b.values.length&&b.values.length!==2)b.values=[b.values[0],b.values[0]]}this.range=d("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(b.range==="min"||b.range==="max"?" ui-slider-range-"+b.range:""))}for(var j=c.length;j<f;j+=1)e.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
+this.handles=c.add(d(e.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(g){g.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(g){d(this).data("index.ui-slider-handle",
+g)});this.handles.keydown(function(g){var k=true,l=d(this).data("index.ui-slider-handle"),i,h,m;if(!a.options.disabled){switch(g.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:k=false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");i=a._start(g,l);if(i===false)return}break}m=a.options.step;i=a.options.values&&a.options.values.length?
+(h=a.values(l)):(h=a.value());switch(g.keyCode){case d.ui.keyCode.HOME:h=a._valueMin();break;case d.ui.keyCode.END:h=a._valueMax();break;case d.ui.keyCode.PAGE_UP:h=a._trimAlignValue(i+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(i-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(i===a._valueMax())return;h=a._trimAlignValue(i+m);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(i===a._valueMin())return;h=a._trimAlignValue(i-
+m);break}a._slide(g,l,h);return k}}).keyup(function(g){var k=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(g,k);a._change(g,k);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();
+return this},_mouseCapture:function(a){var b=this.options,c,f,e,j,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});f=this._valueMax()-this._valueMin()+1;j=this;this.handles.each(function(k){var l=Math.abs(c-j.values(k));if(f>l){f=l;e=d(this);g=k}});if(b.range===true&&this.values(1)===b.min){g+=1;e=d(this.handles[g])}if(this._start(a,g)===false)return false;
+this._mouseSliding=true;j._handleIndex=g;e.addClass("ui-state-active").focus();b=e.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-e.width()/2,top:a.pageY-b.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b=
+this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b=
+this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);
+c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var f;if(this.options.values&&this.options.values.length){f=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>f||b===1&&c<f))c=f;if(c!==this.values(b)){f=this.values();f[b]=c;a=this._trigger("slide",a,{handle:this.handles[b],value:c,values:f});this.values(b?0:1);a!==false&&this.values(b,c,true)}}else if(c!==this.value()){a=this._trigger("slide",a,{handle:this.handles[b],value:c});
+a!==false&&this.value(c)}},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("change",a,c)}},value:function(a){if(arguments.length){this.options.value=
+this._trimAlignValue(a);this._refreshValue();this._change(null,0)}else return this._value()},values:function(a,b){var c,f,e;if(arguments.length>1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e<c.length;e+=1){c[e]=this._trimAlignValue(f[e]);this._change(null,e)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(a):
+this.value();else return this._values()},_setOption:function(a,b){var c,f=0;if(d.isArray(this.options.values))f=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(a){case "disabled":if(b){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.propAttr("disabled",true);this.element.addClass("ui-disabled")}else{this.handles.propAttr("disabled",false);this.element.removeClass("ui-disabled")}break;case "orientation":this._detectOrientation();
+this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(c=0;c<f;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var a=this.options.value;return a=this._trimAlignValue(a)},_values:function(a){var b,c;if(arguments.length){b=this.options.values[a];
+return b=this._trimAlignValue(b)}else{b=this.options.values.slice();for(c=0;c<b.length;c+=1)b[c]=this._trimAlignValue(b[c]);return b}},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a=
+this.options.range,b=this.options,c=this,f=!this._animateOff?b.animate:false,e,j={},g,k,l,i;if(this.options.values&&this.options.values.length)this.handles.each(function(h){e=(c.values(h)-c._valueMin())/(c._valueMax()-c._valueMin())*100;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";d(this).stop(1,1)[f?"animate":"css"](j,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(h===0)c.range.stop(1,1)[f?"animate":"css"]({left:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({width:e-
+g+"%"},{queue:false,duration:b.animate})}else{if(h===0)c.range.stop(1,1)[f?"animate":"css"]({bottom:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({height:e-g+"%"},{queue:false,duration:b.animate})}g=e});else{k=this.value();l=this._valueMin();i=this._valueMax();e=i!==l?(k-l)/(i-l)*100:0;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[f?"animate":"css"](j,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[f?"animate":"css"]({width:e+"%"},
+b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[f?"animate":"css"]({width:100-e+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[f?"animate":"css"]({height:e+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[f?"animate":"css"]({height:100-e+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.16"})})(jQuery);
+; \ No newline at end of file
diff --git a/frontend/imgrid/3ddirs.txt b/frontend/imgrid/3ddirs.txt
new file mode 100755
index 0000000..5c00c34
--- /dev/null
+++ b/frontend/imgrid/3ddirs.txt
@@ -0,0 +1,256 @@
+00
+01
+02
+03
+04
+05
+06
+07
+08
+09
+0a
+0b
+0c
+0d
+0e
+0f
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+1a
+1b
+1c
+1d
+1e
+1f
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+2a
+2b
+2c
+2d
+2e
+2f
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+3a
+3b
+3c
+3d
+3e
+3f
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+4a
+4b
+4c
+4d
+4e
+4f
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+5a
+5b
+5c
+5d
+5e
+5f
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+6a
+6b
+6c
+6d
+6e
+6f
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+7a
+7b
+7c
+7d
+7e
+7f
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+8a
+8b
+8c
+8d
+8e
+8f
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+9a
+9b
+9c
+9d
+9e
+9f
+a0
+a1
+a2
+a3
+a4
+a5
+a6
+a7
+a8
+a9
+aa
+ab
+ac
+ad
+ae
+af
+b0
+b1
+b2
+b3
+b4
+b5
+b6
+b7
+b8
+b9
+ba
+bb
+bc
+bd
+be
+bf
+c0
+c1
+c2
+c3
+c4
+c5
+c6
+c7
+c8
+c9
+ca
+cb
+cc
+cd
+ce
+cf
+d0
+d1
+d2
+d3
+d4
+d5
+d6
+d7
+d8
+d9
+da
+db
+dc
+dd
+de
+df
+e0
+e1
+e2
+e3
+e4
+e5
+e6
+e7
+e8
+e9
+ea
+eb
+ec
+ed
+ee
+ef
+f0
+f1
+f2
+f3
+f4
+f5
+f6
+f7
+f8
+f9
+fa
+fb
+fc
+fd
+fe
+ff
diff --git a/frontend/imgrid/backup.html b/frontend/imgrid/backup.html
new file mode 100755
index 0000000..86ee325
--- /dev/null
+++ b/frontend/imgrid/backup.html
@@ -0,0 +1,466 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
+<html>
+<!--
+ * pepper *
+ *** and ***
+ **** JMD ****
+ * ****** internet CHAMPIONS ****** *
+ * *************************************** *
+ ** * ______*______ * **
+ ***** * ______*______ * *****
+ ******* ______*______ *******
+ *** **** * **** ***
+ ****** *oo******* *** *******oo* ******
+ * *o********* *********o* *
+ * * * *
+ * * _ _ * *
+ * * -_ _- * *
+ * * -_ _- * *
+ * * -___- * *
+ * *
+ *********************
+ * ** ** *
+ * ** ** *
+ * _-----_ *
+ *********
+
+-->
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta name="description" content="IMGRID A 3D GRID-PLANE GENERATOR" >
+ <meta name="keywords" content="photoblaster, 3D" >
+ <meta name=Author content="Pepper Dreamteamer - 2011 www.facebook.com/AAAFFF">
+ <link rel="shortcut icon" href="http://asdf.us/imgrid/favicon.ico">
+ <link rel="image_src" href="http://vfile.com/public/img/1.png" >
+ <html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">
+ <meta property="og:title" content="imgrid" />
+ <meta property="og:type" content="website" />
+ <meta property="og:url" content="http://asdf.us/imgrid" />
+ <meta property="og:site_name" content="IMGRID - A 3D-GRID-PLANE GENERATOR" />
+ <meta property="og:image" content="http://asdf.us/imgrid/greatgrids/images/gg7.png"/>
+ <title>IMGRID - a 3D GRID-PLANE GENERATOR</title>
+
+ <link rel="stylesheet" href="general.css" type="text/css" media="screen" />
+ <link href='jquery-ui-1.8.16.custom.css' rel='stylesheet' type='text/css' />
+ <link href='cssreset.css' rel='stylesheet' type='text/css'/>
+ <link href='http://fonts.googleapis.com/css?family=Varela+Round' rel='stylesheet' type='text/css'>
+ <style type='text/css'>
+ body
+ {
+ font-family: 'Varela Round', sans-serif;
+ font-size:10pt;
+ }
+ h1
+ {
+ font-size:18px;
+ width:50%;
+ margin:10px;
+ padding:10px;
+ }
+ #flatcontrols
+ {
+ width:40%;
+ margin:10px;
+ padding:10px;
+ }
+ .gridadj,.background,.dimensions,.links
+ {
+ display:none;
+ }
+ #thegrid,#thedimensions,#thebackground,#links
+ {
+ background-color:whitesmoke;
+ margin-left:20px;
+ -moz-box-shadow: 0px 0px 9px 3px #8B7D7B;
+ -webkit-box-shadow: 0px 0px 9px 3px #8B7D7B;
+ box-shadow: 0px 0px 9px 3px #8B7D7B;
+ }
+ #links
+ {
+ line-height:2;
+ padding:10px;
+ }
+ .results
+ {
+ display:none;
+ position:relative;
+ }
+ #result
+ {
+ position:fixed;
+ left:50%;
+ top:20px;
+ padding-right:15px;
+ }
+ #output-img img
+ {
+ max-height:70%;
+ max-width:100%;
+ }
+ #output-url
+ {
+ width:100%;
+ }
+ .slider
+ {
+ background-color:#eee5de;
+ display:inline-block;
+ width:50%;
+ }
+ #opacity-slider, #spacing-slider
+ {
+ width:100%;
+ display:inline-block;
+ margin-right:0;
+ margin-left:0;
+ }
+ input
+ {
+ width:70px;
+ }
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default
+ {
+ background-color:#555;
+ }
+ .urlinput
+ {
+ width:60%;
+ }
+ a
+ {
+ background-color:white;
+ max-width:100px;
+ }
+ a:link
+ {
+ color: black;
+ }
+ a:visited
+ {
+ COLOR: black;
+ }
+ a:hover
+ {
+ COLOR: black;
+ }
+ a:active
+ {
+ COLOR: black;
+ }
+ table td
+ {
+ padding:4px;
+ }
+ table tr
+ {
+// border: solid 2px;
+ }
+ .gridmore, .backgroundmore, .dimensionsmore, .linksmore
+ {
+ cursor:pointer;
+ }
+ #gridplug,#backgroundplug,#dimensionsplug,#linksplug
+ {
+ font-size:20px;
+ text-align:center;
+ }
+button {
+ background: white;
+ color: #000000;
+ font-size: 18px;
+ font-family: Georgia, serif;
+ text-decoration: none;
+ vertical-align: middle;
+ }
+.button:hover {
+ border-top-color: #78e072;
+ background: #78e072;
+ color: #000000;
+ }
+table
+ {
+ empty-cells:show;
+ }
+.generate
+ {
+ position:absolute;
+ left:320px;
+ top:240px;
+ -moz-box-shadow: 0px 0px 9px 3px pink;
+ -webkit-box-shadow: 0px 0px 9px 3px pink;
+ box-shadow: 0px 0px 9px 3px pink;
+ }
+ </style>
+</head>
+<body>
+ <div id='intro' style='position:absolute;top:0px;left:0px;width:100%;height:100%;background-image:url(background.gif);'><div style="background-image:url(background.gif); z-index:1000; height:inherit; width:inherit; position:fixed; left:50%; top:20px">
+ <img src="athenafinal.gif"></img>
+ </div></div>
+
+<a href="http://asdf.us/imgrid/index.html" style:'cursor:pointer'><img src='http://asdf.us/im/8d/imgrid_1324285217_imgrid_1324210455_imgrid_1324210353_gradient_darkseagreencyan_1317343959___.png' style='position:fixed; top:-200px; z-index:-100;'></img>
+<div style='font-size:30px;'><img style="width:500px" src="http://asdf.us/im/42/imgrid_1324542588_.png"></img></div></a>
+<div style="font-size:12px;margin-left:20px;margin-bottom:20px;">3D-GRID-PLANE GENERATOR
+<br>
+hit enter or click GENERATE to get your 2D plane
+
+<span id='genbutton'><button id='generate'>GENERATE</button></span>
+</div>
+
+<form id='theform'>
+ <div id="flatcontrols">
+<table>
+<tr><td class='dimensionsmore'>DIMENSIONS</td>
+
+ <td> <div id='dimensionsplug' class='dimensionsmore'>+</div></td></tr>
+ </table>
+ <div id='thedimensions'>
+ <table class='dimensions'>
+ <tr><td>HEIGHT</td>
+ <td> <input id='img-height' type='text' value='500'><span style="font-size:12px">PX</span></input></td></td>
+ <tr><td>WIDTH</td>
+ <td><input id='img-width' type='text' value='700'><span style="font-size:12px">PX</span></input></td></td>
+ <tr style="line-height:10px"><td>&nbsp</tr><td>
+ </table>
+<table style="width:100%" class="dimensions">
+ <tr><td>SWING&nbsp<input id='swing' type='text' value='0'></input></td></tr>
+ <tr id="swingslider" class="slider"></tr>
+ <tr><td>TILT&nbsp<input id='tilt' type='text' value='0'></input></td></tr>
+ <tr id="tiltslider" class="slider"></tr>
+ <tr><td>ROLL&nbsp<input id='roll' type='text' value='0'></input></td></tr>
+ <tr id="rollslider" class="slider"></tr>
+ <tr><td>ZOOM&nbsp (in/out) &nbsp<input id='zoom' type='text' value='0'></input></td></tr>
+ <tr id="zoomslider" class="slider" value='0'></tr>
+
+</table>
+<table class="dimensions">
+ <tr><td>&nbsp</td></tr>
+ <tr><td>CROP WHITESPACE</td><td><input type="checkbox" id="trim" value="false"></input></td></tr>
+ <tr><td>&nbsp</td></tr>
+ </table>
+<table class='dimensions'>
+ <tr><td>IMAGE FORMAT</td><td>
+ <select id='format'>
+ <option selected='selected' value='png'>PNG</option>
+ <option value='gif'>GIF</option>
+ <option value='jpg'>JPG</option>
+ </select></td></tr></table>
+ </div>
+<table>
+<tr><td class='gridmore'>GRID AND IMAGE</td>
+
+ <td> <div id='gridplug' class='gridmore'>+</div></td></tr>
+ </table>
+
+ <div id='thegrid'>
+<table class='gridadj'>
+ <tr><td>USE IMAGE INSTEAD OF GRID</td>
+ <td><input type="text" class="urlinput" type="text" id="imageinstead" value="">IMG URL eg:http://ww...</input></td>
+ </tr></table>
+ <table class='gridadj'>
+ <tr><td>GRID THICKNESS:</td>
+ <td><input id='line-thickness' type='text' value='1'></td><td><span style="font-size:12px">PX&nbsp&nbsp</span></input></td></tr>
+
+ <tr class='gridadj'><td>GRID COLOR:</td>
+ <td><input id='line-color' type='text' value='BLACK'></input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></td>
+ </tr>
+
+ </table>
+ <table>
+ <tr class='gridadj'>
+ <td>GRID OPACITY: </td>
+ <td><input id='line-opacity' type='text' value='1'></input></td>
+ <td style="width:140px; height: .8em; margin:0; padding:0;" class="slider" style="margin:0;padding:0;"id="opacity-slider"></td>
+ </tr>
+
+ <tr class='gridadj'>
+ <td>GRID SPACING: </td>
+ <td><input id='line-spacing' type='text' value='0'></input></td>
+ <td class="slider" style="margin:0;padding:0;" id="spacing-slider"></td></tr>
+
+ <tr class='gridadj'><td>USE ONLY VERTICAL LINES</td><td><input type="checkbox" id="v-lines" value="false"></input></td></tr>
+
+ <tr class='gridadj'><td>USE ONLY HORIZONTAL LINES</td><td><input type="checkbox" id="h-lines" value="false" ></input></td></tr>
+ </table>
+<table class='gridadj'><td>GRID BACKGROUND COLOR <input type="text" id="bg-color" value="transparent"></td><td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></input></td>
+
+ </table>
+ <table class='gridadj'>
+ <tr><td>OR GRID BACKGROUND IMAGE</td>
+ <td><input class="urlinput" type="text" id="bg-image" value="">IMG URL eg:http://ww...</input></td></tr>
+ </table>
+
+<table class='gridadj'>
+ <tr><td>GRID-TRANSITION</td>
+ <td><select id="transition">
+ <option selected="selected" value='background'>none</option>
+ <option value="dither">dithered</option>
+ <option value="random">noise</option>
+ <option value="tile">infinite</option>
+ <option value="edge">extended-edge</option>
+ </select></td></tr>
+
+</table>
+ <table class='gridadj'>
+ <tr><td>DROP SHADOW</td><td><input type='checkbox' id='shadow' value='false'</input></td></tr>
+
+
+</table>
+</div>
+
+
+ <table style='width:150px;'>
+ <tr><td class="backgroundmore">BACKGROUND</td>
+ <td><div id="backgroundplug" class="backgroundmore">+</div></td>
+ </tr>
+ </table>
+<div id='thebackground'>
+ <table class='background'><td>BACKGROUND COLOR</td><td><input type="text" value="transparent" id="planebgcolor"></input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></td> </table>
+ <table class="background">
+
+ <tr><td>OR BACKGROUND IMAGE</td><td><input class='urlinput' type="text" value="" id="planebgimage">IMG URL eg:http://ww...</input></td></tr>
+ </table>
+
+ <table class='background'><tr><td>SKYCOLOR</td><td><input type="text" value="none" id="skycolor">for the area above the horizon-line</input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></td>
+ </tr>
+</table>
+
+</div>
+<table>
+ <tr><td>&nbsp</td></tr>
+ <tr><td>USERNAME</td><td><input type=text value="" id='username'></input></td><td><div class='linksmore' id='linksplug'>+</div></td>
+<td> <div id='links' class='links'>
+ <a class='links' href="http://asdf.us/im/gallery">PHOTOBLASTER GALLERY</a><br>
+ <a class='links' href="http://asdf.us/imgrid/greatgrids/">THE GREAT GRIDS GALLERY</a><br>
+ <a class='links' href="http://asdf.us/im">MAIN PHOTOBLASTER EDITOR</a></br>
+<div id="fb-root" style="position:fixed; bottom:10px; right:10px;background-color: transparent;"></div><script src="http://connect.facebook.net/en_US/all.js#appId=236917449658413&amp;xfbml=1"></script><fb:like href="http://asdf.us/im/" send="false" width="347" show_faces="false" colorscheme="light" font="" style="background-color: transparent;"></fb:like>
+
+ </div>
+
+</td></tr></table>
+
+<br>
+
+
+</div>
+
+</div>
+
+</form>
+<div id='result'>
+ <span id="output-cmd" class='results'>
+</span>
+ <span id="output-img" class='results'></span>
+ <input id="output-url" class='results'></input>
+ <div id="output-info" class='results'></div>
+</div>
+
+
+
+
+<span class='copyright' style="position:fixed; bottom:10px; left:10px;">COPYRIGHT 2011 PEPPER DREAMTEAMER</span><a href='http://asdf.us/imgrid/greatgrids/index.html'><img class='copyright' style='display:inline; position:fixed; bottom:10px; left:290px; width:100px' src="blackplant.png"></img></a>
+<script type="text/javascript" src="jquery-1.6.4.min.js"></script>
+<script type="text/javascript" src="jquery-ui-1.8.16.custom.min.js"></script>
+<script type='text/javascript'>
+$(document).ready(function()
+ {
+ $('#intro').fadeOut(1000,function()
+ {
+ $('#intro').remove()
+ })
+ });
+</script>
+<script type="text/javascript" src="sliders.js"></script>
+<script type="text/javascript" src="main.js"></script>
+<!--<script src="popup.js" type="text/javascript"></script>-->
+<!--<script type="text/javascript" src="picker.js"></script>-->
+<script type='text/javascript'>
+ linksclicked = 'false';
+ $('#linksplug').click(function(){
+ $('.links').toggle('300')
+
+ if(linksclicked === 'false'){
+ $('#linksplug').html('-')
+ $('.links').css({'min-width':'275px','word-space':'nowrap','min-height':'100px'})
+ linksclicked = 'true'
+ }
+ else{
+ $('#linksplug').html('+')
+ $('#links').css('padding','0px');
+ linksclicked = 'false'
+ }
+ $('.copyright').hide()
+ $("body,html").scrollTop(5000);
+ })
+
+ gridmoreclicked = 'false';
+ $('.gridmore').click(function(){
+ $('.gridadj').toggle('300')
+
+ if(gridmoreclicked === 'false'){
+ $('#gridplug').html('-')
+ $('#thegrid').css('padding','5px');
+ gridmoreclicked = 'true'
+ $("html,body").scrollTop(1000);
+ }
+ else{
+ $('#gridplug').html('+')
+ $('#thegrid').css('padding','0px');
+ gridmoreclicked = 'false'
+ }
+ $('.copyright').hide()
+ })
+
+
+
+ backgroundmoreclicked = 'false';
+ $('#backgroundplug').html('+');
+ $('.backgroundmore').click(function(){
+ $('.background').toggle('300')
+ if(backgroundmoreclicked === 'false'){
+ $('#thebackground').css('padding','5px');
+ $('#backgroundplug').html('-')
+ $("html,body").scrollTop(1000);
+ backgroundmoreclicked = 'true'
+ }
+ else{
+ $('#backgroundplug').html('+')
+ $('#thebackground').css('padding','0px');
+ backgroundmoreclicked = 'false'
+ }
+ $('.copyright').hide()
+ });
+
+
+ dimensionsmoreclicked = 'false';
+ $('#dimensionsplug').html('+');
+ $('.dimensionsmore').click(function(){
+ $('.dimensions').toggle('300')
+ if(dimensionsmoreclicked === 'false'){
+ $('#dimensionsplug').html('-')
+ $('#thedimensions').css('padding','5px');
+ $("html,body").scrollTop(1000);
+ dimensionsmoreclicked = 'true'
+ }
+ else{
+ $('#dimensionsplug').html('+')
+ $('#thedimensions').css('padding','0px');
+ dimensionsmoreclicked = 'false'
+ }
+ $('.copyright').hide()
+ });
+
+
+ $('#bg-color').click(function(){
+ nonecheck = $('#bg-color').val()
+ if(nonecheck === 'none')
+ {
+ $('#bg-color').val('')
+ }
+ });
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/1.html b/frontend/imgrid/colors/1.html
new file mode 100755
index 0000000..284b791
--- /dev/null
+++ b/frontend/imgrid/colors/1.html
@@ -0,0 +1,59 @@
+<html>
+<!--<link rel="stylesheet" href="css/normalize.css">-->
+<head>
+ <style type='text/css'>
+ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0;}
+ body
+ {
+ margin-bottom:0px;
+ margin-left:0px;
+ margin-right:0px;
+ margin-top:0px;
+ }
+ #master
+ {
+ width:404px;
+ }
+ .slaves
+ {
+ width:100px;
+ background-color:gray;
+ height:40px;
+ display:inline-block;
+ }
+ </style>
+
+
+</head>
+<body>
+<div id='master'>
+<div class='slaves' style='background-color:pink'></div>
+<div class='slaves' style='background-color:blue'></div>
+<div class='slaves' style='background-color:dodgerblue'></div>
+<div class='slaves' style='background-color:red'></div>
+
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+
+</div>
+<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
+<script type='text/javascript'>
+$('.slaves').mouseover(function()
+ {
+ $(this).css('width','120px')
+ $('#master').css('width','500')
+ }).mouseout(function()
+ {
+ $(this).css({'width':'100px','position':'static'})
+ $('#master').css('width','440')
+
+ });
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/blackshim.png b/frontend/imgrid/colors/blackshim.png
new file mode 100755
index 0000000..a122193
--- /dev/null
+++ b/frontend/imgrid/colors/blackshim.png
Binary files differ
diff --git a/frontend/imgrid/colors/colors/1.html b/frontend/imgrid/colors/colors/1.html
new file mode 100755
index 0000000..284b791
--- /dev/null
+++ b/frontend/imgrid/colors/colors/1.html
@@ -0,0 +1,59 @@
+<html>
+<!--<link rel="stylesheet" href="css/normalize.css">-->
+<head>
+ <style type='text/css'>
+ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0;}
+ body
+ {
+ margin-bottom:0px;
+ margin-left:0px;
+ margin-right:0px;
+ margin-top:0px;
+ }
+ #master
+ {
+ width:404px;
+ }
+ .slaves
+ {
+ width:100px;
+ background-color:gray;
+ height:40px;
+ display:inline-block;
+ }
+ </style>
+
+
+</head>
+<body>
+<div id='master'>
+<div class='slaves' style='background-color:pink'></div>
+<div class='slaves' style='background-color:blue'></div>
+<div class='slaves' style='background-color:dodgerblue'></div>
+<div class='slaves' style='background-color:red'></div>
+
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+
+</div>
+<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
+<script type='text/javascript'>
+$('.slaves').mouseover(function()
+ {
+ $(this).css('width','120px')
+ $('#master').css('width','500')
+ }).mouseout(function()
+ {
+ $(this).css({'width':'100px','position':'static'})
+ $('#master').css('width','440')
+
+ });
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/colors/blackshim.png b/frontend/imgrid/colors/colors/blackshim.png
new file mode 100755
index 0000000..a122193
--- /dev/null
+++ b/frontend/imgrid/colors/colors/blackshim.png
Binary files differ
diff --git a/frontend/imgrid/colors/colors/grayshim.png b/frontend/imgrid/colors/colors/grayshim.png
new file mode 100755
index 0000000..6f71223
--- /dev/null
+++ b/frontend/imgrid/colors/colors/grayshim.png
Binary files differ
diff --git a/frontend/imgrid/colors/colors/hoverbutton.png b/frontend/imgrid/colors/colors/hoverbutton.png
new file mode 100755
index 0000000..b14281e
--- /dev/null
+++ b/frontend/imgrid/colors/colors/hoverbutton.png
Binary files differ
diff --git a/frontend/imgrid/colors/colors/index.html b/frontend/imgrid/colors/colors/index.html
new file mode 100755
index 0000000..93b1a9b
--- /dev/null
+++ b/frontend/imgrid/colors/colors/index.html
@@ -0,0 +1,3507 @@
+<html>
+<head>
+
+<style type='text/css'>
+
+body
+{
+margin:0;
+}
+
+#colorpicker
+{
+
+width:100%;
+font-family:helvetica;
+font-size:10px;
+//background-color: gray;
+//background-image: url("http://asdf.us/im/6f/gradient_bgdither_1321255670_pepper.gif");
+background-color: black;
+background-image: url("http://dump.fm/static/img/bg.dither.gif")
+
+}
+
+#container div
+{
+text-align:left;
+display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+min-height: 30px;
+zoom: 1;
+word-wrap: break-word;
+*display: inline;
+cursor:pointer;
+}
+
+#container
+{
+margin:0 auto;
+width:31%;
+padding-top:100px;
+padding-right:10px;
+padding-left:10px;
+text-align:center;
+}
+
+#colornames
+{
+color:white;
+position:fixed;
+font-size:50px;
+top:50px;
+left:2%;
+width:400px;
+}
+
+#switches
+ {
+ position:fixed;
+ top:20px;
+ right:1%;
+ height:400px;
+ width:300px;
+ font-size:20px;
+ border-style: groove;
+ border-width: 4px;
+ background-color:gray;
+ padding:2px;
+ box-shadow: 10px 10px 5px #141414;
+ }
+
+#infoswitch, #hexswitch, #backgroundswitch
+ {
+ background-image:url(http://asdf.us/im/58/gradient_whitegray80_1321305183_1321305241_pepper.jpg);
+ cursor:pointer;
+ }
+#preview
+ {
+ height:150px;
+ }
+
+
+#holder
+ {
+ float:bottom;
+ }
+
+#transparent
+ {
+ font-size:12px;
+ }
+#namespace
+ {
+ width:inherit;
+ }
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{
+height:30;
+width:10px;
+}
+</style></head><body>
+<div id='colorpicker'>
+<div id='container'>
+<div id='d0' class='colors'>
+snow</div>
+<div id='d1' class='colors'>
+snow1</div>
+<div id='d2' class='colors'>
+snow2</div>
+<div id='d3' class='colors'>
+RosyBrown1</div>
+<div id='d4' class='colors'>
+RosyBrown2</div>
+<div id='d5' class='colors'>
+snow3</div>
+<div id='d6' class='colors'>
+LightCoral</div>
+<div id='d7' class='colors'>
+IndianRed1</div>
+<div id='d8' class='colors'>
+RosyBrown3</div>
+<div id='d9' class='colors'>
+IndianRed2</div>
+<div id='d10' class='colors'>
+RosyBrown</div>
+<div id='d11' class='colors'>
+brown1</div>
+<div id='d12' class='colors'>
+firebrick1</div>
+<div id='d13' class='colors'>
+brown2</div>
+<div id='d14' class='colors'>
+IndianRed</div>
+<div id='d15' class='colors'>
+IndianRed3</div>
+<div id='d16' class='colors'>
+firebrick2</div>
+<div id='d17' class='colors'>
+snow4</div>
+<div id='d18' class='colors'>
+brown3</div>
+<div id='d19' class='colors'>
+red</div>
+<div id='d20' class='colors'>
+red1</div>
+<div id='d21' class='colors'>
+RosyBrown4</div>
+<div id='d22' class='colors'>
+firebrick3</div>
+<div id='d23' class='colors'>
+red2</div>
+<div id='d24' class='colors'>
+firebrick</div>
+<div id='d25' class='colors'>
+brown</div>
+<div id='d26' class='colors'>
+red3</div>
+<div id='d27' class='colors'>
+IndianRed4</div>
+<div id='d28' class='colors'>
+brown4</div>
+<div id='d29' class='colors'>
+firebrick4</div>
+<div id='d30' class='colors'>
+DarkRed</div>
+<div id='d31' class='colors'>
+red4</div>
+<div id='d32' class='colors'>
+maroon</div>
+<div id='d33' class='colors'>
+LightPink1</div>
+<div id='d34' class='colors'>
+LightPink3</div>
+<div id='d35' class='colors'>
+LightPink4</div>
+<div id='d36' class='colors'>
+LightPink2</div>
+<div id='d37' class='colors'>
+LightPink</div>
+<div id='d38' class='colors'>
+pink</div>
+<div id='d39' class='colors'>
+crimson</div>
+<div id='d40' class='colors'>
+pink1</div>
+<div id='d41' class='colors'>
+pink2</div>
+<div id='d42' class='colors'>
+pink3</div>
+<div id='d43' class='colors'>
+pink4</div>
+<div id='d44' class='colors'>
+PaleVioletRed4</div>
+<div id='d45' class='colors'>
+PaleVioletRed</div>
+<div id='d46' class='colors'>
+PaleVioletRed2</div>
+<div id='d47' class='colors'>
+PaleVioletRed1</div>
+<div id='d48' class='colors'>
+PaleVioletRed3</div>
+<div id='d49' class='colors'>
+LavenderBlush</div>
+<div id='d50' class='colors'>
+LavenderBlush1</div>
+<div id='d51' class='colors'>
+LavenderBlush3</div>
+<div id='d52' class='colors'>
+LavenderBlush2</div>
+<div id='d53' class='colors'>
+LavenderBlush4</div>
+<div id='d54' class='colors'>
+maroon</div>
+<div id='d55' class='colors'>
+HotPink3</div>
+<div id='d56' class='colors'>
+VioletRed3</div>
+<div id='d57' class='colors'>
+VioletRed1</div>
+<div id='d58' class='colors'>
+VioletRed2</div>
+<div id='d59' class='colors'>
+VioletRed4</div>
+<div id='d60' class='colors'>
+HotPink2</div>
+<div id='d61' class='colors'>
+HotPink1</div>
+<div id='d62' class='colors'>
+HotPink4</div>
+<div id='d63' class='colors'>
+HotPink</div>
+<div id='d64' class='colors'>
+DeepPink</div>
+<div id='d65' class='colors'>
+DeepPink1</div>
+<div id='d66' class='colors'>
+DeepPink2</div>
+<div id='d67' class='colors'>
+DeepPink3</div>
+<div id='d68' class='colors'>
+DeepPink4</div>
+<div id='d69' class='colors'>
+maroon1</div>
+<div id='d70' class='colors'>
+maroon2</div>
+<div id='d71' class='colors'>
+maroon3</div>
+<div id='d72' class='colors'>
+maroon4</div>
+<div id='d73' class='colors'>
+MediumVioletRed</div>
+<div id='d74' class='colors'>
+VioletRed</div>
+<div id='d75' class='colors'>
+orchid2</div>
+<div id='d76' class='colors'>
+orchid</div>
+<div id='d77' class='colors'>
+orchid1</div>
+<div id='d78' class='colors'>
+orchid3</div>
+<div id='d79' class='colors'>
+orchid4</div>
+<div id='d80' class='colors'>
+thistle1</div>
+<div id='d81' class='colors'>
+thistle2</div>
+<div id='d82' class='colors'>
+plum1</div>
+<div id='d83' class='colors'>
+plum2</div>
+<div id='d84' class='colors'>
+thistle</div>
+<div id='d85' class='colors'>
+thistle3</div>
+<div id='d86' class='colors'>
+plum</div>
+<div id='d87' class='colors'>
+violet</div>
+<div id='d88' class='colors'>
+plum3</div>
+<div id='d89' class='colors'>
+thistle4</div>
+<div id='d90' class='colors'>
+fuchsia</div>
+<div id='d91' class='colors'>
+magenta</div>
+<div id='d92' class='colors'>
+magenta1</div>
+<div id='d93' class='colors'>
+plum4</div>
+<div id='d94' class='colors'>
+magenta2</div>
+<div id='d95' class='colors'>
+magenta3</div>
+<div id='d96' class='colors'>
+DarkMagenta</div>
+<div id='d97' class='colors'>
+magenta4</div>
+<div id='d98' class='colors'>
+purple</div>
+<div id='d99' class='colors'>
+MediumOrchid</div>
+<div id='d100' class='colors'>
+MediumOrchid1</div>
+<div id='d101' class='colors'>
+MediumOrchid2</div>
+<div id='d102' class='colors'>
+MediumOrchid3</div>
+<div id='d103' class='colors'>
+MediumOrchid4</div>
+<div id='d104' class='colors'>
+DarkViolet</div>
+<div id='d105' class='colors'>
+DarkOrchid</div>
+<div id='d106' class='colors'>
+DarkOrchid1</div>
+<div id='d107' class='colors'>
+DarkOrchid3</div>
+<div id='d108' class='colors'>
+DarkOrchid2</div>
+<div id='d109' class='colors'>
+DarkOrchid4</div>
+<div id='d110' class='colors'>
+purple</div>
+<div id='d111' class='colors'>
+indigo</div>
+<div id='d112' class='colors'>
+BlueViolet</div>
+<div id='d113' class='colors'>
+purple2</div>
+<div id='d114' class='colors'>
+purple3</div>
+<div id='d115' class='colors'>
+purple4</div>
+<div id='d116' class='colors'>
+purple1</div>
+<div id='d117' class='colors'>
+MediumPurple</div>
+<div id='d118' class='colors'>
+MediumPurple1</div>
+<div id='d119' class='colors'>
+MediumPurple2</div>
+<div id='d120' class='colors'>
+MediumPurple3</div>
+<div id='d121' class='colors'>
+MediumPurple4</div>
+<div id='d122' class='colors'>
+DarkSlateBlue</div>
+<div id='d123' class='colors'>
+LightSlateBlue</div>
+<div id='d124' class='colors'>
+MediumSlateBlue</div>
+<div id='d125' class='colors'>
+SlateBlue</div>
+<div id='d126' class='colors'>
+SlateBlue1</div>
+<div id='d127' class='colors'>
+SlateBlue2</div>
+<div id='d128' class='colors'>
+SlateBlue3</div>
+<div id='d129' class='colors'>
+SlateBlue4</div>
+<div id='d130' class='colors'>
+GhostWhite</div>
+<div id='d131' class='colors'>
+lavender</div>
+<div id='d132' class='colors'>
+blue</div>
+<div id='d133' class='colors'>
+blue1</div>
+<div id='d134' class='colors'>
+blue2</div>
+<div id='d135' class='colors'>
+blue3</div>
+<div id='d136' class='colors'>
+MediumBlue</div>
+<div id='d137' class='colors'>
+blue4</div>
+<div id='d138' class='colors'>
+DarkBlue</div>
+<div id='d139' class='colors'>
+MidnightBlue</div>
+<div id='d140' class='colors'>
+navy</div>
+<div id='d141' class='colors'>
+NavyBlue</div>
+<div id='d142' class='colors'>
+RoyalBlue</div>
+<div id='d143' class='colors'>
+RoyalBlue1</div>
+<div id='d144' class='colors'>
+RoyalBlue2</div>
+<div id='d145' class='colors'>
+RoyalBlue3</div>
+<div id='d146' class='colors'>
+RoyalBlue4</div>
+<div id='d147' class='colors'>
+CornflowerBlue</div>
+<div id='d148' class='colors'>
+LightSteelBlue</div>
+<div id='d149' class='colors'>
+LightSteelBlue1</div>
+<div id='d150' class='colors'>
+LightSteelBlue2</div>
+<div id='d151' class='colors'>
+LightSteelBlue3</div>
+<div id='d152' class='colors'>
+LightSteelBlue4</div>
+<div id='d153' class='colors'>
+SlateGray4</div>
+<div id='d154' class='colors'>
+SlateGray1</div>
+<div id='d155' class='colors'>
+SlateGray2</div>
+<div id='d156' class='colors'>
+SlateGray3</div>
+<div id='d157' class='colors'>
+LightSlateGray</div>
+<div id='d158' class='colors'>
+LightSlateGrey</div>
+<div id='d159' class='colors'>
+SlateGray</div>
+<div id='d160' class='colors'>
+SlateGrey</div>
+<div id='d161' class='colors'>
+DodgerBlue</div>
+<div id='d162' class='colors'>
+DodgerBlue1</div>
+<div id='d163' class='colors'>
+DodgerBlue2</div>
+<div id='d164' class='colors'>
+DodgerBlue4</div>
+<div id='d165' class='colors'>
+DodgerBlue3</div>
+<div id='d166' class='colors'>
+AliceBlue</div>
+<div id='d167' class='colors'>
+SteelBlue4</div>
+<div id='d168' class='colors'>
+SteelBlue</div>
+<div id='d169' class='colors'>
+SteelBlue1</div>
+<div id='d170' class='colors'>
+SteelBlue2</div>
+<div id='d171' class='colors'>
+SteelBlue3</div>
+<div id='d172' class='colors'>
+SkyBlue4</div>
+<div id='d173' class='colors'>
+SkyBlue1</div>
+<div id='d174' class='colors'>
+SkyBlue2</div>
+<div id='d175' class='colors'>
+SkyBlue3</div>
+<div id='d176' class='colors'>
+LightSkyBlue</div>
+<div id='d177' class='colors'>
+LightSkyBlue4</div>
+<div id='d178' class='colors'>
+LightSkyBlue1</div>
+<div id='d179' class='colors'>
+LightSkyBlue2</div>
+<div id='d180' class='colors'>
+LightSkyBlue3</div>
+<div id='d181' class='colors'>
+SkyBlue</div>
+<div id='d182' class='colors'>
+LightBlue3</div>
+<div id='d183' class='colors'>
+DeepSkyBlue</div>
+<div id='d184' class='colors'>
+DeepSkyBlue1</div>
+<div id='d185' class='colors'>
+DeepSkyBlue2</div>
+<div id='d186' class='colors'>
+DeepSkyBlue4</div>
+<div id='d187' class='colors'>
+DeepSkyBlue3</div>
+<div id='d188' class='colors'>
+LightBlue1</div>
+<div id='d189' class='colors'>
+LightBlue2</div>
+<div id='d190' class='colors'>
+LightBlue</div>
+<div id='d191' class='colors'>
+LightBlue4</div>
+<div id='d192' class='colors'>
+PowderBlue</div>
+<div id='d193' class='colors'>
+CadetBlue1</div>
+<div id='d194' class='colors'>
+CadetBlue2</div>
+<div id='d195' class='colors'>
+CadetBlue3</div>
+<div id='d196' class='colors'>
+CadetBlue4</div>
+<div id='d197' class='colors'>
+turquoise1</div>
+<div id='d198' class='colors'>
+turquoise2</div>
+<div id='d199' class='colors'>
+turquoise3</div>
+<div id='d200' class='colors'>
+turquoise4</div>
+<div id='d201' class='colors'>
+cadet blue</div>
+<div id='d202' class='colors'>
+CadetBlue</div>
+<div id='d203' class='colors'>
+DarkTurquoise</div>
+<div id='d204' class='colors'>
+azure</div>
+<div id='d205' class='colors'>
+azure1</div>
+<div id='d206' class='colors'>
+LightCyan</div>
+<div id='d207' class='colors'>
+LightCyan1</div>
+<div id='d208' class='colors'>
+azure2</div>
+<div id='d209' class='colors'>
+LightCyan2</div>
+<div id='d210' class='colors'>
+PaleTurquoise1</div>
+<div id='d211' class='colors'>
+PaleTurquoise</div>
+<div id='d212' class='colors'>
+PaleTurquoise2</div>
+<div id='d213' class='colors'>
+DarkSlateGray1</div>
+<div id='d214' class='colors'>
+azure3</div>
+<div id='d215' class='colors'>
+LightCyan3</div>
+<div id='d216' class='colors'>
+DarkSlateGray2</div>
+<div id='d217' class='colors'>
+PaleTurquoise3</div>
+<div id='d218' class='colors'>
+DarkSlateGray3</div>
+<div id='d219' class='colors'>
+azure4</div>
+<div id='d220' class='colors'>
+LightCyan4</div>
+<div id='d221' class='colors'>
+aqua</div>
+<div id='d222' class='colors'>
+cyan</div>
+<div id='d223' class='colors'>
+cyan1</div>
+<div id='d224' class='colors'>
+PaleTurquoise4</div>
+<div id='d225' class='colors'>
+cyan2</div>
+<div id='d226' class='colors'>
+DarkSlateGray4</div>
+<div id='d227' class='colors'>
+cyan3</div>
+<div id='d228' class='colors'>
+cyan4</div>
+<div id='d229' class='colors'>
+DarkCyan</div>
+<div id='d230' class='colors'>
+teal</div>
+<div id='d231' class='colors'>
+DarkSlateGray</div>
+<div id='d232' class='colors'>
+DarkSlateGrey</div>
+<div id='d233' class='colors'>
+MediumTurquoise</div>
+<div id='d234' class='colors'>
+LightSeaGreen</div>
+<div id='d235' class='colors'>
+turquoise</div>
+<div id='d236' class='colors'>
+aquamarine4</div>
+<div id='d237' class='colors'>
+aquamarine</div>
+<div id='d238' class='colors'>
+aquamarine1</div>
+<div id='d239' class='colors'>
+aquamarine2</div>
+<div id='d240' class='colors'>
+aquamarine3</div>
+<div id='d241' class='colors'>
+MediumAquamarine</div>
+<div id='d242' class='colors'>
+MediumSpringGreen</div>
+<div id='d243' class='colors'>
+MintCream</div>
+<div id='d244' class='colors'>
+SpringGreen</div>
+<div id='d245' class='colors'>
+SpringGreen1</div>
+<div id='d246' class='colors'>
+SpringGreen2</div>
+<div id='d247' class='colors'>
+SpringGreen3</div>
+<div id='d248' class='colors'>
+SpringGreen4</div>
+<div id='d249' class='colors'>
+MediumSeaGreen</div>
+<div id='d250' class='colors'>
+SeaGreen</div>
+<div id='d251' class='colors'>
+SeaGreen3</div>
+<div id='d252' class='colors'>
+SeaGreen1</div>
+<div id='d253' class='colors'>
+SeaGreen4</div>
+<div id='d254' class='colors'>
+SeaGreen2</div>
+<div id='d255' class='colors'>
+MediumForestGreen</div>
+<div id='d256' class='colors'>
+honeydew</div>
+<div id='d257' class='colors'>
+honeydew1</div>
+<div id='d258' class='colors'>
+honeydew2</div>
+<div id='d259' class='colors'>
+DarkSeaGreen1</div>
+<div id='d260' class='colors'>
+DarkSeaGreen2</div>
+<div id='d261' class='colors'>
+PaleGreen1</div>
+<div id='d262' class='colors'>
+PaleGreen</div>
+<div id='d263' class='colors'>
+honeydew3</div>
+<div id='d264' class='colors'>
+LightGreen</div>
+<div id='d265' class='colors'>
+PaleGreen2</div>
+<div id='d266' class='colors'>
+DarkSeaGreen3</div>
+<div id='d267' class='colors'>
+DarkSeaGreen</div>
+<div id='d268' class='colors'>
+PaleGreen3</div>
+<div id='d269' class='colors'>
+honeydew4</div>
+<div id='d270' class='colors'>
+green1</div>
+<div id='d271' class='colors'>
+lime</div>
+<div id='d272' class='colors'>
+LimeGreen</div>
+<div id='d273' class='colors'>
+DarkSeaGreen4</div>
+<div id='d274' class='colors'>
+green2</div>
+<div id='d275' class='colors'>
+PaleGreen4</div>
+<div id='d276' class='colors'>
+green3</div>
+<div id='d277' class='colors'>
+ForestGreen</div>
+<div id='d278' class='colors'>
+green4</div>
+<div id='d279' class='colors'>
+green</div>
+<div id='d280' class='colors'>
+DarkGreen</div>
+<div id='d281' class='colors'>
+LawnGreen</div>
+<div id='d282' class='colors'>
+chartreuse</div>
+<div id='d283' class='colors'>
+chartreuse1</div>
+<div id='d284' class='colors'>
+chartreuse2</div>
+<div id='d285' class='colors'>
+chartreuse3</div>
+<div id='d286' class='colors'>
+chartreuse4</div>
+<div id='d287' class='colors'>
+GreenYellow</div>
+<div id='d288' class='colors'>
+DarkOliveGreen3</div>
+<div id='d289' class='colors'>
+DarkOliveGreen1</div>
+<div id='d290' class='colors'>
+DarkOliveGreen2</div>
+<div id='d291' class='colors'>
+DarkOliveGreen4</div>
+<div id='d292' class='colors'>
+DarkOliveGreen</div>
+<div id='d293' class='colors'>
+OliveDrab</div>
+<div id='d294' class='colors'>
+OliveDrab1</div>
+<div id='d295' class='colors'>
+OliveDrab2</div>
+<div id='d296' class='colors'>
+OliveDrab3</div>
+<div id='d297' class='colors'>
+YellowGreen</div>
+<div id='d298' class='colors'>
+OliveDrab4</div>
+<div id='d299' class='colors'>
+ivory</div>
+<div id='d300' class='colors'>
+ivory1</div>
+<div id='d301' class='colors'>
+LightYellow</div>
+<div id='d302' class='colors'>
+LightYellow1</div>
+<div id='d303' class='colors'>
+beige</div>
+<div id='d304' class='colors'>
+ivory2</div>
+<div id='d305' class='colors'>
+LightGoldenrodYellow</div>
+<div id='d306' class='colors'>
+LightYellow2</div>
+<div id='d307' class='colors'>
+ivory3</div>
+<div id='d308' class='colors'>
+LightYellow3</div>
+<div id='d309' class='colors'>
+ivory4</div>
+<div id='d310' class='colors'>
+LightYellow4</div>
+<div id='d311' class='colors'>
+yellow</div>
+<div id='d312' class='colors'>
+yellow1</div>
+<div id='d313' class='colors'>
+yellow2</div>
+<div id='d314' class='colors'>
+yellow3</div>
+<div id='d315' class='colors'>
+yellow4</div>
+<div id='d316' class='colors'>
+olive</div>
+<div id='d317' class='colors'>
+DarkKhaki</div>
+<div id='d318' class='colors'>
+khaki2</div>
+<div id='d319' class='colors'>
+LemonChiffon4</div>
+<div id='d320' class='colors'>
+khaki1</div>
+<div id='d321' class='colors'>
+khaki3</div>
+<div id='d322' class='colors'>
+khaki4</div>
+<div id='d323' class='colors'>
+PaleGoldenrod</div>
+<div id='d324' class='colors'>
+LemonChiffon</div>
+<div id='d325' class='colors'>
+LemonChiffon1</div>
+<div id='d326' class='colors'>
+khaki</div>
+<div id='d327' class='colors'>
+LemonChiffon3</div>
+<div id='d328' class='colors'>
+LemonChiffon2</div>
+<div id='d329' class='colors'>
+MediumGoldenRod</div>
+<div id='d330' class='colors'>
+cornsilk4</div>
+<div id='d331' class='colors'>
+gold</div>
+<div id='d332' class='colors'>
+gold1</div>
+<div id='d333' class='colors'>
+gold2</div>
+<div id='d334' class='colors'>
+gold3</div>
+<div id='d335' class='colors'>
+gold4</div>
+<div id='d336' class='colors'>
+LightGoldenrod</div>
+<div id='d337' class='colors'>
+LightGoldenrod4</div>
+<div id='d338' class='colors'>
+LightGoldenrod1</div>
+<div id='d339' class='colors'>
+LightGoldenrod3</div>
+<div id='d340' class='colors'>
+LightGoldenrod2</div>
+<div id='d341' class='colors'>
+cornsilk3</div>
+<div id='d342' class='colors'>
+cornsilk2</div>
+<div id='d343' class='colors'>
+cornsilk</div>
+<div id='d344' class='colors'>
+cornsilk1</div>
+<div id='d345' class='colors'>
+goldenrod</div>
+<div id='d346' class='colors'>
+goldenrod1</div>
+<div id='d347' class='colors'>
+goldenrod2</div>
+<div id='d348' class='colors'>
+goldenrod3</div>
+<div id='d349' class='colors'>
+goldenrod4</div>
+<div id='d350' class='colors'>
+DarkGoldenrod</div>
+<div id='d351' class='colors'>
+DarkGoldenrod1</div>
+<div id='d352' class='colors'>
+DarkGoldenrod2</div>
+<div id='d353' class='colors'>
+DarkGoldenrod3</div>
+<div id='d354' class='colors'>
+DarkGoldenrod4</div>
+<div id='d355' class='colors'>
+FloralWhite</div>
+<div id='d356' class='colors'>
+wheat2</div>
+<div id='d357' class='colors'>
+OldLace</div>
+<div id='d358' class='colors'>
+wheat</div>
+<div id='d359' class='colors'>
+wheat1</div>
+<div id='d360' class='colors'>
+wheat3</div>
+<div id='d361' class='colors'>
+orange</div>
+<div id='d362' class='colors'>
+orange1</div>
+<div id='d363' class='colors'>
+orange2</div>
+<div id='d364' class='colors'>
+orange3</div>
+<div id='d365' class='colors'>
+orange4</div>
+<div id='d366' class='colors'>
+wheat4</div>
+<div id='d367' class='colors'>
+moccasin</div>
+<div id='d368' class='colors'>
+PapayaWhip</div>
+<div id='d369' class='colors'>
+NavajoWhite3</div>
+<div id='d370' class='colors'>
+BlanchedAlmond</div>
+<div id='d371' class='colors'>
+NavajoWhite</div>
+<div id='d372' class='colors'>
+NavajoWhite1</div>
+<div id='d373' class='colors'>
+NavajoWhite2</div>
+<div id='d374' class='colors'>
+NavajoWhite4</div>
+<div id='d375' class='colors'>
+AntiqueWhite4</div>
+<div id='d376' class='colors'>
+AntiqueWhite</div>
+<div id='d377' class='colors'>
+tan</div>
+<div id='d378' class='colors'>
+bisque4</div>
+<div id='d379' class='colors'>
+burlywood</div>
+<div id='d380' class='colors'>
+AntiqueWhite2</div>
+<div id='d381' class='colors'>
+burlywood1</div>
+<div id='d382' class='colors'>
+burlywood3</div>
+<div id='d383' class='colors'>
+burlywood2</div>
+<div id='d384' class='colors'>
+AntiqueWhite1</div>
+<div id='d385' class='colors'>
+burlywood4</div>
+<div id='d386' class='colors'>
+AntiqueWhite3</div>
+<div id='d387' class='colors'>
+DarkOrange</div>
+<div id='d388' class='colors'>
+bisque2</div>
+<div id='d389' class='colors'>
+bisque</div>
+<div id='d390' class='colors'>
+bisque1</div>
+<div id='d391' class='colors'>
+bisque3</div>
+<div id='d392' class='colors'>
+DarkOrange1</div>
+<div id='d393' class='colors'>
+linen</div>
+<div id='d394' class='colors'>
+DarkOrange2</div>
+<div id='d395' class='colors'>
+DarkOrange3</div>
+<div id='d396' class='colors'>
+DarkOrange4</div>
+<div id='d397' class='colors'>
+peru</div>
+<div id='d398' class='colors'>
+tan1</div>
+<div id='d399' class='colors'>
+tan2</div>
+<div id='d400' class='colors'>
+tan3</div>
+<div id='d401' class='colors'>
+tan4</div>
+<div id='d402' class='colors'>
+PeachPuff</div>
+<div id='d403' class='colors'>
+PeachPuff1</div>
+<div id='d404' class='colors'>
+PeachPuff4</div>
+<div id='d405' class='colors'>
+PeachPuff2</div>
+<div id='d406' class='colors'>
+PeachPuff3</div>
+<div id='d407' class='colors'>
+SandyBrown</div>
+<div id='d408' class='colors'>
+seashell4</div>
+<div id='d409' class='colors'>
+seashell2</div>
+<div id='d410' class='colors'>
+seashell3</div>
+<div id='d411' class='colors'>
+chocolate</div>
+<div id='d412' class='colors'>
+chocolate1</div>
+<div id='d413' class='colors'>
+chocolate2</div>
+<div id='d414' class='colors'>
+chocolate3</div>
+<div id='d415' class='colors'>
+chocolate4</div>
+<div id='d416' class='colors'>
+SaddleBrown</div>
+<div id='d417' class='colors'>
+seashell</div>
+<div id='d418' class='colors'>
+seashell1</div>
+<div id='d419' class='colors'>
+sienna4</div>
+<div id='d420' class='colors'>
+sienna</div>
+<div id='d421' class='colors'>
+sienna1</div>
+<div id='d422' class='colors'>
+sienna2</div>
+<div id='d423' class='colors'>
+sienna3</div>
+<div id='d424' class='colors'>
+LightSalmon3</div>
+<div id='d425' class='colors'>
+LightSalmon</div>
+<div id='d426' class='colors'>
+LightSalmon1</div>
+<div id='d427' class='colors'>
+LightSalmon4</div>
+<div id='d428' class='colors'>
+LightSalmon2</div>
+<div id='d429' class='colors'>
+coral</div>
+<div id='d430' class='colors'>
+OrangeRed</div>
+<div id='d431' class='colors'>
+OrangeRed1</div>
+<div id='d432' class='colors'>
+OrangeRed2</div>
+<div id='d433' class='colors'>
+OrangeRed3</div>
+<div id='d434' class='colors'>
+OrangeRed4</div>
+<div id='d435' class='colors'>
+DarkSalmon</div>
+<div id='d436' class='colors'>
+salmon1</div>
+<div id='d437' class='colors'>
+salmon2</div>
+<div id='d438' class='colors'>
+salmon3</div>
+<div id='d439' class='colors'>
+salmon4</div>
+<div id='d440' class='colors'>
+coral1</div>
+<div id='d441' class='colors'>
+coral2</div>
+<div id='d442' class='colors'>
+coral3</div>
+<div id='d443' class='colors'>
+coral4</div>
+<div id='d444' class='colors'>
+tomato4</div>
+<div id='d445' class='colors'>
+tomato</div>
+<div id='d446' class='colors'>
+tomato1</div>
+<div id='d447' class='colors'>
+tomato2</div>
+<div id='d448' class='colors'>
+tomato3</div>
+<div id='d449' class='colors'>
+MistyRose4</div>
+<div id='d450' class='colors'>
+MistyRose2</div>
+<div id='d451' class='colors'>
+MistyRose</div>
+<div id='d452' class='colors'>
+MistyRose1</div>
+<div id='d453' class='colors'>
+salmon</div>
+<div id='d454' class='colors'>
+MistyRose3</div>
+<div id='d455' class='colors'>
+white</div>
+<div id='d456' class='colors'>
+gray100</div>
+<div id='d457' class='colors'>
+grey100</div>
+<div id='d458' class='colors'>
+grey100</div>
+<div id='d459' class='colors'>
+gray99</div>
+<div id='d460' class='colors'>
+grey99</div>
+<div id='d461' class='colors'>
+gray98</div>
+<div id='d462' class='colors'>
+grey98</div>
+<div id='d463' class='colors'>
+gray97</div>
+<div id='d464' class='colors'>
+grey97</div>
+<div id='d465' class='colors'>
+gray96</div>
+<div id='d466' class='colors'>
+grey96</div>
+<div id='d467' class='colors'>
+WhiteSmoke</div>
+<div id='d468' class='colors'>
+gray95</div>
+<div id='d469' class='colors'>
+grey95</div>
+<div id='d470' class='colors'>
+gray94</div>
+<div id='d471' class='colors'>
+grey94</div>
+<div id='d472' class='colors'>
+gray93</div>
+<div id='d473' class='colors'>
+grey93</div>
+<div id='d474' class='colors'>
+gray92</div>
+<div id='d475' class='colors'>
+grey92</div>
+<div id='d476' class='colors'>
+gray91</div>
+<div id='d477' class='colors'>
+grey91</div>
+<div id='d478' class='colors'>
+gray90</div>
+<div id='d479' class='colors'>
+grey90</div>
+<div id='d480' class='colors'>
+gray89</div>
+<div id='d481' class='colors'>
+grey89</div>
+<div id='d482' class='colors'>
+gray88</div>
+<div id='d483' class='colors'>
+grey88</div>
+<div id='d484' class='colors'>
+gray87</div>
+<div id='d485' class='colors'>
+grey87</div>
+<div id='d486' class='colors'>
+gainsboro</div>
+<div id='d487' class='colors'>
+gray86</div>
+<div id='d488' class='colors'>
+grey86</div>
+<div id='d489' class='colors'>
+gray85</div>
+<div id='d490' class='colors'>
+grey85</div>
+<div id='d491' class='colors'>
+gray84</div>
+<div id='d492' class='colors'>
+grey84</div>
+<div id='d493' class='colors'>
+gray83</div>
+<div id='d494' class='colors'>
+grey83</div>
+<div id='d495' class='colors'>
+LightGray</div>
+<div id='d496' class='colors'>
+LightGrey</div>
+<div id='d497' class='colors'>
+gray82</div>
+<div id='d498' class='colors'>
+grey82</div>
+<div id='d499' class='colors'>
+gray81</div>
+<div id='d500' class='colors'>
+grey81</div>
+<div id='d501' class='colors'>
+gray80</div>
+<div id='d502' class='colors'>
+grey80</div>
+<div id='d503' class='colors'>
+gray79</div>
+<div id='d504' class='colors'>
+grey79</div>
+<div id='d505' class='colors'>
+gray78</div>
+<div id='d506' class='colors'>
+grey78</div>
+<div id='d507' class='colors'>
+gray77</div>
+<div id='d508' class='colors'>
+grey77</div>
+<div id='d509' class='colors'>
+gray76</div>
+<div id='d510' class='colors'>
+grey76</div>
+<div id='d511' class='colors'>
+silver</div>
+<div id='d512' class='colors'>
+gray75</div>
+<div id='d513' class='colors'>
+grey75</div>
+<div id='d514' class='colors'>
+gray74</div>
+<div id='d515' class='colors'>
+grey74</div>
+<div id='d516' class='colors'>
+gray73</div>
+<div id='d517' class='colors'>
+grey73</div>
+<div id='d518' class='colors'>
+gray72</div>
+<div id='d519' class='colors'>
+grey72</div>
+<div id='d520' class='colors'>
+gray71</div>
+<div id='d521' class='colors'>
+grey71</div>
+<div id='d522' class='colors'>
+gray70</div>
+<div id='d523' class='colors'>
+grey70</div>
+<div id='d524' class='colors'>
+gray69</div>
+<div id='d525' class='colors'>
+grey69</div>
+<div id='d526' class='colors'>
+gray68</div>
+<div id='d527' class='colors'>
+grey68</div>
+<div id='d528' class='colors'>
+gray67</div>
+<div id='d529' class='colors'>
+grey67</div>
+<div id='d530' class='colors'>
+DarkGray</div>
+<div id='d531' class='colors'>
+DarkGrey</div>
+<div id='d532' class='colors'>
+gray66</div>
+<div id='d533' class='colors'>
+grey66</div>
+<div id='d534' class='colors'>
+gray65</div>
+<div id='d535' class='colors'>
+grey65</div>
+<div id='d536' class='colors'>
+gray64</div>
+<div id='d537' class='colors'>
+grey64</div>
+<div id='d538' class='colors'>
+gray63</div>
+<div id='d539' class='colors'>
+grey63</div>
+<div id='d540' class='colors'>
+gray62</div>
+<div id='d541' class='colors'>
+grey62</div>
+<div id='d542' class='colors'>
+gray61</div>
+<div id='d543' class='colors'>
+grey61</div>
+<div id='d544' class='colors'>
+gray60</div>
+<div id='d545' class='colors'>
+grey60</div>
+<div id='d546' class='colors'>
+gray59</div>
+<div id='d547' class='colors'>
+grey59</div>
+<div id='d548' class='colors'>
+gray58</div>
+<div id='d549' class='colors'>
+grey58</div>
+<div id='d550' class='colors'>
+gray57</div>
+<div id='d551' class='colors'>
+grey57</div>
+<div id='d552' class='colors'>
+gray56</div>
+<div id='d553' class='colors'>
+grey56</div>
+<div id='d554' class='colors'>
+gray55</div>
+<div id='d555' class='colors'>
+grey55</div>
+<div id='d556' class='colors'>
+gray54</div>
+<div id='d557' class='colors'>
+grey54</div>
+<div id='d558' class='colors'>
+gray53</div>
+<div id='d559' class='colors'>
+grey53</div>
+<div id='d560' class='colors'>
+gray52</div>
+<div id='d561' class='colors'>
+grey52</div>
+<div id='d562' class='colors'>
+gray51</div>
+<div id='d563' class='colors'>
+grey51</div>
+<div id='d564' class='colors'>
+fractal</div>
+<div id='d565' class='colors'>
+gray50</div>
+<div id='d566' class='colors'>
+grey50</div>
+<div id='d567' class='colors'>
+gray</div>
+<div id='d568' class='colors'>
+gray49</div>
+<div id='d569' class='colors'>
+grey49</div>
+<div id='d570' class='colors'>
+gray48</div>
+<div id='d571' class='colors'>
+grey48</div>
+<div id='d572' class='colors'>
+gray47</div>
+<div id='d573' class='colors'>
+grey47</div>
+<div id='d574' class='colors'>
+gray46</div>
+<div id='d575' class='colors'>
+grey46</div>
+<div id='d576' class='colors'>
+gray45</div>
+<div id='d577' class='colors'>
+grey45</div>
+<div id='d578' class='colors'>
+gray44</div>
+<div id='d579' class='colors'>
+grey44</div>
+<div id='d580' class='colors'>
+gray43</div>
+<div id='d581' class='colors'>
+grey43</div>
+<div id='d582' class='colors'>
+gray42</div>
+<div id='d583' class='colors'>
+grey42</div>
+<div id='d584' class='colors'>
+DimGray</div>
+<div id='d585' class='colors'>
+DimGrey</div>
+<div id='d586' class='colors'>
+gray41</div>
+<div id='d587' class='colors'>
+grey41</div>
+<div id='d588' class='colors'>
+gray40</div>
+<div id='d589' class='colors'>
+grey40</div>
+<div id='d590' class='colors'>
+gray39</div>
+<div id='d591' class='colors'>
+grey39</div>
+<div id='d592' class='colors'>
+gray38</div>
+<div id='d593' class='colors'>
+grey38</div>
+<div id='d594' class='colors'>
+gray37</div>
+<div id='d595' class='colors'>
+grey37</div>
+<div id='d596' class='colors'>
+gray36</div>
+<div id='d597' class='colors'>
+grey36</div>
+<div id='d598' class='colors'>
+gray35</div>
+<div id='d599' class='colors'>
+grey35</div>
+<div id='d600' class='colors'>
+gray34</div>
+<div id='d601' class='colors'>
+grey34</div>
+<div id='d602' class='colors'>
+gray33</div>
+<div id='d603' class='colors'>
+grey33</div>
+<div id='d604' class='colors'>
+gray32</div>
+<div id='d605' class='colors'>
+grey32</div>
+<div id='d606' class='colors'>
+gray31</div>
+<div id='d607' class='colors'>
+grey31</div>
+<div id='d608' class='colors'>
+gray30</div>
+<div id='d609' class='colors'>
+grey30</div>
+<div id='d610' class='colors'>
+gray29</div>
+<div id='d611' class='colors'>
+grey29</div>
+<div id='d612' class='colors'>
+gray28</div>
+<div id='d613' class='colors'>
+grey28</div>
+<div id='d614' class='colors'>
+gray27</div>
+<div id='d615' class='colors'>
+grey27</div>
+<div id='d616' class='colors'>
+gray26</div>
+<div id='d617' class='colors'>
+grey26</div>
+<div id='d618' class='colors'>
+gray25</div>
+<div id='d619' class='colors'>
+grey25</div>
+<div id='d620' class='colors'>
+gray24</div>
+<div id='d621' class='colors'>
+grey24</div>
+<div id='d622' class='colors'>
+gray23</div>
+<div id='d623' class='colors'>
+grey23</div>
+<div id='d624' class='colors'>
+gray22</div>
+<div id='d625' class='colors'>
+grey22</div>
+<div id='d626' class='colors'>
+gray21</div>
+<div id='d627' class='colors'>
+grey21</div>
+<div id='d628' class='colors'>
+gray20</div>
+<div id='d629' class='colors'>
+grey20</div>
+<div id='d630' class='colors'>
+gray19</div>
+<div id='d631' class='colors'>
+grey19</div>
+<div id='d632' class='colors'>
+gray18</div>
+<div id='d633' class='colors'>
+grey18</div>
+<div id='d634' class='colors'>
+gray17</div>
+<div id='d635' class='colors'>
+grey17</div>
+<div id='d636' class='colors'>
+gray16</div>
+<div id='d637' class='colors'>
+grey16</div>
+<div id='d638' class='colors'>
+gray15</div>
+<div id='d639' class='colors'>
+grey15</div>
+<div id='d640' class='colors'>
+gray14</div>
+<div id='d641' class='colors'>
+grey14</div>
+<div id='d642' class='colors'>
+gray13</div>
+<div id='d643' class='colors'>
+grey13</div>
+<div id='d644' class='colors'>
+gray12</div>
+<div id='d645' class='colors'>
+grey12</div>
+<div id='d646' class='colors'>
+gray11</div>
+<div id='d647' class='colors'>
+grey11</div>
+<div id='d648' class='colors'>
+gray10</div>
+<div id='d649' class='colors'>
+grey10</div>
+<div id='d650' class='colors'>
+gray9</div>
+<div id='d651' class='colors'>
+grey9</div>
+<div id='d652' class='colors'>
+gray8</div>
+<div id='d653' class='colors'>
+grey8</div>
+<div id='d654' class='colors'>
+gray7</div>
+<div id='d655' class='colors'>
+grey7</div>
+<div id='d656' class='colors'>
+gray6</div>
+<div id='d657' class='colors'>
+grey6</div>
+<div id='d658' class='colors'>
+gray5</div>
+<div id='d659' class='colors'>
+grey5</div>
+<div id='d660' class='colors'>
+gray4</div>
+<div id='d661' class='colors'>
+grey4</div>
+<div id='d662' class='colors'>
+gray3</div>
+<div id='d663' class='colors'>
+grey3</div>
+<div id='d664' class='colors'>
+gray2</div>
+<div id='d665' class='colors'>
+grey2</div>
+<div id='d666' class='colors'>
+gray1</div>
+<div id='d667' class='colors'>
+grey1</div>
+<div id='d668' class='colors'>
+black</div>
+<div id='d669' class='colors'>
+gray0</div>
+<div id='d670' class='colors'>
+grey0</div>
+<div id='d671' class='colors'>
+opaque</div>
+<div id='d672' class='colors'>
+none</div>
+<div id='d673' class='colors'>
+transparent</div>
+</div>
+
+<div id='colornames'>
+CLICK TO CHOOSE THE COLOR
+</div>
+
+<div id='switches'>
+ <span id='title'>OPTIONS</span>
+ <div id='hexswitch' class='theswitches'>&nbsp</div>
+ <br>
+ <div id='infoswitch' class='theswitches'>CLICK TO TOGGLE PALATE INFO<span id='infospace'></span></div>
+ <br>
+ <div id='backgroundswitch' class='theswitches'>CLICK TO TOGGLE BACKGROUNDS</div>
+ <br>
+ <div id='preview'></div>
+ <div id='nameholder'>YOU WILL CHOOSE:<br><input id='namespace' style='width:inherit' type='text'></input></div>
+ <br>
+ <span id='transparent'>to choose transparent as a color, click <span id='transbutton'>HERE</span><span id='extra'></span></span>
+</div>
+<div id='vasebackground' style='position:fixed; z-index:2; height:120px; width:69px; top:2px; right:30px;'></div>
+
+<div id='vase' style='position:fixed; z-index:3; height:120px; width:69px; top:2px; right:30px; background-image:url(vase.png)'></div>
+<div id='vaseshim' style='position:fixed; z-index:4; height:120px; width:69px; top:2px; right:30px; background-image:url(vaseshim.png)'></div>
+<script type='text/javascript' src='js/jquery-1.6.4.min.js'></script>
+<script type='text/javascript' src='js/colordict.js'></script>
+<script type='text/javascript' src='js/colordictionaries2.js'></script>
+
+<script type='text/javascript' src='js/goldenfunctions.js'></script>
+<script type='text/javascript' src='js/hovercss.js'></script>
+<script type='text/javascript' src='js/iftransparentcss.js'></script>
+<script type='text/javascript' src='js/backgroundswitcher.js'></script>
+<script type='text/javascript' src='js/hexrgbnametoggle.js'></script>
+<script type='text/javascript' src='js/setupdimensions.js'></script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/colors/js/backgroundswitcher.js b/frontend/imgrid/colors/colors/js/backgroundswitcher.js
new file mode 100755
index 0000000..74e8367
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/backgroundswitcher.js
@@ -0,0 +1,38 @@
+backgroundstate = 2;
+function switchbackground()
+ {
+ if(backgroundstate == 1)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image','url(js/ditherbackground.gif)')
+ backgroundstate = 2;
+ $('#colornames').css('color', 'white')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ $('#vaseshim').css('background-image','url(vaseshim.png)')
+ }
+ else if(backgroundstate == 2)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image', 'none')
+ $('#vaseshim').css('background-image','url(blackshim.png)')
+ backgroundstate = 3;
+ }
+ else if(backgroundstate == 3)
+ {
+ $('#colorpicker').css('background-color','gray')
+ $('#colorpicker').css('background-image','none')
+ $('#vaseshim').css('background-image','url(grayshim.png)')
+ backgroundstate = 0;
+ }
+ else if(backgroundstate == 0)
+ {
+ $('#colorpicker').css('background-color', 'white')
+ $('#colorpicker').css('background-image', 'none')
+ $('#colornames').css('color', '#7F7F7F')
+ $('#vaseshim').css('background-image','url(whiteshim.png)')
+ backgroundstate = 1
+ }
+ }
+
+$('#backgroundswitch').click(function(){switchbackground()})
+
diff --git a/frontend/imgrid/colors/colors/js/colordict.js b/frontend/imgrid/colors/colors/js/colordict.js
new file mode 100755
index 0000000..5c69bc8
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/colordict.js
@@ -0,0 +1,3 @@
+var nametohex = {'grey21': '#363636', 'yellow': '#FFFF00', 'grey61': '#9C9C9C', 'HotPink3': '#CD6090', 'grey63': '#A1A1A1', 'grey62': '#9E9E9E', 'grey65': '#A6A6A6', 'AliceBlue': '#F0F8FF', 'grey67': '#ABABAB', 'grey66': '#A8A8A8', 'LightCyan1': '#E0FFFF', 'grey68': '#ADADAD', 'LightCyan3': '#B4CDCD', 'LightCyan2': '#D1EEEE', 'LightCyan4': '#7A8B8B', 'gray32': '#525252', 'gray33': '#545454', 'DarkTurquoise': '#00CED1', 'gray31': '#4F4F4F', 'gray36': '#5C5C5C', 'gray37': '#5E5E5E', 'gray34': '#575757', 'gray35': '#595959', 'aquamarine4': '#458B74', 'gray38': '#616161', 'gray39': '#636363', 'aquamarine1': '#7FFFD4', 'aquamarine3': '#66CDAA', 'aquamarine2': '#76EEC6', 'CadetBlue4': '#53868B', 'CadetBlue3': '#7AC5CD', 'CadetBlue2': '#8EE5EE', 'CadetBlue1': '#98F5FF', 'crimson': '#DC143C', 'VioletRed1': '#FF3E96', 'VioletRed2': '#EE3A8C', 'VioletRed3': '#CD3278', 'VioletRed4': '#8B2252', 'brown': '#A52A2A', 'DarkGoldenrod': '#B8860B', 'gray8': '#141414', 'SlateGrey': '#708090', 'NavajoWhite2': '#EECFA1', 'gray2': '#050505', 'cyan': '#00FFFF', 'gray0': '#000000', 'gray1': '#030303', 'fractal': '#808080', 'gray7': '#121212', 'gray4': '#0A0A0A', 'gray5': '#0D0D0D', 'grey60': '#999999', 'DarkBlue': '#00008B', 'gray98': '#FAFAFA', 'DarkKhaki': '#BDB76B', 'gray99': '#FCFCFC', 'teal': '#008080', 'grey11': '#1C1C1C', 'coral4': '#8B3E2F', 'grey12': '#1F1F1F', 'grey64': '#A3A3A3', 'PaleGreen1': '#9AFF9A', 'PaleGreen3': '#7CCD7C', 'PaleGreen2': '#90EE90', 'PaleGreen4': '#548B54', 'grey14': '#242424', 'lavender': '#E6E6FA', 'grey15': '#262626', 'chartreuse3': '#66CD00', 'chartreuse2': '#76EE00', 'chartreuse1': '#7FFF00', 'chartreuse4': '#458B00', 'RosyBrown': '#BC8F8F', 'blue': '#0000FF', 'NavajoWhite': '#FFDEAD', 'opaque': '#000000', 'maroon4': '#8B1C62', 'maroon3': '#CD2990', 'maroon2': '#EE30A7', 'maroon1': '#FF34B3', 'gold3': '#CDAD00', 'gold2': '#EEC900', 'gold1': '#FFD700', 'gold4': '#8B7500', 'LightSlateGrey': '#778899', 'gray30': '#4D4D4D', 'DarkGreen': '#006400', 'SkyBlue': '#87CEEB', 'GhostWhite': '#F8F8FF', 'LavenderBlush': '#FFF0F5', 'SeaGreen': '#2E8B57', 'BlanchedAlmond': '#FFEBCD', 'gray60': '#999999', 'DarkOliveGreen': '#556B2F', 'firebrick2': '#EE2C2C', 'firebrick1': '#FF3030', 'firebrick4': '#8B1A1A', 'sienna': '#A0522D', 'blue1': '#0000FF', 'lime': '#00FF00', 'gray55': '#8C8C8C', 'blue2': '#0000EE', 'DarkViolet': '#9400D3', 'blue4': '#00008B', 'peru': '#CD853F', 'DarkMagenta': '#8B008B', 'LightBlue2': '#B2DFEE', 'red2': '#EE0000', 'red1': '#FF0000', 'LightBlue1': '#BFEFFF', 'LightBlue4': '#68838B', 'red4': '#8B0000', 'MediumSpringGreen': '#00FA9A', 'chocolate': '#D2691E', 'ForestGreen': '#228B22', 'DarkRed': '#8B0000', 'olive': '#808000', 'HotPink2': '#EE6AA7', 'HotPink1': '#FF6EB4', 'HotPink4': '#8B3A62', 'grey18': '#2E2E2E', 'grey19': '#303030', 'none': '#000000', 'PeachPuff': '#FFDAB9', 'MediumGoldenRod': '#D1C166', 'moccasin': '#FFE4B5', 'grey10': '#1A1A1A', 'chocolate1': '#FF7F24', 'chocolate2': '#EE7621', 'chocolate3': '#CD661D', 'chocolate4': '#8B4513', 'wheat2': '#EED8AE', 'grey16': '#292929', 'grey17': '#2B2B2B', 'gray69': '#B0B0B0', 'gray68': '#ADADAD', 'gray65': '#A6A6A6', 'gray64': '#A3A3A3', 'gray67': '#ABABAB', 'gray66': '#A8A8A8', 'gray61': '#9C9C9C', 'coral': '#FF7F50', 'gray63': '#A1A1A1', 'gray62': '#9E9E9E', 'LightGoldenrod': '#EEDD82', 'turquoise4': '#00868B', 'seashell2': '#EEE5DE', 'seashell3': '#CDC5BF', 'magenta': '#FF00FF', 'seashell1': '#FFF5EE', 'tan': '#D2B48C', 'seashell4': '#8B8682', 'pink': '#FFC0CB', 'LightSlateBlue': '#8470FF', 'SteelBlue1': '#63B8FF', 'SteelBlue3': '#4F94CD', 'SteelBlue2': '#5CACEE', 'SteelBlue4': '#36648B', 'grey89': '#E3E3E3', 'grey88': '#E0E0E0', 'grey87': '#DEDEDE', 'grey86': '#DBDBDB', 'grey85': '#D9D9D9', 'grey84': '#D6D6D6', 'grey83': '#D4D4D4', 'grey82': '#D1D1D1', 'grey81': '#CFCFCF', 'grey80': '#CCCCCC', 'ivory2': '#EEEEE0', 'khaki4': '#8B864E', 'khaki1': '#FFF68F', 'khaki2': '#EEE685', 'khaki3': '#CDC673', 'salmon1': '#FF8C69', 'salmon3': '#CD7054', 'salmon2': '#EE8262', 'salmon4': '#8B4C39', 'LightPink': '#FFB6C1', 'gray9': '#171717', 'green': '#008000', 'brown2': '#EE3B3B', 'brown3': '#CD3333', 'brown1': '#FF4040', 'brown4': '#8B2323', 'cadet blue': '#5F9EA0', 'orange4': '#8B5A00', 'orange1': '#FFA500', 'orange3': '#CD8500', 'orange2': '#EE9A00', 'gray3': '#080808', 'gray6': '#0F0F0F', 'yellow4': '#8B8B00', 'yellow3': '#CDCD00', 'yellow2': '#EEEE00', 'yellow1': '#FFFF00', 'PapayaWhip': '#FFEFD5', 'bisque2': '#EED5B7', 'OliveDrab4': '#698B22', 'bisque3': '#CDB79E', 'OliveDrab1': '#C0FF3E', 'OliveDrab2': '#B3EE3A', 'OliveDrab3': '#9ACD32', 'SkyBlue4': '#4A708B', 'SkyBlue1': '#87CEFF', 'SkyBlue3': '#6CA6CD', 'SkyBlue2': '#7EC0EE', 'grey58': '#949494', 'grey59': '#969696', 'grey54': '#8A8A8A', 'grey55': '#8C8C8C', 'grey56': '#8F8F8F', 'grey57': '#919191', 'grey50': '#7F7F7F', 'silver': '#C0C0C0', 'grey52': '#858585', 'grey53': '#878787', 'cyan2': '#00EEEE', 'cyan3': '#00CDCD', 'gray23': '#3B3B3B', 'RosyBrown4': '#8B6969', 'gray25': '#404040', 'CornflowerBlue': '#6495ED', 'cyan4': '#008B8B', 'gray26': '#424242', 'gray29': '#4A4A4A', 'LimeGreen': '#32CD32', 'MistyRose': '#FFE4E1', 'navy': '#000080', 'gray94': '#F0F0F0', 'gray95': '#F2F2F2', 'gray96': '#F5F5F5', 'gray97': '#F7F7F7', 'gray90': '#E5E5E5', 'gray91': '#E8E8E8', 'gray92': '#EBEBEB', 'gray93': '#EDEDED', 'MediumPurple': '#9370DB', 'MidnightBlue': '#191970', 'cornsilk': '#FFF8DC', 'red': '#FF0000', 'grey69': '#B0B0B0', 'DarkOrchid4': '#68228B', 'blue3': '#0000CD', 'LightSteelBlue': '#B0C4DE', 'DarkOrchid1': '#BF3EFF', 'DarkOrchid2': '#B23AEE', 'DarkOrchid3': '#9A32CD', 'grey72': '#B8B8B8', 'FloralWhite': '#FFFAF0', 'grey70': '#B3B3B3', 'DarkSeaGreen': '#8FBC8F', 'grey71': '#B5B5B5', 'gray17': '#2B2B2B', 'grey77': '#C4C4C4', 'tomato4': '#8B3626', 'tomato1': '#FF6347', 'tomato3': '#CD4F39', 'tomato2': '#EE5C42', 'DarkSlateGray1': '#97FFFF', 'DarkSlateGray2': '#8DEEEE', 'DarkSlateGray3': '#79CDCD', 'DarkSlateGray4': '#528B8B', 'SteelBlue': '#4682B4', 'MediumSlateBlue': '#7B68EE', 'OrangeRed': '#FF4500', 'grey79': '#C9C9C9', 'MediumVioletRed': '#C71585', 'burlywood': '#DEB887', 'white': '#FFFFFF', 'tomato': '#FF6347', 'DodgerBlue': '#1E90FF', 'RoyalBlue4': '#27408B', 'RoyalBlue1': '#4876FF', 'RoyalBlue3': '#3A5FCD', 'RoyalBlue2': '#436EEE', 'MistyRose1': '#FFE4E1', 'MistyRose3': '#CDB7B5', 'MistyRose2': '#EED5D2', 'MistyRose4': '#8B7D7B', 'LightGray': '#D3D3D3', 'LightYellow': '#FFFFE0', 'DarkOrange': '#FF8C00', 'DarkGray': '#A9A9A9', 'SlateGray': '#708090', 'turquoise3': '#00C5CD', 'turquoise2': '#00E5EE', 'turquoise1': '#00F5FF', 'burlywood2': '#EEC591', 'burlywood4': '#8B7355', 'DarkSlateGray': '#2F4F4F', 'linen': '#FAF0E6', 'grey47': '#787878', 'snow': '#FFFAFA', 'grey46': '#757575', 'gray58': '#949494', 'gray59': '#969696', 'IndianRed4': '#8B3A3A', 'purple4': '#551A8B', 'gray52': '#858585', 'gray53': '#878787', 'purple1': '#9B30FF', 'IndianRed1': '#FF6A6A', 'purple3': '#7D26CD', 'purple2': '#912CEE', 'thistle3': '#CDB5CD', 'thistle2': '#EED2EE', 'SpringGreen2': '#00EE76', 'SpringGreen3': '#00CD66', 'SpringGreen4': '#008B45', 'thistle4': '#8B7B8B', 'LightPink2': '#EEA2AD', 'LightPink3': '#CD8C95', 'LightPink1': '#FFAEB9', 'LightPink4': '#8B5F65', 'MediumPurple1': '#AB82FF', 'MediumPurple2': '#9F79EE', 'MediumPurple3': '#8968CD', 'MediumPurple4': '#5D478B', 'MediumTurquoise': '#48D1CC', 'DimGray': '#696969', 'gray14': '#242424', 'grey100': '#FFFFFF', 'OrangeRed3': '#CD3700', 'OrangeRed2': '#EE4000', 'OrangeRed1': '#FF4500', 'LightSeaGreen': '#20B2AA', 'gold': '#FFD700', 'OrangeRed4': '#8B2500', 'NavajoWhite4': '#8B795E', 'NavajoWhite1': '#FFDEAD', 'LawnGreen': '#7CFC00', 'NavajoWhite3': '#CDB38B', 'LightGoldenrod4': '#8B814C', 'LightGoldenrod1': '#FFEC8B', 'LightGoldenrod3': '#CDBE70', 'LightGoldenrod2': '#EEDC82', 'gray21': '#363636', 'PaleGreen': '#98FB98', 'green4': '#008B00', 'green1': '#00FF00', 'green3': '#00CD00', 'green2': '#00EE00', 'MediumOrchid': '#BA55D3', 'black': '#000000', 'gray20': '#333333', 'orchid4': '#8B4789', 'DodgerBlue1': '#1E90FF', 'DodgerBlue2': '#1C86EE', 'DodgerBlue3': '#1874CD', 'DodgerBlue4': '#104E8B', 'orchid1': '#FF83FA', 'orchid2': '#EE7AE9', 'orchid3': '#CD69C9', 'DarkSeaGreen4': '#698B69', 'DarkSeaGreen3': '#9BCD9B', 'DarkSeaGreen2': '#B4EEB4', 'DarkSeaGreen1': '#C1FFC1', 'gray100': '#FFFFFF', 'BlueViolet': '#8A2BE2', 'bisque4': '#8B7D6B', 'MediumOrchid4': '#7A378B', 'MintCream': '#F5FFFA', 'MediumOrchid1': '#E066FF', 'bisque1': '#FFE4C4', 'MediumOrchid3': '#B452CD', 'MediumOrchid2': '#D15FEE', 'gray': '#7E7E7E', 'DeepSkyBlue': '#00BFFF', 'LightGrey': '#D3D3D3', 'grey78': '#C7C7C7', 'gray22': '#383838', 'plum4': '#8B668B', 'plum3': '#CD96CD', 'plum2': '#EEAEEE', 'plum1': '#FFBBFF', 'DarkSlateGrey': '#2F4F4F', 'DarkOrchid': '#9932CC', 'OliveDrab': '#6B8E23', 'gray83': '#D4D4D4', 'grey49': '#7D7D7D', 'grey48': '#7A7A7A', 'thistle': '#D8BFD8', 'violet': '#EE82EE', 'grey43': '#6E6E6E', 'grey42': '#6B6B6B', 'LightSalmon4': '#8B5742', 'grey40': '#666666', 'LightSalmon2': '#EE9572', 'LightSalmon3': '#CD8162', 'grey45': '#737373', 'LightSalmon1': '#FFA07A', 'honeydew': '#F0FFF0', 'gray18': '#2E2E2E', 'gray19': '#303030', 'LightCyan': '#E0FFFF', 'gray15': '#262626', 'gray16': '#292929', 'gray82': '#D1D1D1', 'gray10': '#1A1A1A', 'gray11': '#1C1C1C', 'gray12': '#1F1F1F', 'gray13': '#212121', 'grey93': '#EDEDED', 'PaleGoldenrod': '#EEE8AA', 'gainsboro': '#DCDCDC', 'AntiqueWhite3': '#CDC0B0', 'AntiqueWhite2': '#EEDFCC', 'AntiqueWhite1': '#FFEFDB', 'gray27': '#454545', 'SlateBlue': '#6A5ACD', 'AntiqueWhite4': '#8B8378', 'DimGrey': '#696969', 'VioletRed': '#D02090', 'WhiteSmoke': '#F5F5F5', 'grey38': '#616161', 'grey39': '#636363', 'grey36': '#5C5C5C', 'grey37': '#5E5E5E', 'grey34': '#575757', 'grey35': '#595959', 'aqua': '#00FFFF', 'grey33': '#545454', 'grey30': '#4D4D4D', 'grey31': '#4F4F4F', 'NavyBlue': '#000080', 'sienna4': '#8B4726', 'gray81': '#CFCFCF', 'gray80': '#CCCCCC', 'sienna1': '#FF8247', 'gray86': '#DBDBDB', 'sienna3': '#CD6839', 'sienna2': '#EE7942', 'gray89': '#E3E3E3', 'gray88': '#E0E0E0', 'SlateBlue4': '#473C8B', 'gray87': '#DEDEDE', 'LightSteelBlue1': '#CAE1FF', 'magenta3': '#CD00CD', 'IndianRed': '#CD5C5C', 'SlateBlue2': '#7A67EE', 'SlateBlue1': '#836FFF', 'LightBlue': '#ADD8E6', 'PeachPuff4': '#8B7765', 'seashell': '#FFF5EE', 'SaddleBrown': '#8B4513', 'PeachPuff1': '#FFDAB9', 'PeachPuff2': '#EECBAD', 'PeachPuff3': '#CDAF95', 'aquamarine': '#7FFFD4', 'LemonChiffon2': '#EEE9BF', 'LemonChiffon1': '#FFFACD', 'tan4': '#8B5A2B', 'tan3': '#CD853F', 'tan2': '#EE9A49', 'tan1': '#FFA54F', 'LemonChiffon4': '#8B8970', 'orange': '#FFA500', 'OldLace': '#FDF5E6', 'PowderBlue': '#B0E0E6', 'RosyBrown3': '#CD9B9B', 'RoyalBlue': '#4169E1', 'LightSkyBlue4': '#607B8B', 'LightSkyBlue1': '#B0E2FF', 'LightSkyBlue2': '#A4D3EE', 'LightSkyBlue3': '#8DB6CD', 'LightYellow1': '#FFFFE0', 'LightYellow2': '#EEEED1', 'LightYellow3': '#CDCDB4', 'LightYellow4': '#8B8B7A', 'goldenrod4': '#8B6914', 'goldenrod1': '#FFC125', 'goldenrod2': '#EEB422', 'goldenrod3': '#CD9B1D', 'grey32': '#525252', 'LemonChiffon': '#FFFACD', 'burlywood1': '#FFD39B', 'YellowGreen': '#9ACD32', 'LightCoral': '#F08080', 'burlywood3': '#CDAA7D', 'ivory3': '#CDCDC1', 'firebrick3': '#CD2626', 'ivory1': '#FFFFF0', 'grey8': '#141414', 'ivory4': '#8B8B83', 'grey9': '#171717', 'DarkSalmon': '#E9967A', 'SlateGray1': '#C6E2FF', 'SlateGray2': '#B9D3EE', 'SlateGray3': '#9FB6CD', 'SlateGray4': '#6C7B8B', 'RosyBrown2': '#EEB4B4', 'RosyBrown1': '#FFC1C1', 'gray85': '#D9D9D9', 'gray84': '#D6D6D6', 'LightGreen': '#90EE90', 'LavenderBlush1': '#FFF0F5', 'grey73': '#BABABA', 'LavenderBlush3': '#CDC1C5', 'LavenderBlush2': '#EEE0E5', 'grey76': '#C2C2C2', 'LavenderBlush4': '#8B8386', 'grey74': '#BDBDBD', 'grey75': '#BFBFBF', 'pink1': '#FFB5C5', 'pink3': '#CD919E', 'pink2': '#EEA9B8', 'pink4': '#8B636C', 'gray47': '#787878', 'gray46': '#757575', 'gray45': '#737373', 'gray44': '#707070', 'gray43': '#6E6E6E', 'gray42': '#6B6B6B', 'gray41': '#696969', 'gray40': '#666666', 'gray49': '#7D7D7D', 'gray48': '#7A7A7A', 'MediumAquamarine': '#66CDAA', 'MediumForestGreen': '#32814B', 'azure1': '#F0FFFF', 'azure3': '#C1CDCD', 'azure2': '#E0EEEE', 'indigo': '#4B0082', 'azure4': '#838B8B', 'firebrick': '#B22222', 'DarkGrey': '#A9A9A9', 'magenta4': '#8B008B', 'SlateBlue3': '#6959CD', 'magenta2': '#EE00EE', 'magenta1': '#FF00FF', 'grey51': '#828282', 'chartreuse': '#7FFF00', 'grey41': '#696969', 'DarkOliveGreen4': '#6E8B3D', 'turquoise': '#40E0D0', 'DarkOliveGreen1': '#CAFF70', 'DarkOliveGreen3': '#A2CD5A', 'DarkOliveGreen2': '#BCEE68', 'grey6': '#0F0F0F', 'grey7': '#121212', 'grey4': '#0A0A0A', 'grey5': '#0D0D0D', 'grey2': '#050505', 'grey3': '#080808', 'grey0': '#000000', 'grey1': '#030303', 'gray50': '#7F7F7F', 'cyan1': '#00FFFF', 'gray51': '#828282', 'gray24': '#3D3D3D', 'HotPink': '#FF69B4', 'DarkGoldenrod4': '#8B6508', 'gray54': '#8A8A8A', 'DarkGoldenrod1': '#FFB90F', 'DarkGoldenrod2': '#EEAD0E', 'DarkGoldenrod3': '#CD950C', 'IndianRed2': '#EE6363', 'DeepPink': '#FF1493', 'gray28': '#474747', 'IndianRed3': '#CD5555', 'DarkCyan': '#008B8B', 'GreenYellow': '#ADFF2F', 'LightSalmon': '#FFA07A', 'DarkOrange4': '#8B4500', 'DarkOrange1': '#FF7F00', 'transparent': '#000000', 'DarkOrange3': '#CD6600', 'orchid': '#DA70D6', 'purple': '#800080', 'wheat4': '#8B7E66', 'wheat1': '#FFE7BA', 'wheat3': '#CDBA96', 'SpringGreen1': '#00FF7F', 'coral3': '#CD5B45', 'coral2': '#EE6A50', 'coral1': '#FF7256', 'thistle1': '#FFE1FF', 'PaleTurquoise': '#AFEEEE', 'bisque': '#FFE4C4', 'DeepPink3': '#CD1076', 'DeepPink2': '#EE1289', 'DeepPink1': '#FF1493', 'khaki': '#F0E68C', 'wheat': '#F5DEB3', 'MediumSeaGreen': '#3CB371', 'DeepPink4': '#8B0A50', 'salmon': '#FA8072', 'grey44': '#707070', 'DarkSlateBlue': '#483D8B', 'PaleVioletRed4': '#8B475D', 'PaleVioletRed1': '#FF82AB', 'PaleVioletRed2': '#EE799F', 'PaleVioletRed3': '#CD6889', 'AntiqueWhite': '#FAEBD7', 'PaleTurquoise4': '#668B8B', 'PaleTurquoise3': '#96CDCD', 'PaleTurquoise2': '#AEEEEE', 'PaleTurquoise1': '#BBFFFF', 'gray56': '#8F8F8F', 'plum': '#DDA0DD', 'beige': '#F5F5DC', 'SpringGreen': '#00FF7F', 'azure': '#F0FFFF', 'honeydew1': '#F0FFF0', 'honeydew2': '#E0EEE0', 'honeydew3': '#C1CDC1', 'honeydew4': '#838B83', 'gray57': '#919191', 'snow4': '#8B8989', 'snow2': '#EEE9E9', 'snow3': '#CDC9C9', 'snow1': '#FFFAFA', 'SandyBrown': '#F4A460', 'grey13': '#212121', 'SeaGreen4': '#2E8B57', 'SeaGreen3': '#43CD80', 'SeaGreen2': '#4EEE94', 'SeaGreen1': '#54FF9F', 'grey29': '#4A4A4A', 'grey28': '#474747', 'grey25': '#404040', 'grey24': '#3D3D3D', 'grey27': '#454545', 'grey26': '#424242', 'fuchsia': '#FF00FF', 'grey20': '#333333', 'grey23': '#3B3B3B', 'grey22': '#383838', 'gray78': '#C7C7C7', 'gray79': '#C9C9C9', 'gray76': '#C2C2C2', 'gray77': '#C4C4C4', 'gray74': '#BDBDBD', 'gray75': '#BFBFBF', 'gray72': '#B8B8B8', 'gray73': '#BABABA', 'gray70': '#B3B3B3', 'gray71': '#B5B5B5', 'ivory': '#FFFFF0', 'LemonChiffon3': '#CDC9A5', 'DeepSkyBlue4': '#00688B', 'DeepSkyBlue3': '#009ACD', 'DeepSkyBlue2': '#00B2EE', 'DeepSkyBlue1': '#00BFFF', 'cornsilk4': '#8B8878', 'cornsilk2': '#EEE8CD', 'cornsilk3': '#CDC8B1', 'CadetBlue': '#5F9EA0', 'cornsilk1': '#FFF8DC', 'grey90': '#E5E5E5', 'grey91': '#E8E8E8', 'grey92': '#EBEBEB', 'goldenrod': '#DAA520', 'grey94': '#F0F0F0', 'grey95': '#F2F2F2', 'grey96': '#F5F5F5', 'grey97': '#F7F7F7', 'grey98': '#FAFAFA', 'grey99': '#FCFCFC', 'red3': '#CD0000', 'LightSteelBlue2': '#BCD2EE', 'LightSteelBlue3': '#A2B5CD', 'LightSteelBlue4': '#6E7B8B', 'LightBlue3': '#9AC0CD', 'maroon': '#800000', 'LightSkyBlue': '#87CEFA', 'LightGoldenrodYellow': '#FAFAD2', 'MediumBlue': '#0000CD', 'LightSlateGray': '#778899', 'DarkOrange2': '#EE7600', 'PaleVioletRed': '#DB7093'}
+var divlist = ['#d0', '#d1', '#d2', '#d3', '#d4', '#d5', '#d6', '#d7', '#d8', '#d9', '#d10', '#d11', '#d12', '#d13', '#d14', '#d15', '#d16', '#d17', '#d18', '#d19', '#d20', '#d21', '#d22', '#d23', '#d24', '#d25', '#d26', '#d27', '#d28', '#d29', '#d30', '#d31', '#d32', '#d33', '#d34', '#d35', '#d36', '#d37', '#d38', '#d39', '#d40', '#d41', '#d42', '#d43', '#d44', '#d45', '#d46', '#d47', '#d48', '#d49', '#d50', '#d51', '#d52', '#d53', '#d54', '#d55', '#d56', '#d57', '#d58', '#d59', '#d60', '#d61', '#d62', '#d63', '#d64', '#d65', '#d66', '#d67', '#d68', '#d69', '#d70', '#d71', '#d72', '#d73', '#d74', '#d75', '#d76', '#d77', '#d78', '#d79', '#d80', '#d81', '#d82', '#d83', '#d84', '#d85', '#d86', '#d87', '#d88', '#d89', '#d90', '#d91', '#d92', '#d93', '#d94', '#d95', '#d96', '#d97', '#d98', '#d99', '#d100', '#d101', '#d102', '#d103', '#d104', '#d105', '#d106', '#d107', '#d108', '#d109', '#d110', '#d111', '#d112', '#d113', '#d114', '#d115', '#d116', '#d117', '#d118', '#d119', '#d120', '#d121', '#d122', '#d123', '#d124', '#d125', '#d126', '#d127', '#d128', '#d129', '#d130', '#d131', '#d132', '#d133', '#d134', '#d135', '#d136', '#d137', '#d138', '#d139', '#d140', '#d141', '#d142', '#d143', '#d144', '#d145', '#d146', '#d147', '#d148', '#d149', '#d150', '#d151', '#d152', '#d153', '#d154', '#d155', '#d156', '#d157', '#d158', '#d159', '#d160', '#d161', '#d162', '#d163', '#d164', '#d165', '#d166', '#d167', '#d168', '#d169', '#d170', '#d171', '#d172', '#d173', '#d174', '#d175', '#d176', '#d177', '#d178', '#d179', '#d180', '#d181', '#d182', '#d183', '#d184', '#d185', '#d186', '#d187', '#d188', '#d189', '#d190', '#d191', '#d192', '#d193', '#d194', '#d195', '#d196', '#d197', '#d198', '#d199', '#d200', '#d201', '#d202', '#d203', '#d204', '#d205', '#d206', '#d207', '#d208', '#d209', '#d210', '#d211', '#d212', '#d213', '#d214', '#d215', '#d216', '#d217', '#d218', '#d219', '#d220', '#d221', '#d222', '#d223', '#d224', '#d225', '#d226', '#d227', '#d228', '#d229', '#d230', '#d231', '#d232', '#d233', '#d234', '#d235', '#d236', '#d237', '#d238', '#d239', '#d240', '#d241', '#d242', '#d243', '#d244', '#d245', '#d246', '#d247', '#d248', '#d249', '#d250', '#d251', '#d252', '#d253', '#d254', '#d255', '#d256', '#d257', '#d258', '#d259', '#d260', '#d261', '#d262', '#d263', '#d264', '#d265', '#d266', '#d267', '#d268', '#d269', '#d270', '#d271', '#d272', '#d273', '#d274', '#d275', '#d276', '#d277', '#d278', '#d279', '#d280', '#d281', '#d282', '#d283', '#d284', '#d285', '#d286', '#d287', '#d288', '#d289', '#d290', '#d291', '#d292', '#d293', '#d294', '#d295', '#d296', '#d297', '#d298', '#d299', '#d300', '#d301', '#d302', '#d303', '#d304', '#d305', '#d306', '#d307', '#d308', '#d309', '#d310', '#d311', '#d312', '#d313', '#d314', '#d315', '#d316', '#d317', '#d318', '#d319', '#d320', '#d321', '#d322', '#d323', '#d324', '#d325', '#d326', '#d327', '#d328', '#d329', '#d330', '#d331', '#d332', '#d333', '#d334', '#d335', '#d336', '#d337', '#d338', '#d339', '#d340', '#d341', '#d342', '#d343', '#d344', '#d345', '#d346', '#d347', '#d348', '#d349', '#d350', '#d351', '#d352', '#d353', '#d354', '#d355', '#d356', '#d357', '#d358', '#d359', '#d360', '#d361', '#d362', '#d363', '#d364', '#d365', '#d366', '#d367', '#d368', '#d369', '#d370', '#d371', '#d372', '#d373', '#d374', '#d375', '#d376', '#d377', '#d378', '#d379', '#d380', '#d381', '#d382', '#d383', '#d384', '#d385', '#d386', '#d387', '#d388', '#d389', '#d390', '#d391', '#d392', '#d393', '#d394', '#d395', '#d396', '#d397', '#d398', '#d399', '#d400', '#d401', '#d402', '#d403', '#d404', '#d405', '#d406', '#d407', '#d408', '#d409', '#d410', '#d411', '#d412', '#d413', '#d414', '#d415', '#d416', '#d417', '#d418', '#d419', '#d420', '#d421', '#d422', '#d423', '#d424', '#d425', '#d426', '#d427', '#d428', '#d429', '#d430', '#d431', '#d432', '#d433', '#d434', '#d435', '#d436', '#d437', '#d438', '#d439', '#d440', '#d441', '#d442', '#d443', '#d444', '#d445', '#d446', '#d447', '#d448', '#d449', '#d450', '#d451', '#d452', '#d453', '#d454', '#d455', '#d456', '#d457', '#d458', '#d459', '#d460', '#d461', '#d462', '#d463', '#d464', '#d465', '#d466', '#d467', '#d468', '#d469', '#d470', '#d471', '#d472', '#d473', '#d474', '#d475', '#d476', '#d477', '#d478', '#d479', '#d480', '#d481', '#d482', '#d483', '#d484', '#d485', '#d486', '#d487', '#d488', '#d489', '#d490', '#d491', '#d492', '#d493', '#d494', '#d495', '#d496', '#d497', '#d498', '#d499', '#d500', '#d501', '#d502', '#d503', '#d504', '#d505', '#d506', '#d507', '#d508', '#d509', '#d510', '#d511', '#d512', '#d513', '#d514', '#d515', '#d516', '#d517', '#d518', '#d519', '#d520', '#d521', '#d522', '#d523', '#d524', '#d525', '#d526', '#d527', '#d528', '#d529', '#d530', '#d531', '#d532', '#d533', '#d534', '#d535', '#d536', '#d537', '#d538', '#d539', '#d540', '#d541', '#d542', '#d543', '#d544', '#d545', '#d546', '#d547', '#d548', '#d549', '#d550', '#d551', '#d552', '#d553', '#d554', '#d555', '#d556', '#d557', '#d558', '#d559', '#d560', '#d561', '#d562', '#d563', '#d564', '#d565', '#d566', '#d567', '#d568', '#d569', '#d570', '#d571', '#d572', '#d573', '#d574', '#d575', '#d576', '#d577', '#d578', '#d579', '#d580', '#d581', '#d582', '#d583', '#d584', '#d585', '#d586', '#d587', '#d588', '#d589', '#d590', '#d591', '#d592', '#d593', '#d594', '#d595', '#d596', '#d597', '#d598', '#d599', '#d600', '#d601', '#d602', '#d603', '#d604', '#d605', '#d606', '#d607', '#d608', '#d609', '#d610', '#d611', '#d612', '#d613', '#d614', '#d615', '#d616', '#d617', '#d618', '#d619', '#d620', '#d621', '#d622', '#d623', '#d624', '#d625', '#d626', '#d627', '#d628', '#d629', '#d630', '#d631', '#d632', '#d633', '#d634', '#d635', '#d636', '#d637', '#d638', '#d639', '#d640', '#d641', '#d642', '#d643', '#d644', '#d645', '#d646', '#d647', '#d648', '#d649', '#d650', '#d651', '#d652', '#d653', '#d654', '#d655', '#d656', '#d657', '#d658', '#d659', '#d660', '#d661', '#d662', '#d663', '#d664', '#d665', '#d666', '#d667', '#d668', '#d669', '#d670', '#d671', '#d672', '#d673']
+var divtoname = {'#d322': 'khaki4', '#d600': 'gray34', '#d118': 'MediumPurple1', '#d119': 'MediumPurple2', '#d114': 'purple3', '#d115': 'purple4', '#d116': 'purple1', '#d117': 'MediumPurple', '#d110': 'purple', '#d111': 'indigo', '#d112': 'BlueViolet', '#d113': 'purple2', '#d529': 'grey67', '#d231': 'DarkSlateGray', '#d339': 'LightGoldenrod3', '#d233': 'MediumTurquoise', '#d232': 'DarkSlateGrey', '#d235': 'turquoise', '#d234': 'LightSeaGreen', '#d237': 'aquamarine', '#d236': 'aquamarine4', '#d239': 'aquamarine2', '#d238': 'aquamarine1', '#d332': 'gold1', '#d333': 'gold2', '#d334': 'gold3', '#d335': 'gold4', '#d336': 'LightGoldenrod', '#d337': 'LightGoldenrod4', '#d424': 'LightSalmon3', '#d425': 'LightSalmon', '#d426': 'LightSalmon1', '#d427': 'LightSalmon4', '#d420': 'sienna', '#d421': 'sienna1', '#d422': 'sienna2', '#d423': 'sienna3', '#d587': 'grey41', '#d586': 'gray41', '#d585': 'DimGrey', '#d584': 'DimGray', '#d428': 'LightSalmon2', '#d429': 'coral', '#d581': 'grey43', '#d580': 'gray43', '#d89': 'thistle4', '#d88': 'plum3', '#d349': 'goldenrod4', '#d348': 'goldenrod3', '#d81': 'thistle2', '#d80': 'thistle1', '#d83': 'plum2', '#d82': 'plum1', '#d85': 'thistle3', '#d84': 'thistle', '#d87': 'violet', '#d86': 'plum', '#d601': 'grey34', '#d67': 'DeepPink3', '#d66': 'DeepPink2', '#d65': 'DeepPink1', '#d64': 'DeepPink', '#d63': 'HotPink', '#d62': 'HotPink4', '#d61': 'HotPink1', '#d60': 'HotPink2', '#d69': 'maroon1', '#d68': 'DeepPink4', '#d510': 'grey76', '#d511': 'silver', '#d512': 'gray75', '#d513': 'grey75', '#d514': 'gray74', '#d515': 'grey74', '#d516': 'gray73', '#d517': 'grey73', '#d518': 'gray72', '#d519': 'grey72', '#d150': 'LightSteelBlue2', '#d151': 'LightSteelBlue3', '#d152': 'LightSteelBlue4', '#d153': 'SlateGray4', '#d154': 'SlateGray1', '#d155': 'SlateGray2', '#d156': 'SlateGray3', '#d157': 'LightSlateGray', '#d158': 'LightSlateGrey', '#d159': 'SlateGray', '#d565': 'gray50', '#d564': 'fractal', '#d567': 'gray', '#d566': 'grey50', '#d561': 'grey52', '#d560': 'gray52', '#d563': 'grey51', '#d562': 'gray51', '#d604': 'gray32', '#d605': 'grey32', '#d606': 'gray31', '#d607': 'grey31', '#d569': 'grey49', '#d568': 'gray49', '#d602': 'gray33', '#d603': 'grey33', '#d125': 'SlateBlue', '#d124': 'MediumSlateBlue', '#d127': 'SlateBlue2', '#d126': 'SlateBlue1', '#d121': 'MediumPurple4', '#d120': 'MediumPurple3', '#d123': 'LightSlateBlue', '#d122': 'DarkSlateBlue', '#d359': 'wheat1', '#d129': 'SlateBlue4', '#d128': 'SlateBlue3', '#d301': 'LightYellow', '#d300': 'ivory1', '#d303': 'beige', '#d302': 'LightYellow1', '#d305': 'LightGoldenrodYellow', '#d304': 'ivory2', '#d307': 'ivory3', '#d306': 'LightYellow2', '#d309': 'ivory4', '#d308': 'LightYellow3', '#d462': 'grey98', '#d351': 'DarkGoldenrod1', '#d464': 'grey97', '#d465': 'gray96', '#d466': 'grey96', '#d467': 'WhiteSmoke', '#d463': 'gray97', '#d268': 'PaleGreen3', '#d269': 'honeydew4', '#d266': 'DarkSeaGreen3', '#d267': 'DarkSeaGreen', '#d264': 'LightGreen', '#d265': 'PaleGreen2', '#d262': 'PaleGreen', '#d263': 'honeydew3', '#d260': 'DarkSeaGreen2', '#d261': 'PaleGreen1', '#d598': 'gray35', '#d29': 'firebrick4', '#d28': 'brown4', '#d23': 'red2', '#d22': 'firebrick3', '#d21': 'RosyBrown4', '#d20': 'red1', '#d27': 'IndianRed4', '#d26': 'red3', '#d25': 'brown', '#d24': 'firebrick', '#d599': 'grey35', '#d338': 'LightGoldenrod1', '#d419': 'sienna4', '#d418': 'seashell1', '#d230': 'teal', '#d415': 'chocolate4', '#d414': 'chocolate3', '#d417': 'seashell', '#d416': 'SaddleBrown', '#d411': 'chocolate', '#d410': 'seashell3', '#d413': 'chocolate2', '#d412': 'chocolate1', '#d398': 'tan1', '#d399': 'tan2', '#d392': 'DarkOrange1', '#d393': 'linen', '#d390': 'bisque1', '#d391': 'bisque3', '#d396': 'DarkOrange4', '#d397': 'peru', '#d394': 'DarkOrange2', '#d395': 'DarkOrange3', '#d194': 'CadetBlue2', '#d195': 'CadetBlue3', '#d196': 'CadetBlue4', '#d197': 'turquoise1', '#d190': 'LightBlue', '#d191': 'LightBlue4', '#d192': 'PowderBlue', '#d193': 'CadetBlue1', '#d198': 'turquoise2', '#d199': 'turquoise3', '#d330': 'cornsilk4', '#d331': 'gold', '#d640': 'gray14', '#d641': 'grey14', '#d642': 'gray13', '#d643': 'grey13', '#d644': 'gray12', '#d645': 'grey12', '#d646': 'gray11', '#d647': 'grey11', '#d648': 'gray10', '#d649': 'grey10', '#d668': 'black', '#d486': 'gainsboro', '#d487': 'gray86', '#d484': 'gray87', '#d485': 'grey87', '#d482': 'gray88', '#d483': 'grey88', '#d480': 'gray89', '#d481': 'grey89', '#d521': 'grey71', '#d520': 'gray71', '#d523': 'grey70', '#d522': 'gray70', '#d525': 'grey69', '#d524': 'gray69', '#d488': 'grey86', '#d489': 'gray85', '#d430': 'OrangeRed', '#d660': 'gray4', '#d169': 'SteelBlue1', '#d168': 'SteelBlue', '#d661': 'grey4', '#d161': 'DodgerBlue', '#d160': 'SlateGrey', '#d163': 'DodgerBlue2', '#d162': 'DodgerBlue1', '#d165': 'DodgerBlue3', '#d164': 'DodgerBlue4', '#d167': 'SteelBlue4', '#d166': 'AliceBlue', '#d635': 'grey17', '#d634': 'gray17', '#d637': 'grey16', '#d636': 'gray16', '#d631': 'grey19', '#d630': 'gray19', '#d633': 'grey18', '#d632': 'gray18', '#d639': 'grey15', '#d638': 'gray15', '#d368': 'PapayaWhip', '#d222': 'cyan', '#d223': 'cyan1', '#d220': 'LightCyan4', '#d221': 'aqua', '#d226': 'DarkSlateGray4', '#d227': 'cyan3', '#d224': 'PaleTurquoise4', '#d225': 'cyan2', '#d228': 'cyan4', '#d229': 'DarkCyan', '#d590': 'gray39', '#d538': 'gray63', '#d539': 'grey63', '#d591': 'grey39', '#d451': 'MistyRose', '#d450': 'MistyRose2', '#d453': 'salmon', '#d452': 'MistyRose1', '#d455': 'white', '#d454': 'MistyRose3', '#d457': 'grey100', '#d456': 'gray100', '#d459': 'gray99', '#d458': 'grey100', '#d592': 'gray38', '#d593': 'grey38', '#d594': 'gray37', '#d595': 'grey37', '#d596': 'gray36', '#d597': 'grey36', '#d297': 'YellowGreen', '#d296': 'OliveDrab3', '#d295': 'OliveDrab2', '#d294': 'OliveDrab1', '#d293': 'OliveDrab', '#d292': 'DarkOliveGreen', '#d291': 'DarkOliveGreen4', '#d290': 'DarkOliveGreen2', '#d356': 'wheat2', '#d357': 'OldLace', '#d354': 'DarkGoldenrod4', '#d355': 'FloralWhite', '#d352': 'DarkGoldenrod2', '#d353': 'DarkGoldenrod3', '#d299': 'ivory', '#d298': 'OliveDrab4', '#d468': 'gray95', '#d534': 'gray65', '#d535': 'grey65', '#d52': 'LavenderBlush2', '#d53': 'LavenderBlush4', '#d50': 'LavenderBlush1', '#d51': 'LavenderBlush3', '#d56': 'VioletRed3', '#d57': 'VioletRed1', '#d54': 'maroon', '#d55': 'HotPink3', '#d58': 'VioletRed2', '#d59': 'VioletRed4', '#d469': 'grey95', '#d558': 'gray53', '#d559': 'grey53', '#d576': 'gray45', '#d577': 'grey45', '#d574': 'gray46', '#d575': 'grey46', '#d572': 'gray47', '#d573': 'grey47', '#d570': 'gray48', '#d571': 'grey48', '#d671': 'opaque', '#d670': 'grey0', '#d673': 'transparent', '#d672': 'none', '#d578': 'gray44', '#d579': 'grey44', '#d589': 'grey40', '#d588': 'gray40', '#d4': 'RosyBrown2', '#d5': 'snow3', '#d6': 'LightCoral', '#d7': 'IndianRed1', '#d0': 'snow', '#d1': 'snow1', '#d2': 'snow2', '#d3': 'RosyBrown1', '#d8': 'RosyBrown3', '#d9': 'IndianRed2', '#d136': 'MediumBlue', '#d137': 'blue4', '#d134': 'blue2', '#d135': 'blue3', '#d132': 'blue', '#d133': 'blue1', '#d130': 'GhostWhite', '#d131': 'lavender', '#d583': 'grey42', '#d138': 'DarkBlue', '#d139': 'MidnightBlue', '#d312': 'yellow1', '#d313': 'yellow2', '#d310': 'LightYellow4', '#d311': 'yellow', '#d316': 'olive', '#d317': 'DarkKhaki', '#d314': 'yellow3', '#d315': 'yellow4', '#d318': 'khaki2', '#d319': 'LemonChiffon4', '#d259': 'DarkSeaGreen1', '#d258': 'honeydew2', '#d253': 'SeaGreen4', '#d252': 'SeaGreen1', '#d251': 'SeaGreen3', '#d250': 'SeaGreen', '#d257': 'honeydew1', '#d256': 'honeydew', '#d255': 'MediumForestGreen', '#d254': 'SeaGreen2', '#d345': 'goldenrod', '#d344': 'cornsilk1', '#d612': 'gray28', '#d347': 'goldenrod2', '#d461': 'gray98', '#d346': 'goldenrod1', '#d479': 'grey90', '#d341': 'cornsilk3', '#d478': 'gray90', '#d340': 'LightGoldenrod2', '#d343': 'cornsilk', '#d342': 'cornsilk2', '#d528': 'gray67', '#d408': 'seashell4', '#d409': 'seashell2', '#d406': 'PeachPuff3', '#d407': 'SandyBrown', '#d404': 'PeachPuff4', '#d405': 'PeachPuff2', '#d402': 'PeachPuff', '#d403': 'PeachPuff1', '#d400': 'tan3', '#d401': 'tan4', '#d552': 'gray56', '#d460': 'grey99', '#d16': 'firebrick2', '#d17': 'snow4', '#d14': 'IndianRed', '#d15': 'IndianRed3', '#d12': 'firebrick1', '#d13': 'brown2', '#d10': 'RosyBrown', '#d11': 'brown1', '#d532': 'gray66', '#d533': 'grey66', '#d530': 'DarkGray', '#d531': 'DarkGrey', '#d536': 'gray64', '#d537': 'grey64', '#d18': 'brown3', '#d19': 'red', '#d329': 'MediumGoldenRod', '#d328': 'LemonChiffon2', '#d178': 'LightSkyBlue1', '#d179': 'LightSkyBlue2', '#d172': 'SkyBlue4', '#d173': 'SkyBlue1', '#d170': 'SteelBlue2', '#d171': 'SteelBlue3', '#d176': 'LightSkyBlue', '#d177': 'LightSkyBlue4', '#d174': 'SkyBlue2', '#d175': 'SkyBlue3', '#d626': 'gray21', '#d627': 'grey21', '#d624': 'gray22', '#d625': 'grey22', '#d622': 'gray23', '#d623': 'grey23', '#d620': 'gray24', '#d621': 'grey24', '#d628': 'gray20', '#d629': 'grey20', '#d219': 'azure4', '#d218': 'DarkSlateGray3', '#d217': 'PaleTurquoise3', '#d216': 'DarkSlateGray2', '#d215': 'LightCyan3', '#d214': 'azure3', '#d213': 'DarkSlateGray1', '#d212': 'PaleTurquoise2', '#d211': 'PaleTurquoise', '#d210': 'PaleTurquoise1', '#d669': 'gray0', '#d582': 'gray42', '#d442': 'coral3', '#d443': 'coral4', '#d440': 'coral1', '#d441': 'coral2', '#d446': 'tomato1', '#d447': 'tomato2', '#d444': 'tomato4', '#d445': 'tomato', '#d448': 'tomato3', '#d449': 'MistyRose4', '#d280': 'DarkGreen', '#d281': 'LawnGreen', '#d282': 'chartreuse', '#d283': 'chartreuse1', '#d284': 'chartreuse2', '#d285': 'chartreuse3', '#d286': 'chartreuse4', '#d287': 'GreenYellow', '#d288': 'DarkOliveGreen3', '#d289': 'DarkOliveGreen1', '#d361': 'orange', '#d360': 'wheat3', '#d367': 'moccasin', '#d366': 'wheat4', '#d365': 'orange4', '#d364': 'orange3', '#d49': 'LavenderBlush', '#d48': 'PaleVioletRed3', '#d45': 'PaleVioletRed', '#d44': 'PaleVioletRed4', '#d47': 'PaleVioletRed1', '#d46': 'PaleVioletRed2', '#d41': 'pink2', '#d40': 'pink1', '#d43': 'pink4', '#d42': 'pink3', '#d358': 'wheat', '#d527': 'grey68', '#d526': 'gray68', '#d614': 'gray27', '#d543': 'grey61', '#d542': 'gray61', '#d541': 'grey62', '#d540': 'gray62', '#d547': 'grey59', '#d546': 'gray59', '#d545': 'grey60', '#d544': 'gray60', '#d662': 'gray3', '#d663': 'grey3', '#d549': 'grey58', '#d548': 'gray58', '#d666': 'gray1', '#d667': 'grey1', '#d664': 'gray2', '#d665': 'grey2', '#d103': 'MediumOrchid4', '#d102': 'MediumOrchid3', '#d101': 'MediumOrchid2', '#d100': 'MediumOrchid1', '#d107': 'DarkOrchid3', '#d106': 'DarkOrchid1', '#d105': 'DarkOrchid', '#d104': 'DarkViolet', '#d109': 'DarkOrchid4', '#d108': 'DarkOrchid2', '#d244': 'SpringGreen', '#d245': 'SpringGreen1', '#d246': 'SpringGreen2', '#d247': 'SpringGreen3', '#d240': 'aquamarine3', '#d241': 'MediumAquamarine', '#d242': 'MediumSpringGreen', '#d243': 'MintCream', '#d327': 'LemonChiffon3', '#d326': 'khaki', '#d325': 'LemonChiffon1', '#d324': 'LemonChiffon', '#d248': 'SpringGreen4', '#d249': 'MediumSeaGreen', '#d321': 'khaki3', '#d320': 'khaki1', '#d350': 'DarkGoldenrod', '#d439': 'salmon4', '#d438': 'salmon3', '#d98': 'purple', '#d99': 'MediumOrchid', '#d96': 'DarkMagenta', '#d97': 'magenta4', '#d94': 'magenta2', '#d95': 'magenta3', '#d92': 'magenta1', '#d93': 'plum4', '#d90': 'fuchsia', '#d91': 'magenta', '#d433': 'OrangeRed3', '#d432': 'OrangeRed2', '#d431': 'OrangeRed1', '#d74': 'VioletRed', '#d75': 'orchid2', '#d76': 'orchid', '#d77': 'orchid1', '#d70': 'maroon2', '#d71': 'maroon3', '#d72': 'maroon4', '#d73': 'MediumVioletRed', '#d437': 'salmon2', '#d78': 'orchid3', '#d79': 'orchid4', '#d436': 'salmon1', '#d435': 'DarkSalmon', '#d434': 'OrangeRed4', '#d507': 'gray77', '#d506': 'grey78', '#d505': 'gray78', '#d504': 'grey79', '#d503': 'gray79', '#d502': 'grey80', '#d501': 'gray80', '#d500': 'grey81', '#d509': 'gray76', '#d508': 'grey77', '#d473': 'grey93', '#d369': 'NavajoWhite3', '#d147': 'CornflowerBlue', '#d146': 'RoyalBlue4', '#d145': 'RoyalBlue3', '#d144': 'RoyalBlue2', '#d143': 'RoyalBlue1', '#d142': 'RoyalBlue', '#d141': 'NavyBlue', '#d140': 'navy', '#d149': 'LightSteelBlue1', '#d148': 'LightSteelBlue', '#d472': 'gray93', '#d613': 'grey28', '#d363': 'orange2', '#d611': 'grey29', '#d610': 'gray29', '#d617': 'grey26', '#d616': 'gray26', '#d615': 'grey27', '#d362': 'orange1', '#d619': 'grey25', '#d618': 'gray25', '#d208': 'azure2', '#d209': 'LightCyan2', '#d200': 'turquoise4', '#d201': 'cadet blue', '#d202': 'CadetBlue', '#d203': 'DarkTurquoise', '#d204': 'azure', '#d205': 'azure1', '#d206': 'LightCyan', '#d207': 'LightCyan1', '#d608': 'gray30', '#d609': 'grey30', '#d374': 'NavajoWhite4', '#d375': 'AntiqueWhite4', '#d376': 'AntiqueWhite', '#d377': 'tan', '#d370': 'BlanchedAlmond', '#d371': 'NavajoWhite', '#d372': 'NavajoWhite1', '#d373': 'NavajoWhite2', '#d477': 'grey91', '#d476': 'gray91', '#d475': 'grey92', '#d474': 'gray92', '#d378': 'bisque4', '#d379': 'burlywood', '#d471': 'grey94', '#d470': 'gray94', '#d279': 'green', '#d278': 'green4', '#d275': 'PaleGreen4', '#d274': 'green2', '#d277': 'ForestGreen', '#d276': 'green3', '#d271': 'lime', '#d270': 'green1', '#d273': 'DarkSeaGreen4', '#d272': 'LimeGreen', '#d38': 'pink', '#d39': 'crimson', '#d30': 'DarkRed', '#d31': 'red4', '#d32': 'maroon', '#d33': 'LightPink1', '#d34': 'LightPink3', '#d35': 'LightPink4', '#d36': 'LightPink2', '#d37': 'LightPink', '#d658': 'gray5', '#d389': 'bisque', '#d388': 'bisque2', '#d381': 'burlywood1', '#d380': 'AntiqueWhite2', '#d383': 'burlywood2', '#d382': 'burlywood3', '#d385': 'burlywood4', '#d384': 'AntiqueWhite1', '#d387': 'DarkOrange', '#d386': 'AntiqueWhite3', '#d189': 'LightBlue2', '#d188': 'LightBlue1', '#d183': 'DeepSkyBlue', '#d182': 'LightBlue3', '#d181': 'SkyBlue', '#d180': 'LightSkyBlue3', '#d187': 'DeepSkyBlue3', '#d186': 'DeepSkyBlue4', '#d185': 'DeepSkyBlue2', '#d184': 'DeepSkyBlue1', '#d657': 'grey6', '#d656': 'gray6', '#d655': 'grey7', '#d654': 'gray7', '#d653': 'grey8', '#d652': 'gray8', '#d651': 'grey9', '#d650': 'gray9', '#d550': 'gray57', '#d659': 'grey5', '#d551': 'grey57', '#d495': 'LightGray', '#d494': 'grey83', '#d497': 'gray82', '#d496': 'LightGrey', '#d491': 'gray84', '#d490': 'grey85', '#d493': 'gray83', '#d492': 'grey84', '#d554': 'gray55', '#d555': 'grey55', '#d556': 'gray54', '#d557': 'grey54', '#d499': 'gray81', '#d498': 'grey82', '#d323': 'PaleGoldenrod', '#d553': 'grey56'}
diff --git a/frontend/imgrid/colors/colors/js/colordictionaries2.js b/frontend/imgrid/colors/colors/js/colordictionaries2.js
new file mode 100755
index 0000000..a4acbf2
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/colordictionaries2.js
@@ -0,0 +1,3 @@
+rgbtohex = {'rgb(255, 235, 205)': '#FFEBCD', 'rgb(205, 155, 155)': '#CD9B9B', 'rgb(0, 0, 128)': '#000080', 'rgb(179, 238, 58)': '#B3EE3A', 'rgb(205, 51, 51)': '#CD3333', 'rgb(118, 238, 198)': '#76EEC6', 'rgb(214, 214, 214)': '#D6D6D6', 'rgb(189, 189, 189)': '#BDBDBD', 'rgb(139, 131, 120)': '#8B8378', 'rgb(0, 238, 238)': '#00EEEE', 'rgb(137, 104, 205)': '#8968CD', 'rgb(85, 107, 47)': '#556B2F', 'rgb(107, 107, 107)': '#6B6B6B', 'rgb(205, 205, 180)': '#CDCDB4', 'rgb(218, 112, 214)': '#DA70D6', 'rgb(34, 139, 34)': '#228B22', 'rgb(245, 222, 179)': '#F5DEB3', 'rgb(139, 90, 43)': '#8B5A2B', 'rgb(255, 246, 143)': '#FFF68F', 'rgb(205, 91, 69)': '#CD5B45', 'rgb(255, 187, 255)': '#FFBBFF', 'rgb(162, 181, 205)': '#A2B5CD', 'rgb(238, 118, 0)': '#EE7600', 'rgb(238, 154, 73)': '#EE9A49', 'rgb(194, 194, 194)': '#C2C2C2', 'rgb(184, 134, 11)': '#B8860B', 'rgb(93, 71, 139)': '#5D478B', 'rgb(255, 182, 193)': '#FFB6C1', 'rgb(139, 69, 0)': '#8B4500', 'rgb(105, 89, 205)': '#6959CD', 'rgb(238, 173, 14)': '#EEAD0E', 'rgb(151, 255, 255)': '#97FFFF', 'rgb(205, 150, 205)': '#CD96CD', 'rgb(255, 69, 0)': '#FF4500', 'rgb(0, 134, 139)': '#00868B', 'rgb(0, 238, 0)': '#00EE00', 'rgb(255, 106, 106)': '#FF6A6A', 'rgb(186, 186, 186)': '#BABABA', 'rgb(143, 188, 143)': '#8FBC8F', 'rgb(139, 99, 108)': '#8B636C', 'rgb(224, 102, 255)': '#E066FF', 'rgb(100, 149, 237)': '#6495ED', 'rgb(0, 139, 69)': '#008B45', 'rgb(178, 223, 238)': '#B2DFEE', 'rgb(205, 192, 176)': '#CDC0B0', 'rgb(0, 206, 209)': '#00CED1', 'rgb(104, 131, 139)': '#68838B', 'rgb(155, 205, 155)': '#9BCD9B', 'rgb(139, 76, 57)': '#8B4C39', 'rgb(205, 149, 12)': '#CD950C', 'rgb(67, 205, 128)': '#43CD80', 'rgb(54, 54, 54)': '#363636', 'rgb(0, 205, 205)': '#00CDCD', 'rgb(99, 184, 255)': '#63B8FF', 'rgb(238, 233, 233)': '#EEE9E9', 'rgb(205, 201, 201)': '#CDC9C9', 'rgb(156, 156, 156)': '#9C9C9C', 'rgb(139, 125, 123)': '#8B7D7B', 'rgb(148, 148, 148)': '#949494', 'rgb(102, 205, 170)': '#66CDAA', 'rgb(139, 54, 38)': '#8B3626', 'rgb(255, 181, 197)': '#FFB5C5', 'rgb(173, 216, 230)': '#ADD8E6', 'rgb(46, 46, 46)': '#2E2E2E', 'rgb(164, 211, 238)': '#A4D3EE', 'rgb(232, 232, 232)': '#E8E8E8', 'rgb(105, 105, 105)': '#696969', 'rgb(205, 193, 197)': '#CDC1C5', 'rgb(20, 20, 20)': '#141414', 'rgb(139, 139, 131)': '#8B8B83', 'rgb(255, 114, 86)': '#FF7256', 'rgb(0, 104, 139)': '#00688B', 'rgb(205, 41, 144)': '#CD2990', 'rgb(127, 127, 127)': '#7F7F7F', 'rgb(255, 239, 213)': '#FFEFD5', 'rgb(238, 238, 209)': '#EEEED1', 'rgb(242, 242, 242)': '#F2F2F2', 'rgb(240, 230, 140)': '#F0E68C', 'rgb(238, 207, 161)': '#EECFA1', 'rgb(25, 25, 112)': '#191970', 'rgb(205, 79, 57)': '#CD4F39', 'rgb(84, 84, 84)': '#545454', 'rgb(110, 139, 61)': '#6E8B3D', 'rgb(255, 215, 0)': '#FFD700', 'rgb(143, 143, 143)': '#8F8F8F', 'rgb(238, 59, 59)': '#EE3B3B', 'rgb(166, 166, 166)': '#A6A6A6', 'rgb(255, 160, 122)': '#FFA07A', 'rgb(51, 51, 51)': '#333333', 'rgb(224, 238, 224)': '#E0EEE0', 'rgb(139, 121, 94)': '#8B795E', 'rgb(110, 123, 139)': '#6E7B8B', 'rgb(26, 26, 26)': '#1A1A1A', 'rgb(238, 99, 99)': '#EE6363', 'rgb(178, 58, 238)': '#B23AEE', 'rgb(238, 197, 145)': '#EEC591', 'rgb(171, 171, 171)': '#ABABAB', 'rgb(237, 237, 237)': '#EDEDED', 'rgb(238, 0, 0)': '#EE0000', 'rgb(139, 71, 38)': '#8B4726', 'rgb(82, 139, 139)': '#528B8B', 'rgb(139, 105, 105)': '#8B6969', 'rgb(160, 32, 240)': '#A020F0', 'rgb(78, 238, 148)': '#4EEE94', 'rgb(205, 85, 85)': '#CD5555', 'rgb(205, 181, 205)': '#CDB5CD', 'rgb(184, 184, 184)': '#B8B8B8', 'rgb(255, 222, 173)': '#FFDEAD', 'rgb(8, 8, 8)': '#080808', 'rgb(255, 248, 220)': '#FFF8DC', 'rgb(175, 238, 238)': '#AFEEEE', 'rgb(255, 130, 71)': '#FF8247', 'rgb(13, 13, 13)': '#0D0D0D', 'rgb(0, 139, 139)': '#008B8B', 'rgb(187, 255, 255)': '#BBFFFF', 'rgb(147, 112, 219)': '#9370DB', 'rgb(0, 128, 0)': '#008000', 'rgb(238, 64, 0)': '#EE4000', 'rgb(238, 18, 137)': '#EE1289', 'rgb(54, 100, 139)': '#36648B', 'rgb(176, 176, 176)': '#B0B0B0', 'rgb(0, 0, 238)': '#0000EE', 'rgb(238, 154, 0)': '#EE9A00', 'rgb(188, 143, 143)': '#BC8F8F', 'rgb(240, 255, 255)': '#F0FFFF', 'rgb(191, 62, 255)': '#BF3EFF', 'rgb(171, 130, 255)': '#AB82FF', 'rgb(205, 173, 0)': '#CDAD00', 'rgb(255, 48, 48)': '#FF3030', 'rgb(122, 197, 205)': '#7AC5CD', 'rgb(139, 87, 66)': '#8B5742', 'rgb(204, 204, 204)': '#CCCCCC', 'rgb(205, 129, 98)': '#CD8162', 'rgb(224, 224, 224)': '#E0E0E0', 'rgb(218, 165, 32)': '#DAA520', 'rgb(205, 145, 158)': '#CD919E', 'rgb(139, 62, 47)': '#8B3E2F', 'rgb(238, 122, 233)': '#EE7AE9', 'rgb(152, 251, 152)': '#98FB98', 'rgb(240, 128, 128)': '#F08080', 'rgb(162, 205, 90)': '#A2CD5A', 'rgb(79, 79, 79)': '#4F4F4F', 'rgb(169, 169, 169)': '#A9A9A9', 'rgb(255, 127, 0)': '#FF7F00', 'rgb(139, 28, 98)': '#8B1C62', 'rgb(253, 245, 230)': '#FDF5E6', 'rgb(141, 238, 238)': '#8DEEEE', 'rgb(238, 213, 210)': '#EED5D2', 'rgb(208, 32, 144)': '#D02090', 'rgb(0, 205, 0)': '#00CD00', 'rgb(139, 71, 137)': '#8B4789', 'rgb(205, 201, 165)': '#CDC9A5', 'rgb(0, 229, 238)': '#00E5EE', 'rgb(205, 140, 149)': '#CD8C95', 'rgb(124, 205, 124)': '#7CCD7C', 'rgb(220, 220, 220)': '#DCDCDC', 'rgb(238, 229, 222)': '#EEE5DE', 'rgb(87, 87, 87)': '#575757', 'rgb(70, 130, 180)': '#4682B4', 'rgb(205, 104, 137)': '#CD6889', 'rgb(15, 15, 15)': '#0F0F0F', 'rgb(38, 38, 38)': '#262626', 'rgb(238, 180, 34)': '#EEB422', 'rgb(205, 200, 177)': '#CDC8B1', 'rgb(238, 210, 238)': '#EED2EE', 'rgb(150, 150, 150)': '#969696', 'rgb(0, 255, 127)': '#00FF7F', 'rgb(139, 126, 102)': '#8B7E66', 'rgb(205, 175, 149)': '#CDAF95', 'rgb(152, 245, 255)': '#98F5FF', 'rgb(0, 250, 154)': '#00FA9A', 'rgb(120, 120, 120)': '#787878', 'rgb(238, 118, 33)': '#EE7621', 'rgb(128, 128, 0)': '#808000', 'rgb(139, 137, 112)': '#8B8970', 'rgb(107, 142, 35)': '#6B8E23', 'rgb(219, 219, 219)': '#DBDBDB', 'rgb(205, 205, 0)': '#CDCD00', 'rgb(180, 205, 205)': '#B4CDCD', 'rgb(115, 115, 115)': '#737373', 'rgb(131, 139, 139)': '#838B8B', 'rgb(0, 178, 238)': '#00B2EE', 'rgb(94, 94, 94)': '#5E5E5E', 'rgb(135, 135, 135)': '#878787', 'rgb(145, 145, 145)': '#919191', 'rgb(205, 0, 0)': '#CD0000', 'rgb(16, 78, 139)': '#104E8B', 'rgb(133, 133, 133)': '#858585', 'rgb(205, 38, 38)': '#CD2626', 'rgb(255, 193, 193)': '#FFC1C1', 'rgb(205, 183, 181)': '#CDB7B5', 'rgb(122, 55, 139)': '#7A378B', 'rgb(154, 192, 205)': '#9AC0CD', 'rgb(191, 239, 255)': '#BFEFFF', 'rgb(219, 112, 147)': '#DB7093', 'rgb(121, 205, 205)': '#79CDCD', 'rgb(238, 232, 170)': '#EEE8AA', 'rgb(102, 205, 0)': '#66CD00', 'rgb(255, 185, 15)': '#FFB90F', 'rgb(176, 196, 222)': '#B0C4DE', 'rgb(255, 236, 139)': '#FFEC8B', 'rgb(205, 105, 201)': '#CD69C9', 'rgb(250, 250, 250)': '#FAFAFA', 'rgb(245, 245, 220)': '#F5F5DC', 'rgb(238, 106, 80)': '#EE6A50', 'rgb(64, 64, 64)': '#404040', 'rgb(238, 220, 130)': '#EEDC82', 'white': '#000000', 'rgb(125, 38, 205)': '#7D26CD', 'rgb(205, 133, 63)': '#CD853F', 'rgb(139, 102, 139)': '#8B668B', 'rgb(71, 71, 71)': '#474747', 'rgb(118, 238, 0)': '#76EE00', 'rgb(192, 255, 62)': '#C0FF3E', 'rgb(0, 0, 139)': '#00008B', 'rgb(248, 248, 255)': '#F8F8FF', 'rgb(3, 3, 3)': '#030303', 'rgb(176, 226, 255)': '#B0E2FF', 'rgb(139, 105, 20)': '#8B6914', 'rgb(255, 105, 180)': '#FF69B4', 'rgb(124, 252, 0)': '#7CFC00', 'rgb(238, 238, 224)': '#EEEEE0', 'rgb(139, 69, 19)': '#8B4513', 'rgb(139, 0, 139)': '#8B008B', 'rgb(31, 31, 31)': '#1F1F1F', 'rgb(159, 182, 205)': '#9FB6CD', 'rgb(181, 181, 181)': '#B5B5B5', 'rgb(0, 245, 255)': '#00F5FF', 'rgb(105, 139, 105)': '#698B69', 'rgb(159, 121, 238)': '#9F79EE', 'rgb(205, 198, 115)': '#CDC673', 'rgb(77, 77, 77)': '#4D4D4D', 'rgb(139, 90, 0)': '#8B5A00', 'rgb(122, 122, 122)': '#7A7A7A', 'rgb(224, 238, 238)': '#E0EEEE', 'rgb(50, 129, 75)': '#32814B', 'rgb(202, 225, 255)': '#CAE1FF', 'rgb(255, 110, 180)': '#FF6EB4', 'rgb(238, 48, 167)': '#EE30A7', 'rgb(220, 20, 60)': '#DC143C', 'rgb(127, 255, 212)': '#7FFFD4', 'rgb(205, 179, 139)': '#CDB38B', 'rgb(28, 28, 28)': '#1C1C1C', 'rgb(229, 229, 229)': '#E5E5E5', 'rgb(47, 79, 79)': '#2F4F4F', 'rgb(59, 59, 59)': '#3B3B3B', 'rgb(69, 139, 116)': '#458B74', 'rgb(255, 211, 155)': '#FFD39B', 'rgb(139, 119, 101)': '#8B7765', 'rgb(238, 230, 133)': '#EEE685', 'rgb(10, 10, 10)': '#0A0A0A', 'rgb(144, 238, 144)': '#90EE90', 'rgb(99, 99, 99)': '#636363', 'rgb(188, 238, 104)': '#BCEE68', 'rgb(255, 231, 186)': '#FFE7BA', 'rgb(154, 50, 205)': '#9A32CD', 'rgb(46, 139, 87)': '#2E8B57', 'rgb(145, 44, 238)': '#912CEE', 'rgb(255, 240, 245)': '#FFF0F5', 'rgb(67, 110, 238)': '#436EEE', 'rgb(238, 180, 180)': '#EEB4B4', 'rgb(108, 166, 205)': '#6CA6CD', 'rgb(173, 173, 173)': '#ADADAD', 'rgb(176, 48, 96)': '#B03060', 'rgb(23, 23, 23)': '#171717', 'rgb(138, 138, 138)': '#8A8A8A', 'rgb(139, 137, 137)': '#8B8989', 'rgb(209, 193, 102)': '#D1C166', 'rgb(139, 123, 139)': '#8B7B8B', 'rgb(154, 255, 154)': '#9AFF9A', 'rgb(130, 130, 130)': '#828282', 'rgb(255, 99, 71)': '#FF6347', 'rgb(205, 183, 158)': '#CDB79E', 'rgb(205, 102, 29)': '#CD661D', 'rgb(128, 0, 0)': '#800000', 'rgb(0, 0, 255)': '#0000FF', 'rgb(255, 52, 179)': '#FF34B3', 'rgb(250, 235, 215)': '#FAEBD7', 'rgb(163, 163, 163)': '#A3A3A3', 'rgb(56, 56, 56)': '#383838', 'rgb(85, 26, 139)': '#551A8B', 'rgb(139, 58, 58)': '#8B3A3A', 'rgb(168, 168, 168)': '#A8A8A8', 'rgb(255, 225, 255)': '#FFE1FF', 'rgb(125, 125, 125)': '#7D7D7D', 'rgb(131, 111, 255)': '#836FFF', 'rgb(95, 158, 160)': '#5F9EA0', 'rgb(165, 42, 42)': '#A52A2A', 'rgb(245, 255, 250)': '#F5FFFA', 'rgb(255, 218, 185)': '#FFDAB9', 'rgb(255, 228, 225)': '#FFE4E1', 'rgb(216, 191, 216)': '#D8BFD8', 'rgb(139, 101, 8)': '#8B6508', 'rgb(205, 104, 57)': '#CD6839', 'rgb(255, 131, 250)': '#FF83FA', 'rgb(82, 82, 82)': '#525252', 'rgb(117, 117, 117)': '#757575', 'rgb(255, 165, 0)': '#FFA500', 'rgb(255, 64, 64)': '#FF4040', 'rgb(255, 165, 79)': '#FFA54F', 'rgb(205, 55, 0)': '#CD3700', 'rgb(188, 210, 238)': '#BCD2EE', 'rgb(238, 121, 159)': '#EE799F', 'rgb(5, 5, 5)': '#050505', 'rgb(217, 217, 217)': '#D9D9D9', 'rgb(205, 186, 150)': '#CDBA96', 'rgb(139, 131, 134)': '#8B8386', 'rgb(185, 211, 238)': '#B9D3EE', 'rgb(235, 235, 235)': '#EBEBEB', 'rgb(230, 230, 250)': '#E6E6FA', 'rgb(41, 41, 41)': '#292929', 'rgb(205, 92, 92)': '#CD5C5C', 'rgb(131, 139, 131)': '#838B83', 'rgb(123, 104, 238)': '#7B68EE', 'rgb(128, 0, 128)': '#800080', 'rgb(139, 26, 26)': '#8B1A1A', 'rgb(141, 182, 205)': '#8DB6CD', 'rgb(212, 212, 212)': '#D4D4D4', 'rgb(238, 162, 173)': '#EEA2AD', 'rgb(255, 255, 0)': '#FFFF00', 'rgb(192, 192, 192)': '#C0C0C0', 'rgb(139, 71, 93)': '#8B475D', 'rgb(0, 100, 0)': '#006400', 'rgb(139, 37, 0)': '#8B2500', 'rgb(198, 226, 255)': '#C6E2FF', 'rgb(24, 116, 205)': '#1874CD', 'rgb(178, 34, 34)': '#B22222', 'rgb(28, 134, 238)': '#1C86EE', 'rgb(255, 0, 255)': '#FF00FF', 'rgb(33, 33, 33)': '#212121', 'rgb(209, 238, 238)': '#D1EEEE', 'rgb(255, 127, 80)': '#FF7F50', 'rgb(0, 154, 205)': '#009ACD', 'rgb(255, 255, 224)': '#FFFFE0', 'rgb(75, 0, 130)': '#4B0082', 'rgb(160, 82, 45)': '#A0522D', 'rgb(138, 43, 226)': '#8A2BE2', 'rgb(238, 224, 229)': '#EEE0E5', 'rgb(106, 90, 205)': '#6A5ACD', 'rgb(227, 227, 227)': '#E3E3E3', 'rgb(255, 250, 250)': '#FFFAFA', 'rgb(255, 174, 185)': '#FFAEB9', 'rgb(205, 0, 205)': '#CD00CD', 'rgb(126, 126, 126)': '#7E7E7E', 'rgb(139, 10, 80)': '#8B0A50', 'rgb(186, 85, 211)': '#BA55D3', 'rgb(205, 133, 0)': '#CD8500', 'rgb(211, 211, 211)': '#D3D3D3', 'rgb(69, 69, 69)': '#454545', 'rgb(222, 222, 222)': '#DEDEDE', 'rgb(221, 160, 221)': '#DDA0DD', 'rgb(255, 255, 240)': '#FFFFF0', 'rgb(112, 112, 112)': '#707070', 'rgb(209, 95, 238)': '#D15FEE', 'rgb(0, 255, 0)': '#00FF00', 'rgb(238, 233, 191)': '#EEE9BF', 'rgb(92, 92, 92)': '#5C5C5C', 'rgb(205, 112, 84)': '#CD7054', 'rgb(255, 228, 196)': '#FFE4C4', 'rgb(255, 192, 203)': '#FFC0CB', 'rgb(238, 130, 238)': '#EE82EE', 'rgb(122, 103, 238)': '#7A67EE', 'rgb(238, 121, 66)': '#EE7942', 'rgb(102, 139, 139)': '#668B8B', 'rgb(250, 240, 230)': '#FAF0E6', 'rgb(247, 247, 247)': '#F7F7F7', 'rgb(32, 178, 170)': '#20B2AA', 'rgb(97, 97, 97)': '#616161', 'rgb(150, 205, 205)': '#96CDCD', 'rgb(158, 158, 158)': '#9E9E9E', 'rgb(238, 58, 140)': '#EE3A8C', 'rgb(255, 228, 181)': '#FFE4B5', 'rgb(0, 197, 205)': '#00C5CD', 'rgb(205, 96, 144)': '#CD6090', 'rgb(205, 16, 118)': '#CD1076', 'rgb(240, 240, 240)': '#F0F0F0', 'rgb(176, 224, 230)': '#B0E0E6', 'rgb(199, 21, 133)': '#C71585', 'rgb(238, 203, 173)': '#EECBAD', 'rgb(173, 255, 47)': '#ADFF2F', 'rgb(238, 174, 238)': '#EEAEEE', 'rgb(191, 191, 191)': '#BFBFBF', 'rgb(222, 184, 135)': '#DEB887', 'rgb(18, 18, 18)': '#121212', 'rgb(83, 134, 139)': '#53868B', 'rgb(139, 134, 130)': '#8B8682', 'rgb(142, 229, 238)': '#8EE5EE', 'rgb(0, 139, 0)': '#008B00', 'rgb(240, 255, 240)': '#F0FFF0', 'rgb(104, 34, 139)': '#68228B', 'rgb(193, 255, 193)': '#C1FFC1', 'rgb(0, 0, 0)': '#000000', 'rgb(139, 58, 98)': '#8B3A62', 'rgb(89, 89, 89)': '#595959', 'rgb(72, 118, 255)': '#4876FF', 'rgb(108, 123, 139)': '#6C7B8B', 'rgb(255, 20, 147)': '#FF1493', 'rgb(255, 250, 240)': '#FFFAF0', 'rgb(132, 112, 255)': '#8470FF', 'rgb(255, 62, 150)': '#FF3E96', 'rgb(139, 125, 107)': '#8B7D6B', 'rgb(64, 224, 208)': '#40E0D0', 'rgb(148, 0, 211)': '#9400D3', 'rgb(238, 106, 167)': '#EE6AA7', 'rgb(238, 44, 44)': '#EE2C2C', 'rgb(72, 209, 204)': '#48D1CC', 'rgb(205, 155, 29)': '#CD9B1D', 'rgb(139, 0, 0)': '#8B0000', 'rgb(238, 92, 66)': '#EE5C42', 'rgb(238, 216, 174)': '#EED8AE', 'rgb(65, 105, 225)': '#4169E1', 'rgb(0, 205, 102)': '#00CD66', 'rgb(96, 123, 139)': '#607B8B', 'rgb(210, 180, 140)': '#D2B48C', 'rgb(135, 206, 255)': '#87CEFF', 'rgb(252, 252, 252)': '#FCFCFC', 'rgb(61, 61, 61)': '#3D3D3D', 'rgb(205, 102, 0)': '#CD6600', 'rgb(58, 95, 205)': '#3A5FCD', 'rgb(30, 144, 255)': '#1E90FF', 'rgb(245, 245, 245)': '#F5F5F5', 'rgb(255, 130, 171)': '#FF82AB', 'rgb(60, 179, 113)': '#3CB371', 'rgb(139, 139, 122)': '#8B8B7A', 'rgb(139, 136, 120)': '#8B8878', 'rgb(139, 34, 82)': '#8B2252', 'rgb(238, 223, 204)': '#EEDFCC', 'rgb(238, 213, 183)': '#EED5B7', 'rgb(250, 250, 210)': '#FAFAD2', 'rgb(255, 250, 205)': '#FFFACD', 'rgb(39, 64, 139)': '#27408B', 'rgb(84, 139, 84)': '#548B54', 'rgb(238, 221, 130)': '#EEDD82', 'rgb(139, 95, 101)': '#8B5F65', 'rgb(210, 105, 30)': '#D2691E', 'rgb(139, 139, 0)': '#8B8B00', 'rgb(238, 149, 114)': '#EE9572', 'rgb(0, 255, 255)': '#00FFFF', 'rgb(71, 60, 139)': '#473C8B', 'rgb(207, 207, 207)': '#CFCFCF', 'rgb(153, 50, 204)': '#9932CC', 'rgb(36, 36, 36)': '#242424', 'rgb(153, 153, 153)': '#999999', 'rgb(250, 128, 114)': '#FA8072', 'rgb(174, 238, 238)': '#AEEEEE', 'rgb(139, 117, 0)': '#8B7500', 'rgb(139, 35, 35)': '#8B2323', 'rgb(92, 172, 238)': '#5CACEE', 'rgb(48, 48, 48)': '#303030', 'rgb(139, 129, 76)': '#8B814C', 'rgb(72, 61, 139)': '#483D8B', 'rgb(238, 169, 184)': '#EEA9B8', 'rgb(69, 139, 0)': '#458B00', 'rgb(0, 128, 128)': '#008080', 'rgb(255, 255, 255)': '#FFFFFF', 'rgb(244, 164, 96)': '#F4A460', 'rgb(154, 205, 50)': '#9ACD32', 'rgb(126, 192, 238)': '#7EC0EE', 'rgb(209, 209, 209)': '#D1D1D1', 'rgb(74, 112, 139)': '#4A708B', 'rgb(112, 128, 144)': '#708090', 'rgb(105, 139, 34)': '#698B22', 'rgb(110, 110, 110)': '#6E6E6E', 'rgb(179, 179, 179)': '#B3B3B3', 'rgb(205, 50, 120)': '#CD3278', 'rgb(119, 136, 153)': '#778899', 'rgb(139, 115, 85)': '#8B7355', 'rgb(255, 193, 37)': '#FFC125', 'rgb(224, 255, 255)': '#E0FFFF', 'rgb(66, 66, 66)': '#424242', 'rgb(193, 205, 193)': '#C1CDC1', 'rgb(0, 191, 255)': '#00BFFF', 'rgb(205, 205, 193)': '#CDCDC1', 'rgb(238, 238, 0)': '#EEEE00', 'rgb(255, 140, 105)': '#FF8C69', 'rgb(135, 206, 235)': '#87CEEB', 'rgb(238, 201, 0)': '#EEC900', 'rgb(238, 232, 205)': '#EEE8CD', 'rgb(0, 0, 205)': '#0000CD', 'rgb(238, 130, 98)': '#EE8262', 'rgb(155, 48, 255)': '#9B30FF', 'rgb(43, 43, 43)': '#2B2B2B', 'rgb(240, 248, 255)': '#F0F8FF', 'rgb(238, 0, 238)': '#EE00EE', 'rgb(128, 128, 128)': '#808080', 'rgb(193, 205, 205)': '#C1CDCD', 'rgb(50, 205, 50)': '#32CD32', 'rgb(201, 201, 201)': '#C9C9C9', 'rgb(255, 239, 219)': '#FFEFDB', 'rgb(196, 196, 196)': '#C4C4C4', 'rgb(135, 206, 250)': '#87CEFA', 'rgb(139, 134, 78)': '#8B864E', 'rgb(79, 148, 205)': '#4F94CD', 'rgb(74, 74, 74)': '#4A4A4A', 'rgb(255, 0, 0)': '#FF0000', 'rgb(233, 150, 122)': '#E9967A', 'rgb(205, 190, 112)': '#CDBE70', 'rgb(84, 255, 159)': '#54FF9F', 'rgb(205, 170, 125)': '#CDAA7D', 'rgb(127, 255, 0)': '#7FFF00', 'rgb(102, 102, 102)': '#666666', 'rgb(180, 238, 180)': '#B4EEB4', 'rgb(122, 139, 139)': '#7A8B8B', 'rgb(255, 140, 0)': '#FF8C00', 'rgb(205, 197, 191)': '#CDC5BF', 'rgb(140, 140, 140)': '#8C8C8C', 'rgb(199, 199, 199)': '#C7C7C7', 'rgb(202, 255, 112)': '#CAFF70', 'rgb(255, 245, 238)': '#FFF5EE', 'rgb(189, 183, 107)': '#BDB76B', 'rgb(0, 238, 118)': '#00EE76', 'rgb(180, 82, 205)': '#B452CD', 'rgb(255, 127, 36)': '#FF7F24', 'rgb(161, 161, 161)': '#A1A1A1'}
+rgbtoname = {'rgb(255, 235, 205)': 'BlanchedAlmond', 'rgb(205, 155, 155)': 'RosyBrown3', 'rgb(0, 0, 128)': 'NavyBlue', 'rgb(179, 238, 58)': 'OliveDrab2', 'rgb(205, 51, 51)': 'brown3', 'rgb(118, 238, 198)': 'aquamarine2', 'rgb(214, 214, 214)': 'grey84', 'rgb(189, 189, 189)': 'grey74', 'rgb(139, 131, 120)': 'AntiqueWhite4', 'rgb(0, 238, 238)': 'cyan2', 'rgb(137, 104, 205)': 'MediumPurple3', 'rgb(85, 107, 47)': 'DarkOliveGreen', 'rgb(107, 107, 107)': 'grey42', 'rgb(205, 205, 180)': 'LightYellow3', 'rgb(218, 112, 214)': 'orchid', 'rgb(34, 139, 34)': 'ForestGreen', 'rgb(245, 222, 179)': 'wheat', 'rgb(139, 90, 43)': 'tan4', 'rgb(255, 246, 143)': 'khaki1', 'rgb(205, 91, 69)': 'coral3', 'rgb(255, 187, 255)': 'plum1', 'rgb(162, 181, 205)': 'LightSteelBlue3', 'rgb(238, 118, 0)': 'DarkOrange2', 'rgb(238, 154, 73)': 'tan2', 'rgb(194, 194, 194)': 'grey76', 'rgb(184, 134, 11)': 'DarkGoldenrod', 'rgb(93, 71, 139)': 'MediumPurple4', 'rgb(255, 182, 193)': 'LightPink', 'rgb(139, 69, 0)': 'DarkOrange4', 'rgb(105, 89, 205)': 'SlateBlue3', 'rgb(238, 173, 14)': 'DarkGoldenrod2', 'rgb(151, 255, 255)': 'DarkSlateGray1', 'rgb(205, 150, 205)': 'plum3', 'rgb(255, 69, 0)': 'OrangeRed1', 'rgb(0, 134, 139)': 'turquoise4', 'rgb(0, 238, 0)': 'green2', 'rgb(255, 106, 106)': 'IndianRed1', 'rgb(186, 186, 186)': 'grey73', 'rgb(143, 188, 143)': 'DarkSeaGreen', 'rgb(139, 99, 108)': 'pink4', 'rgb(224, 102, 255)': 'MediumOrchid1', 'rgb(100, 149, 237)': 'CornflowerBlue', 'rgb(0, 139, 69)': 'SpringGreen4', 'rgb(178, 223, 238)': 'LightBlue2', 'rgb(205, 192, 176)': 'AntiqueWhite3', 'rgb(0, 206, 209)': 'DarkTurquoise', 'rgb(104, 131, 139)': 'LightBlue4', 'rgb(155, 205, 155)': 'DarkSeaGreen3', 'rgb(139, 76, 57)': 'salmon4', 'rgb(205, 149, 12)': 'DarkGoldenrod3', 'rgb(67, 205, 128)': 'SeaGreen3', 'rgb(54, 54, 54)': 'grey21', 'rgb(0, 205, 205)': 'cyan3', 'rgb(99, 184, 255)': 'SteelBlue1', 'rgb(238, 233, 233)': 'snow2', 'rgb(205, 201, 201)': 'snow3', 'rgb(156, 156, 156)': 'grey61', 'rgb(139, 125, 123)': 'MistyRose4', 'rgb(148, 148, 148)': 'grey58', 'rgb(102, 205, 170)': 'MediumAquamarine', 'rgb(139, 54, 38)': 'tomato4', 'rgb(255, 181, 197)': 'pink1', 'rgb(173, 216, 230)': 'LightBlue', 'rgb(46, 46, 46)': 'grey18', 'rgb(164, 211, 238)': 'LightSkyBlue2', 'rgb(232, 232, 232)': 'grey91', 'rgb(105, 105, 105)': 'grey41', 'rgb(205, 193, 197)': 'LavenderBlush3', 'rgb(20, 20, 20)': 'grey8', 'rgb(139, 139, 131)': 'ivory4', 'rgb(255, 114, 86)': 'coral1', 'rgb(0, 104, 139)': 'DeepSkyBlue4', 'rgb(205, 41, 144)': 'maroon3', 'rgb(127, 127, 127)': 'grey50', 'rgb(255, 239, 213)': 'PapayaWhip', 'rgb(238, 238, 209)': 'LightYellow2', 'rgb(242, 242, 242)': 'grey95', 'rgb(240, 230, 140)': 'khaki', 'rgb(238, 207, 161)': 'NavajoWhite2', 'rgb(25, 25, 112)': 'MidnightBlue', 'rgb(205, 79, 57)': 'tomato3', 'rgb(84, 84, 84)': 'grey33', 'rgb(110, 139, 61)': 'DarkOliveGreen4', 'rgb(255, 215, 0)': 'gold1', 'rgb(143, 143, 143)': 'grey56', 'rgb(238, 59, 59)': 'brown2', 'rgb(166, 166, 166)': 'grey65', 'rgb(255, 160, 122)': 'LightSalmon1', 'rgb(51, 51, 51)': 'grey20', 'rgb(224, 238, 224)': 'honeydew2', 'rgb(139, 121, 94)': 'NavajoWhite4', 'rgb(110, 123, 139)': 'LightSteelBlue4', 'rgb(26, 26, 26)': 'grey10', 'rgb(238, 99, 99)': 'IndianRed2', 'rgb(178, 58, 238)': 'DarkOrchid2', 'rgb(238, 197, 145)': 'burlywood2', 'rgb(171, 171, 171)': 'grey67', 'rgb(237, 237, 237)': 'grey93', 'rgb(238, 0, 0)': 'red2', 'rgb(139, 71, 38)': 'sienna4', 'rgb(82, 139, 139)': 'DarkSlateGray4', 'rgb(139, 105, 105)': 'RosyBrown4', 'rgb(160, 32, 240)': 'purple', 'rgb(78, 238, 148)': 'SeaGreen2', 'rgb(205, 85, 85)': 'IndianRed3', 'rgb(205, 181, 205)': 'thistle3', 'rgb(184, 184, 184)': 'grey72', 'rgb(255, 222, 173)': 'NavajoWhite1', 'rgb(8, 8, 8)': 'grey3', 'rgb(255, 248, 220)': 'cornsilk1', 'rgb(175, 238, 238)': 'PaleTurquoise', 'rgb(255, 130, 71)': 'sienna1', 'rgb(13, 13, 13)': 'grey5', 'rgb(0, 139, 139)': 'DarkCyan', 'rgb(187, 255, 255)': 'PaleTurquoise1', 'rgb(147, 112, 219)': 'MediumPurple', 'rgb(0, 128, 0)': 'green', 'rgb(238, 64, 0)': 'OrangeRed2', 'rgb(238, 18, 137)': 'DeepPink2', 'rgb(54, 100, 139)': 'SteelBlue4', 'rgb(176, 176, 176)': 'grey69', 'rgb(0, 0, 238)': 'blue2', 'rgb(238, 154, 0)': 'orange2', 'rgb(188, 143, 143)': 'RosyBrown', 'rgb(240, 255, 255)': 'azure1', 'rgb(191, 62, 255)': 'DarkOrchid1', 'rgb(171, 130, 255)': 'MediumPurple1', 'rgb(205, 173, 0)': 'gold3', 'rgb(255, 48, 48)': 'firebrick1', 'rgb(122, 197, 205)': 'CadetBlue3', 'rgb(139, 87, 66)': 'LightSalmon4', 'rgb(204, 204, 204)': 'grey80', 'rgb(205, 129, 98)': 'LightSalmon3', 'rgb(224, 224, 224)': 'grey88', 'rgb(218, 165, 32)': 'goldenrod', 'rgb(205, 145, 158)': 'pink3', 'rgb(139, 62, 47)': 'coral4', 'rgb(238, 122, 233)': 'orchid2', 'rgb(152, 251, 152)': 'PaleGreen', 'rgb(240, 128, 128)': 'LightCoral', 'rgb(162, 205, 90)': 'DarkOliveGreen3', 'rgb(79, 79, 79)': 'grey31', 'rgb(169, 169, 169)': 'DarkGrey', 'rgb(255, 127, 0)': 'DarkOrange1', 'rgb(139, 28, 98)': 'maroon4', 'rgb(253, 245, 230)': 'OldLace', 'rgb(141, 238, 238)': 'DarkSlateGray2', 'rgb(238, 213, 210)': 'MistyRose2', 'rgb(208, 32, 144)': 'VioletRed', 'rgb(0, 205, 0)': 'green3', 'rgb(139, 71, 137)': 'orchid4', 'rgb(205, 201, 165)': 'LemonChiffon3', 'rgb(0, 229, 238)': 'turquoise2', 'rgb(205, 140, 149)': 'LightPink3', 'rgb(124, 205, 124)': 'PaleGreen3', 'rgb(220, 220, 220)': 'gainsboro', 'rgb(238, 229, 222)': 'seashell2', 'rgb(87, 87, 87)': 'grey34', 'rgb(70, 130, 180)': 'SteelBlue', 'rgb(205, 104, 137)': 'PaleVioletRed3', 'rgb(15, 15, 15)': 'grey6', 'rgb(38, 38, 38)': 'grey15', 'rgb(238, 180, 34)': 'goldenrod2', 'rgb(205, 200, 177)': 'cornsilk3', 'rgb(238, 210, 238)': 'thistle2', 'rgb(150, 150, 150)': 'grey59', 'rgb(0, 255, 127)': 'SpringGreen1', 'rgb(139, 126, 102)': 'wheat4', 'rgb(205, 175, 149)': 'PeachPuff3', 'rgb(152, 245, 255)': 'CadetBlue1', 'rgb(0, 250, 154)': 'MediumSpringGreen', 'rgb(120, 120, 120)': 'grey47', 'rgb(238, 118, 33)': 'chocolate2', 'rgb(128, 128, 0)': 'olive', 'rgb(139, 137, 112)': 'LemonChiffon4', 'rgb(107, 142, 35)': 'OliveDrab', 'rgb(219, 219, 219)': 'grey86', 'rgb(205, 205, 0)': 'yellow3', 'rgb(180, 205, 205)': 'LightCyan3', 'rgb(115, 115, 115)': 'grey45', 'rgb(131, 139, 139)': 'azure4', 'rgb(0, 178, 238)': 'DeepSkyBlue2', 'rgb(94, 94, 94)': 'grey37', 'rgb(135, 135, 135)': 'grey53', 'rgb(145, 145, 145)': 'grey57', 'rgb(205, 0, 0)': 'red3', 'rgb(16, 78, 139)': 'DodgerBlue4', 'rgb(133, 133, 133)': 'grey52', 'rgb(205, 38, 38)': 'firebrick3', 'rgb(255, 193, 193)': 'RosyBrown1', 'rgb(205, 183, 181)': 'MistyRose3', 'rgb(122, 55, 139)': 'MediumOrchid4', 'rgb(154, 192, 205)': 'LightBlue3', 'rgb(191, 239, 255)': 'LightBlue1', 'rgb(219, 112, 147)': 'PaleVioletRed', 'rgb(121, 205, 205)': 'DarkSlateGray3', 'rgb(238, 232, 170)': 'PaleGoldenrod', 'rgb(102, 205, 0)': 'chartreuse3', 'rgb(255, 185, 15)': 'DarkGoldenrod1', 'rgb(176, 196, 222)': 'LightSteelBlue', 'rgb(255, 236, 139)': 'LightGoldenrod1', 'rgb(205, 105, 201)': 'orchid3', 'rgb(250, 250, 250)': 'grey98', 'rgb(245, 245, 220)': 'beige', 'rgb(238, 106, 80)': 'coral2', 'rgb(64, 64, 64)': 'grey25', 'rgb(238, 220, 130)': 'LightGoldenrod2', 'white': 'none', 'rgb(125, 38, 205)': 'purple3', 'rgb(205, 133, 63)': 'tan3', 'rgb(139, 102, 139)': 'plum4', 'rgb(71, 71, 71)': 'grey28', 'rgb(118, 238, 0)': 'chartreuse2', 'rgb(192, 255, 62)': 'OliveDrab1', 'rgb(0, 0, 139)': 'DarkBlue', 'rgb(248, 248, 255)': 'GhostWhite', 'rgb(3, 3, 3)': 'grey1', 'rgb(176, 226, 255)': 'LightSkyBlue1', 'rgb(139, 105, 20)': 'goldenrod4', 'rgb(255, 105, 180)': 'HotPink', 'rgb(124, 252, 0)': 'LawnGreen', 'rgb(238, 238, 224)': 'ivory2', 'rgb(139, 69, 19)': 'SaddleBrown', 'rgb(139, 0, 139)': 'magenta4', 'rgb(31, 31, 31)': 'grey12', 'rgb(159, 182, 205)': 'SlateGray3', 'rgb(181, 181, 181)': 'grey71', 'rgb(0, 245, 255)': 'turquoise1', 'rgb(105, 139, 105)': 'DarkSeaGreen4', 'rgb(159, 121, 238)': 'MediumPurple2', 'rgb(205, 198, 115)': 'khaki3', 'rgb(77, 77, 77)': 'grey30', 'rgb(139, 90, 0)': 'orange4', 'rgb(122, 122, 122)': 'grey48', 'rgb(224, 238, 238)': 'azure2', 'rgb(50, 129, 75)': 'MediumForestGreen', 'rgb(202, 225, 255)': 'LightSteelBlue1', 'rgb(255, 110, 180)': 'HotPink1', 'rgb(238, 48, 167)': 'maroon2', 'rgb(220, 20, 60)': 'crimson', 'rgb(127, 255, 212)': 'aquamarine1', 'rgb(205, 179, 139)': 'NavajoWhite3', 'rgb(28, 28, 28)': 'grey11', 'rgb(229, 229, 229)': 'grey90', 'rgb(47, 79, 79)': 'DarkSlateGrey', 'rgb(59, 59, 59)': 'grey23', 'rgb(69, 139, 116)': 'aquamarine4', 'rgb(255, 211, 155)': 'burlywood1', 'rgb(139, 119, 101)': 'PeachPuff4', 'rgb(238, 230, 133)': 'khaki2', 'rgb(10, 10, 10)': 'grey4', 'rgb(144, 238, 144)': 'PaleGreen2', 'rgb(99, 99, 99)': 'grey39', 'rgb(188, 238, 104)': 'DarkOliveGreen2', 'rgb(255, 231, 186)': 'wheat1', 'rgb(154, 50, 205)': 'DarkOrchid3', 'rgb(46, 139, 87)': 'SeaGreen4', 'rgb(145, 44, 238)': 'purple2', 'rgb(255, 240, 245)': 'LavenderBlush1', 'rgb(67, 110, 238)': 'RoyalBlue2', 'rgb(238, 180, 180)': 'RosyBrown2', 'rgb(108, 166, 205)': 'SkyBlue3', 'rgb(173, 173, 173)': 'grey68', 'rgb(176, 48, 96)': 'maroon', 'rgb(23, 23, 23)': 'grey9', 'rgb(138, 138, 138)': 'grey54', 'rgb(139, 137, 137)': 'snow4', 'rgb(209, 193, 102)': 'MediumGoldenRod', 'rgb(139, 123, 139)': 'thistle4', 'rgb(154, 255, 154)': 'PaleGreen1', 'rgb(130, 130, 130)': 'grey51', 'rgb(255, 99, 71)': 'tomato1', 'rgb(205, 183, 158)': 'bisque3', 'rgb(205, 102, 29)': 'chocolate3', 'rgb(128, 0, 0)': 'maroon', 'rgb(0, 0, 255)': 'blue1', 'rgb(255, 52, 179)': 'maroon1', 'rgb(250, 235, 215)': 'AntiqueWhite', 'rgb(163, 163, 163)': 'grey64', 'rgb(56, 56, 56)': 'grey22', 'rgb(85, 26, 139)': 'purple4', 'rgb(139, 58, 58)': 'IndianRed4', 'rgb(168, 168, 168)': 'grey66', 'rgb(255, 225, 255)': 'thistle1', 'rgb(125, 125, 125)': 'grey49', 'rgb(131, 111, 255)': 'SlateBlue1', 'rgb(95, 158, 160)': 'CadetBlue', 'rgb(165, 42, 42)': 'brown', 'rgb(245, 255, 250)': 'MintCream', 'rgb(255, 218, 185)': 'PeachPuff1', 'rgb(255, 228, 225)': 'MistyRose1', 'rgb(216, 191, 216)': 'thistle', 'rgb(139, 101, 8)': 'DarkGoldenrod4', 'rgb(205, 104, 57)': 'sienna3', 'rgb(255, 131, 250)': 'orchid1', 'rgb(82, 82, 82)': 'grey32', 'rgb(117, 117, 117)': 'grey46', 'rgb(255, 165, 0)': 'orange1', 'rgb(255, 64, 64)': 'brown1', 'rgb(255, 165, 79)': 'tan1', 'rgb(205, 55, 0)': 'OrangeRed3', 'rgb(188, 210, 238)': 'LightSteelBlue2', 'rgb(238, 121, 159)': 'PaleVioletRed2', 'rgb(5, 5, 5)': 'grey2', 'rgb(217, 217, 217)': 'grey85', 'rgb(205, 186, 150)': 'wheat3', 'rgb(139, 131, 134)': 'LavenderBlush4', 'rgb(185, 211, 238)': 'SlateGray2', 'rgb(235, 235, 235)': 'grey92', 'rgb(230, 230, 250)': 'lavender', 'rgb(41, 41, 41)': 'grey16', 'rgb(205, 92, 92)': 'IndianRed', 'rgb(131, 139, 131)': 'honeydew4', 'rgb(123, 104, 238)': 'MediumSlateBlue', 'rgb(128, 0, 128)': 'purple', 'rgb(139, 26, 26)': 'firebrick4', 'rgb(141, 182, 205)': 'LightSkyBlue3', 'rgb(212, 212, 212)': 'grey83', 'rgb(238, 162, 173)': 'LightPink2', 'rgb(255, 255, 0)': 'yellow1', 'rgb(192, 192, 192)': 'silver', 'rgb(139, 71, 93)': 'PaleVioletRed4', 'rgb(0, 100, 0)': 'DarkGreen', 'rgb(139, 37, 0)': 'OrangeRed4', 'rgb(198, 226, 255)': 'SlateGray1', 'rgb(24, 116, 205)': 'DodgerBlue3', 'rgb(178, 34, 34)': 'firebrick', 'rgb(28, 134, 238)': 'DodgerBlue2', 'rgb(255, 0, 255)': 'magenta1', 'rgb(33, 33, 33)': 'grey13', 'rgb(209, 238, 238)': 'LightCyan2', 'rgb(255, 127, 80)': 'coral', 'rgb(0, 154, 205)': 'DeepSkyBlue3', 'rgb(255, 255, 224)': 'LightYellow1', 'rgb(75, 0, 130)': 'indigo', 'rgb(160, 82, 45)': 'sienna', 'rgb(138, 43, 226)': 'BlueViolet', 'rgb(238, 224, 229)': 'LavenderBlush2', 'rgb(106, 90, 205)': 'SlateBlue', 'rgb(227, 227, 227)': 'grey89', 'rgb(255, 250, 250)': 'snow1', 'rgb(255, 174, 185)': 'LightPink1', 'rgb(205, 0, 205)': 'magenta3', 'rgb(126, 126, 126)': 'gray', 'rgb(139, 10, 80)': 'DeepPink4', 'rgb(186, 85, 211)': 'MediumOrchid', 'rgb(205, 133, 0)': 'orange3', 'rgb(211, 211, 211)': 'LightGrey', 'rgb(69, 69, 69)': 'grey27', 'rgb(222, 222, 222)': 'grey87', 'rgb(221, 160, 221)': 'plum', 'rgb(255, 255, 240)': 'ivory1', 'rgb(112, 112, 112)': 'grey44', 'rgb(209, 95, 238)': 'MediumOrchid2', 'rgb(0, 255, 0)': 'lime', 'rgb(238, 233, 191)': 'LemonChiffon2', 'rgb(92, 92, 92)': 'grey36', 'rgb(205, 112, 84)': 'salmon3', 'rgb(255, 228, 196)': 'bisque1', 'rgb(255, 192, 203)': 'pink', 'rgb(238, 130, 238)': 'violet', 'rgb(122, 103, 238)': 'SlateBlue2', 'rgb(238, 121, 66)': 'sienna2', 'rgb(102, 139, 139)': 'PaleTurquoise4', 'rgb(250, 240, 230)': 'linen', 'rgb(247, 247, 247)': 'grey97', 'rgb(32, 178, 170)': 'LightSeaGreen', 'rgb(97, 97, 97)': 'grey38', 'rgb(150, 205, 205)': 'PaleTurquoise3', 'rgb(158, 158, 158)': 'grey62', 'rgb(238, 58, 140)': 'VioletRed2', 'rgb(255, 228, 181)': 'moccasin', 'rgb(0, 197, 205)': 'turquoise3', 'rgb(205, 96, 144)': 'HotPink3', 'rgb(205, 16, 118)': 'DeepPink3', 'rgb(240, 240, 240)': 'grey94', 'rgb(176, 224, 230)': 'PowderBlue', 'rgb(199, 21, 133)': 'MediumVioletRed', 'rgb(238, 203, 173)': 'PeachPuff2', 'rgb(173, 255, 47)': 'GreenYellow', 'rgb(238, 174, 238)': 'plum2', 'rgb(191, 191, 191)': 'grey75', 'rgb(222, 184, 135)': 'burlywood', 'rgb(18, 18, 18)': 'grey7', 'rgb(83, 134, 139)': 'CadetBlue4', 'rgb(139, 134, 130)': 'seashell4', 'rgb(142, 229, 238)': 'CadetBlue2', 'rgb(0, 139, 0)': 'green4', 'rgb(240, 255, 240)': 'honeydew1', 'rgb(104, 34, 139)': 'DarkOrchid4', 'rgb(193, 255, 193)': 'DarkSeaGreen1', 'rgb(0, 0, 0)': 'opaque', 'rgb(139, 58, 98)': 'HotPink4', 'rgb(89, 89, 89)': 'grey35', 'rgb(72, 118, 255)': 'RoyalBlue1', 'rgb(108, 123, 139)': 'SlateGray4', 'rgb(255, 20, 147)': 'DeepPink1', 'rgb(255, 250, 240)': 'FloralWhite', 'rgb(132, 112, 255)': 'LightSlateBlue', 'rgb(255, 62, 150)': 'VioletRed1', 'rgb(139, 125, 107)': 'bisque4', 'rgb(64, 224, 208)': 'turquoise', 'rgb(148, 0, 211)': 'DarkViolet', 'rgb(238, 106, 167)': 'HotPink2', 'rgb(238, 44, 44)': 'firebrick2', 'rgb(72, 209, 204)': 'MediumTurquoise', 'rgb(205, 155, 29)': 'goldenrod3', 'rgb(139, 0, 0)': 'red4', 'rgb(238, 92, 66)': 'tomato2', 'rgb(238, 216, 174)': 'wheat2', 'rgb(65, 105, 225)': 'RoyalBlue', 'rgb(0, 205, 102)': 'SpringGreen3', 'rgb(96, 123, 139)': 'LightSkyBlue4', 'rgb(210, 180, 140)': 'tan', 'rgb(135, 206, 255)': 'SkyBlue1', 'rgb(252, 252, 252)': 'grey99', 'rgb(61, 61, 61)': 'grey24', 'rgb(205, 102, 0)': 'DarkOrange3', 'rgb(58, 95, 205)': 'RoyalBlue3', 'rgb(30, 144, 255)': 'DodgerBlue1', 'rgb(245, 245, 245)': 'WhiteSmoke', 'rgb(255, 130, 171)': 'PaleVioletRed1', 'rgb(60, 179, 113)': 'MediumSeaGreen', 'rgb(139, 139, 122)': 'LightYellow4', 'rgb(139, 136, 120)': 'cornsilk4', 'rgb(139, 34, 82)': 'VioletRed4', 'rgb(238, 223, 204)': 'AntiqueWhite2', 'rgb(238, 213, 183)': 'bisque2', 'rgb(250, 250, 210)': 'LightGoldenrodYellow', 'rgb(255, 250, 205)': 'LemonChiffon1', 'rgb(39, 64, 139)': 'RoyalBlue4', 'rgb(84, 139, 84)': 'PaleGreen4', 'rgb(238, 221, 130)': 'LightGoldenrod', 'rgb(139, 95, 101)': 'LightPink4', 'rgb(210, 105, 30)': 'chocolate', 'rgb(139, 139, 0)': 'yellow4', 'rgb(238, 149, 114)': 'LightSalmon2', 'rgb(0, 255, 255)': 'cyan1', 'rgb(71, 60, 139)': 'SlateBlue4', 'rgb(207, 207, 207)': 'grey81', 'rgb(153, 50, 204)': 'DarkOrchid', 'rgb(36, 36, 36)': 'grey14', 'rgb(153, 153, 153)': 'grey60', 'rgb(250, 128, 114)': 'salmon', 'rgb(174, 238, 238)': 'PaleTurquoise2', 'rgb(139, 117, 0)': 'gold4', 'rgb(139, 35, 35)': 'brown4', 'rgb(92, 172, 238)': 'SteelBlue2', 'rgb(48, 48, 48)': 'grey19', 'rgb(139, 129, 76)': 'LightGoldenrod4', 'rgb(72, 61, 139)': 'DarkSlateBlue', 'rgb(238, 169, 184)': 'pink2', 'rgb(69, 139, 0)': 'chartreuse4', 'rgb(0, 128, 128)': 'teal', 'rgb(255, 255, 255)': 'grey100', 'rgb(244, 164, 96)': 'SandyBrown', 'rgb(154, 205, 50)': 'YellowGreen', 'rgb(126, 192, 238)': 'SkyBlue2', 'rgb(209, 209, 209)': 'grey82', 'rgb(74, 112, 139)': 'SkyBlue4', 'rgb(112, 128, 144)': 'SlateGrey', 'rgb(105, 139, 34)': 'OliveDrab4', 'rgb(110, 110, 110)': 'grey43', 'rgb(179, 179, 179)': 'grey70', 'rgb(205, 50, 120)': 'VioletRed3', 'rgb(119, 136, 153)': 'LightSlateGrey', 'rgb(139, 115, 85)': 'burlywood4', 'rgb(255, 193, 37)': 'goldenrod1', 'rgb(224, 255, 255)': 'LightCyan1', 'rgb(66, 66, 66)': 'grey26', 'rgb(193, 205, 193)': 'honeydew3', 'rgb(0, 191, 255)': 'DeepSkyBlue1', 'rgb(205, 205, 193)': 'ivory3', 'rgb(238, 238, 0)': 'yellow2', 'rgb(255, 140, 105)': 'salmon1', 'rgb(135, 206, 235)': 'SkyBlue', 'rgb(238, 201, 0)': 'gold2', 'rgb(238, 232, 205)': 'cornsilk2', 'rgb(0, 0, 205)': 'MediumBlue', 'rgb(238, 130, 98)': 'salmon2', 'rgb(155, 48, 255)': 'purple1', 'rgb(43, 43, 43)': 'grey17', 'rgb(240, 248, 255)': 'AliceBlue', 'rgb(238, 0, 238)': 'magenta2', 'rgb(128, 128, 128)': 'fractal', 'rgb(193, 205, 205)': 'azure3', 'rgb(50, 205, 50)': 'LimeGreen', 'rgb(201, 201, 201)': 'grey79', 'rgb(255, 239, 219)': 'AntiqueWhite1', 'rgb(196, 196, 196)': 'grey77', 'rgb(135, 206, 250)': 'LightSkyBlue', 'rgb(139, 134, 78)': 'khaki4', 'rgb(79, 148, 205)': 'SteelBlue3', 'rgb(74, 74, 74)': 'grey29', 'rgb(255, 0, 0)': 'red1', 'rgb(233, 150, 122)': 'DarkSalmon', 'rgb(205, 190, 112)': 'LightGoldenrod3', 'rgb(84, 255, 159)': 'SeaGreen1', 'rgb(205, 170, 125)': 'burlywood3', 'rgb(127, 255, 0)': 'chartreuse1', 'rgb(102, 102, 102)': 'grey40', 'rgb(180, 238, 180)': 'DarkSeaGreen2', 'rgb(122, 139, 139)': 'LightCyan4', 'rgb(255, 140, 0)': 'DarkOrange', 'rgb(205, 197, 191)': 'seashell3', 'rgb(140, 140, 140)': 'grey55', 'rgb(199, 199, 199)': 'grey78', 'rgb(202, 255, 112)': 'DarkOliveGreen1', 'rgb(255, 245, 238)': 'seashell1', 'rgb(189, 183, 107)': 'DarkKhaki', 'rgb(0, 238, 118)': 'SpringGreen2', 'rgb(180, 82, 205)': 'MediumOrchid3', 'rgb(255, 127, 36)': 'chocolate1', 'rgb(161, 161, 161)': 'grey63'}
+hextorgb = {'#EE1289': 'rgb(238, 18, 137)', '#EE8262': 'rgb(238, 130, 98)', '#C4C4C4': 'rgb(196, 196, 196)', '#556B2F': 'rgb(85, 107, 47)', '#FF8C00': 'rgb(255, 140, 0)', '#8B7B8B': 'rgb(139, 123, 139)', '#0000EE': 'rgb(0, 0, 238)', '#EED5D2': 'rgb(238, 213, 210)', '#BA55D3': 'rgb(186, 85, 211)', '#FFF5EE': 'rgb(255, 245, 238)', '#912CEE': 'rgb(145, 44, 238)', '#2F4F4F': 'rgb(47, 79, 79)', '#32814B': 'rgb(50, 129, 75)', '#D15FEE': 'rgb(209, 95, 238)', '#F0FFF0': 'rgb(240, 255, 240)', '#B23AEE': 'rgb(178, 58, 238)', '#8B7765': 'rgb(139, 119, 101)', '#3D3D3D': 'rgb(61, 61, 61)', '#54FF9F': 'rgb(84, 255, 159)', '#636363': 'rgb(99, 99, 99)', '#8B8386': 'rgb(139, 131, 134)', '#FF4040': 'rgb(255, 64, 64)', '#EEA9B8': 'rgb(238, 169, 184)', '#C2C2C2': 'rgb(194, 194, 194)', '#800080': 'rgb(128, 0, 128)', '#545454': 'rgb(84, 84, 84)', '#EE3A8C': 'rgb(238, 58, 140)', '#8A8A8A': 'rgb(138, 138, 138)', '#FF00FF': 'rgb(255, 0, 255)', '#436EEE': 'rgb(67, 110, 238)', '#8B864E': 'rgb(139, 134, 78)', '#0A0A0A': 'rgb(10, 10, 10)', '#808000': 'rgb(128, 128, 0)', '#E3E3E3': 'rgb(227, 227, 227)', '#1874CD': 'rgb(24, 116, 205)', '#BCD2EE': 'rgb(188, 210, 238)', '#A9A9A9': 'rgb(169, 169, 169)', '#F4A460': 'rgb(244, 164, 96)', '#FF3030': 'rgb(255, 48, 48)', '#FFEBCD': 'rgb(255, 235, 205)', '#B0C4DE': 'rgb(176, 196, 222)', '#00CDCD': 'rgb(0, 205, 205)', '#C0FF3E': 'rgb(192, 255, 62)', '#FFD700': 'rgb(255, 215, 0)', '#242424': 'rgb(36, 36, 36)', '#8B2252': 'rgb(139, 34, 82)', '#4EEE94': 'rgb(78, 238, 148)', '#CD3278': 'rgb(205, 50, 120)', '#00E5EE': 'rgb(0, 229, 238)', '#CD853F': 'rgb(205, 133, 63)', '#ADD8E6': 'rgb(173, 216, 230)', '#C7C7C7': 'rgb(199, 199, 199)', '#CD2990': 'rgb(205, 41, 144)', '#EEE5DE': 'rgb(238, 229, 222)', '#66CD00': 'rgb(102, 205, 0)', '#878787': 'rgb(135, 135, 135)', '#FFA54F': 'rgb(255, 165, 79)', '#A2B5CD': 'rgb(162, 181, 205)', '#BC8F8F': 'rgb(188, 143, 143)', '#C9C9C9': 'rgb(201, 201, 201)', '#D1C166': 'rgb(209, 193, 102)', '#8B2323': 'rgb(139, 35, 35)', '#B3EE3A': 'rgb(179, 238, 58)', '#EEEED1': 'rgb(238, 238, 209)', '#AEEEEE': 'rgb(174, 238, 238)', '#BDBDBD': 'rgb(189, 189, 189)', '#FF7F00': 'rgb(255, 127, 0)', '#FFC0CB': 'rgb(255, 192, 203)', '#EE3B3B': 'rgb(238, 59, 59)', '#CDC8B1': 'rgb(205, 200, 177)', '#CDB38B': 'rgb(205, 179, 139)', '#CDBA96': 'rgb(205, 186, 150)', '#B4EEB4': 'rgb(180, 238, 180)', '#40E0D0': 'rgb(64, 224, 208)', '#8B795E': 'rgb(139, 121, 94)', '#27408B': 'rgb(39, 64, 139)', '#424242': 'rgb(66, 66, 66)', '#CDB7B5': 'rgb(205, 183, 181)', '#CAE1FF': 'rgb(202, 225, 255)', '#F0FFFF': 'rgb(240, 255, 255)', '#2E8B57': 'rgb(46, 139, 87)', '#87CEEB': 'rgb(135, 206, 235)', '#CD00CD': 'rgb(205, 0, 205)', '#CDAA7D': 'rgb(205, 170, 125)', '#836FFF': 'rgb(131, 111, 255)', '#ABABAB': 'rgb(171, 171, 171)', '#EEB4B4': 'rgb(238, 180, 180)', '#8B7355': 'rgb(139, 115, 85)', '#F0E68C': 'rgb(240, 230, 140)', '#CDCDB4': 'rgb(205, 205, 180)', '#4D4D4D': 'rgb(77, 77, 77)', '#B8B8B8': 'rgb(184, 184, 184)', '#B4CDCD': 'rgb(180, 205, 205)', '#008B8B': 'rgb(0, 139, 139)', '#828282': 'rgb(130, 130, 130)', '#00EEEE': 'rgb(0, 238, 238)', '#708090': 'rgb(112, 128, 144)', '#9AFF9A': 'rgb(154, 255, 154)', '#FFA07A': 'rgb(255, 160, 122)', '#EBEBEB': 'rgb(235, 235, 235)', '#FFB5C5': 'rgb(255, 181, 197)', '#00688B': 'rgb(0, 104, 139)', '#DBDBDB': 'rgb(219, 219, 219)', '#191970': 'rgb(25, 25, 112)', '#FF83FA': 'rgb(255, 131, 250)', '#A1A1A1': 'rgb(161, 161, 161)', '#838B8B': 'rgb(131, 139, 139)', '#FFA500': 'rgb(255, 165, 0)', '#00FF7F': 'rgb(0, 255, 127)', '#EEAD0E': 'rgb(238, 173, 14)', '#B03060': 'rgb(176, 48, 96)', '#96CDCD': 'rgb(150, 205, 205)', '#CD3333': 'rgb(205, 51, 51)', '#CDBE70': 'rgb(205, 190, 112)', '#7CCD7C': 'rgb(124, 205, 124)', '#97FFFF': 'rgb(151, 255, 255)', '#DAA520': 'rgb(218, 165, 32)', '#8B3A3A': 'rgb(139, 58, 58)', '#6B6B6B': 'rgb(107, 107, 107)', '#FFFAF0': 'rgb(255, 250, 240)', '#757575': 'rgb(117, 117, 117)', '#BFBFBF': 'rgb(191, 191, 191)', '#00EE76': 'rgb(0, 238, 118)', '#FFFAFA': 'rgb(255, 250, 250)', '#6E8B3D': 'rgb(110, 139, 61)', '#EEE685': 'rgb(238, 230, 133)', '#FF3E96': 'rgb(255, 62, 150)', '#EE0000': 'rgb(238, 0, 0)', '#FDF5E6': 'rgb(253, 245, 230)', '#E066FF': 'rgb(224, 102, 255)', '#8DB6CD': 'rgb(141, 182, 205)', '#FF7256': 'rgb(255, 114, 86)', '#7CFC00': 'rgb(124, 252, 0)', '#838B83': 'rgb(131, 139, 131)', '#BF3EFF': 'rgb(191, 62, 255)', '#8B6914': 'rgb(139, 105, 20)', '#00CD66': 'rgb(0, 205, 102)', '#525252': 'rgb(82, 82, 82)', '#A4D3EE': 'rgb(164, 211, 238)', '#00868B': 'rgb(0, 134, 139)', '#8DEEEE': 'rgb(141, 238, 238)', '#787878': 'rgb(120, 120, 120)', '#8B1C62': 'rgb(139, 28, 98)', '#616161': 'rgb(97, 97, 97)', '#4876FF': 'rgb(72, 118, 255)', '#9F79EE': 'rgb(159, 121, 238)', '#212121': 'rgb(33, 33, 33)', '#C1CDC1': 'rgb(193, 205, 193)', '#CD69C9': 'rgb(205, 105, 201)', '#E0EEEE': 'rgb(224, 238, 238)', '#8B7E66': 'rgb(139, 126, 102)', '#8A2BE2': 'rgb(138, 43, 226)', '#CDCD00': 'rgb(205, 205, 0)', '#EE5C42': 'rgb(238, 92, 66)', '#6E6E6E': 'rgb(110, 110, 110)', '#EEAEEE': 'rgb(238, 174, 238)', '#DC143C': 'rgb(220, 20, 60)', '#CD919E': 'rgb(205, 145, 158)', '#528B8B': 'rgb(82, 139, 139)', '#AFEEEE': 'rgb(175, 238, 238)', '#CD6889': 'rgb(205, 104, 137)', '#E6E6FA': 'rgb(230, 230, 250)', '#EE00EE': 'rgb(238, 0, 238)', '#999999': 'rgb(153, 153, 153)', '#F0F8FF': 'rgb(240, 248, 255)', '#595959': 'rgb(89, 89, 89)', '#FF7F50': 'rgb(255, 127, 80)', '#A6A6A6': 'rgb(166, 166, 166)', '#DEDEDE': 'rgb(222, 222, 222)', '#262626': 'rgb(38, 38, 38)', '#6CA6CD': 'rgb(108, 166, 205)', '#8B8B83': 'rgb(139, 139, 131)', '#474747': 'rgb(71, 71, 71)', '#F7F7F7': 'rgb(247, 247, 247)', '#548B54': 'rgb(84, 139, 84)', '#48D1CC': 'rgb(72, 209, 204)', '#C1CDCD': 'rgb(193, 205, 205)', '#E0EEE0': 'rgb(224, 238, 224)', '#FFB90F': 'rgb(255, 185, 15)', '#FFD39B': 'rgb(255, 211, 155)', '#8B5A2B': 'rgb(139, 90, 43)', '#EEE9BF': 'rgb(238, 233, 191)', '#BCEE68': 'rgb(188, 238, 104)', '#8470FF': 'rgb(132, 112, 255)', '#8B0A50': 'rgb(139, 10, 80)', '#FFF68F': 'rgb(255, 246, 143)', '#EEA2AD': 'rgb(238, 162, 173)', '#CD5B45': 'rgb(205, 91, 69)', '#7FFF00': 'rgb(127, 255, 0)', '#8B8378': 'rgb(139, 131, 120)', '#9BCD9B': 'rgb(155, 205, 155)', '#454545': 'rgb(69, 69, 69)', '#D1D1D1': 'rgb(209, 209, 209)', '#EEE8AA': 'rgb(238, 232, 170)', '#668B8B': 'rgb(102, 139, 139)', '#EE30A7': 'rgb(238, 48, 167)', '#FFC125': 'rgb(255, 193, 37)', '#8B475D': 'rgb(139, 71, 93)', '#D8BFD8': 'rgb(216, 191, 216)', '#404040': 'rgb(64, 64, 64)', '#EEEE00': 'rgb(238, 238, 0)', '#CDB5CD': 'rgb(205, 181, 205)', '#00C5CD': 'rgb(0, 197, 205)', '#00CED1': 'rgb(0, 206, 209)', '#CFCFCF': 'rgb(207, 207, 207)', '#008B00': 'rgb(0, 139, 0)', '#7A7A7A': 'rgb(122, 122, 122)', '#B8860B': 'rgb(184, 134, 11)', '#1C86EE': 'rgb(28, 134, 238)', '#8B5742': 'rgb(139, 87, 66)', '#1A1A1A': 'rgb(26, 26, 26)', '#8B008B': 'rgb(139, 0, 139)', '#0F0F0F': 'rgb(15, 15, 15)', '#CD3700': 'rgb(205, 55, 0)', '#7F7F7F': 'rgb(127, 127, 127)', '#FF6EB4': 'rgb(255, 110, 180)', '#6959CD': 'rgb(105, 89, 205)', '#90EE90': 'rgb(144, 238, 144)', '#8B4789': 'rgb(139, 71, 137)', '#EE7AE9': 'rgb(238, 122, 233)', '#8968CD': 'rgb(137, 104, 205)', '#080808': 'rgb(8, 8, 8)', '#CDC9C9': 'rgb(205, 201, 201)', '#BDB76B': 'rgb(189, 183, 107)', '#9370DB': 'rgb(147, 112, 219)', '#EEDC82': 'rgb(238, 220, 130)', '#3CB371': 'rgb(60, 179, 113)', '#F5FFFA': 'rgb(245, 255, 250)', '#303030': 'rgb(48, 48, 48)', '#B9D3EE': 'rgb(185, 211, 238)', '#575757': 'rgb(87, 87, 87)', '#F5F5DC': 'rgb(245, 245, 220)', '#BABABA': 'rgb(186, 186, 186)', '#0000CD': 'rgb(0, 0, 205)', '#FF8247': 'rgb(255, 130, 71)', '#F2F2F2': 'rgb(242, 242, 242)', '#EED5B7': 'rgb(238, 213, 183)', '#FFEC8B': 'rgb(255, 236, 139)', '#EE7600': 'rgb(238, 118, 0)', '#8B636C': 'rgb(139, 99, 108)', '#8B814C': 'rgb(139, 129, 76)', '#FFE4B5': 'rgb(255, 228, 181)', '#4F94CD': 'rgb(79, 148, 205)', '#CDAD00': 'rgb(205, 173, 0)', '#CD5555': 'rgb(205, 85, 85)', '#8B7500': 'rgb(139, 117, 0)', '#473C8B': 'rgb(71, 60, 139)', '#B0E0E6': 'rgb(176, 224, 230)', '#FFFF00': 'rgb(255, 255, 0)', '#CD96CD': 'rgb(205, 150, 205)', '#006400': 'rgb(0, 100, 0)', '#FAFAFA': 'rgb(250, 250, 250)', '#53868B': 'rgb(83, 134, 139)', '#8B4513': 'rgb(139, 69, 19)', '#98FB98': 'rgb(152, 251, 152)', '#63B8FF': 'rgb(99, 184, 255)', '#FFAEB9': 'rgb(255, 174, 185)', '#EE6A50': 'rgb(238, 106, 80)', '#87CEFF': 'rgb(135, 206, 255)', '#87CEFA': 'rgb(135, 206, 250)', '#ADFF2F': 'rgb(173, 255, 47)', '#008B45': 'rgb(0, 139, 69)', '#EE4000': 'rgb(238, 64, 0)', '#8B6969': 'rgb(139, 105, 105)', '#00008B': 'rgb(0, 0, 139)', '#DB7093': 'rgb(219, 112, 147)', '#7EC0EE': 'rgb(126, 192, 238)', '#3B3B3B': 'rgb(59, 59, 59)', '#8C8C8C': 'rgb(140, 140, 140)', '#5F9EA0': 'rgb(95, 158, 160)', '#EE799F': 'rgb(238, 121, 159)', '#CD6090': 'rgb(205, 96, 144)', '#8B8682': 'rgb(139, 134, 130)', '#458B74': 'rgb(69, 139, 116)', '#EECFA1': 'rgb(238, 207, 161)', '#76EE00': 'rgb(118, 238, 0)', '#000080': 'rgb(0, 0, 128)', '#228B22': 'rgb(34, 139, 34)', '#8B8B00': 'rgb(139, 139, 0)', '#B5B5B5': 'rgb(181, 181, 181)', '#CD950C': 'rgb(205, 149, 12)', '#EE82EE': 'rgb(238, 130, 238)', '#EDEDED': 'rgb(237, 237, 237)', '#F5DEB3': 'rgb(245, 222, 179)', '#3A5FCD': 'rgb(58, 95, 205)', '#00FA9A': 'rgb(0, 250, 154)', '#F0F0F0': 'rgb(240, 240, 240)', '#D1EEEE': 'rgb(209, 238, 238)', '#2E2E2E': 'rgb(46, 46, 46)', '#EEC591': 'rgb(238, 197, 145)', '#8B3E2F': 'rgb(139, 62, 47)', '#CD8162': 'rgb(205, 129, 98)', '#9AC0CD': 'rgb(154, 192, 205)', '#8B8989': 'rgb(139, 137, 137)', '#EED8AE': 'rgb(238, 216, 174)', '#551A8B': 'rgb(85, 26, 139)', '#919191': 'rgb(145, 145, 145)', '#949494': 'rgb(148, 148, 148)', '#778899': 'rgb(119, 136, 153)', '#FFFACD': 'rgb(255, 250, 205)', '#458B00': 'rgb(69, 139, 0)', '#008000': 'rgb(0, 128, 0)', '#FFFFF0': 'rgb(255, 255, 240)', '#E0E0E0': 'rgb(224, 224, 224)', '#EEB422': 'rgb(238, 180, 34)', '#A020F0': 'rgb(160, 32, 240)', '#5CACEE': 'rgb(92, 172, 238)', '#CD4F39': 'rgb(205, 79, 57)', '#CDC0B0': 'rgb(205, 192, 176)', '#6E7B8B': 'rgb(110, 123, 139)', '#9E9E9E': 'rgb(158, 158, 158)', '#CDC673': 'rgb(205, 198, 115)', '#104E8B': 'rgb(16, 78, 139)', '#E0FFFF': 'rgb(224, 255, 255)', '#FFFFFF': 'rgb(255, 255, 255)', '#6C7B8B': 'rgb(108, 123, 139)', '#FFC1C1': 'rgb(255, 193, 193)', '#D6D6D6': 'rgb(214, 214, 214)', '#8B4726': 'rgb(139, 71, 38)', '#CD9B1D': 'rgb(205, 155, 29)', '#FF6347': 'rgb(255, 99, 71)', '#FF34B3': 'rgb(255, 52, 179)', '#7D7D7D': 'rgb(125, 125, 125)', '#121212': 'rgb(18, 18, 18)', '#B0E2FF': 'rgb(176, 226, 255)', '#8B3A62': 'rgb(139, 58, 98)', '#CD5C5C': 'rgb(205, 92, 92)', '#4A4A4A': 'rgb(74, 74, 74)', '#B0B0B0': 'rgb(176, 176, 176)', '#D9D9D9': 'rgb(217, 217, 217)', '#A2CD5A': 'rgb(162, 205, 90)', '#8B0000': 'rgb(139, 0, 0)', '#FF6A6A': 'rgb(255, 106, 106)', '#CD6600': 'rgb(205, 102, 0)', '#FFEFDB': 'rgb(255, 239, 219)', '#E9967A': 'rgb(233, 150, 122)', '#EEE9E9': 'rgb(238, 233, 233)', '#D4D4D4': 'rgb(212, 212, 212)', '#383838': 'rgb(56, 56, 56)', '#7A67EE': 'rgb(122, 103, 238)', '#4169E1': 'rgb(65, 105, 225)', '#5E5E5E': 'rgb(94, 94, 94)', '#00F5FF': 'rgb(0, 245, 255)', '#FFEFD5': 'rgb(255, 239, 213)', '#CDAF95': 'rgb(205, 175, 149)', '#CCCCCC': 'rgb(204, 204, 204)', '#00BFFF': 'rgb(0, 191, 255)', '#CDB79E': 'rgb(205, 183, 158)', '#969696': 'rgb(150, 150, 150)', '#4F4F4F': 'rgb(79, 79, 79)', '#1E90FF': 'rgb(30, 144, 255)', '#FCFCFC': 'rgb(252, 252, 252)', '#EE2C2C': 'rgb(238, 44, 44)', '#8B6508': 'rgb(139, 101, 8)', '#696969': 'rgb(105, 105, 105)', '#FF7F24': 'rgb(255, 127, 36)', '#8FBC8F': 'rgb(143, 188, 143)', '#66CDAA': 'rgb(102, 205, 170)', '#6495ED': 'rgb(100, 149, 237)', '#0D0D0D': 'rgb(13, 13, 13)', '#EEE0E5': 'rgb(238, 224, 229)', '#666666': 'rgb(102, 102, 102)', '#B2DFEE': 'rgb(178, 223, 238)', '#B22222': 'rgb(178, 34, 34)', '#4B0082': 'rgb(75, 0, 130)', '#FF82AB': 'rgb(255, 130, 171)', '#AB82FF': 'rgb(171, 130, 255)', '#79CDCD': 'rgb(121, 205, 205)', '#FFE4C4': 'rgb(255, 228, 196)', '#DEB887': 'rgb(222, 184, 135)', '#5D478B': 'rgb(93, 71, 139)', '#8B3626': 'rgb(139, 54, 38)', '#FFFFE0': 'rgb(255, 255, 224)', '#FFE4E1': 'rgb(255, 228, 225)', '#171717': 'rgb(23, 23, 23)', '#EEDFCC': 'rgb(238, 223, 204)', '#9400D3': 'rgb(148, 0, 211)', '#BFEFFF': 'rgb(191, 239, 255)', '#8B7D6B': 'rgb(139, 125, 107)', '#FF8C69': 'rgb(255, 140, 105)', '#C6E2FF': 'rgb(198, 226, 255)', '#1C1C1C': 'rgb(28, 28, 28)', '#FF4500': 'rgb(255, 69, 0)', '#FFE7BA': 'rgb(255, 231, 186)', '#808080': 'rgb(128, 128, 128)', '#EE9572': 'rgb(238, 149, 114)', '#CD8500': 'rgb(205, 133, 0)', '#8B5A00': 'rgb(139, 90, 0)', '#9932CC': 'rgb(153, 50, 204)', '#EECBAD': 'rgb(238, 203, 173)', '#CD8C95': 'rgb(205, 140, 149)', '#292929': 'rgb(41, 41, 41)', '#CD1076': 'rgb(205, 16, 118)', '#7A378B': 'rgb(122, 55, 139)', '#FF0000': 'rgb(255, 0, 0)', '#698B22': 'rgb(105, 139, 34)', '#ADADAD': 'rgb(173, 173, 173)', '#EEE8CD': 'rgb(238, 232, 205)', '#DDA0DD': 'rgb(221, 160, 221)', '#7D26CD': 'rgb(125, 38, 205)', '#DA70D6': 'rgb(218, 112, 214)', '#DCDCDC': 'rgb(220, 220, 220)', '#68228B': 'rgb(104, 34, 139)', '#7B68EE': 'rgb(123, 104, 238)', '#000000': 'white', '#6B8E23': 'rgb(107, 142, 35)', '#FF69B4': 'rgb(255, 105, 180)', '#800000': 'rgb(128, 0, 0)', '#8B668B': 'rgb(139, 102, 139)', '#363636': 'rgb(54, 54, 54)', '#8B4500': 'rgb(139, 69, 0)', '#D3D3D3': 'rgb(211, 211, 211)', '#607B8B': 'rgb(96, 123, 139)', '#F08080': 'rgb(240, 128, 128)', '#CD9B9B': 'rgb(205, 155, 155)', '#76EEC6': 'rgb(118, 238, 198)', '#FAEBD7': 'rgb(250, 235, 215)', '#68838B': 'rgb(104, 131, 139)', '#7FFFD4': 'rgb(127, 255, 212)', '#C0C0C0': 'rgb(192, 192, 192)', '#EEDD82': 'rgb(238, 221, 130)', '#EE9A49': 'rgb(238, 154, 73)', '#4A708B': 'rgb(74, 112, 139)', '#008080': 'rgb(0, 128, 128)', '#7AC5CD': 'rgb(122, 197, 205)', '#98F5FF': 'rgb(152, 245, 255)', '#8B2500': 'rgb(139, 37, 0)', '#8F8F8F': 'rgb(143, 143, 143)', '#FFF0F5': 'rgb(255, 240, 245)', '#8B8970': 'rgb(139, 137, 112)', '#8B8878': 'rgb(139, 136, 120)', '#6A5ACD': 'rgb(106, 90, 205)', '#4682B4': 'rgb(70, 130, 180)', '#EEEEE0': 'rgb(238, 238, 224)', '#B3B3B3': 'rgb(179, 179, 179)', '#00FF00': 'rgb(0, 255, 0)', '#FFDEAD': 'rgb(255, 222, 173)', '#CD2626': 'rgb(205, 38, 38)', '#8B4C39': 'rgb(139, 76, 57)', '#9B30FF': 'rgb(155, 48, 255)', '#E5E5E5': 'rgb(229, 229, 229)', '#36648B': 'rgb(54, 100, 139)', '#9C9C9C': 'rgb(156, 156, 156)', '#F8F8FF': 'rgb(248, 248, 255)', '#333333': 'rgb(51, 51, 51)', '#5C5C5C': 'rgb(92, 92, 92)', '#737373': 'rgb(115, 115, 115)', '#EEC900': 'rgb(238, 201, 0)', '#FFE1FF': 'rgb(255, 225, 255)', '#C1FFC1': 'rgb(193, 255, 193)', '#CDC5BF': 'rgb(205, 197, 191)', '#A0522D': 'rgb(160, 82, 45)', '#8B5F65': 'rgb(139, 95, 101)', '#CDC1C5': 'rgb(205, 193, 197)', '#EE7621': 'rgb(238, 118, 33)', '#FFBBFF': 'rgb(255, 187, 255)', '#CD6839': 'rgb(205, 104, 57)', '#698B69': 'rgb(105, 139, 105)', '#050505': 'rgb(5, 5, 5)', '#CD661D': 'rgb(205, 102, 29)', '#FAFAD2': 'rgb(250, 250, 210)', '#CDCDC1': 'rgb(205, 205, 193)', '#FFF8DC': 'rgb(255, 248, 220)', '#A8A8A8': 'rgb(168, 168, 168)', '#B452CD': 'rgb(180, 82, 205)', '#D2B48C': 'rgb(210, 180, 140)', '#8EE5EE': 'rgb(142, 229, 238)', '#483D8B': 'rgb(72, 61, 139)', '#BBFFFF': 'rgb(187, 255, 255)', '#0000FF': 'rgb(0, 0, 255)', '#EE6AA7': 'rgb(238, 106, 167)', '#EE7942': 'rgb(238, 121, 66)', '#00CD00': 'rgb(0, 205, 0)', '#141414': 'rgb(20, 20, 20)', '#9ACD32': 'rgb(154, 205, 50)', '#C71585': 'rgb(199, 21, 133)', '#EE9A00': 'rgb(238, 154, 0)', '#CAFF70': 'rgb(202, 255, 112)', '#F5F5F5': 'rgb(245, 245, 245)', '#32CD32': 'rgb(50, 205, 50)', '#00EE00': 'rgb(0, 238, 0)', '#FFB6C1': 'rgb(255, 182, 193)', '#8B1A1A': 'rgb(139, 26, 26)', '#00B2EE': 'rgb(0, 178, 238)', '#20B2AA': 'rgb(32, 178, 170)', '#707070': 'rgb(112, 112, 112)', '#009ACD': 'rgb(0, 154, 205)', '#A52A2A': 'rgb(165, 42, 42)', '#EE6363': 'rgb(238, 99, 99)', '#FAF0E6': 'rgb(250, 240, 230)', '#8B7D7B': 'rgb(139, 125, 123)', '#9A32CD': 'rgb(154, 50, 205)', '#1F1F1F': 'rgb(31, 31, 31)', '#E8E8E8': 'rgb(232, 232, 232)', '#7E7E7E': 'rgb(126, 126, 126)', '#7A8B8B': 'rgb(122, 139, 139)', '#CD7054': 'rgb(205, 112, 84)', '#9FB6CD': 'rgb(159, 182, 205)', '#CDC9A5': 'rgb(205, 201, 165)', '#D02090': 'rgb(208, 32, 144)', '#00FFFF': 'rgb(0, 255, 255)', '#2B2B2B': 'rgb(43, 43, 43)', '#858585': 'rgb(133, 133, 133)', '#A3A3A3': 'rgb(163, 163, 163)', '#CD0000': 'rgb(205, 0, 0)', '#43CD80': 'rgb(67, 205, 128)', '#FA8072': 'rgb(250, 128, 114)', '#FFDAB9': 'rgb(255, 218, 185)', '#D2691E': 'rgb(210, 105, 30)', '#FF1493': 'rgb(255, 20, 147)', '#EED2EE': 'rgb(238, 210, 238)', '#030303': 'rgb(3, 3, 3)', '#8B8B7A': 'rgb(139, 139, 122)'}
diff --git a/frontend/imgrid/colors/colors/js/ditherbackground.gif b/frontend/imgrid/colors/colors/js/ditherbackground.gif
new file mode 100755
index 0000000..670df08
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/ditherbackground.gif
Binary files differ
diff --git a/frontend/imgrid/colors/colors/js/goldenfunctions.js b/frontend/imgrid/colors/colors/js/goldenfunctions.js
new file mode 100755
index 0000000..ab39533
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/goldenfunctions.js
@@ -0,0 +1,33 @@
+function regolden(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num/ratio)
+ return newnum
+ }
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newval = goldenize(result)
+ propval = newval.toString()+'px'
+ if(propertystr == 'height'){
+ $(idandselectr).css('width', propval)
+ }
+ else if(propertystr == 'width'){
+ $(idandselectr).css('height', propval)
+ }
+ }
+
diff --git a/frontend/imgrid/colors/colors/js/hexrgbnametoggle.js b/frontend/imgrid/colors/colors/js/hexrgbnametoggle.js
new file mode 100755
index 0000000..60567a5
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/hexrgbnametoggle.js
@@ -0,0 +1,148 @@
+///threewayselector for what goes in the divs/////////////////////
+///MUST SWITCH TO FOUR WAY WITH RGB///////////////////////////////
+var infostate = 0
+var stringvalue = "CLICK TO CHOOSE THE COLOR"
+function switchinfo()
+ {
+ if(infostate == 1)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(divtoname[divlist[i]])
+ };
+ infostate = 2
+ $('#infospace').html('(NAMES)');
+ }
+ else if(infostate == 0)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html("")
+ };
+ infostate = 1
+ $('#infospace').html('(NONE)');
+ }
+ else if(infostate == 2)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(nametohex[divtoname[divlist[i]]])
+ };
+ infostate = 3
+ $('#infospace').html('(HEXES)');
+ }
+ else if(infostate == 3)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(hextorgb[nametohex[divtoname[divlist[i]]]]);
+ // $(divlist[i]).html($(divlist[i]).css('background-color'));
+ }
+ infostate = 0
+ $('#infospace').html('(RGBS)');
+ }
+
+ }
+switchinfo()
+$('#infoswitch').hover(function(){$('#infospace').show()}, function(){$('#infospace').hide('slow')} )
+$('#infoswitch').click(function(){switchinfo()})
+/////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+//takes a div name and returns the colorname associated with that div
+var rgb
+var selectedrgb
+var colorname
+function showcolorname(divstr)
+ {
+ rgb = $('#'+divstr).css('background-color');
+ colorname = divtoname['#'+divstr]
+ // hex = nametohex[colorname]
+ imname = colorname
+ // imname = hextoname[hex]
+ if (hexes === true)
+ {
+ imname = rgb
+ }
+ else if (rgbs === true)
+ {
+ imname = colorname
+ }
+ else if (names === true)
+ {
+ imname = rgbtohex[rgb]
+ }
+ return imname
+ }
+function bigname(divstr)
+ {
+ stringvalue = showcolorname(divstr)
+ $('#colornames').html(stringvalue)
+ }
+$('.colors').hover(function()
+ {
+ thabg = $(this).css('background-color')
+ bigname(this.id);
+ });
+
+//////////////////////////////////////////////////////////////////////
+//THIS CONTROLS THE VALUE OF THE SELECTION ETC
+//MUST ADD RGB VALUES TO THIS AND MAKE IT A THREE-WAY SELECTOR
+var names = true;
+var hexes = false;
+var rgbs = false;
+var selectedname = "";
+function hexswitch()
+ {
+ if(names == true)
+ {
+ hexes = false;
+ rgbs = false;
+ $('#hexswitch').html('CLICK TO SWITCH TO RGB VALUES');
+ $('#namespace').val(selectedname);
+ names = false;
+ rgbs = true;
+ }
+ else if(hexes == true)
+ {
+ rgbs = false;
+ names = false;
+ $('#hexswitch').html('CLICK TO SWITCH TO COLOR NAMES');
+ $('#namespace').val(rgbtohex[selectedrgb]);
+ hexes = false;
+ names = true;
+ }
+ else if(rgbs == true)
+ {
+ names = false;
+ hexes = false;
+ $('#hexswitch').html('CLICK TO SWITCH TO HEX VALUES')
+ $('#namespace').val(selectedrgb)
+ rgbs = false;
+ hexes = true;
+ }
+ }
+hexswitch()
+$('#hexswitch').click(function(){hexswitch()});
+//////////////////////////////////////////////////////
+//////////CLICK TO PUT THE COLORS IN//////////////////
+function putitin()
+ {
+ if (rgbs === true)
+ {thecolor = selectedname}
+ if (hexes === true)
+ {thecolor = selectedrgb}
+ if (names === true)
+ {thecolor = rgbtohex[selectedrgb]}
+ $('#namespace').val(thecolor)
+ $('#preview').css({'background-color':selectedrgb,'border-style':'none'})
+ $('#vasebackground').css('background-color',selectedrgb)
+ }
+$('.colors').click(function()
+ {
+ selectednameid = $(this).attr('id')
+ selectedname = divtoname['#'+selectednameid]
+ selectedrgb = $(this).css('background-color');
+ putitin()
+ });
+
+
diff --git a/frontend/imgrid/colors/colors/js/hoverbackground.jpg b/frontend/imgrid/colors/colors/js/hoverbackground.jpg
new file mode 100755
index 0000000..c1ef116
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/hoverbackground.jpg
Binary files differ
diff --git a/frontend/imgrid/colors/colors/js/hovercss.js b/frontend/imgrid/colors/colors/js/hovercss.js
new file mode 100755
index 0000000..0223b8b
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/hovercss.js
@@ -0,0 +1,31 @@
+//HOVER CSS SCRIPT//
+var old = {};
+function hovercss(sel, uno)
+ {
+ var chng = {};
+ chng['color'] = 'white';
+ chng['text-shadow'] = 'black 1px 2px';
+ chng['background-image'] = 'url(js/hoverbackground.jpg)';
+ if(uno == 'over')
+ {
+ for(var key in chng){
+ old[key] = $('#'+sel).css(key)
+ }
+ for(var key in chng){
+ $('#'+sel).css(key, chng[key])
+ }
+ }
+ if(uno == 'out'){
+ for(var key in old){
+ $('#'+sel).css(key, old[key])
+ }
+ }
+ };
+$('.theswitches').hover(function()
+ {
+ hovercss(this.id, 'over')
+ }, function()
+ {
+ hovercss(this.id, 'out')
+ });
+
diff --git a/frontend/imgrid/colors/colors/js/iftransparentcss.js b/frontend/imgrid/colors/colors/js/iftransparentcss.js
new file mode 100755
index 0000000..fd4fe6c
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/iftransparentcss.js
@@ -0,0 +1,25 @@
+///if transparent etc styling
+var transcss = {
+ 'color':'#141414','box-shadow':'10px 10px 5px #141414',
+ 'background-color':'#D1D1D1','color':'#141414',
+ 'border-width':'2px','border-style':'outset','cursor':'pointer'}
+$('#transbutton').css(transcss)
+var hovertrans = {
+ 'background-color':'DarkGrey','color':'#383838','box-shadow':'5px 5px 2px #141414'
+ }
+$('#transbutton').hover(function(){$('#transbutton').css(hovertrans)},function(){$('#transbutton').css(transcss)})
+
+function transparent()
+ {
+ $('#namespace').val('transparent');
+ $('#preview').css({'background-color':'transparent','border-style':'dashed','border-width':'2px'})
+ }
+$('#transbutton').click(function()
+ {
+ transparent()
+ $('#colornames').html('transparent')
+ $('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+ $('#extra').html('<br><br><span style="color:red;background-color:black;border-color:red; border-width:1px; border-style:solid; font-size:14px;">note: the .jpg image format does not support transparency</span>')
+ });
+
+
diff --git a/frontend/imgrid/colors/colors/js/jquery-1.6.4.min.js b/frontend/imgrid/colors/colors/js/jquery-1.6.4.min.js
new file mode 100755
index 0000000..628ed9b
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/jquery-1.6.4.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */
+(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bA.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bW(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bP,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bW(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bW(a,c,d,e,"*",g));return l}function bV(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bL),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function by(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bt:bu;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bf(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function V(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(Q.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(w,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.4",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(!b)return-1;if(I)return I.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g+"With"](this===b?d:this,[h])}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u,v;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete
+t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,M(a.origType,a.selector),f.extend({},a,{handler:L,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,M(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?D:C):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=D;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=D;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=D,this.stopPropagation()},isDefaultPrevented:C,isPropagationStopped:C,isImmediatePropagationStopped:C};var E=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},F=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?F:E,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?F:E)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="submit"||c==="image")&&f(b).closest("form").length&&J("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&J("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var G,H=function(a){var b=f.nodeName(a,"input")?a.type:"",c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=H(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",H(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in G)f.event.add(this,c+".specialChange",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var K={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||C,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=w.exec(h),k="",j&&(k=j[0],h=h.replace(w,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,K[h]?(a.push(K[h]+k),h=h+k):h=(K[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+M(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+M(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var N=/Until$/,O=/^(?:parents|prevUntil|prevAll)/,P=/,/,Q=/^.[^:#\[\.,]*$/,R=Array.prototype.slice,S=f.expr.match.POS,T={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(V(this,a,!1),"not",a)},filter:function(a){return this.pushStack(V(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=S.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!T[a]?f.unique(e):e,(this.length>1||P.test(d))&&O.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|object|embed|option|style)/i,bb=/checked\s*(?:[^=]|=\s*.checked.)/i,bc=/\/(java|ecma)script/i,bd=/^\s*<!(?:\[CDATA\[|\-\-)/,be={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!be[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bb.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bf(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bl)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!ba.test(a[0])&&(f.support.checkClone||!bb.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean
+(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]&&bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bk(k[i]);else bk(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bc.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bm=/alpha\([^)]*\)/i,bn=/opacity=([^)]*)/,bo=/([A-Z]|^ms)/g,bp=/^-?\d+(?:px)?$/i,bq=/^-?\d/,br=/^([\-+])=([\-+.\de]+)/,bs={position:"absolute",visibility:"hidden",display:"block"},bt=["Left","Right"],bu=["Top","Bottom"],bv,bw,bx;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bv(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=br.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bv)return bv(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return by(a,b,d);f.swap(a,bs,function(){e=by(a,b,d)});return e}},set:function(a,b){if(!bp.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bm,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bv(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bw=function(a,c){var d,e,g;c=c.replace(bo,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bx=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bp.test(d)&&bq.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bv=bw||bx,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\[\]$/,bB=/\r?\n/g,bC=/#.*$/,bD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\/\//,bI=/\?/,bJ=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bK=/^(?:select|textarea)/i,bL=/\s+/,bM=/([?&])_=[^&]*/,bN=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=["*/"]+["*"];try{bR=e.href}catch(bU){bR=c.createElement("a"),bR.href="",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bJ,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,"\r\n")}}):{name:b.name,value:c.replace(bB,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=b$(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bC,"").replace(bH,bS[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bL),d.crossDomain==null&&(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]&&r[2]==bS[2]&&(r[3]||(r[1]==="http:"?80:443))==(bS[3]||(bS[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bI.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,"$1_="+x);d.url=y+(y===d.url?(bI.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bT+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bz,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cr(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cq("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cq("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cr(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cq("show",1),slideUp:cq("hide",1),slideToggle:cq("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return d.step(a)}var d=this,e=f.fx;this.startTime=cn||co(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&f.timers.push(g)&&!cl&&(cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||co(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cs=/^t(?:able|d|h)$/i,ct=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cu(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cs.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!ct.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file
diff --git a/frontend/imgrid/colors/colors/js/jquery.cookie.js b/frontend/imgrid/colors/colors/js/jquery.cookie.js
new file mode 100755
index 0000000..6036754
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/jquery.cookie.js
@@ -0,0 +1,96 @@
+/**
+ * Cookie plugin
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+
+/**
+ * Create a cookie with the given name and value and other optional parameters.
+ *
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Set the value of a cookie.
+ * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
+ * @desc Create a cookie with all available options.
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Create a session cookie.
+ * @example $.cookie('the_cookie', null);
+ * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
+ * used when the cookie was set.
+ *
+ * @param String name The name of the cookie.
+ * @param String value The value of the cookie.
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
+ * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
+ * If set to null or omitted, the cookie will be a session cookie and will not be retained
+ * when the the browser exits.
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
+ * require a secure protocol (like HTTPS).
+ * @type undefined
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+
+/**
+ * Get the value of a cookie with the given name.
+ *
+ * @example $.cookie('the_cookie');
+ * @desc Get the value of a cookie.
+ *
+ * @param String name The name of the cookie.
+ * @return The value of the cookie.
+ * @type String
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+jQuery.cookie = function(name, value, options) {
+ if (typeof value != 'undefined') { // name and value given, set cookie
+ options = options || {};
+ if (value === null) {
+ value = '';
+ options.expires = -1;
+ }
+ var expires = '';
+ if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
+ var date;
+ if (typeof options.expires == 'number') {
+ date = new Date();
+ date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
+ } else {
+ date = options.expires;
+ }
+ expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
+ }
+ // CAUTION: Needed to parenthesize options.path and options.domain
+ // in the following expressions, otherwise they evaluate to undefined
+ // in the packed version for some reason...
+ var path = options.path ? '; path=' + (options.path) : '';
+ var domain = options.domain ? '; domain=' + (options.domain) : '';
+ var secure = options.secure ? '; secure' : '';
+ document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
+ } else { // only name given, get cookie
+ var cookieValue = null;
+ if (document.cookie && document.cookie != '') {
+ var cookies = document.cookie.split(';');
+ for (var i = 0; i < cookies.length; i++) {
+ var cookie = jQuery.trim(cookies[i]);
+ // Does this cookie string begin with the name we want?
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+ break;
+ }
+ }
+ }
+ return cookieValue;
+ }
+}; \ No newline at end of file
diff --git a/frontend/imgrid/colors/colors/js/setupdimensions.js b/frontend/imgrid/colors/colors/js/setupdimensions.js
new file mode 100755
index 0000000..a496e87
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/setupdimensions.js
@@ -0,0 +1,173 @@
+//setup dimensions
+//everything needs to be positioned according to
+//window.innerWidth
+
+//step 1...forget about the rollover css for now
+//step 2...make sure ratios are in place
+
+//function makebig(divstr)
+// {
+/// newheight = goldenize(colorsheight)
+/// $('#'+divstr).height(newheight)
+// }
+//function makesmall(divstr)
+// {
+// $('#'+divstr).height(colorsheight)
+// }
+//////////////////
+/////////////this function runs a for loop
+////////////and makes it so that the colors are related
+//////////by width to the innerwidth of the window
+widthratio = 7
+numberacross = 10
+
+
+function shrinkwidth(arg, ratio)
+ {
+ for(var i=0; i < ratio; i++)
+ {
+ arg = regolden(arg)
+ }
+ division = Math.round(arg)
+ return division
+ }
+////////////////right now the ratio is set at 1/6th
+var colorsh
+function makecolorswidth()
+ {
+ colorswidth = shrinkwidth(windowWidth, widthratio)
+ $('.colors').css('width', colorswidth.toString()+'px')
+ }
+
+function makecolorsheight()
+ {
+ colorsheight = regolden(colorswidth)
+ propval = colorsheight.toString()+'px'
+ $('.colors').css('height', propval)
+ }
+//the following function sets up the font sizes
+//inrelation to the size of the hexswitch font
+function getcontainerwidth()
+ {
+ basis = $('.colors').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ secondbasis = '2px'
+ secondbasis = parseInt(secondbasis.slice(0,-2))
+ widthval = (secondbasis*(numberacross*2))+(basis*numberacross)+(basis*.44)//(goldenize(basis)-basis)
+ widthval = widthval.toString()+'px'
+ return widthval
+ }
+function makecontainerwidth()
+ {
+ var containerwidth = getcontainerwidth()
+ $('#container').css('width',containerwidth)
+ }
+function setupsides()
+ {
+ $('#container').css({'position':'relative','z-index':'1'})
+ $('#switches').css('z-index','10')
+ var basis = $('#container').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ remainder = (100-basis)/2
+ widths = regolden(basis)
+ widths = widths.toString()+'px'
+ lateralbasis = regolden(remainder)
+ leftside = toString(lateralbasis)+'%'
+ rightside = toString(100-lateralbasis)+'%'
+ $('#colornames').css('left', leftside)
+ $('#switches').css({'width': widths, 'left': rightside, 'overflow':'hidden','top':'118px'})
+ }
+//////preview dimensions is for the
+///preview box inside the switches container
+function previewdimensions()
+ {
+ first = $('#switches').css('width')
+ first = parseInt(first.slice(0,-2))
+ width = regolden(first)
+ height = regolden(width)
+ width = width.toString()+'px'
+ height = height.toString()+'px'
+ $('#preview').css({'width':width, 'height':height})
+ }
+/////////////////////////////
+////font-size is related to hexswitch font-size
+////also the width of the switches container
+var fontratioone
+function setupfonts()
+ {
+ fontratioone = shrinkwidth(windowWidth, 9)
+ $('.theswitches').css('font-size',fontratioone)
+ fontratiotwo = shrinkwidth(windowWidth, 8)
+ $('#nameholder, #title, #namespace').css('font-size',fontratiotwo)
+ $('#colornames').css('font-size', goldenize(fontratiotwo)+'px')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ var transfont = regolden(fontratioone)
+ $('#transparent, #extra').css({'width':'100%','font-size':transfont})
+ switcheswidth = $('#switches').css('width')
+ $('#namespace, #nameholder').css('width', '100%')
+ }
+function setupdimensions()
+ {
+ if(window.innerWidth > 933)
+ {windowWidth = window.innerWidth}
+ else
+ {windowWidth = 933}
+ $('#container').css('font-size','0');
+ $('.colors').css('font-size','9px');
+ makecolorswidth()
+ makecolorsheight()
+ makecontainerwidth()
+ setupfonts()
+ setupsides()
+ makegolden('#switches','width')
+ previewdimensions()
+ $('#namespace').css('width', 'inherit')
+ $('#nameholder').css('width', 'inherit')
+ $('#transparent').css({'float':'bottom','width':'inherit'})
+ $('.colors').css({'margin-top': '2px','margin-right':'2px'});
+ }
+$(window).resize(function()
+ {
+ setupdimensions()
+ });
+var colorsheight
+var colorswidth
+setupdimensions()
+function makebig(divstr)
+ {
+ newheight = goldenize(colorsheight)
+ $('#'+divstr).height(newheight)
+ }
+function makesmall(divstr)
+ {
+ $('#'+divstr).height(colorsheight)
+ }
+var firstwidth
+$('.colors').mouseover(function()
+ {
+ $('#extra').html("");
+ if(this.id != 'd0')
+ {
+ $(this).css({'height':goldenize(colorsheight),'width':goldenize(colorswidth)})
+ firstwidth = $('#container').css('width')
+ newwidth = firstwidth+goldenize(colorswidth)-colorswidth
+ $('#container').css('width',newwidth)
+// makebig(this.id);
+ // makegolden('#'+this.id, 'height')
+ }
+ });
+
+
+
+
+$('.colors').mouseout(function()
+ {
+ $(this).css('height',colorsheight)
+ $(this).css('width', colorswidth)
+ $('#container').css('width',firstwidth)
+ });
+
+$(".colors").hover(function(){
+$('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+ });
+
diff --git a/frontend/imgrid/colors/colors/js/wrkshp/colors.html b/frontend/imgrid/colors/colors/js/wrkshp/colors.html
new file mode 100755
index 0000000..0ef22f9
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/wrkshp/colors.html
@@ -0,0 +1,5429 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- saved from url=(0124)https://mail.google.com/mail/?ui=2&ik=8c5c6e41c0&view=att&th=131a60939ee4c454&attid=0.1&disp=inline&realattid=f_gr2htzs60&zw -->
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head>
+<style type="text/css">
+*
+ {
+ font-family: sans-serif;
+ }
+</style>
+<body>
+
+
+
+<div>
+<h1><a></a>List of Color Names</h1>
+<div>
+
+<p>a list of named colors for use with PHOTOBLASTER:</p>
+
+<table>
+<tbody>
+ <tr>
+ <th align="right">Name</th>
+ <th align="center">Color</th>
+ <th align="left">RGB</th>
+ <th align="left">Hex</th>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow</td>
+ <td align="center" style="background-color:rgb(255, 250, 250)">snow</td>
+ <td align="left">rgb(255, 250, 250)</td>
+ <td align="left">#FFFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow1</td>
+ <td align="center" style="background-color:rgb(255, 250, 250)">snow1</td>
+ <td align="left">rgb(255, 250, 250)</td>
+ <td align="left">#FFFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow2</td>
+ <td align="center" style="background-color:rgb(238, 233, 233)">snow2</td>
+ <td align="left">rgb(238, 233, 233)</td>
+ <td align="left">#EEE9E9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown1</td>
+ <td align="center" style="background-color:rgb(255, 193, 193)">RosyBrown1</td>
+ <td align="left">rgb(255, 193, 193)</td>
+ <td align="left">#FFC1C1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown2</td>
+ <td align="center" style="background-color:rgb(238, 180, 180)">RosyBrown2</td>
+ <td align="left">rgb(238, 180, 180)</td>
+ <td align="left">#EEB4B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow3</td>
+ <td align="center" style="background-color:rgb(205, 201, 201)">snow3</td>
+ <td align="left">rgb(205, 201, 201)</td>
+ <td align="left">#CDC9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCoral</td>
+ <td align="center" style="background-color:rgb(240, 128, 128)">LightCoral</td>
+ <td align="left">rgb(240, 128, 128)</td>
+ <td align="left">#F08080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed1</td>
+ <td align="center" style="background-color:rgb(255, 106, 106)">IndianRed1</td>
+ <td align="left">rgb(255, 106, 106)</td>
+ <td align="left">#FF6A6A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown3</td>
+ <td align="center" style="background-color:rgb(205, 155, 155)">RosyBrown3</td>
+ <td align="left">rgb(205, 155, 155)</td>
+ <td align="left">#CD9B9B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed2</td>
+ <td align="center" style="background-color:rgb(238, 99, 99)">IndianRed2</td>
+ <td align="left">rgb(238, 99, 99)</td>
+ <td align="left">#EE6363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown</td>
+ <td align="center" style="background-color:rgb(188, 143, 143)">RosyBrown</td>
+ <td align="left">rgb(188, 143, 143)</td>
+ <td align="left">#BC8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown1</td>
+ <td align="center" style="background-color:rgb(255, 64, 64)">brown1</td>
+ <td align="left">rgb(255, 64, 64)</td>
+ <td align="left">#FF4040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick1</td>
+ <td align="center" style="background-color:rgb(255, 48, 48)">firebrick1</td>
+ <td align="left">rgb(255, 48, 48)</td>
+ <td align="left">#FF3030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown2</td>
+ <td align="center" style="background-color:rgb(238, 59, 59)">brown2</td>
+ <td align="left">rgb(238, 59, 59)</td>
+ <td align="left">#EE3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed</td>
+ <td align="center" style="background-color:rgb(205, 92, 92)">IndianRed</td>
+ <td align="left">rgb(205, 92, 92)</td>
+ <td align="left">#CD5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed3</td>
+ <td align="center" style="background-color:rgb(205, 85, 85)">IndianRed3</td>
+ <td align="left">rgb(205, 85, 85)</td>
+ <td align="left">#CD5555</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick2</td>
+ <td align="center" style="background-color:rgb(238, 44, 44)">firebrick2</td>
+ <td align="left">rgb(238, 44, 44)</td>
+ <td align="left">#EE2C2C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow4</td>
+ <td align="center" style="background-color:rgb(139, 137, 137)">snow4</td>
+ <td align="left">rgb(139, 137, 137)</td>
+ <td align="left">#8B8989</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown3</td>
+ <td align="center" style="background-color:rgb(205, 51, 51)">brown3</td>
+ <td align="left">rgb(205, 51, 51)</td>
+ <td align="left">#CD3333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red</td>
+ <td align="center" style="background-color:rgb(255, 0, 0)">red</td>
+ <td align="left">rgb(255, 0, 0)</td>
+ <td align="left">#FF0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red1</td>
+ <td align="center" style="background-color:rgb(255, 0, 0)">red1</td>
+ <td align="left">rgb(255, 0, 0)</td>
+ <td align="left">#FF0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown4</td>
+ <td align="center" style="background-color:rgb(139, 105, 105)">RosyBrown4</td>
+ <td align="left">rgb(139, 105, 105)</td>
+ <td align="left">#8B6969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick3</td>
+ <td align="center" style="background-color:rgb(205, 38, 38)">firebrick3</td>
+ <td align="left">rgb(205, 38, 38)</td>
+ <td align="left">#CD2626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red2</td>
+ <td align="center" style="background-color:rgb(238, 0, 0)">red2</td>
+ <td align="left">rgb(238, 0, 0)</td>
+ <td align="left">#EE0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick</td>
+ <td align="center" style="background-color:rgb(178, 34, 34)">firebrick</td>
+ <td align="left">rgb(178, 34, 34)</td>
+ <td align="left">#B22222</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown</td>
+ <td align="center" style="background-color:rgb(165, 42, 42)">brown</td>
+ <td align="left">rgb(165, 42, 42)</td>
+ <td align="left">#A52A2A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red3</td>
+ <td align="center" style="background-color:rgb(205, 0, 0)">red3</td>
+ <td align="left">rgb(205, 0, 0)</td>
+ <td align="left">#CD0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed4</td>
+ <td align="center" style="background-color:rgb(139, 58, 58)">IndianRed4</td>
+ <td align="left">rgb(139, 58, 58)</td>
+ <td align="left">#8B3A3A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown4</td>
+ <td align="center" style="background-color:rgb(139, 35, 35)">brown4</td>
+ <td align="left">rgb(139, 35, 35)</td>
+ <td align="left">#8B2323</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick4</td>
+ <td align="center" style="background-color:rgb(139, 26, 26)">firebrick4</td>
+ <td align="left">rgb(139, 26, 26)</td>
+ <td align="left">#8B1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkRed</td>
+ <td align="center" style="background-color:rgb(139, 0, 0)">DarkRed</td>
+ <td align="left">rgb(139, 0, 0)</td>
+ <td align="left">#8B0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red4</td>
+ <td align="center" style="background-color:rgb(139, 0, 0)">red4</td>
+ <td align="left">rgb(139, 0, 0)</td>
+ <td align="left">#8B0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon</td>
+ <td align="center" style="background-color:rgb(128, 0, 0)">maroon</td>
+ <td align="left">rgb(128, 0, 0)</td>
+ <td align="left">#800000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink1</td>
+ <td align="center" style="background-color:rgb(255, 174, 185)">LightPink1</td>
+ <td align="left">rgb(255, 174, 185)</td>
+ <td align="left">#FFAEB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink3</td>
+ <td align="center" style="background-color:rgb(205, 140, 149)">LightPink3</td>
+ <td align="left">rgb(205, 140, 149)</td>
+ <td align="left">#CD8C95</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink4</td>
+ <td align="center" style="background-color:rgb(139, 95, 101)">LightPink4</td>
+ <td align="left">rgb(139, 95, 101)</td>
+ <td align="left">#8B5F65</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink2</td>
+ <td align="center" style="background-color:rgb(238, 162, 173)">LightPink2</td>
+ <td align="left">rgb(238, 162, 173)</td>
+ <td align="left">#EEA2AD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink</td>
+ <td align="center" style="background-color:rgb(255, 182, 193)">LightPink</td>
+ <td align="left">rgb(255, 182, 193)</td>
+ <td align="left">#FFB6C1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink</td>
+ <td align="center" style="background-color:rgb(255, 192, 203)">pink</td>
+ <td align="left">rgb(255, 192, 203)</td>
+ <td align="left">#FFC0CB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">crimson</td>
+ <td align="center" style="background-color:rgb(220, 20, 60)">crimson</td>
+ <td align="left">rgb(220, 20, 60)</td>
+ <td align="left">#DC143C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink1</td>
+ <td align="center" style="background-color:rgb(255, 181, 197)">pink1</td>
+ <td align="left">rgb(255, 181, 197)</td>
+ <td align="left">#FFB5C5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink2</td>
+ <td align="center" style="background-color:rgb(238, 169, 184)">pink2</td>
+ <td align="left">rgb(238, 169, 184)</td>
+ <td align="left">#EEA9B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink3</td>
+ <td align="center" style="background-color:rgb(205, 145, 158)">pink3</td>
+ <td align="left">rgb(205, 145, 158)</td>
+ <td align="left">#CD919E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink4</td>
+ <td align="center" style="background-color:rgb(139, 99, 108)">pink4</td>
+ <td align="left">rgb(139, 99, 108)</td>
+ <td align="left">#8B636C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed4</td>
+ <td align="center" style="background-color:rgb(139, 71, 93)">PaleVioletRed4</td>
+ <td align="left">rgb(139, 71, 93)</td>
+ <td align="left">#8B475D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed</td>
+ <td align="center" style="background-color:rgb(219, 112, 147)">PaleVioletRed</td>
+ <td align="left">rgb(219, 112, 147)</td>
+ <td align="left">#DB7093</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed2</td>
+ <td align="center" style="background-color:rgb(238, 121, 159)">PaleVioletRed2</td>
+ <td align="left">rgb(238, 121, 159)</td>
+ <td align="left">#EE799F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed1</td>
+ <td align="center" style="background-color:rgb(255, 130, 171)">PaleVioletRed1</td>
+ <td align="left">rgb(255, 130, 171)</td>
+ <td align="left">#FF82AB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed3</td>
+ <td align="center" style="background-color:rgb(205, 104, 137)">PaleVioletRed3</td>
+ <td align="left">rgb(205, 104, 137)</td>
+ <td align="left">#CD6889</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush</td>
+ <td align="center" style="background-color:rgb(255, 240, 245)">LavenderBlush</td>
+ <td align="left">rgb(255, 240, 245)</td>
+ <td align="left">#FFF0F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush1</td>
+ <td align="center" style="background-color:rgb(255, 240, 245)">LavenderBlush1</td>
+ <td align="left">rgb(255, 240, 245)</td>
+ <td align="left">#FFF0F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush3</td>
+ <td align="center" style="background-color:rgb(205, 193, 197)">LavenderBlush3</td>
+ <td align="left">rgb(205, 193, 197)</td>
+ <td align="left">#CDC1C5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush2</td>
+ <td align="center" style="background-color:rgb(238, 224, 229)">LavenderBlush2</td>
+ <td align="left">rgb(238, 224, 229)</td>
+ <td align="left">#EEE0E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush4</td>
+ <td align="center" style="background-color:rgb(139, 131, 134)">LavenderBlush4</td>
+ <td align="left">rgb(139, 131, 134)</td>
+ <td align="left">#8B8386</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon</td>
+ <td align="center" style="background-color:rgb(176, 48, 96)">maroon</td>
+ <td align="left">rgb(176, 48, 96)</td>
+ <td align="left">#B03060</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink3</td>
+ <td align="center" style="background-color:rgb(205, 96, 144)">HotPink3</td>
+ <td align="left">rgb(205, 96, 144)</td>
+ <td align="left">#CD6090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed3</td>
+ <td align="center" style="background-color:rgb(205, 50, 120)">VioletRed3</td>
+ <td align="left">rgb(205, 50, 120)</td>
+ <td align="left">#CD3278</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed1</td>
+ <td align="center" style="background-color:rgb(255, 62, 150)">VioletRed1</td>
+ <td align="left">rgb(255, 62, 150)</td>
+ <td align="left">#FF3E96</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed2</td>
+ <td align="center" style="background-color:rgb(238, 58, 140)">VioletRed2</td>
+ <td align="left">rgb(238, 58, 140)</td>
+ <td align="left">#EE3A8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed4</td>
+ <td align="center" style="background-color:rgb(139, 34, 82)">VioletRed4</td>
+ <td align="left">rgb(139, 34, 82)</td>
+ <td align="left">#8B2252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink2</td>
+ <td align="center" style="background-color:rgb(238, 106, 167)">HotPink2</td>
+ <td align="left">rgb(238, 106, 167)</td>
+ <td align="left">#EE6AA7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink1</td>
+ <td align="center" style="background-color:rgb(255, 110, 180)">HotPink1</td>
+ <td align="left">rgb(255, 110, 180)</td>
+ <td align="left">#FF6EB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink4</td>
+ <td align="center" style="background-color:rgb(139, 58, 98)">HotPink4</td>
+ <td align="left">rgb(139, 58, 98)</td>
+ <td align="left">#8B3A62</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink</td>
+ <td align="center" style="background-color:rgb(255, 105, 180)">HotPink</td>
+ <td align="left">rgb(255, 105, 180)</td>
+ <td align="left">#FF69B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink</td>
+ <td align="center" style="background-color:rgb(255, 20, 147)">DeepPink</td>
+ <td align="left">rgb(255, 20, 147)</td>
+ <td align="left">#FF1493</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink1</td>
+ <td align="center" style="background-color:rgb(255, 20, 147)">DeepPink1</td>
+ <td align="left">rgb(255, 20, 147)</td>
+ <td align="left">#FF1493</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink2</td>
+ <td align="center" style="background-color:rgb(238, 18, 137)">DeepPink2</td>
+ <td align="left">rgb(238, 18, 137)</td>
+ <td align="left">#EE1289</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink3</td>
+ <td align="center" style="background-color:rgb(205, 16, 118)">DeepPink3</td>
+ <td align="left">rgb(205, 16, 118)</td>
+ <td align="left">#CD1076</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink4</td>
+ <td align="center" style="background-color:rgb(139, 10, 80)">DeepPink4</td>
+ <td align="left">rgb(139, 10, 80)</td>
+ <td align="left">#8B0A50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon1</td>
+ <td align="center" style="background-color:rgb(255, 52, 179)">maroon1</td>
+ <td align="left">rgb(255, 52, 179)</td>
+ <td align="left">#FF34B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon2</td>
+ <td align="center" style="background-color:rgb(238, 48, 167)">maroon2</td>
+ <td align="left">rgb(238, 48, 167)</td>
+ <td align="left">#EE30A7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon3</td>
+ <td align="center" style="background-color:rgb(205, 41, 144)">maroon3</td>
+ <td align="left">rgb(205, 41, 144)</td>
+ <td align="left">#CD2990</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon4</td>
+ <td align="center" style="background-color:rgb(139, 28, 98)">maroon4</td>
+ <td align="left">rgb(139, 28, 98)</td>
+ <td align="left">#8B1C62</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumVioletRed</td>
+ <td align="center" style="background-color:rgb(199, 21, 133)">MediumVioletRed</td>
+ <td align="left">rgb(199, 21, 133)</td>
+ <td align="left">#C71585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed</td>
+ <td align="center" style="background-color:rgb(208, 32, 144)">VioletRed</td>
+ <td align="left">rgb(208, 32, 144)</td>
+ <td align="left">#D02090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid2</td>
+ <td align="center" style="background-color:rgb(238, 122, 233)">orchid2</td>
+ <td align="left">rgb(238, 122, 233)</td>
+ <td align="left">#EE7AE9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid</td>
+ <td align="center" style="background-color:rgb(218, 112, 214)">orchid</td>
+ <td align="left">rgb(218, 112, 214)</td>
+ <td align="left">#DA70D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid1</td>
+ <td align="center" style="background-color:rgb(255, 131, 250)">orchid1</td>
+ <td align="left">rgb(255, 131, 250)</td>
+ <td align="left">#FF83FA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid3</td>
+ <td align="center" style="background-color:rgb(205, 105, 201)">orchid3</td>
+ <td align="left">rgb(205, 105, 201)</td>
+ <td align="left">#CD69C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid4</td>
+ <td align="center" style="background-color:rgb(139, 71, 137)">orchid4</td>
+ <td align="left">rgb(139, 71, 137)</td>
+ <td align="left">#8B4789</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle1</td>
+ <td align="center" style="background-color:rgb(255, 225, 255)">thistle1</td>
+ <td align="left">rgb(255, 225, 255)</td>
+ <td align="left">#FFE1FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle2</td>
+ <td align="center" style="background-color:rgb(238, 210, 238)">thistle2</td>
+ <td align="left">rgb(238, 210, 238)</td>
+ <td align="left">#EED2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum1</td>
+ <td align="center" style="background-color:rgb(255, 187, 255)">plum1</td>
+ <td align="left">rgb(255, 187, 255)</td>
+ <td align="left">#FFBBFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum2</td>
+ <td align="center" style="background-color:rgb(238, 174, 238)">plum2</td>
+ <td align="left">rgb(238, 174, 238)</td>
+ <td align="left">#EEAEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle</td>
+ <td align="center" style="background-color:rgb(216, 191, 216)">thistle</td>
+ <td align="left">rgb(216, 191, 216)</td>
+ <td align="left">#D8BFD8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle3</td>
+ <td align="center" style="background-color:rgb(205, 181, 205)">thistle3</td>
+ <td align="left">rgb(205, 181, 205)</td>
+ <td align="left">#CDB5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum</td>
+ <td align="center" style="background-color:rgb(221, 160, 221)">plum</td>
+ <td align="left">rgb(221, 160, 221)</td>
+ <td align="left">#DDA0DD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">violet</td>
+ <td align="center" style="background-color:rgb(238, 130, 238)">violet</td>
+ <td align="left">rgb(238, 130, 238)</td>
+ <td align="left">#EE82EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum3</td>
+ <td align="center" style="background-color:rgb(205, 150, 205)">plum3</td>
+ <td align="left">rgb(205, 150, 205)</td>
+ <td align="left">#CD96CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle4</td>
+ <td align="center" style="background-color:rgb(139, 123, 139)">thistle4</td>
+ <td align="left">rgb(139, 123, 139)</td>
+ <td align="left">#8B7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">fuchsia</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">fuchsia</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">magenta</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta1</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">magenta1</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum4</td>
+ <td align="center" style="background-color:rgb(139, 102, 139)">plum4</td>
+ <td align="left">rgb(139, 102, 139)</td>
+ <td align="left">#8B668B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta2</td>
+ <td align="center" style="background-color:rgb(238, 0, 238)">magenta2</td>
+ <td align="left">rgb(238, 0, 238)</td>
+ <td align="left">#EE00EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta3</td>
+ <td align="center" style="background-color:rgb(205, 0, 205)">magenta3</td>
+ <td align="left">rgb(205, 0, 205)</td>
+ <td align="left">#CD00CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkMagenta</td>
+ <td align="center" style="background-color:rgb(139, 0, 139)">DarkMagenta</td>
+ <td align="left">rgb(139, 0, 139)</td>
+ <td align="left">#8B008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta4</td>
+ <td align="center" style="background-color:rgb(139, 0, 139)">magenta4</td>
+ <td align="left">rgb(139, 0, 139)</td>
+ <td align="left">#8B008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple</td>
+ <td align="center" style="background-color:rgb(128, 0, 128)">purple</td>
+ <td align="left">rgb(128, 0, 128)</td>
+ <td align="left">#800080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid</td>
+ <td align="center" style="background-color:rgb(186, 85, 211)">MediumOrchid</td>
+ <td align="left">rgb(186, 85, 211)</td>
+ <td align="left">#BA55D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid1</td>
+ <td align="center" style="background-color:rgb(224, 102, 255)">MediumOrchid1</td>
+ <td align="left">rgb(224, 102, 255)</td>
+ <td align="left">#E066FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid2</td>
+ <td align="center" style="background-color:rgb(209, 95, 238)">MediumOrchid2</td>
+ <td align="left">rgb(209, 95, 238)</td>
+ <td align="left">#D15FEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid3</td>
+ <td align="center" style="background-color:rgb(180, 82, 205)">MediumOrchid3</td>
+ <td align="left">rgb(180, 82, 205)</td>
+ <td align="left">#B452CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid4</td>
+ <td align="center" style="background-color:rgb(122, 55, 139)">MediumOrchid4</td>
+ <td align="left">rgb(122, 55, 139)</td>
+ <td align="left">#7A378B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkViolet</td>
+ <td align="center" style="background-color:rgb(148, 0, 211)">DarkViolet</td>
+ <td align="left">rgb(148, 0, 211)</td>
+ <td align="left">#9400D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid</td>
+ <td align="center" style="background-color:rgb(153, 50, 204)">DarkOrchid</td>
+ <td align="left">rgb(153, 50, 204)</td>
+ <td align="left">#9932CC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid1</td>
+ <td align="center" style="background-color:rgb(191, 62, 255)">DarkOrchid1</td>
+ <td align="left">rgb(191, 62, 255)</td>
+ <td align="left">#BF3EFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid3</td>
+ <td align="center" style="background-color:rgb(154, 50, 205)">DarkOrchid3</td>
+ <td align="left">rgb(154, 50, 205)</td>
+ <td align="left">#9A32CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid2</td>
+ <td align="center" style="background-color:rgb(178, 58, 238)">DarkOrchid2</td>
+ <td align="left">rgb(178, 58, 238)</td>
+ <td align="left">#B23AEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid4</td>
+ <td align="center" style="background-color:rgb(104, 34, 139)">DarkOrchid4</td>
+ <td align="left">rgb(104, 34, 139)</td>
+ <td align="left">#68228B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple</td>
+ <td align="center" style="background-color:rgb(160, 32, 240)">purple</td>
+ <td align="left">rgb(160, 32, 240)</td>
+ <td align="left">#A020F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">indigo</td>
+ <td align="center" style="background-color:rgb( 75, 0, 130)">indigo</td>
+ <td align="left">rgb( 75, 0, 130)</td>
+ <td align="left">#4B0082</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">BlueViolet</td>
+ <td align="center" style="background-color:rgb(138, 43, 226)">BlueViolet</td>
+ <td align="left">rgb(138, 43, 226)</td>
+ <td align="left">#8A2BE2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple2</td>
+ <td align="center" style="background-color:rgb(145, 44, 238)">purple2</td>
+ <td align="left">rgb(145, 44, 238)</td>
+ <td align="left">#912CEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple3</td>
+ <td align="center" style="background-color:rgb(125, 38, 205)">purple3</td>
+ <td align="left">rgb(125, 38, 205)</td>
+ <td align="left">#7D26CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple4</td>
+ <td align="center" style="background-color:rgb( 85, 26, 139)">purple4</td>
+ <td align="left">rgb( 85, 26, 139)</td>
+ <td align="left">#551A8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple1</td>
+ <td align="center" style="background-color:rgb(155, 48, 255)">purple1</td>
+ <td align="left">rgb(155, 48, 255)</td>
+ <td align="left">#9B30FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple</td>
+ <td align="center" style="background-color:rgb(147, 112, 219)">MediumPurple</td>
+ <td align="left">rgb(147, 112, 219)</td>
+ <td align="left">#9370DB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple1</td>
+ <td align="center" style="background-color:rgb(171, 130, 255)">MediumPurple1</td>
+ <td align="left">rgb(171, 130, 255)</td>
+ <td align="left">#AB82FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple2</td>
+ <td align="center" style="background-color:rgb(159, 121, 238)">MediumPurple2</td>
+ <td align="left">rgb(159, 121, 238)</td>
+ <td align="left">#9F79EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple3</td>
+ <td align="center" style="background-color:rgb(137, 104, 205)">MediumPurple3</td>
+ <td align="left">rgb(137, 104, 205)</td>
+ <td align="left">#8968CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple4</td>
+ <td align="center" style="background-color:rgb( 93, 71, 139)">MediumPurple4</td>
+ <td align="left">rgb( 93, 71, 139)</td>
+ <td align="left">#5D478B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateBlue</td>
+ <td align="center" style="background-color:rgb( 72, 61, 139)">DarkSlateBlue</td>
+ <td align="left">rgb( 72, 61, 139)</td>
+ <td align="left">#483D8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateBlue</td>
+ <td align="center" style="background-color:rgb(132, 112, 255)">LightSlateBlue</td>
+ <td align="left">rgb(132, 112, 255)</td>
+ <td align="left">#8470FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSlateBlue</td>
+ <td align="center" style="background-color:rgb(123, 104, 238)">MediumSlateBlue</td>
+ <td align="left">rgb(123, 104, 238)</td>
+ <td align="left">#7B68EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue</td>
+ <td align="center" style="background-color:rgb(106, 90, 205)">SlateBlue</td>
+ <td align="left">rgb(106, 90, 205)</td>
+ <td align="left">#6A5ACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue1</td>
+ <td align="center" style="background-color:rgb(131, 111, 255)">SlateBlue1</td>
+ <td align="left">rgb(131, 111, 255)</td>
+ <td align="left">#836FFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue2</td>
+ <td align="center" style="background-color:rgb(122, 103, 238)">SlateBlue2</td>
+ <td align="left">rgb(122, 103, 238)</td>
+ <td align="left">#7A67EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue3</td>
+ <td align="center" style="background-color:rgb(105, 89, 205)">SlateBlue3</td>
+ <td align="left">rgb(105, 89, 205)</td>
+ <td align="left">#6959CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue4</td>
+ <td align="center" style="background-color:rgb( 71, 60, 139)">SlateBlue4</td>
+ <td align="left">rgb( 71, 60, 139)</td>
+ <td align="left">#473C8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">GhostWhite</td>
+ <td align="center" style="background-color:rgb(248, 248, 255)">GhostWhite</td>
+ <td align="left">rgb(248, 248, 255)</td>
+ <td align="left">#F8F8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">lavender</td>
+ <td align="center" style="background-color:rgb(230, 230, 250)">lavender</td>
+ <td align="left">rgb(230, 230, 250)</td>
+ <td align="left">#E6E6FA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 255)">blue</td>
+ <td align="left">rgb( 0, 0, 255)</td>
+ <td align="left">#0000FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue1</td>
+ <td align="center" style="background-color:rgb( 0, 0, 255)">blue1</td>
+ <td align="left">rgb( 0, 0, 255)</td>
+ <td align="left">#0000FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue2</td>
+ <td align="center" style="background-color:rgb( 0, 0, 238)">blue2</td>
+ <td align="left">rgb( 0, 0, 238)</td>
+ <td align="left">#0000EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue3</td>
+ <td align="center" style="background-color:rgb( 0, 0, 205)">blue3</td>
+ <td align="left">rgb( 0, 0, 205)</td>
+ <td align="left">#0000CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 205)">MediumBlue</td>
+ <td align="left">rgb( 0, 0, 205)</td>
+ <td align="left">#0000CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue4</td>
+ <td align="center" style="background-color:rgb( 0, 0, 139)">blue4</td>
+ <td align="left">rgb( 0, 0, 139)</td>
+ <td align="left">#00008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 139)">DarkBlue</td>
+ <td align="left">rgb( 0, 0, 139)</td>
+ <td align="left">#00008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MidnightBlue</td>
+ <td align="center" style="background-color:rgb( 25, 25, 112)">MidnightBlue</td>
+ <td align="left">rgb( 25, 25, 112)</td>
+ <td align="left">#191970</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">navy</td>
+ <td align="center" style="background-color:rgb( 0, 0, 128)">navy</td>
+ <td align="left">rgb( 0, 0, 128)</td>
+ <td align="left">#000080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavyBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 128)">NavyBlue</td>
+ <td align="left">rgb( 0, 0, 128)</td>
+ <td align="left">#000080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue</td>
+ <td align="center" style="background-color:rgb( 65, 105, 225)">RoyalBlue</td>
+ <td align="left">rgb( 65, 105, 225)</td>
+ <td align="left">#4169E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue1</td>
+ <td align="center" style="background-color:rgb( 72, 118, 255)">RoyalBlue1</td>
+ <td align="left">rgb( 72, 118, 255)</td>
+ <td align="left">#4876FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue2</td>
+ <td align="center" style="background-color:rgb( 67, 110, 238)">RoyalBlue2</td>
+ <td align="left">rgb( 67, 110, 238)</td>
+ <td align="left">#436EEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue3</td>
+ <td align="center" style="background-color:rgb( 58, 95, 205)">RoyalBlue3</td>
+ <td align="left">rgb( 58, 95, 205)</td>
+ <td align="left">#3A5FCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue4</td>
+ <td align="center" style="background-color:rgb( 39, 64, 139)">RoyalBlue4</td>
+ <td align="left">rgb( 39, 64, 139)</td>
+ <td align="left">#27408B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CornflowerBlue</td>
+ <td align="center" style="background-color:rgb(100, 149, 237)">CornflowerBlue</td>
+ <td align="left">rgb(100, 149, 237)</td>
+ <td align="left">#6495ED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue</td>
+ <td align="center" style="background-color:rgb(176, 196, 222)">LightSteelBlue</td>
+ <td align="left">rgb(176, 196, 222)</td>
+ <td align="left">#B0C4DE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue1</td>
+ <td align="center" style="background-color:rgb(202, 225, 255)">LightSteelBlue1</td>
+ <td align="left">rgb(202, 225, 255)</td>
+ <td align="left">#CAE1FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue2</td>
+ <td align="center" style="background-color:rgb(188, 210, 238)">LightSteelBlue2</td>
+ <td align="left">rgb(188, 210, 238)</td>
+ <td align="left">#BCD2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue3</td>
+ <td align="center" style="background-color:rgb(162, 181, 205)">LightSteelBlue3</td>
+ <td align="left">rgb(162, 181, 205)</td>
+ <td align="left">#A2B5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue4</td>
+ <td align="center" style="background-color:rgb(110, 123, 139)">LightSteelBlue4</td>
+ <td align="left">rgb(110, 123, 139)</td>
+ <td align="left">#6E7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray4</td>
+ <td align="center" style="background-color:rgb(108, 123, 139)">SlateGray4</td>
+ <td align="left">rgb(108, 123, 139)</td>
+ <td align="left">#6C7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray1</td>
+ <td align="center" style="background-color:rgb(198, 226, 255)">SlateGray1</td>
+ <td align="left">rgb(198, 226, 255)</td>
+ <td align="left">#C6E2FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray2</td>
+ <td align="center" style="background-color:rgb(185, 211, 238)">SlateGray2</td>
+ <td align="left">rgb(185, 211, 238)</td>
+ <td align="left">#B9D3EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray3</td>
+ <td align="center" style="background-color:rgb(159, 182, 205)">SlateGray3</td>
+ <td align="left">rgb(159, 182, 205)</td>
+ <td align="left">#9FB6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateGray</td>
+ <td align="center" style="background-color:rgb(119, 136, 153)">LightSlateGray</td>
+ <td align="left">rgb(119, 136, 153)</td>
+ <td align="left">#778899</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateGrey</td>
+ <td align="center" style="background-color:rgb(119, 136, 153)">LightSlateGrey</td>
+ <td align="left">rgb(119, 136, 153)</td>
+ <td align="left">#778899</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray</td>
+ <td align="center" style="background-color:rgb(112, 128, 144)">SlateGray</td>
+ <td align="left">rgb(112, 128, 144)</td>
+ <td align="left">#708090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGrey</td>
+ <td align="center" style="background-color:rgb(112, 128, 144)">SlateGrey</td>
+ <td align="left">rgb(112, 128, 144)</td>
+ <td align="left">#708090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue</td>
+ <td align="center" style="background-color:rgb( 30, 144, 255)">DodgerBlue</td>
+ <td align="left">rgb( 30, 144, 255)</td>
+ <td align="left">#1E90FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue1</td>
+ <td align="center" style="background-color:rgb( 30, 144, 255)">DodgerBlue1</td>
+ <td align="left">rgb( 30, 144, 255)</td>
+ <td align="left">#1E90FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue2</td>
+ <td align="center" style="background-color:rgb( 28, 134, 238)">DodgerBlue2</td>
+ <td align="left">rgb( 28, 134, 238)</td>
+ <td align="left">#1C86EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue4</td>
+ <td align="center" style="background-color:rgb( 16, 78, 139)">DodgerBlue4</td>
+ <td align="left">rgb( 16, 78, 139)</td>
+ <td align="left">#104E8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue3</td>
+ <td align="center" style="background-color:rgb( 24, 116, 205)">DodgerBlue3</td>
+ <td align="left">rgb( 24, 116, 205)</td>
+ <td align="left">#1874CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AliceBlue</td>
+ <td align="center" style="background-color:rgb(240, 248, 255)">AliceBlue</td>
+ <td align="left">rgb(240, 248, 255)</td>
+ <td align="left">#F0F8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue4</td>
+ <td align="center" style="background-color:rgb( 54, 100, 139)">SteelBlue4</td>
+ <td align="left">rgb( 54, 100, 139)</td>
+ <td align="left">#36648B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue</td>
+ <td align="center" style="background-color:rgb( 70, 130, 180)">SteelBlue</td>
+ <td align="left">rgb( 70, 130, 180)</td>
+ <td align="left">#4682B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue1</td>
+ <td align="center" style="background-color:rgb( 99, 184, 255)">SteelBlue1</td>
+ <td align="left">rgb( 99, 184, 255)</td>
+ <td align="left">#63B8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue2</td>
+ <td align="center" style="background-color:rgb( 92, 172, 238)">SteelBlue2</td>
+ <td align="left">rgb( 92, 172, 238)</td>
+ <td align="left">#5CACEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue3</td>
+ <td align="center" style="background-color:rgb( 79, 148, 205)">SteelBlue3</td>
+ <td align="left">rgb( 79, 148, 205)</td>
+ <td align="left">#4F94CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue4</td>
+ <td align="center" style="background-color:rgb( 74, 112, 139)">SkyBlue4</td>
+ <td align="left">rgb( 74, 112, 139)</td>
+ <td align="left">#4A708B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue1</td>
+ <td align="center" style="background-color:rgb(135, 206, 255)">SkyBlue1</td>
+ <td align="left">rgb(135, 206, 255)</td>
+ <td align="left">#87CEFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue2</td>
+ <td align="center" style="background-color:rgb(126, 192, 238)">SkyBlue2</td>
+ <td align="left">rgb(126, 192, 238)</td>
+ <td align="left">#7EC0EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue3</td>
+ <td align="center" style="background-color:rgb(108, 166, 205)">SkyBlue3</td>
+ <td align="left">rgb(108, 166, 205)</td>
+ <td align="left">#6CA6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue</td>
+ <td align="center" style="background-color:rgb(135, 206, 250)">LightSkyBlue</td>
+ <td align="left">rgb(135, 206, 250)</td>
+ <td align="left">#87CEFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue4</td>
+ <td align="center" style="background-color:rgb( 96, 123, 139)">LightSkyBlue4</td>
+ <td align="left">rgb( 96, 123, 139)</td>
+ <td align="left">#607B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue1</td>
+ <td align="center" style="background-color:rgb(176, 226, 255)">LightSkyBlue1</td>
+ <td align="left">rgb(176, 226, 255)</td>
+ <td align="left">#B0E2FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue2</td>
+ <td align="center" style="background-color:rgb(164, 211, 238)">LightSkyBlue2</td>
+ <td align="left">rgb(164, 211, 238)</td>
+ <td align="left">#A4D3EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue3</td>
+ <td align="center" style="background-color:rgb(141, 182, 205)">LightSkyBlue3</td>
+ <td align="left">rgb(141, 182, 205)</td>
+ <td align="left">#8DB6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue</td>
+ <td align="center" style="background-color:rgb(135, 206, 235)">SkyBlue</td>
+ <td align="left">rgb(135, 206, 235)</td>
+ <td align="left">#87CEEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue3</td>
+ <td align="center" style="background-color:rgb(154, 192, 205)">LightBlue3</td>
+ <td align="left">rgb(154, 192, 205)</td>
+ <td align="left">#9AC0CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue</td>
+ <td align="center" style="background-color:rgb( 0, 191, 255)">DeepSkyBlue</td>
+ <td align="left">rgb( 0, 191, 255)</td>
+ <td align="left">#00BFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue1</td>
+ <td align="center" style="background-color:rgb( 0, 191, 255)">DeepSkyBlue1</td>
+ <td align="left">rgb( 0, 191, 255)</td>
+ <td align="left">#00BFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue2</td>
+ <td align="center" style="background-color:rgb( 0, 178, 238)">DeepSkyBlue2</td>
+ <td align="left">rgb( 0, 178, 238)</td>
+ <td align="left">#00B2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue4</td>
+ <td align="center" style="background-color:rgb( 0, 104, 139)">DeepSkyBlue4</td>
+ <td align="left">rgb( 0, 104, 139)</td>
+ <td align="left">#00688B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue3</td>
+ <td align="center" style="background-color:rgb( 0, 154, 205)">DeepSkyBlue3</td>
+ <td align="left">rgb( 0, 154, 205)</td>
+ <td align="left">#009ACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue1</td>
+ <td align="center" style="background-color:rgb(191, 239, 255)">LightBlue1</td>
+ <td align="left">rgb(191, 239, 255)</td>
+ <td align="left">#BFEFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue2</td>
+ <td align="center" style="background-color:rgb(178, 223, 238)">LightBlue2</td>
+ <td align="left">rgb(178, 223, 238)</td>
+ <td align="left">#B2DFEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue</td>
+ <td align="center" style="background-color:rgb(173, 216, 230)">LightBlue</td>
+ <td align="left">rgb(173, 216, 230)</td>
+ <td align="left">#ADD8E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue4</td>
+ <td align="center" style="background-color:rgb(104, 131, 139)">LightBlue4</td>
+ <td align="left">rgb(104, 131, 139)</td>
+ <td align="left">#68838B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PowderBlue</td>
+ <td align="center" style="background-color:rgb(176, 224, 230)">PowderBlue</td>
+ <td align="left">rgb(176, 224, 230)</td>
+ <td align="left">#B0E0E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue1</td>
+ <td align="center" style="background-color:rgb(152, 245, 255)">CadetBlue1</td>
+ <td align="left">rgb(152, 245, 255)</td>
+ <td align="left">#98F5FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue2</td>
+ <td align="center" style="background-color:rgb(142, 229, 238)">CadetBlue2</td>
+ <td align="left">rgb(142, 229, 238)</td>
+ <td align="left">#8EE5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue3</td>
+ <td align="center" style="background-color:rgb(122, 197, 205)">CadetBlue3</td>
+ <td align="left">rgb(122, 197, 205)</td>
+ <td align="left">#7AC5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue4</td>
+ <td align="center" style="background-color:rgb( 83, 134, 139)">CadetBlue4</td>
+ <td align="left">rgb( 83, 134, 139)</td>
+ <td align="left">#53868B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise1</td>
+ <td align="center" style="background-color:rgb( 0, 245, 255)">turquoise1</td>
+ <td align="left">rgb( 0, 245, 255)</td>
+ <td align="left">#00F5FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise2</td>
+ <td align="center" style="background-color:rgb( 0, 229, 238)">turquoise2</td>
+ <td align="left">rgb( 0, 229, 238)</td>
+ <td align="left">#00E5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise3</td>
+ <td align="center" style="background-color:rgb( 0, 197, 205)">turquoise3</td>
+ <td align="left">rgb( 0, 197, 205)</td>
+ <td align="left">#00C5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise4</td>
+ <td align="center" style="background-color:rgb( 0, 134, 139)">turquoise4</td>
+ <td align="left">rgb( 0, 134, 139)</td>
+ <td align="left">#00868B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cadet blue</td>
+ <td align="center" style="background-color:rgb( 95, 158, 160)">cadet blue</td>
+ <td align="left">rgb( 95, 158, 160)</td>
+ <td align="left">#5F9EA0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue</td>
+ <td align="center" style="background-color:rgb( 95, 158, 160)">CadetBlue</td>
+ <td align="left">rgb( 95, 158, 160)</td>
+ <td align="left">#5F9EA0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkTurquoise</td>
+ <td align="center" style="background-color:rgb( 0, 206, 209)">DarkTurquoise</td>
+ <td align="left">rgb( 0, 206, 209)</td>
+ <td align="left">#00CED1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure</td>
+ <td align="center" style="background-color:rgb(240, 255, 255)">azure</td>
+ <td align="left">rgb(240, 255, 255)</td>
+ <td align="left">#F0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure1</td>
+ <td align="center" style="background-color:rgb(240, 255, 255)">azure1</td>
+ <td align="left">rgb(240, 255, 255)</td>
+ <td align="left">#F0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan</td>
+ <td align="center" style="background-color:rgb(224, 255, 255)">LightCyan</td>
+ <td align="left">rgb(224, 255, 255)</td>
+ <td align="left">#E0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan1</td>
+ <td align="center" style="background-color:rgb(224, 255, 255)">LightCyan1</td>
+ <td align="left">rgb(224, 255, 255)</td>
+ <td align="left">#E0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure2</td>
+ <td align="center" style="background-color:rgb(224, 238, 238)">azure2</td>
+ <td align="left">rgb(224, 238, 238)</td>
+ <td align="left">#E0EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan2</td>
+ <td align="center" style="background-color:rgb(209, 238, 238)">LightCyan2</td>
+ <td align="left">rgb(209, 238, 238)</td>
+ <td align="left">#D1EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise1</td>
+ <td align="center" style="background-color:rgb(187, 255, 255)">PaleTurquoise1</td>
+ <td align="left">rgb(187, 255, 255)</td>
+ <td align="left">#BBFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise</td>
+ <td align="center" style="background-color:rgb(175, 238, 238)">PaleTurquoise</td>
+ <td align="left">rgb(175, 238, 238)</td>
+ <td align="left">#AFEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise2</td>
+ <td align="center" style="background-color:rgb(174, 238, 238)">PaleTurquoise2</td>
+ <td align="left">rgb(174, 238, 238)</td>
+ <td align="left">#AEEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray1</td>
+ <td align="center" style="background-color:rgb(151, 255, 255)">DarkSlateGray1</td>
+ <td align="left">rgb(151, 255, 255)</td>
+ <td align="left">#97FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure3</td>
+ <td align="center" style="background-color:rgb(193, 205, 205)">azure3</td>
+ <td align="left">rgb(193, 205, 205)</td>
+ <td align="left">#C1CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan3</td>
+ <td align="center" style="background-color:rgb(180, 205, 205)">LightCyan3</td>
+ <td align="left">rgb(180, 205, 205)</td>
+ <td align="left">#B4CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray2</td>
+ <td align="center" style="background-color:rgb(141, 238, 238)">DarkSlateGray2</td>
+ <td align="left">rgb(141, 238, 238)</td>
+ <td align="left">#8DEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise3</td>
+ <td align="center" style="background-color:rgb(150, 205, 205)">PaleTurquoise3</td>
+ <td align="left">rgb(150, 205, 205)</td>
+ <td align="left">#96CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray3</td>
+ <td align="center" style="background-color:rgb(121, 205, 205)">DarkSlateGray3</td>
+ <td align="left">rgb(121, 205, 205)</td>
+ <td align="left">#79CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure4</td>
+ <td align="center" style="background-color:rgb(131, 139, 139)">azure4</td>
+ <td align="left">rgb(131, 139, 139)</td>
+ <td align="left">#838B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan4</td>
+ <td align="center" style="background-color:rgb(122, 139, 139)">LightCyan4</td>
+ <td align="left">rgb(122, 139, 139)</td>
+ <td align="left">#7A8B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aqua</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">aqua</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">cyan</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">cyan1</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise4</td>
+ <td align="center" style="background-color:rgb(102, 139, 139)">PaleTurquoise4</td>
+ <td align="left">rgb(102, 139, 139)</td>
+ <td align="left">#668B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 238)">cyan2</td>
+ <td align="left">rgb( 0, 238, 238)</td>
+ <td align="left">#00EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray4</td>
+ <td align="center" style="background-color:rgb( 82, 139, 139)">DarkSlateGray4</td>
+ <td align="left">rgb( 82, 139, 139)</td>
+ <td align="left">#528B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 205)">cyan3</td>
+ <td align="left">rgb( 0, 205, 205)</td>
+ <td align="left">#00CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 139)">cyan4</td>
+ <td align="left">rgb( 0, 139, 139)</td>
+ <td align="left">#008B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkCyan</td>
+ <td align="center" style="background-color:rgb( 0, 139, 139)">DarkCyan</td>
+ <td align="left">rgb( 0, 139, 139)</td>
+ <td align="left">#008B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">teal</td>
+ <td align="center" style="background-color:rgb( 0, 128, 128)">teal</td>
+ <td align="left">rgb( 0, 128, 128)</td>
+ <td align="left">#008080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray</td>
+ <td align="center" style="background-color:rgb( 47, 79, 79)">DarkSlateGray</td>
+ <td align="left">rgb( 47, 79, 79)</td>
+ <td align="left">#2F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGrey</td>
+ <td align="center" style="background-color:rgb( 47, 79, 79)">DarkSlateGrey</td>
+ <td align="left">rgb( 47, 79, 79)</td>
+ <td align="left">#2F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumTurquoise</td>
+ <td align="center" style="background-color:rgb( 72, 209, 204)">MediumTurquoise</td>
+ <td align="left">rgb( 72, 209, 204)</td>
+ <td align="left">#48D1CC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSeaGreen</td>
+ <td align="center" style="background-color:rgb( 32, 178, 170)">LightSeaGreen</td>
+ <td align="left">rgb( 32, 178, 170)</td>
+ <td align="left">#20B2AA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise</td>
+ <td align="center" style="background-color:rgb( 64, 224, 208)">turquoise</td>
+ <td align="left">rgb( 64, 224, 208)</td>
+ <td align="left">#40E0D0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine4</td>
+ <td align="center" style="background-color:rgb( 69, 139, 116)">aquamarine4</td>
+ <td align="left">rgb( 69, 139, 116)</td>
+ <td align="left">#458B74</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine</td>
+ <td align="center" style="background-color:rgb(127, 255, 212)">aquamarine</td>
+ <td align="left">rgb(127, 255, 212)</td>
+ <td align="left">#7FFFD4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine1</td>
+ <td align="center" style="background-color:rgb(127, 255, 212)">aquamarine1</td>
+ <td align="left">rgb(127, 255, 212)</td>
+ <td align="left">#7FFFD4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine2</td>
+ <td align="center" style="background-color:rgb(118, 238, 198)">aquamarine2</td>
+ <td align="left">rgb(118, 238, 198)</td>
+ <td align="left">#76EEC6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine3</td>
+ <td align="center" style="background-color:rgb(102, 205, 170)">aquamarine3</td>
+ <td align="left">rgb(102, 205, 170)</td>
+ <td align="left">#66CDAA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumAquamarine</td>
+ <td align="center" style="background-color:rgb(102, 205, 170)">MediumAquamarine</td>
+ <td align="left">rgb(102, 205, 170)</td>
+ <td align="left">#66CDAA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSpringGreen</td>
+ <td align="center" style="background-color:rgb( 0, 250, 154)">MediumSpringGreen</td>
+ <td align="left">rgb( 0, 250, 154)</td>
+ <td align="left">#00FA9A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MintCream</td>
+ <td align="center" style="background-color:rgb(245, 255, 250)">MintCream</td>
+ <td align="left">rgb(245, 255, 250)</td>
+ <td align="left">#F5FFFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen</td>
+ <td align="center" style="background-color:rgb( 0, 255, 127)">SpringGreen</td>
+ <td align="left">rgb( 0, 255, 127)</td>
+ <td align="left">#00FF7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 127)">SpringGreen1</td>
+ <td align="left">rgb( 0, 255, 127)</td>
+ <td align="left">#00FF7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 118)">SpringGreen2</td>
+ <td align="left">rgb( 0, 238, 118)</td>
+ <td align="left">#00EE76</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 102)">SpringGreen3</td>
+ <td align="left">rgb( 0, 205, 102)</td>
+ <td align="left">#00CD66</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 69)">SpringGreen4</td>
+ <td align="left">rgb( 0, 139, 69)</td>
+ <td align="left">#008B45</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSeaGreen</td>
+ <td align="center" style="background-color:rgb( 60, 179, 113)">MediumSeaGreen</td>
+ <td align="left">rgb( 60, 179, 113)</td>
+ <td align="left">#3CB371</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen</td>
+ <td align="center" style="background-color:rgb( 46, 139, 87)">SeaGreen</td>
+ <td align="left">rgb( 46, 139, 87)</td>
+ <td align="left">#2E8B57</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen3</td>
+ <td align="center" style="background-color:rgb( 67, 205, 128)">SeaGreen3</td>
+ <td align="left">rgb( 67, 205, 128)</td>
+ <td align="left">#43CD80</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen1</td>
+ <td align="center" style="background-color:rgb( 84, 255, 159)">SeaGreen1</td>
+ <td align="left">rgb( 84, 255, 159)</td>
+ <td align="left">#54FF9F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen4</td>
+ <td align="center" style="background-color:rgb( 46, 139, 87)">SeaGreen4</td>
+ <td align="left">rgb( 46, 139, 87)</td>
+ <td align="left">#2E8B57</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen2</td>
+ <td align="center" style="background-color:rgb( 78, 238, 148)">SeaGreen2</td>
+ <td align="left">rgb( 78, 238, 148)</td>
+ <td align="left">#4EEE94</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumForestGreen</td>
+ <td align="center" style="background-color:rgb( 50, 129, 75)">MediumForestGreen</td>
+ <td align="left">rgb( 50, 129, 75)</td>
+ <td align="left">#32814B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew</td>
+ <td align="center" style="background-color:rgb(240, 255, 240)">honeydew</td>
+ <td align="left">rgb(240, 255, 240)</td>
+ <td align="left">#F0FFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew1</td>
+ <td align="center" style="background-color:rgb(240, 255, 240)">honeydew1</td>
+ <td align="left">rgb(240, 255, 240)</td>
+ <td align="left">#F0FFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew2</td>
+ <td align="center" style="background-color:rgb(224, 238, 224)">honeydew2</td>
+ <td align="left">rgb(224, 238, 224)</td>
+ <td align="left">#E0EEE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen1</td>
+ <td align="center" style="background-color:rgb(193, 255, 193)">DarkSeaGreen1</td>
+ <td align="left">rgb(193, 255, 193)</td>
+ <td align="left">#C1FFC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen2</td>
+ <td align="center" style="background-color:rgb(180, 238, 180)">DarkSeaGreen2</td>
+ <td align="left">rgb(180, 238, 180)</td>
+ <td align="left">#B4EEB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen1</td>
+ <td align="center" style="background-color:rgb(154, 255, 154)">PaleGreen1</td>
+ <td align="left">rgb(154, 255, 154)</td>
+ <td align="left">#9AFF9A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen</td>
+ <td align="center" style="background-color:rgb(152, 251, 152)">PaleGreen</td>
+ <td align="left">rgb(152, 251, 152)</td>
+ <td align="left">#98FB98</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew3</td>
+ <td align="center" style="background-color:rgb(193, 205, 193)">honeydew3</td>
+ <td align="left">rgb(193, 205, 193)</td>
+ <td align="left">#C1CDC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGreen</td>
+ <td align="center" style="background-color:rgb(144, 238, 144)">LightGreen</td>
+ <td align="left">rgb(144, 238, 144)</td>
+ <td align="left">#90EE90</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen2</td>
+ <td align="center" style="background-color:rgb(144, 238, 144)">PaleGreen2</td>
+ <td align="left">rgb(144, 238, 144)</td>
+ <td align="left">#90EE90</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen3</td>
+ <td align="center" style="background-color:rgb(155, 205, 155)">DarkSeaGreen3</td>
+ <td align="left">rgb(155, 205, 155)</td>
+ <td align="left">#9BCD9B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen</td>
+ <td align="center" style="background-color:rgb(143, 188, 143)">DarkSeaGreen</td>
+ <td align="left">rgb(143, 188, 143)</td>
+ <td align="left">#8FBC8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen3</td>
+ <td align="center" style="background-color:rgb(124, 205, 124)">PaleGreen3</td>
+ <td align="left">rgb(124, 205, 124)</td>
+ <td align="left">#7CCD7C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew4</td>
+ <td align="center" style="background-color:rgb(131, 139, 131)">honeydew4</td>
+ <td align="left">rgb(131, 139, 131)</td>
+ <td align="left">#838B83</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 0)">green1</td>
+ <td align="left">rgb( 0, 255, 0)</td>
+ <td align="left">#00FF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">lime</td>
+ <td align="center" style="background-color:rgb( 0, 255, 0)">lime</td>
+ <td align="left">rgb( 0, 255, 0)</td>
+ <td align="left">#00FF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LimeGreen</td>
+ <td align="center" style="background-color:rgb( 50, 205, 50)">LimeGreen</td>
+ <td align="left">rgb( 50, 205, 50)</td>
+ <td align="left">#32CD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen4</td>
+ <td align="center" style="background-color:rgb(105, 139, 105)">DarkSeaGreen4</td>
+ <td align="left">rgb(105, 139, 105)</td>
+ <td align="left">#698B69</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 0)">green2</td>
+ <td align="left">rgb( 0, 238, 0)</td>
+ <td align="left">#00EE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen4</td>
+ <td align="center" style="background-color:rgb( 84, 139, 84)">PaleGreen4</td>
+ <td align="left">rgb( 84, 139, 84)</td>
+ <td align="left">#548B54</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 0)">green3</td>
+ <td align="left">rgb( 0, 205, 0)</td>
+ <td align="left">#00CD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ForestGreen</td>
+ <td align="center" style="background-color:rgb( 34, 139, 34)">ForestGreen</td>
+ <td align="left">rgb( 34, 139, 34)</td>
+ <td align="left">#228B22</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 0)">green4</td>
+ <td align="left">rgb( 0, 139, 0)</td>
+ <td align="left">#008B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green</td>
+ <td align="center" style="background-color:rgb( 0, 128, 0)">green</td>
+ <td align="left">rgb( 0, 128, 0)</td>
+ <td align="left">#008000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGreen</td>
+ <td align="center" style="background-color:rgb( 0, 100, 0)">DarkGreen</td>
+ <td align="left">rgb( 0, 100, 0)</td>
+ <td align="left">#006400</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LawnGreen</td>
+ <td align="center" style="background-color:rgb(124, 252, 0)">LawnGreen</td>
+ <td align="left">rgb(124, 252, 0)</td>
+ <td align="left">#7CFC00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse</td>
+ <td align="center" style="background-color:rgb(127, 255, 0)">chartreuse</td>
+ <td align="left">rgb(127, 255, 0)</td>
+ <td align="left">#7FFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse1</td>
+ <td align="center" style="background-color:rgb(127, 255, 0)">chartreuse1</td>
+ <td align="left">rgb(127, 255, 0)</td>
+ <td align="left">#7FFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse2</td>
+ <td align="center" style="background-color:rgb(118, 238, 0)">chartreuse2</td>
+ <td align="left">rgb(118, 238, 0)</td>
+ <td align="left">#76EE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse3</td>
+ <td align="center" style="background-color:rgb(102, 205, 0)">chartreuse3</td>
+ <td align="left">rgb(102, 205, 0)</td>
+ <td align="left">#66CD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse4</td>
+ <td align="center" style="background-color:rgb( 69, 139, 0)">chartreuse4</td>
+ <td align="left">rgb( 69, 139, 0)</td>
+ <td align="left">#458B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">GreenYellow</td>
+ <td align="center" style="background-color:rgb(173, 255, 47)">GreenYellow</td>
+ <td align="left">rgb(173, 255, 47)</td>
+ <td align="left">#ADFF2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen3</td>
+ <td align="center" style="background-color:rgb(162, 205, 90)">DarkOliveGreen3</td>
+ <td align="left">rgb(162, 205, 90)</td>
+ <td align="left">#A2CD5A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen1</td>
+ <td align="center" style="background-color:rgb(202, 255, 112)">DarkOliveGreen1</td>
+ <td align="left">rgb(202, 255, 112)</td>
+ <td align="left">#CAFF70</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen2</td>
+ <td align="center" style="background-color:rgb(188, 238, 104)">DarkOliveGreen2</td>
+ <td align="left">rgb(188, 238, 104)</td>
+ <td align="left">#BCEE68</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen4</td>
+ <td align="center" style="background-color:rgb(110, 139, 61)">DarkOliveGreen4</td>
+ <td align="left">rgb(110, 139, 61)</td>
+ <td align="left">#6E8B3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen</td>
+ <td align="center" style="background-color:rgb( 85, 107, 47)">DarkOliveGreen</td>
+ <td align="left">rgb( 85, 107, 47)</td>
+ <td align="left">#556B2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab</td>
+ <td align="center" style="background-color:rgb(107, 142, 35)">OliveDrab</td>
+ <td align="left">rgb(107, 142, 35)</td>
+ <td align="left">#6B8E23</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab1</td>
+ <td align="center" style="background-color:rgb(192, 255, 62)">OliveDrab1</td>
+ <td align="left">rgb(192, 255, 62)</td>
+ <td align="left">#C0FF3E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab2</td>
+ <td align="center" style="background-color:rgb(179, 238, 58)">OliveDrab2</td>
+ <td align="left">rgb(179, 238, 58)</td>
+ <td align="left">#B3EE3A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab3</td>
+ <td align="center" style="background-color:rgb(154, 205, 50)">OliveDrab3</td>
+ <td align="left">rgb(154, 205, 50)</td>
+ <td align="left">#9ACD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">YellowGreen</td>
+ <td align="center" style="background-color:rgb(154, 205, 50)">YellowGreen</td>
+ <td align="left">rgb(154, 205, 50)</td>
+ <td align="left">#9ACD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab4</td>
+ <td align="center" style="background-color:rgb(105, 139, 34)">OliveDrab4</td>
+ <td align="left">rgb(105, 139, 34)</td>
+ <td align="left">#698B22</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory</td>
+ <td align="center" style="background-color:rgb(255, 255, 240)">ivory</td>
+ <td align="left">rgb(255, 255, 240)</td>
+ <td align="left">#FFFFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory1</td>
+ <td align="center" style="background-color:rgb(255, 255, 240)">ivory1</td>
+ <td align="left">rgb(255, 255, 240)</td>
+ <td align="left">#FFFFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow</td>
+ <td align="center" style="background-color:rgb(255, 255, 224)">LightYellow</td>
+ <td align="left">rgb(255, 255, 224)</td>
+ <td align="left">#FFFFE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow1</td>
+ <td align="center" style="background-color:rgb(255, 255, 224)">LightYellow1</td>
+ <td align="left">rgb(255, 255, 224)</td>
+ <td align="left">#FFFFE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">beige</td>
+ <td align="center" style="background-color:rgb(245, 245, 220)">beige</td>
+ <td align="left">rgb(245, 245, 220)</td>
+ <td align="left">#F5F5DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory2</td>
+ <td align="center" style="background-color:rgb(238, 238, 224)">ivory2</td>
+ <td align="left">rgb(238, 238, 224)</td>
+ <td align="left">#EEEEE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrodYellow</td>
+ <td align="center" style="background-color:rgb(250, 250, 210)">LightGoldenrodYellow</td>
+ <td align="left">rgb(250, 250, 210)</td>
+ <td align="left">#FAFAD2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow2</td>
+ <td align="center" style="background-color:rgb(238, 238, 209)">LightYellow2</td>
+ <td align="left">rgb(238, 238, 209)</td>
+ <td align="left">#EEEED1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory3</td>
+ <td align="center" style="background-color:rgb(205, 205, 193)">ivory3</td>
+ <td align="left">rgb(205, 205, 193)</td>
+ <td align="left">#CDCDC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow3</td>
+ <td align="center" style="background-color:rgb(205, 205, 180)">LightYellow3</td>
+ <td align="left">rgb(205, 205, 180)</td>
+ <td align="left">#CDCDB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory4</td>
+ <td align="center" style="background-color:rgb(139, 139, 131)">ivory4</td>
+ <td align="left">rgb(139, 139, 131)</td>
+ <td align="left">#8B8B83</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow4</td>
+ <td align="center" style="background-color:rgb(139, 139, 122)">LightYellow4</td>
+ <td align="left">rgb(139, 139, 122)</td>
+ <td align="left">#8B8B7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow</td>
+ <td align="center" style="background-color:rgb(255, 255, 0)">yellow</td>
+ <td align="left">rgb(255, 255, 0)</td>
+ <td align="left">#FFFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow1</td>
+ <td align="center" style="background-color:rgb(255, 255, 0)">yellow1</td>
+ <td align="left">rgb(255, 255, 0)</td>
+ <td align="left">#FFFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow2</td>
+ <td align="center" style="background-color:rgb(238, 238, 0)">yellow2</td>
+ <td align="left">rgb(238, 238, 0)</td>
+ <td align="left">#EEEE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow3</td>
+ <td align="center" style="background-color:rgb(205, 205, 0)">yellow3</td>
+ <td align="left">rgb(205, 205, 0)</td>
+ <td align="left">#CDCD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow4</td>
+ <td align="center" style="background-color:rgb(139, 139, 0)">yellow4</td>
+ <td align="left">rgb(139, 139, 0)</td>
+ <td align="left">#8B8B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">olive</td>
+ <td align="center" style="background-color:rgb(128, 128, 0)">olive</td>
+ <td align="left">rgb(128, 128, 0)</td>
+ <td align="left">#808000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkKhaki</td>
+ <td align="center" style="background-color:rgb(189, 183, 107)">DarkKhaki</td>
+ <td align="left">rgb(189, 183, 107)</td>
+ <td align="left">#BDB76B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki2</td>
+ <td align="center" style="background-color:rgb(238, 230, 133)">khaki2</td>
+ <td align="left">rgb(238, 230, 133)</td>
+ <td align="left">#EEE685</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon4</td>
+ <td align="center" style="background-color:rgb(139, 137, 112)">LemonChiffon4</td>
+ <td align="left">rgb(139, 137, 112)</td>
+ <td align="left">#8B8970</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki1</td>
+ <td align="center" style="background-color:rgb(255, 246, 143)">khaki1</td>
+ <td align="left">rgb(255, 246, 143)</td>
+ <td align="left">#FFF68F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki3</td>
+ <td align="center" style="background-color:rgb(205, 198, 115)">khaki3</td>
+ <td align="left">rgb(205, 198, 115)</td>
+ <td align="left">#CDC673</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki4</td>
+ <td align="center" style="background-color:rgb(139, 134, 78)">khaki4</td>
+ <td align="left">rgb(139, 134, 78)</td>
+ <td align="left">#8B864E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGoldenrod</td>
+ <td align="center" style="background-color:rgb(238, 232, 170)">PaleGoldenrod</td>
+ <td align="left">rgb(238, 232, 170)</td>
+ <td align="left">#EEE8AA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon</td>
+ <td align="center" style="background-color:rgb(255, 250, 205)">LemonChiffon</td>
+ <td align="left">rgb(255, 250, 205)</td>
+ <td align="left">#FFFACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon1</td>
+ <td align="center" style="background-color:rgb(255, 250, 205)">LemonChiffon1</td>
+ <td align="left">rgb(255, 250, 205)</td>
+ <td align="left">#FFFACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki</td>
+ <td align="center" style="background-color:rgb(240, 230, 140)">khaki</td>
+ <td align="left">rgb(240, 230, 140)</td>
+ <td align="left">#F0E68C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon3</td>
+ <td align="center" style="background-color:rgb(205, 201, 165)">LemonChiffon3</td>
+ <td align="left">rgb(205, 201, 165)</td>
+ <td align="left">#CDC9A5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon2</td>
+ <td align="center" style="background-color:rgb(238, 233, 191)">LemonChiffon2</td>
+ <td align="left">rgb(238, 233, 191)</td>
+ <td align="left">#EEE9BF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumGoldenRod</td>
+ <td align="center" style="background-color:rgb(209, 193, 102)">MediumGoldenRod</td>
+ <td align="left">rgb(209, 193, 102)</td>
+ <td align="left">#D1C166</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk4</td>
+ <td align="center" style="background-color:rgb(139, 136, 120)">cornsilk4</td>
+ <td align="left">rgb(139, 136, 120)</td>
+ <td align="left">#8B8878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold</td>
+ <td align="center" style="background-color:rgb(255, 215, 0)">gold</td>
+ <td align="left">rgb(255, 215, 0)</td>
+ <td align="left">#FFD700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold1</td>
+ <td align="center" style="background-color:rgb(255, 215, 0)">gold1</td>
+ <td align="left">rgb(255, 215, 0)</td>
+ <td align="left">#FFD700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold2</td>
+ <td align="center" style="background-color:rgb(238, 201, 0)">gold2</td>
+ <td align="left">rgb(238, 201, 0)</td>
+ <td align="left">#EEC900</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold3</td>
+ <td align="center" style="background-color:rgb(205, 173, 0)">gold3</td>
+ <td align="left">rgb(205, 173, 0)</td>
+ <td align="left">#CDAD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold4</td>
+ <td align="center" style="background-color:rgb(139, 117, 0)">gold4</td>
+ <td align="left">rgb(139, 117, 0)</td>
+ <td align="left">#8B7500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod</td>
+ <td align="center" style="background-color:rgb(238, 221, 130)">LightGoldenrod</td>
+ <td align="left">rgb(238, 221, 130)</td>
+ <td align="left">#EEDD82</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 129, 76)">LightGoldenrod4</td>
+ <td align="left">rgb(139, 129, 76)</td>
+ <td align="left">#8B814C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 236, 139)">LightGoldenrod1</td>
+ <td align="left">rgb(255, 236, 139)</td>
+ <td align="left">#FFEC8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 190, 112)">LightGoldenrod3</td>
+ <td align="left">rgb(205, 190, 112)</td>
+ <td align="left">#CDBE70</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 220, 130)">LightGoldenrod2</td>
+ <td align="left">rgb(238, 220, 130)</td>
+ <td align="left">#EEDC82</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk3</td>
+ <td align="center" style="background-color:rgb(205, 200, 177)">cornsilk3</td>
+ <td align="left">rgb(205, 200, 177)</td>
+ <td align="left">#CDC8B1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk2</td>
+ <td align="center" style="background-color:rgb(238, 232, 205)">cornsilk2</td>
+ <td align="left">rgb(238, 232, 205)</td>
+ <td align="left">#EEE8CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk</td>
+ <td align="center" style="background-color:rgb(255, 248, 220)">cornsilk</td>
+ <td align="left">rgb(255, 248, 220)</td>
+ <td align="left">#FFF8DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk1</td>
+ <td align="center" style="background-color:rgb(255, 248, 220)">cornsilk1</td>
+ <td align="left">rgb(255, 248, 220)</td>
+ <td align="left">#FFF8DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod</td>
+ <td align="center" style="background-color:rgb(218, 165, 32)">goldenrod</td>
+ <td align="left">rgb(218, 165, 32)</td>
+ <td align="left">#DAA520</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 193, 37)">goldenrod1</td>
+ <td align="left">rgb(255, 193, 37)</td>
+ <td align="left">#FFC125</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 180, 34)">goldenrod2</td>
+ <td align="left">rgb(238, 180, 34)</td>
+ <td align="left">#EEB422</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 155, 29)">goldenrod3</td>
+ <td align="left">rgb(205, 155, 29)</td>
+ <td align="left">#CD9B1D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 105, 20)">goldenrod4</td>
+ <td align="left">rgb(139, 105, 20)</td>
+ <td align="left">#8B6914</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod</td>
+ <td align="center" style="background-color:rgb(184, 134, 11)">DarkGoldenrod</td>
+ <td align="left">rgb(184, 134, 11)</td>
+ <td align="left">#B8860B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 185, 15)">DarkGoldenrod1</td>
+ <td align="left">rgb(255, 185, 15)</td>
+ <td align="left">#FFB90F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 173, 14)">DarkGoldenrod2</td>
+ <td align="left">rgb(238, 173, 14)</td>
+ <td align="left">#EEAD0E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 149, 12)">DarkGoldenrod3</td>
+ <td align="left">rgb(205, 149, 12)</td>
+ <td align="left">#CD950C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 101, 8)">DarkGoldenrod4</td>
+ <td align="left">rgb(139, 101, 8)</td>
+ <td align="left">#8B6508</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">FloralWhite</td>
+ <td align="center" style="background-color:rgb(255, 250, 240)">FloralWhite</td>
+ <td align="left">rgb(255, 250, 240)</td>
+ <td align="left">#FFFAF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat2</td>
+ <td align="center" style="background-color:rgb(238, 216, 174)">wheat2</td>
+ <td align="left">rgb(238, 216, 174)</td>
+ <td align="left">#EED8AE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OldLace</td>
+ <td align="center" style="background-color:rgb(253, 245, 230)">OldLace</td>
+ <td align="left">rgb(253, 245, 230)</td>
+ <td align="left">#FDF5E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat</td>
+ <td align="center" style="background-color:rgb(245, 222, 179)">wheat</td>
+ <td align="left">rgb(245, 222, 179)</td>
+ <td align="left">#F5DEB3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat1</td>
+ <td align="center" style="background-color:rgb(255, 231, 186)">wheat1</td>
+ <td align="left">rgb(255, 231, 186)</td>
+ <td align="left">#FFE7BA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat3</td>
+ <td align="center" style="background-color:rgb(205, 186, 150)">wheat3</td>
+ <td align="left">rgb(205, 186, 150)</td>
+ <td align="left">#CDBA96</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange</td>
+ <td align="center" style="background-color:rgb(255, 165, 0)">orange</td>
+ <td align="left">rgb(255, 165, 0)</td>
+ <td align="left">#FFA500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange1</td>
+ <td align="center" style="background-color:rgb(255, 165, 0)">orange1</td>
+ <td align="left">rgb(255, 165, 0)</td>
+ <td align="left">#FFA500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange2</td>
+ <td align="center" style="background-color:rgb(238, 154, 0)">orange2</td>
+ <td align="left">rgb(238, 154, 0)</td>
+ <td align="left">#EE9A00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange3</td>
+ <td align="center" style="background-color:rgb(205, 133, 0)">orange3</td>
+ <td align="left">rgb(205, 133, 0)</td>
+ <td align="left">#CD8500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange4</td>
+ <td align="center" style="background-color:rgb(139, 90, 0)">orange4</td>
+ <td align="left">rgb(139, 90, 0)</td>
+ <td align="left">#8B5A00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat4</td>
+ <td align="center" style="background-color:rgb(139, 126, 102)">wheat4</td>
+ <td align="left">rgb(139, 126, 102)</td>
+ <td align="left">#8B7E66</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">moccasin</td>
+ <td align="center" style="background-color:rgb(255, 228, 181)">moccasin</td>
+ <td align="left">rgb(255, 228, 181)</td>
+ <td align="left">#FFE4B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PapayaWhip</td>
+ <td align="center" style="background-color:rgb(255, 239, 213)">PapayaWhip</td>
+ <td align="left">rgb(255, 239, 213)</td>
+ <td align="left">#FFEFD5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite3</td>
+ <td align="center" style="background-color:rgb(205, 179, 139)">NavajoWhite3</td>
+ <td align="left">rgb(205, 179, 139)</td>
+ <td align="left">#CDB38B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">BlanchedAlmond</td>
+ <td align="center" style="background-color:rgb(255, 235, 205)">BlanchedAlmond</td>
+ <td align="left">rgb(255, 235, 205)</td>
+ <td align="left">#FFEBCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite</td>
+ <td align="center" style="background-color:rgb(255, 222, 173)">NavajoWhite</td>
+ <td align="left">rgb(255, 222, 173)</td>
+ <td align="left">#FFDEAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite1</td>
+ <td align="center" style="background-color:rgb(255, 222, 173)">NavajoWhite1</td>
+ <td align="left">rgb(255, 222, 173)</td>
+ <td align="left">#FFDEAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite2</td>
+ <td align="center" style="background-color:rgb(238, 207, 161)">NavajoWhite2</td>
+ <td align="left">rgb(238, 207, 161)</td>
+ <td align="left">#EECFA1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite4</td>
+ <td align="center" style="background-color:rgb(139, 121, 94)">NavajoWhite4</td>
+ <td align="left">rgb(139, 121, 94)</td>
+ <td align="left">#8B795E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite4</td>
+ <td align="center" style="background-color:rgb(139, 131, 120)">AntiqueWhite4</td>
+ <td align="left">rgb(139, 131, 120)</td>
+ <td align="left">#8B8378</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite</td>
+ <td align="center" style="background-color:rgb(250, 235, 215)">AntiqueWhite</td>
+ <td align="left">rgb(250, 235, 215)</td>
+ <td align="left">#FAEBD7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan</td>
+ <td align="center" style="background-color:rgb(210, 180, 140)">tan</td>
+ <td align="left">rgb(210, 180, 140)</td>
+ <td align="left">#D2B48C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque4</td>
+ <td align="center" style="background-color:rgb(139, 125, 107)">bisque4</td>
+ <td align="left">rgb(139, 125, 107)</td>
+ <td align="left">#8B7D6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood</td>
+ <td align="center" style="background-color:rgb(222, 184, 135)">burlywood</td>
+ <td align="left">rgb(222, 184, 135)</td>
+ <td align="left">#DEB887</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite2</td>
+ <td align="center" style="background-color:rgb(238, 223, 204)">AntiqueWhite2</td>
+ <td align="left">rgb(238, 223, 204)</td>
+ <td align="left">#EEDFCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood1</td>
+ <td align="center" style="background-color:rgb(255, 211, 155)">burlywood1</td>
+ <td align="left">rgb(255, 211, 155)</td>
+ <td align="left">#FFD39B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood3</td>
+ <td align="center" style="background-color:rgb(205, 170, 125)">burlywood3</td>
+ <td align="left">rgb(205, 170, 125)</td>
+ <td align="left">#CDAA7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood2</td>
+ <td align="center" style="background-color:rgb(238, 197, 145)">burlywood2</td>
+ <td align="left">rgb(238, 197, 145)</td>
+ <td align="left">#EEC591</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite1</td>
+ <td align="center" style="background-color:rgb(255, 239, 219)">AntiqueWhite1</td>
+ <td align="left">rgb(255, 239, 219)</td>
+ <td align="left">#FFEFDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood4</td>
+ <td align="center" style="background-color:rgb(139, 115, 85)">burlywood4</td>
+ <td align="left">rgb(139, 115, 85)</td>
+ <td align="left">#8B7355</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite3</td>
+ <td align="center" style="background-color:rgb(205, 192, 176)">AntiqueWhite3</td>
+ <td align="left">rgb(205, 192, 176)</td>
+ <td align="left">#CDC0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange</td>
+ <td align="center" style="background-color:rgb(255, 140, 0)">DarkOrange</td>
+ <td align="left">rgb(255, 140, 0)</td>
+ <td align="left">#FF8C00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque2</td>
+ <td align="center" style="background-color:rgb(238, 213, 183)">bisque2</td>
+ <td align="left">rgb(238, 213, 183)</td>
+ <td align="left">#EED5B7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque</td>
+ <td align="center" style="background-color:rgb(255, 228, 196)">bisque</td>
+ <td align="left">rgb(255, 228, 196)</td>
+ <td align="left">#FFE4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque1</td>
+ <td align="center" style="background-color:rgb(255, 228, 196)">bisque1</td>
+ <td align="left">rgb(255, 228, 196)</td>
+ <td align="left">#FFE4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque3</td>
+ <td align="center" style="background-color:rgb(205, 183, 158)">bisque3</td>
+ <td align="left">rgb(205, 183, 158)</td>
+ <td align="left">#CDB79E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange1</td>
+ <td align="center" style="background-color:rgb(255, 127, 0)">DarkOrange1</td>
+ <td align="left">rgb(255, 127, 0)</td>
+ <td align="left">#FF7F00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">linen</td>
+ <td align="center" style="background-color:rgb(250, 240, 230)">linen</td>
+ <td align="left">rgb(250, 240, 230)</td>
+ <td align="left">#FAF0E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange2</td>
+ <td align="center" style="background-color:rgb(238, 118, 0)">DarkOrange2</td>
+ <td align="left">rgb(238, 118, 0)</td>
+ <td align="left">#EE7600</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange3</td>
+ <td align="center" style="background-color:rgb(205, 102, 0)">DarkOrange3</td>
+ <td align="left">rgb(205, 102, 0)</td>
+ <td align="left">#CD6600</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange4</td>
+ <td align="center" style="background-color:rgb(139, 69, 0)">DarkOrange4</td>
+ <td align="left">rgb(139, 69, 0)</td>
+ <td align="left">#8B4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">peru</td>
+ <td align="center" style="background-color:rgb(205, 133, 63)">peru</td>
+ <td align="left">rgb(205, 133, 63)</td>
+ <td align="left">#CD853F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan1</td>
+ <td align="center" style="background-color:rgb(255, 165, 79)">tan1</td>
+ <td align="left">rgb(255, 165, 79)</td>
+ <td align="left">#FFA54F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan2</td>
+ <td align="center" style="background-color:rgb(238, 154, 73)">tan2</td>
+ <td align="left">rgb(238, 154, 73)</td>
+ <td align="left">#EE9A49</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan3</td>
+ <td align="center" style="background-color:rgb(205, 133, 63)">tan3</td>
+ <td align="left">rgb(205, 133, 63)</td>
+ <td align="left">#CD853F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan4</td>
+ <td align="center" style="background-color:rgb(139, 90, 43)">tan4</td>
+ <td align="left">rgb(139, 90, 43)</td>
+ <td align="left">#8B5A2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff</td>
+ <td align="center" style="background-color:rgb(255, 218, 185)">PeachPuff</td>
+ <td align="left">rgb(255, 218, 185)</td>
+ <td align="left">#FFDAB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff1</td>
+ <td align="center" style="background-color:rgb(255, 218, 185)">PeachPuff1</td>
+ <td align="left">rgb(255, 218, 185)</td>
+ <td align="left">#FFDAB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff4</td>
+ <td align="center" style="background-color:rgb(139, 119, 101)">PeachPuff4</td>
+ <td align="left">rgb(139, 119, 101)</td>
+ <td align="left">#8B7765</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff2</td>
+ <td align="center" style="background-color:rgb(238, 203, 173)">PeachPuff2</td>
+ <td align="left">rgb(238, 203, 173)</td>
+ <td align="left">#EECBAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff3</td>
+ <td align="center" style="background-color:rgb(205, 175, 149)">PeachPuff3</td>
+ <td align="left">rgb(205, 175, 149)</td>
+ <td align="left">#CDAF95</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SandyBrown</td>
+ <td align="center" style="background-color:rgb(244, 164, 96)">SandyBrown</td>
+ <td align="left">rgb(244, 164, 96)</td>
+ <td align="left">#F4A460</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell4</td>
+ <td align="center" style="background-color:rgb(139, 134, 130)">seashell4</td>
+ <td align="left">rgb(139, 134, 130)</td>
+ <td align="left">#8B8682</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell2</td>
+ <td align="center" style="background-color:rgb(238, 229, 222)">seashell2</td>
+ <td align="left">rgb(238, 229, 222)</td>
+ <td align="left">#EEE5DE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell3</td>
+ <td align="center" style="background-color:rgb(205, 197, 191)">seashell3</td>
+ <td align="left">rgb(205, 197, 191)</td>
+ <td align="left">#CDC5BF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate</td>
+ <td align="center" style="background-color:rgb(210, 105, 30)">chocolate</td>
+ <td align="left">rgb(210, 105, 30)</td>
+ <td align="left">#D2691E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate1</td>
+ <td align="center" style="background-color:rgb(255, 127, 36)">chocolate1</td>
+ <td align="left">rgb(255, 127, 36)</td>
+ <td align="left">#FF7F24</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate2</td>
+ <td align="center" style="background-color:rgb(238, 118, 33)">chocolate2</td>
+ <td align="left">rgb(238, 118, 33)</td>
+ <td align="left">#EE7621</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate3</td>
+ <td align="center" style="background-color:rgb(205, 102, 29)">chocolate3</td>
+ <td align="left">rgb(205, 102, 29)</td>
+ <td align="left">#CD661D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate4</td>
+ <td align="center" style="background-color:rgb(139, 69, 19)">chocolate4</td>
+ <td align="left">rgb(139, 69, 19)</td>
+ <td align="left">#8B4513</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SaddleBrown</td>
+ <td align="center" style="background-color:rgb(139, 69, 19)">SaddleBrown</td>
+ <td align="left">rgb(139, 69, 19)</td>
+ <td align="left">#8B4513</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell</td>
+ <td align="center" style="background-color:rgb(255, 245, 238)">seashell</td>
+ <td align="left">rgb(255, 245, 238)</td>
+ <td align="left">#FFF5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell1</td>
+ <td align="center" style="background-color:rgb(255, 245, 238)">seashell1</td>
+ <td align="left">rgb(255, 245, 238)</td>
+ <td align="left">#FFF5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna4</td>
+ <td align="center" style="background-color:rgb(139, 71, 38)">sienna4</td>
+ <td align="left">rgb(139, 71, 38)</td>
+ <td align="left">#8B4726</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna</td>
+ <td align="center" style="background-color:rgb(160, 82, 45)">sienna</td>
+ <td align="left">rgb(160, 82, 45)</td>
+ <td align="left">#A0522D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna1</td>
+ <td align="center" style="background-color:rgb(255, 130, 71)">sienna1</td>
+ <td align="left">rgb(255, 130, 71)</td>
+ <td align="left">#FF8247</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna2</td>
+ <td align="center" style="background-color:rgb(238, 121, 66)">sienna2</td>
+ <td align="left">rgb(238, 121, 66)</td>
+ <td align="left">#EE7942</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna3</td>
+ <td align="center" style="background-color:rgb(205, 104, 57)">sienna3</td>
+ <td align="left">rgb(205, 104, 57)</td>
+ <td align="left">#CD6839</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon3</td>
+ <td align="center" style="background-color:rgb(205, 129, 98)">LightSalmon3</td>
+ <td align="left">rgb(205, 129, 98)</td>
+ <td align="left">#CD8162</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon</td>
+ <td align="center" style="background-color:rgb(255, 160, 122)">LightSalmon</td>
+ <td align="left">rgb(255, 160, 122)</td>
+ <td align="left">#FFA07A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon1</td>
+ <td align="center" style="background-color:rgb(255, 160, 122)">LightSalmon1</td>
+ <td align="left">rgb(255, 160, 122)</td>
+ <td align="left">#FFA07A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon4</td>
+ <td align="center" style="background-color:rgb(139, 87, 66)">LightSalmon4</td>
+ <td align="left">rgb(139, 87, 66)</td>
+ <td align="left">#8B5742</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon2</td>
+ <td align="center" style="background-color:rgb(238, 149, 114)">LightSalmon2</td>
+ <td align="left">rgb(238, 149, 114)</td>
+ <td align="left">#EE9572</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral</td>
+ <td align="center" style="background-color:rgb(255, 127, 80)">coral</td>
+ <td align="left">rgb(255, 127, 80)</td>
+ <td align="left">#FF7F50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed</td>
+ <td align="center" style="background-color:rgb(255, 69, 0)">OrangeRed</td>
+ <td align="left">rgb(255, 69, 0)</td>
+ <td align="left">#FF4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed1</td>
+ <td align="center" style="background-color:rgb(255, 69, 0)">OrangeRed1</td>
+ <td align="left">rgb(255, 69, 0)</td>
+ <td align="left">#FF4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed2</td>
+ <td align="center" style="background-color:rgb(238, 64, 0)">OrangeRed2</td>
+ <td align="left">rgb(238, 64, 0)</td>
+ <td align="left">#EE4000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed3</td>
+ <td align="center" style="background-color:rgb(205, 55, 0)">OrangeRed3</td>
+ <td align="left">rgb(205, 55, 0)</td>
+ <td align="left">#CD3700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed4</td>
+ <td align="center" style="background-color:rgb(139, 37, 0)">OrangeRed4</td>
+ <td align="left">rgb(139, 37, 0)</td>
+ <td align="left">#8B2500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSalmon</td>
+ <td align="center" style="background-color:rgb(233, 150, 122)">DarkSalmon</td>
+ <td align="left">rgb(233, 150, 122)</td>
+ <td align="left">#E9967A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon1</td>
+ <td align="center" style="background-color:rgb(255, 140, 105)">salmon1</td>
+ <td align="left">rgb(255, 140, 105)</td>
+ <td align="left">#FF8C69</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon2</td>
+ <td align="center" style="background-color:rgb(238, 130, 98)">salmon2</td>
+ <td align="left">rgb(238, 130, 98)</td>
+ <td align="left">#EE8262</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon3</td>
+ <td align="center" style="background-color:rgb(205, 112, 84)">salmon3</td>
+ <td align="left">rgb(205, 112, 84)</td>
+ <td align="left">#CD7054</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon4</td>
+ <td align="center" style="background-color:rgb(139, 76, 57)">salmon4</td>
+ <td align="left">rgb(139, 76, 57)</td>
+ <td align="left">#8B4C39</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral1</td>
+ <td align="center" style="background-color:rgb(255, 114, 86)">coral1</td>
+ <td align="left">rgb(255, 114, 86)</td>
+ <td align="left">#FF7256</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral2</td>
+ <td align="center" style="background-color:rgb(238, 106, 80)">coral2</td>
+ <td align="left">rgb(238, 106, 80)</td>
+ <td align="left">#EE6A50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral3</td>
+ <td align="center" style="background-color:rgb(205, 91, 69)">coral3</td>
+ <td align="left">rgb(205, 91, 69)</td>
+ <td align="left">#CD5B45</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral4</td>
+ <td align="center" style="background-color:rgb(139, 62, 47)">coral4</td>
+ <td align="left">rgb(139, 62, 47)</td>
+ <td align="left">#8B3E2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato4</td>
+ <td align="center" style="background-color:rgb(139, 54, 38)">tomato4</td>
+ <td align="left">rgb(139, 54, 38)</td>
+ <td align="left">#8B3626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato</td>
+ <td align="center" style="background-color:rgb(255, 99, 71)">tomato</td>
+ <td align="left">rgb(255, 99, 71)</td>
+ <td align="left">#FF6347</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato1</td>
+ <td align="center" style="background-color:rgb(255, 99, 71)">tomato1</td>
+ <td align="left">rgb(255, 99, 71)</td>
+ <td align="left">#FF6347</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato2</td>
+ <td align="center" style="background-color:rgb(238, 92, 66)">tomato2</td>
+ <td align="left">rgb(238, 92, 66)</td>
+ <td align="left">#EE5C42</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato3</td>
+ <td align="center" style="background-color:rgb(205, 79, 57)">tomato3</td>
+ <td align="left">rgb(205, 79, 57)</td>
+ <td align="left">#CD4F39</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose4</td>
+ <td align="center" style="background-color:rgb(139, 125, 123)">MistyRose4</td>
+ <td align="left">rgb(139, 125, 123)</td>
+ <td align="left">#8B7D7B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose2</td>
+ <td align="center" style="background-color:rgb(238, 213, 210)">MistyRose2</td>
+ <td align="left">rgb(238, 213, 210)</td>
+ <td align="left">#EED5D2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose</td>
+ <td align="center" style="background-color:rgb(255, 228, 225)">MistyRose</td>
+ <td align="left">rgb(255, 228, 225)</td>
+ <td align="left">#FFE4E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose1</td>
+ <td align="center" style="background-color:rgb(255, 228, 225)">MistyRose1</td>
+ <td align="left">rgb(255, 228, 225)</td>
+ <td align="left">#FFE4E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon</td>
+ <td align="center" style="background-color:rgb(250, 128, 114)">salmon</td>
+ <td align="left">rgb(250, 128, 114)</td>
+ <td align="left">#FA8072</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose3</td>
+ <td align="center" style="background-color:rgb(205, 183, 181)">MistyRose3</td>
+ <td align="left">rgb(205, 183, 181)</td>
+ <td align="left">#CDB7B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">white</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">white</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">gray100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">grey100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">grey100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray99</td>
+ <td align="center" style="background-color:rgb(252, 252, 252)">gray99</td>
+ <td align="left">rgb(252, 252, 252)</td>
+ <td align="left">#FCFCFC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey99</td>
+ <td align="center" style="background-color:rgb(252, 252, 252)">grey99</td>
+ <td align="left">rgb(252, 252, 252)</td>
+ <td align="left">#FCFCFC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray98</td>
+ <td align="center" style="background-color:rgb(250, 250, 250)">gray98</td>
+ <td align="left">rgb(250, 250, 250)</td>
+ <td align="left">#FAFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey98</td>
+ <td align="center" style="background-color:rgb(250, 250, 250)">grey98</td>
+ <td align="left">rgb(250, 250, 250)</td>
+ <td align="left">#FAFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray97</td>
+ <td align="center" style="background-color:rgb(247, 247, 247)">gray97</td>
+ <td align="left">rgb(247, 247, 247)</td>
+ <td align="left">#F7F7F7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey97</td>
+ <td align="center" style="background-color:rgb(247, 247, 247)">grey97</td>
+ <td align="left">rgb(247, 247, 247)</td>
+ <td align="left">#F7F7F7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray96</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">gray96</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey96</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">grey96</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">WhiteSmoke</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">WhiteSmoke</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray95</td>
+ <td align="center" style="background-color:rgb(242, 242, 242)">gray95</td>
+ <td align="left">rgb(242, 242, 242)</td>
+ <td align="left">#F2F2F2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey95</td>
+ <td align="center" style="background-color:rgb(242, 242, 242)">grey95</td>
+ <td align="left">rgb(242, 242, 242)</td>
+ <td align="left">#F2F2F2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray94</td>
+ <td align="center" style="background-color:rgb(240, 240, 240)">gray94</td>
+ <td align="left">rgb(240, 240, 240)</td>
+ <td align="left">#F0F0F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey94</td>
+ <td align="center" style="background-color:rgb(240, 240, 240)">grey94</td>
+ <td align="left">rgb(240, 240, 240)</td>
+ <td align="left">#F0F0F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray93</td>
+ <td align="center" style="background-color:rgb(237, 237, 237)">gray93</td>
+ <td align="left">rgb(237, 237, 237)</td>
+ <td align="left">#EDEDED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey93</td>
+ <td align="center" style="background-color:rgb(237, 237, 237)">grey93</td>
+ <td align="left">rgb(237, 237, 237)</td>
+ <td align="left">#EDEDED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray92</td>
+ <td align="center" style="background-color:rgb(235, 235, 235)">gray92</td>
+ <td align="left">rgb(235, 235, 235)</td>
+ <td align="left">#EBEBEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey92</td>
+ <td align="center" style="background-color:rgb(235, 235, 235)">grey92</td>
+ <td align="left">rgb(235, 235, 235)</td>
+ <td align="left">#EBEBEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray91</td>
+ <td align="center" style="background-color:rgb(232, 232, 232)">gray91</td>
+ <td align="left">rgb(232, 232, 232)</td>
+ <td align="left">#E8E8E8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey91</td>
+ <td align="center" style="background-color:rgb(232, 232, 232)">grey91</td>
+ <td align="left">rgb(232, 232, 232)</td>
+ <td align="left">#E8E8E8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray90</td>
+ <td align="center" style="background-color:rgb(229, 229, 229)">gray90</td>
+ <td align="left">rgb(229, 229, 229)</td>
+ <td align="left">#E5E5E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey90</td>
+ <td align="center" style="background-color:rgb(229, 229, 229)">grey90</td>
+ <td align="left">rgb(229, 229, 229)</td>
+ <td align="left">#E5E5E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray89</td>
+ <td align="center" style="background-color:rgb(227, 227, 227)">gray89</td>
+ <td align="left">rgb(227, 227, 227)</td>
+ <td align="left">#E3E3E3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey89</td>
+ <td align="center" style="background-color:rgb(227, 227, 227)">grey89</td>
+ <td align="left">rgb(227, 227, 227)</td>
+ <td align="left">#E3E3E3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray88</td>
+ <td align="center" style="background-color:rgb(224, 224, 224)">gray88</td>
+ <td align="left">rgb(224, 224, 224)</td>
+ <td align="left">#E0E0E0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey88</td>
+ <td align="center" style="background-color:rgb(224, 224, 224)">grey88</td>
+ <td align="left">rgb(224, 224, 224)</td>
+ <td align="left">#E0E0E0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray87</td>
+ <td align="center" style="background-color:rgb(222, 222, 222)">gray87</td>
+ <td align="left">rgb(222, 222, 222)</td>
+ <td align="left">#DEDEDE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey87</td>
+ <td align="center" style="background-color:rgb(222, 222, 222)">grey87</td>
+ <td align="left">rgb(222, 222, 222)</td>
+ <td align="left">#DEDEDE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gainsboro</td>
+ <td align="center" style="background-color:rgb(220, 220, 220)">gainsboro</td>
+ <td align="left">rgb(220, 220, 220)</td>
+ <td align="left">#DCDCDC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray86</td>
+ <td align="center" style="background-color:rgb(219, 219, 219)">gray86</td>
+ <td align="left">rgb(219, 219, 219)</td>
+ <td align="left">#DBDBDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey86</td>
+ <td align="center" style="background-color:rgb(219, 219, 219)">grey86</td>
+ <td align="left">rgb(219, 219, 219)</td>
+ <td align="left">#DBDBDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray85</td>
+ <td align="center" style="background-color:rgb(217, 217, 217)">gray85</td>
+ <td align="left">rgb(217, 217, 217)</td>
+ <td align="left">#D9D9D9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey85</td>
+ <td align="center" style="background-color:rgb(217, 217, 217)">grey85</td>
+ <td align="left">rgb(217, 217, 217)</td>
+ <td align="left">#D9D9D9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray84</td>
+ <td align="center" style="background-color:rgb(214, 214, 214)">gray84</td>
+ <td align="left">rgb(214, 214, 214)</td>
+ <td align="left">#D6D6D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey84</td>
+ <td align="center" style="background-color:rgb(214, 214, 214)">grey84</td>
+ <td align="left">rgb(214, 214, 214)</td>
+ <td align="left">#D6D6D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray83</td>
+ <td align="center" style="background-color:rgb(212, 212, 212)">gray83</td>
+ <td align="left">rgb(212, 212, 212)</td>
+ <td align="left">#D4D4D4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey83</td>
+ <td align="center" style="background-color:rgb(212, 212, 212)">grey83</td>
+ <td align="left">rgb(212, 212, 212)</td>
+ <td align="left">#D4D4D4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGray</td>
+ <td align="center" style="background-color:rgb(211, 211, 211)">LightGray</td>
+ <td align="left">rgb(211, 211, 211)</td>
+ <td align="left">#D3D3D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGrey</td>
+ <td align="center" style="background-color:rgb(211, 211, 211)">LightGrey</td>
+ <td align="left">rgb(211, 211, 211)</td>
+ <td align="left">#D3D3D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray82</td>
+ <td align="center" style="background-color:rgb(209, 209, 209)">gray82</td>
+ <td align="left">rgb(209, 209, 209)</td>
+ <td align="left">#D1D1D1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey82</td>
+ <td align="center" style="background-color:rgb(209, 209, 209)">grey82</td>
+ <td align="left">rgb(209, 209, 209)</td>
+ <td align="left">#D1D1D1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray81</td>
+ <td align="center" style="background-color:rgb(207, 207, 207)">gray81</td>
+ <td align="left">rgb(207, 207, 207)</td>
+ <td align="left">#CFCFCF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey81</td>
+ <td align="center" style="background-color:rgb(207, 207, 207)">grey81</td>
+ <td align="left">rgb(207, 207, 207)</td>
+ <td align="left">#CFCFCF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray80</td>
+ <td align="center" style="background-color:rgb(204, 204, 204)">gray80</td>
+ <td align="left">rgb(204, 204, 204)</td>
+ <td align="left">#CCCCCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey80</td>
+ <td align="center" style="background-color:rgb(204, 204, 204)">grey80</td>
+ <td align="left">rgb(204, 204, 204)</td>
+ <td align="left">#CCCCCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray79</td>
+ <td align="center" style="background-color:rgb(201, 201, 201)">gray79</td>
+ <td align="left">rgb(201, 201, 201)</td>
+ <td align="left">#C9C9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey79</td>
+ <td align="center" style="background-color:rgb(201, 201, 201)">grey79</td>
+ <td align="left">rgb(201, 201, 201)</td>
+ <td align="left">#C9C9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray78</td>
+ <td align="center" style="background-color:rgb(199, 199, 199)">gray78</td>
+ <td align="left">rgb(199, 199, 199)</td>
+ <td align="left">#C7C7C7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey78</td>
+ <td align="center" style="background-color:rgb(199, 199, 199)">grey78</td>
+ <td align="left">rgb(199, 199, 199)</td>
+ <td align="left">#C7C7C7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray77</td>
+ <td align="center" style="background-color:rgb(196, 196, 196)">gray77</td>
+ <td align="left">rgb(196, 196, 196)</td>
+ <td align="left">#C4C4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey77</td>
+ <td align="center" style="background-color:rgb(196, 196, 196)">grey77</td>
+ <td align="left">rgb(196, 196, 196)</td>
+ <td align="left">#C4C4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray76</td>
+ <td align="center" style="background-color:rgb(194, 194, 194)">gray76</td>
+ <td align="left">rgb(194, 194, 194)</td>
+ <td align="left">#C2C2C2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey76</td>
+ <td align="center" style="background-color:rgb(194, 194, 194)">grey76</td>
+ <td align="left">rgb(194, 194, 194)</td>
+ <td align="left">#C2C2C2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">silver</td>
+ <td align="center" style="background-color:rgb(192, 192, 192)">silver</td>
+ <td align="left">rgb(192, 192, 192)</td>
+ <td align="left">#C0C0C0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray75</td>
+ <td align="center" style="background-color:rgb(191, 191, 191)">gray75</td>
+ <td align="left">rgb(191, 191, 191)</td>
+ <td align="left">#BFBFBF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey75</td>
+ <td align="center" style="background-color:rgb(191, 191, 191)">grey75</td>
+ <td align="left">rgb(191, 191, 191)</td>
+ <td align="left">#BFBFBF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray74</td>
+ <td align="center" style="background-color:rgb(189, 189, 189)">gray74</td>
+ <td align="left">rgb(189, 189, 189)</td>
+ <td align="left">#BDBDBD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey74</td>
+ <td align="center" style="background-color:rgb(189, 189, 189)">grey74</td>
+ <td align="left">rgb(189, 189, 189)</td>
+ <td align="left">#BDBDBD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray73</td>
+ <td align="center" style="background-color:rgb(186, 186, 186)">gray73</td>
+ <td align="left">rgb(186, 186, 186)</td>
+ <td align="left">#BABABA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey73</td>
+ <td align="center" style="background-color:rgb(186, 186, 186)">grey73</td>
+ <td align="left">rgb(186, 186, 186)</td>
+ <td align="left">#BABABA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray72</td>
+ <td align="center" style="background-color:rgb(184, 184, 184)">gray72</td>
+ <td align="left">rgb(184, 184, 184)</td>
+ <td align="left">#B8B8B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey72</td>
+ <td align="center" style="background-color:rgb(184, 184, 184)">grey72</td>
+ <td align="left">rgb(184, 184, 184)</td>
+ <td align="left">#B8B8B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray71</td>
+ <td align="center" style="background-color:rgb(181, 181, 181)">gray71</td>
+ <td align="left">rgb(181, 181, 181)</td>
+ <td align="left">#B5B5B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey71</td>
+ <td align="center" style="background-color:rgb(181, 181, 181)">grey71</td>
+ <td align="left">rgb(181, 181, 181)</td>
+ <td align="left">#B5B5B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray70</td>
+ <td align="center" style="background-color:rgb(179, 179, 179)">gray70</td>
+ <td align="left">rgb(179, 179, 179)</td>
+ <td align="left">#B3B3B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey70</td>
+ <td align="center" style="background-color:rgb(179, 179, 179)">grey70</td>
+ <td align="left">rgb(179, 179, 179)</td>
+ <td align="left">#B3B3B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray69</td>
+ <td align="center" style="background-color:rgb(176, 176, 176)">gray69</td>
+ <td align="left">rgb(176, 176, 176)</td>
+ <td align="left">#B0B0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey69</td>
+ <td align="center" style="background-color:rgb(176, 176, 176)">grey69</td>
+ <td align="left">rgb(176, 176, 176)</td>
+ <td align="left">#B0B0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray68</td>
+ <td align="center" style="background-color:rgb(173, 173, 173)">gray68</td>
+ <td align="left">rgb(173, 173, 173)</td>
+ <td align="left">#ADADAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey68</td>
+ <td align="center" style="background-color:rgb(173, 173, 173)">grey68</td>
+ <td align="left">rgb(173, 173, 173)</td>
+ <td align="left">#ADADAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray67</td>
+ <td align="center" style="background-color:rgb(171, 171, 171)">gray67</td>
+ <td align="left">rgb(171, 171, 171)</td>
+ <td align="left">#ABABAB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey67</td>
+ <td align="center" style="background-color:rgb(171, 171, 171)">grey67</td>
+ <td align="left">rgb(171, 171, 171)</td>
+ <td align="left">#ABABAB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGray</td>
+ <td align="center" style="background-color:rgb(169, 169, 169)">DarkGray</td>
+ <td align="left">rgb(169, 169, 169)</td>
+ <td align="left">#A9A9A9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGrey</td>
+ <td align="center" style="background-color:rgb(169, 169, 169)">DarkGrey</td>
+ <td align="left">rgb(169, 169, 169)</td>
+ <td align="left">#A9A9A9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray66</td>
+ <td align="center" style="background-color:rgb(168, 168, 168)">gray66</td>
+ <td align="left">rgb(168, 168, 168)</td>
+ <td align="left">#A8A8A8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey66</td>
+ <td align="center" style="background-color:rgb(168, 168, 168)">grey66</td>
+ <td align="left">rgb(168, 168, 168)</td>
+ <td align="left">#A8A8A8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray65</td>
+ <td align="center" style="background-color:rgb(166, 166, 166)">gray65</td>
+ <td align="left">rgb(166, 166, 166)</td>
+ <td align="left">#A6A6A6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey65</td>
+ <td align="center" style="background-color:rgb(166, 166, 166)">grey65</td>
+ <td align="left">rgb(166, 166, 166)</td>
+ <td align="left">#A6A6A6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray64</td>
+ <td align="center" style="background-color:rgb(163, 163, 163)">gray64</td>
+ <td align="left">rgb(163, 163, 163)</td>
+ <td align="left">#A3A3A3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey64</td>
+ <td align="center" style="background-color:rgb(163, 163, 163)">grey64</td>
+ <td align="left">rgb(163, 163, 163)</td>
+ <td align="left">#A3A3A3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray63</td>
+ <td align="center" style="background-color:rgb(161, 161, 161)">gray63</td>
+ <td align="left">rgb(161, 161, 161)</td>
+ <td align="left">#A1A1A1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey63</td>
+ <td align="center" style="background-color:rgb(161, 161, 161)">grey63</td>
+ <td align="left">rgb(161, 161, 161)</td>
+ <td align="left">#A1A1A1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray62</td>
+ <td align="center" style="background-color:rgb(158, 158, 158)">gray62</td>
+ <td align="left">rgb(158, 158, 158)</td>
+ <td align="left">#9E9E9E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey62</td>
+ <td align="center" style="background-color:rgb(158, 158, 158)">grey62</td>
+ <td align="left">rgb(158, 158, 158)</td>
+ <td align="left">#9E9E9E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray61</td>
+ <td align="center" style="background-color:rgb(156, 156, 156)">gray61</td>
+ <td align="left">rgb(156, 156, 156)</td>
+ <td align="left">#9C9C9C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey61</td>
+ <td align="center" style="background-color:rgb(156, 156, 156)">grey61</td>
+ <td align="left">rgb(156, 156, 156)</td>
+ <td align="left">#9C9C9C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray60</td>
+ <td align="center" style="background-color:rgb(153, 153, 153)">gray60</td>
+ <td align="left">rgb(153, 153, 153)</td>
+ <td align="left">#999999</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey60</td>
+ <td align="center" style="background-color:rgb(153, 153, 153)">grey60</td>
+ <td align="left">rgb(153, 153, 153)</td>
+ <td align="left">#999999</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray59</td>
+ <td align="center" style="background-color:rgb(150, 150, 150)">gray59</td>
+ <td align="left">rgb(150, 150, 150)</td>
+ <td align="left">#969696</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey59</td>
+ <td align="center" style="background-color:rgb(150, 150, 150)">grey59</td>
+ <td align="left">rgb(150, 150, 150)</td>
+ <td align="left">#969696</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray58</td>
+ <td align="center" style="background-color:rgb(148, 148, 148)">gray58</td>
+ <td align="left">rgb(148, 148, 148)</td>
+ <td align="left">#949494</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey58</td>
+ <td align="center" style="background-color:rgb(148, 148, 148)">grey58</td>
+ <td align="left">rgb(148, 148, 148)</td>
+ <td align="left">#949494</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray57</td>
+ <td align="center" style="background-color:rgb(145, 145, 145)">gray57</td>
+ <td align="left">rgb(145, 145, 145)</td>
+ <td align="left">#919191</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey57</td>
+ <td align="center" style="background-color:rgb(145, 145, 145)">grey57</td>
+ <td align="left">rgb(145, 145, 145)</td>
+ <td align="left">#919191</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray56</td>
+ <td align="center" style="background-color:rgb(143, 143, 143)">gray56</td>
+ <td align="left">rgb(143, 143, 143)</td>
+ <td align="left">#8F8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey56</td>
+ <td align="center" style="background-color:rgb(143, 143, 143)">grey56</td>
+ <td align="left">rgb(143, 143, 143)</td>
+ <td align="left">#8F8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray55</td>
+ <td align="center" style="background-color:rgb(140, 140, 140)">gray55</td>
+ <td align="left">rgb(140, 140, 140)</td>
+ <td align="left">#8C8C8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey55</td>
+ <td align="center" style="background-color:rgb(140, 140, 140)">grey55</td>
+ <td align="left">rgb(140, 140, 140)</td>
+ <td align="left">#8C8C8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray54</td>
+ <td align="center" style="background-color:rgb(138, 138, 138)">gray54</td>
+ <td align="left">rgb(138, 138, 138)</td>
+ <td align="left">#8A8A8A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey54</td>
+ <td align="center" style="background-color:rgb(138, 138, 138)">grey54</td>
+ <td align="left">rgb(138, 138, 138)</td>
+ <td align="left">#8A8A8A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray53</td>
+ <td align="center" style="background-color:rgb(135, 135, 135)">gray53</td>
+ <td align="left">rgb(135, 135, 135)</td>
+ <td align="left">#878787</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey53</td>
+ <td align="center" style="background-color:rgb(135, 135, 135)">grey53</td>
+ <td align="left">rgb(135, 135, 135)</td>
+ <td align="left">#878787</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray52</td>
+ <td align="center" style="background-color:rgb(133, 133, 133)">gray52</td>
+ <td align="left">rgb(133, 133, 133)</td>
+ <td align="left">#858585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey52</td>
+ <td align="center" style="background-color:rgb(133, 133, 133)">grey52</td>
+ <td align="left">rgb(133, 133, 133)</td>
+ <td align="left">#858585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray51</td>
+ <td align="center" style="background-color:rgb(130, 130, 130)">gray51</td>
+ <td align="left">rgb(130, 130, 130)</td>
+ <td align="left">#828282</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey51</td>
+ <td align="center" style="background-color:rgb(130, 130, 130)">grey51</td>
+ <td align="left">rgb(130, 130, 130)</td>
+ <td align="left">#828282</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">fractal</td>
+ <td align="center" style="background-color:rgb(128, 128, 128)">fractal</td>
+ <td align="left">rgb(128, 128, 128)</td>
+ <td align="left">#808080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray50</td>
+ <td align="center" style="background-color:rgb(127, 127, 127)">gray50</td>
+ <td align="left">rgb(127, 127, 127)</td>
+ <td align="left">#7F7F7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey50</td>
+ <td align="center" style="background-color:rgb(127, 127, 127)">grey50</td>
+ <td align="left">rgb(127, 127, 127)</td>
+ <td align="left">#7F7F7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray</td>
+ <td align="center" style="background-color:rgb(126, 126, 126)">gray</td>
+ <td align="left">rgb(126, 126, 126)</td>
+ <td align="left">#7E7E7E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray49</td>
+ <td align="center" style="background-color:rgb(125, 125, 125)">gray49</td>
+ <td align="left">rgb(125, 125, 125)</td>
+ <td align="left">#7D7D7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey49</td>
+ <td align="center" style="background-color:rgb(125, 125, 125)">grey49</td>
+ <td align="left">rgb(125, 125, 125)</td>
+ <td align="left">#7D7D7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray48</td>
+ <td align="center" style="background-color:rgb(122, 122, 122)">gray48</td>
+ <td align="left">rgb(122, 122, 122)</td>
+ <td align="left">#7A7A7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey48</td>
+ <td align="center" style="background-color:rgb(122, 122, 122)">grey48</td>
+ <td align="left">rgb(122, 122, 122)</td>
+ <td align="left">#7A7A7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray47</td>
+ <td align="center" style="background-color:rgb(120, 120, 120)">gray47</td>
+ <td align="left">rgb(120, 120, 120)</td>
+ <td align="left">#787878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey47</td>
+ <td align="center" style="background-color:rgb(120, 120, 120)">grey47</td>
+ <td align="left">rgb(120, 120, 120)</td>
+ <td align="left">#787878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray46</td>
+ <td align="center" style="background-color:rgb(117, 117, 117)">gray46</td>
+ <td align="left">rgb(117, 117, 117)</td>
+ <td align="left">#757575</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey46</td>
+ <td align="center" style="background-color:rgb(117, 117, 117)">grey46</td>
+ <td align="left">rgb(117, 117, 117)</td>
+ <td align="left">#757575</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray45</td>
+ <td align="center" style="background-color:rgb(115, 115, 115)">gray45</td>
+ <td align="left">rgb(115, 115, 115)</td>
+ <td align="left">#737373</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey45</td>
+ <td align="center" style="background-color:rgb(115, 115, 115)">grey45</td>
+ <td align="left">rgb(115, 115, 115)</td>
+ <td align="left">#737373</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray44</td>
+ <td align="center" style="background-color:rgb(112, 112, 112)">gray44</td>
+ <td align="left">rgb(112, 112, 112)</td>
+ <td align="left">#707070</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey44</td>
+ <td align="center" style="background-color:rgb(112, 112, 112)">grey44</td>
+ <td align="left">rgb(112, 112, 112)</td>
+ <td align="left">#707070</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray43</td>
+ <td align="center" style="background-color:rgb(110, 110, 110)">gray43</td>
+ <td align="left">rgb(110, 110, 110)</td>
+ <td align="left">#6E6E6E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey43</td>
+ <td align="center" style="background-color:rgb(110, 110, 110)">grey43</td>
+ <td align="left">rgb(110, 110, 110)</td>
+ <td align="left">#6E6E6E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray42</td>
+ <td align="center" style="background-color:rgb(107, 107, 107)">gray42</td>
+ <td align="left">rgb(107, 107, 107)</td>
+ <td align="left">#6B6B6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey42</td>
+ <td align="center" style="background-color:rgb(107, 107, 107)">grey42</td>
+ <td align="left">rgb(107, 107, 107)</td>
+ <td align="left">#6B6B6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DimGray</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">DimGray</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DimGrey</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">DimGrey</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray41</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">gray41</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey41</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">grey41</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray40</td>
+ <td align="center" style="background-color:rgb(102, 102, 102)">gray40</td>
+ <td align="left">rgb(102, 102, 102)</td>
+ <td align="left">#666666</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey40</td>
+ <td align="center" style="background-color:rgb(102, 102, 102)">grey40</td>
+ <td align="left">rgb(102, 102, 102)</td>
+ <td align="left">#666666</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray39</td>
+ <td align="center" style="background-color:rgb( 99, 99, 99)">gray39</td>
+ <td align="left">rgb( 99, 99, 99)</td>
+ <td align="left">#636363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey39</td>
+ <td align="center" style="background-color:rgb( 99, 99, 99)">grey39</td>
+ <td align="left">rgb( 99, 99, 99)</td>
+ <td align="left">#636363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray38</td>
+ <td align="center" style="background-color:rgb( 97, 97, 97)">gray38</td>
+ <td align="left">rgb( 97, 97, 97)</td>
+ <td align="left">#616161</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey38</td>
+ <td align="center" style="background-color:rgb( 97, 97, 97)">grey38</td>
+ <td align="left">rgb( 97, 97, 97)</td>
+ <td align="left">#616161</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray37</td>
+ <td align="center" style="background-color:rgb( 94, 94, 94)">gray37</td>
+ <td align="left">rgb( 94, 94, 94)</td>
+ <td align="left">#5E5E5E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey37</td>
+ <td align="center" style="background-color:rgb( 94, 94, 94)">grey37</td>
+ <td align="left">rgb( 94, 94, 94)</td>
+ <td align="left">#5E5E5E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray36</td>
+ <td align="center" style="background-color:rgb( 92, 92, 92)">gray36</td>
+ <td align="left">rgb( 92, 92, 92)</td>
+ <td align="left">#5C5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey36</td>
+ <td align="center" style="background-color:rgb( 92, 92, 92)">grey36</td>
+ <td align="left">rgb( 92, 92, 92)</td>
+ <td align="left">#5C5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray35</td>
+ <td align="center" style="background-color:rgb( 89, 89, 89)">gray35</td>
+ <td align="left">rgb( 89, 89, 89)</td>
+ <td align="left">#595959</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey35</td>
+ <td align="center" style="background-color:rgb( 89, 89, 89)">grey35</td>
+ <td align="left">rgb( 89, 89, 89)</td>
+ <td align="left">#595959</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray34</td>
+ <td align="center" style="background-color:rgb( 87, 87, 87)">gray34</td>
+ <td align="left">rgb( 87, 87, 87)</td>
+ <td align="left">#575757</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey34</td>
+ <td align="center" style="background-color:rgb( 87, 87, 87)">grey34</td>
+ <td align="left">rgb( 87, 87, 87)</td>
+ <td align="left">#575757</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray33</td>
+ <td align="center" style="background-color:rgb( 84, 84, 84)">gray33</td>
+ <td align="left">rgb( 84, 84, 84)</td>
+ <td align="left">#545454</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey33</td>
+ <td align="center" style="background-color:rgb( 84, 84, 84)">grey33</td>
+ <td align="left">rgb( 84, 84, 84)</td>
+ <td align="left">#545454</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray32</td>
+ <td align="center" style="background-color:rgb( 82, 82, 82)">gray32</td>
+ <td align="left">rgb( 82, 82, 82)</td>
+ <td align="left">#525252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey32</td>
+ <td align="center" style="background-color:rgb( 82, 82, 82)">grey32</td>
+ <td align="left">rgb( 82, 82, 82)</td>
+ <td align="left">#525252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray31</td>
+ <td align="center" style="background-color:rgb( 79, 79, 79)">gray31</td>
+ <td align="left">rgb( 79, 79, 79)</td>
+ <td align="left">#4F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey31</td>
+ <td align="center" style="background-color:rgb( 79, 79, 79)">grey31</td>
+ <td align="left">rgb( 79, 79, 79)</td>
+ <td align="left">#4F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray30</td>
+ <td align="center" style="background-color:rgb( 77, 77, 77)">gray30</td>
+ <td align="left">rgb( 77, 77, 77)</td>
+ <td align="left">#4D4D4D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey30</td>
+ <td align="center" style="background-color:rgb( 77, 77, 77)">grey30</td>
+ <td align="left">rgb( 77, 77, 77)</td>
+ <td align="left">#4D4D4D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray29</td>
+ <td align="center" style="background-color:rgb( 74, 74, 74)">gray29</td>
+ <td align="left">rgb( 74, 74, 74)</td>
+ <td align="left">#4A4A4A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey29</td>
+ <td align="center" style="background-color:rgb( 74, 74, 74)">grey29</td>
+ <td align="left">rgb( 74, 74, 74)</td>
+ <td align="left">#4A4A4A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray28</td>
+ <td align="center" style="background-color:rgb( 71, 71, 71)">gray28</td>
+ <td align="left">rgb( 71, 71, 71)</td>
+ <td align="left">#474747</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey28</td>
+ <td align="center" style="background-color:rgb( 71, 71, 71)">grey28</td>
+ <td align="left">rgb( 71, 71, 71)</td>
+ <td align="left">#474747</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray27</td>
+ <td align="center" style="background-color:rgb( 69, 69, 69)">gray27</td>
+ <td align="left">rgb( 69, 69, 69)</td>
+ <td align="left">#454545</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey27</td>
+ <td align="center" style="background-color:rgb( 69, 69, 69)">grey27</td>
+ <td align="left">rgb( 69, 69, 69)</td>
+ <td align="left">#454545</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray26</td>
+ <td align="center" style="background-color:rgb( 66, 66, 66)">gray26</td>
+ <td align="left">rgb( 66, 66, 66)</td>
+ <td align="left">#424242</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey26</td>
+ <td align="center" style="background-color:rgb( 66, 66, 66)">grey26</td>
+ <td align="left">rgb( 66, 66, 66)</td>
+ <td align="left">#424242</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray25</td>
+ <td align="center" style="background-color:rgb( 64, 64, 64)">gray25</td>
+ <td align="left">rgb( 64, 64, 64)</td>
+ <td align="left">#404040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey25</td>
+ <td align="center" style="background-color:rgb( 64, 64, 64)">grey25</td>
+ <td align="left">rgb( 64, 64, 64)</td>
+ <td align="left">#404040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray24</td>
+ <td align="center" style="background-color:rgb( 61, 61, 61)">gray24</td>
+ <td align="left">rgb( 61, 61, 61)</td>
+ <td align="left">#3D3D3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey24</td>
+ <td align="center" style="background-color:rgb( 61, 61, 61)">grey24</td>
+ <td align="left">rgb( 61, 61, 61)</td>
+ <td align="left">#3D3D3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray23</td>
+ <td align="center" style="background-color:rgb( 59, 59, 59)">gray23</td>
+ <td align="left">rgb( 59, 59, 59)</td>
+ <td align="left">#3B3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey23</td>
+ <td align="center" style="background-color:rgb( 59, 59, 59)">grey23</td>
+ <td align="left">rgb( 59, 59, 59)</td>
+ <td align="left">#3B3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray22</td>
+ <td align="center" style="background-color:rgb( 56, 56, 56)">gray22</td>
+ <td align="left">rgb( 56, 56, 56)</td>
+ <td align="left">#383838</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey22</td>
+ <td align="center" style="background-color:rgb( 56, 56, 56)">grey22</td>
+ <td align="left">rgb( 56, 56, 56)</td>
+ <td align="left">#383838</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray21</td>
+ <td align="center" style="background-color:rgb( 54, 54, 54)">gray21</td>
+ <td align="left">rgb( 54, 54, 54)</td>
+ <td align="left">#363636</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey21</td>
+ <td align="center" style="background-color:rgb( 54, 54, 54)">grey21</td>
+ <td align="left">rgb( 54, 54, 54)</td>
+ <td align="left">#363636</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray20</td>
+ <td align="center" style="background-color:rgb( 51, 51, 51)">gray20</td>
+ <td align="left">rgb( 51, 51, 51)</td>
+ <td align="left">#333333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey20</td>
+ <td align="center" style="background-color:rgb( 51, 51, 51)">grey20</td>
+ <td align="left">rgb( 51, 51, 51)</td>
+ <td align="left">#333333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray19</td>
+ <td align="center" style="background-color:rgb( 48, 48, 48)">gray19</td>
+ <td align="left">rgb( 48, 48, 48)</td>
+ <td align="left">#303030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey19</td>
+ <td align="center" style="background-color:rgb( 48, 48, 48)">grey19</td>
+ <td align="left">rgb( 48, 48, 48)</td>
+ <td align="left">#303030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray18</td>
+ <td align="center" style="background-color:rgb( 46, 46, 46)">gray18</td>
+ <td align="left">rgb( 46, 46, 46)</td>
+ <td align="left">#2E2E2E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey18</td>
+ <td align="center" style="background-color:rgb( 46, 46, 46)">grey18</td>
+ <td align="left">rgb( 46, 46, 46)</td>
+ <td align="left">#2E2E2E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray17</td>
+ <td align="center" style="background-color:rgb( 43, 43, 43)">gray17</td>
+ <td align="left">rgb( 43, 43, 43)</td>
+ <td align="left">#2B2B2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey17</td>
+ <td align="center" style="background-color:rgb( 43, 43, 43)">grey17</td>
+ <td align="left">rgb( 43, 43, 43)</td>
+ <td align="left">#2B2B2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray16</td>
+ <td align="center" style="background-color:rgb( 41, 41, 41)">gray16</td>
+ <td align="left">rgb( 41, 41, 41)</td>
+ <td align="left">#292929</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey16</td>
+ <td align="center" style="background-color:rgb( 41, 41, 41)">grey16</td>
+ <td align="left">rgb( 41, 41, 41)</td>
+ <td align="left">#292929</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray15</td>
+ <td align="center" style="background-color:rgb( 38, 38, 38)">gray15</td>
+ <td align="left">rgb( 38, 38, 38)</td>
+ <td align="left">#262626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey15</td>
+ <td align="center" style="background-color:rgb( 38, 38, 38)">grey15</td>
+ <td align="left">rgb( 38, 38, 38)</td>
+ <td align="left">#262626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray14</td>
+ <td align="center" style="background-color:rgb( 36, 36, 36)">gray14</td>
+ <td align="left">rgb( 36, 36, 36)</td>
+ <td align="left">#242424</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey14</td>
+ <td align="center" style="background-color:rgb( 36, 36, 36)">grey14</td>
+ <td align="left">rgb( 36, 36, 36)</td>
+ <td align="left">#242424</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray13</td>
+ <td align="center" style="background-color:rgb( 33, 33, 33)">gray13</td>
+ <td align="left">rgb( 33, 33, 33)</td>
+ <td align="left">#212121</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey13</td>
+ <td align="center" style="background-color:rgb( 33, 33, 33)">grey13</td>
+ <td align="left">rgb( 33, 33, 33)</td>
+ <td align="left">#212121</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray12</td>
+ <td align="center" style="background-color:rgb( 31, 31, 31)">gray12</td>
+ <td align="left">rgb( 31, 31, 31)</td>
+ <td align="left">#1F1F1F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey12</td>
+ <td align="center" style="background-color:rgb( 31, 31, 31)">grey12</td>
+ <td align="left">rgb( 31, 31, 31)</td>
+ <td align="left">#1F1F1F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray11</td>
+ <td align="center" style="background-color:rgb( 28, 28, 28)">gray11</td>
+ <td align="left">rgb( 28, 28, 28)</td>
+ <td align="left">#1C1C1C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey11</td>
+ <td align="center" style="background-color:rgb( 28, 28, 28)">grey11</td>
+ <td align="left">rgb( 28, 28, 28)</td>
+ <td align="left">#1C1C1C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray10</td>
+ <td align="center" style="background-color:rgb( 26, 26, 26)">gray10</td>
+ <td align="left">rgb( 26, 26, 26)</td>
+ <td align="left">#1A1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey10</td>
+ <td align="center" style="background-color:rgb( 26, 26, 26)">grey10</td>
+ <td align="left">rgb( 26, 26, 26)</td>
+ <td align="left">#1A1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray9</td>
+ <td align="center" style="background-color:rgb( 23, 23, 23)">gray9</td>
+ <td align="left">rgb( 23, 23, 23)</td>
+ <td align="left">#171717</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey9</td>
+ <td align="center" style="background-color:rgb( 23, 23, 23)">grey9</td>
+ <td align="left">rgb( 23, 23, 23)</td>
+ <td align="left">#171717</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray8</td>
+ <td align="center" style="background-color:rgb( 20, 20, 20)">gray8</td>
+ <td align="left">rgb( 20, 20, 20)</td>
+ <td align="left">#141414</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey8</td>
+ <td align="center" style="background-color:rgb( 20, 20, 20)">grey8</td>
+ <td align="left">rgb( 20, 20, 20)</td>
+ <td align="left">#141414</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray7</td>
+ <td align="center" style="background-color:rgb( 18, 18, 18)">gray7</td>
+ <td align="left">rgb( 18, 18, 18)</td>
+ <td align="left">#121212</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey7</td>
+ <td align="center" style="background-color:rgb( 18, 18, 18)">grey7</td>
+ <td align="left">rgb( 18, 18, 18)</td>
+ <td align="left">#121212</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray6</td>
+ <td align="center" style="background-color:rgb( 15, 15, 15)">gray6</td>
+ <td align="left">rgb( 15, 15, 15)</td>
+ <td align="left">#0F0F0F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey6</td>
+ <td align="center" style="background-color:rgb( 15, 15, 15)">grey6</td>
+ <td align="left">rgb( 15, 15, 15)</td>
+ <td align="left">#0F0F0F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray5</td>
+ <td align="center" style="background-color:rgb( 13, 13, 13)">gray5</td>
+ <td align="left">rgb( 13, 13, 13)</td>
+ <td align="left">#0D0D0D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey5</td>
+ <td align="center" style="background-color:rgb( 13, 13, 13)">grey5</td>
+ <td align="left">rgb( 13, 13, 13)</td>
+ <td align="left">#0D0D0D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray4</td>
+ <td align="center" style="background-color:rgb( 10, 10, 10)">gray4</td>
+ <td align="left">rgb( 10, 10, 10)</td>
+ <td align="left">#0A0A0A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey4</td>
+ <td align="center" style="background-color:rgb( 10, 10, 10)">grey4</td>
+ <td align="left">rgb( 10, 10, 10)</td>
+ <td align="left">#0A0A0A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray3</td>
+ <td align="center" style="background-color:rgb( 8, 8, 8)">gray3</td>
+ <td align="left">rgb( 8, 8, 8)</td>
+ <td align="left">#080808</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey3</td>
+ <td align="center" style="background-color:rgb( 8, 8, 8)">grey3</td>
+ <td align="left">rgb( 8, 8, 8)</td>
+ <td align="left">#080808</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray2</td>
+ <td align="center" style="background-color:rgb( 5, 5, 5)">gray2</td>
+ <td align="left">rgb( 5, 5, 5)</td>
+ <td align="left">#050505</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey2</td>
+ <td align="center" style="background-color:rgb( 5, 5, 5)">grey2</td>
+ <td align="left">rgb( 5, 5, 5)</td>
+ <td align="left">#050505</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray1</td>
+ <td align="center" style="background-color:rgb( 3, 3, 3)">gray1</td>
+ <td align="left">rgb( 3, 3, 3)</td>
+ <td align="left">#030303</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey1</td>
+ <td align="center" style="background-color:rgb( 3, 3, 3)">grey1</td>
+ <td align="left">rgb( 3, 3, 3)</td>
+ <td align="left">#030303</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">black</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">black</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray0</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">gray0</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey0</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">grey0</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">opaque</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">opaque</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">none</td>
+ <td align="center" style="background-color:white">none</td>
+ <td align="left">rgba( 0, 0, 0, 0.0)</td>
+ <td align="left">#00000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">transparent</td>
+ <td align="center" style="background-color:white">transparent</td>
+ <td align="left">rgba( 0, 0, 0, 0.0)</td>
+ <td align="left">#00000000</td>
+
+ </tr>
+
+ </tbody>
+</table>
+
+</div>
+
+</div>
+
+</body></html>
diff --git a/frontend/imgrid/colors/colors/js/wrkshp/hexes b/frontend/imgrid/colors/colors/js/wrkshp/hexes
new file mode 100755
index 0000000..dcc3bda
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/wrkshp/hexes
@@ -0,0 +1 @@
+hexlist = ['#FFFAFA', '#FFFAFA', '#EEE9E9', '#FFC1C1', '#EEB4B4', '#CDC9C9', '#F08080', '#FF6A6A', '#CD9B9B', '#EE6363', '#BC8F8F', '#FF4040', '#FF3030', '#EE3B3B', '#CD5C5C', '#CD5555', '#EE2C2C', '#8B8989', '#CD3333', '#FF0000', '#FF0000', '#8B6969', '#CD2626', '#EE0000', '#B22222', '#A52A2A', '#CD0000', '#8B3A3A', '#8B2323', '#8B1A1A', '#8B0000', '#8B0000', '#800000', '#FFAEB9', '#CD8C95', '#8B5F65', '#EEA2AD', '#FFB6C1', '#FFC0CB', '#DC143C', '#FFB5C5', '#EEA9B8', '#CD919E', '#8B636C', '#8B475D', '#DB7093', '#EE799F', '#FF82AB', '#CD6889', '#FFF0F5', '#FFF0F5', '#CDC1C5', '#EEE0E5', '#8B8386', '#B03060', '#CD6090', '#CD3278', '#FF3E96', '#EE3A8C', '#8B2252', '#EE6AA7', '#FF6EB4', '#8B3A62', '#FF69B4', '#FF1493', '#FF1493', '#EE1289', '#CD1076', '#8B0A50', '#FF34B3', '#EE30A7', '#CD2990', '#8B1C62', '#C71585', '#D02090', '#EE7AE9', '#DA70D6', '#FF83FA', '#CD69C9', '#8B4789', '#FFE1FF', '#EED2EE', '#FFBBFF', '#EEAEEE', '#D8BFD8', '#CDB5CD', '#DDA0DD', '#EE82EE', '#CD96CD', '#8B7B8B', '#FF00FF', '#FF00FF', '#FF00FF', '#8B668B', '#EE00EE', '#CD00CD', '#8B008B', '#8B008B', '#800080', '#BA55D3', '#E066FF', '#D15FEE', '#B452CD', '#7A378B', '#9400D3', '#9932CC', '#BF3EFF', '#9A32CD', '#B23AEE', '#68228B', '#A020F0', '#4B0082', '#8A2BE2', '#912CEE', '#7D26CD', '#551A8B', '#9B30FF', '#9370DB', '#AB82FF', '#9F79EE', '#8968CD', '#5D478B', '#483D8B', '#8470FF', '#7B68EE', '#6A5ACD', '#836FFF', '#7A67EE', '#6959CD', '#473C8B', '#F8F8FF', '#E6E6FA', '#0000FF', '#0000FF', '#0000EE', '#0000CD', '#0000CD', '#00008B', '#00008B', '#191970', '#000080', '#000080', '#4169E1', '#4876FF', '#436EEE', '#3A5FCD', '#27408B', '#6495ED', '#B0C4DE', '#CAE1FF', '#BCD2EE', '#A2B5CD', '#6E7B8B', '#6C7B8B', '#C6E2FF', '#B9D3EE', '#9FB6CD', '#778899', '#778899', '#708090', '#708090', '#1E90FF', '#1E90FF', '#1C86EE', '#104E8B', '#1874CD', '#F0F8FF', '#36648B', '#4682B4', '#63B8FF', '#5CACEE', '#4F94CD', '#4A708B', '#87CEFF', '#7EC0EE', '#6CA6CD', '#87CEFA', '#607B8B', '#B0E2FF', '#A4D3EE', '#8DB6CD', '#87CEEB', '#9AC0CD', '#00BFFF', '#00BFFF', '#00B2EE', '#00688B', '#009ACD', '#BFEFFF', '#B2DFEE', '#ADD8E6', '#68838B', '#B0E0E6', '#98F5FF', '#8EE5EE', '#7AC5CD', '#53868B', '#00F5FF', '#00E5EE', '#00C5CD', '#00868B', '#5F9EA0', '#5F9EA0', '#00CED1', '#F0FFFF', '#F0FFFF', '#E0FFFF', '#E0FFFF', '#E0EEEE', '#D1EEEE', '#BBFFFF', '#AFEEEE', '#AEEEEE', '#97FFFF', '#C1CDCD', '#B4CDCD', '#8DEEEE', '#96CDCD', '#79CDCD', '#838B8B', '#7A8B8B', '#00FFFF', '#00FFFF', '#00FFFF', '#668B8B', '#00EEEE', '#528B8B', '#00CDCD', '#008B8B', '#008B8B', '#008080', '#2F4F4F', '#2F4F4F', '#48D1CC', '#20B2AA', '#40E0D0', '#458B74', '#7FFFD4', '#7FFFD4', '#76EEC6', '#66CDAA', '#66CDAA', '#00FA9A', '#F5FFFA', '#00FF7F', '#00FF7F', '#00EE76', '#00CD66', '#008B45', '#3CB371', '#2E8B57', '#43CD80', '#54FF9F', '#2E8B57', '#4EEE94', '#32814B', '#F0FFF0', '#F0FFF0', '#E0EEE0', '#C1FFC1', '#B4EEB4', '#9AFF9A', '#98FB98', '#C1CDC1', '#90EE90', '#90EE90', '#9BCD9B', '#8FBC8F', '#7CCD7C', '#838B83', '#00FF00', '#00FF00', '#32CD32', '#698B69', '#00EE00', '#548B54', '#00CD00', '#228B22', '#008B00', '#008000', '#006400', '#7CFC00', '#7FFF00', '#7FFF00', '#76EE00', '#66CD00', '#458B00', '#ADFF2F', '#A2CD5A', '#CAFF70', '#BCEE68', '#6E8B3D', '#556B2F', '#6B8E23', '#C0FF3E', '#B3EE3A', '#9ACD32', '#9ACD32', '#698B22', '#FFFFF0', '#FFFFF0', '#FFFFE0', '#FFFFE0', '#F5F5DC', '#EEEEE0', '#FAFAD2', '#EEEED1', '#CDCDC1', '#CDCDB4', '#8B8B83', '#8B8B7A', '#FFFF00', '#FFFF00', '#EEEE00', '#CDCD00', '#8B8B00', '#808000', '#BDB76B', '#EEE685', '#8B8970', '#FFF68F', '#CDC673', '#8B864E', '#EEE8AA', '#FFFACD', '#FFFACD', '#F0E68C', '#CDC9A5', '#EEE9BF', '#D1C166', '#8B8878', '#FFD700', '#FFD700', '#EEC900', '#CDAD00', '#8B7500', '#EEDD82', '#8B814C', '#FFEC8B', '#CDBE70', '#EEDC82', '#CDC8B1', '#EEE8CD', '#FFF8DC', '#FFF8DC', '#DAA520', '#FFC125', '#EEB422', '#CD9B1D', '#8B6914', '#B8860B', '#FFB90F', '#EEAD0E', '#CD950C', '#8B6508', '#FFFAF0', '#EED8AE', '#FDF5E6', '#F5DEB3', '#FFE7BA', '#CDBA96', '#FFA500', '#FFA500', '#EE9A00', '#CD8500', '#8B5A00', '#8B7E66', '#FFE4B5', '#FFEFD5', '#CDB38B', '#FFEBCD', '#FFDEAD', '#FFDEAD', '#EECFA1', '#8B795E', '#8B8378', '#FAEBD7', '#D2B48C', '#8B7D6B', '#DEB887', '#EEDFCC', '#FFD39B', '#CDAA7D', '#EEC591', '#FFEFDB', '#8B7355', '#CDC0B0', '#FF8C00', '#EED5B7', '#FFE4C4', '#FFE4C4', '#CDB79E', '#FF7F00', '#FAF0E6', '#EE7600', '#CD6600', '#8B4500', '#CD853F', '#FFA54F', '#EE9A49', '#CD853F', '#8B5A2B', '#FFDAB9', '#FFDAB9', '#8B7765', '#EECBAD', '#CDAF95', '#F4A460', '#8B8682', '#EEE5DE', '#CDC5BF', '#D2691E', '#FF7F24', '#EE7621', '#CD661D', '#8B4513', '#8B4513', '#FFF5EE', '#FFF5EE', '#8B4726', '#A0522D', '#FF8247', '#EE7942', '#CD6839', '#CD8162', '#FFA07A', '#FFA07A', '#8B5742', '#EE9572', '#FF7F50', '#FF4500', '#FF4500', '#EE4000', '#CD3700', '#8B2500', '#E9967A', '#FF8C69', '#EE8262', '#CD7054', '#8B4C39', '#FF7256', '#EE6A50', '#CD5B45', '#8B3E2F', '#8B3626', '#FF6347', '#FF6347', '#EE5C42', '#CD4F39', '#8B7D7B', '#EED5D2', '#FFE4E1', '#FFE4E1', '#FA8072', '#CDB7B5', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FCFCFC', '#FCFCFC', '#FAFAFA', '#FAFAFA', '#F7F7F7', '#F7F7F7', '#F5F5F5', '#F5F5F5', '#F5F5F5', '#F2F2F2', '#F2F2F2', '#F0F0F0', '#F0F0F0', '#EDEDED', '#EDEDED', '#EBEBEB', '#EBEBEB', '#E8E8E8', '#E8E8E8', '#E5E5E5', '#E5E5E5', '#E3E3E3', '#E3E3E3', '#E0E0E0', '#E0E0E0', '#DEDEDE', '#DEDEDE', '#DCDCDC', '#DBDBDB', '#DBDBDB', '#D9D9D9', '#D9D9D9', '#D6D6D6', '#D6D6D6', '#D4D4D4', '#D4D4D4', '#D3D3D3', '#D3D3D3', '#D1D1D1', '#D1D1D1', '#CFCFCF', '#CFCFCF', '#CCCCCC', '#CCCCCC', '#C9C9C9', '#C9C9C9', '#C7C7C7', '#C7C7C7', '#C4C4C4', '#C4C4C4', '#C2C2C2', '#C2C2C2', '#C0C0C0', '#BFBFBF', '#BFBFBF', '#BDBDBD', '#BDBDBD', '#BABABA', '#BABABA', '#B8B8B8', '#B8B8B8', '#B5B5B5', '#B5B5B5', '#B3B3B3', '#B3B3B3', '#B0B0B0', '#B0B0B0', '#ADADAD', '#ADADAD', '#ABABAB', '#ABABAB', '#A9A9A9', '#A9A9A9', '#A8A8A8', '#A8A8A8', '#A6A6A6', '#A6A6A6', '#A3A3A3', '#A3A3A3', '#A1A1A1', '#A1A1A1', '#9E9E9E', '#9E9E9E', '#9C9C9C', '#9C9C9C', '#999999', '#999999', '#969696', '#969696', '#949494', '#949494', '#919191', '#919191', '#8F8F8F', '#8F8F8F', '#8C8C8C', '#8C8C8C', '#8A8A8A', '#8A8A8A', '#878787', '#878787', '#858585', '#858585', '#828282', '#828282', '#808080', '#7F7F7F', '#7F7F7F', '#7E7E7E', '#7D7D7D', '#7D7D7D', '#7A7A7A', '#7A7A7A', '#787878', '#787878', '#757575', '#757575', '#737373', '#737373', '#707070', '#707070', '#6E6E6E', '#6E6E6E', '#6B6B6B', '#6B6B6B', '#696969', '#696969', '#696969', '#696969', '#666666', '#666666', '#636363', '#636363', '#616161', '#616161', '#5E5E5E', '#5E5E5E', '#5C5C5C', '#5C5C5C', '#595959', '#595959', '#575757', '#575757', '#545454', '#545454', '#525252', '#525252', '#4F4F4F', '#4F4F4F', '#4D4D4D', '#4D4D4D', '#4A4A4A', '#4A4A4A', '#474747', '#474747', '#454545', '#454545', '#424242', '#424242', '#404040', '#404040', '#3D3D3D', '#3D3D3D', '#3B3B3B', '#3B3B3B', '#383838', '#383838', '#363636', '#363636', '#333333', '#333333', '#303030', '#303030', '#2E2E2E', '#2E2E2E', '#2B2B2B', '#2B2B2B', '#292929', '#292929', '#262626', '#262626', '#242424', '#242424', '#212121', '#212121', '#1F1F1F', '#1F1F1F', '#1C1C1C', '#1C1C1C', '#1A1A1A', '#1A1A1A', '#171717', '#171717', '#141414', '#141414', '#121212', '#121212', '#0F0F0F', '#0F0F0F', '#0D0D0D', '#0D0D0D', '#0A0A0A', '#0A0A0A', '#080808', '#080808', '#050505', '#050505', '#030303', '#030303', '#000000', '#000000', '#000000', '#000000', '#000000', '#000000'] \ No newline at end of file
diff --git a/frontend/imgrid/colors/colors/js/wrkshp/maker.py b/frontend/imgrid/colors/colors/js/wrkshp/maker.py
new file mode 100755
index 0000000..65209aa
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/wrkshp/maker.py
@@ -0,0 +1,33 @@
+#!/usr/bin/python2.7
+
+
+
+hexlist = ['#FFFAFA', '#FFFAFA', '#EEE9E9', '#FFC1C1', '#EEB4B4', '#CDC9C9', '#F08080', '#FF6A6A', '#CD9B9B', '#EE6363', '#BC8F8F', '#FF4040', '#FF3030', '#EE3B3B', '#CD5C5C', '#CD5555', '#EE2C2C', '#8B8989', '#CD3333', '#FF0000', '#FF0000', '#8B6969', '#CD2626', '#EE0000', '#B22222', '#A52A2A', '#CD0000', '#8B3A3A', '#8B2323', '#8B1A1A', '#8B0000', '#8B0000', '#800000', '#FFAEB9', '#CD8C95', '#8B5F65', '#EEA2AD', '#FFB6C1', '#FFC0CB', '#DC143C', '#FFB5C5', '#EEA9B8', '#CD919E', '#8B636C', '#8B475D', '#DB7093', '#EE799F', '#FF82AB', '#CD6889', '#FFF0F5', '#FFF0F5', '#CDC1C5', '#EEE0E5', '#8B8386', '#B03060', '#CD6090', '#CD3278', '#FF3E96', '#EE3A8C', '#8B2252', '#EE6AA7', '#FF6EB4', '#8B3A62', '#FF69B4', '#FF1493', '#FF1493', '#EE1289', '#CD1076', '#8B0A50', '#FF34B3', '#EE30A7', '#CD2990', '#8B1C62', '#C71585', '#D02090', '#EE7AE9', '#DA70D6', '#FF83FA', '#CD69C9', '#8B4789', '#FFE1FF', '#EED2EE', '#FFBBFF', '#EEAEEE', '#D8BFD8', '#CDB5CD', '#DDA0DD', '#EE82EE', '#CD96CD', '#8B7B8B', '#FF00FF', '#FF00FF', '#FF00FF', '#8B668B', '#EE00EE', '#CD00CD', '#8B008B', '#8B008B', '#800080', '#BA55D3', '#E066FF', '#D15FEE', '#B452CD', '#7A378B', '#9400D3', '#9932CC', '#BF3EFF', '#9A32CD', '#B23AEE', '#68228B', '#A020F0', '#4B0082', '#8A2BE2', '#912CEE', '#7D26CD', '#551A8B', '#9B30FF', '#9370DB', '#AB82FF', '#9F79EE', '#8968CD', '#5D478B', '#483D8B', '#8470FF', '#7B68EE', '#6A5ACD', '#836FFF', '#7A67EE', '#6959CD', '#473C8B', '#F8F8FF', '#E6E6FA', '#0000FF', '#0000FF', '#0000EE', '#0000CD', '#0000CD', '#00008B', '#00008B', '#191970', '#000080', '#000080', '#4169E1', '#4876FF', '#436EEE', '#3A5FCD', '#27408B', '#6495ED', '#B0C4DE', '#CAE1FF', '#BCD2EE', '#A2B5CD', '#6E7B8B', '#6C7B8B', '#C6E2FF', '#B9D3EE', '#9FB6CD', '#778899', '#778899', '#708090', '#708090', '#1E90FF', '#1E90FF', '#1C86EE', '#104E8B', '#1874CD', '#F0F8FF', '#36648B', '#4682B4', '#63B8FF', '#5CACEE', '#4F94CD', '#4A708B', '#87CEFF', '#7EC0EE', '#6CA6CD', '#87CEFA', '#607B8B', '#B0E2FF', '#A4D3EE', '#8DB6CD', '#87CEEB', '#9AC0CD', '#00BFFF', '#00BFFF', '#00B2EE', '#00688B', '#009ACD', '#BFEFFF', '#B2DFEE', '#ADD8E6', '#68838B', '#B0E0E6', '#98F5FF', '#8EE5EE', '#7AC5CD', '#53868B', '#00F5FF', '#00E5EE', '#00C5CD', '#00868B', '#5F9EA0', '#5F9EA0', '#00CED1', '#F0FFFF', '#F0FFFF', '#E0FFFF', '#E0FFFF', '#E0EEEE', '#D1EEEE', '#BBFFFF', '#AFEEEE', '#AEEEEE', '#97FFFF', '#C1CDCD', '#B4CDCD', '#8DEEEE', '#96CDCD', '#79CDCD', '#838B8B', '#7A8B8B', '#00FFFF', '#00FFFF', '#00FFFF', '#668B8B', '#00EEEE', '#528B8B', '#00CDCD', '#008B8B', '#008B8B', '#008080', '#2F4F4F', '#2F4F4F', '#48D1CC', '#20B2AA', '#40E0D0', '#458B74', '#7FFFD4', '#7FFFD4', '#76EEC6', '#66CDAA', '#66CDAA', '#00FA9A', '#F5FFFA', '#00FF7F', '#00FF7F', '#00EE76', '#00CD66', '#008B45', '#3CB371', '#2E8B57', '#43CD80', '#54FF9F', '#2E8B57', '#4EEE94', '#32814B', '#F0FFF0', '#F0FFF0', '#E0EEE0', '#C1FFC1', '#B4EEB4', '#9AFF9A', '#98FB98', '#C1CDC1', '#90EE90', '#90EE90', '#9BCD9B', '#8FBC8F', '#7CCD7C', '#838B83', '#00FF00', '#00FF00', '#32CD32', '#698B69', '#00EE00', '#548B54', '#00CD00', '#228B22', '#008B00', '#008000', '#006400', '#7CFC00', '#7FFF00', '#7FFF00', '#76EE00', '#66CD00', '#458B00', '#ADFF2F', '#A2CD5A', '#CAFF70', '#BCEE68', '#6E8B3D', '#556B2F', '#6B8E23', '#C0FF3E', '#B3EE3A', '#9ACD32', '#9ACD32', '#698B22', '#FFFFF0', '#FFFFF0', '#FFFFE0', '#FFFFE0', '#F5F5DC', '#EEEEE0', '#FAFAD2', '#EEEED1', '#CDCDC1', '#CDCDB4', '#8B8B83', '#8B8B7A', '#FFFF00', '#FFFF00', '#EEEE00', '#CDCD00', '#8B8B00', '#808000', '#BDB76B', '#EEE685', '#8B8970', '#FFF68F', '#CDC673', '#8B864E', '#EEE8AA', '#FFFACD', '#FFFACD', '#F0E68C', '#CDC9A5', '#EEE9BF', '#D1C166', '#8B8878', '#FFD700', '#FFD700', '#EEC900', '#CDAD00', '#8B7500', '#EEDD82', '#8B814C', '#FFEC8B', '#CDBE70', '#EEDC82', '#CDC8B1', '#EEE8CD', '#FFF8DC', '#FFF8DC', '#DAA520', '#FFC125', '#EEB422', '#CD9B1D', '#8B6914', '#B8860B', '#FFB90F', '#EEAD0E', '#CD950C', '#8B6508', '#FFFAF0', '#EED8AE', '#FDF5E6', '#F5DEB3', '#FFE7BA', '#CDBA96', '#FFA500', '#FFA500', '#EE9A00', '#CD8500', '#8B5A00', '#8B7E66', '#FFE4B5', '#FFEFD5', '#CDB38B', '#FFEBCD', '#FFDEAD', '#FFDEAD', '#EECFA1', '#8B795E', '#8B8378', '#FAEBD7', '#D2B48C', '#8B7D6B', '#DEB887', '#EEDFCC', '#FFD39B', '#CDAA7D', '#EEC591', '#FFEFDB', '#8B7355', '#CDC0B0', '#FF8C00', '#EED5B7', '#FFE4C4', '#FFE4C4', '#CDB79E', '#FF7F00', '#FAF0E6', '#EE7600', '#CD6600', '#8B4500', '#CD853F', '#FFA54F', '#EE9A49', '#CD853F', '#8B5A2B', '#FFDAB9', '#FFDAB9', '#8B7765', '#EECBAD', '#CDAF95', '#F4A460', '#8B8682', '#EEE5DE', '#CDC5BF', '#D2691E', '#FF7F24', '#EE7621', '#CD661D', '#8B4513', '#8B4513', '#FFF5EE', '#FFF5EE', '#8B4726', '#A0522D', '#FF8247', '#EE7942', '#CD6839', '#CD8162', '#FFA07A', '#FFA07A', '#8B5742', '#EE9572', '#FF7F50', '#FF4500', '#FF4500', '#EE4000', '#CD3700', '#8B2500', '#E9967A', '#FF8C69', '#EE8262', '#CD7054', '#8B4C39', '#FF7256', '#EE6A50', '#CD5B45', '#8B3E2F', '#8B3626', '#FF6347', '#FF6347', '#EE5C42', '#CD4F39', '#8B7D7B', '#EED5D2', '#FFE4E1', '#FFE4E1', '#FA8072', '#CDB7B5', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FCFCFC', '#FCFCFC', '#FAFAFA', '#FAFAFA', '#F7F7F7', '#F7F7F7', '#F5F5F5', '#F5F5F5', '#F5F5F5', '#F2F2F2', '#F2F2F2', '#F0F0F0', '#F0F0F0', '#EDEDED', '#EDEDED', '#EBEBEB', '#EBEBEB', '#E8E8E8', '#E8E8E8', '#E5E5E5', '#E5E5E5', '#E3E3E3', '#E3E3E3', '#E0E0E0', '#E0E0E0', '#DEDEDE', '#DEDEDE', '#DCDCDC', '#DBDBDB', '#DBDBDB', '#D9D9D9', '#D9D9D9', '#D6D6D6', '#D6D6D6', '#D4D4D4', '#D4D4D4', '#D3D3D3', '#D3D3D3', '#D1D1D1', '#D1D1D1', '#CFCFCF', '#CFCFCF', '#CCCCCC', '#CCCCCC', '#C9C9C9', '#C9C9C9', '#C7C7C7', '#C7C7C7', '#C4C4C4', '#C4C4C4', '#C2C2C2', '#C2C2C2', '#C0C0C0', '#BFBFBF', '#BFBFBF', '#BDBDBD', '#BDBDBD', '#BABABA', '#BABABA', '#B8B8B8', '#B8B8B8', '#B5B5B5', '#B5B5B5', '#B3B3B3', '#B3B3B3', '#B0B0B0', '#B0B0B0', '#ADADAD', '#ADADAD', '#ABABAB', '#ABABAB', '#A9A9A9', '#A9A9A9', '#A8A8A8', '#A8A8A8', '#A6A6A6', '#A6A6A6', '#A3A3A3', '#A3A3A3', '#A1A1A1', '#A1A1A1', '#9E9E9E', '#9E9E9E', '#9C9C9C', '#9C9C9C', '#999999', '#999999', '#969696', '#969696', '#949494', '#949494', '#919191', '#919191', '#8F8F8F', '#8F8F8F', '#8C8C8C', '#8C8C8C', '#8A8A8A', '#8A8A8A', '#878787', '#878787', '#858585', '#858585', '#828282', '#828282', '#808080', '#7F7F7F', '#7F7F7F', '#7E7E7E', '#7D7D7D', '#7D7D7D', '#7A7A7A', '#7A7A7A', '#787878', '#787878', '#757575', '#757575', '#737373', '#737373', '#707070', '#707070', '#6E6E6E', '#6E6E6E', '#6B6B6B', '#6B6B6B', '#696969', '#696969', '#696969', '#696969', '#666666', '#666666', '#636363', '#636363', '#616161', '#616161', '#5E5E5E', '#5E5E5E', '#5C5C5C', '#5C5C5C', '#595959', '#595959', '#575757', '#575757', '#545454', '#545454', '#525252', '#525252', '#4F4F4F', '#4F4F4F', '#4D4D4D', '#4D4D4D', '#4A4A4A', '#4A4A4A', '#474747', '#474747', '#454545', '#454545', '#424242', '#424242', '#404040', '#404040', '#3D3D3D', '#3D3D3D', '#3B3B3B', '#3B3B3B', '#383838', '#383838', '#363636', '#363636', '#333333', '#333333', '#303030', '#303030', '#2E2E2E', '#2E2E2E', '#2B2B2B', '#2B2B2B', '#292929', '#292929', '#262626', '#262626', '#242424', '#242424', '#212121', '#212121', '#1F1F1F', '#1F1F1F', '#1C1C1C', '#1C1C1C', '#1A1A1A', '#1A1A1A', '#171717', '#171717', '#141414', '#141414', '#121212', '#121212', '#0F0F0F', '#0F0F0F', '#0D0D0D', '#0D0D0D', '#0A0A0A', '#0A0A0A', '#080808', '#080808', '#050505', '#050505', '#030303', '#030303', '#000000', '#000000', '#000000', '#000000', '#000000', '#000000']
+rgblist = ['rgb(255, 250, 250)', 'rgb(255, 250, 250)', 'rgb(238, 233, 233)', 'rgb(255, 193, 193)', 'rgb(238, 180, 180)', 'rgb(205, 201, 201)', 'rgb(240, 128, 128)', 'rgb(255, 106, 106)', 'rgb(205, 155, 155)', 'rgb(238, 99, 99)', 'rgb(188, 143, 143)', 'rgb(255, 64, 64)', 'rgb(255, 48, 48)', 'rgb(238, 59, 59)', 'rgb(205, 92, 92)', 'rgb(205, 85, 85)', 'rgb(238, 44, 44)', 'rgb(139, 137, 137)', 'rgb(205, 51, 51)', 'rgb(255, 0, 0)', 'rgb(255, 0, 0)', 'rgb(139, 105, 105)', 'rgb(205, 38, 38)', 'rgb(238, 0, 0)', 'rgb(178, 34, 34)', 'rgb(165, 42, 42)', 'rgb(205, 0, 0)', 'rgb(139, 58, 58)', 'rgb(139, 35, 35)', 'rgb(139, 26, 26)', 'rgb(139, 0, 0)', 'rgb(139, 0, 0)', 'rgb(128, 0, 0)', 'rgb(255, 174, 185)', 'rgb(205, 140, 149)', 'rgb(139, 95, 101)', 'rgb(238, 162, 173)', 'rgb(255, 182, 193)', 'rgb(255, 192, 203)', 'rgb(220, 20, 60)', 'rgb(255, 181, 197)', 'rgb(238, 169, 184)', 'rgb(205, 145, 158)', 'rgb(139, 99, 108)', 'rgb(139, 71, 93)', 'rgb(219, 112, 147)', 'rgb(238, 121, 159)', 'rgb(255, 130, 171)', 'rgb(205, 104, 137)', 'rgb(255, 240, 245)', 'rgb(255, 240, 245)', 'rgb(205, 193, 197)', 'rgb(238, 224, 229)', 'rgb(139, 131, 134)', 'rgb(176, 48, 96)', 'rgb(205, 96, 144)', 'rgb(205, 50, 120)', 'rgb(255, 62, 150)', 'rgb(238, 58, 140)', 'rgb(139, 34, 82)', 'rgb(238, 106, 167)', 'rgb(255, 110, 180)', 'rgb(139, 58, 98)', 'rgb(255, 105, 180)', 'rgb(255, 20, 147)', 'rgb(255, 20, 147)', 'rgb(238, 18, 137)', 'rgb(205, 16, 118)', 'rgb(139, 10, 80)', 'rgb(255, 52, 179)', 'rgb(238, 48, 167)', 'rgb(205, 41, 144)', 'rgb(139, 28, 98)', 'rgb(199, 21, 133)', 'rgb(208, 32, 144)', 'rgb(238, 122, 233)', 'rgb(218, 112, 214)', 'rgb(255, 131, 250)', 'rgb(205, 105, 201)', 'rgb(139, 71, 137)', 'rgb(255, 225, 255)', 'rgb(238, 210, 238)', 'rgb(255, 187, 255)', 'rgb(238, 174, 238)', 'rgb(216, 191, 216)', 'rgb(205, 181, 205)', 'rgb(221, 160, 221)', 'rgb(238, 130, 238)', 'rgb(205, 150, 205)', 'rgb(139, 123, 139)', 'rgb(255, 0, 255)', 'rgb(255, 0, 255)', 'rgb(255, 0, 255)', 'rgb(139, 102, 139)', 'rgb(238, 0, 238)', 'rgb(205, 0, 205)', 'rgb(139, 0, 139)', 'rgb(139, 0, 139)', 'rgb(128, 0, 128)', 'rgb(186, 85, 211)', 'rgb(224, 102, 255)', 'rgb(209, 95, 238)', 'rgb(180, 82, 205)', 'rgb(122, 55, 139)', 'rgb(148, 0, 211)', 'rgb(153, 50, 204)', 'rgb(191, 62, 255)', 'rgb(154, 50, 205)', 'rgb(178, 58, 238)', 'rgb(104, 34, 139)', 'rgb(160, 32, 240)', 'rgb( 75, 0, 130)', 'rgb(138, 43, 226)', 'rgb(145, 44, 238)', 'rgb(125, 38, 205)', 'rgb( 85, 26, 139)', 'rgb(155, 48, 255)', 'rgb(147, 112, 219)', 'rgb(171, 130, 255)', 'rgb(159, 121, 238)', 'rgb(137, 104, 205)', 'rgb( 93, 71, 139)', 'rgb( 72, 61, 139)', 'rgb(132, 112, 255)', 'rgb(123, 104, 238)', 'rgb(106, 90, 205)', 'rgb(131, 111, 255)', 'rgb(122, 103, 238)', 'rgb(105, 89, 205)', 'rgb( 71, 60, 139)', 'rgb(248, 248, 255)', 'rgb(230, 230, 250)', 'rgb( 0, 0, 255)', 'rgb( 0, 0, 255)', 'rgb( 0, 0, 238)', 'rgb( 0, 0, 205)', 'rgb( 0, 0, 205)', 'rgb( 0, 0, 139)', 'rgb( 0, 0, 139)', 'rgb( 25, 25, 112)', 'rgb( 0, 0, 128)', 'rgb( 0, 0, 128)', 'rgb( 65, 105, 225)', 'rgb( 72, 118, 255)', 'rgb( 67, 110, 238)', 'rgb( 58, 95, 205)', 'rgb( 39, 64, 139)', 'rgb(100, 149, 237)', 'rgb(176, 196, 222)', 'rgb(202, 225, 255)', 'rgb(188, 210, 238)', 'rgb(162, 181, 205)', 'rgb(110, 123, 139)', 'rgb(108, 123, 139)', 'rgb(198, 226, 255)', 'rgb(185, 211, 238)', 'rgb(159, 182, 205)', 'rgb(119, 136, 153)', 'rgb(119, 136, 153)', 'rgb(112, 128, 144)', 'rgb(112, 128, 144)', 'rgb( 30, 144, 255)', 'rgb( 30, 144, 255)', 'rgb( 28, 134, 238)', 'rgb( 16, 78, 139)', 'rgb( 24, 116, 205)', 'rgb(240, 248, 255)', 'rgb( 54, 100, 139)', 'rgb( 70, 130, 180)', 'rgb( 99, 184, 255)', 'rgb( 92, 172, 238)', 'rgb( 79, 148, 205)', 'rgb( 74, 112, 139)', 'rgb(135, 206, 255)', 'rgb(126, 192, 238)', 'rgb(108, 166, 205)', 'rgb(135, 206, 250)', 'rgb( 96, 123, 139)', 'rgb(176, 226, 255)', 'rgb(164, 211, 238)', 'rgb(141, 182, 205)', 'rgb(135, 206, 235)', 'rgb(154, 192, 205)', 'rgb( 0, 191, 255)', 'rgb( 0, 191, 255)', 'rgb( 0, 178, 238)', 'rgb( 0, 104, 139)', 'rgb( 0, 154, 205)', 'rgb(191, 239, 255)', 'rgb(178, 223, 238)', 'rgb(173, 216, 230)', 'rgb(104, 131, 139)', 'rgb(176, 224, 230)', 'rgb(152, 245, 255)', 'rgb(142, 229, 238)', 'rgb(122, 197, 205)', 'rgb( 83, 134, 139)', 'rgb( 0, 245, 255)', 'rgb( 0, 229, 238)', 'rgb( 0, 197, 205)', 'rgb( 0, 134, 139)', 'rgb( 95, 158, 160)', 'rgb( 95, 158, 160)', 'rgb( 0, 206, 209)', 'rgb(240, 255, 255)', 'rgb(240, 255, 255)', 'rgb(224, 255, 255)', 'rgb(224, 255, 255)', 'rgb(224, 238, 238)', 'rgb(209, 238, 238)', 'rgb(187, 255, 255)', 'rgb(175, 238, 238)', 'rgb(174, 238, 238)', 'rgb(151, 255, 255)', 'rgb(193, 205, 205)', 'rgb(180, 205, 205)', 'rgb(141, 238, 238)', 'rgb(150, 205, 205)', 'rgb(121, 205, 205)', 'rgb(131, 139, 139)', 'rgb(122, 139, 139)', 'rgb( 0, 255, 255)', 'rgb( 0, 255, 255)', 'rgb( 0, 255, 255)', 'rgb(102, 139, 139)', 'rgb( 0, 238, 238)', 'rgb( 82, 139, 139)', 'rgb( 0, 205, 205)', 'rgb( 0, 139, 139)', 'rgb( 0, 139, 139)', 'rgb( 0, 128, 128)', 'rgb( 47, 79, 79)', 'rgb( 47, 79, 79)', 'rgb( 72, 209, 204)', 'rgb( 32, 178, 170)', 'rgb( 64, 224, 208)', 'rgb( 69, 139, 116)', 'rgb(127, 255, 212)', 'rgb(127, 255, 212)', 'rgb(118, 238, 198)', 'rgb(102, 205, 170)', 'rgb(102, 205, 170)', 'rgb( 0, 250, 154)', 'rgb(245, 255, 250)', 'rgb( 0, 255, 127)', 'rgb( 0, 255, 127)', 'rgb( 0, 238, 118)', 'rgb( 0, 205, 102)', 'rgb( 0, 139, 69)', 'rgb( 60, 179, 113)', 'rgb( 46, 139, 87)', 'rgb( 67, 205, 128)', 'rgb( 84, 255, 159)', 'rgb( 46, 139, 87)', 'rgb( 78, 238, 148)', 'rgb( 50, 129, 75)', 'rgb(240, 255, 240)', 'rgb(240, 255, 240)', 'rgb(224, 238, 224)', 'rgb(193, 255, 193)', 'rgb(180, 238, 180)', 'rgb(154, 255, 154)', 'rgb(152, 251, 152)', 'rgb(193, 205, 193)', 'rgb(144, 238, 144)', 'rgb(144, 238, 144)', 'rgb(155, 205, 155)', 'rgb(143, 188, 143)', 'rgb(124, 205, 124)', 'rgb(131, 139, 131)', 'rgb( 0, 255, 0)', 'rgb( 0, 255, 0)', 'rgb( 50, 205, 50)', 'rgb(105, 139, 105)', 'rgb( 0, 238, 0)', 'rgb( 84, 139, 84)', 'rgb( 0, 205, 0)', 'rgb( 34, 139, 34)', 'rgb( 0, 139, 0)', 'rgb( 0, 128, 0)', 'rgb( 0, 100, 0)', 'rgb(124, 252, 0)', 'rgb(127, 255, 0)', 'rgb(127, 255, 0)', 'rgb(118, 238, 0)', 'rgb(102, 205, 0)', 'rgb( 69, 139, 0)', 'rgb(173, 255, 47)', 'rgb(162, 205, 90)', 'rgb(202, 255, 112)', 'rgb(188, 238, 104)', 'rgb(110, 139, 61)', 'rgb( 85, 107, 47)', 'rgb(107, 142, 35)', 'rgb(192, 255, 62)', 'rgb(179, 238, 58)', 'rgb(154, 205, 50)', 'rgb(154, 205, 50)', 'rgb(105, 139, 34)', 'rgb(255, 255, 240)', 'rgb(255, 255, 240)', 'rgb(255, 255, 224)', 'rgb(255, 255, 224)', 'rgb(245, 245, 220)', 'rgb(238, 238, 224)', 'rgb(250, 250, 210)', 'rgb(238, 238, 209)', 'rgb(205, 205, 193)', 'rgb(205, 205, 180)', 'rgb(139, 139, 131)', 'rgb(139, 139, 122)', 'rgb(255, 255, 0)', 'rgb(255, 255, 0)', 'rgb(238, 238, 0)', 'rgb(205, 205, 0)', 'rgb(139, 139, 0)', 'rgb(128, 128, 0)', 'rgb(189, 183, 107)', 'rgb(238, 230, 133)', 'rgb(139, 137, 112)', 'rgb(255, 246, 143)', 'rgb(205, 198, 115)', 'rgb(139, 134, 78)', 'rgb(238, 232, 170)', 'rgb(255, 250, 205)', 'rgb(255, 250, 205)', 'rgb(240, 230, 140)', 'rgb(205, 201, 165)', 'rgb(238, 233, 191)', 'rgb(209, 193, 102)', 'rgb(139, 136, 120)', 'rgb(255, 215, 0)', 'rgb(255, 215, 0)', 'rgb(238, 201, 0)', 'rgb(205, 173, 0)', 'rgb(139, 117, 0)', 'rgb(238, 221, 130)', 'rgb(139, 129, 76)', 'rgb(255, 236, 139)', 'rgb(205, 190, 112)', 'rgb(238, 220, 130)', 'rgb(205, 200, 177)', 'rgb(238, 232, 205)', 'rgb(255, 248, 220)', 'rgb(255, 248, 220)', 'rgb(218, 165, 32)', 'rgb(255, 193, 37)', 'rgb(238, 180, 34)', 'rgb(205, 155, 29)', 'rgb(139, 105, 20)', 'rgb(184, 134, 11)', 'rgb(255, 185, 15)', 'rgb(238, 173, 14)', 'rgb(205, 149, 12)', 'rgb(139, 101, 8)', 'rgb(255, 250, 240)', 'rgb(238, 216, 174)', 'rgb(253, 245, 230)', 'rgb(245, 222, 179)', 'rgb(255, 231, 186)', 'rgb(205, 186, 150)', 'rgb(255, 165, 0)', 'rgb(255, 165, 0)', 'rgb(238, 154, 0)', 'rgb(205, 133, 0)', 'rgb(139, 90, 0)', 'rgb(139, 126, 102)', 'rgb(255, 228, 181)', 'rgb(255, 239, 213)', 'rgb(205, 179, 139)', 'rgb(255, 235, 205)', 'rgb(255, 222, 173)', 'rgb(255, 222, 173)', 'rgb(238, 207, 161)', 'rgb(139, 121, 94)', 'rgb(139, 131, 120)', 'rgb(250, 235, 215)', 'rgb(210, 180, 140)', 'rgb(139, 125, 107)', 'rgb(222, 184, 135)', 'rgb(238, 223, 204)', 'rgb(255, 211, 155)', 'rgb(205, 170, 125)', 'rgb(238, 197, 145)', 'rgb(255, 239, 219)', 'rgb(139, 115, 85)', 'rgb(205, 192, 176)', 'rgb(255, 140, 0)', 'rgb(238, 213, 183)', 'rgb(255, 228, 196)', 'rgb(255, 228, 196)', 'rgb(205, 183, 158)', 'rgb(255, 127, 0)', 'rgb(250, 240, 230)', 'rgb(238, 118, 0)', 'rgb(205, 102, 0)', 'rgb(139, 69, 0)', 'rgb(205, 133, 63)', 'rgb(255, 165, 79)', 'rgb(238, 154, 73)', 'rgb(205, 133, 63)', 'rgb(139, 90, 43)', 'rgb(255, 218, 185)', 'rgb(255, 218, 185)', 'rgb(139, 119, 101)', 'rgb(238, 203, 173)', 'rgb(205, 175, 149)', 'rgb(244, 164, 96)', 'rgb(139, 134, 130)', 'rgb(238, 229, 222)', 'rgb(205, 197, 191)', 'rgb(210, 105, 30)', 'rgb(255, 127, 36)', 'rgb(238, 118, 33)', 'rgb(205, 102, 29)', 'rgb(139, 69, 19)', 'rgb(139, 69, 19)', 'rgb(255, 245, 238)', 'rgb(255, 245, 238)', 'rgb(139, 71, 38)', 'rgb(160, 82, 45)', 'rgb(255, 130, 71)', 'rgb(238, 121, 66)', 'rgb(205, 104, 57)', 'rgb(205, 129, 98)', 'rgb(255, 160, 122)', 'rgb(255, 160, 122)', 'rgb(139, 87, 66)', 'rgb(238, 149, 114)', 'rgb(255, 127, 80)', 'rgb(255, 69, 0)', 'rgb(255, 69, 0)', 'rgb(238, 64, 0)', 'rgb(205, 55, 0)', 'rgb(139, 37, 0)', 'rgb(233, 150, 122)', 'rgb(255, 140, 105)', 'rgb(238, 130, 98)', 'rgb(205, 112, 84)', 'rgb(139, 76, 57)', 'rgb(255, 114, 86)', 'rgb(238, 106, 80)', 'rgb(205, 91, 69)', 'rgb(139, 62, 47)', 'rgb(139, 54, 38)', 'rgb(255, 99, 71)', 'rgb(255, 99, 71)', 'rgb(238, 92, 66)', 'rgb(205, 79, 57)', 'rgb(139, 125, 123)', 'rgb(238, 213, 210)', 'rgb(255, 228, 225)', 'rgb(255, 228, 225)', 'rgb(250, 128, 114)', 'rgb(205, 183, 181)', 'rgb(255, 255, 255)', 'rgb(255, 255, 255)', 'rgb(255, 255, 255)', 'rgb(255, 255, 255)', 'rgb(252, 252, 252)', 'rgb(252, 252, 252)', 'rgb(250, 250, 250)', 'rgb(250, 250, 250)', 'rgb(247, 247, 247)', 'rgb(247, 247, 247)', 'rgb(245, 245, 245)', 'rgb(245, 245, 245)', 'rgb(245, 245, 245)', 'rgb(242, 242, 242)', 'rgb(242, 242, 242)', 'rgb(240, 240, 240)', 'rgb(240, 240, 240)', 'rgb(237, 237, 237)', 'rgb(237, 237, 237)', 'rgb(235, 235, 235)', 'rgb(235, 235, 235)', 'rgb(232, 232, 232)', 'rgb(232, 232, 232)', 'rgb(229, 229, 229)', 'rgb(229, 229, 229)', 'rgb(227, 227, 227)', 'rgb(227, 227, 227)', 'rgb(224, 224, 224)', 'rgb(224, 224, 224)', 'rgb(222, 222, 222)', 'rgb(222, 222, 222)', 'rgb(220, 220, 220)', 'rgb(219, 219, 219)', 'rgb(219, 219, 219)', 'rgb(217, 217, 217)', 'rgb(217, 217, 217)', 'rgb(214, 214, 214)', 'rgb(214, 214, 214)', 'rgb(212, 212, 212)', 'rgb(212, 212, 212)', 'rgb(211, 211, 211)', 'rgb(211, 211, 211)', 'rgb(209, 209, 209)', 'rgb(209, 209, 209)', 'rgb(207, 207, 207)', 'rgb(207, 207, 207)', 'rgb(204, 204, 204)', 'rgb(204, 204, 204)', 'rgb(201, 201, 201)', 'rgb(201, 201, 201)', 'rgb(199, 199, 199)', 'rgb(199, 199, 199)', 'rgb(196, 196, 196)', 'rgb(196, 196, 196)', 'rgb(194, 194, 194)', 'rgb(194, 194, 194)', 'rgb(192, 192, 192)', 'rgb(191, 191, 191)', 'rgb(191, 191, 191)', 'rgb(189, 189, 189)', 'rgb(189, 189, 189)', 'rgb(186, 186, 186)', 'rgb(186, 186, 186)', 'rgb(184, 184, 184)', 'rgb(184, 184, 184)', 'rgb(181, 181, 181)', 'rgb(181, 181, 181)', 'rgb(179, 179, 179)', 'rgb(179, 179, 179)', 'rgb(176, 176, 176)', 'rgb(176, 176, 176)', 'rgb(173, 173, 173)', 'rgb(173, 173, 173)', 'rgb(171, 171, 171)', 'rgb(171, 171, 171)', 'rgb(169, 169, 169)', 'rgb(169, 169, 169)', 'rgb(168, 168, 168)', 'rgb(168, 168, 168)', 'rgb(166, 166, 166)', 'rgb(166, 166, 166)', 'rgb(163, 163, 163)', 'rgb(163, 163, 163)', 'rgb(161, 161, 161)', 'rgb(161, 161, 161)', 'rgb(158, 158, 158)', 'rgb(158, 158, 158)', 'rgb(156, 156, 156)', 'rgb(156, 156, 156)', 'rgb(153, 153, 153)', 'rgb(153, 153, 153)', 'rgb(150, 150, 150)', 'rgb(150, 150, 150)', 'rgb(148, 148, 148)', 'rgb(148, 148, 148)', 'rgb(145, 145, 145)', 'rgb(145, 145, 145)', 'rgb(143, 143, 143)', 'rgb(143, 143, 143)', 'rgb(140, 140, 140)', 'rgb(140, 140, 140)', 'rgb(138, 138, 138)', 'rgb(138, 138, 138)', 'rgb(135, 135, 135)', 'rgb(135, 135, 135)', 'rgb(133, 133, 133)', 'rgb(133, 133, 133)', 'rgb(130, 130, 130)', 'rgb(130, 130, 130)', 'rgb(128, 128, 128)', 'rgb(127, 127, 127)', 'rgb(127, 127, 127)', 'rgb(126, 126, 126)', 'rgb(125, 125, 125)', 'rgb(125, 125, 125)', 'rgb(122, 122, 122)', 'rgb(122, 122, 122)', 'rgb(120, 120, 120)', 'rgb(120, 120, 120)', 'rgb(117, 117, 117)', 'rgb(117, 117, 117)', 'rgb(115, 115, 115)', 'rgb(115, 115, 115)', 'rgb(112, 112, 112)', 'rgb(112, 112, 112)', 'rgb(110, 110, 110)', 'rgb(110, 110, 110)', 'rgb(107, 107, 107)', 'rgb(107, 107, 107)', 'rgb(105, 105, 105)', 'rgb(105, 105, 105)', 'rgb(105, 105, 105)', 'rgb(105, 105, 105)', 'rgb(102, 102, 102)', 'rgb(102, 102, 102)', 'rgb( 99, 99, 99)', 'rgb( 99, 99, 99)', 'rgb( 97, 97, 97)', 'rgb( 97, 97, 97)', 'rgb( 94, 94, 94)', 'rgb( 94, 94, 94)', 'rgb( 92, 92, 92)', 'rgb( 92, 92, 92)', 'rgb( 89, 89, 89)', 'rgb( 89, 89, 89)', 'rgb( 87, 87, 87)', 'rgb( 87, 87, 87)', 'rgb( 84, 84, 84)', 'rgb( 84, 84, 84)', 'rgb( 82, 82, 82)', 'rgb( 82, 82, 82)', 'rgb( 79, 79, 79)', 'rgb( 79, 79, 79)', 'rgb( 77, 77, 77)', 'rgb( 77, 77, 77)', 'rgb( 74, 74, 74)', 'rgb( 74, 74, 74)', 'rgb( 71, 71, 71)', 'rgb( 71, 71, 71)', 'rgb( 69, 69, 69)', 'rgb( 69, 69, 69)', 'rgb( 66, 66, 66)', 'rgb( 66, 66, 66)', 'rgb( 64, 64, 64)', 'rgb( 64, 64, 64)', 'rgb( 61, 61, 61)', 'rgb( 61, 61, 61)', 'rgb( 59, 59, 59)', 'rgb( 59, 59, 59)', 'rgb( 56, 56, 56)', 'rgb( 56, 56, 56)', 'rgb( 54, 54, 54)', 'rgb( 54, 54, 54)', 'rgb( 51, 51, 51)', 'rgb( 51, 51, 51)', 'rgb( 48, 48, 48)', 'rgb( 48, 48, 48)', 'rgb( 46, 46, 46)', 'rgb( 46, 46, 46)', 'rgb( 43, 43, 43)', 'rgb( 43, 43, 43)', 'rgb( 41, 41, 41)', 'rgb( 41, 41, 41)', 'rgb( 38, 38, 38)', 'rgb( 38, 38, 38)', 'rgb( 36, 36, 36)', 'rgb( 36, 36, 36)', 'rgb( 33, 33, 33)', 'rgb( 33, 33, 33)', 'rgb( 31, 31, 31)', 'rgb( 31, 31, 31)', 'rgb( 28, 28, 28)', 'rgb( 28, 28, 28)', 'rgb( 26, 26, 26)', 'rgb( 26, 26, 26)', 'rgb( 23, 23, 23)', 'rgb( 23, 23, 23)', 'rgb( 20, 20, 20)', 'rgb( 20, 20, 20)', 'rgb( 18, 18, 18)', 'rgb( 18, 18, 18)', 'rgb( 15, 15, 15)', 'rgb( 15, 15, 15)', 'rgb( 13, 13, 13)', 'rgb( 13, 13, 13)', 'rgb( 10, 10, 10)', 'rgb( 10, 10, 10)', 'rgb( 8, 8, 8)', 'rgb( 8, 8, 8)', 'rgb( 5, 5, 5)', 'rgb( 5, 5, 5)', 'rgb( 3, 3, 3)', 'rgb( 3, 3, 3)', 'rgb( 0, 0, 0)', 'rgb( 0, 0, 0)', 'rgb( 0, 0, 0)', 'rgb( 0, 0, 0)', 'white', 'white']
+namelist = ['snow', 'snow1', 'snow2', 'RosyBrown1', 'RosyBrown2', 'snow3', 'LightCoral', 'IndianRed1', 'RosyBrown3', 'IndianRed2', 'RosyBrown', 'brown1', 'firebrick1', 'brown2', 'IndianRed', 'IndianRed3', 'firebrick2', 'snow4', 'brown3', 'red', 'red1', 'RosyBrown4', 'firebrick3', 'red2', 'firebrick', 'brown', 'red3', 'IndianRed4', 'brown4', 'firebrick4', 'DarkRed', 'red4', 'maroon', 'LightPink1', 'LightPink3', 'LightPink4', 'LightPink2', 'LightPink', 'pink', 'crimson', 'pink1', 'pink2', 'pink3', 'pink4', 'PaleVioletRed4', 'PaleVioletRed', 'PaleVioletRed2', 'PaleVioletRed1', 'PaleVioletRed3', 'LavenderBlush', 'LavenderBlush1', 'LavenderBlush3', 'LavenderBlush2', 'LavenderBlush4', 'maroon', 'HotPink3', 'VioletRed3', 'VioletRed1', 'VioletRed2', 'VioletRed4', 'HotPink2', 'HotPink1', 'HotPink4', 'HotPink', 'DeepPink', 'DeepPink1', 'DeepPink2', 'DeepPink3', 'DeepPink4', 'maroon1', 'maroon2', 'maroon3', 'maroon4', 'MediumVioletRed', 'VioletRed', 'orchid2', 'orchid', 'orchid1', 'orchid3', 'orchid4', 'thistle1', 'thistle2', 'plum1', 'plum2', 'thistle', 'thistle3', 'plum', 'violet', 'plum3', 'thistle4', 'fuchsia', 'magenta', 'magenta1', 'plum4', 'magenta2', 'magenta3', 'DarkMagenta', 'magenta4', 'purple', 'MediumOrchid', 'MediumOrchid1', 'MediumOrchid2', 'MediumOrchid3', 'MediumOrchid4', 'DarkViolet', 'DarkOrchid', 'DarkOrchid1', 'DarkOrchid3', 'DarkOrchid2', 'DarkOrchid4', 'purple', 'indigo', 'BlueViolet', 'purple2', 'purple3', 'purple4', 'purple1', 'MediumPurple', 'MediumPurple1', 'MediumPurple2', 'MediumPurple3', 'MediumPurple4', 'DarkSlateBlue', 'LightSlateBlue', 'MediumSlateBlue', 'SlateBlue', 'SlateBlue1', 'SlateBlue2', 'SlateBlue3', 'SlateBlue4', 'GhostWhite', 'lavender', 'blue', 'blue1', 'blue2', 'blue3', 'MediumBlue', 'blue4', 'DarkBlue', 'MidnightBlue', 'navy', 'NavyBlue', 'RoyalBlue', 'RoyalBlue1', 'RoyalBlue2', 'RoyalBlue3', 'RoyalBlue4', 'CornflowerBlue', 'LightSteelBlue', 'LightSteelBlue1', 'LightSteelBlue2', 'LightSteelBlue3', 'LightSteelBlue4', 'SlateGray4', 'SlateGray1', 'SlateGray2', 'SlateGray3', 'LightSlateGray', 'LightSlateGrey', 'SlateGray', 'SlateGrey', 'DodgerBlue', 'DodgerBlue1', 'DodgerBlue2', 'DodgerBlue4', 'DodgerBlue3', 'AliceBlue', 'SteelBlue4', 'SteelBlue', 'SteelBlue1', 'SteelBlue2', 'SteelBlue3', 'SkyBlue4', 'SkyBlue1', 'SkyBlue2', 'SkyBlue3', 'LightSkyBlue', 'LightSkyBlue4', 'LightSkyBlue1', 'LightSkyBlue2', 'LightSkyBlue3', 'SkyBlue', 'LightBlue3', 'DeepSkyBlue', 'DeepSkyBlue1', 'DeepSkyBlue2', 'DeepSkyBlue4', 'DeepSkyBlue3', 'LightBlue1', 'LightBlue2', 'LightBlue', 'LightBlue4', 'PowderBlue', 'CadetBlue1', 'CadetBlue2', 'CadetBlue3', 'CadetBlue4', 'turquoise1', 'turquoise2', 'turquoise3', 'turquoise4', 'cadet blue', 'CadetBlue', 'DarkTurquoise', 'azure', 'azure1', 'LightCyan', 'LightCyan1', 'azure2', 'LightCyan2', 'PaleTurquoise1', 'PaleTurquoise', 'PaleTurquoise2', 'DarkSlateGray1', 'azure3', 'LightCyan3', 'DarkSlateGray2', 'PaleTurquoise3', 'DarkSlateGray3', 'azure4', 'LightCyan4', 'aqua', 'cyan', 'cyan1', 'PaleTurquoise4', 'cyan2', 'DarkSlateGray4', 'cyan3', 'cyan4', 'DarkCyan', 'teal', 'DarkSlateGray', 'DarkSlateGrey', 'MediumTurquoise', 'LightSeaGreen', 'turquoise', 'aquamarine4', 'aquamarine', 'aquamarine1', 'aquamarine2', 'aquamarine3', 'MediumAquamarine', 'MediumSpringGreen', 'MintCream', 'SpringGreen', 'SpringGreen1', 'SpringGreen2', 'SpringGreen3', 'SpringGreen4', 'MediumSeaGreen', 'SeaGreen', 'SeaGreen3', 'SeaGreen1', 'SeaGreen4', 'SeaGreen2', 'MediumForestGreen', 'honeydew', 'honeydew1', 'honeydew2', 'DarkSeaGreen1', 'DarkSeaGreen2', 'PaleGreen1', 'PaleGreen', 'honeydew3', 'LightGreen', 'PaleGreen2', 'DarkSeaGreen3', 'DarkSeaGreen', 'PaleGreen3', 'honeydew4', 'green1', 'lime', 'LimeGreen', 'DarkSeaGreen4', 'green2', 'PaleGreen4', 'green3', 'ForestGreen', 'green4', 'green', 'DarkGreen', 'LawnGreen', 'chartreuse', 'chartreuse1', 'chartreuse2', 'chartreuse3', 'chartreuse4', 'GreenYellow', 'DarkOliveGreen3', 'DarkOliveGreen1', 'DarkOliveGreen2', 'DarkOliveGreen4', 'DarkOliveGreen', 'OliveDrab', 'OliveDrab1', 'OliveDrab2', 'OliveDrab3', 'YellowGreen', 'OliveDrab4', 'ivory', 'ivory1', 'LightYellow', 'LightYellow1', 'beige', 'ivory2', 'LightGoldenrodYellow', 'LightYellow2', 'ivory3', 'LightYellow3', 'ivory4', 'LightYellow4', 'yellow', 'yellow1', 'yellow2', 'yellow3', 'yellow4', 'olive', 'DarkKhaki', 'khaki2', 'LemonChiffon4', 'khaki1', 'khaki3', 'khaki4', 'PaleGoldenrod', 'LemonChiffon', 'LemonChiffon1', 'khaki', 'LemonChiffon3', 'LemonChiffon2', 'MediumGoldenRod', 'cornsilk4', 'gold', 'gold1', 'gold2', 'gold3', 'gold4', 'LightGoldenrod', 'LightGoldenrod4', 'LightGoldenrod1', 'LightGoldenrod3', 'LightGoldenrod2', 'cornsilk3', 'cornsilk2', 'cornsilk', 'cornsilk1', 'goldenrod', 'goldenrod1', 'goldenrod2', 'goldenrod3', 'goldenrod4', 'DarkGoldenrod', 'DarkGoldenrod1', 'DarkGoldenrod2', 'DarkGoldenrod3', 'DarkGoldenrod4', 'FloralWhite', 'wheat2', 'OldLace', 'wheat', 'wheat1', 'wheat3', 'orange', 'orange1', 'orange2', 'orange3', 'orange4', 'wheat4', 'moccasin', 'PapayaWhip', 'NavajoWhite3', 'BlanchedAlmond', 'NavajoWhite', 'NavajoWhite1', 'NavajoWhite2', 'NavajoWhite4', 'AntiqueWhite4', 'AntiqueWhite', 'tan', 'bisque4', 'burlywood', 'AntiqueWhite2', 'burlywood1', 'burlywood3', 'burlywood2', 'AntiqueWhite1', 'burlywood4', 'AntiqueWhite3', 'DarkOrange', 'bisque2', 'bisque', 'bisque1', 'bisque3', 'DarkOrange1', 'linen', 'DarkOrange2', 'DarkOrange3', 'DarkOrange4', 'peru', 'tan1', 'tan2', 'tan3', 'tan4', 'PeachPuff', 'PeachPuff1', 'PeachPuff4', 'PeachPuff2', 'PeachPuff3', 'SandyBrown', 'seashell4', 'seashell2', 'seashell3', 'chocolate', 'chocolate1', 'chocolate2', 'chocolate3', 'chocolate4', 'SaddleBrown', 'seashell', 'seashell1', 'sienna4', 'sienna', 'sienna1', 'sienna2', 'sienna3', 'LightSalmon3', 'LightSalmon', 'LightSalmon1', 'LightSalmon4', 'LightSalmon2', 'coral', 'OrangeRed', 'OrangeRed1', 'OrangeRed2', 'OrangeRed3', 'OrangeRed4', 'DarkSalmon', 'salmon1', 'salmon2', 'salmon3', 'salmon4', 'coral1', 'coral2', 'coral3', 'coral4', 'tomato4', 'tomato', 'tomato1', 'tomato2', 'tomato3', 'MistyRose4', 'MistyRose2', 'MistyRose', 'MistyRose1', 'salmon', 'MistyRose3', 'white', 'gray100', 'grey100', 'grey100', 'gray99', 'grey99', 'gray98', 'grey98', 'gray97', 'grey97', 'gray96', 'grey96', 'WhiteSmoke', 'gray95', 'grey95', 'gray94', 'grey94', 'gray93', 'grey93', 'gray92', 'grey92', 'gray91', 'grey91', 'gray90', 'grey90', 'gray89', 'grey89', 'gray88', 'grey88', 'gray87', 'grey87', 'gainsboro', 'gray86', 'grey86', 'gray85', 'grey85', 'gray84', 'grey84', 'gray83', 'grey83', 'LightGray', 'LightGrey', 'gray82', 'grey82', 'gray81', 'grey81', 'gray80', 'grey80', 'gray79', 'grey79', 'gray78', 'grey78', 'gray77', 'grey77', 'gray76', 'grey76', 'silver', 'gray75', 'grey75', 'gray74', 'grey74', 'gray73', 'grey73', 'gray72', 'grey72', 'gray71', 'grey71', 'gray70', 'grey70', 'gray69', 'grey69', 'gray68', 'grey68', 'gray67', 'grey67', 'DarkGray', 'DarkGrey', 'gray66', 'grey66', 'gray65', 'grey65', 'gray64', 'grey64', 'gray63', 'grey63', 'gray62', 'grey62', 'gray61', 'grey61', 'gray60', 'grey60', 'gray59', 'grey59', 'gray58', 'grey58', 'gray57', 'grey57', 'gray56', 'grey56', 'gray55', 'grey55', 'gray54', 'grey54', 'gray53', 'grey53', 'gray52', 'grey52', 'gray51', 'grey51', 'fractal', 'gray50', 'grey50', 'gray', 'gray49', 'grey49', 'gray48', 'grey48', 'gray47', 'grey47', 'gray46', 'grey46', 'gray45', 'grey45', 'gray44', 'grey44', 'gray43', 'grey43', 'gray42', 'grey42', 'DimGray', 'DimGrey', 'gray41', 'grey41', 'gray40', 'grey40', 'gray39', 'grey39', 'gray38', 'grey38', 'gray37', 'grey37', 'gray36', 'grey36', 'gray35', 'grey35', 'gray34', 'grey34', 'gray33', 'grey33', 'gray32', 'grey32', 'gray31', 'grey31', 'gray30', 'grey30', 'gray29', 'grey29', 'gray28', 'grey28', 'gray27', 'grey27', 'gray26', 'grey26', 'gray25', 'grey25', 'gray24', 'grey24', 'gray23', 'grey23', 'gray22', 'grey22', 'gray21', 'grey21', 'gray20', 'grey20', 'gray19', 'grey19', 'gray18', 'grey18', 'gray17', 'grey17', 'gray16', 'grey16', 'gray15', 'grey15', 'gray14', 'grey14', 'gray13', 'grey13', 'gray12', 'grey12', 'gray11', 'grey11', 'gray10', 'grey10', 'gray9', 'grey9', 'gray8', 'grey8', 'gray7', 'grey7', 'gray6', 'grey6', 'gray5', 'grey5', 'gray4', 'grey4', 'gray3', 'grey3', 'gray2', 'grey2', 'gray1', 'grey1', 'black', 'gray0', 'grey0', 'opaque', 'none', 'transparent']
+
+
+#### create some dictionaries######
+#rgb to hex
+#rgb to name
+#the rest will not work
+#maybe hex to rgb
+
+rgbtohex = {}
+for x in xrange(0,len(hexlist)-1):
+ rgbtohex[rgblist[x]] = hexlist[x]
+
+rgbtoname ={}
+for x in xrange(0, len(namelist)-1):
+ rgbtoname[rgblist[x]] = namelist[x]
+
+hextorgb = {}
+for x in xrange(0, len(hexlist)-1):
+ hextorgb[hexlist[x]] = rgblist[x]
+
+f = open("colordictionaries2.js","w")
+f.write('rgbtohex = '+str(rgbtohex)+'\n')
+f.write('rgbtoname = '+str(rgbtoname)+'\n')
+f.write('hextorgb = '+str(hextorgb)+'\n')
+
+f.close()
diff --git a/frontend/imgrid/colors/colors/js/wrkshp/names b/frontend/imgrid/colors/colors/js/wrkshp/names
new file mode 100755
index 0000000..ebcec30
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/wrkshp/names
@@ -0,0 +1 @@
+namelist = ['snow', 'snow1', 'snow2', 'RosyBrown1', 'RosyBrown2', 'snow3', 'LightCoral', 'IndianRed1', 'RosyBrown3', 'IndianRed2', 'RosyBrown', 'brown1', 'firebrick1', 'brown2', 'IndianRed', 'IndianRed3', 'firebrick2', 'snow4', 'brown3', 'red', 'red1', 'RosyBrown4', 'firebrick3', 'red2', 'firebrick', 'brown', 'red3', 'IndianRed4', 'brown4', 'firebrick4', 'DarkRed', 'red4', 'maroon', 'LightPink1', 'LightPink3', 'LightPink4', 'LightPink2', 'LightPink', 'pink', 'crimson', 'pink1', 'pink2', 'pink3', 'pink4', 'PaleVioletRed4', 'PaleVioletRed', 'PaleVioletRed2', 'PaleVioletRed1', 'PaleVioletRed3', 'LavenderBlush', 'LavenderBlush1', 'LavenderBlush3', 'LavenderBlush2', 'LavenderBlush4', 'maroon', 'HotPink3', 'VioletRed3', 'VioletRed1', 'VioletRed2', 'VioletRed4', 'HotPink2', 'HotPink1', 'HotPink4', 'HotPink', 'DeepPink', 'DeepPink1', 'DeepPink2', 'DeepPink3', 'DeepPink4', 'maroon1', 'maroon2', 'maroon3', 'maroon4', 'MediumVioletRed', 'VioletRed', 'orchid2', 'orchid', 'orchid1', 'orchid3', 'orchid4', 'thistle1', 'thistle2', 'plum1', 'plum2', 'thistle', 'thistle3', 'plum', 'violet', 'plum3', 'thistle4', 'fuchsia', 'magenta', 'magenta1', 'plum4', 'magenta2', 'magenta3', 'DarkMagenta', 'magenta4', 'purple', 'MediumOrchid', 'MediumOrchid1', 'MediumOrchid2', 'MediumOrchid3', 'MediumOrchid4', 'DarkViolet', 'DarkOrchid', 'DarkOrchid1', 'DarkOrchid3', 'DarkOrchid2', 'DarkOrchid4', 'purple', 'indigo', 'BlueViolet', 'purple2', 'purple3', 'purple4', 'purple1', 'MediumPurple', 'MediumPurple1', 'MediumPurple2', 'MediumPurple3', 'MediumPurple4', 'DarkSlateBlue', 'LightSlateBlue', 'MediumSlateBlue', 'SlateBlue', 'SlateBlue1', 'SlateBlue2', 'SlateBlue3', 'SlateBlue4', 'GhostWhite', 'lavender', 'blue', 'blue1', 'blue2', 'blue3', 'MediumBlue', 'blue4', 'DarkBlue', 'MidnightBlue', 'navy', 'NavyBlue', 'RoyalBlue', 'RoyalBlue1', 'RoyalBlue2', 'RoyalBlue3', 'RoyalBlue4', 'CornflowerBlue', 'LightSteelBlue', 'LightSteelBlue1', 'LightSteelBlue2', 'LightSteelBlue3', 'LightSteelBlue4', 'SlateGray4', 'SlateGray1', 'SlateGray2', 'SlateGray3', 'LightSlateGray', 'LightSlateGrey', 'SlateGray', 'SlateGrey', 'DodgerBlue', 'DodgerBlue1', 'DodgerBlue2', 'DodgerBlue4', 'DodgerBlue3', 'AliceBlue', 'SteelBlue4', 'SteelBlue', 'SteelBlue1', 'SteelBlue2', 'SteelBlue3', 'SkyBlue4', 'SkyBlue1', 'SkyBlue2', 'SkyBlue3', 'LightSkyBlue', 'LightSkyBlue4', 'LightSkyBlue1', 'LightSkyBlue2', 'LightSkyBlue3', 'SkyBlue', 'LightBlue3', 'DeepSkyBlue', 'DeepSkyBlue1', 'DeepSkyBlue2', 'DeepSkyBlue4', 'DeepSkyBlue3', 'LightBlue1', 'LightBlue2', 'LightBlue', 'LightBlue4', 'PowderBlue', 'CadetBlue1', 'CadetBlue2', 'CadetBlue3', 'CadetBlue4', 'turquoise1', 'turquoise2', 'turquoise3', 'turquoise4', 'cadet blue', 'CadetBlue', 'DarkTurquoise', 'azure', 'azure1', 'LightCyan', 'LightCyan1', 'azure2', 'LightCyan2', 'PaleTurquoise1', 'PaleTurquoise', 'PaleTurquoise2', 'DarkSlateGray1', 'azure3', 'LightCyan3', 'DarkSlateGray2', 'PaleTurquoise3', 'DarkSlateGray3', 'azure4', 'LightCyan4', 'aqua', 'cyan', 'cyan1', 'PaleTurquoise4', 'cyan2', 'DarkSlateGray4', 'cyan3', 'cyan4', 'DarkCyan', 'teal', 'DarkSlateGray', 'DarkSlateGrey', 'MediumTurquoise', 'LightSeaGreen', 'turquoise', 'aquamarine4', 'aquamarine', 'aquamarine1', 'aquamarine2', 'aquamarine3', 'MediumAquamarine', 'MediumSpringGreen', 'MintCream', 'SpringGreen', 'SpringGreen1', 'SpringGreen2', 'SpringGreen3', 'SpringGreen4', 'MediumSeaGreen', 'SeaGreen', 'SeaGreen3', 'SeaGreen1', 'SeaGreen4', 'SeaGreen2', 'MediumForestGreen', 'honeydew', 'honeydew1', 'honeydew2', 'DarkSeaGreen1', 'DarkSeaGreen2', 'PaleGreen1', 'PaleGreen', 'honeydew3', 'LightGreen', 'PaleGreen2', 'DarkSeaGreen3', 'DarkSeaGreen', 'PaleGreen3', 'honeydew4', 'green1', 'lime', 'LimeGreen', 'DarkSeaGreen4', 'green2', 'PaleGreen4', 'green3', 'ForestGreen', 'green4', 'green', 'DarkGreen', 'LawnGreen', 'chartreuse', 'chartreuse1', 'chartreuse2', 'chartreuse3', 'chartreuse4', 'GreenYellow', 'DarkOliveGreen3', 'DarkOliveGreen1', 'DarkOliveGreen2', 'DarkOliveGreen4', 'DarkOliveGreen', 'OliveDrab', 'OliveDrab1', 'OliveDrab2', 'OliveDrab3', 'YellowGreen', 'OliveDrab4', 'ivory', 'ivory1', 'LightYellow', 'LightYellow1', 'beige', 'ivory2', 'LightGoldenrodYellow', 'LightYellow2', 'ivory3', 'LightYellow3', 'ivory4', 'LightYellow4', 'yellow', 'yellow1', 'yellow2', 'yellow3', 'yellow4', 'olive', 'DarkKhaki', 'khaki2', 'LemonChiffon4', 'khaki1', 'khaki3', 'khaki4', 'PaleGoldenrod', 'LemonChiffon', 'LemonChiffon1', 'khaki', 'LemonChiffon3', 'LemonChiffon2', 'MediumGoldenRod', 'cornsilk4', 'gold', 'gold1', 'gold2', 'gold3', 'gold4', 'LightGoldenrod', 'LightGoldenrod4', 'LightGoldenrod1', 'LightGoldenrod3', 'LightGoldenrod2', 'cornsilk3', 'cornsilk2', 'cornsilk', 'cornsilk1', 'goldenrod', 'goldenrod1', 'goldenrod2', 'goldenrod3', 'goldenrod4', 'DarkGoldenrod', 'DarkGoldenrod1', 'DarkGoldenrod2', 'DarkGoldenrod3', 'DarkGoldenrod4', 'FloralWhite', 'wheat2', 'OldLace', 'wheat', 'wheat1', 'wheat3', 'orange', 'orange1', 'orange2', 'orange3', 'orange4', 'wheat4', 'moccasin', 'PapayaWhip', 'NavajoWhite3', 'BlanchedAlmond', 'NavajoWhite', 'NavajoWhite1', 'NavajoWhite2', 'NavajoWhite4', 'AntiqueWhite4', 'AntiqueWhite', 'tan', 'bisque4', 'burlywood', 'AntiqueWhite2', 'burlywood1', 'burlywood3', 'burlywood2', 'AntiqueWhite1', 'burlywood4', 'AntiqueWhite3', 'DarkOrange', 'bisque2', 'bisque', 'bisque1', 'bisque3', 'DarkOrange1', 'linen', 'DarkOrange2', 'DarkOrange3', 'DarkOrange4', 'peru', 'tan1', 'tan2', 'tan3', 'tan4', 'PeachPuff', 'PeachPuff1', 'PeachPuff4', 'PeachPuff2', 'PeachPuff3', 'SandyBrown', 'seashell4', 'seashell2', 'seashell3', 'chocolate', 'chocolate1', 'chocolate2', 'chocolate3', 'chocolate4', 'SaddleBrown', 'seashell', 'seashell1', 'sienna4', 'sienna', 'sienna1', 'sienna2', 'sienna3', 'LightSalmon3', 'LightSalmon', 'LightSalmon1', 'LightSalmon4', 'LightSalmon2', 'coral', 'OrangeRed', 'OrangeRed1', 'OrangeRed2', 'OrangeRed3', 'OrangeRed4', 'DarkSalmon', 'salmon1', 'salmon2', 'salmon3', 'salmon4', 'coral1', 'coral2', 'coral3', 'coral4', 'tomato4', 'tomato', 'tomato1', 'tomato2', 'tomato3', 'MistyRose4', 'MistyRose2', 'MistyRose', 'MistyRose1', 'salmon', 'MistyRose3', 'white', 'gray100', 'grey100', 'grey100', 'gray99', 'grey99', 'gray98', 'grey98', 'gray97', 'grey97', 'gray96', 'grey96', 'WhiteSmoke', 'gray95', 'grey95', 'gray94', 'grey94', 'gray93', 'grey93', 'gray92', 'grey92', 'gray91', 'grey91', 'gray90', 'grey90', 'gray89', 'grey89', 'gray88', 'grey88', 'gray87', 'grey87', 'gainsboro', 'gray86', 'grey86', 'gray85', 'grey85', 'gray84', 'grey84', 'gray83', 'grey83', 'LightGray', 'LightGrey', 'gray82', 'grey82', 'gray81', 'grey81', 'gray80', 'grey80', 'gray79', 'grey79', 'gray78', 'grey78', 'gray77', 'grey77', 'gray76', 'grey76', 'silver', 'gray75', 'grey75', 'gray74', 'grey74', 'gray73', 'grey73', 'gray72', 'grey72', 'gray71', 'grey71', 'gray70', 'grey70', 'gray69', 'grey69', 'gray68', 'grey68', 'gray67', 'grey67', 'DarkGray', 'DarkGrey', 'gray66', 'grey66', 'gray65', 'grey65', 'gray64', 'grey64', 'gray63', 'grey63', 'gray62', 'grey62', 'gray61', 'grey61', 'gray60', 'grey60', 'gray59', 'grey59', 'gray58', 'grey58', 'gray57', 'grey57', 'gray56', 'grey56', 'gray55', 'grey55', 'gray54', 'grey54', 'gray53', 'grey53', 'gray52', 'grey52', 'gray51', 'grey51', 'fractal', 'gray50', 'grey50', 'gray', 'gray49', 'grey49', 'gray48', 'grey48', 'gray47', 'grey47', 'gray46', 'grey46', 'gray45', 'grey45', 'gray44', 'grey44', 'gray43', 'grey43', 'gray42', 'grey42', 'DimGray', 'DimGrey', 'gray41', 'grey41', 'gray40', 'grey40', 'gray39', 'grey39', 'gray38', 'grey38', 'gray37', 'grey37', 'gray36', 'grey36', 'gray35', 'grey35', 'gray34', 'grey34', 'gray33', 'grey33', 'gray32', 'grey32', 'gray31', 'grey31', 'gray30', 'grey30', 'gray29', 'grey29', 'gray28', 'grey28', 'gray27', 'grey27', 'gray26', 'grey26', 'gray25', 'grey25', 'gray24', 'grey24', 'gray23', 'grey23', 'gray22', 'grey22', 'gray21', 'grey21', 'gray20', 'grey20', 'gray19', 'grey19', 'gray18', 'grey18', 'gray17', 'grey17', 'gray16', 'grey16', 'gray15', 'grey15', 'gray14', 'grey14', 'gray13', 'grey13', 'gray12', 'grey12', 'gray11', 'grey11', 'gray10', 'grey10', 'gray9', 'grey9', 'gray8', 'grey8', 'gray7', 'grey7', 'gray6', 'grey6', 'gray5', 'grey5', 'gray4', 'grey4', 'gray3', 'grey3', 'gray2', 'grey2', 'gray1', 'grey1', 'black', 'gray0', 'grey0', 'opaque', 'none', 'transparent'] \ No newline at end of file
diff --git a/frontend/imgrid/colors/colors/js/wrkshp/rgbs b/frontend/imgrid/colors/colors/js/wrkshp/rgbs
new file mode 100755
index 0000000..59981a8
--- /dev/null
+++ b/frontend/imgrid/colors/colors/js/wrkshp/rgbs
@@ -0,0 +1 @@
+rgblist = ['rgb(255, 250, 250)', 'rgb(255, 250, 250)', 'rgb(238, 233, 233)', 'rgb(255, 193, 193)', 'rgb(238, 180, 180)', 'rgb(205, 201, 201)', 'rgb(240, 128, 128)', 'rgb(255, 106, 106)', 'rgb(205, 155, 155)', 'rgb(238, 99, 99)', 'rgb(188, 143, 143)', 'rgb(255, 64, 64)', 'rgb(255, 48, 48)', 'rgb(238, 59, 59)', 'rgb(205, 92, 92)', 'rgb(205, 85, 85)', 'rgb(238, 44, 44)', 'rgb(139, 137, 137)', 'rgb(205, 51, 51)', 'rgb(255, 0, 0)', 'rgb(255, 0, 0)', 'rgb(139, 105, 105)', 'rgb(205, 38, 38)', 'rgb(238, 0, 0)', 'rgb(178, 34, 34)', 'rgb(165, 42, 42)', 'rgb(205, 0, 0)', 'rgb(139, 58, 58)', 'rgb(139, 35, 35)', 'rgb(139, 26, 26)', 'rgb(139, 0, 0)', 'rgb(139, 0, 0)', 'rgb(128, 0, 0)', 'rgb(255, 174, 185)', 'rgb(205, 140, 149)', 'rgb(139, 95, 101)', 'rgb(238, 162, 173)', 'rgb(255, 182, 193)', 'rgb(255, 192, 203)', 'rgb(220, 20, 60)', 'rgb(255, 181, 197)', 'rgb(238, 169, 184)', 'rgb(205, 145, 158)', 'rgb(139, 99, 108)', 'rgb(139, 71, 93)', 'rgb(219, 112, 147)', 'rgb(238, 121, 159)', 'rgb(255, 130, 171)', 'rgb(205, 104, 137)', 'rgb(255, 240, 245)', 'rgb(255, 240, 245)', 'rgb(205, 193, 197)', 'rgb(238, 224, 229)', 'rgb(139, 131, 134)', 'rgb(176, 48, 96)', 'rgb(205, 96, 144)', 'rgb(205, 50, 120)', 'rgb(255, 62, 150)', 'rgb(238, 58, 140)', 'rgb(139, 34, 82)', 'rgb(238, 106, 167)', 'rgb(255, 110, 180)', 'rgb(139, 58, 98)', 'rgb(255, 105, 180)', 'rgb(255, 20, 147)', 'rgb(255, 20, 147)', 'rgb(238, 18, 137)', 'rgb(205, 16, 118)', 'rgb(139, 10, 80)', 'rgb(255, 52, 179)', 'rgb(238, 48, 167)', 'rgb(205, 41, 144)', 'rgb(139, 28, 98)', 'rgb(199, 21, 133)', 'rgb(208, 32, 144)', 'rgb(238, 122, 233)', 'rgb(218, 112, 214)', 'rgb(255, 131, 250)', 'rgb(205, 105, 201)', 'rgb(139, 71, 137)', 'rgb(255, 225, 255)', 'rgb(238, 210, 238)', 'rgb(255, 187, 255)', 'rgb(238, 174, 238)', 'rgb(216, 191, 216)', 'rgb(205, 181, 205)', 'rgb(221, 160, 221)', 'rgb(238, 130, 238)', 'rgb(205, 150, 205)', 'rgb(139, 123, 139)', 'rgb(255, 0, 255)', 'rgb(255, 0, 255)', 'rgb(255, 0, 255)', 'rgb(139, 102, 139)', 'rgb(238, 0, 238)', 'rgb(205, 0, 205)', 'rgb(139, 0, 139)', 'rgb(139, 0, 139)', 'rgb(128, 0, 128)', 'rgb(186, 85, 211)', 'rgb(224, 102, 255)', 'rgb(209, 95, 238)', 'rgb(180, 82, 205)', 'rgb(122, 55, 139)', 'rgb(148, 0, 211)', 'rgb(153, 50, 204)', 'rgb(191, 62, 255)', 'rgb(154, 50, 205)', 'rgb(178, 58, 238)', 'rgb(104, 34, 139)', 'rgb(160, 32, 240)', 'rgb( 75, 0, 130)', 'rgb(138, 43, 226)', 'rgb(145, 44, 238)', 'rgb(125, 38, 205)', 'rgb( 85, 26, 139)', 'rgb(155, 48, 255)', 'rgb(147, 112, 219)', 'rgb(171, 130, 255)', 'rgb(159, 121, 238)', 'rgb(137, 104, 205)', 'rgb( 93, 71, 139)', 'rgb( 72, 61, 139)', 'rgb(132, 112, 255)', 'rgb(123, 104, 238)', 'rgb(106, 90, 205)', 'rgb(131, 111, 255)', 'rgb(122, 103, 238)', 'rgb(105, 89, 205)', 'rgb( 71, 60, 139)', 'rgb(248, 248, 255)', 'rgb(230, 230, 250)', 'rgb( 0, 0, 255)', 'rgb( 0, 0, 255)', 'rgb( 0, 0, 238)', 'rgb( 0, 0, 205)', 'rgb( 0, 0, 205)', 'rgb( 0, 0, 139)', 'rgb( 0, 0, 139)', 'rgb( 25, 25, 112)', 'rgb( 0, 0, 128)', 'rgb( 0, 0, 128)', 'rgb( 65, 105, 225)', 'rgb( 72, 118, 255)', 'rgb( 67, 110, 238)', 'rgb( 58, 95, 205)', 'rgb( 39, 64, 139)', 'rgb(100, 149, 237)', 'rgb(176, 196, 222)', 'rgb(202, 225, 255)', 'rgb(188, 210, 238)', 'rgb(162, 181, 205)', 'rgb(110, 123, 139)', 'rgb(108, 123, 139)', 'rgb(198, 226, 255)', 'rgb(185, 211, 238)', 'rgb(159, 182, 205)', 'rgb(119, 136, 153)', 'rgb(119, 136, 153)', 'rgb(112, 128, 144)', 'rgb(112, 128, 144)', 'rgb( 30, 144, 255)', 'rgb( 30, 144, 255)', 'rgb( 28, 134, 238)', 'rgb( 16, 78, 139)', 'rgb( 24, 116, 205)', 'rgb(240, 248, 255)', 'rgb( 54, 100, 139)', 'rgb( 70, 130, 180)', 'rgb( 99, 184, 255)', 'rgb( 92, 172, 238)', 'rgb( 79, 148, 205)', 'rgb( 74, 112, 139)', 'rgb(135, 206, 255)', 'rgb(126, 192, 238)', 'rgb(108, 166, 205)', 'rgb(135, 206, 250)', 'rgb( 96, 123, 139)', 'rgb(176, 226, 255)', 'rgb(164, 211, 238)', 'rgb(141, 182, 205)', 'rgb(135, 206, 235)', 'rgb(154, 192, 205)', 'rgb( 0, 191, 255)', 'rgb( 0, 191, 255)', 'rgb( 0, 178, 238)', 'rgb( 0, 104, 139)', 'rgb( 0, 154, 205)', 'rgb(191, 239, 255)', 'rgb(178, 223, 238)', 'rgb(173, 216, 230)', 'rgb(104, 131, 139)', 'rgb(176, 224, 230)', 'rgb(152, 245, 255)', 'rgb(142, 229, 238)', 'rgb(122, 197, 205)', 'rgb( 83, 134, 139)', 'rgb( 0, 245, 255)', 'rgb( 0, 229, 238)', 'rgb( 0, 197, 205)', 'rgb( 0, 134, 139)', 'rgb( 95, 158, 160)', 'rgb( 95, 158, 160)', 'rgb( 0, 206, 209)', 'rgb(240, 255, 255)', 'rgb(240, 255, 255)', 'rgb(224, 255, 255)', 'rgb(224, 255, 255)', 'rgb(224, 238, 238)', 'rgb(209, 238, 238)', 'rgb(187, 255, 255)', 'rgb(175, 238, 238)', 'rgb(174, 238, 238)', 'rgb(151, 255, 255)', 'rgb(193, 205, 205)', 'rgb(180, 205, 205)', 'rgb(141, 238, 238)', 'rgb(150, 205, 205)', 'rgb(121, 205, 205)', 'rgb(131, 139, 139)', 'rgb(122, 139, 139)', 'rgb( 0, 255, 255)', 'rgb( 0, 255, 255)', 'rgb( 0, 255, 255)', 'rgb(102, 139, 139)', 'rgb( 0, 238, 238)', 'rgb( 82, 139, 139)', 'rgb( 0, 205, 205)', 'rgb( 0, 139, 139)', 'rgb( 0, 139, 139)', 'rgb( 0, 128, 128)', 'rgb( 47, 79, 79)', 'rgb( 47, 79, 79)', 'rgb( 72, 209, 204)', 'rgb( 32, 178, 170)', 'rgb( 64, 224, 208)', 'rgb( 69, 139, 116)', 'rgb(127, 255, 212)', 'rgb(127, 255, 212)', 'rgb(118, 238, 198)', 'rgb(102, 205, 170)', 'rgb(102, 205, 170)', 'rgb( 0, 250, 154)', 'rgb(245, 255, 250)', 'rgb( 0, 255, 127)', 'rgb( 0, 255, 127)', 'rgb( 0, 238, 118)', 'rgb( 0, 205, 102)', 'rgb( 0, 139, 69)', 'rgb( 60, 179, 113)', 'rgb( 46, 139, 87)', 'rgb( 67, 205, 128)', 'rgb( 84, 255, 159)', 'rgb( 46, 139, 87)', 'rgb( 78, 238, 148)', 'rgb( 50, 129, 75)', 'rgb(240, 255, 240)', 'rgb(240, 255, 240)', 'rgb(224, 238, 224)', 'rgb(193, 255, 193)', 'rgb(180, 238, 180)', 'rgb(154, 255, 154)', 'rgb(152, 251, 152)', 'rgb(193, 205, 193)', 'rgb(144, 238, 144)', 'rgb(144, 238, 144)', 'rgb(155, 205, 155)', 'rgb(143, 188, 143)', 'rgb(124, 205, 124)', 'rgb(131, 139, 131)', 'rgb( 0, 255, 0)', 'rgb( 0, 255, 0)', 'rgb( 50, 205, 50)', 'rgb(105, 139, 105)', 'rgb( 0, 238, 0)', 'rgb( 84, 139, 84)', 'rgb( 0, 205, 0)', 'rgb( 34, 139, 34)', 'rgb( 0, 139, 0)', 'rgb( 0, 128, 0)', 'rgb( 0, 100, 0)', 'rgb(124, 252, 0)', 'rgb(127, 255, 0)', 'rgb(127, 255, 0)', 'rgb(118, 238, 0)', 'rgb(102, 205, 0)', 'rgb( 69, 139, 0)', 'rgb(173, 255, 47)', 'rgb(162, 205, 90)', 'rgb(202, 255, 112)', 'rgb(188, 238, 104)', 'rgb(110, 139, 61)', 'rgb( 85, 107, 47)', 'rgb(107, 142, 35)', 'rgb(192, 255, 62)', 'rgb(179, 238, 58)', 'rgb(154, 205, 50)', 'rgb(154, 205, 50)', 'rgb(105, 139, 34)', 'rgb(255, 255, 240)', 'rgb(255, 255, 240)', 'rgb(255, 255, 224)', 'rgb(255, 255, 224)', 'rgb(245, 245, 220)', 'rgb(238, 238, 224)', 'rgb(250, 250, 210)', 'rgb(238, 238, 209)', 'rgb(205, 205, 193)', 'rgb(205, 205, 180)', 'rgb(139, 139, 131)', 'rgb(139, 139, 122)', 'rgb(255, 255, 0)', 'rgb(255, 255, 0)', 'rgb(238, 238, 0)', 'rgb(205, 205, 0)', 'rgb(139, 139, 0)', 'rgb(128, 128, 0)', 'rgb(189, 183, 107)', 'rgb(238, 230, 133)', 'rgb(139, 137, 112)', 'rgb(255, 246, 143)', 'rgb(205, 198, 115)', 'rgb(139, 134, 78)', 'rgb(238, 232, 170)', 'rgb(255, 250, 205)', 'rgb(255, 250, 205)', 'rgb(240, 230, 140)', 'rgb(205, 201, 165)', 'rgb(238, 233, 191)', 'rgb(209, 193, 102)', 'rgb(139, 136, 120)', 'rgb(255, 215, 0)', 'rgb(255, 215, 0)', 'rgb(238, 201, 0)', 'rgb(205, 173, 0)', 'rgb(139, 117, 0)', 'rgb(238, 221, 130)', 'rgb(139, 129, 76)', 'rgb(255, 236, 139)', 'rgb(205, 190, 112)', 'rgb(238, 220, 130)', 'rgb(205, 200, 177)', 'rgb(238, 232, 205)', 'rgb(255, 248, 220)', 'rgb(255, 248, 220)', 'rgb(218, 165, 32)', 'rgb(255, 193, 37)', 'rgb(238, 180, 34)', 'rgb(205, 155, 29)', 'rgb(139, 105, 20)', 'rgb(184, 134, 11)', 'rgb(255, 185, 15)', 'rgb(238, 173, 14)', 'rgb(205, 149, 12)', 'rgb(139, 101, 8)', 'rgb(255, 250, 240)', 'rgb(238, 216, 174)', 'rgb(253, 245, 230)', 'rgb(245, 222, 179)', 'rgb(255, 231, 186)', 'rgb(205, 186, 150)', 'rgb(255, 165, 0)', 'rgb(255, 165, 0)', 'rgb(238, 154, 0)', 'rgb(205, 133, 0)', 'rgb(139, 90, 0)', 'rgb(139, 126, 102)', 'rgb(255, 228, 181)', 'rgb(255, 239, 213)', 'rgb(205, 179, 139)', 'rgb(255, 235, 205)', 'rgb(255, 222, 173)', 'rgb(255, 222, 173)', 'rgb(238, 207, 161)', 'rgb(139, 121, 94)', 'rgb(139, 131, 120)', 'rgb(250, 235, 215)', 'rgb(210, 180, 140)', 'rgb(139, 125, 107)', 'rgb(222, 184, 135)', 'rgb(238, 223, 204)', 'rgb(255, 211, 155)', 'rgb(205, 170, 125)', 'rgb(238, 197, 145)', 'rgb(255, 239, 219)', 'rgb(139, 115, 85)', 'rgb(205, 192, 176)', 'rgb(255, 140, 0)', 'rgb(238, 213, 183)', 'rgb(255, 228, 196)', 'rgb(255, 228, 196)', 'rgb(205, 183, 158)', 'rgb(255, 127, 0)', 'rgb(250, 240, 230)', 'rgb(238, 118, 0)', 'rgb(205, 102, 0)', 'rgb(139, 69, 0)', 'rgb(205, 133, 63)', 'rgb(255, 165, 79)', 'rgb(238, 154, 73)', 'rgb(205, 133, 63)', 'rgb(139, 90, 43)', 'rgb(255, 218, 185)', 'rgb(255, 218, 185)', 'rgb(139, 119, 101)', 'rgb(238, 203, 173)', 'rgb(205, 175, 149)', 'rgb(244, 164, 96)', 'rgb(139, 134, 130)', 'rgb(238, 229, 222)', 'rgb(205, 197, 191)', 'rgb(210, 105, 30)', 'rgb(255, 127, 36)', 'rgb(238, 118, 33)', 'rgb(205, 102, 29)', 'rgb(139, 69, 19)', 'rgb(139, 69, 19)', 'rgb(255, 245, 238)', 'rgb(255, 245, 238)', 'rgb(139, 71, 38)', 'rgb(160, 82, 45)', 'rgb(255, 130, 71)', 'rgb(238, 121, 66)', 'rgb(205, 104, 57)', 'rgb(205, 129, 98)', 'rgb(255, 160, 122)', 'rgb(255, 160, 122)', 'rgb(139, 87, 66)', 'rgb(238, 149, 114)', 'rgb(255, 127, 80)', 'rgb(255, 69, 0)', 'rgb(255, 69, 0)', 'rgb(238, 64, 0)', 'rgb(205, 55, 0)', 'rgb(139, 37, 0)', 'rgb(233, 150, 122)', 'rgb(255, 140, 105)', 'rgb(238, 130, 98)', 'rgb(205, 112, 84)', 'rgb(139, 76, 57)', 'rgb(255, 114, 86)', 'rgb(238, 106, 80)', 'rgb(205, 91, 69)', 'rgb(139, 62, 47)', 'rgb(139, 54, 38)', 'rgb(255, 99, 71)', 'rgb(255, 99, 71)', 'rgb(238, 92, 66)', 'rgb(205, 79, 57)', 'rgb(139, 125, 123)', 'rgb(238, 213, 210)', 'rgb(255, 228, 225)', 'rgb(255, 228, 225)', 'rgb(250, 128, 114)', 'rgb(205, 183, 181)', 'rgb(255, 255, 255)', 'rgb(255, 255, 255)', 'rgb(255, 255, 255)', 'rgb(255, 255, 255)', 'rgb(252, 252, 252)', 'rgb(252, 252, 252)', 'rgb(250, 250, 250)', 'rgb(250, 250, 250)', 'rgb(247, 247, 247)', 'rgb(247, 247, 247)', 'rgb(245, 245, 245)', 'rgb(245, 245, 245)', 'rgb(245, 245, 245)', 'rgb(242, 242, 242)', 'rgb(242, 242, 242)', 'rgb(240, 240, 240)', 'rgb(240, 240, 240)', 'rgb(237, 237, 237)', 'rgb(237, 237, 237)', 'rgb(235, 235, 235)', 'rgb(235, 235, 235)', 'rgb(232, 232, 232)', 'rgb(232, 232, 232)', 'rgb(229, 229, 229)', 'rgb(229, 229, 229)', 'rgb(227, 227, 227)', 'rgb(227, 227, 227)', 'rgb(224, 224, 224)', 'rgb(224, 224, 224)', 'rgb(222, 222, 222)', 'rgb(222, 222, 222)', 'rgb(220, 220, 220)', 'rgb(219, 219, 219)', 'rgb(219, 219, 219)', 'rgb(217, 217, 217)', 'rgb(217, 217, 217)', 'rgb(214, 214, 214)', 'rgb(214, 214, 214)', 'rgb(212, 212, 212)', 'rgb(212, 212, 212)', 'rgb(211, 211, 211)', 'rgb(211, 211, 211)', 'rgb(209, 209, 209)', 'rgb(209, 209, 209)', 'rgb(207, 207, 207)', 'rgb(207, 207, 207)', 'rgb(204, 204, 204)', 'rgb(204, 204, 204)', 'rgb(201, 201, 201)', 'rgb(201, 201, 201)', 'rgb(199, 199, 199)', 'rgb(199, 199, 199)', 'rgb(196, 196, 196)', 'rgb(196, 196, 196)', 'rgb(194, 194, 194)', 'rgb(194, 194, 194)', 'rgb(192, 192, 192)', 'rgb(191, 191, 191)', 'rgb(191, 191, 191)', 'rgb(189, 189, 189)', 'rgb(189, 189, 189)', 'rgb(186, 186, 186)', 'rgb(186, 186, 186)', 'rgb(184, 184, 184)', 'rgb(184, 184, 184)', 'rgb(181, 181, 181)', 'rgb(181, 181, 181)', 'rgb(179, 179, 179)', 'rgb(179, 179, 179)', 'rgb(176, 176, 176)', 'rgb(176, 176, 176)', 'rgb(173, 173, 173)', 'rgb(173, 173, 173)', 'rgb(171, 171, 171)', 'rgb(171, 171, 171)', 'rgb(169, 169, 169)', 'rgb(169, 169, 169)', 'rgb(168, 168, 168)', 'rgb(168, 168, 168)', 'rgb(166, 166, 166)', 'rgb(166, 166, 166)', 'rgb(163, 163, 163)', 'rgb(163, 163, 163)', 'rgb(161, 161, 161)', 'rgb(161, 161, 161)', 'rgb(158, 158, 158)', 'rgb(158, 158, 158)', 'rgb(156, 156, 156)', 'rgb(156, 156, 156)', 'rgb(153, 153, 153)', 'rgb(153, 153, 153)', 'rgb(150, 150, 150)', 'rgb(150, 150, 150)', 'rgb(148, 148, 148)', 'rgb(148, 148, 148)', 'rgb(145, 145, 145)', 'rgb(145, 145, 145)', 'rgb(143, 143, 143)', 'rgb(143, 143, 143)', 'rgb(140, 140, 140)', 'rgb(140, 140, 140)', 'rgb(138, 138, 138)', 'rgb(138, 138, 138)', 'rgb(135, 135, 135)', 'rgb(135, 135, 135)', 'rgb(133, 133, 133)', 'rgb(133, 133, 133)', 'rgb(130, 130, 130)', 'rgb(130, 130, 130)', 'rgb(128, 128, 128)', 'rgb(127, 127, 127)', 'rgb(127, 127, 127)', 'rgb(126, 126, 126)', 'rgb(125, 125, 125)', 'rgb(125, 125, 125)', 'rgb(122, 122, 122)', 'rgb(122, 122, 122)', 'rgb(120, 120, 120)', 'rgb(120, 120, 120)', 'rgb(117, 117, 117)', 'rgb(117, 117, 117)', 'rgb(115, 115, 115)', 'rgb(115, 115, 115)', 'rgb(112, 112, 112)', 'rgb(112, 112, 112)', 'rgb(110, 110, 110)', 'rgb(110, 110, 110)', 'rgb(107, 107, 107)', 'rgb(107, 107, 107)', 'rgb(105, 105, 105)', 'rgb(105, 105, 105)', 'rgb(105, 105, 105)', 'rgb(105, 105, 105)', 'rgb(102, 102, 102)', 'rgb(102, 102, 102)', 'rgb( 99, 99, 99)', 'rgb( 99, 99, 99)', 'rgb( 97, 97, 97)', 'rgb( 97, 97, 97)', 'rgb( 94, 94, 94)', 'rgb( 94, 94, 94)', 'rgb( 92, 92, 92)', 'rgb( 92, 92, 92)', 'rgb( 89, 89, 89)', 'rgb( 89, 89, 89)', 'rgb( 87, 87, 87)', 'rgb( 87, 87, 87)', 'rgb( 84, 84, 84)', 'rgb( 84, 84, 84)', 'rgb( 82, 82, 82)', 'rgb( 82, 82, 82)', 'rgb( 79, 79, 79)', 'rgb( 79, 79, 79)', 'rgb( 77, 77, 77)', 'rgb( 77, 77, 77)', 'rgb( 74, 74, 74)', 'rgb( 74, 74, 74)', 'rgb( 71, 71, 71)', 'rgb( 71, 71, 71)', 'rgb( 69, 69, 69)', 'rgb( 69, 69, 69)', 'rgb( 66, 66, 66)', 'rgb( 66, 66, 66)', 'rgb( 64, 64, 64)', 'rgb( 64, 64, 64)', 'rgb( 61, 61, 61)', 'rgb( 61, 61, 61)', 'rgb( 59, 59, 59)', 'rgb( 59, 59, 59)', 'rgb( 56, 56, 56)', 'rgb( 56, 56, 56)', 'rgb( 54, 54, 54)', 'rgb( 54, 54, 54)', 'rgb( 51, 51, 51)', 'rgb( 51, 51, 51)', 'rgb( 48, 48, 48)', 'rgb( 48, 48, 48)', 'rgb( 46, 46, 46)', 'rgb( 46, 46, 46)', 'rgb( 43, 43, 43)', 'rgb( 43, 43, 43)', 'rgb( 41, 41, 41)', 'rgb( 41, 41, 41)', 'rgb( 38, 38, 38)', 'rgb( 38, 38, 38)', 'rgb( 36, 36, 36)', 'rgb( 36, 36, 36)', 'rgb( 33, 33, 33)', 'rgb( 33, 33, 33)', 'rgb( 31, 31, 31)', 'rgb( 31, 31, 31)', 'rgb( 28, 28, 28)', 'rgb( 28, 28, 28)', 'rgb( 26, 26, 26)', 'rgb( 26, 26, 26)', 'rgb( 23, 23, 23)', 'rgb( 23, 23, 23)', 'rgb( 20, 20, 20)', 'rgb( 20, 20, 20)', 'rgb( 18, 18, 18)', 'rgb( 18, 18, 18)', 'rgb( 15, 15, 15)', 'rgb( 15, 15, 15)', 'rgb( 13, 13, 13)', 'rgb( 13, 13, 13)', 'rgb( 10, 10, 10)', 'rgb( 10, 10, 10)', 'rgb( 8, 8, 8)', 'rgb( 8, 8, 8)', 'rgb( 5, 5, 5)', 'rgb( 5, 5, 5)', 'rgb( 3, 3, 3)', 'rgb( 3, 3, 3)', 'rgb( 0, 0, 0)', 'rgb( 0, 0, 0)', 'rgb( 0, 0, 0)', 'rgb( 0, 0, 0)', 'white', 'white'] \ No newline at end of file
diff --git a/frontend/imgrid/colors/colors/junk/ScrollEffect.js b/frontend/imgrid/colors/colors/junk/ScrollEffect.js
new file mode 100755
index 0000000..ac8ca3f
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/ScrollEffect.js
@@ -0,0 +1,86 @@
+var vt = function () {
+ var view_box,
+ scrolled_element,
+ scrolled_element_actualheight = 0,
+ new_scrolled_element_top_position = 0,
+ final_Landing_Spot = 0,
+ hidden_material = 0,
+ viewbox_actualheight = 0,
+ y_coordinate = 0;
+
+ var velx;
+ var prevY;
+ // ----- setup jquery selectors, set mouse event, run function run on timer
+ var start = function (view_element, element_to_be_scrolled) {
+
+ // ----- mouse event -----
+ $('.colors').mousemove(function(e){
+ y_coordinate = e.clientY;
+ velx = e.clientY - prevY;
+ });
+
+ // ----- selectors and variables
+ view_box = $('#'+view_element)[0];//.(view_element);//viewarea
+ scrolled_element = $('#'+element_to_be_scrolled)[0]; //container
+ viewbox_actualheight = view_box.offsetHeight;//always 850px
+ scrolled_element_actualheight = scrolled_element.offsetHeight;
+ hidden_material = scrolled_element_actualheight - viewbox_actualheight;
+
+
+ // ----- start engine -----
+
+ setInterval(run, 60);//previously 16, the higher the number, the easier it is on the browser
+ };
+ /////////////////////////////////////////////////////////////////////////////
+
+
+ // ----- main ----- all this function does is adjust the top position of the div
+ var run = function () {
+
+ prevY = y_coordinate;
+
+ //if velocity is negative, landing spot and scrolltop increase in value (you have to add it)
+
+ //velocity function if velocity is high, final landing spot is high,
+
+//FINAL LANDING SPOT IS NO LONGER FINAL LANDING SPOT. INSTEAD it's
+//how much the div will move
+ // ----- calculate the final landing spot
+// if(y_coordinate < viewbox_actualheight){ //it almost always is
+ final_Landing_Spot = y_coordinate * -18.5//( hidden_material / viewbox_actualheight)*-1; //this is negative because it's adjusting top css
+
+ $('#preview').html('x-velocity='+'scrolled element'+scrolled_element_offset_height+'thats it'+velx+'<br><span id="boners" style="position:absolute; z-index:1000;"></span>')
+// }
+ /*this is the mouse position multiplied by the ratio of hidden to visible. this makes sense going in the negative direction, because
+ it allows the number to grow in proportion to how much invisible stuff there is...the issue is that the mouse position is small at the top of
+ the screen and large at the bottom...it needs to be equalized*/
+
+
+
+ // ----- function to determine easing
+ var velocity = (final_Landing_Spot - new_scrolled_element_top_position)
+ new_scrolled_element_top_position += Math.max(-25, Math.min(25, (final_Landing_Spot - new_scrolled_element_top_position)));
+
+
+
+
+
+
+
+
+
+
+
+
+ $('#boners').html('<span style="font-size:14"> final_Landing_Spot ='+(final_Landing_Spot - new_scrolled_element_top_position)+'<br>var vvvvvvelocity='+velocity+'<br> clientY='+y_coordinate+'<br>new scrolled top='+new_scrolled_element_top_position+'</span>')
+ // ----- HTML position -----
+ scrolled_element.style.top = Math.round(new_scrolled_element_top_position) + 'px'; //and finally it's put in...continuously against the timer
+
+ };
+
+ return {
+ ////////////////////////////////////////////////////////////////////////////
+ /* ==== public functions ==== */
+ start : start,
+ }
+}();
diff --git a/frontend/imgrid/colors/colors/junk/ScrollEffectcomingsoon.js b/frontend/imgrid/colors/colors/junk/ScrollEffectcomingsoon.js
new file mode 100755
index 0000000..3388d5f
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/ScrollEffectcomingsoon.js
@@ -0,0 +1,237 @@
+var vt = function () {
+ var view_box,
+ scrolled_element,
+ scrolled_element_actualheight = 0,
+ easing = 0,
+ final_resting_place = 0,
+ hidden_material = 0,
+ viewbox_actualheight = 0;
+ var y_coordinate = 0;
+
+ var velocity;
+ var prevY;
+ var lastrested = 0;
+ // ----- setup jquery selectors, set mouse event, run function run on timer
+ var start = function (view_element, element_to_be_scrolled) {
+
+ // ----- mouse event -----
+ $('.colors').mousemove(function(e){
+ y_coordinate = e.clientY;
+ velocity = e.clientY - prevY;
+ });
+ velocity = y_coordinate - prevY
+ // ----- selectors and variables
+ view_box = $('#'+view_element)[0];//.(view_element);//viewarea
+ scrolled_element = $('#'+element_to_be_scrolled)[0]; //container
+ viewbox_actualheight = view_box.offsetHeight;//always 850px
+ scrolled_element_actualheight = scrolled_element.offsetHeight;
+ hidden_material = scrolled_element_actualheight - viewbox_actualheight;
+
+
+ // ----- timer -----
+
+ setInterval(run, 50);//previously 16, the higher the number, the easier it is on the browser
+ };
+ /////////////////////////////////////////////////////////////////////////////
+
+
+ // ----- main ----- all this function does is adjust the top position of the div
+ var run = function () {
+
+ prevY = y_coordinate;
+
+ //if velocity is negative, landing spot and scrolltop increase in value (you have to add it)
+
+ //velocity function if velocity is high, final landing spot is high,
+
+//FINAL LANDING SPOT IS NO LONGER FINAL LANDING SPOT. INSTEAD it's
+//how much the div will move
+ // ----- calculate the final landing spot
+// if(y_coordinate < viewbox_actualheight){ //it almost always is
+ final_resting_place = velocity * -8
+ // -18.5//( hidden_material / viewbox_actualheight)*-1; //this is negative because it's adjusting top css
+ var rush = velocity*.1
+
+ $('#preview').html('velocity='+velocity+'<br>rush='+rush+'<br><span id="boners" style="position:absolute; z-index:1000;"></span>')
+// }
+ /*this is the mouse position multiplied by the ratio of hidden to visible. this makes sense going in the negative direction, because
+ it allows the number to grow in proportion to how much invisible stuff there is...the issue is that the mouse position is small at the top of
+ the screen and large at the bottom...it needs to be equalized*/
+
+
+
+ // ----- function to determine roll_to_zero
+ // var wheelshow;
+ var roll_to_zero;
+ // if(Math.abs(velocity)<10){roll_to_zero = roll_to_zero}
+ // else{
+ roll_to_zero = (final_resting_place - easing)
+ // easing += Math.max(-25, Math.min(25, roll_to_zero));}
+ // easing += Math.max(-25, Math.min(25, roll_to_zero));}
+ if (roll_to_zero > 0)
+ {if (roll_to_zero > 8000)
+ {easing = easing + 100}
+ else if (roll_to_zero > 6000)
+ {easing = easing +50}
+ else if (roll_to_zero > 3000)
+ {easing = easing + 30}
+ else if (roll_to_zero > 1000)
+ {easing = easing + 20}
+ else if (roll_to_zero > 50)
+ {easing = easing +5}
+ else{easing = easing +1}}
+ else if (roll_to_zero < 0)
+ {if (roll_to_zero < 8000)
+ {easing = easing - 100}
+ else if (roll_to_zero < 6000)
+ {easing = easing -50}
+ else if (roll_to_zero < 3000)
+ {easing = easing - 30}
+ else if (roll_to_zero < 1000)
+ {easing = easing - 20}
+ else if (roll_to_zero < 50)
+ {easing = easing -1}}
+ else{easing = final_resting_place}
+
+ if (roll_to_zero == 0){roll_to_zero = 0}
+ if (Math.abs(velocity) <= 50){roll_to_zero = 0}
+// }
+ // easing =
+ //in other words if its less than 25(and moving down to zero), it uses 25 and if it's greater than 25 (moving up to zero) it uses 25. it will move
+ //faster going up if the Math.min(25, number is higher, but since the value is determined by the mouse cursor position it won't move as fast
+
+
+
+
+
+
+
+
+
+
+ $('#boners').html('<span style="font-size:14"><br>final resting place='+final_resting_place+'<br>var roll_to_zero='+roll_to_zero+'<br> clientY='+y_coordinate+'<br>easing='+easing+'</span>')
+ // ----- HTML position -----
+ scrolled_element.style.top = Math.round(easing) + 'px'; //and finally it's put in...continuously against the timer
+
+ };
+// var wheelshow = final_resting_place - lastrested;
+ // while(easing > 0){html = this div rightwheel}
+// while(easing < 0){html = this div leftwheel.show} //wheel should be gray and transparent 3/4 view bg = colors under the mouseover
+ // if(easing == 0){hmtl = ''}
+ return {
+ ////////////////////////////////////////////////////////////////////////////
+ /* ==== public functions ==== */
+ start : start,
+ }
+}();
+
+
+/*minimap...how would it work?
+
+an image of the page...
+
+plus a div with a border
+
+there would have to be some sort of mathematical correllation to the window.height and the height of the div
+against the minimap
+
+
+
+
+
+WHAT WE'VE GOT;;;;;;;;;;;;;;;;;;;;;;;;;
+VELOCITY Y...A NUMBER THAT INDICATES THE CHANGE IN POSITION OF THE MOUSE
+
+HIDDENMATERIAL/VIEWBOX ACTUAL HeIGHT = 18.5
+
+resting space range is -200 -1200
+
+
+
+the way the algorithm works
+
+
+final_top_position = (y coordinate)(-20) //some big number that's dependent on the y position
+
+
+easing function...rolling toward the final_top_position
+
+[first off
+the y coordinate shouldn't be based on the upper left (only because of VALUE, that's why it's easier to scroll down than up)]
+
+[e.pageY-($(window).height()*0.5)]
+
+value should be eradicated...we should instead use velocity which is DELTA. doesn't matter
+
+
+ roll_to_zero = (final_Landing_Spot - easing) first a destination spot is calculated, then easing takes place
+new_scrolled_element
+
+
+ roll_to_zero = (final_Landing_Spot - easing)}
+ easing += Math.max(-25, Math.min(25, roll_to_zero))
+
+instead of adjusting the height to the final landing spot, it becomes the easing value
+
+how easing works
+ x += Math.max(-25, Math.min(25, finalrestingplace-x));//as x approaches the final resting place, easing is used. 25 and -25 are used to traverse
+long spaces more quickly
+
+where x = the current scroller position
+as x becomes larger final resting place gets closer to 0 (it would actually be smaller, but we're dealing with negative values)
+
+the function is read from the inside out
+
+and of course, the statement that is missing is that x MUST be less than the overall distance travelable (which MUST be calculated)
+
+what's less important is the destination spot. more important would be the distance traveled per mouse move
+
+if the velocity is low, the distance is low, if the velocity is really high, it zooms to the end.
+
+before getting into specifics, for ease of reference lets say the velocity is has a range of -10 to 10, the over all distance traveled is 100px
+
+if the velocity is equal to range(-3,3) distance traved = 0
+if the velocity is between range(-4,-3) or range(3,4) distance traveled = 2
+if the velocity is between range (5,6) or (-5,-6) distance traveled would be 20
+if the velocity is between the range of 7,8 or -7,-8 the distance traveled would be 40
+if the velocity is between the range of 89 the velocity traveled would 80
+9-10 velocity is 160
+
+0
+-12302 from the top is the current max
+
+
+
+
+
+
+
+
+plotted out this looks like this
+ #
+
+
+
+
+
+
+
+ #
+
+
+
+
+ #
+
+
+__- __- __# __ __ __ __ __ __ __ __ __
+
+essentially we want something that looks like this (0.3x)^5
+0.ax^b
+
+we can play with which exponent is right, but only choosing odd ones
+where a is the stationary range number
+and b is the new slope
+
+
+this function is called on a timer*/
diff --git a/frontend/imgrid/colors/colors/junk/brush.ani b/frontend/imgrid/colors/colors/junk/brush.ani
new file mode 100755
index 0000000..6da99b4
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/brush.ani
Binary files differ
diff --git a/frontend/imgrid/colors/colors/junk/colordictOLD.js b/frontend/imgrid/colors/colors/junk/colordictOLD.js
new file mode 100755
index 0000000..67220ca
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/colordictOLD.js
@@ -0,0 +1,2 @@
+var hextoname = {'#EE1289': 'DeepPink2', '#EE8262': 'salmon2', '#C4C4C4': 'gray77', '#556B2F': 'DarkOliveGreen', '#FF8C00': 'DarkOrange', '#8B7B8B': 'thistle4', '#0000EE': 'blue2', '#EED5D2': 'MistyRose2', '#BA55D3': 'MediumOrchid', '#FFF5EE': 'seashell', '#912CEE': 'purple2', '#2F4F4F': 'DarkSlateGray', '#32814B': 'MediumForestGreen', '#D15FEE': 'MediumOrchid2', '#F0FFF0': 'honeydew', '#B23AEE': 'DarkOrchid2', '#8B7765': 'PeachPuff4', '#3D3D3D': 'gray24', '#54FF9F': 'SeaGreen1', '#636363': 'gray39', '#8B8386': 'LavenderBlush4', '#FF4040': 'brown1', '#EEA9B8': 'pink2', '#C2C2C2': 'gray76', '#800080': 'purple', '#545454': 'gray33', '#EE3A8C': 'VioletRed2', '#8A8A8A': 'gray54', '#FF00FF': 'fuchsia', '#436EEE': 'RoyalBlue2', '#8B864E': 'khaki4', '#0A0A0A': 'gray4', '#808000': 'olive', '#E3E3E3': 'gray89', '#1874CD': 'DodgerBlue3', '#BCD2EE': 'LightSteelBlue2', '#A9A9A9': 'DarkGray', '#F4A460': 'SandyBrown', '#FF3030': 'firebrick1', '#FFEBCD': 'BlanchedAlmond', '#B0C4DE': 'LightSteelBlue', '#00CDCD': 'cyan3', '#C0FF3E': 'OliveDrab1', '#FFD700': 'gold', '#242424': 'gray14', '#8B2252': 'VioletRed4', '#4EEE94': 'SeaGreen2', '#CD3278': 'VioletRed3', '#00E5EE': 'turquoise2', '#CD853F': 'peru', '#ADD8E6': 'LightBlue', '#C7C7C7': 'gray78', '#CD2990': 'maroon3', '#EEE5DE': 'seashell2', '#66CD00': 'chartreuse3', '#878787': 'gray53', '#FFA54F': 'tan1', '#A2B5CD': 'LightSteelBlue3', '#BC8F8F': 'RosyBrown', '#C9C9C9': 'gray79', '#D1C166': 'MediumGoldenRod', '#8B2323': 'brown4', '#B3EE3A': 'OliveDrab2', '#EEEED1': 'LightYellow2', '#AEEEEE': 'PaleTurquoise2', '#BDBDBD': 'gray74', '#FF7F00': 'DarkOrange1', '#FFC0CB': 'pink', '#EE3B3B': 'brown2', '#CDC8B1': 'cornsilk3', '#CDB38B': 'NavajoWhite3', '#CDBA96': 'wheat3', '#B4EEB4': 'DarkSeaGreen2', '#40E0D0': 'turquoise', '#8B795E': 'NavajoWhite4', '#27408B': 'RoyalBlue4', '#424242': 'gray26', '#CDB7B5': 'MistyRose3', '#CAE1FF': 'LightSteelBlue1', '#F0FFFF': 'azure', '#2E8B57': 'SeaGreen', '#87CEEB': 'SkyBlue', '#CD00CD': 'magenta3', '#CDAA7D': 'burlywood3', '#836FFF': 'SlateBlue1', '#ABABAB': 'gray67', '#EEB4B4': 'RosyBrown2', '#8B7355': 'burlywood4', '#F0E68C': 'khaki', '#CDCDB4': 'LightYellow3', '#4D4D4D': 'gray30', '#B8B8B8': 'gray72', '#B4CDCD': 'LightCyan3', '#008B8B': 'cyan4', '#828282': 'gray51', '#00EEEE': 'cyan2', '#708090': 'SlateGray', '#9AFF9A': 'PaleGreen1', '#FFA07A': 'LightSalmon', '#EBEBEB': 'gray92', '#FFB5C5': 'pink1', '#00688B': 'DeepSkyBlue4', '#DBDBDB': 'gray86', '#191970': 'MidnightBlue', '#FF83FA': 'orchid1', '#A1A1A1': 'gray63', '#838B8B': 'azure4', '#FFA500': 'orange', '#00FF7F': 'SpringGreen', '#EEAD0E': 'DarkGoldenrod2', '#B03060': 'maroon', '#96CDCD': 'PaleTurquoise3', '#CD3333': 'brown3', '#CDBE70': 'LightGoldenrod3', '#7CCD7C': 'PaleGreen3', '#97FFFF': 'DarkSlateGray1', '#DAA520': 'goldenrod', '#8B3A3A': 'IndianRed4', '#6B6B6B': 'gray42', '#FFFAF0': 'FloralWhite', '#757575': 'gray46', '#BFBFBF': 'gray75', '#00EE76': 'SpringGreen2', '#FFFAFA': 'snow', '#6E8B3D': 'DarkOliveGreen4', '#EEE685': 'khaki2', '#FF3E96': 'VioletRed1', '#EE0000': 'red2', '#FDF5E6': 'OldLace', '#E066FF': 'MediumOrchid1', '#8DB6CD': 'LightSkyBlue3', '#FF7256': 'coral1', '#7CFC00': 'LawnGreen', '#838B83': 'honeydew4', '#BF3EFF': 'DarkOrchid1', '#8B6914': 'goldenrod4', '#00CD66': 'SpringGreen3', '#525252': 'gray32', '#A4D3EE': 'LightSkyBlue2', '#00868B': 'turquoise4', '#8DEEEE': 'DarkSlateGray2', '#787878': 'gray47', '#8B1C62': 'maroon4', '#616161': 'gray38', '#4876FF': 'RoyalBlue1', '#9F79EE': 'MediumPurple2', '#212121': 'gray13', '#C1CDC1': 'honeydew3', '#CD69C9': 'orchid3', '#E0EEEE': 'azure2', '#8B7E66': 'wheat4', '#8A2BE2': 'BlueViolet', '#CDCD00': 'yellow3', '#EE5C42': 'tomato2', '#6E6E6E': 'gray43', '#EEAEEE': 'plum2', '#DC143C': 'crimson', '#CD919E': 'pink3', '#528B8B': 'DarkSlateGray4', '#AFEEEE': 'PaleTurquoise', '#CD6889': 'PaleVioletRed3', '#E6E6FA': 'lavender', '#EE00EE': 'magenta2', '#999999': 'gray60', '#F0F8FF': 'AliceBlue', '#595959': 'gray35', '#FF7F50': 'coral', '#A6A6A6': 'gray65', '#DEDEDE': 'gray87', '#262626': 'gray15', '#6CA6CD': 'SkyBlue3', '#8B8B83': 'ivory4', '#474747': 'gray28', '#F7F7F7': 'gray97', '#548B54': 'PaleGreen4', '#48D1CC': 'MediumTurquoise', '#C1CDCD': 'azure3', '#E0EEE0': 'honeydew2', '#FFB90F': 'DarkGoldenrod1', '#FFD39B': 'burlywood1', '#8B5A2B': 'tan4', '#EEE9BF': 'LemonChiffon2', '#BCEE68': 'DarkOliveGreen2', '#8470FF': 'LightSlateBlue', '#8B0A50': 'DeepPink4', '#FFF68F': 'khaki1', '#EEA2AD': 'LightPink2', '#CD5B45': 'coral3', '#7FFF00': 'chartreuse', '#8B8378': 'AntiqueWhite4', '#9BCD9B': 'DarkSeaGreen3', '#454545': 'gray27', '#D1D1D1': 'gray82', '#EEE8AA': 'PaleGoldenrod', '#668B8B': 'PaleTurquoise4', '#EE30A7': 'maroon2', '#FFC125': 'goldenrod1', '#8B475D': 'PaleVioletRed4', '#D8BFD8': 'thistle', '#404040': 'gray25', '#EEEE00': 'yellow2', '#CDB5CD': 'thistle3', '#00C5CD': 'turquoise3', '#00CED1': 'DarkTurquoise', '#CFCFCF': 'gray81', '#008B00': 'green4', '#7A7A7A': 'gray48', '#B8860B': 'DarkGoldenrod', '#1C86EE': 'DodgerBlue2', '#8B5742': 'LightSalmon4', '#1A1A1A': 'gray10', '#8B008B': 'DarkMagenta', '#0F0F0F': 'gray6', '#CD3700': 'OrangeRed3', '#7F7F7F': 'gray50', '#FF6EB4': 'HotPink1', '#6959CD': 'SlateBlue3', '#90EE90': 'LightGreen', '#8B4789': 'orchid4', '#EE7AE9': 'orchid2', '#8968CD': 'MediumPurple3', '#080808': 'gray3', '#CDC9C9': 'snow3', '#BDB76B': 'DarkKhaki', '#9370DB': 'MediumPurple', '#EEDC82': 'LightGoldenrod2', '#3CB371': 'MediumSeaGreen', '#F5FFFA': 'MintCream', '#303030': 'gray19', '#B9D3EE': 'SlateGray2', '#575757': 'gray34', '#F5F5DC': 'beige', '#BABABA': 'gray73', '#0000CD': 'blue3', '#FF8247': 'sienna1', '#F2F2F2': 'gray95', '#EED5B7': 'bisque2', '#FFEC8B': 'LightGoldenrod1', '#EE7600': 'DarkOrange2', '#8B636C': 'pink4', '#8B814C': 'LightGoldenrod4', '#FFE4B5': 'moccasin', '#4F94CD': 'SteelBlue3', '#CDAD00': 'gold3', '#CD5555': 'IndianRed3', '#8B7500': 'gold4', '#473C8B': 'SlateBlue4', '#B0E0E6': 'PowderBlue', '#FFFF00': 'yellow', '#CD96CD': 'plum3', '#006400': 'DarkGreen', '#FAFAFA': 'gray98', '#53868B': 'CadetBlue4', '#8B4513': 'chocolate4', '#98FB98': 'PaleGreen', '#63B8FF': 'SteelBlue1', '#FFAEB9': 'LightPink1', '#EE6A50': 'coral2', '#87CEFF': 'SkyBlue1', '#87CEFA': 'LightSkyBlue', '#ADFF2F': 'GreenYellow', '#008B45': 'SpringGreen4', '#EE4000': 'OrangeRed2', '#8B6969': 'RosyBrown4', '#00008B': 'blue4', '#DB7093': 'PaleVioletRed', '#7EC0EE': 'SkyBlue2', '#3B3B3B': 'gray23', '#8C8C8C': 'gray55', '#5F9EA0': 'cadet blue', '#EE799F': 'PaleVioletRed2', '#CD6090': 'HotPink3', '#8B8682': 'seashell4', '#458B74': 'aquamarine4', '#EECFA1': 'NavajoWhite2', '#76EE00': 'chartreuse2', '#000080': 'navy', '#228B22': 'ForestGreen', '#8B8B00': 'yellow4', '#B5B5B5': 'gray71', '#CD950C': 'DarkGoldenrod3', '#EE82EE': 'violet', '#EDEDED': 'gray93', '#F5DEB3': 'wheat', '#3A5FCD': 'RoyalBlue3', '#00FA9A': 'MediumSpringGreen', '#F0F0F0': 'gray94', '#D1EEEE': 'LightCyan2', '#2E2E2E': 'gray18', '#EEC591': 'burlywood2', '#8B3E2F': 'coral4', '#CD8162': 'LightSalmon3', '#9AC0CD': 'LightBlue3', '#8B8989': 'snow4', '#EED8AE': 'wheat2', '#551A8B': 'purple4', '#919191': 'gray57', '#949494': 'gray58', '#778899': 'LightSlateGray', '#FFFACD': 'LemonChiffon', '#458B00': 'chartreuse4', '#008000': 'green', '#FFFFF0': 'ivory', '#E0E0E0': 'gray88', '#EEB422': 'goldenrod2', '#A020F0': 'purple', '#5CACEE': 'SteelBlue2', '#CD4F39': 'tomato3', '#CDC0B0': 'AntiqueWhite3', '#6E7B8B': 'LightSteelBlue4', '#9E9E9E': 'gray62', '#CDC673': 'khaki3', '#104E8B': 'DodgerBlue4', '#E0FFFF': 'LightCyan', '#FFFFFF': 'white', '#6C7B8B': 'SlateGray4', '#FFC1C1': 'RosyBrown1', '#D6D6D6': 'gray84', '#8B4726': 'sienna4', '#CD9B1D': 'goldenrod3', '#FF6347': 'tomato', '#FF34B3': 'maroon1', '#7D7D7D': 'gray49', '#121212': 'gray7', '#B0E2FF': 'LightSkyBlue1', '#8B3A62': 'HotPink4', '#CD5C5C': 'IndianRed', '#4A4A4A': 'gray29', '#B0B0B0': 'gray69', '#D9D9D9': 'gray85', '#A2CD5A': 'DarkOliveGreen3', '#8B0000': 'DarkRed', '#FF6A6A': 'IndianRed1', '#CD6600': 'DarkOrange3', '#FFEFDB': 'AntiqueWhite1', '#E9967A': 'DarkSalmon', '#EEE9E9': 'snow2', '#D4D4D4': 'gray83', '#383838': 'gray22', '#7A67EE': 'SlateBlue2', '#4169E1': 'RoyalBlue', '#5E5E5E': 'gray37', '#00F5FF': 'turquoise1', '#FFEFD5': 'PapayaWhip', '#CDAF95': 'PeachPuff3', '#CCCCCC': 'gray80', '#00BFFF': 'DeepSkyBlue', '#CDB79E': 'bisque3', '#969696': 'gray59', '#4F4F4F': 'gray31', '#1E90FF': 'DodgerBlue', '#FCFCFC': 'gray99', '#EE2C2C': 'firebrick2', '#8B6508': 'DarkGoldenrod4', '#696969': 'DimGray', '#FF7F24': 'chocolate1', '#8FBC8F': 'DarkSeaGreen', '#66CDAA': 'aquamarine3', '#6495ED': 'CornflowerBlue', '#0D0D0D': 'gray5', '#EEE0E5': 'LavenderBlush2', '#666666': 'gray40', '#B2DFEE': 'LightBlue2', '#B22222': 'firebrick', '#4B0082': 'indigo', '#FF82AB': 'PaleVioletRed1', '#AB82FF': 'MediumPurple1', '#79CDCD': 'DarkSlateGray3', '#FFE4C4': 'bisque', '#DEB887': 'burlywood', '#5D478B': 'MediumPurple4', '#8B3626': 'tomato4', '#FFFFE0': 'LightYellow', '#FFE4E1': 'MistyRose', '#171717': 'gray9', '#EEDFCC': 'AntiqueWhite2', '#9400D3': 'DarkViolet', '#BFEFFF': 'LightBlue1', '#8B7D6B': 'bisque4', '#FF8C69': 'salmon1', '#C6E2FF': 'SlateGray1', '#1C1C1C': 'gray11', '#FF4500': 'OrangeRed', '#FFE7BA': 'wheat1', '#808080': 'fractal', '#EE9572': 'LightSalmon2', '#CD8500': 'orange3', '#8B5A00': 'orange4', '#9932CC': 'DarkOrchid', '#EECBAD': 'PeachPuff2', '#CD8C95': 'LightPink3', '#292929': 'gray16', '#CD1076': 'DeepPink3', '#7A378B': 'MediumOrchid4', '#FF0000': 'red', '#698B22': 'OliveDrab4', '#ADADAD': 'gray68', '#EEE8CD': 'cornsilk2', '#DDA0DD': 'plum', '#7D26CD': 'purple3', '#DA70D6': 'orchid', '#DCDCDC': 'gainsboro', '#68228B': 'DarkOrchid4', '#7B68EE': 'MediumSlateBlue', '#000000': 'black', '#6B8E23': 'OliveDrab', '#FF69B4': 'HotPink', '#800000': 'maroon', '#8B668B': 'plum4', '#363636': 'gray21', '#8B4500': 'DarkOrange4', '#D3D3D3': 'LightGray', '#607B8B': 'LightSkyBlue4', '#F08080': 'LightCoral', '#CD9B9B': 'RosyBrown3', '#76EEC6': 'aquamarine2', '#FAEBD7': 'AntiqueWhite', '#68838B': 'LightBlue4', '#7FFFD4': 'aquamarine', '#C0C0C0': 'silver', '#EEDD82': 'LightGoldenrod', '#EE9A49': 'tan2', '#4A708B': 'SkyBlue4', '#008080': 'teal', '#7AC5CD': 'CadetBlue3', '#98F5FF': 'CadetBlue1', '#8B2500': 'OrangeRed4', '#8F8F8F': 'gray56', '#FFF0F5': 'LavenderBlush', '#8B8970': 'LemonChiffon4', '#8B8878': 'cornsilk4', '#6A5ACD': 'SlateBlue', '#4682B4': 'SteelBlue', '#EEEEE0': 'ivory2', '#B3B3B3': 'gray70', '#00FF00': 'green1', '#FFDEAD': 'NavajoWhite', '#CD2626': 'firebrick3', '#8B4C39': 'salmon4', '#9B30FF': 'purple1', '#E5E5E5': 'gray90', '#36648B': 'SteelBlue4', '#9C9C9C': 'gray61', '#F8F8FF': 'GhostWhite', '#333333': 'gray20', '#5C5C5C': 'gray36', '#737373': 'gray45', '#EEC900': 'gold2', '#FFE1FF': 'thistle1', '#C1FFC1': 'DarkSeaGreen1', '#CDC5BF': 'seashell3', '#A0522D': 'sienna', '#8B5F65': 'LightPink4', '#CDC1C5': 'LavenderBlush3', '#EE7621': 'chocolate2', '#FFBBFF': 'plum1', '#CD6839': 'sienna3', '#698B69': 'DarkSeaGreen4', '#050505': 'gray2', '#CD661D': 'chocolate3', '#FAFAD2': 'LightGoldenrodYellow', '#CDCDC1': 'ivory3', '#FFF8DC': 'cornsilk', '#A8A8A8': 'gray66', '#B452CD': 'MediumOrchid3', '#D2B48C': 'tan', '#8EE5EE': 'CadetBlue2', '#483D8B': 'DarkSlateBlue', '#BBFFFF': 'PaleTurquoise1', '#0000FF': 'blue', '#EE6AA7': 'HotPink2', '#EE7942': 'sienna2', '#00CD00': 'green3', '#141414': 'gray8', '#9ACD32': 'OliveDrab3', '#C71585': 'MediumVioletRed', '#EE9A00': 'orange2', '#CAFF70': 'DarkOliveGreen1', '#F5F5F5': 'gray96', '#32CD32': 'LimeGreen', '#00EE00': 'green2', '#FFB6C1': 'LightPink', '#8B1A1A': 'firebrick4', '#00B2EE': 'DeepSkyBlue2', '#20B2AA': 'LightSeaGreen', '#707070': 'gray44', '#009ACD': 'DeepSkyBlue3', '#A52A2A': 'brown', '#EE6363': 'IndianRed2', '#FAF0E6': 'linen', '#8B7D7B': 'MistyRose4', '#9A32CD': 'DarkOrchid3', '#1F1F1F': 'gray12', '#E8E8E8': 'gray91', '#7E7E7E': 'gray', '#7A8B8B': 'LightCyan4', '#CD7054': 'salmon3', '#9FB6CD': 'SlateGray3', '#CDC9A5': 'LemonChiffon3', '#D02090': 'VioletRed', '#00FFFF': 'aqua', '#2B2B2B': 'gray17', '#858585': 'gray52', '#A3A3A3': 'gray64', '#CD0000': 'red3', '#43CD80': 'SeaGreen3', '#FA8072': 'salmon', '#FFDAB9': 'PeachPuff', '#D2691E': 'chocolate', '#FF1493': 'DeepPink', '#EED2EE': 'thistle2', '#030303': 'gray1', '#8B8B7A': 'LightYellow4'}
+var nametohex = {'grey21': '#363636', 'yellow': '#FFFF00', 'grey61': '#9C9C9C', 'HotPink3': '#CD6090', 'grey63': '#A1A1A1', 'grey62': '#9E9E9E', 'grey65': '#A6A6A6', 'AliceBlue': '#F0F8FF', 'grey67': '#ABABAB', 'grey66': '#A8A8A8', 'LightCyan1': '#E0FFFF', 'grey68': '#ADADAD', 'LightCyan3': '#B4CDCD', 'LightCyan2': '#D1EEEE', 'LightCyan4': '#7A8B8B', 'gray32': '#525252', 'gray33': '#545454', 'DarkTurquoise': '#00CED1', 'gray31': '#4F4F4F', 'gray36': '#5C5C5C', 'gray37': '#5E5E5E', 'gray34': '#575757', 'gray35': '#595959', 'aquamarine4': '#458B74', 'gray38': '#616161', 'gray39': '#636363', 'aquamarine1': '#7FFFD4', 'aquamarine3': '#66CDAA', 'aquamarine2': '#76EEC6', 'CadetBlue4': '#53868B', 'CadetBlue3': '#7AC5CD', 'CadetBlue2': '#8EE5EE', 'CadetBlue1': '#98F5FF', 'crimson': '#DC143C', 'VioletRed1': '#FF3E96', 'VioletRed2': '#EE3A8C', 'VioletRed3': '#CD3278', 'VioletRed4': '#8B2252', 'brown': '#A52A2A', 'DarkGoldenrod': '#B8860B', 'gray8': '#141414', 'SlateGrey': '#708090', 'NavajoWhite2': '#EECFA1', 'gray2': '#050505', 'cyan': '#00FFFF', 'gray0': '#000000', 'gray1': '#030303', 'fractal': '#808080', 'gray7': '#121212', 'gray4': '#0A0A0A', 'gray5': '#0D0D0D', 'grey60': '#999999', 'DarkBlue': '#00008B', 'gray98': '#FAFAFA', 'DarkKhaki': '#BDB76B', 'gray99': '#FCFCFC', 'teal': '#008080', 'grey11': '#1C1C1C', 'coral4': '#8B3E2F', 'grey12': '#1F1F1F', 'grey64': '#A3A3A3', 'PaleGreen1': '#9AFF9A', 'PaleGreen3': '#7CCD7C', 'PaleGreen2': '#90EE90', 'PaleGreen4': '#548B54', 'grey14': '#242424', 'lavender': '#E6E6FA', 'grey15': '#262626', 'chartreuse3': '#66CD00', 'chartreuse2': '#76EE00', 'chartreuse1': '#7FFF00', 'chartreuse4': '#458B00', 'RosyBrown': '#BC8F8F', 'blue': '#0000FF', 'NavajoWhite': '#FFDEAD', 'opaque': '#000000', 'maroon4': '#8B1C62', 'maroon3': '#CD2990', 'maroon2': '#EE30A7', 'maroon1': '#FF34B3', 'gold3': '#CDAD00', 'gold2': '#EEC900', 'gold1': '#FFD700', 'gold4': '#8B7500', 'LightSlateGrey': '#778899', 'gray30': '#4D4D4D', 'DarkGreen': '#006400', 'SkyBlue': '#87CEEB', 'GhostWhite': '#F8F8FF', 'LavenderBlush': '#FFF0F5', 'SeaGreen': '#2E8B57', 'BlanchedAlmond': '#FFEBCD', 'gray60': '#999999', 'DarkOliveGreen': '#556B2F', 'firebrick2': '#EE2C2C', 'firebrick1': '#FF3030', 'firebrick4': '#8B1A1A', 'sienna': '#A0522D', 'blue1': '#0000FF', 'lime': '#00FF00', 'gray55': '#8C8C8C', 'blue2': '#0000EE', 'DarkViolet': '#9400D3', 'blue4': '#00008B', 'peru': '#CD853F', 'DarkMagenta': '#8B008B', 'LightBlue2': '#B2DFEE', 'red2': '#EE0000', 'red1': '#FF0000', 'LightBlue1': '#BFEFFF', 'LightBlue4': '#68838B', 'red4': '#8B0000', 'MediumSpringGreen': '#00FA9A', 'chocolate': '#D2691E', 'ForestGreen': '#228B22', 'DarkRed': '#8B0000', 'olive': '#808000', 'HotPink2': '#EE6AA7', 'HotPink1': '#FF6EB4', 'HotPink4': '#8B3A62', 'grey18': '#2E2E2E', 'grey19': '#303030', 'none': '#000000', 'PeachPuff': '#FFDAB9', 'MediumGoldenRod': '#D1C166', 'moccasin': '#FFE4B5', 'grey10': '#1A1A1A', 'chocolate1': '#FF7F24', 'chocolate2': '#EE7621', 'chocolate3': '#CD661D', 'chocolate4': '#8B4513', 'wheat2': '#EED8AE', 'grey16': '#292929', 'grey17': '#2B2B2B', 'gray69': '#B0B0B0', 'gray68': '#ADADAD', 'gray65': '#A6A6A6', 'gray64': '#A3A3A3', 'gray67': '#ABABAB', 'gray66': '#A8A8A8', 'gray61': '#9C9C9C', 'coral': '#FF7F50', 'gray63': '#A1A1A1', 'gray62': '#9E9E9E', 'LightGoldenrod': '#EEDD82', 'turquoise4': '#00868B', 'seashell2': '#EEE5DE', 'seashell3': '#CDC5BF', 'magenta': '#FF00FF', 'seashell1': '#FFF5EE', 'tan': '#D2B48C', 'seashell4': '#8B8682', 'pink': '#FFC0CB', 'LightSlateBlue': '#8470FF', 'SteelBlue1': '#63B8FF', 'SteelBlue3': '#4F94CD', 'SteelBlue2': '#5CACEE', 'SteelBlue4': '#36648B', 'grey89': '#E3E3E3', 'grey88': '#E0E0E0', 'grey87': '#DEDEDE', 'grey86': '#DBDBDB', 'grey85': '#D9D9D9', 'grey84': '#D6D6D6', 'grey83': '#D4D4D4', 'grey82': '#D1D1D1', 'grey81': '#CFCFCF', 'grey80': '#CCCCCC', 'ivory2': '#EEEEE0', 'khaki4': '#8B864E', 'khaki1': '#FFF68F', 'khaki2': '#EEE685', 'khaki3': '#CDC673', 'salmon1': '#FF8C69', 'salmon3': '#CD7054', 'salmon2': '#EE8262', 'salmon4': '#8B4C39', 'LightPink': '#FFB6C1', 'gray9': '#171717', 'green': '#008000', 'brown2': '#EE3B3B', 'brown3': '#CD3333', 'brown1': '#FF4040', 'brown4': '#8B2323', 'cadet blue': '#5F9EA0', 'orange4': '#8B5A00', 'orange1': '#FFA500', 'orange3': '#CD8500', 'orange2': '#EE9A00', 'gray3': '#080808', 'gray6': '#0F0F0F', 'yellow4': '#8B8B00', 'yellow3': '#CDCD00', 'yellow2': '#EEEE00', 'yellow1': '#FFFF00', 'PapayaWhip': '#FFEFD5', 'bisque2': '#EED5B7', 'OliveDrab4': '#698B22', 'bisque3': '#CDB79E', 'OliveDrab1': '#C0FF3E', 'OliveDrab2': '#B3EE3A', 'OliveDrab3': '#9ACD32', 'SkyBlue4': '#4A708B', 'SkyBlue1': '#87CEFF', 'SkyBlue3': '#6CA6CD', 'SkyBlue2': '#7EC0EE', 'grey58': '#949494', 'grey59': '#969696', 'grey54': '#8A8A8A', 'grey55': '#8C8C8C', 'grey56': '#8F8F8F', 'grey57': '#919191', 'grey50': '#7F7F7F', 'silver': '#C0C0C0', 'grey52': '#858585', 'grey53': '#878787', 'cyan2': '#00EEEE', 'cyan3': '#00CDCD', 'gray23': '#3B3B3B', 'RosyBrown4': '#8B6969', 'gray25': '#404040', 'CornflowerBlue': '#6495ED', 'cyan4': '#008B8B', 'gray26': '#424242', 'gray29': '#4A4A4A', 'LimeGreen': '#32CD32', 'MistyRose': '#FFE4E1', 'navy': '#000080', 'gray94': '#F0F0F0', 'gray95': '#F2F2F2', 'gray96': '#F5F5F5', 'gray97': '#F7F7F7', 'gray90': '#E5E5E5', 'gray91': '#E8E8E8', 'gray92': '#EBEBEB', 'gray93': '#EDEDED', 'MediumPurple': '#9370DB', 'MidnightBlue': '#191970', 'cornsilk': '#FFF8DC', 'red': '#FF0000', 'grey69': '#B0B0B0', 'DarkOrchid4': '#68228B', 'blue3': '#0000CD', 'LightSteelBlue': '#B0C4DE', 'DarkOrchid1': '#BF3EFF', 'DarkOrchid2': '#B23AEE', 'DarkOrchid3': '#9A32CD', 'grey72': '#B8B8B8', 'FloralWhite': '#FFFAF0', 'grey70': '#B3B3B3', 'DarkSeaGreen': '#8FBC8F', 'grey71': '#B5B5B5', 'gray17': '#2B2B2B', 'grey77': '#C4C4C4', 'tomato4': '#8B3626', 'tomato1': '#FF6347', 'tomato3': '#CD4F39', 'tomato2': '#EE5C42', 'DarkSlateGray1': '#97FFFF', 'DarkSlateGray2': '#8DEEEE', 'DarkSlateGray3': '#79CDCD', 'DarkSlateGray4': '#528B8B', 'SteelBlue': '#4682B4', 'MediumSlateBlue': '#7B68EE', 'OrangeRed': '#FF4500', 'grey79': '#C9C9C9', 'MediumVioletRed': '#C71585', 'burlywood': '#DEB887', 'white': '#FFFFFF', 'tomato': '#FF6347', 'DodgerBlue': '#1E90FF', 'RoyalBlue4': '#27408B', 'RoyalBlue1': '#4876FF', 'RoyalBlue3': '#3A5FCD', 'RoyalBlue2': '#436EEE', 'MistyRose1': '#FFE4E1', 'MistyRose3': '#CDB7B5', 'MistyRose2': '#EED5D2', 'MistyRose4': '#8B7D7B', 'LightGray': '#D3D3D3', 'LightYellow': '#FFFFE0', 'DarkOrange': '#FF8C00', 'DarkGray': '#A9A9A9', 'SlateGray': '#708090', 'turquoise3': '#00C5CD', 'turquoise2': '#00E5EE', 'turquoise1': '#00F5FF', 'burlywood2': '#EEC591', 'burlywood4': '#8B7355', 'DarkSlateGray': '#2F4F4F', 'linen': '#FAF0E6', 'grey47': '#787878', 'snow': '#FFFAFA', 'grey46': '#757575', 'gray58': '#949494', 'gray59': '#969696', 'IndianRed4': '#8B3A3A', 'purple4': '#551A8B', 'gray52': '#858585', 'gray53': '#878787', 'purple1': '#9B30FF', 'IndianRed1': '#FF6A6A', 'purple3': '#7D26CD', 'purple2': '#912CEE', 'thistle3': '#CDB5CD', 'thistle2': '#EED2EE', 'SpringGreen2': '#00EE76', 'SpringGreen3': '#00CD66', 'SpringGreen4': '#008B45', 'thistle4': '#8B7B8B', 'LightPink2': '#EEA2AD', 'LightPink3': '#CD8C95', 'LightPink1': '#FFAEB9', 'LightPink4': '#8B5F65', 'MediumPurple1': '#AB82FF', 'MediumPurple2': '#9F79EE', 'MediumPurple3': '#8968CD', 'MediumPurple4': '#5D478B', 'MediumTurquoise': '#48D1CC', 'DimGray': '#696969', 'gray14': '#242424', 'grey100': '#FFFFFF', 'OrangeRed3': '#CD3700', 'OrangeRed2': '#EE4000', 'OrangeRed1': '#FF4500', 'LightSeaGreen': '#20B2AA', 'gold': '#FFD700', 'OrangeRed4': '#8B2500', 'NavajoWhite4': '#8B795E', 'NavajoWhite1': '#FFDEAD', 'LawnGreen': '#7CFC00', 'NavajoWhite3': '#CDB38B', 'LightGoldenrod4': '#8B814C', 'LightGoldenrod1': '#FFEC8B', 'LightGoldenrod3': '#CDBE70', 'LightGoldenrod2': '#EEDC82', 'gray21': '#363636', 'PaleGreen': '#98FB98', 'green4': '#008B00', 'green1': '#00FF00', 'green3': '#00CD00', 'green2': '#00EE00', 'MediumOrchid': '#BA55D3', 'black': '#000000', 'gray20': '#333333', 'orchid4': '#8B4789', 'DodgerBlue1': '#1E90FF', 'DodgerBlue2': '#1C86EE', 'DodgerBlue3': '#1874CD', 'DodgerBlue4': '#104E8B', 'orchid1': '#FF83FA', 'orchid2': '#EE7AE9', 'orchid3': '#CD69C9', 'DarkSeaGreen4': '#698B69', 'DarkSeaGreen3': '#9BCD9B', 'DarkSeaGreen2': '#B4EEB4', 'DarkSeaGreen1': '#C1FFC1', 'gray100': '#FFFFFF', 'BlueViolet': '#8A2BE2', 'bisque4': '#8B7D6B', 'MediumOrchid4': '#7A378B', 'MintCream': '#F5FFFA', 'MediumOrchid1': '#E066FF', 'bisque1': '#FFE4C4', 'MediumOrchid3': '#B452CD', 'MediumOrchid2': '#D15FEE', 'gray': '#7E7E7E', 'DeepSkyBlue': '#00BFFF', 'LightGrey': '#D3D3D3', 'grey78': '#C7C7C7', 'gray22': '#383838', 'plum4': '#8B668B', 'plum3': '#CD96CD', 'plum2': '#EEAEEE', 'plum1': '#FFBBFF', 'DarkSlateGrey': '#2F4F4F', 'DarkOrchid': '#9932CC', 'OliveDrab': '#6B8E23', 'gray83': '#D4D4D4', 'grey49': '#7D7D7D', 'grey48': '#7A7A7A', 'thistle': '#D8BFD8', 'violet': '#EE82EE', 'grey43': '#6E6E6E', 'grey42': '#6B6B6B', 'LightSalmon4': '#8B5742', 'grey40': '#666666', 'LightSalmon2': '#EE9572', 'LightSalmon3': '#CD8162', 'grey45': '#737373', 'LightSalmon1': '#FFA07A', 'honeydew': '#F0FFF0', 'gray18': '#2E2E2E', 'gray19': '#303030', 'LightCyan': '#E0FFFF', 'gray15': '#262626', 'gray16': '#292929', 'gray82': '#D1D1D1', 'gray10': '#1A1A1A', 'gray11': '#1C1C1C', 'gray12': '#1F1F1F', 'gray13': '#212121', 'grey93': '#EDEDED', 'PaleGoldenrod': '#EEE8AA', 'gainsboro': '#DCDCDC', 'AntiqueWhite3': '#CDC0B0', 'AntiqueWhite2': '#EEDFCC', 'AntiqueWhite1': '#FFEFDB', 'gray27': '#454545', 'SlateBlue': '#6A5ACD', 'AntiqueWhite4': '#8B8378', 'DimGrey': '#696969', 'VioletRed': '#D02090', 'WhiteSmoke': '#F5F5F5', 'grey38': '#616161', 'grey39': '#636363', 'grey36': '#5C5C5C', 'grey37': '#5E5E5E', 'grey34': '#575757', 'grey35': '#595959', 'aqua': '#00FFFF', 'grey33': '#545454', 'grey30': '#4D4D4D', 'grey31': '#4F4F4F', 'NavyBlue': '#000080', 'sienna4': '#8B4726', 'gray81': '#CFCFCF', 'gray80': '#CCCCCC', 'sienna1': '#FF8247', 'gray86': '#DBDBDB', 'sienna3': '#CD6839', 'sienna2': '#EE7942', 'gray89': '#E3E3E3', 'gray88': '#E0E0E0', 'SlateBlue4': '#473C8B', 'gray87': '#DEDEDE', 'LightSteelBlue1': '#CAE1FF', 'magenta3': '#CD00CD', 'IndianRed': '#CD5C5C', 'SlateBlue2': '#7A67EE', 'SlateBlue1': '#836FFF', 'LightBlue': '#ADD8E6', 'PeachPuff4': '#8B7765', 'seashell': '#FFF5EE', 'SaddleBrown': '#8B4513', 'PeachPuff1': '#FFDAB9', 'PeachPuff2': '#EECBAD', 'PeachPuff3': '#CDAF95', 'aquamarine': '#7FFFD4', 'LemonChiffon2': '#EEE9BF', 'LemonChiffon1': '#FFFACD', 'tan4': '#8B5A2B', 'tan3': '#CD853F', 'tan2': '#EE9A49', 'tan1': '#FFA54F', 'LemonChiffon4': '#8B8970', 'orange': '#FFA500', 'OldLace': '#FDF5E6', 'PowderBlue': '#B0E0E6', 'RosyBrown3': '#CD9B9B', 'RoyalBlue': '#4169E1', 'LightSkyBlue4': '#607B8B', 'LightSkyBlue1': '#B0E2FF', 'LightSkyBlue2': '#A4D3EE', 'LightSkyBlue3': '#8DB6CD', 'LightYellow1': '#FFFFE0', 'LightYellow2': '#EEEED1', 'LightYellow3': '#CDCDB4', 'LightYellow4': '#8B8B7A', 'goldenrod4': '#8B6914', 'goldenrod1': '#FFC125', 'goldenrod2': '#EEB422', 'goldenrod3': '#CD9B1D', 'grey32': '#525252', 'LemonChiffon': '#FFFACD', 'burlywood1': '#FFD39B', 'YellowGreen': '#9ACD32', 'LightCoral': '#F08080', 'burlywood3': '#CDAA7D', 'ivory3': '#CDCDC1', 'firebrick3': '#CD2626', 'ivory1': '#FFFFF0', 'grey8': '#141414', 'ivory4': '#8B8B83', 'grey9': '#171717', 'DarkSalmon': '#E9967A', 'SlateGray1': '#C6E2FF', 'SlateGray2': '#B9D3EE', 'SlateGray3': '#9FB6CD', 'SlateGray4': '#6C7B8B', 'RosyBrown2': '#EEB4B4', 'RosyBrown1': '#FFC1C1', 'gray85': '#D9D9D9', 'gray84': '#D6D6D6', 'LightGreen': '#90EE90', 'LavenderBlush1': '#FFF0F5', 'grey73': '#BABABA', 'LavenderBlush3': '#CDC1C5', 'LavenderBlush2': '#EEE0E5', 'grey76': '#C2C2C2', 'LavenderBlush4': '#8B8386', 'grey74': '#BDBDBD', 'grey75': '#BFBFBF', 'pink1': '#FFB5C5', 'pink3': '#CD919E', 'pink2': '#EEA9B8', 'pink4': '#8B636C', 'gray47': '#787878', 'gray46': '#757575', 'gray45': '#737373', 'gray44': '#707070', 'gray43': '#6E6E6E', 'gray42': '#6B6B6B', 'gray41': '#696969', 'gray40': '#666666', 'gray49': '#7D7D7D', 'gray48': '#7A7A7A', 'MediumAquamarine': '#66CDAA', 'MediumForestGreen': '#32814B', 'azure1': '#F0FFFF', 'azure3': '#C1CDCD', 'azure2': '#E0EEEE', 'indigo': '#4B0082', 'azure4': '#838B8B', 'firebrick': '#B22222', 'DarkGrey': '#A9A9A9', 'magenta4': '#8B008B', 'SlateBlue3': '#6959CD', 'magenta2': '#EE00EE', 'magenta1': '#FF00FF', 'grey51': '#828282', 'chartreuse': '#7FFF00', 'grey41': '#696969', 'DarkOliveGreen4': '#6E8B3D', 'turquoise': '#40E0D0', 'DarkOliveGreen1': '#CAFF70', 'DarkOliveGreen3': '#A2CD5A', 'DarkOliveGreen2': '#BCEE68', 'grey6': '#0F0F0F', 'grey7': '#121212', 'grey4': '#0A0A0A', 'grey5': '#0D0D0D', 'grey2': '#050505', 'grey3': '#080808', 'grey0': '#000000', 'grey1': '#030303', 'gray50': '#7F7F7F', 'cyan1': '#00FFFF', 'gray51': '#828282', 'gray24': '#3D3D3D', 'HotPink': '#FF69B4', 'DarkGoldenrod4': '#8B6508', 'gray54': '#8A8A8A', 'DarkGoldenrod1': '#FFB90F', 'DarkGoldenrod2': '#EEAD0E', 'DarkGoldenrod3': '#CD950C', 'IndianRed2': '#EE6363', 'DeepPink': '#FF1493', 'gray28': '#474747', 'IndianRed3': '#CD5555', 'DarkCyan': '#008B8B', 'GreenYellow': '#ADFF2F', 'LightSalmon': '#FFA07A', 'DarkOrange4': '#8B4500', 'DarkOrange1': '#FF7F00', 'transparent': '#000000', 'DarkOrange3': '#CD6600', 'orchid': '#DA70D6', 'purple': '#800080', 'wheat4': '#8B7E66', 'wheat1': '#FFE7BA', 'wheat3': '#CDBA96', 'SpringGreen1': '#00FF7F', 'coral3': '#CD5B45', 'coral2': '#EE6A50', 'coral1': '#FF7256', 'thistle1': '#FFE1FF', 'PaleTurquoise': '#AFEEEE', 'bisque': '#FFE4C4', 'DeepPink3': '#CD1076', 'DeepPink2': '#EE1289', 'DeepPink1': '#FF1493', 'khaki': '#F0E68C', 'wheat': '#F5DEB3', 'MediumSeaGreen': '#3CB371', 'DeepPink4': '#8B0A50', 'salmon': '#FA8072', 'grey44': '#707070', 'DarkSlateBlue': '#483D8B', 'PaleVioletRed4': '#8B475D', 'PaleVioletRed1': '#FF82AB', 'PaleVioletRed2': '#EE799F', 'PaleVioletRed3': '#CD6889', 'AntiqueWhite': '#FAEBD7', 'PaleTurquoise4': '#668B8B', 'PaleTurquoise3': '#96CDCD', 'PaleTurquoise2': '#AEEEEE', 'PaleTurquoise1': '#BBFFFF', 'gray56': '#8F8F8F', 'plum': '#DDA0DD', 'beige': '#F5F5DC', 'SpringGreen': '#00FF7F', 'azure': '#F0FFFF', 'honeydew1': '#F0FFF0', 'honeydew2': '#E0EEE0', 'honeydew3': '#C1CDC1', 'honeydew4': '#838B83', 'gray57': '#919191', 'snow4': '#8B8989', 'snow2': '#EEE9E9', 'snow3': '#CDC9C9', 'snow1': '#FFFAFA', 'SandyBrown': '#F4A460', 'grey13': '#212121', 'SeaGreen4': '#2E8B57', 'SeaGreen3': '#43CD80', 'SeaGreen2': '#4EEE94', 'SeaGreen1': '#54FF9F', 'grey29': '#4A4A4A', 'grey28': '#474747', 'grey25': '#404040', 'grey24': '#3D3D3D', 'grey27': '#454545', 'grey26': '#424242', 'fuchsia': '#FF00FF', 'grey20': '#333333', 'grey23': '#3B3B3B', 'grey22': '#383838', 'gray78': '#C7C7C7', 'gray79': '#C9C9C9', 'gray76': '#C2C2C2', 'gray77': '#C4C4C4', 'gray74': '#BDBDBD', 'gray75': '#BFBFBF', 'gray72': '#B8B8B8', 'gray73': '#BABABA', 'gray70': '#B3B3B3', 'gray71': '#B5B5B5', 'ivory': '#FFFFF0', 'LemonChiffon3': '#CDC9A5', 'DeepSkyBlue4': '#00688B', 'DeepSkyBlue3': '#009ACD', 'DeepSkyBlue2': '#00B2EE', 'DeepSkyBlue1': '#00BFFF', 'cornsilk4': '#8B8878', 'cornsilk2': '#EEE8CD', 'cornsilk3': '#CDC8B1', 'CadetBlue': '#5F9EA0', 'cornsilk1': '#FFF8DC', 'grey90': '#E5E5E5', 'grey91': '#E8E8E8', 'grey92': '#EBEBEB', 'goldenrod': '#DAA520', 'grey94': '#F0F0F0', 'grey95': '#F2F2F2', 'grey96': '#F5F5F5', 'grey97': '#F7F7F7', 'grey98': '#FAFAFA', 'grey99': '#FCFCFC', 'red3': '#CD0000', 'LightSteelBlue2': '#BCD2EE', 'LightSteelBlue3': '#A2B5CD', 'LightSteelBlue4': '#6E7B8B', 'LightBlue3': '#9AC0CD', 'maroon': '#800000', 'LightSkyBlue': '#87CEFA', 'LightGoldenrodYellow': '#FAFAD2', 'MediumBlue': '#0000CD', 'LightSlateGray': '#778899', 'DarkOrange2': '#EE7600', 'PaleVioletRed': '#DB7093'}
diff --git a/frontend/imgrid/colors/colors/junk/colorpicker.html b/frontend/imgrid/colors/colors/junk/colorpicker.html
new file mode 100755
index 0000000..23993ac
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/colorpicker.html
@@ -0,0 +1,254 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+<html>
+<head>
+<style type='text/css'>
+body
+ {
+ background-image:url('http://asdf.us/im/ef/_imgrid_1320723477_pepper.png');
+ }
+#firstd
+ {
+ position:fixed;
+ top:40px;
+ right:20%;
+ height:40px;
+ width:0px;
+ background-color:#ffdead;
+ color:white;
+ }
+#secondd
+ {
+ position:fixed;
+ top: 100px;
+ right:20%;
+ height:40px;
+ width: 200px;
+ font-family:'helvetica';
+ font-size:40px;
+ }
+
+#error
+ {
+ position: fixed;
+ bottom: 100px;
+ height:40px;
+ width: 200px;
+ background-color: mediumseagreen;
+ right: 50%;
+ }
+#colorerror
+ {
+ position: fixed;
+ bottom:50px;
+ height:30px;
+ width: 140px;
+ background-color: red;
+ right: 50%;
+ }
+iframe
+ {
+ width:600px;
+ height:400px;
+ }
+#namespace
+ {
+ position:fixed;
+ bottom:40px;
+ right:20px;
+ }
+#hexmode
+ {
+ position:fixed;
+ top:300px;
+ right:100px;
+ font-size:40px;
+ font-family:helvetica;
+ }
+#hexswitch
+ {
+ height:100px;
+ width:300px;
+ font-size:20px
+ border-style: groove;
+ border-width: 4px;
+ background-color:goldenrod;
+ text-align:center;
+ }
+</style>
+</head>
+<body>
+<div class='content' sytle="background-color:yellow; height:40px; width:300px; position:fixed; bottom:20px; right:45%">BLACH BLAH BLAH</div>
+<button>wonderbutton</button>
+<p>hex</p>
+<p>text</p>
+<div id='hexswitch'>CLICK TO SHOW HEXES</div>
+<div><iframe src='colorsnew.html'></iframe></div>
+<div id='guy2' class='guys' style='position:fixed;z-index:10;background-color:dodgerblue;height:40px;width:50px;top:10px;right:81%'>funny</div>
+<div id='guy3' class='guys' style='position:fixed;z-index:10;background-color:snow;height:40px;width:50px;top:10px;right:76%'>happy</div>
+<div id='guy1' class='guys' style='position:fixed;z-index:10;background-color:magenta;height:40px;width:50px;top:10px;right:66%'>silly</div>
+<div id='guy5' class='guys' style='position:fixed;z-index:10;background-color:magenta;height:40px;width:50px;top:10px;right:71%'>smart</div>
+<div id='showinfo' class='guys' style='position:fixed;z-index:10;background-color:magenta;height:40px;width:50px;top:10px;right:60%'>click it</div>
+
+<div id='firstd'>click me</div><div id='secondd'></div>
+<div id='error'></div>
+<div id='colorerror'></div>
+<input id='namespace' type='text'></input>
+<div id='hexmode'>choose between hex or text...<input id='hexortext' type='checkbox' value="1"></input></div>
+<script type="text/javascript" src="jquery-1.6.4.min.js"></script>
+<script type="text/javascript" src="colordict.js"></script>
+<script type="text/javascript">
+
+function showid(id)
+ {
+ $('#guy5').html(id)
+ }
+$('.guys').mouseover(function() {
+ showid(this.id);
+});
+$("button").click(function () {
+$("p").toggle();
+});
+
+function removecontent()
+ {
+ $('.content').hover(function(){return})
+ $('.content').html("")
+ }
+removecontent()
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idstr, propertystr)
+ {
+ grab = $('#'+idstr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idstr, propertystr)
+ {
+ result = getproperty(idstr, propertystr)
+ newwidth = goldenize(result)
+ widthval = newwidth.toString()+'px'
+ $('#'+idstr).css('width', widthval)
+ }
+makegolden('firstd', 'height')
+$('#colorerror').css('background-color', '#556B2F')
+
+//from http://haacked.com/archive/2009/12/29/convert-rgb-to-hex.aspx
+function colorToHex(color) {
+ if (color.substr(0, 1) === '#') {
+ return color;
+ }
+ var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color);
+
+ var red = parseInt(digits[2]);
+ var green = parseInt(digits[3]);
+ var blue = parseInt(digits[4]);
+
+ var rgb = blue | (green << 8) | (red << 16);
+ return digits[1] + '#' + rgb.toString(16);
+};
+
+
+monica = $('#hexortext:checked').length
+$('#error').append(monica)
+$('#error').append('knows whassup')
+var hexes = false
+function hexswitch()
+ {
+ if(hexes == false)
+ {
+ $('#hexswitch').html('CLICK TO SHOW COLOR NAMES')
+ hexes = true;
+ }
+
+ else
+ {
+ $('#hexswitch').html('CLICK TO SHOW HEX NAMES')
+ hexes = false;
+ }
+ }
+$('#hexswitch').click(function(){hexswitch()})
+//takes a div name and returns a colorname
+function showcolorname(divstr)
+ {
+ bgcolor = $('#'+divstr).css('background-color')
+ lowercasehex = colorToHex(bgcolor)
+ hex = lowercasehex.toUpperCase()
+ imname = hextoname[hex]
+ if ($('#hexortext:checked').length == 1)
+ {
+ imname = hex
+ }
+ return imname
+ }
+function bigname()
+ {
+ bebop = showcolorname('firstd')
+ $('#secondd').html(bebop)
+ }
+function putitin(hotboy)
+ {
+ $('#namespace').val(hotboy)
+ }
+$("#firstd").hover(function(){bigname()})
+$("#firstd").hover(function(){$('#secondd').fadeOut(100);$('#secondd').fadeIn(500);});
+function boys ()
+ {
+ var heyguys = showcolorname('firstd')
+ putitin(heyguys)
+ }
+$('#firstd').click(function(){boys()})
+//$('#'+divstr).mouseover(bigname(divstr)
+//three way toggle with background color
+//here's how it will work
+//there is a dictionary of background color hexes which translate into names
+// with every click of a div the .html() property shifts between three states
+//1. showing the background color as a string
+//2. showing nothing
+//3. showing the value of the hash using the background color as the key to the
+//hash
+//first step: make the three stage button DONE
+
+var infostate = 0;
+$('#showinfo').click(function(){
+ if(infostate == 0)
+ {$('#guy2').html(colorToHex($('#guy2').css('background-color')));infostate = 1}
+ else if(infostate == 1)
+ {$('#guy2').html(newdict[colorToHex($('#guy2').css('background-color'))]);infostate = 2}
+ else if(infostate == 2)
+ {$('#guy2').html(0);infostate = 0}
+ })
+//second step make dictionary DONE
+var newdict = {}
+newdict['#1e90ff'] = 'green'
+newdict['#ff00ff'] = 'purple'
+newdict['#fffafa'] = 'mauve'
+
+//make it happen using guy1 guy2 guy3
+// DO NOT USE HEX TO COLORNAME AND JQUERY BACKGROUND COLOR...use the dictionari
+//es instead...they are divlist, and hextoname and nametohex and divtoname they have a
+//range of 0-673 (or length of 674)
+
+
+var happyguys = ['#guy1','#guy2','#guy3']
+function tester()
+ {
+ for(var i=0; i<happyguys.length; i++){
+ $(happyguys[i]).html($(happyguys[i]).css('background-color'))
+ }
+ }
+tester()
+
+//the script will be very convoluted. please make it anyway
+//remember the only way to affect a list of things is to iterate over them
+//make a list of the div names put it in this format... do that next
+
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/colors/junk/colorpixx.css b/frontend/imgrid/colors/colors/junk/colorpixx.css
new file mode 100755
index 0000000..1ddf557
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/colorpixx.css
@@ -0,0 +1,2047 @@
+
+body
+{word-wrap: break-word;}
+
+#main div
+{display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+min-height: 30px;
+min-width:20px;
+zoom: 1;
+*display: inline;}
+}
+
+#main
+ {
+ width:600px;
+ }
+#colornames
+{position:fixed;
+font-size:50px;
+top:50px;
+right:50%;}
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{height:30px;
+width:10px;}
diff --git a/frontend/imgrid/colors/colors/junk/colorpixx.js b/frontend/imgrid/colors/colors/junk/colorpixx.js
new file mode 100755
index 0000000..4b42e4d
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/colorpixx.js
@@ -0,0 +1,92 @@
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newwidth = goldenize(result)
+ widthval = newwidth.toString()+'px'
+ $(idandselectr).css('width', widthval)
+ }
+makegolden('.colors', 'height')
+//remove content this function takes the name out of the divs
+
+function removecontent()
+ {
+ $('.colors').html("")
+ }
+removecontent()
+
+function colorToHex(color) {
+ if (color.substr(0, 1) === '#') {
+ return color;
+ }
+ var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color);
+
+ var red = parseInt(digits[2]);
+ var green = parseInt(digits[3]);
+ var blue = parseInt(digits[4]);
+
+ var rgb = blue | (green << 8) | (red << 16);
+ return digits[1] + '#' + rgb.toString(16);
+};
+
+//takes a div name and returns a colorname
+
+function showcolorname(divstr)
+
+ {
+
+ bgcolor = $('#'+divstr).css('background-color')
+ lowercasehex = colorToHex(bgcolor)
+ hex = lowercasehex.toUpperCase()
+ imname = hextoname[hex]
+/* if ($('#hexortext:checked').length == 1)
+ {
+ imname = hex
+ }*/
+ return imname
+ }
+function bigname(divstr)
+ {
+ bebop = showcolorname(divstr)
+// $('#colornames').html(bebop)
+ }
+function writeit(text)
+ {
+// $('#colornames').append(text)
+ }
+function makebig(divstr)
+ {
+ firstheight = $('#'+divstr).height()
+ newheight = goldenize(firstheight)
+ $('#'+divstr).height(newheight)
+// $('#colornames').append(firstheight)
+ }
+function makesmall(divstr)
+ {
+ oldheight = $('.colors').height()
+ $('#'+divstr).height(oldheight)
+ }
+$('.colors').hover(function() {
+ bigname(this.id);
+ makebig(this.id);
+ makegolden('#'+this.id, 'height')},
+function(){
+ makesmall(this.id);
+ makegolden('#'+this.id, 'height')
+});
+$('#colornames').html("")
+$("#popupContact").css('background-color', 'black')
+$('.colors').css('margin-top', '2px')
diff --git a/frontend/imgrid/colors/colors/junk/colors.html b/frontend/imgrid/colors/colors/junk/colors.html
new file mode 100755
index 0000000..0ef22f9
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/colors.html
@@ -0,0 +1,5429 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- saved from url=(0124)https://mail.google.com/mail/?ui=2&ik=8c5c6e41c0&view=att&th=131a60939ee4c454&attid=0.1&disp=inline&realattid=f_gr2htzs60&zw -->
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head>
+<style type="text/css">
+*
+ {
+ font-family: sans-serif;
+ }
+</style>
+<body>
+
+
+
+<div>
+<h1><a></a>List of Color Names</h1>
+<div>
+
+<p>a list of named colors for use with PHOTOBLASTER:</p>
+
+<table>
+<tbody>
+ <tr>
+ <th align="right">Name</th>
+ <th align="center">Color</th>
+ <th align="left">RGB</th>
+ <th align="left">Hex</th>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow</td>
+ <td align="center" style="background-color:rgb(255, 250, 250)">snow</td>
+ <td align="left">rgb(255, 250, 250)</td>
+ <td align="left">#FFFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow1</td>
+ <td align="center" style="background-color:rgb(255, 250, 250)">snow1</td>
+ <td align="left">rgb(255, 250, 250)</td>
+ <td align="left">#FFFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow2</td>
+ <td align="center" style="background-color:rgb(238, 233, 233)">snow2</td>
+ <td align="left">rgb(238, 233, 233)</td>
+ <td align="left">#EEE9E9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown1</td>
+ <td align="center" style="background-color:rgb(255, 193, 193)">RosyBrown1</td>
+ <td align="left">rgb(255, 193, 193)</td>
+ <td align="left">#FFC1C1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown2</td>
+ <td align="center" style="background-color:rgb(238, 180, 180)">RosyBrown2</td>
+ <td align="left">rgb(238, 180, 180)</td>
+ <td align="left">#EEB4B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow3</td>
+ <td align="center" style="background-color:rgb(205, 201, 201)">snow3</td>
+ <td align="left">rgb(205, 201, 201)</td>
+ <td align="left">#CDC9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCoral</td>
+ <td align="center" style="background-color:rgb(240, 128, 128)">LightCoral</td>
+ <td align="left">rgb(240, 128, 128)</td>
+ <td align="left">#F08080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed1</td>
+ <td align="center" style="background-color:rgb(255, 106, 106)">IndianRed1</td>
+ <td align="left">rgb(255, 106, 106)</td>
+ <td align="left">#FF6A6A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown3</td>
+ <td align="center" style="background-color:rgb(205, 155, 155)">RosyBrown3</td>
+ <td align="left">rgb(205, 155, 155)</td>
+ <td align="left">#CD9B9B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed2</td>
+ <td align="center" style="background-color:rgb(238, 99, 99)">IndianRed2</td>
+ <td align="left">rgb(238, 99, 99)</td>
+ <td align="left">#EE6363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown</td>
+ <td align="center" style="background-color:rgb(188, 143, 143)">RosyBrown</td>
+ <td align="left">rgb(188, 143, 143)</td>
+ <td align="left">#BC8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown1</td>
+ <td align="center" style="background-color:rgb(255, 64, 64)">brown1</td>
+ <td align="left">rgb(255, 64, 64)</td>
+ <td align="left">#FF4040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick1</td>
+ <td align="center" style="background-color:rgb(255, 48, 48)">firebrick1</td>
+ <td align="left">rgb(255, 48, 48)</td>
+ <td align="left">#FF3030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown2</td>
+ <td align="center" style="background-color:rgb(238, 59, 59)">brown2</td>
+ <td align="left">rgb(238, 59, 59)</td>
+ <td align="left">#EE3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed</td>
+ <td align="center" style="background-color:rgb(205, 92, 92)">IndianRed</td>
+ <td align="left">rgb(205, 92, 92)</td>
+ <td align="left">#CD5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed3</td>
+ <td align="center" style="background-color:rgb(205, 85, 85)">IndianRed3</td>
+ <td align="left">rgb(205, 85, 85)</td>
+ <td align="left">#CD5555</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick2</td>
+ <td align="center" style="background-color:rgb(238, 44, 44)">firebrick2</td>
+ <td align="left">rgb(238, 44, 44)</td>
+ <td align="left">#EE2C2C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow4</td>
+ <td align="center" style="background-color:rgb(139, 137, 137)">snow4</td>
+ <td align="left">rgb(139, 137, 137)</td>
+ <td align="left">#8B8989</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown3</td>
+ <td align="center" style="background-color:rgb(205, 51, 51)">brown3</td>
+ <td align="left">rgb(205, 51, 51)</td>
+ <td align="left">#CD3333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red</td>
+ <td align="center" style="background-color:rgb(255, 0, 0)">red</td>
+ <td align="left">rgb(255, 0, 0)</td>
+ <td align="left">#FF0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red1</td>
+ <td align="center" style="background-color:rgb(255, 0, 0)">red1</td>
+ <td align="left">rgb(255, 0, 0)</td>
+ <td align="left">#FF0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown4</td>
+ <td align="center" style="background-color:rgb(139, 105, 105)">RosyBrown4</td>
+ <td align="left">rgb(139, 105, 105)</td>
+ <td align="left">#8B6969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick3</td>
+ <td align="center" style="background-color:rgb(205, 38, 38)">firebrick3</td>
+ <td align="left">rgb(205, 38, 38)</td>
+ <td align="left">#CD2626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red2</td>
+ <td align="center" style="background-color:rgb(238, 0, 0)">red2</td>
+ <td align="left">rgb(238, 0, 0)</td>
+ <td align="left">#EE0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick</td>
+ <td align="center" style="background-color:rgb(178, 34, 34)">firebrick</td>
+ <td align="left">rgb(178, 34, 34)</td>
+ <td align="left">#B22222</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown</td>
+ <td align="center" style="background-color:rgb(165, 42, 42)">brown</td>
+ <td align="left">rgb(165, 42, 42)</td>
+ <td align="left">#A52A2A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red3</td>
+ <td align="center" style="background-color:rgb(205, 0, 0)">red3</td>
+ <td align="left">rgb(205, 0, 0)</td>
+ <td align="left">#CD0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed4</td>
+ <td align="center" style="background-color:rgb(139, 58, 58)">IndianRed4</td>
+ <td align="left">rgb(139, 58, 58)</td>
+ <td align="left">#8B3A3A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown4</td>
+ <td align="center" style="background-color:rgb(139, 35, 35)">brown4</td>
+ <td align="left">rgb(139, 35, 35)</td>
+ <td align="left">#8B2323</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick4</td>
+ <td align="center" style="background-color:rgb(139, 26, 26)">firebrick4</td>
+ <td align="left">rgb(139, 26, 26)</td>
+ <td align="left">#8B1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkRed</td>
+ <td align="center" style="background-color:rgb(139, 0, 0)">DarkRed</td>
+ <td align="left">rgb(139, 0, 0)</td>
+ <td align="left">#8B0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red4</td>
+ <td align="center" style="background-color:rgb(139, 0, 0)">red4</td>
+ <td align="left">rgb(139, 0, 0)</td>
+ <td align="left">#8B0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon</td>
+ <td align="center" style="background-color:rgb(128, 0, 0)">maroon</td>
+ <td align="left">rgb(128, 0, 0)</td>
+ <td align="left">#800000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink1</td>
+ <td align="center" style="background-color:rgb(255, 174, 185)">LightPink1</td>
+ <td align="left">rgb(255, 174, 185)</td>
+ <td align="left">#FFAEB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink3</td>
+ <td align="center" style="background-color:rgb(205, 140, 149)">LightPink3</td>
+ <td align="left">rgb(205, 140, 149)</td>
+ <td align="left">#CD8C95</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink4</td>
+ <td align="center" style="background-color:rgb(139, 95, 101)">LightPink4</td>
+ <td align="left">rgb(139, 95, 101)</td>
+ <td align="left">#8B5F65</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink2</td>
+ <td align="center" style="background-color:rgb(238, 162, 173)">LightPink2</td>
+ <td align="left">rgb(238, 162, 173)</td>
+ <td align="left">#EEA2AD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink</td>
+ <td align="center" style="background-color:rgb(255, 182, 193)">LightPink</td>
+ <td align="left">rgb(255, 182, 193)</td>
+ <td align="left">#FFB6C1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink</td>
+ <td align="center" style="background-color:rgb(255, 192, 203)">pink</td>
+ <td align="left">rgb(255, 192, 203)</td>
+ <td align="left">#FFC0CB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">crimson</td>
+ <td align="center" style="background-color:rgb(220, 20, 60)">crimson</td>
+ <td align="left">rgb(220, 20, 60)</td>
+ <td align="left">#DC143C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink1</td>
+ <td align="center" style="background-color:rgb(255, 181, 197)">pink1</td>
+ <td align="left">rgb(255, 181, 197)</td>
+ <td align="left">#FFB5C5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink2</td>
+ <td align="center" style="background-color:rgb(238, 169, 184)">pink2</td>
+ <td align="left">rgb(238, 169, 184)</td>
+ <td align="left">#EEA9B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink3</td>
+ <td align="center" style="background-color:rgb(205, 145, 158)">pink3</td>
+ <td align="left">rgb(205, 145, 158)</td>
+ <td align="left">#CD919E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink4</td>
+ <td align="center" style="background-color:rgb(139, 99, 108)">pink4</td>
+ <td align="left">rgb(139, 99, 108)</td>
+ <td align="left">#8B636C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed4</td>
+ <td align="center" style="background-color:rgb(139, 71, 93)">PaleVioletRed4</td>
+ <td align="left">rgb(139, 71, 93)</td>
+ <td align="left">#8B475D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed</td>
+ <td align="center" style="background-color:rgb(219, 112, 147)">PaleVioletRed</td>
+ <td align="left">rgb(219, 112, 147)</td>
+ <td align="left">#DB7093</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed2</td>
+ <td align="center" style="background-color:rgb(238, 121, 159)">PaleVioletRed2</td>
+ <td align="left">rgb(238, 121, 159)</td>
+ <td align="left">#EE799F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed1</td>
+ <td align="center" style="background-color:rgb(255, 130, 171)">PaleVioletRed1</td>
+ <td align="left">rgb(255, 130, 171)</td>
+ <td align="left">#FF82AB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed3</td>
+ <td align="center" style="background-color:rgb(205, 104, 137)">PaleVioletRed3</td>
+ <td align="left">rgb(205, 104, 137)</td>
+ <td align="left">#CD6889</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush</td>
+ <td align="center" style="background-color:rgb(255, 240, 245)">LavenderBlush</td>
+ <td align="left">rgb(255, 240, 245)</td>
+ <td align="left">#FFF0F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush1</td>
+ <td align="center" style="background-color:rgb(255, 240, 245)">LavenderBlush1</td>
+ <td align="left">rgb(255, 240, 245)</td>
+ <td align="left">#FFF0F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush3</td>
+ <td align="center" style="background-color:rgb(205, 193, 197)">LavenderBlush3</td>
+ <td align="left">rgb(205, 193, 197)</td>
+ <td align="left">#CDC1C5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush2</td>
+ <td align="center" style="background-color:rgb(238, 224, 229)">LavenderBlush2</td>
+ <td align="left">rgb(238, 224, 229)</td>
+ <td align="left">#EEE0E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush4</td>
+ <td align="center" style="background-color:rgb(139, 131, 134)">LavenderBlush4</td>
+ <td align="left">rgb(139, 131, 134)</td>
+ <td align="left">#8B8386</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon</td>
+ <td align="center" style="background-color:rgb(176, 48, 96)">maroon</td>
+ <td align="left">rgb(176, 48, 96)</td>
+ <td align="left">#B03060</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink3</td>
+ <td align="center" style="background-color:rgb(205, 96, 144)">HotPink3</td>
+ <td align="left">rgb(205, 96, 144)</td>
+ <td align="left">#CD6090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed3</td>
+ <td align="center" style="background-color:rgb(205, 50, 120)">VioletRed3</td>
+ <td align="left">rgb(205, 50, 120)</td>
+ <td align="left">#CD3278</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed1</td>
+ <td align="center" style="background-color:rgb(255, 62, 150)">VioletRed1</td>
+ <td align="left">rgb(255, 62, 150)</td>
+ <td align="left">#FF3E96</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed2</td>
+ <td align="center" style="background-color:rgb(238, 58, 140)">VioletRed2</td>
+ <td align="left">rgb(238, 58, 140)</td>
+ <td align="left">#EE3A8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed4</td>
+ <td align="center" style="background-color:rgb(139, 34, 82)">VioletRed4</td>
+ <td align="left">rgb(139, 34, 82)</td>
+ <td align="left">#8B2252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink2</td>
+ <td align="center" style="background-color:rgb(238, 106, 167)">HotPink2</td>
+ <td align="left">rgb(238, 106, 167)</td>
+ <td align="left">#EE6AA7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink1</td>
+ <td align="center" style="background-color:rgb(255, 110, 180)">HotPink1</td>
+ <td align="left">rgb(255, 110, 180)</td>
+ <td align="left">#FF6EB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink4</td>
+ <td align="center" style="background-color:rgb(139, 58, 98)">HotPink4</td>
+ <td align="left">rgb(139, 58, 98)</td>
+ <td align="left">#8B3A62</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink</td>
+ <td align="center" style="background-color:rgb(255, 105, 180)">HotPink</td>
+ <td align="left">rgb(255, 105, 180)</td>
+ <td align="left">#FF69B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink</td>
+ <td align="center" style="background-color:rgb(255, 20, 147)">DeepPink</td>
+ <td align="left">rgb(255, 20, 147)</td>
+ <td align="left">#FF1493</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink1</td>
+ <td align="center" style="background-color:rgb(255, 20, 147)">DeepPink1</td>
+ <td align="left">rgb(255, 20, 147)</td>
+ <td align="left">#FF1493</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink2</td>
+ <td align="center" style="background-color:rgb(238, 18, 137)">DeepPink2</td>
+ <td align="left">rgb(238, 18, 137)</td>
+ <td align="left">#EE1289</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink3</td>
+ <td align="center" style="background-color:rgb(205, 16, 118)">DeepPink3</td>
+ <td align="left">rgb(205, 16, 118)</td>
+ <td align="left">#CD1076</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink4</td>
+ <td align="center" style="background-color:rgb(139, 10, 80)">DeepPink4</td>
+ <td align="left">rgb(139, 10, 80)</td>
+ <td align="left">#8B0A50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon1</td>
+ <td align="center" style="background-color:rgb(255, 52, 179)">maroon1</td>
+ <td align="left">rgb(255, 52, 179)</td>
+ <td align="left">#FF34B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon2</td>
+ <td align="center" style="background-color:rgb(238, 48, 167)">maroon2</td>
+ <td align="left">rgb(238, 48, 167)</td>
+ <td align="left">#EE30A7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon3</td>
+ <td align="center" style="background-color:rgb(205, 41, 144)">maroon3</td>
+ <td align="left">rgb(205, 41, 144)</td>
+ <td align="left">#CD2990</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon4</td>
+ <td align="center" style="background-color:rgb(139, 28, 98)">maroon4</td>
+ <td align="left">rgb(139, 28, 98)</td>
+ <td align="left">#8B1C62</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumVioletRed</td>
+ <td align="center" style="background-color:rgb(199, 21, 133)">MediumVioletRed</td>
+ <td align="left">rgb(199, 21, 133)</td>
+ <td align="left">#C71585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed</td>
+ <td align="center" style="background-color:rgb(208, 32, 144)">VioletRed</td>
+ <td align="left">rgb(208, 32, 144)</td>
+ <td align="left">#D02090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid2</td>
+ <td align="center" style="background-color:rgb(238, 122, 233)">orchid2</td>
+ <td align="left">rgb(238, 122, 233)</td>
+ <td align="left">#EE7AE9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid</td>
+ <td align="center" style="background-color:rgb(218, 112, 214)">orchid</td>
+ <td align="left">rgb(218, 112, 214)</td>
+ <td align="left">#DA70D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid1</td>
+ <td align="center" style="background-color:rgb(255, 131, 250)">orchid1</td>
+ <td align="left">rgb(255, 131, 250)</td>
+ <td align="left">#FF83FA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid3</td>
+ <td align="center" style="background-color:rgb(205, 105, 201)">orchid3</td>
+ <td align="left">rgb(205, 105, 201)</td>
+ <td align="left">#CD69C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid4</td>
+ <td align="center" style="background-color:rgb(139, 71, 137)">orchid4</td>
+ <td align="left">rgb(139, 71, 137)</td>
+ <td align="left">#8B4789</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle1</td>
+ <td align="center" style="background-color:rgb(255, 225, 255)">thistle1</td>
+ <td align="left">rgb(255, 225, 255)</td>
+ <td align="left">#FFE1FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle2</td>
+ <td align="center" style="background-color:rgb(238, 210, 238)">thistle2</td>
+ <td align="left">rgb(238, 210, 238)</td>
+ <td align="left">#EED2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum1</td>
+ <td align="center" style="background-color:rgb(255, 187, 255)">plum1</td>
+ <td align="left">rgb(255, 187, 255)</td>
+ <td align="left">#FFBBFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum2</td>
+ <td align="center" style="background-color:rgb(238, 174, 238)">plum2</td>
+ <td align="left">rgb(238, 174, 238)</td>
+ <td align="left">#EEAEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle</td>
+ <td align="center" style="background-color:rgb(216, 191, 216)">thistle</td>
+ <td align="left">rgb(216, 191, 216)</td>
+ <td align="left">#D8BFD8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle3</td>
+ <td align="center" style="background-color:rgb(205, 181, 205)">thistle3</td>
+ <td align="left">rgb(205, 181, 205)</td>
+ <td align="left">#CDB5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum</td>
+ <td align="center" style="background-color:rgb(221, 160, 221)">plum</td>
+ <td align="left">rgb(221, 160, 221)</td>
+ <td align="left">#DDA0DD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">violet</td>
+ <td align="center" style="background-color:rgb(238, 130, 238)">violet</td>
+ <td align="left">rgb(238, 130, 238)</td>
+ <td align="left">#EE82EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum3</td>
+ <td align="center" style="background-color:rgb(205, 150, 205)">plum3</td>
+ <td align="left">rgb(205, 150, 205)</td>
+ <td align="left">#CD96CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle4</td>
+ <td align="center" style="background-color:rgb(139, 123, 139)">thistle4</td>
+ <td align="left">rgb(139, 123, 139)</td>
+ <td align="left">#8B7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">fuchsia</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">fuchsia</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">magenta</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta1</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">magenta1</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum4</td>
+ <td align="center" style="background-color:rgb(139, 102, 139)">plum4</td>
+ <td align="left">rgb(139, 102, 139)</td>
+ <td align="left">#8B668B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta2</td>
+ <td align="center" style="background-color:rgb(238, 0, 238)">magenta2</td>
+ <td align="left">rgb(238, 0, 238)</td>
+ <td align="left">#EE00EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta3</td>
+ <td align="center" style="background-color:rgb(205, 0, 205)">magenta3</td>
+ <td align="left">rgb(205, 0, 205)</td>
+ <td align="left">#CD00CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkMagenta</td>
+ <td align="center" style="background-color:rgb(139, 0, 139)">DarkMagenta</td>
+ <td align="left">rgb(139, 0, 139)</td>
+ <td align="left">#8B008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta4</td>
+ <td align="center" style="background-color:rgb(139, 0, 139)">magenta4</td>
+ <td align="left">rgb(139, 0, 139)</td>
+ <td align="left">#8B008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple</td>
+ <td align="center" style="background-color:rgb(128, 0, 128)">purple</td>
+ <td align="left">rgb(128, 0, 128)</td>
+ <td align="left">#800080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid</td>
+ <td align="center" style="background-color:rgb(186, 85, 211)">MediumOrchid</td>
+ <td align="left">rgb(186, 85, 211)</td>
+ <td align="left">#BA55D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid1</td>
+ <td align="center" style="background-color:rgb(224, 102, 255)">MediumOrchid1</td>
+ <td align="left">rgb(224, 102, 255)</td>
+ <td align="left">#E066FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid2</td>
+ <td align="center" style="background-color:rgb(209, 95, 238)">MediumOrchid2</td>
+ <td align="left">rgb(209, 95, 238)</td>
+ <td align="left">#D15FEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid3</td>
+ <td align="center" style="background-color:rgb(180, 82, 205)">MediumOrchid3</td>
+ <td align="left">rgb(180, 82, 205)</td>
+ <td align="left">#B452CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid4</td>
+ <td align="center" style="background-color:rgb(122, 55, 139)">MediumOrchid4</td>
+ <td align="left">rgb(122, 55, 139)</td>
+ <td align="left">#7A378B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkViolet</td>
+ <td align="center" style="background-color:rgb(148, 0, 211)">DarkViolet</td>
+ <td align="left">rgb(148, 0, 211)</td>
+ <td align="left">#9400D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid</td>
+ <td align="center" style="background-color:rgb(153, 50, 204)">DarkOrchid</td>
+ <td align="left">rgb(153, 50, 204)</td>
+ <td align="left">#9932CC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid1</td>
+ <td align="center" style="background-color:rgb(191, 62, 255)">DarkOrchid1</td>
+ <td align="left">rgb(191, 62, 255)</td>
+ <td align="left">#BF3EFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid3</td>
+ <td align="center" style="background-color:rgb(154, 50, 205)">DarkOrchid3</td>
+ <td align="left">rgb(154, 50, 205)</td>
+ <td align="left">#9A32CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid2</td>
+ <td align="center" style="background-color:rgb(178, 58, 238)">DarkOrchid2</td>
+ <td align="left">rgb(178, 58, 238)</td>
+ <td align="left">#B23AEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid4</td>
+ <td align="center" style="background-color:rgb(104, 34, 139)">DarkOrchid4</td>
+ <td align="left">rgb(104, 34, 139)</td>
+ <td align="left">#68228B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple</td>
+ <td align="center" style="background-color:rgb(160, 32, 240)">purple</td>
+ <td align="left">rgb(160, 32, 240)</td>
+ <td align="left">#A020F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">indigo</td>
+ <td align="center" style="background-color:rgb( 75, 0, 130)">indigo</td>
+ <td align="left">rgb( 75, 0, 130)</td>
+ <td align="left">#4B0082</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">BlueViolet</td>
+ <td align="center" style="background-color:rgb(138, 43, 226)">BlueViolet</td>
+ <td align="left">rgb(138, 43, 226)</td>
+ <td align="left">#8A2BE2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple2</td>
+ <td align="center" style="background-color:rgb(145, 44, 238)">purple2</td>
+ <td align="left">rgb(145, 44, 238)</td>
+ <td align="left">#912CEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple3</td>
+ <td align="center" style="background-color:rgb(125, 38, 205)">purple3</td>
+ <td align="left">rgb(125, 38, 205)</td>
+ <td align="left">#7D26CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple4</td>
+ <td align="center" style="background-color:rgb( 85, 26, 139)">purple4</td>
+ <td align="left">rgb( 85, 26, 139)</td>
+ <td align="left">#551A8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple1</td>
+ <td align="center" style="background-color:rgb(155, 48, 255)">purple1</td>
+ <td align="left">rgb(155, 48, 255)</td>
+ <td align="left">#9B30FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple</td>
+ <td align="center" style="background-color:rgb(147, 112, 219)">MediumPurple</td>
+ <td align="left">rgb(147, 112, 219)</td>
+ <td align="left">#9370DB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple1</td>
+ <td align="center" style="background-color:rgb(171, 130, 255)">MediumPurple1</td>
+ <td align="left">rgb(171, 130, 255)</td>
+ <td align="left">#AB82FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple2</td>
+ <td align="center" style="background-color:rgb(159, 121, 238)">MediumPurple2</td>
+ <td align="left">rgb(159, 121, 238)</td>
+ <td align="left">#9F79EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple3</td>
+ <td align="center" style="background-color:rgb(137, 104, 205)">MediumPurple3</td>
+ <td align="left">rgb(137, 104, 205)</td>
+ <td align="left">#8968CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple4</td>
+ <td align="center" style="background-color:rgb( 93, 71, 139)">MediumPurple4</td>
+ <td align="left">rgb( 93, 71, 139)</td>
+ <td align="left">#5D478B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateBlue</td>
+ <td align="center" style="background-color:rgb( 72, 61, 139)">DarkSlateBlue</td>
+ <td align="left">rgb( 72, 61, 139)</td>
+ <td align="left">#483D8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateBlue</td>
+ <td align="center" style="background-color:rgb(132, 112, 255)">LightSlateBlue</td>
+ <td align="left">rgb(132, 112, 255)</td>
+ <td align="left">#8470FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSlateBlue</td>
+ <td align="center" style="background-color:rgb(123, 104, 238)">MediumSlateBlue</td>
+ <td align="left">rgb(123, 104, 238)</td>
+ <td align="left">#7B68EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue</td>
+ <td align="center" style="background-color:rgb(106, 90, 205)">SlateBlue</td>
+ <td align="left">rgb(106, 90, 205)</td>
+ <td align="left">#6A5ACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue1</td>
+ <td align="center" style="background-color:rgb(131, 111, 255)">SlateBlue1</td>
+ <td align="left">rgb(131, 111, 255)</td>
+ <td align="left">#836FFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue2</td>
+ <td align="center" style="background-color:rgb(122, 103, 238)">SlateBlue2</td>
+ <td align="left">rgb(122, 103, 238)</td>
+ <td align="left">#7A67EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue3</td>
+ <td align="center" style="background-color:rgb(105, 89, 205)">SlateBlue3</td>
+ <td align="left">rgb(105, 89, 205)</td>
+ <td align="left">#6959CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue4</td>
+ <td align="center" style="background-color:rgb( 71, 60, 139)">SlateBlue4</td>
+ <td align="left">rgb( 71, 60, 139)</td>
+ <td align="left">#473C8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">GhostWhite</td>
+ <td align="center" style="background-color:rgb(248, 248, 255)">GhostWhite</td>
+ <td align="left">rgb(248, 248, 255)</td>
+ <td align="left">#F8F8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">lavender</td>
+ <td align="center" style="background-color:rgb(230, 230, 250)">lavender</td>
+ <td align="left">rgb(230, 230, 250)</td>
+ <td align="left">#E6E6FA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 255)">blue</td>
+ <td align="left">rgb( 0, 0, 255)</td>
+ <td align="left">#0000FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue1</td>
+ <td align="center" style="background-color:rgb( 0, 0, 255)">blue1</td>
+ <td align="left">rgb( 0, 0, 255)</td>
+ <td align="left">#0000FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue2</td>
+ <td align="center" style="background-color:rgb( 0, 0, 238)">blue2</td>
+ <td align="left">rgb( 0, 0, 238)</td>
+ <td align="left">#0000EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue3</td>
+ <td align="center" style="background-color:rgb( 0, 0, 205)">blue3</td>
+ <td align="left">rgb( 0, 0, 205)</td>
+ <td align="left">#0000CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 205)">MediumBlue</td>
+ <td align="left">rgb( 0, 0, 205)</td>
+ <td align="left">#0000CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue4</td>
+ <td align="center" style="background-color:rgb( 0, 0, 139)">blue4</td>
+ <td align="left">rgb( 0, 0, 139)</td>
+ <td align="left">#00008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 139)">DarkBlue</td>
+ <td align="left">rgb( 0, 0, 139)</td>
+ <td align="left">#00008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MidnightBlue</td>
+ <td align="center" style="background-color:rgb( 25, 25, 112)">MidnightBlue</td>
+ <td align="left">rgb( 25, 25, 112)</td>
+ <td align="left">#191970</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">navy</td>
+ <td align="center" style="background-color:rgb( 0, 0, 128)">navy</td>
+ <td align="left">rgb( 0, 0, 128)</td>
+ <td align="left">#000080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavyBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 128)">NavyBlue</td>
+ <td align="left">rgb( 0, 0, 128)</td>
+ <td align="left">#000080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue</td>
+ <td align="center" style="background-color:rgb( 65, 105, 225)">RoyalBlue</td>
+ <td align="left">rgb( 65, 105, 225)</td>
+ <td align="left">#4169E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue1</td>
+ <td align="center" style="background-color:rgb( 72, 118, 255)">RoyalBlue1</td>
+ <td align="left">rgb( 72, 118, 255)</td>
+ <td align="left">#4876FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue2</td>
+ <td align="center" style="background-color:rgb( 67, 110, 238)">RoyalBlue2</td>
+ <td align="left">rgb( 67, 110, 238)</td>
+ <td align="left">#436EEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue3</td>
+ <td align="center" style="background-color:rgb( 58, 95, 205)">RoyalBlue3</td>
+ <td align="left">rgb( 58, 95, 205)</td>
+ <td align="left">#3A5FCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue4</td>
+ <td align="center" style="background-color:rgb( 39, 64, 139)">RoyalBlue4</td>
+ <td align="left">rgb( 39, 64, 139)</td>
+ <td align="left">#27408B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CornflowerBlue</td>
+ <td align="center" style="background-color:rgb(100, 149, 237)">CornflowerBlue</td>
+ <td align="left">rgb(100, 149, 237)</td>
+ <td align="left">#6495ED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue</td>
+ <td align="center" style="background-color:rgb(176, 196, 222)">LightSteelBlue</td>
+ <td align="left">rgb(176, 196, 222)</td>
+ <td align="left">#B0C4DE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue1</td>
+ <td align="center" style="background-color:rgb(202, 225, 255)">LightSteelBlue1</td>
+ <td align="left">rgb(202, 225, 255)</td>
+ <td align="left">#CAE1FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue2</td>
+ <td align="center" style="background-color:rgb(188, 210, 238)">LightSteelBlue2</td>
+ <td align="left">rgb(188, 210, 238)</td>
+ <td align="left">#BCD2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue3</td>
+ <td align="center" style="background-color:rgb(162, 181, 205)">LightSteelBlue3</td>
+ <td align="left">rgb(162, 181, 205)</td>
+ <td align="left">#A2B5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue4</td>
+ <td align="center" style="background-color:rgb(110, 123, 139)">LightSteelBlue4</td>
+ <td align="left">rgb(110, 123, 139)</td>
+ <td align="left">#6E7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray4</td>
+ <td align="center" style="background-color:rgb(108, 123, 139)">SlateGray4</td>
+ <td align="left">rgb(108, 123, 139)</td>
+ <td align="left">#6C7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray1</td>
+ <td align="center" style="background-color:rgb(198, 226, 255)">SlateGray1</td>
+ <td align="left">rgb(198, 226, 255)</td>
+ <td align="left">#C6E2FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray2</td>
+ <td align="center" style="background-color:rgb(185, 211, 238)">SlateGray2</td>
+ <td align="left">rgb(185, 211, 238)</td>
+ <td align="left">#B9D3EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray3</td>
+ <td align="center" style="background-color:rgb(159, 182, 205)">SlateGray3</td>
+ <td align="left">rgb(159, 182, 205)</td>
+ <td align="left">#9FB6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateGray</td>
+ <td align="center" style="background-color:rgb(119, 136, 153)">LightSlateGray</td>
+ <td align="left">rgb(119, 136, 153)</td>
+ <td align="left">#778899</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateGrey</td>
+ <td align="center" style="background-color:rgb(119, 136, 153)">LightSlateGrey</td>
+ <td align="left">rgb(119, 136, 153)</td>
+ <td align="left">#778899</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray</td>
+ <td align="center" style="background-color:rgb(112, 128, 144)">SlateGray</td>
+ <td align="left">rgb(112, 128, 144)</td>
+ <td align="left">#708090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGrey</td>
+ <td align="center" style="background-color:rgb(112, 128, 144)">SlateGrey</td>
+ <td align="left">rgb(112, 128, 144)</td>
+ <td align="left">#708090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue</td>
+ <td align="center" style="background-color:rgb( 30, 144, 255)">DodgerBlue</td>
+ <td align="left">rgb( 30, 144, 255)</td>
+ <td align="left">#1E90FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue1</td>
+ <td align="center" style="background-color:rgb( 30, 144, 255)">DodgerBlue1</td>
+ <td align="left">rgb( 30, 144, 255)</td>
+ <td align="left">#1E90FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue2</td>
+ <td align="center" style="background-color:rgb( 28, 134, 238)">DodgerBlue2</td>
+ <td align="left">rgb( 28, 134, 238)</td>
+ <td align="left">#1C86EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue4</td>
+ <td align="center" style="background-color:rgb( 16, 78, 139)">DodgerBlue4</td>
+ <td align="left">rgb( 16, 78, 139)</td>
+ <td align="left">#104E8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue3</td>
+ <td align="center" style="background-color:rgb( 24, 116, 205)">DodgerBlue3</td>
+ <td align="left">rgb( 24, 116, 205)</td>
+ <td align="left">#1874CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AliceBlue</td>
+ <td align="center" style="background-color:rgb(240, 248, 255)">AliceBlue</td>
+ <td align="left">rgb(240, 248, 255)</td>
+ <td align="left">#F0F8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue4</td>
+ <td align="center" style="background-color:rgb( 54, 100, 139)">SteelBlue4</td>
+ <td align="left">rgb( 54, 100, 139)</td>
+ <td align="left">#36648B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue</td>
+ <td align="center" style="background-color:rgb( 70, 130, 180)">SteelBlue</td>
+ <td align="left">rgb( 70, 130, 180)</td>
+ <td align="left">#4682B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue1</td>
+ <td align="center" style="background-color:rgb( 99, 184, 255)">SteelBlue1</td>
+ <td align="left">rgb( 99, 184, 255)</td>
+ <td align="left">#63B8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue2</td>
+ <td align="center" style="background-color:rgb( 92, 172, 238)">SteelBlue2</td>
+ <td align="left">rgb( 92, 172, 238)</td>
+ <td align="left">#5CACEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue3</td>
+ <td align="center" style="background-color:rgb( 79, 148, 205)">SteelBlue3</td>
+ <td align="left">rgb( 79, 148, 205)</td>
+ <td align="left">#4F94CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue4</td>
+ <td align="center" style="background-color:rgb( 74, 112, 139)">SkyBlue4</td>
+ <td align="left">rgb( 74, 112, 139)</td>
+ <td align="left">#4A708B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue1</td>
+ <td align="center" style="background-color:rgb(135, 206, 255)">SkyBlue1</td>
+ <td align="left">rgb(135, 206, 255)</td>
+ <td align="left">#87CEFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue2</td>
+ <td align="center" style="background-color:rgb(126, 192, 238)">SkyBlue2</td>
+ <td align="left">rgb(126, 192, 238)</td>
+ <td align="left">#7EC0EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue3</td>
+ <td align="center" style="background-color:rgb(108, 166, 205)">SkyBlue3</td>
+ <td align="left">rgb(108, 166, 205)</td>
+ <td align="left">#6CA6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue</td>
+ <td align="center" style="background-color:rgb(135, 206, 250)">LightSkyBlue</td>
+ <td align="left">rgb(135, 206, 250)</td>
+ <td align="left">#87CEFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue4</td>
+ <td align="center" style="background-color:rgb( 96, 123, 139)">LightSkyBlue4</td>
+ <td align="left">rgb( 96, 123, 139)</td>
+ <td align="left">#607B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue1</td>
+ <td align="center" style="background-color:rgb(176, 226, 255)">LightSkyBlue1</td>
+ <td align="left">rgb(176, 226, 255)</td>
+ <td align="left">#B0E2FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue2</td>
+ <td align="center" style="background-color:rgb(164, 211, 238)">LightSkyBlue2</td>
+ <td align="left">rgb(164, 211, 238)</td>
+ <td align="left">#A4D3EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue3</td>
+ <td align="center" style="background-color:rgb(141, 182, 205)">LightSkyBlue3</td>
+ <td align="left">rgb(141, 182, 205)</td>
+ <td align="left">#8DB6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue</td>
+ <td align="center" style="background-color:rgb(135, 206, 235)">SkyBlue</td>
+ <td align="left">rgb(135, 206, 235)</td>
+ <td align="left">#87CEEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue3</td>
+ <td align="center" style="background-color:rgb(154, 192, 205)">LightBlue3</td>
+ <td align="left">rgb(154, 192, 205)</td>
+ <td align="left">#9AC0CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue</td>
+ <td align="center" style="background-color:rgb( 0, 191, 255)">DeepSkyBlue</td>
+ <td align="left">rgb( 0, 191, 255)</td>
+ <td align="left">#00BFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue1</td>
+ <td align="center" style="background-color:rgb( 0, 191, 255)">DeepSkyBlue1</td>
+ <td align="left">rgb( 0, 191, 255)</td>
+ <td align="left">#00BFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue2</td>
+ <td align="center" style="background-color:rgb( 0, 178, 238)">DeepSkyBlue2</td>
+ <td align="left">rgb( 0, 178, 238)</td>
+ <td align="left">#00B2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue4</td>
+ <td align="center" style="background-color:rgb( 0, 104, 139)">DeepSkyBlue4</td>
+ <td align="left">rgb( 0, 104, 139)</td>
+ <td align="left">#00688B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue3</td>
+ <td align="center" style="background-color:rgb( 0, 154, 205)">DeepSkyBlue3</td>
+ <td align="left">rgb( 0, 154, 205)</td>
+ <td align="left">#009ACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue1</td>
+ <td align="center" style="background-color:rgb(191, 239, 255)">LightBlue1</td>
+ <td align="left">rgb(191, 239, 255)</td>
+ <td align="left">#BFEFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue2</td>
+ <td align="center" style="background-color:rgb(178, 223, 238)">LightBlue2</td>
+ <td align="left">rgb(178, 223, 238)</td>
+ <td align="left">#B2DFEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue</td>
+ <td align="center" style="background-color:rgb(173, 216, 230)">LightBlue</td>
+ <td align="left">rgb(173, 216, 230)</td>
+ <td align="left">#ADD8E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue4</td>
+ <td align="center" style="background-color:rgb(104, 131, 139)">LightBlue4</td>
+ <td align="left">rgb(104, 131, 139)</td>
+ <td align="left">#68838B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PowderBlue</td>
+ <td align="center" style="background-color:rgb(176, 224, 230)">PowderBlue</td>
+ <td align="left">rgb(176, 224, 230)</td>
+ <td align="left">#B0E0E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue1</td>
+ <td align="center" style="background-color:rgb(152, 245, 255)">CadetBlue1</td>
+ <td align="left">rgb(152, 245, 255)</td>
+ <td align="left">#98F5FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue2</td>
+ <td align="center" style="background-color:rgb(142, 229, 238)">CadetBlue2</td>
+ <td align="left">rgb(142, 229, 238)</td>
+ <td align="left">#8EE5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue3</td>
+ <td align="center" style="background-color:rgb(122, 197, 205)">CadetBlue3</td>
+ <td align="left">rgb(122, 197, 205)</td>
+ <td align="left">#7AC5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue4</td>
+ <td align="center" style="background-color:rgb( 83, 134, 139)">CadetBlue4</td>
+ <td align="left">rgb( 83, 134, 139)</td>
+ <td align="left">#53868B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise1</td>
+ <td align="center" style="background-color:rgb( 0, 245, 255)">turquoise1</td>
+ <td align="left">rgb( 0, 245, 255)</td>
+ <td align="left">#00F5FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise2</td>
+ <td align="center" style="background-color:rgb( 0, 229, 238)">turquoise2</td>
+ <td align="left">rgb( 0, 229, 238)</td>
+ <td align="left">#00E5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise3</td>
+ <td align="center" style="background-color:rgb( 0, 197, 205)">turquoise3</td>
+ <td align="left">rgb( 0, 197, 205)</td>
+ <td align="left">#00C5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise4</td>
+ <td align="center" style="background-color:rgb( 0, 134, 139)">turquoise4</td>
+ <td align="left">rgb( 0, 134, 139)</td>
+ <td align="left">#00868B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cadet blue</td>
+ <td align="center" style="background-color:rgb( 95, 158, 160)">cadet blue</td>
+ <td align="left">rgb( 95, 158, 160)</td>
+ <td align="left">#5F9EA0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue</td>
+ <td align="center" style="background-color:rgb( 95, 158, 160)">CadetBlue</td>
+ <td align="left">rgb( 95, 158, 160)</td>
+ <td align="left">#5F9EA0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkTurquoise</td>
+ <td align="center" style="background-color:rgb( 0, 206, 209)">DarkTurquoise</td>
+ <td align="left">rgb( 0, 206, 209)</td>
+ <td align="left">#00CED1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure</td>
+ <td align="center" style="background-color:rgb(240, 255, 255)">azure</td>
+ <td align="left">rgb(240, 255, 255)</td>
+ <td align="left">#F0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure1</td>
+ <td align="center" style="background-color:rgb(240, 255, 255)">azure1</td>
+ <td align="left">rgb(240, 255, 255)</td>
+ <td align="left">#F0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan</td>
+ <td align="center" style="background-color:rgb(224, 255, 255)">LightCyan</td>
+ <td align="left">rgb(224, 255, 255)</td>
+ <td align="left">#E0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan1</td>
+ <td align="center" style="background-color:rgb(224, 255, 255)">LightCyan1</td>
+ <td align="left">rgb(224, 255, 255)</td>
+ <td align="left">#E0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure2</td>
+ <td align="center" style="background-color:rgb(224, 238, 238)">azure2</td>
+ <td align="left">rgb(224, 238, 238)</td>
+ <td align="left">#E0EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan2</td>
+ <td align="center" style="background-color:rgb(209, 238, 238)">LightCyan2</td>
+ <td align="left">rgb(209, 238, 238)</td>
+ <td align="left">#D1EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise1</td>
+ <td align="center" style="background-color:rgb(187, 255, 255)">PaleTurquoise1</td>
+ <td align="left">rgb(187, 255, 255)</td>
+ <td align="left">#BBFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise</td>
+ <td align="center" style="background-color:rgb(175, 238, 238)">PaleTurquoise</td>
+ <td align="left">rgb(175, 238, 238)</td>
+ <td align="left">#AFEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise2</td>
+ <td align="center" style="background-color:rgb(174, 238, 238)">PaleTurquoise2</td>
+ <td align="left">rgb(174, 238, 238)</td>
+ <td align="left">#AEEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray1</td>
+ <td align="center" style="background-color:rgb(151, 255, 255)">DarkSlateGray1</td>
+ <td align="left">rgb(151, 255, 255)</td>
+ <td align="left">#97FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure3</td>
+ <td align="center" style="background-color:rgb(193, 205, 205)">azure3</td>
+ <td align="left">rgb(193, 205, 205)</td>
+ <td align="left">#C1CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan3</td>
+ <td align="center" style="background-color:rgb(180, 205, 205)">LightCyan3</td>
+ <td align="left">rgb(180, 205, 205)</td>
+ <td align="left">#B4CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray2</td>
+ <td align="center" style="background-color:rgb(141, 238, 238)">DarkSlateGray2</td>
+ <td align="left">rgb(141, 238, 238)</td>
+ <td align="left">#8DEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise3</td>
+ <td align="center" style="background-color:rgb(150, 205, 205)">PaleTurquoise3</td>
+ <td align="left">rgb(150, 205, 205)</td>
+ <td align="left">#96CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray3</td>
+ <td align="center" style="background-color:rgb(121, 205, 205)">DarkSlateGray3</td>
+ <td align="left">rgb(121, 205, 205)</td>
+ <td align="left">#79CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure4</td>
+ <td align="center" style="background-color:rgb(131, 139, 139)">azure4</td>
+ <td align="left">rgb(131, 139, 139)</td>
+ <td align="left">#838B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan4</td>
+ <td align="center" style="background-color:rgb(122, 139, 139)">LightCyan4</td>
+ <td align="left">rgb(122, 139, 139)</td>
+ <td align="left">#7A8B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aqua</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">aqua</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">cyan</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">cyan1</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise4</td>
+ <td align="center" style="background-color:rgb(102, 139, 139)">PaleTurquoise4</td>
+ <td align="left">rgb(102, 139, 139)</td>
+ <td align="left">#668B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 238)">cyan2</td>
+ <td align="left">rgb( 0, 238, 238)</td>
+ <td align="left">#00EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray4</td>
+ <td align="center" style="background-color:rgb( 82, 139, 139)">DarkSlateGray4</td>
+ <td align="left">rgb( 82, 139, 139)</td>
+ <td align="left">#528B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 205)">cyan3</td>
+ <td align="left">rgb( 0, 205, 205)</td>
+ <td align="left">#00CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 139)">cyan4</td>
+ <td align="left">rgb( 0, 139, 139)</td>
+ <td align="left">#008B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkCyan</td>
+ <td align="center" style="background-color:rgb( 0, 139, 139)">DarkCyan</td>
+ <td align="left">rgb( 0, 139, 139)</td>
+ <td align="left">#008B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">teal</td>
+ <td align="center" style="background-color:rgb( 0, 128, 128)">teal</td>
+ <td align="left">rgb( 0, 128, 128)</td>
+ <td align="left">#008080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray</td>
+ <td align="center" style="background-color:rgb( 47, 79, 79)">DarkSlateGray</td>
+ <td align="left">rgb( 47, 79, 79)</td>
+ <td align="left">#2F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGrey</td>
+ <td align="center" style="background-color:rgb( 47, 79, 79)">DarkSlateGrey</td>
+ <td align="left">rgb( 47, 79, 79)</td>
+ <td align="left">#2F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumTurquoise</td>
+ <td align="center" style="background-color:rgb( 72, 209, 204)">MediumTurquoise</td>
+ <td align="left">rgb( 72, 209, 204)</td>
+ <td align="left">#48D1CC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSeaGreen</td>
+ <td align="center" style="background-color:rgb( 32, 178, 170)">LightSeaGreen</td>
+ <td align="left">rgb( 32, 178, 170)</td>
+ <td align="left">#20B2AA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise</td>
+ <td align="center" style="background-color:rgb( 64, 224, 208)">turquoise</td>
+ <td align="left">rgb( 64, 224, 208)</td>
+ <td align="left">#40E0D0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine4</td>
+ <td align="center" style="background-color:rgb( 69, 139, 116)">aquamarine4</td>
+ <td align="left">rgb( 69, 139, 116)</td>
+ <td align="left">#458B74</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine</td>
+ <td align="center" style="background-color:rgb(127, 255, 212)">aquamarine</td>
+ <td align="left">rgb(127, 255, 212)</td>
+ <td align="left">#7FFFD4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine1</td>
+ <td align="center" style="background-color:rgb(127, 255, 212)">aquamarine1</td>
+ <td align="left">rgb(127, 255, 212)</td>
+ <td align="left">#7FFFD4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine2</td>
+ <td align="center" style="background-color:rgb(118, 238, 198)">aquamarine2</td>
+ <td align="left">rgb(118, 238, 198)</td>
+ <td align="left">#76EEC6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine3</td>
+ <td align="center" style="background-color:rgb(102, 205, 170)">aquamarine3</td>
+ <td align="left">rgb(102, 205, 170)</td>
+ <td align="left">#66CDAA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumAquamarine</td>
+ <td align="center" style="background-color:rgb(102, 205, 170)">MediumAquamarine</td>
+ <td align="left">rgb(102, 205, 170)</td>
+ <td align="left">#66CDAA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSpringGreen</td>
+ <td align="center" style="background-color:rgb( 0, 250, 154)">MediumSpringGreen</td>
+ <td align="left">rgb( 0, 250, 154)</td>
+ <td align="left">#00FA9A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MintCream</td>
+ <td align="center" style="background-color:rgb(245, 255, 250)">MintCream</td>
+ <td align="left">rgb(245, 255, 250)</td>
+ <td align="left">#F5FFFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen</td>
+ <td align="center" style="background-color:rgb( 0, 255, 127)">SpringGreen</td>
+ <td align="left">rgb( 0, 255, 127)</td>
+ <td align="left">#00FF7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 127)">SpringGreen1</td>
+ <td align="left">rgb( 0, 255, 127)</td>
+ <td align="left">#00FF7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 118)">SpringGreen2</td>
+ <td align="left">rgb( 0, 238, 118)</td>
+ <td align="left">#00EE76</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 102)">SpringGreen3</td>
+ <td align="left">rgb( 0, 205, 102)</td>
+ <td align="left">#00CD66</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 69)">SpringGreen4</td>
+ <td align="left">rgb( 0, 139, 69)</td>
+ <td align="left">#008B45</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSeaGreen</td>
+ <td align="center" style="background-color:rgb( 60, 179, 113)">MediumSeaGreen</td>
+ <td align="left">rgb( 60, 179, 113)</td>
+ <td align="left">#3CB371</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen</td>
+ <td align="center" style="background-color:rgb( 46, 139, 87)">SeaGreen</td>
+ <td align="left">rgb( 46, 139, 87)</td>
+ <td align="left">#2E8B57</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen3</td>
+ <td align="center" style="background-color:rgb( 67, 205, 128)">SeaGreen3</td>
+ <td align="left">rgb( 67, 205, 128)</td>
+ <td align="left">#43CD80</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen1</td>
+ <td align="center" style="background-color:rgb( 84, 255, 159)">SeaGreen1</td>
+ <td align="left">rgb( 84, 255, 159)</td>
+ <td align="left">#54FF9F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen4</td>
+ <td align="center" style="background-color:rgb( 46, 139, 87)">SeaGreen4</td>
+ <td align="left">rgb( 46, 139, 87)</td>
+ <td align="left">#2E8B57</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen2</td>
+ <td align="center" style="background-color:rgb( 78, 238, 148)">SeaGreen2</td>
+ <td align="left">rgb( 78, 238, 148)</td>
+ <td align="left">#4EEE94</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumForestGreen</td>
+ <td align="center" style="background-color:rgb( 50, 129, 75)">MediumForestGreen</td>
+ <td align="left">rgb( 50, 129, 75)</td>
+ <td align="left">#32814B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew</td>
+ <td align="center" style="background-color:rgb(240, 255, 240)">honeydew</td>
+ <td align="left">rgb(240, 255, 240)</td>
+ <td align="left">#F0FFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew1</td>
+ <td align="center" style="background-color:rgb(240, 255, 240)">honeydew1</td>
+ <td align="left">rgb(240, 255, 240)</td>
+ <td align="left">#F0FFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew2</td>
+ <td align="center" style="background-color:rgb(224, 238, 224)">honeydew2</td>
+ <td align="left">rgb(224, 238, 224)</td>
+ <td align="left">#E0EEE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen1</td>
+ <td align="center" style="background-color:rgb(193, 255, 193)">DarkSeaGreen1</td>
+ <td align="left">rgb(193, 255, 193)</td>
+ <td align="left">#C1FFC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen2</td>
+ <td align="center" style="background-color:rgb(180, 238, 180)">DarkSeaGreen2</td>
+ <td align="left">rgb(180, 238, 180)</td>
+ <td align="left">#B4EEB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen1</td>
+ <td align="center" style="background-color:rgb(154, 255, 154)">PaleGreen1</td>
+ <td align="left">rgb(154, 255, 154)</td>
+ <td align="left">#9AFF9A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen</td>
+ <td align="center" style="background-color:rgb(152, 251, 152)">PaleGreen</td>
+ <td align="left">rgb(152, 251, 152)</td>
+ <td align="left">#98FB98</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew3</td>
+ <td align="center" style="background-color:rgb(193, 205, 193)">honeydew3</td>
+ <td align="left">rgb(193, 205, 193)</td>
+ <td align="left">#C1CDC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGreen</td>
+ <td align="center" style="background-color:rgb(144, 238, 144)">LightGreen</td>
+ <td align="left">rgb(144, 238, 144)</td>
+ <td align="left">#90EE90</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen2</td>
+ <td align="center" style="background-color:rgb(144, 238, 144)">PaleGreen2</td>
+ <td align="left">rgb(144, 238, 144)</td>
+ <td align="left">#90EE90</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen3</td>
+ <td align="center" style="background-color:rgb(155, 205, 155)">DarkSeaGreen3</td>
+ <td align="left">rgb(155, 205, 155)</td>
+ <td align="left">#9BCD9B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen</td>
+ <td align="center" style="background-color:rgb(143, 188, 143)">DarkSeaGreen</td>
+ <td align="left">rgb(143, 188, 143)</td>
+ <td align="left">#8FBC8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen3</td>
+ <td align="center" style="background-color:rgb(124, 205, 124)">PaleGreen3</td>
+ <td align="left">rgb(124, 205, 124)</td>
+ <td align="left">#7CCD7C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew4</td>
+ <td align="center" style="background-color:rgb(131, 139, 131)">honeydew4</td>
+ <td align="left">rgb(131, 139, 131)</td>
+ <td align="left">#838B83</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 0)">green1</td>
+ <td align="left">rgb( 0, 255, 0)</td>
+ <td align="left">#00FF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">lime</td>
+ <td align="center" style="background-color:rgb( 0, 255, 0)">lime</td>
+ <td align="left">rgb( 0, 255, 0)</td>
+ <td align="left">#00FF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LimeGreen</td>
+ <td align="center" style="background-color:rgb( 50, 205, 50)">LimeGreen</td>
+ <td align="left">rgb( 50, 205, 50)</td>
+ <td align="left">#32CD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen4</td>
+ <td align="center" style="background-color:rgb(105, 139, 105)">DarkSeaGreen4</td>
+ <td align="left">rgb(105, 139, 105)</td>
+ <td align="left">#698B69</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 0)">green2</td>
+ <td align="left">rgb( 0, 238, 0)</td>
+ <td align="left">#00EE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen4</td>
+ <td align="center" style="background-color:rgb( 84, 139, 84)">PaleGreen4</td>
+ <td align="left">rgb( 84, 139, 84)</td>
+ <td align="left">#548B54</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 0)">green3</td>
+ <td align="left">rgb( 0, 205, 0)</td>
+ <td align="left">#00CD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ForestGreen</td>
+ <td align="center" style="background-color:rgb( 34, 139, 34)">ForestGreen</td>
+ <td align="left">rgb( 34, 139, 34)</td>
+ <td align="left">#228B22</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 0)">green4</td>
+ <td align="left">rgb( 0, 139, 0)</td>
+ <td align="left">#008B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green</td>
+ <td align="center" style="background-color:rgb( 0, 128, 0)">green</td>
+ <td align="left">rgb( 0, 128, 0)</td>
+ <td align="left">#008000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGreen</td>
+ <td align="center" style="background-color:rgb( 0, 100, 0)">DarkGreen</td>
+ <td align="left">rgb( 0, 100, 0)</td>
+ <td align="left">#006400</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LawnGreen</td>
+ <td align="center" style="background-color:rgb(124, 252, 0)">LawnGreen</td>
+ <td align="left">rgb(124, 252, 0)</td>
+ <td align="left">#7CFC00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse</td>
+ <td align="center" style="background-color:rgb(127, 255, 0)">chartreuse</td>
+ <td align="left">rgb(127, 255, 0)</td>
+ <td align="left">#7FFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse1</td>
+ <td align="center" style="background-color:rgb(127, 255, 0)">chartreuse1</td>
+ <td align="left">rgb(127, 255, 0)</td>
+ <td align="left">#7FFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse2</td>
+ <td align="center" style="background-color:rgb(118, 238, 0)">chartreuse2</td>
+ <td align="left">rgb(118, 238, 0)</td>
+ <td align="left">#76EE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse3</td>
+ <td align="center" style="background-color:rgb(102, 205, 0)">chartreuse3</td>
+ <td align="left">rgb(102, 205, 0)</td>
+ <td align="left">#66CD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse4</td>
+ <td align="center" style="background-color:rgb( 69, 139, 0)">chartreuse4</td>
+ <td align="left">rgb( 69, 139, 0)</td>
+ <td align="left">#458B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">GreenYellow</td>
+ <td align="center" style="background-color:rgb(173, 255, 47)">GreenYellow</td>
+ <td align="left">rgb(173, 255, 47)</td>
+ <td align="left">#ADFF2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen3</td>
+ <td align="center" style="background-color:rgb(162, 205, 90)">DarkOliveGreen3</td>
+ <td align="left">rgb(162, 205, 90)</td>
+ <td align="left">#A2CD5A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen1</td>
+ <td align="center" style="background-color:rgb(202, 255, 112)">DarkOliveGreen1</td>
+ <td align="left">rgb(202, 255, 112)</td>
+ <td align="left">#CAFF70</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen2</td>
+ <td align="center" style="background-color:rgb(188, 238, 104)">DarkOliveGreen2</td>
+ <td align="left">rgb(188, 238, 104)</td>
+ <td align="left">#BCEE68</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen4</td>
+ <td align="center" style="background-color:rgb(110, 139, 61)">DarkOliveGreen4</td>
+ <td align="left">rgb(110, 139, 61)</td>
+ <td align="left">#6E8B3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen</td>
+ <td align="center" style="background-color:rgb( 85, 107, 47)">DarkOliveGreen</td>
+ <td align="left">rgb( 85, 107, 47)</td>
+ <td align="left">#556B2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab</td>
+ <td align="center" style="background-color:rgb(107, 142, 35)">OliveDrab</td>
+ <td align="left">rgb(107, 142, 35)</td>
+ <td align="left">#6B8E23</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab1</td>
+ <td align="center" style="background-color:rgb(192, 255, 62)">OliveDrab1</td>
+ <td align="left">rgb(192, 255, 62)</td>
+ <td align="left">#C0FF3E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab2</td>
+ <td align="center" style="background-color:rgb(179, 238, 58)">OliveDrab2</td>
+ <td align="left">rgb(179, 238, 58)</td>
+ <td align="left">#B3EE3A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab3</td>
+ <td align="center" style="background-color:rgb(154, 205, 50)">OliveDrab3</td>
+ <td align="left">rgb(154, 205, 50)</td>
+ <td align="left">#9ACD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">YellowGreen</td>
+ <td align="center" style="background-color:rgb(154, 205, 50)">YellowGreen</td>
+ <td align="left">rgb(154, 205, 50)</td>
+ <td align="left">#9ACD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab4</td>
+ <td align="center" style="background-color:rgb(105, 139, 34)">OliveDrab4</td>
+ <td align="left">rgb(105, 139, 34)</td>
+ <td align="left">#698B22</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory</td>
+ <td align="center" style="background-color:rgb(255, 255, 240)">ivory</td>
+ <td align="left">rgb(255, 255, 240)</td>
+ <td align="left">#FFFFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory1</td>
+ <td align="center" style="background-color:rgb(255, 255, 240)">ivory1</td>
+ <td align="left">rgb(255, 255, 240)</td>
+ <td align="left">#FFFFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow</td>
+ <td align="center" style="background-color:rgb(255, 255, 224)">LightYellow</td>
+ <td align="left">rgb(255, 255, 224)</td>
+ <td align="left">#FFFFE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow1</td>
+ <td align="center" style="background-color:rgb(255, 255, 224)">LightYellow1</td>
+ <td align="left">rgb(255, 255, 224)</td>
+ <td align="left">#FFFFE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">beige</td>
+ <td align="center" style="background-color:rgb(245, 245, 220)">beige</td>
+ <td align="left">rgb(245, 245, 220)</td>
+ <td align="left">#F5F5DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory2</td>
+ <td align="center" style="background-color:rgb(238, 238, 224)">ivory2</td>
+ <td align="left">rgb(238, 238, 224)</td>
+ <td align="left">#EEEEE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrodYellow</td>
+ <td align="center" style="background-color:rgb(250, 250, 210)">LightGoldenrodYellow</td>
+ <td align="left">rgb(250, 250, 210)</td>
+ <td align="left">#FAFAD2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow2</td>
+ <td align="center" style="background-color:rgb(238, 238, 209)">LightYellow2</td>
+ <td align="left">rgb(238, 238, 209)</td>
+ <td align="left">#EEEED1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory3</td>
+ <td align="center" style="background-color:rgb(205, 205, 193)">ivory3</td>
+ <td align="left">rgb(205, 205, 193)</td>
+ <td align="left">#CDCDC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow3</td>
+ <td align="center" style="background-color:rgb(205, 205, 180)">LightYellow3</td>
+ <td align="left">rgb(205, 205, 180)</td>
+ <td align="left">#CDCDB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory4</td>
+ <td align="center" style="background-color:rgb(139, 139, 131)">ivory4</td>
+ <td align="left">rgb(139, 139, 131)</td>
+ <td align="left">#8B8B83</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow4</td>
+ <td align="center" style="background-color:rgb(139, 139, 122)">LightYellow4</td>
+ <td align="left">rgb(139, 139, 122)</td>
+ <td align="left">#8B8B7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow</td>
+ <td align="center" style="background-color:rgb(255, 255, 0)">yellow</td>
+ <td align="left">rgb(255, 255, 0)</td>
+ <td align="left">#FFFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow1</td>
+ <td align="center" style="background-color:rgb(255, 255, 0)">yellow1</td>
+ <td align="left">rgb(255, 255, 0)</td>
+ <td align="left">#FFFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow2</td>
+ <td align="center" style="background-color:rgb(238, 238, 0)">yellow2</td>
+ <td align="left">rgb(238, 238, 0)</td>
+ <td align="left">#EEEE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow3</td>
+ <td align="center" style="background-color:rgb(205, 205, 0)">yellow3</td>
+ <td align="left">rgb(205, 205, 0)</td>
+ <td align="left">#CDCD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow4</td>
+ <td align="center" style="background-color:rgb(139, 139, 0)">yellow4</td>
+ <td align="left">rgb(139, 139, 0)</td>
+ <td align="left">#8B8B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">olive</td>
+ <td align="center" style="background-color:rgb(128, 128, 0)">olive</td>
+ <td align="left">rgb(128, 128, 0)</td>
+ <td align="left">#808000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkKhaki</td>
+ <td align="center" style="background-color:rgb(189, 183, 107)">DarkKhaki</td>
+ <td align="left">rgb(189, 183, 107)</td>
+ <td align="left">#BDB76B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki2</td>
+ <td align="center" style="background-color:rgb(238, 230, 133)">khaki2</td>
+ <td align="left">rgb(238, 230, 133)</td>
+ <td align="left">#EEE685</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon4</td>
+ <td align="center" style="background-color:rgb(139, 137, 112)">LemonChiffon4</td>
+ <td align="left">rgb(139, 137, 112)</td>
+ <td align="left">#8B8970</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki1</td>
+ <td align="center" style="background-color:rgb(255, 246, 143)">khaki1</td>
+ <td align="left">rgb(255, 246, 143)</td>
+ <td align="left">#FFF68F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki3</td>
+ <td align="center" style="background-color:rgb(205, 198, 115)">khaki3</td>
+ <td align="left">rgb(205, 198, 115)</td>
+ <td align="left">#CDC673</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki4</td>
+ <td align="center" style="background-color:rgb(139, 134, 78)">khaki4</td>
+ <td align="left">rgb(139, 134, 78)</td>
+ <td align="left">#8B864E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGoldenrod</td>
+ <td align="center" style="background-color:rgb(238, 232, 170)">PaleGoldenrod</td>
+ <td align="left">rgb(238, 232, 170)</td>
+ <td align="left">#EEE8AA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon</td>
+ <td align="center" style="background-color:rgb(255, 250, 205)">LemonChiffon</td>
+ <td align="left">rgb(255, 250, 205)</td>
+ <td align="left">#FFFACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon1</td>
+ <td align="center" style="background-color:rgb(255, 250, 205)">LemonChiffon1</td>
+ <td align="left">rgb(255, 250, 205)</td>
+ <td align="left">#FFFACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki</td>
+ <td align="center" style="background-color:rgb(240, 230, 140)">khaki</td>
+ <td align="left">rgb(240, 230, 140)</td>
+ <td align="left">#F0E68C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon3</td>
+ <td align="center" style="background-color:rgb(205, 201, 165)">LemonChiffon3</td>
+ <td align="left">rgb(205, 201, 165)</td>
+ <td align="left">#CDC9A5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon2</td>
+ <td align="center" style="background-color:rgb(238, 233, 191)">LemonChiffon2</td>
+ <td align="left">rgb(238, 233, 191)</td>
+ <td align="left">#EEE9BF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumGoldenRod</td>
+ <td align="center" style="background-color:rgb(209, 193, 102)">MediumGoldenRod</td>
+ <td align="left">rgb(209, 193, 102)</td>
+ <td align="left">#D1C166</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk4</td>
+ <td align="center" style="background-color:rgb(139, 136, 120)">cornsilk4</td>
+ <td align="left">rgb(139, 136, 120)</td>
+ <td align="left">#8B8878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold</td>
+ <td align="center" style="background-color:rgb(255, 215, 0)">gold</td>
+ <td align="left">rgb(255, 215, 0)</td>
+ <td align="left">#FFD700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold1</td>
+ <td align="center" style="background-color:rgb(255, 215, 0)">gold1</td>
+ <td align="left">rgb(255, 215, 0)</td>
+ <td align="left">#FFD700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold2</td>
+ <td align="center" style="background-color:rgb(238, 201, 0)">gold2</td>
+ <td align="left">rgb(238, 201, 0)</td>
+ <td align="left">#EEC900</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold3</td>
+ <td align="center" style="background-color:rgb(205, 173, 0)">gold3</td>
+ <td align="left">rgb(205, 173, 0)</td>
+ <td align="left">#CDAD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold4</td>
+ <td align="center" style="background-color:rgb(139, 117, 0)">gold4</td>
+ <td align="left">rgb(139, 117, 0)</td>
+ <td align="left">#8B7500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod</td>
+ <td align="center" style="background-color:rgb(238, 221, 130)">LightGoldenrod</td>
+ <td align="left">rgb(238, 221, 130)</td>
+ <td align="left">#EEDD82</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 129, 76)">LightGoldenrod4</td>
+ <td align="left">rgb(139, 129, 76)</td>
+ <td align="left">#8B814C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 236, 139)">LightGoldenrod1</td>
+ <td align="left">rgb(255, 236, 139)</td>
+ <td align="left">#FFEC8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 190, 112)">LightGoldenrod3</td>
+ <td align="left">rgb(205, 190, 112)</td>
+ <td align="left">#CDBE70</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 220, 130)">LightGoldenrod2</td>
+ <td align="left">rgb(238, 220, 130)</td>
+ <td align="left">#EEDC82</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk3</td>
+ <td align="center" style="background-color:rgb(205, 200, 177)">cornsilk3</td>
+ <td align="left">rgb(205, 200, 177)</td>
+ <td align="left">#CDC8B1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk2</td>
+ <td align="center" style="background-color:rgb(238, 232, 205)">cornsilk2</td>
+ <td align="left">rgb(238, 232, 205)</td>
+ <td align="left">#EEE8CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk</td>
+ <td align="center" style="background-color:rgb(255, 248, 220)">cornsilk</td>
+ <td align="left">rgb(255, 248, 220)</td>
+ <td align="left">#FFF8DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk1</td>
+ <td align="center" style="background-color:rgb(255, 248, 220)">cornsilk1</td>
+ <td align="left">rgb(255, 248, 220)</td>
+ <td align="left">#FFF8DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod</td>
+ <td align="center" style="background-color:rgb(218, 165, 32)">goldenrod</td>
+ <td align="left">rgb(218, 165, 32)</td>
+ <td align="left">#DAA520</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 193, 37)">goldenrod1</td>
+ <td align="left">rgb(255, 193, 37)</td>
+ <td align="left">#FFC125</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 180, 34)">goldenrod2</td>
+ <td align="left">rgb(238, 180, 34)</td>
+ <td align="left">#EEB422</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 155, 29)">goldenrod3</td>
+ <td align="left">rgb(205, 155, 29)</td>
+ <td align="left">#CD9B1D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 105, 20)">goldenrod4</td>
+ <td align="left">rgb(139, 105, 20)</td>
+ <td align="left">#8B6914</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod</td>
+ <td align="center" style="background-color:rgb(184, 134, 11)">DarkGoldenrod</td>
+ <td align="left">rgb(184, 134, 11)</td>
+ <td align="left">#B8860B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 185, 15)">DarkGoldenrod1</td>
+ <td align="left">rgb(255, 185, 15)</td>
+ <td align="left">#FFB90F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 173, 14)">DarkGoldenrod2</td>
+ <td align="left">rgb(238, 173, 14)</td>
+ <td align="left">#EEAD0E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 149, 12)">DarkGoldenrod3</td>
+ <td align="left">rgb(205, 149, 12)</td>
+ <td align="left">#CD950C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 101, 8)">DarkGoldenrod4</td>
+ <td align="left">rgb(139, 101, 8)</td>
+ <td align="left">#8B6508</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">FloralWhite</td>
+ <td align="center" style="background-color:rgb(255, 250, 240)">FloralWhite</td>
+ <td align="left">rgb(255, 250, 240)</td>
+ <td align="left">#FFFAF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat2</td>
+ <td align="center" style="background-color:rgb(238, 216, 174)">wheat2</td>
+ <td align="left">rgb(238, 216, 174)</td>
+ <td align="left">#EED8AE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OldLace</td>
+ <td align="center" style="background-color:rgb(253, 245, 230)">OldLace</td>
+ <td align="left">rgb(253, 245, 230)</td>
+ <td align="left">#FDF5E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat</td>
+ <td align="center" style="background-color:rgb(245, 222, 179)">wheat</td>
+ <td align="left">rgb(245, 222, 179)</td>
+ <td align="left">#F5DEB3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat1</td>
+ <td align="center" style="background-color:rgb(255, 231, 186)">wheat1</td>
+ <td align="left">rgb(255, 231, 186)</td>
+ <td align="left">#FFE7BA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat3</td>
+ <td align="center" style="background-color:rgb(205, 186, 150)">wheat3</td>
+ <td align="left">rgb(205, 186, 150)</td>
+ <td align="left">#CDBA96</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange</td>
+ <td align="center" style="background-color:rgb(255, 165, 0)">orange</td>
+ <td align="left">rgb(255, 165, 0)</td>
+ <td align="left">#FFA500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange1</td>
+ <td align="center" style="background-color:rgb(255, 165, 0)">orange1</td>
+ <td align="left">rgb(255, 165, 0)</td>
+ <td align="left">#FFA500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange2</td>
+ <td align="center" style="background-color:rgb(238, 154, 0)">orange2</td>
+ <td align="left">rgb(238, 154, 0)</td>
+ <td align="left">#EE9A00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange3</td>
+ <td align="center" style="background-color:rgb(205, 133, 0)">orange3</td>
+ <td align="left">rgb(205, 133, 0)</td>
+ <td align="left">#CD8500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange4</td>
+ <td align="center" style="background-color:rgb(139, 90, 0)">orange4</td>
+ <td align="left">rgb(139, 90, 0)</td>
+ <td align="left">#8B5A00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat4</td>
+ <td align="center" style="background-color:rgb(139, 126, 102)">wheat4</td>
+ <td align="left">rgb(139, 126, 102)</td>
+ <td align="left">#8B7E66</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">moccasin</td>
+ <td align="center" style="background-color:rgb(255, 228, 181)">moccasin</td>
+ <td align="left">rgb(255, 228, 181)</td>
+ <td align="left">#FFE4B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PapayaWhip</td>
+ <td align="center" style="background-color:rgb(255, 239, 213)">PapayaWhip</td>
+ <td align="left">rgb(255, 239, 213)</td>
+ <td align="left">#FFEFD5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite3</td>
+ <td align="center" style="background-color:rgb(205, 179, 139)">NavajoWhite3</td>
+ <td align="left">rgb(205, 179, 139)</td>
+ <td align="left">#CDB38B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">BlanchedAlmond</td>
+ <td align="center" style="background-color:rgb(255, 235, 205)">BlanchedAlmond</td>
+ <td align="left">rgb(255, 235, 205)</td>
+ <td align="left">#FFEBCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite</td>
+ <td align="center" style="background-color:rgb(255, 222, 173)">NavajoWhite</td>
+ <td align="left">rgb(255, 222, 173)</td>
+ <td align="left">#FFDEAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite1</td>
+ <td align="center" style="background-color:rgb(255, 222, 173)">NavajoWhite1</td>
+ <td align="left">rgb(255, 222, 173)</td>
+ <td align="left">#FFDEAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite2</td>
+ <td align="center" style="background-color:rgb(238, 207, 161)">NavajoWhite2</td>
+ <td align="left">rgb(238, 207, 161)</td>
+ <td align="left">#EECFA1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite4</td>
+ <td align="center" style="background-color:rgb(139, 121, 94)">NavajoWhite4</td>
+ <td align="left">rgb(139, 121, 94)</td>
+ <td align="left">#8B795E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite4</td>
+ <td align="center" style="background-color:rgb(139, 131, 120)">AntiqueWhite4</td>
+ <td align="left">rgb(139, 131, 120)</td>
+ <td align="left">#8B8378</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite</td>
+ <td align="center" style="background-color:rgb(250, 235, 215)">AntiqueWhite</td>
+ <td align="left">rgb(250, 235, 215)</td>
+ <td align="left">#FAEBD7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan</td>
+ <td align="center" style="background-color:rgb(210, 180, 140)">tan</td>
+ <td align="left">rgb(210, 180, 140)</td>
+ <td align="left">#D2B48C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque4</td>
+ <td align="center" style="background-color:rgb(139, 125, 107)">bisque4</td>
+ <td align="left">rgb(139, 125, 107)</td>
+ <td align="left">#8B7D6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood</td>
+ <td align="center" style="background-color:rgb(222, 184, 135)">burlywood</td>
+ <td align="left">rgb(222, 184, 135)</td>
+ <td align="left">#DEB887</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite2</td>
+ <td align="center" style="background-color:rgb(238, 223, 204)">AntiqueWhite2</td>
+ <td align="left">rgb(238, 223, 204)</td>
+ <td align="left">#EEDFCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood1</td>
+ <td align="center" style="background-color:rgb(255, 211, 155)">burlywood1</td>
+ <td align="left">rgb(255, 211, 155)</td>
+ <td align="left">#FFD39B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood3</td>
+ <td align="center" style="background-color:rgb(205, 170, 125)">burlywood3</td>
+ <td align="left">rgb(205, 170, 125)</td>
+ <td align="left">#CDAA7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood2</td>
+ <td align="center" style="background-color:rgb(238, 197, 145)">burlywood2</td>
+ <td align="left">rgb(238, 197, 145)</td>
+ <td align="left">#EEC591</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite1</td>
+ <td align="center" style="background-color:rgb(255, 239, 219)">AntiqueWhite1</td>
+ <td align="left">rgb(255, 239, 219)</td>
+ <td align="left">#FFEFDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood4</td>
+ <td align="center" style="background-color:rgb(139, 115, 85)">burlywood4</td>
+ <td align="left">rgb(139, 115, 85)</td>
+ <td align="left">#8B7355</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite3</td>
+ <td align="center" style="background-color:rgb(205, 192, 176)">AntiqueWhite3</td>
+ <td align="left">rgb(205, 192, 176)</td>
+ <td align="left">#CDC0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange</td>
+ <td align="center" style="background-color:rgb(255, 140, 0)">DarkOrange</td>
+ <td align="left">rgb(255, 140, 0)</td>
+ <td align="left">#FF8C00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque2</td>
+ <td align="center" style="background-color:rgb(238, 213, 183)">bisque2</td>
+ <td align="left">rgb(238, 213, 183)</td>
+ <td align="left">#EED5B7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque</td>
+ <td align="center" style="background-color:rgb(255, 228, 196)">bisque</td>
+ <td align="left">rgb(255, 228, 196)</td>
+ <td align="left">#FFE4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque1</td>
+ <td align="center" style="background-color:rgb(255, 228, 196)">bisque1</td>
+ <td align="left">rgb(255, 228, 196)</td>
+ <td align="left">#FFE4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque3</td>
+ <td align="center" style="background-color:rgb(205, 183, 158)">bisque3</td>
+ <td align="left">rgb(205, 183, 158)</td>
+ <td align="left">#CDB79E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange1</td>
+ <td align="center" style="background-color:rgb(255, 127, 0)">DarkOrange1</td>
+ <td align="left">rgb(255, 127, 0)</td>
+ <td align="left">#FF7F00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">linen</td>
+ <td align="center" style="background-color:rgb(250, 240, 230)">linen</td>
+ <td align="left">rgb(250, 240, 230)</td>
+ <td align="left">#FAF0E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange2</td>
+ <td align="center" style="background-color:rgb(238, 118, 0)">DarkOrange2</td>
+ <td align="left">rgb(238, 118, 0)</td>
+ <td align="left">#EE7600</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange3</td>
+ <td align="center" style="background-color:rgb(205, 102, 0)">DarkOrange3</td>
+ <td align="left">rgb(205, 102, 0)</td>
+ <td align="left">#CD6600</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange4</td>
+ <td align="center" style="background-color:rgb(139, 69, 0)">DarkOrange4</td>
+ <td align="left">rgb(139, 69, 0)</td>
+ <td align="left">#8B4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">peru</td>
+ <td align="center" style="background-color:rgb(205, 133, 63)">peru</td>
+ <td align="left">rgb(205, 133, 63)</td>
+ <td align="left">#CD853F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan1</td>
+ <td align="center" style="background-color:rgb(255, 165, 79)">tan1</td>
+ <td align="left">rgb(255, 165, 79)</td>
+ <td align="left">#FFA54F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan2</td>
+ <td align="center" style="background-color:rgb(238, 154, 73)">tan2</td>
+ <td align="left">rgb(238, 154, 73)</td>
+ <td align="left">#EE9A49</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan3</td>
+ <td align="center" style="background-color:rgb(205, 133, 63)">tan3</td>
+ <td align="left">rgb(205, 133, 63)</td>
+ <td align="left">#CD853F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan4</td>
+ <td align="center" style="background-color:rgb(139, 90, 43)">tan4</td>
+ <td align="left">rgb(139, 90, 43)</td>
+ <td align="left">#8B5A2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff</td>
+ <td align="center" style="background-color:rgb(255, 218, 185)">PeachPuff</td>
+ <td align="left">rgb(255, 218, 185)</td>
+ <td align="left">#FFDAB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff1</td>
+ <td align="center" style="background-color:rgb(255, 218, 185)">PeachPuff1</td>
+ <td align="left">rgb(255, 218, 185)</td>
+ <td align="left">#FFDAB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff4</td>
+ <td align="center" style="background-color:rgb(139, 119, 101)">PeachPuff4</td>
+ <td align="left">rgb(139, 119, 101)</td>
+ <td align="left">#8B7765</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff2</td>
+ <td align="center" style="background-color:rgb(238, 203, 173)">PeachPuff2</td>
+ <td align="left">rgb(238, 203, 173)</td>
+ <td align="left">#EECBAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff3</td>
+ <td align="center" style="background-color:rgb(205, 175, 149)">PeachPuff3</td>
+ <td align="left">rgb(205, 175, 149)</td>
+ <td align="left">#CDAF95</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SandyBrown</td>
+ <td align="center" style="background-color:rgb(244, 164, 96)">SandyBrown</td>
+ <td align="left">rgb(244, 164, 96)</td>
+ <td align="left">#F4A460</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell4</td>
+ <td align="center" style="background-color:rgb(139, 134, 130)">seashell4</td>
+ <td align="left">rgb(139, 134, 130)</td>
+ <td align="left">#8B8682</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell2</td>
+ <td align="center" style="background-color:rgb(238, 229, 222)">seashell2</td>
+ <td align="left">rgb(238, 229, 222)</td>
+ <td align="left">#EEE5DE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell3</td>
+ <td align="center" style="background-color:rgb(205, 197, 191)">seashell3</td>
+ <td align="left">rgb(205, 197, 191)</td>
+ <td align="left">#CDC5BF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate</td>
+ <td align="center" style="background-color:rgb(210, 105, 30)">chocolate</td>
+ <td align="left">rgb(210, 105, 30)</td>
+ <td align="left">#D2691E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate1</td>
+ <td align="center" style="background-color:rgb(255, 127, 36)">chocolate1</td>
+ <td align="left">rgb(255, 127, 36)</td>
+ <td align="left">#FF7F24</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate2</td>
+ <td align="center" style="background-color:rgb(238, 118, 33)">chocolate2</td>
+ <td align="left">rgb(238, 118, 33)</td>
+ <td align="left">#EE7621</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate3</td>
+ <td align="center" style="background-color:rgb(205, 102, 29)">chocolate3</td>
+ <td align="left">rgb(205, 102, 29)</td>
+ <td align="left">#CD661D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate4</td>
+ <td align="center" style="background-color:rgb(139, 69, 19)">chocolate4</td>
+ <td align="left">rgb(139, 69, 19)</td>
+ <td align="left">#8B4513</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SaddleBrown</td>
+ <td align="center" style="background-color:rgb(139, 69, 19)">SaddleBrown</td>
+ <td align="left">rgb(139, 69, 19)</td>
+ <td align="left">#8B4513</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell</td>
+ <td align="center" style="background-color:rgb(255, 245, 238)">seashell</td>
+ <td align="left">rgb(255, 245, 238)</td>
+ <td align="left">#FFF5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell1</td>
+ <td align="center" style="background-color:rgb(255, 245, 238)">seashell1</td>
+ <td align="left">rgb(255, 245, 238)</td>
+ <td align="left">#FFF5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna4</td>
+ <td align="center" style="background-color:rgb(139, 71, 38)">sienna4</td>
+ <td align="left">rgb(139, 71, 38)</td>
+ <td align="left">#8B4726</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna</td>
+ <td align="center" style="background-color:rgb(160, 82, 45)">sienna</td>
+ <td align="left">rgb(160, 82, 45)</td>
+ <td align="left">#A0522D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna1</td>
+ <td align="center" style="background-color:rgb(255, 130, 71)">sienna1</td>
+ <td align="left">rgb(255, 130, 71)</td>
+ <td align="left">#FF8247</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna2</td>
+ <td align="center" style="background-color:rgb(238, 121, 66)">sienna2</td>
+ <td align="left">rgb(238, 121, 66)</td>
+ <td align="left">#EE7942</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna3</td>
+ <td align="center" style="background-color:rgb(205, 104, 57)">sienna3</td>
+ <td align="left">rgb(205, 104, 57)</td>
+ <td align="left">#CD6839</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon3</td>
+ <td align="center" style="background-color:rgb(205, 129, 98)">LightSalmon3</td>
+ <td align="left">rgb(205, 129, 98)</td>
+ <td align="left">#CD8162</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon</td>
+ <td align="center" style="background-color:rgb(255, 160, 122)">LightSalmon</td>
+ <td align="left">rgb(255, 160, 122)</td>
+ <td align="left">#FFA07A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon1</td>
+ <td align="center" style="background-color:rgb(255, 160, 122)">LightSalmon1</td>
+ <td align="left">rgb(255, 160, 122)</td>
+ <td align="left">#FFA07A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon4</td>
+ <td align="center" style="background-color:rgb(139, 87, 66)">LightSalmon4</td>
+ <td align="left">rgb(139, 87, 66)</td>
+ <td align="left">#8B5742</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon2</td>
+ <td align="center" style="background-color:rgb(238, 149, 114)">LightSalmon2</td>
+ <td align="left">rgb(238, 149, 114)</td>
+ <td align="left">#EE9572</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral</td>
+ <td align="center" style="background-color:rgb(255, 127, 80)">coral</td>
+ <td align="left">rgb(255, 127, 80)</td>
+ <td align="left">#FF7F50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed</td>
+ <td align="center" style="background-color:rgb(255, 69, 0)">OrangeRed</td>
+ <td align="left">rgb(255, 69, 0)</td>
+ <td align="left">#FF4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed1</td>
+ <td align="center" style="background-color:rgb(255, 69, 0)">OrangeRed1</td>
+ <td align="left">rgb(255, 69, 0)</td>
+ <td align="left">#FF4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed2</td>
+ <td align="center" style="background-color:rgb(238, 64, 0)">OrangeRed2</td>
+ <td align="left">rgb(238, 64, 0)</td>
+ <td align="left">#EE4000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed3</td>
+ <td align="center" style="background-color:rgb(205, 55, 0)">OrangeRed3</td>
+ <td align="left">rgb(205, 55, 0)</td>
+ <td align="left">#CD3700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed4</td>
+ <td align="center" style="background-color:rgb(139, 37, 0)">OrangeRed4</td>
+ <td align="left">rgb(139, 37, 0)</td>
+ <td align="left">#8B2500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSalmon</td>
+ <td align="center" style="background-color:rgb(233, 150, 122)">DarkSalmon</td>
+ <td align="left">rgb(233, 150, 122)</td>
+ <td align="left">#E9967A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon1</td>
+ <td align="center" style="background-color:rgb(255, 140, 105)">salmon1</td>
+ <td align="left">rgb(255, 140, 105)</td>
+ <td align="left">#FF8C69</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon2</td>
+ <td align="center" style="background-color:rgb(238, 130, 98)">salmon2</td>
+ <td align="left">rgb(238, 130, 98)</td>
+ <td align="left">#EE8262</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon3</td>
+ <td align="center" style="background-color:rgb(205, 112, 84)">salmon3</td>
+ <td align="left">rgb(205, 112, 84)</td>
+ <td align="left">#CD7054</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon4</td>
+ <td align="center" style="background-color:rgb(139, 76, 57)">salmon4</td>
+ <td align="left">rgb(139, 76, 57)</td>
+ <td align="left">#8B4C39</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral1</td>
+ <td align="center" style="background-color:rgb(255, 114, 86)">coral1</td>
+ <td align="left">rgb(255, 114, 86)</td>
+ <td align="left">#FF7256</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral2</td>
+ <td align="center" style="background-color:rgb(238, 106, 80)">coral2</td>
+ <td align="left">rgb(238, 106, 80)</td>
+ <td align="left">#EE6A50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral3</td>
+ <td align="center" style="background-color:rgb(205, 91, 69)">coral3</td>
+ <td align="left">rgb(205, 91, 69)</td>
+ <td align="left">#CD5B45</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral4</td>
+ <td align="center" style="background-color:rgb(139, 62, 47)">coral4</td>
+ <td align="left">rgb(139, 62, 47)</td>
+ <td align="left">#8B3E2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato4</td>
+ <td align="center" style="background-color:rgb(139, 54, 38)">tomato4</td>
+ <td align="left">rgb(139, 54, 38)</td>
+ <td align="left">#8B3626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato</td>
+ <td align="center" style="background-color:rgb(255, 99, 71)">tomato</td>
+ <td align="left">rgb(255, 99, 71)</td>
+ <td align="left">#FF6347</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato1</td>
+ <td align="center" style="background-color:rgb(255, 99, 71)">tomato1</td>
+ <td align="left">rgb(255, 99, 71)</td>
+ <td align="left">#FF6347</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato2</td>
+ <td align="center" style="background-color:rgb(238, 92, 66)">tomato2</td>
+ <td align="left">rgb(238, 92, 66)</td>
+ <td align="left">#EE5C42</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato3</td>
+ <td align="center" style="background-color:rgb(205, 79, 57)">tomato3</td>
+ <td align="left">rgb(205, 79, 57)</td>
+ <td align="left">#CD4F39</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose4</td>
+ <td align="center" style="background-color:rgb(139, 125, 123)">MistyRose4</td>
+ <td align="left">rgb(139, 125, 123)</td>
+ <td align="left">#8B7D7B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose2</td>
+ <td align="center" style="background-color:rgb(238, 213, 210)">MistyRose2</td>
+ <td align="left">rgb(238, 213, 210)</td>
+ <td align="left">#EED5D2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose</td>
+ <td align="center" style="background-color:rgb(255, 228, 225)">MistyRose</td>
+ <td align="left">rgb(255, 228, 225)</td>
+ <td align="left">#FFE4E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose1</td>
+ <td align="center" style="background-color:rgb(255, 228, 225)">MistyRose1</td>
+ <td align="left">rgb(255, 228, 225)</td>
+ <td align="left">#FFE4E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon</td>
+ <td align="center" style="background-color:rgb(250, 128, 114)">salmon</td>
+ <td align="left">rgb(250, 128, 114)</td>
+ <td align="left">#FA8072</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose3</td>
+ <td align="center" style="background-color:rgb(205, 183, 181)">MistyRose3</td>
+ <td align="left">rgb(205, 183, 181)</td>
+ <td align="left">#CDB7B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">white</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">white</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">gray100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">grey100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">grey100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray99</td>
+ <td align="center" style="background-color:rgb(252, 252, 252)">gray99</td>
+ <td align="left">rgb(252, 252, 252)</td>
+ <td align="left">#FCFCFC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey99</td>
+ <td align="center" style="background-color:rgb(252, 252, 252)">grey99</td>
+ <td align="left">rgb(252, 252, 252)</td>
+ <td align="left">#FCFCFC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray98</td>
+ <td align="center" style="background-color:rgb(250, 250, 250)">gray98</td>
+ <td align="left">rgb(250, 250, 250)</td>
+ <td align="left">#FAFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey98</td>
+ <td align="center" style="background-color:rgb(250, 250, 250)">grey98</td>
+ <td align="left">rgb(250, 250, 250)</td>
+ <td align="left">#FAFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray97</td>
+ <td align="center" style="background-color:rgb(247, 247, 247)">gray97</td>
+ <td align="left">rgb(247, 247, 247)</td>
+ <td align="left">#F7F7F7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey97</td>
+ <td align="center" style="background-color:rgb(247, 247, 247)">grey97</td>
+ <td align="left">rgb(247, 247, 247)</td>
+ <td align="left">#F7F7F7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray96</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">gray96</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey96</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">grey96</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">WhiteSmoke</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">WhiteSmoke</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray95</td>
+ <td align="center" style="background-color:rgb(242, 242, 242)">gray95</td>
+ <td align="left">rgb(242, 242, 242)</td>
+ <td align="left">#F2F2F2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey95</td>
+ <td align="center" style="background-color:rgb(242, 242, 242)">grey95</td>
+ <td align="left">rgb(242, 242, 242)</td>
+ <td align="left">#F2F2F2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray94</td>
+ <td align="center" style="background-color:rgb(240, 240, 240)">gray94</td>
+ <td align="left">rgb(240, 240, 240)</td>
+ <td align="left">#F0F0F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey94</td>
+ <td align="center" style="background-color:rgb(240, 240, 240)">grey94</td>
+ <td align="left">rgb(240, 240, 240)</td>
+ <td align="left">#F0F0F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray93</td>
+ <td align="center" style="background-color:rgb(237, 237, 237)">gray93</td>
+ <td align="left">rgb(237, 237, 237)</td>
+ <td align="left">#EDEDED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey93</td>
+ <td align="center" style="background-color:rgb(237, 237, 237)">grey93</td>
+ <td align="left">rgb(237, 237, 237)</td>
+ <td align="left">#EDEDED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray92</td>
+ <td align="center" style="background-color:rgb(235, 235, 235)">gray92</td>
+ <td align="left">rgb(235, 235, 235)</td>
+ <td align="left">#EBEBEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey92</td>
+ <td align="center" style="background-color:rgb(235, 235, 235)">grey92</td>
+ <td align="left">rgb(235, 235, 235)</td>
+ <td align="left">#EBEBEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray91</td>
+ <td align="center" style="background-color:rgb(232, 232, 232)">gray91</td>
+ <td align="left">rgb(232, 232, 232)</td>
+ <td align="left">#E8E8E8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey91</td>
+ <td align="center" style="background-color:rgb(232, 232, 232)">grey91</td>
+ <td align="left">rgb(232, 232, 232)</td>
+ <td align="left">#E8E8E8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray90</td>
+ <td align="center" style="background-color:rgb(229, 229, 229)">gray90</td>
+ <td align="left">rgb(229, 229, 229)</td>
+ <td align="left">#E5E5E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey90</td>
+ <td align="center" style="background-color:rgb(229, 229, 229)">grey90</td>
+ <td align="left">rgb(229, 229, 229)</td>
+ <td align="left">#E5E5E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray89</td>
+ <td align="center" style="background-color:rgb(227, 227, 227)">gray89</td>
+ <td align="left">rgb(227, 227, 227)</td>
+ <td align="left">#E3E3E3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey89</td>
+ <td align="center" style="background-color:rgb(227, 227, 227)">grey89</td>
+ <td align="left">rgb(227, 227, 227)</td>
+ <td align="left">#E3E3E3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray88</td>
+ <td align="center" style="background-color:rgb(224, 224, 224)">gray88</td>
+ <td align="left">rgb(224, 224, 224)</td>
+ <td align="left">#E0E0E0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey88</td>
+ <td align="center" style="background-color:rgb(224, 224, 224)">grey88</td>
+ <td align="left">rgb(224, 224, 224)</td>
+ <td align="left">#E0E0E0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray87</td>
+ <td align="center" style="background-color:rgb(222, 222, 222)">gray87</td>
+ <td align="left">rgb(222, 222, 222)</td>
+ <td align="left">#DEDEDE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey87</td>
+ <td align="center" style="background-color:rgb(222, 222, 222)">grey87</td>
+ <td align="left">rgb(222, 222, 222)</td>
+ <td align="left">#DEDEDE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gainsboro</td>
+ <td align="center" style="background-color:rgb(220, 220, 220)">gainsboro</td>
+ <td align="left">rgb(220, 220, 220)</td>
+ <td align="left">#DCDCDC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray86</td>
+ <td align="center" style="background-color:rgb(219, 219, 219)">gray86</td>
+ <td align="left">rgb(219, 219, 219)</td>
+ <td align="left">#DBDBDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey86</td>
+ <td align="center" style="background-color:rgb(219, 219, 219)">grey86</td>
+ <td align="left">rgb(219, 219, 219)</td>
+ <td align="left">#DBDBDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray85</td>
+ <td align="center" style="background-color:rgb(217, 217, 217)">gray85</td>
+ <td align="left">rgb(217, 217, 217)</td>
+ <td align="left">#D9D9D9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey85</td>
+ <td align="center" style="background-color:rgb(217, 217, 217)">grey85</td>
+ <td align="left">rgb(217, 217, 217)</td>
+ <td align="left">#D9D9D9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray84</td>
+ <td align="center" style="background-color:rgb(214, 214, 214)">gray84</td>
+ <td align="left">rgb(214, 214, 214)</td>
+ <td align="left">#D6D6D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey84</td>
+ <td align="center" style="background-color:rgb(214, 214, 214)">grey84</td>
+ <td align="left">rgb(214, 214, 214)</td>
+ <td align="left">#D6D6D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray83</td>
+ <td align="center" style="background-color:rgb(212, 212, 212)">gray83</td>
+ <td align="left">rgb(212, 212, 212)</td>
+ <td align="left">#D4D4D4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey83</td>
+ <td align="center" style="background-color:rgb(212, 212, 212)">grey83</td>
+ <td align="left">rgb(212, 212, 212)</td>
+ <td align="left">#D4D4D4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGray</td>
+ <td align="center" style="background-color:rgb(211, 211, 211)">LightGray</td>
+ <td align="left">rgb(211, 211, 211)</td>
+ <td align="left">#D3D3D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGrey</td>
+ <td align="center" style="background-color:rgb(211, 211, 211)">LightGrey</td>
+ <td align="left">rgb(211, 211, 211)</td>
+ <td align="left">#D3D3D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray82</td>
+ <td align="center" style="background-color:rgb(209, 209, 209)">gray82</td>
+ <td align="left">rgb(209, 209, 209)</td>
+ <td align="left">#D1D1D1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey82</td>
+ <td align="center" style="background-color:rgb(209, 209, 209)">grey82</td>
+ <td align="left">rgb(209, 209, 209)</td>
+ <td align="left">#D1D1D1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray81</td>
+ <td align="center" style="background-color:rgb(207, 207, 207)">gray81</td>
+ <td align="left">rgb(207, 207, 207)</td>
+ <td align="left">#CFCFCF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey81</td>
+ <td align="center" style="background-color:rgb(207, 207, 207)">grey81</td>
+ <td align="left">rgb(207, 207, 207)</td>
+ <td align="left">#CFCFCF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray80</td>
+ <td align="center" style="background-color:rgb(204, 204, 204)">gray80</td>
+ <td align="left">rgb(204, 204, 204)</td>
+ <td align="left">#CCCCCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey80</td>
+ <td align="center" style="background-color:rgb(204, 204, 204)">grey80</td>
+ <td align="left">rgb(204, 204, 204)</td>
+ <td align="left">#CCCCCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray79</td>
+ <td align="center" style="background-color:rgb(201, 201, 201)">gray79</td>
+ <td align="left">rgb(201, 201, 201)</td>
+ <td align="left">#C9C9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey79</td>
+ <td align="center" style="background-color:rgb(201, 201, 201)">grey79</td>
+ <td align="left">rgb(201, 201, 201)</td>
+ <td align="left">#C9C9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray78</td>
+ <td align="center" style="background-color:rgb(199, 199, 199)">gray78</td>
+ <td align="left">rgb(199, 199, 199)</td>
+ <td align="left">#C7C7C7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey78</td>
+ <td align="center" style="background-color:rgb(199, 199, 199)">grey78</td>
+ <td align="left">rgb(199, 199, 199)</td>
+ <td align="left">#C7C7C7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray77</td>
+ <td align="center" style="background-color:rgb(196, 196, 196)">gray77</td>
+ <td align="left">rgb(196, 196, 196)</td>
+ <td align="left">#C4C4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey77</td>
+ <td align="center" style="background-color:rgb(196, 196, 196)">grey77</td>
+ <td align="left">rgb(196, 196, 196)</td>
+ <td align="left">#C4C4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray76</td>
+ <td align="center" style="background-color:rgb(194, 194, 194)">gray76</td>
+ <td align="left">rgb(194, 194, 194)</td>
+ <td align="left">#C2C2C2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey76</td>
+ <td align="center" style="background-color:rgb(194, 194, 194)">grey76</td>
+ <td align="left">rgb(194, 194, 194)</td>
+ <td align="left">#C2C2C2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">silver</td>
+ <td align="center" style="background-color:rgb(192, 192, 192)">silver</td>
+ <td align="left">rgb(192, 192, 192)</td>
+ <td align="left">#C0C0C0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray75</td>
+ <td align="center" style="background-color:rgb(191, 191, 191)">gray75</td>
+ <td align="left">rgb(191, 191, 191)</td>
+ <td align="left">#BFBFBF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey75</td>
+ <td align="center" style="background-color:rgb(191, 191, 191)">grey75</td>
+ <td align="left">rgb(191, 191, 191)</td>
+ <td align="left">#BFBFBF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray74</td>
+ <td align="center" style="background-color:rgb(189, 189, 189)">gray74</td>
+ <td align="left">rgb(189, 189, 189)</td>
+ <td align="left">#BDBDBD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey74</td>
+ <td align="center" style="background-color:rgb(189, 189, 189)">grey74</td>
+ <td align="left">rgb(189, 189, 189)</td>
+ <td align="left">#BDBDBD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray73</td>
+ <td align="center" style="background-color:rgb(186, 186, 186)">gray73</td>
+ <td align="left">rgb(186, 186, 186)</td>
+ <td align="left">#BABABA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey73</td>
+ <td align="center" style="background-color:rgb(186, 186, 186)">grey73</td>
+ <td align="left">rgb(186, 186, 186)</td>
+ <td align="left">#BABABA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray72</td>
+ <td align="center" style="background-color:rgb(184, 184, 184)">gray72</td>
+ <td align="left">rgb(184, 184, 184)</td>
+ <td align="left">#B8B8B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey72</td>
+ <td align="center" style="background-color:rgb(184, 184, 184)">grey72</td>
+ <td align="left">rgb(184, 184, 184)</td>
+ <td align="left">#B8B8B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray71</td>
+ <td align="center" style="background-color:rgb(181, 181, 181)">gray71</td>
+ <td align="left">rgb(181, 181, 181)</td>
+ <td align="left">#B5B5B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey71</td>
+ <td align="center" style="background-color:rgb(181, 181, 181)">grey71</td>
+ <td align="left">rgb(181, 181, 181)</td>
+ <td align="left">#B5B5B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray70</td>
+ <td align="center" style="background-color:rgb(179, 179, 179)">gray70</td>
+ <td align="left">rgb(179, 179, 179)</td>
+ <td align="left">#B3B3B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey70</td>
+ <td align="center" style="background-color:rgb(179, 179, 179)">grey70</td>
+ <td align="left">rgb(179, 179, 179)</td>
+ <td align="left">#B3B3B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray69</td>
+ <td align="center" style="background-color:rgb(176, 176, 176)">gray69</td>
+ <td align="left">rgb(176, 176, 176)</td>
+ <td align="left">#B0B0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey69</td>
+ <td align="center" style="background-color:rgb(176, 176, 176)">grey69</td>
+ <td align="left">rgb(176, 176, 176)</td>
+ <td align="left">#B0B0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray68</td>
+ <td align="center" style="background-color:rgb(173, 173, 173)">gray68</td>
+ <td align="left">rgb(173, 173, 173)</td>
+ <td align="left">#ADADAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey68</td>
+ <td align="center" style="background-color:rgb(173, 173, 173)">grey68</td>
+ <td align="left">rgb(173, 173, 173)</td>
+ <td align="left">#ADADAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray67</td>
+ <td align="center" style="background-color:rgb(171, 171, 171)">gray67</td>
+ <td align="left">rgb(171, 171, 171)</td>
+ <td align="left">#ABABAB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey67</td>
+ <td align="center" style="background-color:rgb(171, 171, 171)">grey67</td>
+ <td align="left">rgb(171, 171, 171)</td>
+ <td align="left">#ABABAB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGray</td>
+ <td align="center" style="background-color:rgb(169, 169, 169)">DarkGray</td>
+ <td align="left">rgb(169, 169, 169)</td>
+ <td align="left">#A9A9A9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGrey</td>
+ <td align="center" style="background-color:rgb(169, 169, 169)">DarkGrey</td>
+ <td align="left">rgb(169, 169, 169)</td>
+ <td align="left">#A9A9A9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray66</td>
+ <td align="center" style="background-color:rgb(168, 168, 168)">gray66</td>
+ <td align="left">rgb(168, 168, 168)</td>
+ <td align="left">#A8A8A8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey66</td>
+ <td align="center" style="background-color:rgb(168, 168, 168)">grey66</td>
+ <td align="left">rgb(168, 168, 168)</td>
+ <td align="left">#A8A8A8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray65</td>
+ <td align="center" style="background-color:rgb(166, 166, 166)">gray65</td>
+ <td align="left">rgb(166, 166, 166)</td>
+ <td align="left">#A6A6A6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey65</td>
+ <td align="center" style="background-color:rgb(166, 166, 166)">grey65</td>
+ <td align="left">rgb(166, 166, 166)</td>
+ <td align="left">#A6A6A6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray64</td>
+ <td align="center" style="background-color:rgb(163, 163, 163)">gray64</td>
+ <td align="left">rgb(163, 163, 163)</td>
+ <td align="left">#A3A3A3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey64</td>
+ <td align="center" style="background-color:rgb(163, 163, 163)">grey64</td>
+ <td align="left">rgb(163, 163, 163)</td>
+ <td align="left">#A3A3A3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray63</td>
+ <td align="center" style="background-color:rgb(161, 161, 161)">gray63</td>
+ <td align="left">rgb(161, 161, 161)</td>
+ <td align="left">#A1A1A1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey63</td>
+ <td align="center" style="background-color:rgb(161, 161, 161)">grey63</td>
+ <td align="left">rgb(161, 161, 161)</td>
+ <td align="left">#A1A1A1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray62</td>
+ <td align="center" style="background-color:rgb(158, 158, 158)">gray62</td>
+ <td align="left">rgb(158, 158, 158)</td>
+ <td align="left">#9E9E9E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey62</td>
+ <td align="center" style="background-color:rgb(158, 158, 158)">grey62</td>
+ <td align="left">rgb(158, 158, 158)</td>
+ <td align="left">#9E9E9E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray61</td>
+ <td align="center" style="background-color:rgb(156, 156, 156)">gray61</td>
+ <td align="left">rgb(156, 156, 156)</td>
+ <td align="left">#9C9C9C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey61</td>
+ <td align="center" style="background-color:rgb(156, 156, 156)">grey61</td>
+ <td align="left">rgb(156, 156, 156)</td>
+ <td align="left">#9C9C9C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray60</td>
+ <td align="center" style="background-color:rgb(153, 153, 153)">gray60</td>
+ <td align="left">rgb(153, 153, 153)</td>
+ <td align="left">#999999</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey60</td>
+ <td align="center" style="background-color:rgb(153, 153, 153)">grey60</td>
+ <td align="left">rgb(153, 153, 153)</td>
+ <td align="left">#999999</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray59</td>
+ <td align="center" style="background-color:rgb(150, 150, 150)">gray59</td>
+ <td align="left">rgb(150, 150, 150)</td>
+ <td align="left">#969696</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey59</td>
+ <td align="center" style="background-color:rgb(150, 150, 150)">grey59</td>
+ <td align="left">rgb(150, 150, 150)</td>
+ <td align="left">#969696</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray58</td>
+ <td align="center" style="background-color:rgb(148, 148, 148)">gray58</td>
+ <td align="left">rgb(148, 148, 148)</td>
+ <td align="left">#949494</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey58</td>
+ <td align="center" style="background-color:rgb(148, 148, 148)">grey58</td>
+ <td align="left">rgb(148, 148, 148)</td>
+ <td align="left">#949494</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray57</td>
+ <td align="center" style="background-color:rgb(145, 145, 145)">gray57</td>
+ <td align="left">rgb(145, 145, 145)</td>
+ <td align="left">#919191</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey57</td>
+ <td align="center" style="background-color:rgb(145, 145, 145)">grey57</td>
+ <td align="left">rgb(145, 145, 145)</td>
+ <td align="left">#919191</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray56</td>
+ <td align="center" style="background-color:rgb(143, 143, 143)">gray56</td>
+ <td align="left">rgb(143, 143, 143)</td>
+ <td align="left">#8F8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey56</td>
+ <td align="center" style="background-color:rgb(143, 143, 143)">grey56</td>
+ <td align="left">rgb(143, 143, 143)</td>
+ <td align="left">#8F8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray55</td>
+ <td align="center" style="background-color:rgb(140, 140, 140)">gray55</td>
+ <td align="left">rgb(140, 140, 140)</td>
+ <td align="left">#8C8C8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey55</td>
+ <td align="center" style="background-color:rgb(140, 140, 140)">grey55</td>
+ <td align="left">rgb(140, 140, 140)</td>
+ <td align="left">#8C8C8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray54</td>
+ <td align="center" style="background-color:rgb(138, 138, 138)">gray54</td>
+ <td align="left">rgb(138, 138, 138)</td>
+ <td align="left">#8A8A8A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey54</td>
+ <td align="center" style="background-color:rgb(138, 138, 138)">grey54</td>
+ <td align="left">rgb(138, 138, 138)</td>
+ <td align="left">#8A8A8A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray53</td>
+ <td align="center" style="background-color:rgb(135, 135, 135)">gray53</td>
+ <td align="left">rgb(135, 135, 135)</td>
+ <td align="left">#878787</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey53</td>
+ <td align="center" style="background-color:rgb(135, 135, 135)">grey53</td>
+ <td align="left">rgb(135, 135, 135)</td>
+ <td align="left">#878787</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray52</td>
+ <td align="center" style="background-color:rgb(133, 133, 133)">gray52</td>
+ <td align="left">rgb(133, 133, 133)</td>
+ <td align="left">#858585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey52</td>
+ <td align="center" style="background-color:rgb(133, 133, 133)">grey52</td>
+ <td align="left">rgb(133, 133, 133)</td>
+ <td align="left">#858585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray51</td>
+ <td align="center" style="background-color:rgb(130, 130, 130)">gray51</td>
+ <td align="left">rgb(130, 130, 130)</td>
+ <td align="left">#828282</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey51</td>
+ <td align="center" style="background-color:rgb(130, 130, 130)">grey51</td>
+ <td align="left">rgb(130, 130, 130)</td>
+ <td align="left">#828282</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">fractal</td>
+ <td align="center" style="background-color:rgb(128, 128, 128)">fractal</td>
+ <td align="left">rgb(128, 128, 128)</td>
+ <td align="left">#808080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray50</td>
+ <td align="center" style="background-color:rgb(127, 127, 127)">gray50</td>
+ <td align="left">rgb(127, 127, 127)</td>
+ <td align="left">#7F7F7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey50</td>
+ <td align="center" style="background-color:rgb(127, 127, 127)">grey50</td>
+ <td align="left">rgb(127, 127, 127)</td>
+ <td align="left">#7F7F7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray</td>
+ <td align="center" style="background-color:rgb(126, 126, 126)">gray</td>
+ <td align="left">rgb(126, 126, 126)</td>
+ <td align="left">#7E7E7E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray49</td>
+ <td align="center" style="background-color:rgb(125, 125, 125)">gray49</td>
+ <td align="left">rgb(125, 125, 125)</td>
+ <td align="left">#7D7D7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey49</td>
+ <td align="center" style="background-color:rgb(125, 125, 125)">grey49</td>
+ <td align="left">rgb(125, 125, 125)</td>
+ <td align="left">#7D7D7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray48</td>
+ <td align="center" style="background-color:rgb(122, 122, 122)">gray48</td>
+ <td align="left">rgb(122, 122, 122)</td>
+ <td align="left">#7A7A7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey48</td>
+ <td align="center" style="background-color:rgb(122, 122, 122)">grey48</td>
+ <td align="left">rgb(122, 122, 122)</td>
+ <td align="left">#7A7A7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray47</td>
+ <td align="center" style="background-color:rgb(120, 120, 120)">gray47</td>
+ <td align="left">rgb(120, 120, 120)</td>
+ <td align="left">#787878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey47</td>
+ <td align="center" style="background-color:rgb(120, 120, 120)">grey47</td>
+ <td align="left">rgb(120, 120, 120)</td>
+ <td align="left">#787878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray46</td>
+ <td align="center" style="background-color:rgb(117, 117, 117)">gray46</td>
+ <td align="left">rgb(117, 117, 117)</td>
+ <td align="left">#757575</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey46</td>
+ <td align="center" style="background-color:rgb(117, 117, 117)">grey46</td>
+ <td align="left">rgb(117, 117, 117)</td>
+ <td align="left">#757575</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray45</td>
+ <td align="center" style="background-color:rgb(115, 115, 115)">gray45</td>
+ <td align="left">rgb(115, 115, 115)</td>
+ <td align="left">#737373</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey45</td>
+ <td align="center" style="background-color:rgb(115, 115, 115)">grey45</td>
+ <td align="left">rgb(115, 115, 115)</td>
+ <td align="left">#737373</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray44</td>
+ <td align="center" style="background-color:rgb(112, 112, 112)">gray44</td>
+ <td align="left">rgb(112, 112, 112)</td>
+ <td align="left">#707070</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey44</td>
+ <td align="center" style="background-color:rgb(112, 112, 112)">grey44</td>
+ <td align="left">rgb(112, 112, 112)</td>
+ <td align="left">#707070</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray43</td>
+ <td align="center" style="background-color:rgb(110, 110, 110)">gray43</td>
+ <td align="left">rgb(110, 110, 110)</td>
+ <td align="left">#6E6E6E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey43</td>
+ <td align="center" style="background-color:rgb(110, 110, 110)">grey43</td>
+ <td align="left">rgb(110, 110, 110)</td>
+ <td align="left">#6E6E6E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray42</td>
+ <td align="center" style="background-color:rgb(107, 107, 107)">gray42</td>
+ <td align="left">rgb(107, 107, 107)</td>
+ <td align="left">#6B6B6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey42</td>
+ <td align="center" style="background-color:rgb(107, 107, 107)">grey42</td>
+ <td align="left">rgb(107, 107, 107)</td>
+ <td align="left">#6B6B6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DimGray</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">DimGray</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DimGrey</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">DimGrey</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray41</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">gray41</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey41</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">grey41</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray40</td>
+ <td align="center" style="background-color:rgb(102, 102, 102)">gray40</td>
+ <td align="left">rgb(102, 102, 102)</td>
+ <td align="left">#666666</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey40</td>
+ <td align="center" style="background-color:rgb(102, 102, 102)">grey40</td>
+ <td align="left">rgb(102, 102, 102)</td>
+ <td align="left">#666666</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray39</td>
+ <td align="center" style="background-color:rgb( 99, 99, 99)">gray39</td>
+ <td align="left">rgb( 99, 99, 99)</td>
+ <td align="left">#636363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey39</td>
+ <td align="center" style="background-color:rgb( 99, 99, 99)">grey39</td>
+ <td align="left">rgb( 99, 99, 99)</td>
+ <td align="left">#636363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray38</td>
+ <td align="center" style="background-color:rgb( 97, 97, 97)">gray38</td>
+ <td align="left">rgb( 97, 97, 97)</td>
+ <td align="left">#616161</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey38</td>
+ <td align="center" style="background-color:rgb( 97, 97, 97)">grey38</td>
+ <td align="left">rgb( 97, 97, 97)</td>
+ <td align="left">#616161</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray37</td>
+ <td align="center" style="background-color:rgb( 94, 94, 94)">gray37</td>
+ <td align="left">rgb( 94, 94, 94)</td>
+ <td align="left">#5E5E5E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey37</td>
+ <td align="center" style="background-color:rgb( 94, 94, 94)">grey37</td>
+ <td align="left">rgb( 94, 94, 94)</td>
+ <td align="left">#5E5E5E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray36</td>
+ <td align="center" style="background-color:rgb( 92, 92, 92)">gray36</td>
+ <td align="left">rgb( 92, 92, 92)</td>
+ <td align="left">#5C5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey36</td>
+ <td align="center" style="background-color:rgb( 92, 92, 92)">grey36</td>
+ <td align="left">rgb( 92, 92, 92)</td>
+ <td align="left">#5C5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray35</td>
+ <td align="center" style="background-color:rgb( 89, 89, 89)">gray35</td>
+ <td align="left">rgb( 89, 89, 89)</td>
+ <td align="left">#595959</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey35</td>
+ <td align="center" style="background-color:rgb( 89, 89, 89)">grey35</td>
+ <td align="left">rgb( 89, 89, 89)</td>
+ <td align="left">#595959</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray34</td>
+ <td align="center" style="background-color:rgb( 87, 87, 87)">gray34</td>
+ <td align="left">rgb( 87, 87, 87)</td>
+ <td align="left">#575757</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey34</td>
+ <td align="center" style="background-color:rgb( 87, 87, 87)">grey34</td>
+ <td align="left">rgb( 87, 87, 87)</td>
+ <td align="left">#575757</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray33</td>
+ <td align="center" style="background-color:rgb( 84, 84, 84)">gray33</td>
+ <td align="left">rgb( 84, 84, 84)</td>
+ <td align="left">#545454</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey33</td>
+ <td align="center" style="background-color:rgb( 84, 84, 84)">grey33</td>
+ <td align="left">rgb( 84, 84, 84)</td>
+ <td align="left">#545454</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray32</td>
+ <td align="center" style="background-color:rgb( 82, 82, 82)">gray32</td>
+ <td align="left">rgb( 82, 82, 82)</td>
+ <td align="left">#525252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey32</td>
+ <td align="center" style="background-color:rgb( 82, 82, 82)">grey32</td>
+ <td align="left">rgb( 82, 82, 82)</td>
+ <td align="left">#525252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray31</td>
+ <td align="center" style="background-color:rgb( 79, 79, 79)">gray31</td>
+ <td align="left">rgb( 79, 79, 79)</td>
+ <td align="left">#4F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey31</td>
+ <td align="center" style="background-color:rgb( 79, 79, 79)">grey31</td>
+ <td align="left">rgb( 79, 79, 79)</td>
+ <td align="left">#4F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray30</td>
+ <td align="center" style="background-color:rgb( 77, 77, 77)">gray30</td>
+ <td align="left">rgb( 77, 77, 77)</td>
+ <td align="left">#4D4D4D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey30</td>
+ <td align="center" style="background-color:rgb( 77, 77, 77)">grey30</td>
+ <td align="left">rgb( 77, 77, 77)</td>
+ <td align="left">#4D4D4D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray29</td>
+ <td align="center" style="background-color:rgb( 74, 74, 74)">gray29</td>
+ <td align="left">rgb( 74, 74, 74)</td>
+ <td align="left">#4A4A4A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey29</td>
+ <td align="center" style="background-color:rgb( 74, 74, 74)">grey29</td>
+ <td align="left">rgb( 74, 74, 74)</td>
+ <td align="left">#4A4A4A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray28</td>
+ <td align="center" style="background-color:rgb( 71, 71, 71)">gray28</td>
+ <td align="left">rgb( 71, 71, 71)</td>
+ <td align="left">#474747</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey28</td>
+ <td align="center" style="background-color:rgb( 71, 71, 71)">grey28</td>
+ <td align="left">rgb( 71, 71, 71)</td>
+ <td align="left">#474747</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray27</td>
+ <td align="center" style="background-color:rgb( 69, 69, 69)">gray27</td>
+ <td align="left">rgb( 69, 69, 69)</td>
+ <td align="left">#454545</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey27</td>
+ <td align="center" style="background-color:rgb( 69, 69, 69)">grey27</td>
+ <td align="left">rgb( 69, 69, 69)</td>
+ <td align="left">#454545</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray26</td>
+ <td align="center" style="background-color:rgb( 66, 66, 66)">gray26</td>
+ <td align="left">rgb( 66, 66, 66)</td>
+ <td align="left">#424242</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey26</td>
+ <td align="center" style="background-color:rgb( 66, 66, 66)">grey26</td>
+ <td align="left">rgb( 66, 66, 66)</td>
+ <td align="left">#424242</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray25</td>
+ <td align="center" style="background-color:rgb( 64, 64, 64)">gray25</td>
+ <td align="left">rgb( 64, 64, 64)</td>
+ <td align="left">#404040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey25</td>
+ <td align="center" style="background-color:rgb( 64, 64, 64)">grey25</td>
+ <td align="left">rgb( 64, 64, 64)</td>
+ <td align="left">#404040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray24</td>
+ <td align="center" style="background-color:rgb( 61, 61, 61)">gray24</td>
+ <td align="left">rgb( 61, 61, 61)</td>
+ <td align="left">#3D3D3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey24</td>
+ <td align="center" style="background-color:rgb( 61, 61, 61)">grey24</td>
+ <td align="left">rgb( 61, 61, 61)</td>
+ <td align="left">#3D3D3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray23</td>
+ <td align="center" style="background-color:rgb( 59, 59, 59)">gray23</td>
+ <td align="left">rgb( 59, 59, 59)</td>
+ <td align="left">#3B3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey23</td>
+ <td align="center" style="background-color:rgb( 59, 59, 59)">grey23</td>
+ <td align="left">rgb( 59, 59, 59)</td>
+ <td align="left">#3B3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray22</td>
+ <td align="center" style="background-color:rgb( 56, 56, 56)">gray22</td>
+ <td align="left">rgb( 56, 56, 56)</td>
+ <td align="left">#383838</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey22</td>
+ <td align="center" style="background-color:rgb( 56, 56, 56)">grey22</td>
+ <td align="left">rgb( 56, 56, 56)</td>
+ <td align="left">#383838</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray21</td>
+ <td align="center" style="background-color:rgb( 54, 54, 54)">gray21</td>
+ <td align="left">rgb( 54, 54, 54)</td>
+ <td align="left">#363636</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey21</td>
+ <td align="center" style="background-color:rgb( 54, 54, 54)">grey21</td>
+ <td align="left">rgb( 54, 54, 54)</td>
+ <td align="left">#363636</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray20</td>
+ <td align="center" style="background-color:rgb( 51, 51, 51)">gray20</td>
+ <td align="left">rgb( 51, 51, 51)</td>
+ <td align="left">#333333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey20</td>
+ <td align="center" style="background-color:rgb( 51, 51, 51)">grey20</td>
+ <td align="left">rgb( 51, 51, 51)</td>
+ <td align="left">#333333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray19</td>
+ <td align="center" style="background-color:rgb( 48, 48, 48)">gray19</td>
+ <td align="left">rgb( 48, 48, 48)</td>
+ <td align="left">#303030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey19</td>
+ <td align="center" style="background-color:rgb( 48, 48, 48)">grey19</td>
+ <td align="left">rgb( 48, 48, 48)</td>
+ <td align="left">#303030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray18</td>
+ <td align="center" style="background-color:rgb( 46, 46, 46)">gray18</td>
+ <td align="left">rgb( 46, 46, 46)</td>
+ <td align="left">#2E2E2E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey18</td>
+ <td align="center" style="background-color:rgb( 46, 46, 46)">grey18</td>
+ <td align="left">rgb( 46, 46, 46)</td>
+ <td align="left">#2E2E2E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray17</td>
+ <td align="center" style="background-color:rgb( 43, 43, 43)">gray17</td>
+ <td align="left">rgb( 43, 43, 43)</td>
+ <td align="left">#2B2B2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey17</td>
+ <td align="center" style="background-color:rgb( 43, 43, 43)">grey17</td>
+ <td align="left">rgb( 43, 43, 43)</td>
+ <td align="left">#2B2B2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray16</td>
+ <td align="center" style="background-color:rgb( 41, 41, 41)">gray16</td>
+ <td align="left">rgb( 41, 41, 41)</td>
+ <td align="left">#292929</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey16</td>
+ <td align="center" style="background-color:rgb( 41, 41, 41)">grey16</td>
+ <td align="left">rgb( 41, 41, 41)</td>
+ <td align="left">#292929</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray15</td>
+ <td align="center" style="background-color:rgb( 38, 38, 38)">gray15</td>
+ <td align="left">rgb( 38, 38, 38)</td>
+ <td align="left">#262626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey15</td>
+ <td align="center" style="background-color:rgb( 38, 38, 38)">grey15</td>
+ <td align="left">rgb( 38, 38, 38)</td>
+ <td align="left">#262626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray14</td>
+ <td align="center" style="background-color:rgb( 36, 36, 36)">gray14</td>
+ <td align="left">rgb( 36, 36, 36)</td>
+ <td align="left">#242424</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey14</td>
+ <td align="center" style="background-color:rgb( 36, 36, 36)">grey14</td>
+ <td align="left">rgb( 36, 36, 36)</td>
+ <td align="left">#242424</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray13</td>
+ <td align="center" style="background-color:rgb( 33, 33, 33)">gray13</td>
+ <td align="left">rgb( 33, 33, 33)</td>
+ <td align="left">#212121</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey13</td>
+ <td align="center" style="background-color:rgb( 33, 33, 33)">grey13</td>
+ <td align="left">rgb( 33, 33, 33)</td>
+ <td align="left">#212121</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray12</td>
+ <td align="center" style="background-color:rgb( 31, 31, 31)">gray12</td>
+ <td align="left">rgb( 31, 31, 31)</td>
+ <td align="left">#1F1F1F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey12</td>
+ <td align="center" style="background-color:rgb( 31, 31, 31)">grey12</td>
+ <td align="left">rgb( 31, 31, 31)</td>
+ <td align="left">#1F1F1F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray11</td>
+ <td align="center" style="background-color:rgb( 28, 28, 28)">gray11</td>
+ <td align="left">rgb( 28, 28, 28)</td>
+ <td align="left">#1C1C1C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey11</td>
+ <td align="center" style="background-color:rgb( 28, 28, 28)">grey11</td>
+ <td align="left">rgb( 28, 28, 28)</td>
+ <td align="left">#1C1C1C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray10</td>
+ <td align="center" style="background-color:rgb( 26, 26, 26)">gray10</td>
+ <td align="left">rgb( 26, 26, 26)</td>
+ <td align="left">#1A1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey10</td>
+ <td align="center" style="background-color:rgb( 26, 26, 26)">grey10</td>
+ <td align="left">rgb( 26, 26, 26)</td>
+ <td align="left">#1A1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray9</td>
+ <td align="center" style="background-color:rgb( 23, 23, 23)">gray9</td>
+ <td align="left">rgb( 23, 23, 23)</td>
+ <td align="left">#171717</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey9</td>
+ <td align="center" style="background-color:rgb( 23, 23, 23)">grey9</td>
+ <td align="left">rgb( 23, 23, 23)</td>
+ <td align="left">#171717</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray8</td>
+ <td align="center" style="background-color:rgb( 20, 20, 20)">gray8</td>
+ <td align="left">rgb( 20, 20, 20)</td>
+ <td align="left">#141414</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey8</td>
+ <td align="center" style="background-color:rgb( 20, 20, 20)">grey8</td>
+ <td align="left">rgb( 20, 20, 20)</td>
+ <td align="left">#141414</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray7</td>
+ <td align="center" style="background-color:rgb( 18, 18, 18)">gray7</td>
+ <td align="left">rgb( 18, 18, 18)</td>
+ <td align="left">#121212</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey7</td>
+ <td align="center" style="background-color:rgb( 18, 18, 18)">grey7</td>
+ <td align="left">rgb( 18, 18, 18)</td>
+ <td align="left">#121212</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray6</td>
+ <td align="center" style="background-color:rgb( 15, 15, 15)">gray6</td>
+ <td align="left">rgb( 15, 15, 15)</td>
+ <td align="left">#0F0F0F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey6</td>
+ <td align="center" style="background-color:rgb( 15, 15, 15)">grey6</td>
+ <td align="left">rgb( 15, 15, 15)</td>
+ <td align="left">#0F0F0F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray5</td>
+ <td align="center" style="background-color:rgb( 13, 13, 13)">gray5</td>
+ <td align="left">rgb( 13, 13, 13)</td>
+ <td align="left">#0D0D0D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey5</td>
+ <td align="center" style="background-color:rgb( 13, 13, 13)">grey5</td>
+ <td align="left">rgb( 13, 13, 13)</td>
+ <td align="left">#0D0D0D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray4</td>
+ <td align="center" style="background-color:rgb( 10, 10, 10)">gray4</td>
+ <td align="left">rgb( 10, 10, 10)</td>
+ <td align="left">#0A0A0A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey4</td>
+ <td align="center" style="background-color:rgb( 10, 10, 10)">grey4</td>
+ <td align="left">rgb( 10, 10, 10)</td>
+ <td align="left">#0A0A0A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray3</td>
+ <td align="center" style="background-color:rgb( 8, 8, 8)">gray3</td>
+ <td align="left">rgb( 8, 8, 8)</td>
+ <td align="left">#080808</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey3</td>
+ <td align="center" style="background-color:rgb( 8, 8, 8)">grey3</td>
+ <td align="left">rgb( 8, 8, 8)</td>
+ <td align="left">#080808</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray2</td>
+ <td align="center" style="background-color:rgb( 5, 5, 5)">gray2</td>
+ <td align="left">rgb( 5, 5, 5)</td>
+ <td align="left">#050505</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey2</td>
+ <td align="center" style="background-color:rgb( 5, 5, 5)">grey2</td>
+ <td align="left">rgb( 5, 5, 5)</td>
+ <td align="left">#050505</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray1</td>
+ <td align="center" style="background-color:rgb( 3, 3, 3)">gray1</td>
+ <td align="left">rgb( 3, 3, 3)</td>
+ <td align="left">#030303</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey1</td>
+ <td align="center" style="background-color:rgb( 3, 3, 3)">grey1</td>
+ <td align="left">rgb( 3, 3, 3)</td>
+ <td align="left">#030303</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">black</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">black</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray0</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">gray0</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey0</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">grey0</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">opaque</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">opaque</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">none</td>
+ <td align="center" style="background-color:white">none</td>
+ <td align="left">rgba( 0, 0, 0, 0.0)</td>
+ <td align="left">#00000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">transparent</td>
+ <td align="center" style="background-color:white">transparent</td>
+ <td align="left">rgba( 0, 0, 0, 0.0)</td>
+ <td align="left">#00000000</td>
+
+ </tr>
+
+ </tbody>
+</table>
+
+</div>
+
+</div>
+
+</body></html>
diff --git a/frontend/imgrid/colors/colors/junk/colorsbest.html b/frontend/imgrid/colors/colors/junk/colorsbest.html
new file mode 100755
index 0000000..047eb6b
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/colorsbest.html
@@ -0,0 +1,3606 @@
+<html>
+<head>
+
+<style type='text/css'>
+
+body
+{
+max-width:100%;
+max-height:100%;
+font-family:helvetica;
+font-size:10px;
+}
+
+
+#container div
+{
+display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+min-height: 30px;
+zoom: 1;
+*display: inline;
+cursor:pointer;
+}
+
+#container
+{
+margin:0 auto;
+width:600px;
+padding-top:100px;
+text-align:center;
+}
+
+#colornames
+{
+color:white;
+position:fixed;
+font-size:50px;
+top:50px;
+right:60%;
+width:400px;
+}
+
+#hexswitch
+ {
+ position:fixed;
+ top:20px;
+ right:10%;
+ height:100px;
+ width:300px;
+ font-size:20px
+ border-style: groove;
+ border-width: 4px;
+ background-color:goldenrod;
+ text-align:center;
+ }
+#infoswitch
+ {
+ position:fixed;
+ top: 60px;
+ right:50%;
+ font-size:20px;
+ background-color:magenta;
+ text-align:center;
+ z-index:100;
+ }
+
+#namespace
+ {
+ position:fixed;
+ top:500px;
+ right:20px;
+ }
+
+
+
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{
+height:30px;
+width:10px;
+}
+</style></head><body>
+<div id='container'>
+<div id='d0' class='colors'>
+snow</div>
+<div id='d1' class='colors'>
+snow1</div>
+<div id='d2' class='colors'>
+snow2</div>
+<div id='d3' class='colors'>
+RosyBrown1</div>
+<div id='d4' class='colors'>
+RosyBrown2</div>
+<div id='d5' class='colors'>
+snow3</div>
+<div id='d6' class='colors'>
+LightCoral</div>
+<div id='d7' class='colors'>
+IndianRed1</div>
+<div id='d8' class='colors'>
+RosyBrown3</div>
+<div id='d9' class='colors'>
+IndianRed2</div>
+<div id='d10' class='colors'>
+RosyBrown</div>
+<div id='d11' class='colors'>
+brown1</div>
+<div id='d12' class='colors'>
+firebrick1</div>
+<div id='d13' class='colors'>
+brown2</div>
+<div id='d14' class='colors'>
+IndianRed</div>
+<div id='d15' class='colors'>
+IndianRed3</div>
+<div id='d16' class='colors'>
+firebrick2</div>
+<div id='d17' class='colors'>
+snow4</div>
+<div id='d18' class='colors'>
+brown3</div>
+<div id='d19' class='colors'>
+red</div>
+<div id='d20' class='colors'>
+red1</div>
+<div id='d21' class='colors'>
+RosyBrown4</div>
+<div id='d22' class='colors'>
+firebrick3</div>
+<div id='d23' class='colors'>
+red2</div>
+<div id='d24' class='colors'>
+firebrick</div>
+<div id='d25' class='colors'>
+brown</div>
+<div id='d26' class='colors'>
+red3</div>
+<div id='d27' class='colors'>
+IndianRed4</div>
+<div id='d28' class='colors'>
+brown4</div>
+<div id='d29' class='colors'>
+firebrick4</div>
+<div id='d30' class='colors'>
+DarkRed</div>
+<div id='d31' class='colors'>
+red4</div>
+<div id='d32' class='colors'>
+maroon</div>
+<div id='d33' class='colors'>
+LightPink1</div>
+<div id='d34' class='colors'>
+LightPink3</div>
+<div id='d35' class='colors'>
+LightPink4</div>
+<div id='d36' class='colors'>
+LightPink2</div>
+<div id='d37' class='colors'>
+LightPink</div>
+<div id='d38' class='colors'>
+pink</div>
+<div id='d39' class='colors'>
+crimson</div>
+<div id='d40' class='colors'>
+pink1</div>
+<div id='d41' class='colors'>
+pink2</div>
+<div id='d42' class='colors'>
+pink3</div>
+<div id='d43' class='colors'>
+pink4</div>
+<div id='d44' class='colors'>
+PaleVioletRed4</div>
+<div id='d45' class='colors'>
+PaleVioletRed</div>
+<div id='d46' class='colors'>
+PaleVioletRed2</div>
+<div id='d47' class='colors'>
+PaleVioletRed1</div>
+<div id='d48' class='colors'>
+PaleVioletRed3</div>
+<div id='d49' class='colors'>
+LavenderBlush</div>
+<div id='d50' class='colors'>
+LavenderBlush1</div>
+<div id='d51' class='colors'>
+LavenderBlush3</div>
+<div id='d52' class='colors'>
+LavenderBlush2</div>
+<div id='d53' class='colors'>
+LavenderBlush4</div>
+<div id='d54' class='colors'>
+maroon</div>
+<div id='d55' class='colors'>
+HotPink3</div>
+<div id='d56' class='colors'>
+VioletRed3</div>
+<div id='d57' class='colors'>
+VioletRed1</div>
+<div id='d58' class='colors'>
+VioletRed2</div>
+<div id='d59' class='colors'>
+VioletRed4</div>
+<div id='d60' class='colors'>
+HotPink2</div>
+<div id='d61' class='colors'>
+HotPink1</div>
+<div id='d62' class='colors'>
+HotPink4</div>
+<div id='d63' class='colors'>
+HotPink</div>
+<div id='d64' class='colors'>
+DeepPink</div>
+<div id='d65' class='colors'>
+DeepPink1</div>
+<div id='d66' class='colors'>
+DeepPink2</div>
+<div id='d67' class='colors'>
+DeepPink3</div>
+<div id='d68' class='colors'>
+DeepPink4</div>
+<div id='d69' class='colors'>
+maroon1</div>
+<div id='d70' class='colors'>
+maroon2</div>
+<div id='d71' class='colors'>
+maroon3</div>
+<div id='d72' class='colors'>
+maroon4</div>
+<div id='d73' class='colors'>
+MediumVioletRed</div>
+<div id='d74' class='colors'>
+VioletRed</div>
+<div id='d75' class='colors'>
+orchid2</div>
+<div id='d76' class='colors'>
+orchid</div>
+<div id='d77' class='colors'>
+orchid1</div>
+<div id='d78' class='colors'>
+orchid3</div>
+<div id='d79' class='colors'>
+orchid4</div>
+<div id='d80' class='colors'>
+thistle1</div>
+<div id='d81' class='colors'>
+thistle2</div>
+<div id='d82' class='colors'>
+plum1</div>
+<div id='d83' class='colors'>
+plum2</div>
+<div id='d84' class='colors'>
+thistle</div>
+<div id='d85' class='colors'>
+thistle3</div>
+<div id='d86' class='colors'>
+plum</div>
+<div id='d87' class='colors'>
+violet</div>
+<div id='d88' class='colors'>
+plum3</div>
+<div id='d89' class='colors'>
+thistle4</div>
+<div id='d90' class='colors'>
+fuchsia</div>
+<div id='d91' class='colors'>
+magenta</div>
+<div id='d92' class='colors'>
+magenta1</div>
+<div id='d93' class='colors'>
+plum4</div>
+<div id='d94' class='colors'>
+magenta2</div>
+<div id='d95' class='colors'>
+magenta3</div>
+<div id='d96' class='colors'>
+DarkMagenta</div>
+<div id='d97' class='colors'>
+magenta4</div>
+<div id='d98' class='colors'>
+purple</div>
+<div id='d99' class='colors'>
+MediumOrchid</div>
+<div id='d100' class='colors'>
+MediumOrchid1</div>
+<div id='d101' class='colors'>
+MediumOrchid2</div>
+<div id='d102' class='colors'>
+MediumOrchid3</div>
+<div id='d103' class='colors'>
+MediumOrchid4</div>
+<div id='d104' class='colors'>
+DarkViolet</div>
+<div id='d105' class='colors'>
+DarkOrchid</div>
+<div id='d106' class='colors'>
+DarkOrchid1</div>
+<div id='d107' class='colors'>
+DarkOrchid3</div>
+<div id='d108' class='colors'>
+DarkOrchid2</div>
+<div id='d109' class='colors'>
+DarkOrchid4</div>
+<div id='d110' class='colors'>
+purple</div>
+<div id='d111' class='colors'>
+indigo</div>
+<div id='d112' class='colors'>
+BlueViolet</div>
+<div id='d113' class='colors'>
+purple2</div>
+<div id='d114' class='colors'>
+purple3</div>
+<div id='d115' class='colors'>
+purple4</div>
+<div id='d116' class='colors'>
+purple1</div>
+<div id='d117' class='colors'>
+MediumPurple</div>
+<div id='d118' class='colors'>
+MediumPurple1</div>
+<div id='d119' class='colors'>
+MediumPurple2</div>
+<div id='d120' class='colors'>
+MediumPurple3</div>
+<div id='d121' class='colors'>
+MediumPurple4</div>
+<div id='d122' class='colors'>
+DarkSlateBlue</div>
+<div id='d123' class='colors'>
+LightSlateBlue</div>
+<div id='d124' class='colors'>
+MediumSlateBlue</div>
+<div id='d125' class='colors'>
+SlateBlue</div>
+<div id='d126' class='colors'>
+SlateBlue1</div>
+<div id='d127' class='colors'>
+SlateBlue2</div>
+<div id='d128' class='colors'>
+SlateBlue3</div>
+<div id='d129' class='colors'>
+SlateBlue4</div>
+<div id='d130' class='colors'>
+GhostWhite</div>
+<div id='d131' class='colors'>
+lavender</div>
+<div id='d132' class='colors'>
+blue</div>
+<div id='d133' class='colors'>
+blue1</div>
+<div id='d134' class='colors'>
+blue2</div>
+<div id='d135' class='colors'>
+blue3</div>
+<div id='d136' class='colors'>
+MediumBlue</div>
+<div id='d137' class='colors'>
+blue4</div>
+<div id='d138' class='colors'>
+DarkBlue</div>
+<div id='d139' class='colors'>
+MidnightBlue</div>
+<div id='d140' class='colors'>
+navy</div>
+<div id='d141' class='colors'>
+NavyBlue</div>
+<div id='d142' class='colors'>
+RoyalBlue</div>
+<div id='d143' class='colors'>
+RoyalBlue1</div>
+<div id='d144' class='colors'>
+RoyalBlue2</div>
+<div id='d145' class='colors'>
+RoyalBlue3</div>
+<div id='d146' class='colors'>
+RoyalBlue4</div>
+<div id='d147' class='colors'>
+CornflowerBlue</div>
+<div id='d148' class='colors'>
+LightSteelBlue</div>
+<div id='d149' class='colors'>
+LightSteelBlue1</div>
+<div id='d150' class='colors'>
+LightSteelBlue2</div>
+<div id='d151' class='colors'>
+LightSteelBlue3</div>
+<div id='d152' class='colors'>
+LightSteelBlue4</div>
+<div id='d153' class='colors'>
+SlateGray4</div>
+<div id='d154' class='colors'>
+SlateGray1</div>
+<div id='d155' class='colors'>
+SlateGray2</div>
+<div id='d156' class='colors'>
+SlateGray3</div>
+<div id='d157' class='colors'>
+LightSlateGray</div>
+<div id='d158' class='colors'>
+LightSlateGrey</div>
+<div id='d159' class='colors'>
+SlateGray</div>
+<div id='d160' class='colors'>
+SlateGrey</div>
+<div id='d161' class='colors'>
+DodgerBlue</div>
+<div id='d162' class='colors'>
+DodgerBlue1</div>
+<div id='d163' class='colors'>
+DodgerBlue2</div>
+<div id='d164' class='colors'>
+DodgerBlue4</div>
+<div id='d165' class='colors'>
+DodgerBlue3</div>
+<div id='d166' class='colors'>
+AliceBlue</div>
+<div id='d167' class='colors'>
+SteelBlue4</div>
+<div id='d168' class='colors'>
+SteelBlue</div>
+<div id='d169' class='colors'>
+SteelBlue1</div>
+<div id='d170' class='colors'>
+SteelBlue2</div>
+<div id='d171' class='colors'>
+SteelBlue3</div>
+<div id='d172' class='colors'>
+SkyBlue4</div>
+<div id='d173' class='colors'>
+SkyBlue1</div>
+<div id='d174' class='colors'>
+SkyBlue2</div>
+<div id='d175' class='colors'>
+SkyBlue3</div>
+<div id='d176' class='colors'>
+LightSkyBlue</div>
+<div id='d177' class='colors'>
+LightSkyBlue4</div>
+<div id='d178' class='colors'>
+LightSkyBlue1</div>
+<div id='d179' class='colors'>
+LightSkyBlue2</div>
+<div id='d180' class='colors'>
+LightSkyBlue3</div>
+<div id='d181' class='colors'>
+SkyBlue</div>
+<div id='d182' class='colors'>
+LightBlue3</div>
+<div id='d183' class='colors'>
+DeepSkyBlue</div>
+<div id='d184' class='colors'>
+DeepSkyBlue1</div>
+<div id='d185' class='colors'>
+DeepSkyBlue2</div>
+<div id='d186' class='colors'>
+DeepSkyBlue4</div>
+<div id='d187' class='colors'>
+DeepSkyBlue3</div>
+<div id='d188' class='colors'>
+LightBlue1</div>
+<div id='d189' class='colors'>
+LightBlue2</div>
+<div id='d190' class='colors'>
+LightBlue</div>
+<div id='d191' class='colors'>
+LightBlue4</div>
+<div id='d192' class='colors'>
+PowderBlue</div>
+<div id='d193' class='colors'>
+CadetBlue1</div>
+<div id='d194' class='colors'>
+CadetBlue2</div>
+<div id='d195' class='colors'>
+CadetBlue3</div>
+<div id='d196' class='colors'>
+CadetBlue4</div>
+<div id='d197' class='colors'>
+turquoise1</div>
+<div id='d198' class='colors'>
+turquoise2</div>
+<div id='d199' class='colors'>
+turquoise3</div>
+<div id='d200' class='colors'>
+turquoise4</div>
+<div id='d201' class='colors'>
+cadet blue</div>
+<div id='d202' class='colors'>
+CadetBlue</div>
+<div id='d203' class='colors'>
+DarkTurquoise</div>
+<div id='d204' class='colors'>
+azure</div>
+<div id='d205' class='colors'>
+azure1</div>
+<div id='d206' class='colors'>
+LightCyan</div>
+<div id='d207' class='colors'>
+LightCyan1</div>
+<div id='d208' class='colors'>
+azure2</div>
+<div id='d209' class='colors'>
+LightCyan2</div>
+<div id='d210' class='colors'>
+PaleTurquoise1</div>
+<div id='d211' class='colors'>
+PaleTurquoise</div>
+<div id='d212' class='colors'>
+PaleTurquoise2</div>
+<div id='d213' class='colors'>
+DarkSlateGray1</div>
+<div id='d214' class='colors'>
+azure3</div>
+<div id='d215' class='colors'>
+LightCyan3</div>
+<div id='d216' class='colors'>
+DarkSlateGray2</div>
+<div id='d217' class='colors'>
+PaleTurquoise3</div>
+<div id='d218' class='colors'>
+DarkSlateGray3</div>
+<div id='d219' class='colors'>
+azure4</div>
+<div id='d220' class='colors'>
+LightCyan4</div>
+<div id='d221' class='colors'>
+aqua</div>
+<div id='d222' class='colors'>
+cyan</div>
+<div id='d223' class='colors'>
+cyan1</div>
+<div id='d224' class='colors'>
+PaleTurquoise4</div>
+<div id='d225' class='colors'>
+cyan2</div>
+<div id='d226' class='colors'>
+DarkSlateGray4</div>
+<div id='d227' class='colors'>
+cyan3</div>
+<div id='d228' class='colors'>
+cyan4</div>
+<div id='d229' class='colors'>
+DarkCyan</div>
+<div id='d230' class='colors'>
+teal</div>
+<div id='d231' class='colors'>
+DarkSlateGray</div>
+<div id='d232' class='colors'>
+DarkSlateGrey</div>
+<div id='d233' class='colors'>
+MediumTurquoise</div>
+<div id='d234' class='colors'>
+LightSeaGreen</div>
+<div id='d235' class='colors'>
+turquoise</div>
+<div id='d236' class='colors'>
+aquamarine4</div>
+<div id='d237' class='colors'>
+aquamarine</div>
+<div id='d238' class='colors'>
+aquamarine1</div>
+<div id='d239' class='colors'>
+aquamarine2</div>
+<div id='d240' class='colors'>
+aquamarine3</div>
+<div id='d241' class='colors'>
+MediumAquamarine</div>
+<div id='d242' class='colors'>
+MediumSpringGreen</div>
+<div id='d243' class='colors'>
+MintCream</div>
+<div id='d244' class='colors'>
+SpringGreen</div>
+<div id='d245' class='colors'>
+SpringGreen1</div>
+<div id='d246' class='colors'>
+SpringGreen2</div>
+<div id='d247' class='colors'>
+SpringGreen3</div>
+<div id='d248' class='colors'>
+SpringGreen4</div>
+<div id='d249' class='colors'>
+MediumSeaGreen</div>
+<div id='d250' class='colors'>
+SeaGreen</div>
+<div id='d251' class='colors'>
+SeaGreen3</div>
+<div id='d252' class='colors'>
+SeaGreen1</div>
+<div id='d253' class='colors'>
+SeaGreen4</div>
+<div id='d254' class='colors'>
+SeaGreen2</div>
+<div id='d255' class='colors'>
+MediumForestGreen</div>
+<div id='d256' class='colors'>
+honeydew</div>
+<div id='d257' class='colors'>
+honeydew1</div>
+<div id='d258' class='colors'>
+honeydew2</div>
+<div id='d259' class='colors'>
+DarkSeaGreen1</div>
+<div id='d260' class='colors'>
+DarkSeaGreen2</div>
+<div id='d261' class='colors'>
+PaleGreen1</div>
+<div id='d262' class='colors'>
+PaleGreen</div>
+<div id='d263' class='colors'>
+honeydew3</div>
+<div id='d264' class='colors'>
+LightGreen</div>
+<div id='d265' class='colors'>
+PaleGreen2</div>
+<div id='d266' class='colors'>
+DarkSeaGreen3</div>
+<div id='d267' class='colors'>
+DarkSeaGreen</div>
+<div id='d268' class='colors'>
+PaleGreen3</div>
+<div id='d269' class='colors'>
+honeydew4</div>
+<div id='d270' class='colors'>
+green1</div>
+<div id='d271' class='colors'>
+lime</div>
+<div id='d272' class='colors'>
+LimeGreen</div>
+<div id='d273' class='colors'>
+DarkSeaGreen4</div>
+<div id='d274' class='colors'>
+green2</div>
+<div id='d275' class='colors'>
+PaleGreen4</div>
+<div id='d276' class='colors'>
+green3</div>
+<div id='d277' class='colors'>
+ForestGreen</div>
+<div id='d278' class='colors'>
+green4</div>
+<div id='d279' class='colors'>
+green</div>
+<div id='d280' class='colors'>
+DarkGreen</div>
+<div id='d281' class='colors'>
+LawnGreen</div>
+<div id='d282' class='colors'>
+chartreuse</div>
+<div id='d283' class='colors'>
+chartreuse1</div>
+<div id='d284' class='colors'>
+chartreuse2</div>
+<div id='d285' class='colors'>
+chartreuse3</div>
+<div id='d286' class='colors'>
+chartreuse4</div>
+<div id='d287' class='colors'>
+GreenYellow</div>
+<div id='d288' class='colors'>
+DarkOliveGreen3</div>
+<div id='d289' class='colors'>
+DarkOliveGreen1</div>
+<div id='d290' class='colors'>
+DarkOliveGreen2</div>
+<div id='d291' class='colors'>
+DarkOliveGreen4</div>
+<div id='d292' class='colors'>
+DarkOliveGreen</div>
+<div id='d293' class='colors'>
+OliveDrab</div>
+<div id='d294' class='colors'>
+OliveDrab1</div>
+<div id='d295' class='colors'>
+OliveDrab2</div>
+<div id='d296' class='colors'>
+OliveDrab3</div>
+<div id='d297' class='colors'>
+YellowGreen</div>
+<div id='d298' class='colors'>
+OliveDrab4</div>
+<div id='d299' class='colors'>
+ivory</div>
+<div id='d300' class='colors'>
+ivory1</div>
+<div id='d301' class='colors'>
+LightYellow</div>
+<div id='d302' class='colors'>
+LightYellow1</div>
+<div id='d303' class='colors'>
+beige</div>
+<div id='d304' class='colors'>
+ivory2</div>
+<div id='d305' class='colors'>
+LightGoldenrodYellow</div>
+<div id='d306' class='colors'>
+LightYellow2</div>
+<div id='d307' class='colors'>
+ivory3</div>
+<div id='d308' class='colors'>
+LightYellow3</div>
+<div id='d309' class='colors'>
+ivory4</div>
+<div id='d310' class='colors'>
+LightYellow4</div>
+<div id='d311' class='colors'>
+yellow</div>
+<div id='d312' class='colors'>
+yellow1</div>
+<div id='d313' class='colors'>
+yellow2</div>
+<div id='d314' class='colors'>
+yellow3</div>
+<div id='d315' class='colors'>
+yellow4</div>
+<div id='d316' class='colors'>
+olive</div>
+<div id='d317' class='colors'>
+DarkKhaki</div>
+<div id='d318' class='colors'>
+khaki2</div>
+<div id='d319' class='colors'>
+LemonChiffon4</div>
+<div id='d320' class='colors'>
+khaki1</div>
+<div id='d321' class='colors'>
+khaki3</div>
+<div id='d322' class='colors'>
+khaki4</div>
+<div id='d323' class='colors'>
+PaleGoldenrod</div>
+<div id='d324' class='colors'>
+LemonChiffon</div>
+<div id='d325' class='colors'>
+LemonChiffon1</div>
+<div id='d326' class='colors'>
+khaki</div>
+<div id='d327' class='colors'>
+LemonChiffon3</div>
+<div id='d328' class='colors'>
+LemonChiffon2</div>
+<div id='d329' class='colors'>
+MediumGoldenRod</div>
+<div id='d330' class='colors'>
+cornsilk4</div>
+<div id='d331' class='colors'>
+gold</div>
+<div id='d332' class='colors'>
+gold1</div>
+<div id='d333' class='colors'>
+gold2</div>
+<div id='d334' class='colors'>
+gold3</div>
+<div id='d335' class='colors'>
+gold4</div>
+<div id='d336' class='colors'>
+LightGoldenrod</div>
+<div id='d337' class='colors'>
+LightGoldenrod4</div>
+<div id='d338' class='colors'>
+LightGoldenrod1</div>
+<div id='d339' class='colors'>
+LightGoldenrod3</div>
+<div id='d340' class='colors'>
+LightGoldenrod2</div>
+<div id='d341' class='colors'>
+cornsilk3</div>
+<div id='d342' class='colors'>
+cornsilk2</div>
+<div id='d343' class='colors'>
+cornsilk</div>
+<div id='d344' class='colors'>
+cornsilk1</div>
+<div id='d345' class='colors'>
+goldenrod</div>
+<div id='d346' class='colors'>
+goldenrod1</div>
+<div id='d347' class='colors'>
+goldenrod2</div>
+<div id='d348' class='colors'>
+goldenrod3</div>
+<div id='d349' class='colors'>
+goldenrod4</div>
+<div id='d350' class='colors'>
+DarkGoldenrod</div>
+<div id='d351' class='colors'>
+DarkGoldenrod1</div>
+<div id='d352' class='colors'>
+DarkGoldenrod2</div>
+<div id='d353' class='colors'>
+DarkGoldenrod3</div>
+<div id='d354' class='colors'>
+DarkGoldenrod4</div>
+<div id='d355' class='colors'>
+FloralWhite</div>
+<div id='d356' class='colors'>
+wheat2</div>
+<div id='d357' class='colors'>
+OldLace</div>
+<div id='d358' class='colors'>
+wheat</div>
+<div id='d359' class='colors'>
+wheat1</div>
+<div id='d360' class='colors'>
+wheat3</div>
+<div id='d361' class='colors'>
+orange</div>
+<div id='d362' class='colors'>
+orange1</div>
+<div id='d363' class='colors'>
+orange2</div>
+<div id='d364' class='colors'>
+orange3</div>
+<div id='d365' class='colors'>
+orange4</div>
+<div id='d366' class='colors'>
+wheat4</div>
+<div id='d367' class='colors'>
+moccasin</div>
+<div id='d368' class='colors'>
+PapayaWhip</div>
+<div id='d369' class='colors'>
+NavajoWhite3</div>
+<div id='d370' class='colors'>
+BlanchedAlmond</div>
+<div id='d371' class='colors'>
+NavajoWhite</div>
+<div id='d372' class='colors'>
+NavajoWhite1</div>
+<div id='d373' class='colors'>
+NavajoWhite2</div>
+<div id='d374' class='colors'>
+NavajoWhite4</div>
+<div id='d375' class='colors'>
+AntiqueWhite4</div>
+<div id='d376' class='colors'>
+AntiqueWhite</div>
+<div id='d377' class='colors'>
+tan</div>
+<div id='d378' class='colors'>
+bisque4</div>
+<div id='d379' class='colors'>
+burlywood</div>
+<div id='d380' class='colors'>
+AntiqueWhite2</div>
+<div id='d381' class='colors'>
+burlywood1</div>
+<div id='d382' class='colors'>
+burlywood3</div>
+<div id='d383' class='colors'>
+burlywood2</div>
+<div id='d384' class='colors'>
+AntiqueWhite1</div>
+<div id='d385' class='colors'>
+burlywood4</div>
+<div id='d386' class='colors'>
+AntiqueWhite3</div>
+<div id='d387' class='colors'>
+DarkOrange</div>
+<div id='d388' class='colors'>
+bisque2</div>
+<div id='d389' class='colors'>
+bisque</div>
+<div id='d390' class='colors'>
+bisque1</div>
+<div id='d391' class='colors'>
+bisque3</div>
+<div id='d392' class='colors'>
+DarkOrange1</div>
+<div id='d393' class='colors'>
+linen</div>
+<div id='d394' class='colors'>
+DarkOrange2</div>
+<div id='d395' class='colors'>
+DarkOrange3</div>
+<div id='d396' class='colors'>
+DarkOrange4</div>
+<div id='d397' class='colors'>
+peru</div>
+<div id='d398' class='colors'>
+tan1</div>
+<div id='d399' class='colors'>
+tan2</div>
+<div id='d400' class='colors'>
+tan3</div>
+<div id='d401' class='colors'>
+tan4</div>
+<div id='d402' class='colors'>
+PeachPuff</div>
+<div id='d403' class='colors'>
+PeachPuff1</div>
+<div id='d404' class='colors'>
+PeachPuff4</div>
+<div id='d405' class='colors'>
+PeachPuff2</div>
+<div id='d406' class='colors'>
+PeachPuff3</div>
+<div id='d407' class='colors'>
+SandyBrown</div>
+<div id='d408' class='colors'>
+seashell4</div>
+<div id='d409' class='colors'>
+seashell2</div>
+<div id='d410' class='colors'>
+seashell3</div>
+<div id='d411' class='colors'>
+chocolate</div>
+<div id='d412' class='colors'>
+chocolate1</div>
+<div id='d413' class='colors'>
+chocolate2</div>
+<div id='d414' class='colors'>
+chocolate3</div>
+<div id='d415' class='colors'>
+chocolate4</div>
+<div id='d416' class='colors'>
+SaddleBrown</div>
+<div id='d417' class='colors'>
+seashell</div>
+<div id='d418' class='colors'>
+seashell1</div>
+<div id='d419' class='colors'>
+sienna4</div>
+<div id='d420' class='colors'>
+sienna</div>
+<div id='d421' class='colors'>
+sienna1</div>
+<div id='d422' class='colors'>
+sienna2</div>
+<div id='d423' class='colors'>
+sienna3</div>
+<div id='d424' class='colors'>
+LightSalmon3</div>
+<div id='d425' class='colors'>
+LightSalmon</div>
+<div id='d426' class='colors'>
+LightSalmon1</div>
+<div id='d427' class='colors'>
+LightSalmon4</div>
+<div id='d428' class='colors'>
+LightSalmon2</div>
+<div id='d429' class='colors'>
+coral</div>
+<div id='d430' class='colors'>
+OrangeRed</div>
+<div id='d431' class='colors'>
+OrangeRed1</div>
+<div id='d432' class='colors'>
+OrangeRed2</div>
+<div id='d433' class='colors'>
+OrangeRed3</div>
+<div id='d434' class='colors'>
+OrangeRed4</div>
+<div id='d435' class='colors'>
+DarkSalmon</div>
+<div id='d436' class='colors'>
+salmon1</div>
+<div id='d437' class='colors'>
+salmon2</div>
+<div id='d438' class='colors'>
+salmon3</div>
+<div id='d439' class='colors'>
+salmon4</div>
+<div id='d440' class='colors'>
+coral1</div>
+<div id='d441' class='colors'>
+coral2</div>
+<div id='d442' class='colors'>
+coral3</div>
+<div id='d443' class='colors'>
+coral4</div>
+<div id='d444' class='colors'>
+tomato4</div>
+<div id='d445' class='colors'>
+tomato</div>
+<div id='d446' class='colors'>
+tomato1</div>
+<div id='d447' class='colors'>
+tomato2</div>
+<div id='d448' class='colors'>
+tomato3</div>
+<div id='d449' class='colors'>
+MistyRose4</div>
+<div id='d450' class='colors'>
+MistyRose2</div>
+<div id='d451' class='colors'>
+MistyRose</div>
+<div id='d452' class='colors'>
+MistyRose1</div>
+<div id='d453' class='colors'>
+salmon</div>
+<div id='d454' class='colors'>
+MistyRose3</div>
+<div id='d455' class='colors'>
+white</div>
+<div id='d456' class='colors'>
+gray100</div>
+<div id='d457' class='colors'>
+grey100</div>
+<div id='d458' class='colors'>
+grey100</div>
+<div id='d459' class='colors'>
+gray99</div>
+<div id='d460' class='colors'>
+grey99</div>
+<div id='d461' class='colors'>
+gray98</div>
+<div id='d462' class='colors'>
+grey98</div>
+<div id='d463' class='colors'>
+gray97</div>
+<div id='d464' class='colors'>
+grey97</div>
+<div id='d465' class='colors'>
+gray96</div>
+<div id='d466' class='colors'>
+grey96</div>
+<div id='d467' class='colors'>
+WhiteSmoke</div>
+<div id='d468' class='colors'>
+gray95</div>
+<div id='d469' class='colors'>
+grey95</div>
+<div id='d470' class='colors'>
+gray94</div>
+<div id='d471' class='colors'>
+grey94</div>
+<div id='d472' class='colors'>
+gray93</div>
+<div id='d473' class='colors'>
+grey93</div>
+<div id='d474' class='colors'>
+gray92</div>
+<div id='d475' class='colors'>
+grey92</div>
+<div id='d476' class='colors'>
+gray91</div>
+<div id='d477' class='colors'>
+grey91</div>
+<div id='d478' class='colors'>
+gray90</div>
+<div id='d479' class='colors'>
+grey90</div>
+<div id='d480' class='colors'>
+gray89</div>
+<div id='d481' class='colors'>
+grey89</div>
+<div id='d482' class='colors'>
+gray88</div>
+<div id='d483' class='colors'>
+grey88</div>
+<div id='d484' class='colors'>
+gray87</div>
+<div id='d485' class='colors'>
+grey87</div>
+<div id='d486' class='colors'>
+gainsboro</div>
+<div id='d487' class='colors'>
+gray86</div>
+<div id='d488' class='colors'>
+grey86</div>
+<div id='d489' class='colors'>
+gray85</div>
+<div id='d490' class='colors'>
+grey85</div>
+<div id='d491' class='colors'>
+gray84</div>
+<div id='d492' class='colors'>
+grey84</div>
+<div id='d493' class='colors'>
+gray83</div>
+<div id='d494' class='colors'>
+grey83</div>
+<div id='d495' class='colors'>
+LightGray</div>
+<div id='d496' class='colors'>
+LightGrey</div>
+<div id='d497' class='colors'>
+gray82</div>
+<div id='d498' class='colors'>
+grey82</div>
+<div id='d499' class='colors'>
+gray81</div>
+<div id='d500' class='colors'>
+grey81</div>
+<div id='d501' class='colors'>
+gray80</div>
+<div id='d502' class='colors'>
+grey80</div>
+<div id='d503' class='colors'>
+gray79</div>
+<div id='d504' class='colors'>
+grey79</div>
+<div id='d505' class='colors'>
+gray78</div>
+<div id='d506' class='colors'>
+grey78</div>
+<div id='d507' class='colors'>
+gray77</div>
+<div id='d508' class='colors'>
+grey77</div>
+<div id='d509' class='colors'>
+gray76</div>
+<div id='d510' class='colors'>
+grey76</div>
+<div id='d511' class='colors'>
+silver</div>
+<div id='d512' class='colors'>
+gray75</div>
+<div id='d513' class='colors'>
+grey75</div>
+<div id='d514' class='colors'>
+gray74</div>
+<div id='d515' class='colors'>
+grey74</div>
+<div id='d516' class='colors'>
+gray73</div>
+<div id='d517' class='colors'>
+grey73</div>
+<div id='d518' class='colors'>
+gray72</div>
+<div id='d519' class='colors'>
+grey72</div>
+<div id='d520' class='colors'>
+gray71</div>
+<div id='d521' class='colors'>
+grey71</div>
+<div id='d522' class='colors'>
+gray70</div>
+<div id='d523' class='colors'>
+grey70</div>
+<div id='d524' class='colors'>
+gray69</div>
+<div id='d525' class='colors'>
+grey69</div>
+<div id='d526' class='colors'>
+gray68</div>
+<div id='d527' class='colors'>
+grey68</div>
+<div id='d528' class='colors'>
+gray67</div>
+<div id='d529' class='colors'>
+grey67</div>
+<div id='d530' class='colors'>
+DarkGray</div>
+<div id='d531' class='colors'>
+DarkGrey</div>
+<div id='d532' class='colors'>
+gray66</div>
+<div id='d533' class='colors'>
+grey66</div>
+<div id='d534' class='colors'>
+gray65</div>
+<div id='d535' class='colors'>
+grey65</div>
+<div id='d536' class='colors'>
+gray64</div>
+<div id='d537' class='colors'>
+grey64</div>
+<div id='d538' class='colors'>
+gray63</div>
+<div id='d539' class='colors'>
+grey63</div>
+<div id='d540' class='colors'>
+gray62</div>
+<div id='d541' class='colors'>
+grey62</div>
+<div id='d542' class='colors'>
+gray61</div>
+<div id='d543' class='colors'>
+grey61</div>
+<div id='d544' class='colors'>
+gray60</div>
+<div id='d545' class='colors'>
+grey60</div>
+<div id='d546' class='colors'>
+gray59</div>
+<div id='d547' class='colors'>
+grey59</div>
+<div id='d548' class='colors'>
+gray58</div>
+<div id='d549' class='colors'>
+grey58</div>
+<div id='d550' class='colors'>
+gray57</div>
+<div id='d551' class='colors'>
+grey57</div>
+<div id='d552' class='colors'>
+gray56</div>
+<div id='d553' class='colors'>
+grey56</div>
+<div id='d554' class='colors'>
+gray55</div>
+<div id='d555' class='colors'>
+grey55</div>
+<div id='d556' class='colors'>
+gray54</div>
+<div id='d557' class='colors'>
+grey54</div>
+<div id='d558' class='colors'>
+gray53</div>
+<div id='d559' class='colors'>
+grey53</div>
+<div id='d560' class='colors'>
+gray52</div>
+<div id='d561' class='colors'>
+grey52</div>
+<div id='d562' class='colors'>
+gray51</div>
+<div id='d563' class='colors'>
+grey51</div>
+<div id='d564' class='colors'>
+fractal</div>
+<div id='d565' class='colors'>
+gray50</div>
+<div id='d566' class='colors'>
+grey50</div>
+<div id='d567' class='colors'>
+gray</div>
+<div id='d568' class='colors'>
+gray49</div>
+<div id='d569' class='colors'>
+grey49</div>
+<div id='d570' class='colors'>
+gray48</div>
+<div id='d571' class='colors'>
+grey48</div>
+<div id='d572' class='colors'>
+gray47</div>
+<div id='d573' class='colors'>
+grey47</div>
+<div id='d574' class='colors'>
+gray46</div>
+<div id='d575' class='colors'>
+grey46</div>
+<div id='d576' class='colors'>
+gray45</div>
+<div id='d577' class='colors'>
+grey45</div>
+<div id='d578' class='colors'>
+gray44</div>
+<div id='d579' class='colors'>
+grey44</div>
+<div id='d580' class='colors'>
+gray43</div>
+<div id='d581' class='colors'>
+grey43</div>
+<div id='d582' class='colors'>
+gray42</div>
+<div id='d583' class='colors'>
+grey42</div>
+<div id='d584' class='colors'>
+DimGray</div>
+<div id='d585' class='colors'>
+DimGrey</div>
+<div id='d586' class='colors'>
+gray41</div>
+<div id='d587' class='colors'>
+grey41</div>
+<div id='d588' class='colors'>
+gray40</div>
+<div id='d589' class='colors'>
+grey40</div>
+<div id='d590' class='colors'>
+gray39</div>
+<div id='d591' class='colors'>
+grey39</div>
+<div id='d592' class='colors'>
+gray38</div>
+<div id='d593' class='colors'>
+grey38</div>
+<div id='d594' class='colors'>
+gray37</div>
+<div id='d595' class='colors'>
+grey37</div>
+<div id='d596' class='colors'>
+gray36</div>
+<div id='d597' class='colors'>
+grey36</div>
+<div id='d598' class='colors'>
+gray35</div>
+<div id='d599' class='colors'>
+grey35</div>
+<div id='d600' class='colors'>
+gray34</div>
+<div id='d601' class='colors'>
+grey34</div>
+<div id='d602' class='colors'>
+gray33</div>
+<div id='d603' class='colors'>
+grey33</div>
+<div id='d604' class='colors'>
+gray32</div>
+<div id='d605' class='colors'>
+grey32</div>
+<div id='d606' class='colors'>
+gray31</div>
+<div id='d607' class='colors'>
+grey31</div>
+<div id='d608' class='colors'>
+gray30</div>
+<div id='d609' class='colors'>
+grey30</div>
+<div id='d610' class='colors'>
+gray29</div>
+<div id='d611' class='colors'>
+grey29</div>
+<div id='d612' class='colors'>
+gray28</div>
+<div id='d613' class='colors'>
+grey28</div>
+<div id='d614' class='colors'>
+gray27</div>
+<div id='d615' class='colors'>
+grey27</div>
+<div id='d616' class='colors'>
+gray26</div>
+<div id='d617' class='colors'>
+grey26</div>
+<div id='d618' class='colors'>
+gray25</div>
+<div id='d619' class='colors'>
+grey25</div>
+<div id='d620' class='colors'>
+gray24</div>
+<div id='d621' class='colors'>
+grey24</div>
+<div id='d622' class='colors'>
+gray23</div>
+<div id='d623' class='colors'>
+grey23</div>
+<div id='d624' class='colors'>
+gray22</div>
+<div id='d625' class='colors'>
+grey22</div>
+<div id='d626' class='colors'>
+gray21</div>
+<div id='d627' class='colors'>
+grey21</div>
+<div id='d628' class='colors'>
+gray20</div>
+<div id='d629' class='colors'>
+grey20</div>
+<div id='d630' class='colors'>
+gray19</div>
+<div id='d631' class='colors'>
+grey19</div>
+<div id='d632' class='colors'>
+gray18</div>
+<div id='d633' class='colors'>
+grey18</div>
+<div id='d634' class='colors'>
+gray17</div>
+<div id='d635' class='colors'>
+grey17</div>
+<div id='d636' class='colors'>
+gray16</div>
+<div id='d637' class='colors'>
+grey16</div>
+<div id='d638' class='colors'>
+gray15</div>
+<div id='d639' class='colors'>
+grey15</div>
+<div id='d640' class='colors'>
+gray14</div>
+<div id='d641' class='colors'>
+grey14</div>
+<div id='d642' class='colors'>
+gray13</div>
+<div id='d643' class='colors'>
+grey13</div>
+<div id='d644' class='colors'>
+gray12</div>
+<div id='d645' class='colors'>
+grey12</div>
+<div id='d646' class='colors'>
+gray11</div>
+<div id='d647' class='colors'>
+grey11</div>
+<div id='d648' class='colors'>
+gray10</div>
+<div id='d649' class='colors'>
+grey10</div>
+<div id='d650' class='colors'>
+gray9</div>
+<div id='d651' class='colors'>
+grey9</div>
+<div id='d652' class='colors'>
+gray8</div>
+<div id='d653' class='colors'>
+grey8</div>
+<div id='d654' class='colors'>
+gray7</div>
+<div id='d655' class='colors'>
+grey7</div>
+<div id='d656' class='colors'>
+gray6</div>
+<div id='d657' class='colors'>
+grey6</div>
+<div id='d658' class='colors'>
+gray5</div>
+<div id='d659' class='colors'>
+grey5</div>
+<div id='d660' class='colors'>
+gray4</div>
+<div id='d661' class='colors'>
+grey4</div>
+<div id='d662' class='colors'>
+gray3</div>
+<div id='d663' class='colors'>
+grey3</div>
+<div id='d664' class='colors'>
+gray2</div>
+<div id='d665' class='colors'>
+grey2</div>
+<div id='d666' class='colors'>
+gray1</div>
+<div id='d667' class='colors'>
+grey1</div>
+<div id='d668' class='colors'>
+black</div>
+<div id='d669' class='colors'>
+gray0</div>
+<div id='d670' class='colors'>
+grey0</div>
+<div id='d671' class='colors'>
+opaque</div>
+<div id='d672' class='colors'>
+none</div>
+<div id='d673' class='colors'>
+transparent</div>
+</div>
+
+<div id='colornames'>
+WHERE THE COLORNAMES WILL GO
+</div>
+
+<div id='hexswitch'>CLICK TO SHOW HEXES</div>
+<div id='infoswitch'>CLICK TO SHOW INFO</div>
+<input id='namespace' type='text'></input>
+<script type='text/javascript' src='js/jquery-1.6.4.min.js'></script>
+<script type='text/javascript' src='js/colordict.js'></script>
+
+<script type='text/javascript'>
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newwidth = goldenize(result)
+ widthval = newwidth.toString()+'px'
+ $(idandselectr).css('width', widthval)
+ }
+makegolden('.colors', 'height')
+
+//threewayselector for what goes in the divs
+infostate = 1
+function switchinfo()
+ {
+ if(infostate == 0)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(divtoname[divlist[i]])
+ };
+ infostate = 1
+ }
+ else if(infostate == 1)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html("")
+ };
+ infostate = 2
+ }
+ else if(infostate == 2)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(nametohex[divtoname[divlist[i]]])
+ };
+ infostate = 0
+ }
+ }
+
+$('#infoswitch').click(function(){switchinfo()})
+
+//takes a div name and returns a colorname
+
+function showcolorname(divstr)
+
+ {
+ colorname = divtoname['#'+divstr]
+ hex = nametohex[colorname]
+ imname = hextoname[hex]
+ if (hexes == true)
+ {
+ imname = hex
+ }
+ return imname
+ }
+function bigname(divstr)
+ {
+ colorname = showcolorname(divstr)
+ $('#colornames').html(colorname)
+ }
+function writeit(text)
+ {
+ $('#colornames').append(text)
+ }
+function makebig(divstr)
+ {
+ firstheight = $('#'+divstr).height()
+ newheight = goldenize(goldenize(firstheight))
+ $('#'+divstr).height(newheight)
+ }
+function makesmall(divstr)
+ {
+ oldheight = $('.colors').height()
+ $('#'+divstr).height(oldheight)
+ }
+var choice;
+$('.colors').hover(function() {
+ bigname(this.id);
+// makebig(this.id);
+// makegolden('#'+this.id, 'height')},
+//function(){
+// makesmall(this.id);
+// makegolden('#'+this.id, 'height')
+});
+$('.colors').mouseover(function(){
+ if(this.id != 'd0'){
+ makebig(this.id);
+ makegolden('#'+this.id, 'height')
+ }})
+$('.colors').mouseout(function(){
+ makesmall(this.id);
+ makegolden('#'+this.id,'height');
+ })
+$(".colors").hover(function(){
+$('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+ });
+$('body').css('background-color', 'black')
+$('.colors').css('margin-top', '2px')
+var hexes = false
+function hexswitch()
+ {
+ if(hexes == false)
+ {
+ $('#hexswitch').html('CLICK TO SHOW COLOR NAMES')
+ hexes = true;
+ }
+
+ else
+ {
+ $('#hexswitch').html('CLICK TO SHOW HEX NAMES')
+ hexes = false;
+ }
+ }
+$('#hexswitch').click(function(){hexswitch()})
+
+$('.colors').click(function(){
+ putitin()
+ })
+
+function putitin()
+ {
+ $('#namespace').val($('#colornames').html())
+ }
+
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/colors/junk/divlist.js b/frontend/imgrid/colors/colors/junk/divlist.js
new file mode 100755
index 0000000..49ee990
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/divlist.js
@@ -0,0 +1,2 @@
+var divlist = ['#d0', '#d1', '#d2', '#d3', '#d4', '#d5', '#d6', '#d7', '#d8', '#d9', '#d10', '#d11', '#d12', '#d13', '#d14', '#d15', '#d16', '#d17', '#d18', '#d19', '#d20', '#d21', '#d22', '#d23', '#d24', '#d25', '#d26', '#d27', '#d28', '#d29', '#d30', '#d31', '#d32', '#d33', '#d34', '#d35', '#d36', '#d37', '#d38', '#d39', '#d40', '#d41', '#d42', '#d43', '#d44', '#d45', '#d46', '#d47', '#d48', '#d49', '#d50', '#d51', '#d52', '#d53', '#d54', '#d55', '#d56', '#d57', '#d58', '#d59', '#d60', '#d61', '#d62', '#d63', '#d64', '#d65', '#d66', '#d67', '#d68', '#d69', '#d70', '#d71', '#d72', '#d73', '#d74', '#d75', '#d76', '#d77', '#d78', '#d79', '#d80', '#d81', '#d82', '#d83', '#d84', '#d85', '#d86', '#d87', '#d88', '#d89', '#d90', '#d91', '#d92', '#d93', '#d94', '#d95', '#d96', '#d97', '#d98', '#d99', '#d100', '#d101', '#d102', '#d103', '#d104', '#d105', '#d106', '#d107', '#d108', '#d109', '#d110', '#d111', '#d112', '#d113', '#d114', '#d115', '#d116', '#d117', '#d118', '#d119', '#d120', '#d121', '#d122', '#d123', '#d124', '#d125', '#d126', '#d127', '#d128', '#d129', '#d130', '#d131', '#d132', '#d133', '#d134', '#d135', '#d136', '#d137', '#d138', '#d139', '#d140', '#d141', '#d142', '#d143', '#d144', '#d145', '#d146', '#d147', '#d148', '#d149', '#d150', '#d151', '#d152', '#d153', '#d154', '#d155', '#d156', '#d157', '#d158', '#d159', '#d160', '#d161', '#d162', '#d163', '#d164', '#d165', '#d166', '#d167', '#d168', '#d169', '#d170', '#d171', '#d172', '#d173', '#d174', '#d175', '#d176', '#d177', '#d178', '#d179', '#d180', '#d181', '#d182', '#d183', '#d184', '#d185', '#d186', '#d187', '#d188', '#d189', '#d190', '#d191', '#d192', '#d193', '#d194', '#d195', '#d196', '#d197', '#d198', '#d199', '#d200', '#d201', '#d202', '#d203', '#d204', '#d205', '#d206', '#d207', '#d208', '#d209', '#d210', '#d211', '#d212', '#d213', '#d214', '#d215', '#d216', '#d217', '#d218', '#d219', '#d220', '#d221', '#d222', '#d223', '#d224', '#d225', '#d226', '#d227', '#d228', '#d229', '#d230', '#d231', '#d232', '#d233', '#d234', '#d235', '#d236', '#d237', '#d238', '#d239', '#d240', '#d241', '#d242', '#d243', '#d244', '#d245', '#d246', '#d247', '#d248', '#d249', '#d250', '#d251', '#d252', '#d253', '#d254', '#d255', '#d256', '#d257', '#d258', '#d259', '#d260', '#d261', '#d262', '#d263', '#d264', '#d265', '#d266', '#d267', '#d268', '#d269', '#d270', '#d271', '#d272', '#d273', '#d274', '#d275', '#d276', '#d277', '#d278', '#d279', '#d280', '#d281', '#d282', '#d283', '#d284', '#d285', '#d286', '#d287', '#d288', '#d289', '#d290', '#d291', '#d292', '#d293', '#d294', '#d295', '#d296', '#d297', '#d298', '#d299', '#d300', '#d301', '#d302', '#d303', '#d304', '#d305', '#d306', '#d307', '#d308', '#d309', '#d310', '#d311', '#d312', '#d313', '#d314', '#d315', '#d316', '#d317', '#d318', '#d319', '#d320', '#d321', '#d322', '#d323', '#d324', '#d325', '#d326', '#d327', '#d328', '#d329', '#d330', '#d331', '#d332', '#d333', '#d334', '#d335', '#d336', '#d337', '#d338', '#d339', '#d340', '#d341', '#d342', '#d343', '#d344', '#d345', '#d346', '#d347', '#d348', '#d349', '#d350', '#d351', '#d352', '#d353', '#d354', '#d355', '#d356', '#d357', '#d358', '#d359', '#d360', '#d361', '#d362', '#d363', '#d364', '#d365', '#d366', '#d367', '#d368', '#d369', '#d370', '#d371', '#d372', '#d373', '#d374', '#d375', '#d376', '#d377', '#d378', '#d379', '#d380', '#d381', '#d382', '#d383', '#d384', '#d385', '#d386', '#d387', '#d388', '#d389', '#d390', '#d391', '#d392', '#d393', '#d394', '#d395', '#d396', '#d397', '#d398', '#d399', '#d400', '#d401', '#d402', '#d403', '#d404', '#d405', '#d406', '#d407', '#d408', '#d409', '#d410', '#d411', '#d412', '#d413', '#d414', '#d415', '#d416', '#d417', '#d418', '#d419', '#d420', '#d421', '#d422', '#d423', '#d424', '#d425', '#d426', '#d427', '#d428', '#d429', '#d430', '#d431', '#d432', '#d433', '#d434', '#d435', '#d436', '#d437', '#d438', '#d439', '#d440', '#d441', '#d442', '#d443', '#d444', '#d445', '#d446', '#d447', '#d448', '#d449', '#d450', '#d451', '#d452', '#d453', '#d454', '#d455', '#d456', '#d457', '#d458', '#d459', '#d460', '#d461', '#d462', '#d463', '#d464', '#d465', '#d466', '#d467', '#d468', '#d469', '#d470', '#d471', '#d472', '#d473', '#d474', '#d475', '#d476', '#d477', '#d478', '#d479', '#d480', '#d481', '#d482', '#d483', '#d484', '#d485', '#d486', '#d487', '#d488', '#d489', '#d490', '#d491', '#d492', '#d493', '#d494', '#d495', '#d496', '#d497', '#d498', '#d499', '#d500', '#d501', '#d502', '#d503', '#d504', '#d505', '#d506', '#d507', '#d508', '#d509', '#d510', '#d511', '#d512', '#d513', '#d514', '#d515', '#d516', '#d517', '#d518', '#d519', '#d520', '#d521', '#d522', '#d523', '#d524', '#d525', '#d526', '#d527', '#d528', '#d529', '#d530', '#d531', '#d532', '#d533', '#d534', '#d535', '#d536', '#d537', '#d538', '#d539', '#d540', '#d541', '#d542', '#d543', '#d544', '#d545', '#d546', '#d547', '#d548', '#d549', '#d550', '#d551', '#d552', '#d553', '#d554', '#d555', '#d556', '#d557', '#d558', '#d559', '#d560', '#d561', '#d562', '#d563', '#d564', '#d565', '#d566', '#d567', '#d568', '#d569', '#d570', '#d571', '#d572', '#d573', '#d574', '#d575', '#d576', '#d577', '#d578', '#d579', '#d580', '#d581', '#d582', '#d583', '#d584', '#d585', '#d586', '#d587', '#d588', '#d589', '#d590', '#d591', '#d592', '#d593', '#d594', '#d595', '#d596', '#d597', '#d598', '#d599', '#d600', '#d601', '#d602', '#d603', '#d604', '#d605', '#d606', '#d607', '#d608', '#d609', '#d610', '#d611', '#d612', '#d613', '#d614', '#d615', '#d616', '#d617', '#d618', '#d619', '#d620', '#d621', '#d622', '#d623', '#d624', '#d625', '#d626', '#d627', '#d628', '#d629', '#d630', '#d631', '#d632', '#d633', '#d634', '#d635', '#d636', '#d637', '#d638', '#d639', '#d640', '#d641', '#d642', '#d643', '#d644', '#d645', '#d646', '#d647', '#d648', '#d649', '#d650', '#d651', '#d652', '#d653', '#d654', '#d655', '#d656', '#d657', '#d658', '#d659', '#d660', '#d661', '#d662', '#d663', '#d664', '#d665', '#d666', '#d667', '#d668', '#d669', '#d670', '#d671', '#d672', '#d673']
+var divtoname = {'#d322': 'khaki4', '#d600': 'gray34', '#d118': 'MediumPurple1', '#d119': 'MediumPurple2', '#d114': 'purple3', '#d115': 'purple4', '#d116': 'purple1', '#d117': 'MediumPurple', '#d110': 'purple', '#d111': 'indigo', '#d112': 'BlueViolet', '#d113': 'purple2', '#d529': 'grey67', '#d231': 'DarkSlateGray', '#d339': 'LightGoldenrod3', '#d233': 'MediumTurquoise', '#d232': 'DarkSlateGrey', '#d235': 'turquoise', '#d234': 'LightSeaGreen', '#d237': 'aquamarine', '#d236': 'aquamarine4', '#d239': 'aquamarine2', '#d238': 'aquamarine1', '#d332': 'gold1', '#d333': 'gold2', '#d334': 'gold3', '#d335': 'gold4', '#d336': 'LightGoldenrod', '#d337': 'LightGoldenrod4', '#d424': 'LightSalmon3', '#d425': 'LightSalmon', '#d426': 'LightSalmon1', '#d427': 'LightSalmon4', '#d420': 'sienna', '#d421': 'sienna1', '#d422': 'sienna2', '#d423': 'sienna3', '#d587': 'grey41', '#d586': 'gray41', '#d585': 'DimGrey', '#d584': 'DimGray', '#d428': 'LightSalmon2', '#d429': 'coral', '#d581': 'grey43', '#d580': 'gray43', '#d89': 'thistle4', '#d88': 'plum3', '#d349': 'goldenrod4', '#d348': 'goldenrod3', '#d81': 'thistle2', '#d80': 'thistle1', '#d83': 'plum2', '#d82': 'plum1', '#d85': 'thistle3', '#d84': 'thistle', '#d87': 'violet', '#d86': 'plum', '#d601': 'grey34', '#d67': 'DeepPink3', '#d66': 'DeepPink2', '#d65': 'DeepPink1', '#d64': 'DeepPink', '#d63': 'HotPink', '#d62': 'HotPink4', '#d61': 'HotPink1', '#d60': 'HotPink2', '#d69': 'maroon1', '#d68': 'DeepPink4', '#d510': 'grey76', '#d511': 'silver', '#d512': 'gray75', '#d513': 'grey75', '#d514': 'gray74', '#d515': 'grey74', '#d516': 'gray73', '#d517': 'grey73', '#d518': 'gray72', '#d519': 'grey72', '#d150': 'LightSteelBlue2', '#d151': 'LightSteelBlue3', '#d152': 'LightSteelBlue4', '#d153': 'SlateGray4', '#d154': 'SlateGray1', '#d155': 'SlateGray2', '#d156': 'SlateGray3', '#d157': 'LightSlateGray', '#d158': 'LightSlateGrey', '#d159': 'SlateGray', '#d565': 'gray50', '#d564': 'fractal', '#d567': 'gray', '#d566': 'grey50', '#d561': 'grey52', '#d560': 'gray52', '#d563': 'grey51', '#d562': 'gray51', '#d604': 'gray32', '#d605': 'grey32', '#d606': 'gray31', '#d607': 'grey31', '#d569': 'grey49', '#d568': 'gray49', '#d602': 'gray33', '#d603': 'grey33', '#d125': 'SlateBlue', '#d124': 'MediumSlateBlue', '#d127': 'SlateBlue2', '#d126': 'SlateBlue1', '#d121': 'MediumPurple4', '#d120': 'MediumPurple3', '#d123': 'LightSlateBlue', '#d122': 'DarkSlateBlue', '#d359': 'wheat1', '#d129': 'SlateBlue4', '#d128': 'SlateBlue3', '#d301': 'LightYellow', '#d300': 'ivory1', '#d303': 'beige', '#d302': 'LightYellow1', '#d305': 'LightGoldenrodYellow', '#d304': 'ivory2', '#d307': 'ivory3', '#d306': 'LightYellow2', '#d309': 'ivory4', '#d308': 'LightYellow3', '#d462': 'grey98', '#d351': 'DarkGoldenrod1', '#d464': 'grey97', '#d465': 'gray96', '#d466': 'grey96', '#d467': 'WhiteSmoke', '#d463': 'gray97', '#d268': 'PaleGreen3', '#d269': 'honeydew4', '#d266': 'DarkSeaGreen3', '#d267': 'DarkSeaGreen', '#d264': 'LightGreen', '#d265': 'PaleGreen2', '#d262': 'PaleGreen', '#d263': 'honeydew3', '#d260': 'DarkSeaGreen2', '#d261': 'PaleGreen1', '#d598': 'gray35', '#d29': 'firebrick4', '#d28': 'brown4', '#d23': 'red2', '#d22': 'firebrick3', '#d21': 'RosyBrown4', '#d20': 'red1', '#d27': 'IndianRed4', '#d26': 'red3', '#d25': 'brown', '#d24': 'firebrick', '#d599': 'grey35', '#d338': 'LightGoldenrod1', '#d419': 'sienna4', '#d418': 'seashell1', '#d230': 'teal', '#d415': 'chocolate4', '#d414': 'chocolate3', '#d417': 'seashell', '#d416': 'SaddleBrown', '#d411': 'chocolate', '#d410': 'seashell3', '#d413': 'chocolate2', '#d412': 'chocolate1', '#d398': 'tan1', '#d399': 'tan2', '#d392': 'DarkOrange1', '#d393': 'linen', '#d390': 'bisque1', '#d391': 'bisque3', '#d396': 'DarkOrange4', '#d397': 'peru', '#d394': 'DarkOrange2', '#d395': 'DarkOrange3', '#d194': 'CadetBlue2', '#d195': 'CadetBlue3', '#d196': 'CadetBlue4', '#d197': 'turquoise1', '#d190': 'LightBlue', '#d191': 'LightBlue4', '#d192': 'PowderBlue', '#d193': 'CadetBlue1', '#d198': 'turquoise2', '#d199': 'turquoise3', '#d330': 'cornsilk4', '#d331': 'gold', '#d640': 'gray14', '#d641': 'grey14', '#d642': 'gray13', '#d643': 'grey13', '#d644': 'gray12', '#d645': 'grey12', '#d646': 'gray11', '#d647': 'grey11', '#d648': 'gray10', '#d649': 'grey10', '#d668': 'black', '#d486': 'gainsboro', '#d487': 'gray86', '#d484': 'gray87', '#d485': 'grey87', '#d482': 'gray88', '#d483': 'grey88', '#d480': 'gray89', '#d481': 'grey89', '#d521': 'grey71', '#d520': 'gray71', '#d523': 'grey70', '#d522': 'gray70', '#d525': 'grey69', '#d524': 'gray69', '#d488': 'grey86', '#d489': 'gray85', '#d430': 'OrangeRed', '#d660': 'gray4', '#d169': 'SteelBlue1', '#d168': 'SteelBlue', '#d661': 'grey4', '#d161': 'DodgerBlue', '#d160': 'SlateGrey', '#d163': 'DodgerBlue2', '#d162': 'DodgerBlue1', '#d165': 'DodgerBlue3', '#d164': 'DodgerBlue4', '#d167': 'SteelBlue4', '#d166': 'AliceBlue', '#d635': 'grey17', '#d634': 'gray17', '#d637': 'grey16', '#d636': 'gray16', '#d631': 'grey19', '#d630': 'gray19', '#d633': 'grey18', '#d632': 'gray18', '#d639': 'grey15', '#d638': 'gray15', '#d368': 'PapayaWhip', '#d222': 'cyan', '#d223': 'cyan1', '#d220': 'LightCyan4', '#d221': 'aqua', '#d226': 'DarkSlateGray4', '#d227': 'cyan3', '#d224': 'PaleTurquoise4', '#d225': 'cyan2', '#d228': 'cyan4', '#d229': 'DarkCyan', '#d590': 'gray39', '#d538': 'gray63', '#d539': 'grey63', '#d591': 'grey39', '#d451': 'MistyRose', '#d450': 'MistyRose2', '#d453': 'salmon', '#d452': 'MistyRose1', '#d455': 'white', '#d454': 'MistyRose3', '#d457': 'grey100', '#d456': 'gray100', '#d459': 'gray99', '#d458': 'grey100', '#d592': 'gray38', '#d593': 'grey38', '#d594': 'gray37', '#d595': 'grey37', '#d596': 'gray36', '#d597': 'grey36', '#d297': 'YellowGreen', '#d296': 'OliveDrab3', '#d295': 'OliveDrab2', '#d294': 'OliveDrab1', '#d293': 'OliveDrab', '#d292': 'DarkOliveGreen', '#d291': 'DarkOliveGreen4', '#d290': 'DarkOliveGreen2', '#d356': 'wheat2', '#d357': 'OldLace', '#d354': 'DarkGoldenrod4', '#d355': 'FloralWhite', '#d352': 'DarkGoldenrod2', '#d353': 'DarkGoldenrod3', '#d299': 'ivory', '#d298': 'OliveDrab4', '#d468': 'gray95', '#d534': 'gray65', '#d535': 'grey65', '#d52': 'LavenderBlush2', '#d53': 'LavenderBlush4', '#d50': 'LavenderBlush1', '#d51': 'LavenderBlush3', '#d56': 'VioletRed3', '#d57': 'VioletRed1', '#d54': 'maroon', '#d55': 'HotPink3', '#d58': 'VioletRed2', '#d59': 'VioletRed4', '#d469': 'grey95', '#d558': 'gray53', '#d559': 'grey53', '#d576': 'gray45', '#d577': 'grey45', '#d574': 'gray46', '#d575': 'grey46', '#d572': 'gray47', '#d573': 'grey47', '#d570': 'gray48', '#d571': 'grey48', '#d671': 'opaque', '#d670': 'grey0', '#d673': 'transparent', '#d672': 'none', '#d578': 'gray44', '#d579': 'grey44', '#d589': 'grey40', '#d588': 'gray40', '#d4': 'RosyBrown2', '#d5': 'snow3', '#d6': 'LightCoral', '#d7': 'IndianRed1', '#d0': 'snow', '#d1': 'snow1', '#d2': 'snow2', '#d3': 'RosyBrown1', '#d8': 'RosyBrown3', '#d9': 'IndianRed2', '#d136': 'MediumBlue', '#d137': 'blue4', '#d134': 'blue2', '#d135': 'blue3', '#d132': 'blue', '#d133': 'blue1', '#d130': 'GhostWhite', '#d131': 'lavender', '#d583': 'grey42', '#d138': 'DarkBlue', '#d139': 'MidnightBlue', '#d312': 'yellow1', '#d313': 'yellow2', '#d310': 'LightYellow4', '#d311': 'yellow', '#d316': 'olive', '#d317': 'DarkKhaki', '#d314': 'yellow3', '#d315': 'yellow4', '#d318': 'khaki2', '#d319': 'LemonChiffon4', '#d259': 'DarkSeaGreen1', '#d258': 'honeydew2', '#d253': 'SeaGreen4', '#d252': 'SeaGreen1', '#d251': 'SeaGreen3', '#d250': 'SeaGreen', '#d257': 'honeydew1', '#d256': 'honeydew', '#d255': 'MediumForestGreen', '#d254': 'SeaGreen2', '#d345': 'goldenrod', '#d344': 'cornsilk1', '#d612': 'gray28', '#d347': 'goldenrod2', '#d461': 'gray98', '#d346': 'goldenrod1', '#d479': 'grey90', '#d341': 'cornsilk3', '#d478': 'gray90', '#d340': 'LightGoldenrod2', '#d343': 'cornsilk', '#d342': 'cornsilk2', '#d528': 'gray67', '#d408': 'seashell4', '#d409': 'seashell2', '#d406': 'PeachPuff3', '#d407': 'SandyBrown', '#d404': 'PeachPuff4', '#d405': 'PeachPuff2', '#d402': 'PeachPuff', '#d403': 'PeachPuff1', '#d400': 'tan3', '#d401': 'tan4', '#d552': 'gray56', '#d460': 'grey99', '#d16': 'firebrick2', '#d17': 'snow4', '#d14': 'IndianRed', '#d15': 'IndianRed3', '#d12': 'firebrick1', '#d13': 'brown2', '#d10': 'RosyBrown', '#d11': 'brown1', '#d532': 'gray66', '#d533': 'grey66', '#d530': 'DarkGray', '#d531': 'DarkGrey', '#d536': 'gray64', '#d537': 'grey64', '#d18': 'brown3', '#d19': 'red', '#d329': 'MediumGoldenRod', '#d328': 'LemonChiffon2', '#d178': 'LightSkyBlue1', '#d179': 'LightSkyBlue2', '#d172': 'SkyBlue4', '#d173': 'SkyBlue1', '#d170': 'SteelBlue2', '#d171': 'SteelBlue3', '#d176': 'LightSkyBlue', '#d177': 'LightSkyBlue4', '#d174': 'SkyBlue2', '#d175': 'SkyBlue3', '#d626': 'gray21', '#d627': 'grey21', '#d624': 'gray22', '#d625': 'grey22', '#d622': 'gray23', '#d623': 'grey23', '#d620': 'gray24', '#d621': 'grey24', '#d628': 'gray20', '#d629': 'grey20', '#d219': 'azure4', '#d218': 'DarkSlateGray3', '#d217': 'PaleTurquoise3', '#d216': 'DarkSlateGray2', '#d215': 'LightCyan3', '#d214': 'azure3', '#d213': 'DarkSlateGray1', '#d212': 'PaleTurquoise2', '#d211': 'PaleTurquoise', '#d210': 'PaleTurquoise1', '#d669': 'gray0', '#d582': 'gray42', '#d442': 'coral3', '#d443': 'coral4', '#d440': 'coral1', '#d441': 'coral2', '#d446': 'tomato1', '#d447': 'tomato2', '#d444': 'tomato4', '#d445': 'tomato', '#d448': 'tomato3', '#d449': 'MistyRose4', '#d280': 'DarkGreen', '#d281': 'LawnGreen', '#d282': 'chartreuse', '#d283': 'chartreuse1', '#d284': 'chartreuse2', '#d285': 'chartreuse3', '#d286': 'chartreuse4', '#d287': 'GreenYellow', '#d288': 'DarkOliveGreen3', '#d289': 'DarkOliveGreen1', '#d361': 'orange', '#d360': 'wheat3', '#d367': 'moccasin', '#d366': 'wheat4', '#d365': 'orange4', '#d364': 'orange3', '#d49': 'LavenderBlush', '#d48': 'PaleVioletRed3', '#d45': 'PaleVioletRed', '#d44': 'PaleVioletRed4', '#d47': 'PaleVioletRed1', '#d46': 'PaleVioletRed2', '#d41': 'pink2', '#d40': 'pink1', '#d43': 'pink4', '#d42': 'pink3', '#d358': 'wheat', '#d527': 'grey68', '#d526': 'gray68', '#d614': 'gray27', '#d543': 'grey61', '#d542': 'gray61', '#d541': 'grey62', '#d540': 'gray62', '#d547': 'grey59', '#d546': 'gray59', '#d545': 'grey60', '#d544': 'gray60', '#d662': 'gray3', '#d663': 'grey3', '#d549': 'grey58', '#d548': 'gray58', '#d666': 'gray1', '#d667': 'grey1', '#d664': 'gray2', '#d665': 'grey2', '#d103': 'MediumOrchid4', '#d102': 'MediumOrchid3', '#d101': 'MediumOrchid2', '#d100': 'MediumOrchid1', '#d107': 'DarkOrchid3', '#d106': 'DarkOrchid1', '#d105': 'DarkOrchid', '#d104': 'DarkViolet', '#d109': 'DarkOrchid4', '#d108': 'DarkOrchid2', '#d244': 'SpringGreen', '#d245': 'SpringGreen1', '#d246': 'SpringGreen2', '#d247': 'SpringGreen3', '#d240': 'aquamarine3', '#d241': 'MediumAquamarine', '#d242': 'MediumSpringGreen', '#d243': 'MintCream', '#d327': 'LemonChiffon3', '#d326': 'khaki', '#d325': 'LemonChiffon1', '#d324': 'LemonChiffon', '#d248': 'SpringGreen4', '#d249': 'MediumSeaGreen', '#d321': 'khaki3', '#d320': 'khaki1', '#d350': 'DarkGoldenrod', '#d439': 'salmon4', '#d438': 'salmon3', '#d98': 'purple', '#d99': 'MediumOrchid', '#d96': 'DarkMagenta', '#d97': 'magenta4', '#d94': 'magenta2', '#d95': 'magenta3', '#d92': 'magenta1', '#d93': 'plum4', '#d90': 'fuchsia', '#d91': 'magenta', '#d433': 'OrangeRed3', '#d432': 'OrangeRed2', '#d431': 'OrangeRed1', '#d74': 'VioletRed', '#d75': 'orchid2', '#d76': 'orchid', '#d77': 'orchid1', '#d70': 'maroon2', '#d71': 'maroon3', '#d72': 'maroon4', '#d73': 'MediumVioletRed', '#d437': 'salmon2', '#d78': 'orchid3', '#d79': 'orchid4', '#d436': 'salmon1', '#d435': 'DarkSalmon', '#d434': 'OrangeRed4', '#d507': 'gray77', '#d506': 'grey78', '#d505': 'gray78', '#d504': 'grey79', '#d503': 'gray79', '#d502': 'grey80', '#d501': 'gray80', '#d500': 'grey81', '#d509': 'gray76', '#d508': 'grey77', '#d473': 'grey93', '#d369': 'NavajoWhite3', '#d147': 'CornflowerBlue', '#d146': 'RoyalBlue4', '#d145': 'RoyalBlue3', '#d144': 'RoyalBlue2', '#d143': 'RoyalBlue1', '#d142': 'RoyalBlue', '#d141': 'NavyBlue', '#d140': 'navy', '#d149': 'LightSteelBlue1', '#d148': 'LightSteelBlue', '#d472': 'gray93', '#d613': 'grey28', '#d363': 'orange2', '#d611': 'grey29', '#d610': 'gray29', '#d617': 'grey26', '#d616': 'gray26', '#d615': 'grey27', '#d362': 'orange1', '#d619': 'grey25', '#d618': 'gray25', '#d208': 'azure2', '#d209': 'LightCyan2', '#d200': 'turquoise4', '#d201': 'cadet blue', '#d202': 'CadetBlue', '#d203': 'DarkTurquoise', '#d204': 'azure', '#d205': 'azure1', '#d206': 'LightCyan', '#d207': 'LightCyan1', '#d608': 'gray30', '#d609': 'grey30', '#d374': 'NavajoWhite4', '#d375': 'AntiqueWhite4', '#d376': 'AntiqueWhite', '#d377': 'tan', '#d370': 'BlanchedAlmond', '#d371': 'NavajoWhite', '#d372': 'NavajoWhite1', '#d373': 'NavajoWhite2', '#d477': 'grey91', '#d476': 'gray91', '#d475': 'grey92', '#d474': 'gray92', '#d378': 'bisque4', '#d379': 'burlywood', '#d471': 'grey94', '#d470': 'gray94', '#d279': 'green', '#d278': 'green4', '#d275': 'PaleGreen4', '#d274': 'green2', '#d277': 'ForestGreen', '#d276': 'green3', '#d271': 'lime', '#d270': 'green1', '#d273': 'DarkSeaGreen4', '#d272': 'LimeGreen', '#d38': 'pink', '#d39': 'crimson', '#d30': 'DarkRed', '#d31': 'red4', '#d32': 'maroon', '#d33': 'LightPink1', '#d34': 'LightPink3', '#d35': 'LightPink4', '#d36': 'LightPink2', '#d37': 'LightPink', '#d658': 'gray5', '#d389': 'bisque', '#d388': 'bisque2', '#d381': 'burlywood1', '#d380': 'AntiqueWhite2', '#d383': 'burlywood2', '#d382': 'burlywood3', '#d385': 'burlywood4', '#d384': 'AntiqueWhite1', '#d387': 'DarkOrange', '#d386': 'AntiqueWhite3', '#d189': 'LightBlue2', '#d188': 'LightBlue1', '#d183': 'DeepSkyBlue', '#d182': 'LightBlue3', '#d181': 'SkyBlue', '#d180': 'LightSkyBlue3', '#d187': 'DeepSkyBlue3', '#d186': 'DeepSkyBlue4', '#d185': 'DeepSkyBlue2', '#d184': 'DeepSkyBlue1', '#d657': 'grey6', '#d656': 'gray6', '#d655': 'grey7', '#d654': 'gray7', '#d653': 'grey8', '#d652': 'gray8', '#d651': 'grey9', '#d650': 'gray9', '#d550': 'gray57', '#d659': 'grey5', '#d551': 'grey57', '#d495': 'LightGray', '#d494': 'grey83', '#d497': 'gray82', '#d496': 'LightGrey', '#d491': 'gray84', '#d490': 'grey85', '#d493': 'gray83', '#d492': 'grey84', '#d554': 'gray55', '#d555': 'grey55', '#d556': 'gray54', '#d557': 'grey54', '#d499': 'gray81', '#d498': 'grey82', '#d323': 'PaleGoldenrod', '#d553': 'grey56'} \ No newline at end of file
diff --git a/frontend/imgrid/colors/colors/junk/divlistmaker b/frontend/imgrid/colors/colors/junk/divlistmaker
new file mode 100755
index 0000000..b461bc9
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/divlistmaker
@@ -0,0 +1,32 @@
+#!/usr/bin/python2.7
+
+
+
+divlist = []
+for x in range(674):
+ divlist.append("#d"+str(x))
+
+print str(divlist)
+
+f = open('colordict.js', 'a')
+
+f.write("var divlist = ")
+f.write(str(divlist))
+f.close()
+
+f = open('colors.html', 'r')
+lines = f.readlines()
+colornames = []
+for line in lines:
+ if 'right' in line and 'td' in line:
+ colornames.append(line[22:-6])
+
+divtoname = {}
+for i in divlist:
+ divtoname[i] = colornames[divlist.index(i)]
+
+print divtoname
+f = open('colordict.js', 'a')
+f.write("\nvar divtoname = ")
+f.write(str(divtoname))
+
diff --git a/frontend/imgrid/colors/colors/junk/mapmaker.html b/frontend/imgrid/colors/colors/junk/mapmaker.html
new file mode 100755
index 0000000..05ca832
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/mapmaker.html
@@ -0,0 +1,3586 @@
+<html>
+<head>
+
+<style type='text/css'>
+
+body
+{
+max-width:100%;
+max-height:100%;
+font-family:helvetica;
+font-size:2px;
+}
+
+
+#container div
+{
+display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+height: 4px;
+zoom: 1;
+*display: inline;
+}
+
+#container
+{
+margin:0 auto;
+width:30px;
+padding-top:60px;
+padding-bottom:50px;
+padding-left:10px;
+padding-right:10px;
+text-align:center;
+}
+
+#colornames
+{
+color:white;
+position:fixed;
+font-size:50px;
+top:50px;
+right:60%;
+width:400px;
+}
+
+#hexswitch
+ {
+ position:fixed;
+ top:20px;
+ right:10%;
+ height:100px;
+ width:300px;
+ font-size:20px
+ border-style: groove;
+ border-width: 4px;
+ background-color:goldenrod;
+ text-align:center;
+ }
+#infoswitch
+ {
+ position:fixed;
+ top: 60px;
+ right:5%;
+ font-size:20px
+ background-color:gray;
+ text-align:center;
+ }
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{
+height:30px;
+width:10px;
+}
+</style></head><body>
+<div id='container'>
+<div id='d0' class='colors'>
+snow</div>
+<div id='d1' class='colors'>
+snow1</div>
+<div id='d2' class='colors'>
+snow2</div>
+<div id='d3' class='colors'>
+RosyBrown1</div>
+<div id='d4' class='colors'>
+RosyBrown2</div>
+<div id='d5' class='colors'>
+snow3</div>
+<div id='d6' class='colors'>
+LightCoral</div>
+<div id='d7' class='colors'>
+IndianRed1</div>
+<div id='d8' class='colors'>
+RosyBrown3</div>
+<div id='d9' class='colors'>
+IndianRed2</div>
+<div id='d10' class='colors'>
+RosyBrown</div>
+<div id='d11' class='colors'>
+brown1</div>
+<div id='d12' class='colors'>
+firebrick1</div>
+<div id='d13' class='colors'>
+brown2</div>
+<div id='d14' class='colors'>
+IndianRed</div>
+<div id='d15' class='colors'>
+IndianRed3</div>
+<div id='d16' class='colors'>
+firebrick2</div>
+<div id='d17' class='colors'>
+snow4</div>
+<div id='d18' class='colors'>
+brown3</div>
+<div id='d19' class='colors'>
+red</div>
+<div id='d20' class='colors'>
+red1</div>
+<div id='d21' class='colors'>
+RosyBrown4</div>
+<div id='d22' class='colors'>
+firebrick3</div>
+<div id='d23' class='colors'>
+red2</div>
+<div id='d24' class='colors'>
+firebrick</div>
+<div id='d25' class='colors'>
+brown</div>
+<div id='d26' class='colors'>
+red3</div>
+<div id='d27' class='colors'>
+IndianRed4</div>
+<div id='d28' class='colors'>
+brown4</div>
+<div id='d29' class='colors'>
+firebrick4</div>
+<div id='d30' class='colors'>
+DarkRed</div>
+<div id='d31' class='colors'>
+red4</div>
+<div id='d32' class='colors'>
+maroon</div>
+<div id='d33' class='colors'>
+LightPink1</div>
+<div id='d34' class='colors'>
+LightPink3</div>
+<div id='d35' class='colors'>
+LightPink4</div>
+<div id='d36' class='colors'>
+LightPink2</div>
+<div id='d37' class='colors'>
+LightPink</div>
+<div id='d38' class='colors'>
+pink</div>
+<div id='d39' class='colors'>
+crimson</div>
+<div id='d40' class='colors'>
+pink1</div>
+<div id='d41' class='colors'>
+pink2</div>
+<div id='d42' class='colors'>
+pink3</div>
+<div id='d43' class='colors'>
+pink4</div>
+<div id='d44' class='colors'>
+PaleVioletRed4</div>
+<div id='d45' class='colors'>
+PaleVioletRed</div>
+<div id='d46' class='colors'>
+PaleVioletRed2</div>
+<div id='d47' class='colors'>
+PaleVioletRed1</div>
+<div id='d48' class='colors'>
+PaleVioletRed3</div>
+<div id='d49' class='colors'>
+LavenderBlush</div>
+<div id='d50' class='colors'>
+LavenderBlush1</div>
+<div id='d51' class='colors'>
+LavenderBlush3</div>
+<div id='d52' class='colors'>
+LavenderBlush2</div>
+<div id='d53' class='colors'>
+LavenderBlush4</div>
+<div id='d54' class='colors'>
+maroon</div>
+<div id='d55' class='colors'>
+HotPink3</div>
+<div id='d56' class='colors'>
+VioletRed3</div>
+<div id='d57' class='colors'>
+VioletRed1</div>
+<div id='d58' class='colors'>
+VioletRed2</div>
+<div id='d59' class='colors'>
+VioletRed4</div>
+<div id='d60' class='colors'>
+HotPink2</div>
+<div id='d61' class='colors'>
+HotPink1</div>
+<div id='d62' class='colors'>
+HotPink4</div>
+<div id='d63' class='colors'>
+HotPink</div>
+<div id='d64' class='colors'>
+DeepPink</div>
+<div id='d65' class='colors'>
+DeepPink1</div>
+<div id='d66' class='colors'>
+DeepPink2</div>
+<div id='d67' class='colors'>
+DeepPink3</div>
+<div id='d68' class='colors'>
+DeepPink4</div>
+<div id='d69' class='colors'>
+maroon1</div>
+<div id='d70' class='colors'>
+maroon2</div>
+<div id='d71' class='colors'>
+maroon3</div>
+<div id='d72' class='colors'>
+maroon4</div>
+<div id='d73' class='colors'>
+MediumVioletRed</div>
+<div id='d74' class='colors'>
+VioletRed</div>
+<div id='d75' class='colors'>
+orchid2</div>
+<div id='d76' class='colors'>
+orchid</div>
+<div id='d77' class='colors'>
+orchid1</div>
+<div id='d78' class='colors'>
+orchid3</div>
+<div id='d79' class='colors'>
+orchid4</div>
+<div id='d80' class='colors'>
+thistle1</div>
+<div id='d81' class='colors'>
+thistle2</div>
+<div id='d82' class='colors'>
+plum1</div>
+<div id='d83' class='colors'>
+plum2</div>
+<div id='d84' class='colors'>
+thistle</div>
+<div id='d85' class='colors'>
+thistle3</div>
+<div id='d86' class='colors'>
+plum</div>
+<div id='d87' class='colors'>
+violet</div>
+<div id='d88' class='colors'>
+plum3</div>
+<div id='d89' class='colors'>
+thistle4</div>
+<div id='d90' class='colors'>
+fuchsia</div>
+<div id='d91' class='colors'>
+magenta</div>
+<div id='d92' class='colors'>
+magenta1</div>
+<div id='d93' class='colors'>
+plum4</div>
+<div id='d94' class='colors'>
+magenta2</div>
+<div id='d95' class='colors'>
+magenta3</div>
+<div id='d96' class='colors'>
+DarkMagenta</div>
+<div id='d97' class='colors'>
+magenta4</div>
+<div id='d98' class='colors'>
+purple</div>
+<div id='d99' class='colors'>
+MediumOrchid</div>
+<div id='d100' class='colors'>
+MediumOrchid1</div>
+<div id='d101' class='colors'>
+MediumOrchid2</div>
+<div id='d102' class='colors'>
+MediumOrchid3</div>
+<div id='d103' class='colors'>
+MediumOrchid4</div>
+<div id='d104' class='colors'>
+DarkViolet</div>
+<div id='d105' class='colors'>
+DarkOrchid</div>
+<div id='d106' class='colors'>
+DarkOrchid1</div>
+<div id='d107' class='colors'>
+DarkOrchid3</div>
+<div id='d108' class='colors'>
+DarkOrchid2</div>
+<div id='d109' class='colors'>
+DarkOrchid4</div>
+<div id='d110' class='colors'>
+purple</div>
+<div id='d111' class='colors'>
+indigo</div>
+<div id='d112' class='colors'>
+BlueViolet</div>
+<div id='d113' class='colors'>
+purple2</div>
+<div id='d114' class='colors'>
+purple3</div>
+<div id='d115' class='colors'>
+purple4</div>
+<div id='d116' class='colors'>
+purple1</div>
+<div id='d117' class='colors'>
+MediumPurple</div>
+<div id='d118' class='colors'>
+MediumPurple1</div>
+<div id='d119' class='colors'>
+MediumPurple2</div>
+<div id='d120' class='colors'>
+MediumPurple3</div>
+<div id='d121' class='colors'>
+MediumPurple4</div>
+<div id='d122' class='colors'>
+DarkSlateBlue</div>
+<div id='d123' class='colors'>
+LightSlateBlue</div>
+<div id='d124' class='colors'>
+MediumSlateBlue</div>
+<div id='d125' class='colors'>
+SlateBlue</div>
+<div id='d126' class='colors'>
+SlateBlue1</div>
+<div id='d127' class='colors'>
+SlateBlue2</div>
+<div id='d128' class='colors'>
+SlateBlue3</div>
+<div id='d129' class='colors'>
+SlateBlue4</div>
+<div id='d130' class='colors'>
+GhostWhite</div>
+<div id='d131' class='colors'>
+lavender</div>
+<div id='d132' class='colors'>
+blue</div>
+<div id='d133' class='colors'>
+blue1</div>
+<div id='d134' class='colors'>
+blue2</div>
+<div id='d135' class='colors'>
+blue3</div>
+<div id='d136' class='colors'>
+MediumBlue</div>
+<div id='d137' class='colors'>
+blue4</div>
+<div id='d138' class='colors'>
+DarkBlue</div>
+<div id='d139' class='colors'>
+MidnightBlue</div>
+<div id='d140' class='colors'>
+navy</div>
+<div id='d141' class='colors'>
+NavyBlue</div>
+<div id='d142' class='colors'>
+RoyalBlue</div>
+<div id='d143' class='colors'>
+RoyalBlue1</div>
+<div id='d144' class='colors'>
+RoyalBlue2</div>
+<div id='d145' class='colors'>
+RoyalBlue3</div>
+<div id='d146' class='colors'>
+RoyalBlue4</div>
+<div id='d147' class='colors'>
+CornflowerBlue</div>
+<div id='d148' class='colors'>
+LightSteelBlue</div>
+<div id='d149' class='colors'>
+LightSteelBlue1</div>
+<div id='d150' class='colors'>
+LightSteelBlue2</div>
+<div id='d151' class='colors'>
+LightSteelBlue3</div>
+<div id='d152' class='colors'>
+LightSteelBlue4</div>
+<div id='d153' class='colors'>
+SlateGray4</div>
+<div id='d154' class='colors'>
+SlateGray1</div>
+<div id='d155' class='colors'>
+SlateGray2</div>
+<div id='d156' class='colors'>
+SlateGray3</div>
+<div id='d157' class='colors'>
+LightSlateGray</div>
+<div id='d158' class='colors'>
+LightSlateGrey</div>
+<div id='d159' class='colors'>
+SlateGray</div>
+<div id='d160' class='colors'>
+SlateGrey</div>
+<div id='d161' class='colors'>
+DodgerBlue</div>
+<div id='d162' class='colors'>
+DodgerBlue1</div>
+<div id='d163' class='colors'>
+DodgerBlue2</div>
+<div id='d164' class='colors'>
+DodgerBlue4</div>
+<div id='d165' class='colors'>
+DodgerBlue3</div>
+<div id='d166' class='colors'>
+AliceBlue</div>
+<div id='d167' class='colors'>
+SteelBlue4</div>
+<div id='d168' class='colors'>
+SteelBlue</div>
+<div id='d169' class='colors'>
+SteelBlue1</div>
+<div id='d170' class='colors'>
+SteelBlue2</div>
+<div id='d171' class='colors'>
+SteelBlue3</div>
+<div id='d172' class='colors'>
+SkyBlue4</div>
+<div id='d173' class='colors'>
+SkyBlue1</div>
+<div id='d174' class='colors'>
+SkyBlue2</div>
+<div id='d175' class='colors'>
+SkyBlue3</div>
+<div id='d176' class='colors'>
+LightSkyBlue</div>
+<div id='d177' class='colors'>
+LightSkyBlue4</div>
+<div id='d178' class='colors'>
+LightSkyBlue1</div>
+<div id='d179' class='colors'>
+LightSkyBlue2</div>
+<div id='d180' class='colors'>
+LightSkyBlue3</div>
+<div id='d181' class='colors'>
+SkyBlue</div>
+<div id='d182' class='colors'>
+LightBlue3</div>
+<div id='d183' class='colors'>
+DeepSkyBlue</div>
+<div id='d184' class='colors'>
+DeepSkyBlue1</div>
+<div id='d185' class='colors'>
+DeepSkyBlue2</div>
+<div id='d186' class='colors'>
+DeepSkyBlue4</div>
+<div id='d187' class='colors'>
+DeepSkyBlue3</div>
+<div id='d188' class='colors'>
+LightBlue1</div>
+<div id='d189' class='colors'>
+LightBlue2</div>
+<div id='d190' class='colors'>
+LightBlue</div>
+<div id='d191' class='colors'>
+LightBlue4</div>
+<div id='d192' class='colors'>
+PowderBlue</div>
+<div id='d193' class='colors'>
+CadetBlue1</div>
+<div id='d194' class='colors'>
+CadetBlue2</div>
+<div id='d195' class='colors'>
+CadetBlue3</div>
+<div id='d196' class='colors'>
+CadetBlue4</div>
+<div id='d197' class='colors'>
+turquoise1</div>
+<div id='d198' class='colors'>
+turquoise2</div>
+<div id='d199' class='colors'>
+turquoise3</div>
+<div id='d200' class='colors'>
+turquoise4</div>
+<div id='d201' class='colors'>
+cadet blue</div>
+<div id='d202' class='colors'>
+CadetBlue</div>
+<div id='d203' class='colors'>
+DarkTurquoise</div>
+<div id='d204' class='colors'>
+azure</div>
+<div id='d205' class='colors'>
+azure1</div>
+<div id='d206' class='colors'>
+LightCyan</div>
+<div id='d207' class='colors'>
+LightCyan1</div>
+<div id='d208' class='colors'>
+azure2</div>
+<div id='d209' class='colors'>
+LightCyan2</div>
+<div id='d210' class='colors'>
+PaleTurquoise1</div>
+<div id='d211' class='colors'>
+PaleTurquoise</div>
+<div id='d212' class='colors'>
+PaleTurquoise2</div>
+<div id='d213' class='colors'>
+DarkSlateGray1</div>
+<div id='d214' class='colors'>
+azure3</div>
+<div id='d215' class='colors'>
+LightCyan3</div>
+<div id='d216' class='colors'>
+DarkSlateGray2</div>
+<div id='d217' class='colors'>
+PaleTurquoise3</div>
+<div id='d218' class='colors'>
+DarkSlateGray3</div>
+<div id='d219' class='colors'>
+azure4</div>
+<div id='d220' class='colors'>
+LightCyan4</div>
+<div id='d221' class='colors'>
+aqua</div>
+<div id='d222' class='colors'>
+cyan</div>
+<div id='d223' class='colors'>
+cyan1</div>
+<div id='d224' class='colors'>
+PaleTurquoise4</div>
+<div id='d225' class='colors'>
+cyan2</div>
+<div id='d226' class='colors'>
+DarkSlateGray4</div>
+<div id='d227' class='colors'>
+cyan3</div>
+<div id='d228' class='colors'>
+cyan4</div>
+<div id='d229' class='colors'>
+DarkCyan</div>
+<div id='d230' class='colors'>
+teal</div>
+<div id='d231' class='colors'>
+DarkSlateGray</div>
+<div id='d232' class='colors'>
+DarkSlateGrey</div>
+<div id='d233' class='colors'>
+MediumTurquoise</div>
+<div id='d234' class='colors'>
+LightSeaGreen</div>
+<div id='d235' class='colors'>
+turquoise</div>
+<div id='d236' class='colors'>
+aquamarine4</div>
+<div id='d237' class='colors'>
+aquamarine</div>
+<div id='d238' class='colors'>
+aquamarine1</div>
+<div id='d239' class='colors'>
+aquamarine2</div>
+<div id='d240' class='colors'>
+aquamarine3</div>
+<div id='d241' class='colors'>
+MediumAquamarine</div>
+<div id='d242' class='colors'>
+MediumSpringGreen</div>
+<div id='d243' class='colors'>
+MintCream</div>
+<div id='d244' class='colors'>
+SpringGreen</div>
+<div id='d245' class='colors'>
+SpringGreen1</div>
+<div id='d246' class='colors'>
+SpringGreen2</div>
+<div id='d247' class='colors'>
+SpringGreen3</div>
+<div id='d248' class='colors'>
+SpringGreen4</div>
+<div id='d249' class='colors'>
+MediumSeaGreen</div>
+<div id='d250' class='colors'>
+SeaGreen</div>
+<div id='d251' class='colors'>
+SeaGreen3</div>
+<div id='d252' class='colors'>
+SeaGreen1</div>
+<div id='d253' class='colors'>
+SeaGreen4</div>
+<div id='d254' class='colors'>
+SeaGreen2</div>
+<div id='d255' class='colors'>
+MediumForestGreen</div>
+<div id='d256' class='colors'>
+honeydew</div>
+<div id='d257' class='colors'>
+honeydew1</div>
+<div id='d258' class='colors'>
+honeydew2</div>
+<div id='d259' class='colors'>
+DarkSeaGreen1</div>
+<div id='d260' class='colors'>
+DarkSeaGreen2</div>
+<div id='d261' class='colors'>
+PaleGreen1</div>
+<div id='d262' class='colors'>
+PaleGreen</div>
+<div id='d263' class='colors'>
+honeydew3</div>
+<div id='d264' class='colors'>
+LightGreen</div>
+<div id='d265' class='colors'>
+PaleGreen2</div>
+<div id='d266' class='colors'>
+DarkSeaGreen3</div>
+<div id='d267' class='colors'>
+DarkSeaGreen</div>
+<div id='d268' class='colors'>
+PaleGreen3</div>
+<div id='d269' class='colors'>
+honeydew4</div>
+<div id='d270' class='colors'>
+green1</div>
+<div id='d271' class='colors'>
+lime</div>
+<div id='d272' class='colors'>
+LimeGreen</div>
+<div id='d273' class='colors'>
+DarkSeaGreen4</div>
+<div id='d274' class='colors'>
+green2</div>
+<div id='d275' class='colors'>
+PaleGreen4</div>
+<div id='d276' class='colors'>
+green3</div>
+<div id='d277' class='colors'>
+ForestGreen</div>
+<div id='d278' class='colors'>
+green4</div>
+<div id='d279' class='colors'>
+green</div>
+<div id='d280' class='colors'>
+DarkGreen</div>
+<div id='d281' class='colors'>
+LawnGreen</div>
+<div id='d282' class='colors'>
+chartreuse</div>
+<div id='d283' class='colors'>
+chartreuse1</div>
+<div id='d284' class='colors'>
+chartreuse2</div>
+<div id='d285' class='colors'>
+chartreuse3</div>
+<div id='d286' class='colors'>
+chartreuse4</div>
+<div id='d287' class='colors'>
+GreenYellow</div>
+<div id='d288' class='colors'>
+DarkOliveGreen3</div>
+<div id='d289' class='colors'>
+DarkOliveGreen1</div>
+<div id='d290' class='colors'>
+DarkOliveGreen2</div>
+<div id='d291' class='colors'>
+DarkOliveGreen4</div>
+<div id='d292' class='colors'>
+DarkOliveGreen</div>
+<div id='d293' class='colors'>
+OliveDrab</div>
+<div id='d294' class='colors'>
+OliveDrab1</div>
+<div id='d295' class='colors'>
+OliveDrab2</div>
+<div id='d296' class='colors'>
+OliveDrab3</div>
+<div id='d297' class='colors'>
+YellowGreen</div>
+<div id='d298' class='colors'>
+OliveDrab4</div>
+<div id='d299' class='colors'>
+ivory</div>
+<div id='d300' class='colors'>
+ivory1</div>
+<div id='d301' class='colors'>
+LightYellow</div>
+<div id='d302' class='colors'>
+LightYellow1</div>
+<div id='d303' class='colors'>
+beige</div>
+<div id='d304' class='colors'>
+ivory2</div>
+<div id='d305' class='colors'>
+LightGoldenrodYellow</div>
+<div id='d306' class='colors'>
+LightYellow2</div>
+<div id='d307' class='colors'>
+ivory3</div>
+<div id='d308' class='colors'>
+LightYellow3</div>
+<div id='d309' class='colors'>
+ivory4</div>
+<div id='d310' class='colors'>
+LightYellow4</div>
+<div id='d311' class='colors'>
+yellow</div>
+<div id='d312' class='colors'>
+yellow1</div>
+<div id='d313' class='colors'>
+yellow2</div>
+<div id='d314' class='colors'>
+yellow3</div>
+<div id='d315' class='colors'>
+yellow4</div>
+<div id='d316' class='colors'>
+olive</div>
+<div id='d317' class='colors'>
+DarkKhaki</div>
+<div id='d318' class='colors'>
+khaki2</div>
+<div id='d319' class='colors'>
+LemonChiffon4</div>
+<div id='d320' class='colors'>
+khaki1</div>
+<div id='d321' class='colors'>
+khaki3</div>
+<div id='d322' class='colors'>
+khaki4</div>
+<div id='d323' class='colors'>
+PaleGoldenrod</div>
+<div id='d324' class='colors'>
+LemonChiffon</div>
+<div id='d325' class='colors'>
+LemonChiffon1</div>
+<div id='d326' class='colors'>
+khaki</div>
+<div id='d327' class='colors'>
+LemonChiffon3</div>
+<div id='d328' class='colors'>
+LemonChiffon2</div>
+<div id='d329' class='colors'>
+MediumGoldenRod</div>
+<div id='d330' class='colors'>
+cornsilk4</div>
+<div id='d331' class='colors'>
+gold</div>
+<div id='d332' class='colors'>
+gold1</div>
+<div id='d333' class='colors'>
+gold2</div>
+<div id='d334' class='colors'>
+gold3</div>
+<div id='d335' class='colors'>
+gold4</div>
+<div id='d336' class='colors'>
+LightGoldenrod</div>
+<div id='d337' class='colors'>
+LightGoldenrod4</div>
+<div id='d338' class='colors'>
+LightGoldenrod1</div>
+<div id='d339' class='colors'>
+LightGoldenrod3</div>
+<div id='d340' class='colors'>
+LightGoldenrod2</div>
+<div id='d341' class='colors'>
+cornsilk3</div>
+<div id='d342' class='colors'>
+cornsilk2</div>
+<div id='d343' class='colors'>
+cornsilk</div>
+<div id='d344' class='colors'>
+cornsilk1</div>
+<div id='d345' class='colors'>
+goldenrod</div>
+<div id='d346' class='colors'>
+goldenrod1</div>
+<div id='d347' class='colors'>
+goldenrod2</div>
+<div id='d348' class='colors'>
+goldenrod3</div>
+<div id='d349' class='colors'>
+goldenrod4</div>
+<div id='d350' class='colors'>
+DarkGoldenrod</div>
+<div id='d351' class='colors'>
+DarkGoldenrod1</div>
+<div id='d352' class='colors'>
+DarkGoldenrod2</div>
+<div id='d353' class='colors'>
+DarkGoldenrod3</div>
+<div id='d354' class='colors'>
+DarkGoldenrod4</div>
+<div id='d355' class='colors'>
+FloralWhite</div>
+<div id='d356' class='colors'>
+wheat2</div>
+<div id='d357' class='colors'>
+OldLace</div>
+<div id='d358' class='colors'>
+wheat</div>
+<div id='d359' class='colors'>
+wheat1</div>
+<div id='d360' class='colors'>
+wheat3</div>
+<div id='d361' class='colors'>
+orange</div>
+<div id='d362' class='colors'>
+orange1</div>
+<div id='d363' class='colors'>
+orange2</div>
+<div id='d364' class='colors'>
+orange3</div>
+<div id='d365' class='colors'>
+orange4</div>
+<div id='d366' class='colors'>
+wheat4</div>
+<div id='d367' class='colors'>
+moccasin</div>
+<div id='d368' class='colors'>
+PapayaWhip</div>
+<div id='d369' class='colors'>
+NavajoWhite3</div>
+<div id='d370' class='colors'>
+BlanchedAlmond</div>
+<div id='d371' class='colors'>
+NavajoWhite</div>
+<div id='d372' class='colors'>
+NavajoWhite1</div>
+<div id='d373' class='colors'>
+NavajoWhite2</div>
+<div id='d374' class='colors'>
+NavajoWhite4</div>
+<div id='d375' class='colors'>
+AntiqueWhite4</div>
+<div id='d376' class='colors'>
+AntiqueWhite</div>
+<div id='d377' class='colors'>
+tan</div>
+<div id='d378' class='colors'>
+bisque4</div>
+<div id='d379' class='colors'>
+burlywood</div>
+<div id='d380' class='colors'>
+AntiqueWhite2</div>
+<div id='d381' class='colors'>
+burlywood1</div>
+<div id='d382' class='colors'>
+burlywood3</div>
+<div id='d383' class='colors'>
+burlywood2</div>
+<div id='d384' class='colors'>
+AntiqueWhite1</div>
+<div id='d385' class='colors'>
+burlywood4</div>
+<div id='d386' class='colors'>
+AntiqueWhite3</div>
+<div id='d387' class='colors'>
+DarkOrange</div>
+<div id='d388' class='colors'>
+bisque2</div>
+<div id='d389' class='colors'>
+bisque</div>
+<div id='d390' class='colors'>
+bisque1</div>
+<div id='d391' class='colors'>
+bisque3</div>
+<div id='d392' class='colors'>
+DarkOrange1</div>
+<div id='d393' class='colors'>
+linen</div>
+<div id='d394' class='colors'>
+DarkOrange2</div>
+<div id='d395' class='colors'>
+DarkOrange3</div>
+<div id='d396' class='colors'>
+DarkOrange4</div>
+<div id='d397' class='colors'>
+peru</div>
+<div id='d398' class='colors'>
+tan1</div>
+<div id='d399' class='colors'>
+tan2</div>
+<div id='d400' class='colors'>
+tan3</div>
+<div id='d401' class='colors'>
+tan4</div>
+<div id='d402' class='colors'>
+PeachPuff</div>
+<div id='d403' class='colors'>
+PeachPuff1</div>
+<div id='d404' class='colors'>
+PeachPuff4</div>
+<div id='d405' class='colors'>
+PeachPuff2</div>
+<div id='d406' class='colors'>
+PeachPuff3</div>
+<div id='d407' class='colors'>
+SandyBrown</div>
+<div id='d408' class='colors'>
+seashell4</div>
+<div id='d409' class='colors'>
+seashell2</div>
+<div id='d410' class='colors'>
+seashell3</div>
+<div id='d411' class='colors'>
+chocolate</div>
+<div id='d412' class='colors'>
+chocolate1</div>
+<div id='d413' class='colors'>
+chocolate2</div>
+<div id='d414' class='colors'>
+chocolate3</div>
+<div id='d415' class='colors'>
+chocolate4</div>
+<div id='d416' class='colors'>
+SaddleBrown</div>
+<div id='d417' class='colors'>
+seashell</div>
+<div id='d418' class='colors'>
+seashell1</div>
+<div id='d419' class='colors'>
+sienna4</div>
+<div id='d420' class='colors'>
+sienna</div>
+<div id='d421' class='colors'>
+sienna1</div>
+<div id='d422' class='colors'>
+sienna2</div>
+<div id='d423' class='colors'>
+sienna3</div>
+<div id='d424' class='colors'>
+LightSalmon3</div>
+<div id='d425' class='colors'>
+LightSalmon</div>
+<div id='d426' class='colors'>
+LightSalmon1</div>
+<div id='d427' class='colors'>
+LightSalmon4</div>
+<div id='d428' class='colors'>
+LightSalmon2</div>
+<div id='d429' class='colors'>
+coral</div>
+<div id='d430' class='colors'>
+OrangeRed</div>
+<div id='d431' class='colors'>
+OrangeRed1</div>
+<div id='d432' class='colors'>
+OrangeRed2</div>
+<div id='d433' class='colors'>
+OrangeRed3</div>
+<div id='d434' class='colors'>
+OrangeRed4</div>
+<div id='d435' class='colors'>
+DarkSalmon</div>
+<div id='d436' class='colors'>
+salmon1</div>
+<div id='d437' class='colors'>
+salmon2</div>
+<div id='d438' class='colors'>
+salmon3</div>
+<div id='d439' class='colors'>
+salmon4</div>
+<div id='d440' class='colors'>
+coral1</div>
+<div id='d441' class='colors'>
+coral2</div>
+<div id='d442' class='colors'>
+coral3</div>
+<div id='d443' class='colors'>
+coral4</div>
+<div id='d444' class='colors'>
+tomato4</div>
+<div id='d445' class='colors'>
+tomato</div>
+<div id='d446' class='colors'>
+tomato1</div>
+<div id='d447' class='colors'>
+tomato2</div>
+<div id='d448' class='colors'>
+tomato3</div>
+<div id='d449' class='colors'>
+MistyRose4</div>
+<div id='d450' class='colors'>
+MistyRose2</div>
+<div id='d451' class='colors'>
+MistyRose</div>
+<div id='d452' class='colors'>
+MistyRose1</div>
+<div id='d453' class='colors'>
+salmon</div>
+<div id='d454' class='colors'>
+MistyRose3</div>
+<div id='d455' class='colors'>
+white</div>
+<div id='d456' class='colors'>
+gray100</div>
+<div id='d457' class='colors'>
+grey100</div>
+<div id='d458' class='colors'>
+grey100</div>
+<div id='d459' class='colors'>
+gray99</div>
+<div id='d460' class='colors'>
+grey99</div>
+<div id='d461' class='colors'>
+gray98</div>
+<div id='d462' class='colors'>
+grey98</div>
+<div id='d463' class='colors'>
+gray97</div>
+<div id='d464' class='colors'>
+grey97</div>
+<div id='d465' class='colors'>
+gray96</div>
+<div id='d466' class='colors'>
+grey96</div>
+<div id='d467' class='colors'>
+WhiteSmoke</div>
+<div id='d468' class='colors'>
+gray95</div>
+<div id='d469' class='colors'>
+grey95</div>
+<div id='d470' class='colors'>
+gray94</div>
+<div id='d471' class='colors'>
+grey94</div>
+<div id='d472' class='colors'>
+gray93</div>
+<div id='d473' class='colors'>
+grey93</div>
+<div id='d474' class='colors'>
+gray92</div>
+<div id='d475' class='colors'>
+grey92</div>
+<div id='d476' class='colors'>
+gray91</div>
+<div id='d477' class='colors'>
+grey91</div>
+<div id='d478' class='colors'>
+gray90</div>
+<div id='d479' class='colors'>
+grey90</div>
+<div id='d480' class='colors'>
+gray89</div>
+<div id='d481' class='colors'>
+grey89</div>
+<div id='d482' class='colors'>
+gray88</div>
+<div id='d483' class='colors'>
+grey88</div>
+<div id='d484' class='colors'>
+gray87</div>
+<div id='d485' class='colors'>
+grey87</div>
+<div id='d486' class='colors'>
+gainsboro</div>
+<div id='d487' class='colors'>
+gray86</div>
+<div id='d488' class='colors'>
+grey86</div>
+<div id='d489' class='colors'>
+gray85</div>
+<div id='d490' class='colors'>
+grey85</div>
+<div id='d491' class='colors'>
+gray84</div>
+<div id='d492' class='colors'>
+grey84</div>
+<div id='d493' class='colors'>
+gray83</div>
+<div id='d494' class='colors'>
+grey83</div>
+<div id='d495' class='colors'>
+LightGray</div>
+<div id='d496' class='colors'>
+LightGrey</div>
+<div id='d497' class='colors'>
+gray82</div>
+<div id='d498' class='colors'>
+grey82</div>
+<div id='d499' class='colors'>
+gray81</div>
+<div id='d500' class='colors'>
+grey81</div>
+<div id='d501' class='colors'>
+gray80</div>
+<div id='d502' class='colors'>
+grey80</div>
+<div id='d503' class='colors'>
+gray79</div>
+<div id='d504' class='colors'>
+grey79</div>
+<div id='d505' class='colors'>
+gray78</div>
+<div id='d506' class='colors'>
+grey78</div>
+<div id='d507' class='colors'>
+gray77</div>
+<div id='d508' class='colors'>
+grey77</div>
+<div id='d509' class='colors'>
+gray76</div>
+<div id='d510' class='colors'>
+grey76</div>
+<div id='d511' class='colors'>
+silver</div>
+<div id='d512' class='colors'>
+gray75</div>
+<div id='d513' class='colors'>
+grey75</div>
+<div id='d514' class='colors'>
+gray74</div>
+<div id='d515' class='colors'>
+grey74</div>
+<div id='d516' class='colors'>
+gray73</div>
+<div id='d517' class='colors'>
+grey73</div>
+<div id='d518' class='colors'>
+gray72</div>
+<div id='d519' class='colors'>
+grey72</div>
+<div id='d520' class='colors'>
+gray71</div>
+<div id='d521' class='colors'>
+grey71</div>
+<div id='d522' class='colors'>
+gray70</div>
+<div id='d523' class='colors'>
+grey70</div>
+<div id='d524' class='colors'>
+gray69</div>
+<div id='d525' class='colors'>
+grey69</div>
+<div id='d526' class='colors'>
+gray68</div>
+<div id='d527' class='colors'>
+grey68</div>
+<div id='d528' class='colors'>
+gray67</div>
+<div id='d529' class='colors'>
+grey67</div>
+<div id='d530' class='colors'>
+DarkGray</div>
+<div id='d531' class='colors'>
+DarkGrey</div>
+<div id='d532' class='colors'>
+gray66</div>
+<div id='d533' class='colors'>
+grey66</div>
+<div id='d534' class='colors'>
+gray65</div>
+<div id='d535' class='colors'>
+grey65</div>
+<div id='d536' class='colors'>
+gray64</div>
+<div id='d537' class='colors'>
+grey64</div>
+<div id='d538' class='colors'>
+gray63</div>
+<div id='d539' class='colors'>
+grey63</div>
+<div id='d540' class='colors'>
+gray62</div>
+<div id='d541' class='colors'>
+grey62</div>
+<div id='d542' class='colors'>
+gray61</div>
+<div id='d543' class='colors'>
+grey61</div>
+<div id='d544' class='colors'>
+gray60</div>
+<div id='d545' class='colors'>
+grey60</div>
+<div id='d546' class='colors'>
+gray59</div>
+<div id='d547' class='colors'>
+grey59</div>
+<div id='d548' class='colors'>
+gray58</div>
+<div id='d549' class='colors'>
+grey58</div>
+<div id='d550' class='colors'>
+gray57</div>
+<div id='d551' class='colors'>
+grey57</div>
+<div id='d552' class='colors'>
+gray56</div>
+<div id='d553' class='colors'>
+grey56</div>
+<div id='d554' class='colors'>
+gray55</div>
+<div id='d555' class='colors'>
+grey55</div>
+<div id='d556' class='colors'>
+gray54</div>
+<div id='d557' class='colors'>
+grey54</div>
+<div id='d558' class='colors'>
+gray53</div>
+<div id='d559' class='colors'>
+grey53</div>
+<div id='d560' class='colors'>
+gray52</div>
+<div id='d561' class='colors'>
+grey52</div>
+<div id='d562' class='colors'>
+gray51</div>
+<div id='d563' class='colors'>
+grey51</div>
+<div id='d564' class='colors'>
+fractal</div>
+<div id='d565' class='colors'>
+gray50</div>
+<div id='d566' class='colors'>
+grey50</div>
+<div id='d567' class='colors'>
+gray</div>
+<div id='d568' class='colors'>
+gray49</div>
+<div id='d569' class='colors'>
+grey49</div>
+<div id='d570' class='colors'>
+gray48</div>
+<div id='d571' class='colors'>
+grey48</div>
+<div id='d572' class='colors'>
+gray47</div>
+<div id='d573' class='colors'>
+grey47</div>
+<div id='d574' class='colors'>
+gray46</div>
+<div id='d575' class='colors'>
+grey46</div>
+<div id='d576' class='colors'>
+gray45</div>
+<div id='d577' class='colors'>
+grey45</div>
+<div id='d578' class='colors'>
+gray44</div>
+<div id='d579' class='colors'>
+grey44</div>
+<div id='d580' class='colors'>
+gray43</div>
+<div id='d581' class='colors'>
+grey43</div>
+<div id='d582' class='colors'>
+gray42</div>
+<div id='d583' class='colors'>
+grey42</div>
+<div id='d584' class='colors'>
+DimGray</div>
+<div id='d585' class='colors'>
+DimGrey</div>
+<div id='d586' class='colors'>
+gray41</div>
+<div id='d587' class='colors'>
+grey41</div>
+<div id='d588' class='colors'>
+gray40</div>
+<div id='d589' class='colors'>
+grey40</div>
+<div id='d590' class='colors'>
+gray39</div>
+<div id='d591' class='colors'>
+grey39</div>
+<div id='d592' class='colors'>
+gray38</div>
+<div id='d593' class='colors'>
+grey38</div>
+<div id='d594' class='colors'>
+gray37</div>
+<div id='d595' class='colors'>
+grey37</div>
+<div id='d596' class='colors'>
+gray36</div>
+<div id='d597' class='colors'>
+grey36</div>
+<div id='d598' class='colors'>
+gray35</div>
+<div id='d599' class='colors'>
+grey35</div>
+<div id='d600' class='colors'>
+gray34</div>
+<div id='d601' class='colors'>
+grey34</div>
+<div id='d602' class='colors'>
+gray33</div>
+<div id='d603' class='colors'>
+grey33</div>
+<div id='d604' class='colors'>
+gray32</div>
+<div id='d605' class='colors'>
+grey32</div>
+<div id='d606' class='colors'>
+gray31</div>
+<div id='d607' class='colors'>
+grey31</div>
+<div id='d608' class='colors'>
+gray30</div>
+<div id='d609' class='colors'>
+grey30</div>
+<div id='d610' class='colors'>
+gray29</div>
+<div id='d611' class='colors'>
+grey29</div>
+<div id='d612' class='colors'>
+gray28</div>
+<div id='d613' class='colors'>
+grey28</div>
+<div id='d614' class='colors'>
+gray27</div>
+<div id='d615' class='colors'>
+grey27</div>
+<div id='d616' class='colors'>
+gray26</div>
+<div id='d617' class='colors'>
+grey26</div>
+<div id='d618' class='colors'>
+gray25</div>
+<div id='d619' class='colors'>
+grey25</div>
+<div id='d620' class='colors'>
+gray24</div>
+<div id='d621' class='colors'>
+grey24</div>
+<div id='d622' class='colors'>
+gray23</div>
+<div id='d623' class='colors'>
+grey23</div>
+<div id='d624' class='colors'>
+gray22</div>
+<div id='d625' class='colors'>
+grey22</div>
+<div id='d626' class='colors'>
+gray21</div>
+<div id='d627' class='colors'>
+grey21</div>
+<div id='d628' class='colors'>
+gray20</div>
+<div id='d629' class='colors'>
+grey20</div>
+<div id='d630' class='colors'>
+gray19</div>
+<div id='d631' class='colors'>
+grey19</div>
+<div id='d632' class='colors'>
+gray18</div>
+<div id='d633' class='colors'>
+grey18</div>
+<div id='d634' class='colors'>
+gray17</div>
+<div id='d635' class='colors'>
+grey17</div>
+<div id='d636' class='colors'>
+gray16</div>
+<div id='d637' class='colors'>
+grey16</div>
+<div id='d638' class='colors'>
+gray15</div>
+<div id='d639' class='colors'>
+grey15</div>
+<div id='d640' class='colors'>
+gray14</div>
+<div id='d641' class='colors'>
+grey14</div>
+<div id='d642' class='colors'>
+gray13</div>
+<div id='d643' class='colors'>
+grey13</div>
+<div id='d644' class='colors'>
+gray12</div>
+<div id='d645' class='colors'>
+grey12</div>
+<div id='d646' class='colors'>
+gray11</div>
+<div id='d647' class='colors'>
+grey11</div>
+<div id='d648' class='colors'>
+gray10</div>
+<div id='d649' class='colors'>
+grey10</div>
+<div id='d650' class='colors'>
+gray9</div>
+<div id='d651' class='colors'>
+grey9</div>
+<div id='d652' class='colors'>
+gray8</div>
+<div id='d653' class='colors'>
+grey8</div>
+<div id='d654' class='colors'>
+gray7</div>
+<div id='d655' class='colors'>
+grey7</div>
+<div id='d656' class='colors'>
+gray6</div>
+<div id='d657' class='colors'>
+grey6</div>
+<div id='d658' class='colors'>
+gray5</div>
+<div id='d659' class='colors'>
+grey5</div>
+<div id='d660' class='colors'>
+gray4</div>
+<div id='d661' class='colors'>
+grey4</div>
+<div id='d662' class='colors'>
+gray3</div>
+<div id='d663' class='colors'>
+grey3</div>
+<div id='d664' class='colors'>
+gray2</div>
+<div id='d665' class='colors'>
+grey2</div>
+<div id='d666' class='colors'>
+gray1</div>
+<div id='d667' class='colors'>
+grey1</div>
+<div id='d668' class='colors'>
+black</div>
+<div id='d669' class='colors'>
+gray0</div>
+<div id='d670' class='colors'>
+grey0</div>
+<div id='d671' class='colors'>
+opaque</div>
+<div id='d672' class='colors'>
+none</div>
+<div id='d673' class='colors'>
+transparent</div>
+</div>
+
+<div id='colornames'>
+WHERE THE COLORNAMES WILL GO
+</div>
+
+<div id='hexswitch'>CLICK TO SHOW HEXES</div>
+<div id='infoswitch'>CLICK TO SHOW INFO</div>
+<script type='text/javascript' src='jquery-1.6.4.min.js'></script><script type='text/javascript' src='colordict.js'></script>
+<script type='text/javascript'>
+$('.colors').html("")
+$('body').css('background-color','white')
+
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newwidth = goldenize(result)
+ widthval = newwidth.toString()+'px'
+ $(idandselectr).css('width', widthval)
+ }
+makegolden('.colors', 'height')
+
+
+//remove content this function takes the name out of the divs
+infoswitch = false;
+function removecontent()
+ {
+ if(infoswitch == false)
+ {
+ $('#infoswitch').click(function()
+ {
+ infoswitch = true
+ if(infoswitch == true){
+ $('.colors').html("")
+ }
+ })
+ }
+ if(infoswitch == true)
+ {
+ $('#infoswitch').click(function()
+ {
+ infoswitch = false
+ })
+ }
+ }
+removecontent()
+
+function colorToHex(color)
+{
+ if (color.substr(0, 1) === '#') {
+ return color;
+ }
+ var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color);
+
+ var red = parseInt(digits[2]);
+ var green = parseInt(digits[3]);
+ var blue = parseInt(digits[4]);
+
+ var rgb = blue | (green << 8) | (red << 16);
+ return digits[1] + '#' + rgb.toString(16);
+};
+
+//takes a div name and returns a colorname
+
+function showcolorname(divstr)
+
+ {
+ bgcolor = $('#'+divstr).css('background-color')
+ lowercasehex = colorToHex(bgcolor)
+ hex = lowercasehex.toUpperCase()
+ imname = hextoname[hex]
+ if (hexes == true)
+ {
+ imname = hex
+ }
+ return imname
+ }
+function bigname(divstr)
+ {
+ colorname = showcolorname(divstr)
+ $('#colornames').html(colorname)
+ }
+function writeit(text)
+ {
+ $('#colornames').append(text)
+ }
+function makebig(divstr)
+ {
+ firstheight = $('#'+divstr).height()
+ newheight = goldenize(firstheight)
+ $('#'+divstr).height(newheight)
+ }
+function makesmall(divstr)
+ {
+ oldheight = $('.colors').height()
+ $('#'+divstr).height(oldheight)
+ }
+$('.colors').hover(function() {
+ bigname(this.id);
+ makebig(this.id);
+ makegolden('#'+this.id, 'height')},
+function(){
+ makesmall(this.id);
+ makegolden('#'+this.id, 'height')
+});
+$(".colors").hover(function(){
+$('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+});
+$('body').css('background-color', 'white')
+$('.colors').css('margin-top', '2px')
+var hexes = false
+function hexswitch()
+ {
+ if(hexes == false)
+ {
+ $('#hexswitch').html('CLICK TO SHOW COLOR NAMES')
+ hexes = true;
+ }
+
+ else
+ {
+ $('#hexswitch').html('CLICK TO SHOW HEX NAMES')
+ hexes = false;
+ }
+ }
+$('#hexswitch').click(function(){hexswitch()})
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/colors/junk/picker.js b/frontend/imgrid/colors/colors/junk/picker.js
new file mode 100755
index 0000000..04a49f1
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/picker.js
@@ -0,0 +1,15 @@
+var colorpicker = "<div id='main'>"+"<div id='d0' class='colors'>"+"snow</div>"+"<div id='d1' class='colors'>"+"snow1</div>"+"<div id='d2' class='colors'>"+"snow2</div>"+"<div id='d3' class='colors'>"+"RosyBrown1</div>"+"<div id='d4' class='colors'>"+"RosyBrown2</div>"+"<div id='d5' class='colors'>"+"snow3</div>"+"<div id='d6' class='colors'>"+"LightCoral</div>"+"<div id='d7' class='colors'>"+"IndianRed1</div>"+"<div id='d8' class='colors'>"+"RosyBrown3</div>"+"<div id='d9' class='colors'>"+"IndianRed2</div>"+"<div id='d10' class='colors'>"+"RosyBrown</div>"+"<div id='d11' class='colors'>"+"brown1</div>"+"<div id='d12' class='colors'>"+"firebrick1</div>"+"<div id='d13' class='colors'>"+"brown2</div>"+"<div id='d14' class='colors'>"+"IndianRed</div>"+"<div id='d15' class='colors'>"+"IndianRed3</div>"+"<div id='d16' class='colors'>"+"firebrick2</div>"+"<div id='d17' class='colors'>"+"snow4</div>"+"<div id='d18' class='colors'>"+"brown3</div>"+"<div id='d19' class='colors'>"+"red</div>"+"<div id='d20' class='colors'>"+"red1</div>"+"<div id='d21' class='colors'>"+"RosyBrown4</div>"+"<div id='d22' class='colors'>"+"firebrick3</div>"+"<div id='d23' class='colors'>"+"red2</div>"+"<div id='d24' class='colors'>"+"firebrick</div>"+"<div id='d25' class='colors'>"+"brown</div>"+"<div id='d26' class='colors'>"+"red3</div>"+"<div id='d27' class='colors'>"+"IndianRed4</div>"+"<div id='d28' class='colors'>"+"brown4</div>"+"<div id='d29' class='colors'>"+"firebrick4</div>"+"<div id='d30' class='colors'>"+"DarkRed</div>"+"<div id='d31' class='colors'>"+"red4</div>"+"<div id='d32' class='colors'>"+"maroon</div>"+"<div id='d33' class='colors'>"+"LightPink1</div>"+"<div id='d34' class='colors'>"+"LightPink3</div>"+"<div id='d35' class='colors'>"+"LightPink4</div>"+"<div id='d36' class='colors'>"+"LightPink2</div>"+"<div id='d37' class='colors'>"+"LightPink</div>"+"<div id='d38' class='colors'>"+"pink</div>"+"<div id='d39' class='colors'>"+"crimson</div>"+"<div id='d40' class='colors'>"+"pink1</div>"+"<div id='d41' class='colors'>"+"pink2</div>"+"<div id='d42' class='colors'>"+"pink3</div>"+"<div id='d43' class='colors'>"+"pink4</div>"+"<div id='d44' class='colors'>"+"PaleVioletRed4</div>"+"<div id='d45' class='colors'>"+"PaleVioletRed</div>"+"<div id='d46' class='colors'>"+"PaleVioletRed2</div>"+"<div id='d47' class='colors'>"+"PaleVioletRed1</div>"+"<div id='d48' class='colors'>"+"PaleVioletRed3</div>"+"<div id='d49' class='colors'>"+"LavenderBlush</div>"+"<div id='d50' class='colors'>"+"LavenderBlush1</div>"+"<div id='d51' class='colors'>"+"LavenderBlush3</div>"+"<div id='d52' class='colors'>"+"LavenderBlush2</div>"+"<div id='d53' class='colors'>"+"LavenderBlush4</div>"+"<div id='d54' class='colors'>"+"maroon</div>"+"<div id='d55' class='colors'>"+"HotPink3</div>"+"<div id='d56' class='colors'>"+"VioletRed3</div>"+"<div id='d57' class='colors'>"+"VioletRed1</div>"+"<div id='d58' class='colors'>"+"VioletRed2</div>"+"<div id='d59' class='colors'>"+"VioletRed4</div>"+"<div id='d60' class='colors'>"+"HotPink2</div>"+"<div id='d61' class='colors'>"+"HotPink1</div>"+"<div id='d62' class='colors'>"+"HotPink4</div>"+"<div id='d63' class='colors'>"+"HotPink</div>"+"<div id='d64' class='colors'>"+"DeepPink</div>"+"<div id='d65' class='colors'>"+"DeepPink1</div>"+"<div id='d66' class='colors'>"+"DeepPink2</div>"+"<div id='d67' class='colors'>"+"DeepPink3</div>"+"<div id='d68' class='colors'>"+"DeepPink4</div>"+"<div id='d69' class='colors'>"+"maroon1</div>"+"<div id='d70' class='colors'>"+"maroon2</div>"+"<div id='d71' class='colors'>"+"maroon3</div>"+"<div id='d72' class='colors'>"+"maroon4</div>"+"<div id='d73' class='colors'>"+"MediumVioletRed</div>"+"<div id='d74' class='colors'>"+"VioletRed</div>"+"<div id='d75' class='colors'>"+"orchid2</div>"+"<div id='d76' class='colors'>"+"orchid</div>"+"<div id='d77' class='colors'>"+"orchid1</div>"+"<div id='d78' class='colors'>"+"orchid3</div>"+"<div id='d79' class='colors'>"+"orchid4</div>"+"<div id='d80' class='colors'>"+"thistle1</div>"+"<div id='d81' class='colors'>"+"thistle2</div>"+"<div id='d82' class='colors'>"+"plum1</div>"+"<div id='d83' class='colors'>"+"plum2</div>"+"<div id='d84' class='colors'>"+"thistle</div>"+"<div id='d85' class='colors'>"+"thistle3</div>"+"<div id='d86' class='colors'>"+"plum</div>"+"<div id='d87' class='colors'>"+"violet</div>"+"<div id='d88' class='colors'>"+"plum3</div>"+"<div id='d89' class='colors'>"+"thistle4</div>"+"<div id='d90' class='colors'>"+"fuchsia</div>"+"<div id='d91' class='colors'>"+"magenta</div>"+"<div id='d92' class='colors'>"+"magenta1</div>"+"<div id='d93' class='colors'>"+"plum4</div>"+"<div id='d94' class='colors'>"+"magenta2</div>"+"<div id='d95' class='colors'>"+"magenta3</div>"+"<div id='d96' class='colors'>"+"DarkMagenta</div>"+"<div id='d97' class='colors'>"+"magenta4</div>"+"<div id='d98' class='colors'>"+"purple</div>"+"<div id='d99' class='colors'>"+"MediumOrchid</div>"+"<div id='d100' class='colors'>"+"MediumOrchid1</div>"+"<div id='d101' class='colors'>"+"MediumOrchid2</div>"+"<div id='d102' class='colors'>"+"MediumOrchid3</div>"+"<div id='d103' class='colors'>"+"MediumOrchid4</div>"+"<div id='d104' class='colors'>"+"DarkViolet</div>"+"<div id='d105' class='colors'>"+"DarkOrchid</div>"+"<div id='d106' class='colors'>"+"DarkOrchid1</div>"+"<div id='d107' class='colors'>"+"DarkOrchid3</div>"+"<div id='d108' class='colors'>"+"DarkOrchid2</div>"+"<div id='d109' class='colors'>"+"DarkOrchid4</div>"+"<div id='d110' class='colors'>"+"purple</div>"+"<div id='d111' class='colors'>"+"indigo</div>"+"<div id='d112' class='colors'>"+"BlueViolet</div>"+"<div id='d113' class='colors'>"+"purple2</div>"+"<div id='d114' class='colors'>"+"purple3</div>"+"<div id='d115' class='colors'>"+"purple4</div>"+"<div id='d116' class='colors'>"+"purple1</div>"+"<div id='d117' class='colors'>"+"MediumPurple</div>"+"<div id='d118' class='colors'>"+"MediumPurple1</div>"+"<div id='d119' class='colors'>"+"MediumPurple2</div>"+"<div id='d120' class='colors'>"+"MediumPurple3</div>"+"<div id='d121' class='colors'>"+"MediumPurple4</div>"+"<div id='d122' class='colors'>"+"DarkSlateBlue</div>"+"<div id='d123' class='colors'>"+"LightSlateBlue</div>"+"<div id='d124' class='colors'>"+"MediumSlateBlue</div>"+"<div id='d125' class='colors'>"+"SlateBlue</div>"+"<div id='d126' class='colors'>"+"SlateBlue1</div>"+"<div id='d127' class='colors'>"+"SlateBlue2</div>"+"<div id='d128' class='colors'>"+"SlateBlue3</div>"+"<div id='d129' class='colors'>"+"SlateBlue4</div>"+"<div id='d130' class='colors'>"+"GhostWhite</div>"+"<div id='d131' class='colors'>"+"lavender</div>"+"<div id='d132' class='colors'>"+"blue</div>"+"<div id='d133' class='colors'>"+"blue1</div>"+"<div id='d134' class='colors'>"+"blue2</div>"+"<div id='d135' class='colors'>"+"blue3</div>"+"<div id='d136' class='colors'>"+"MediumBlue</div>"+"<div id='d137' class='colors'>"+"blue4</div>"+"<div id='d138' class='colors'>"+"DarkBlue</div>"+"<div id='d139' class='colors'>"+"MidnightBlue</div>"+"<div id='d140' class='colors'>"+"navy</div>"+"<div id='d141' class='colors'>"+"NavyBlue</div>"+"<div id='d142' class='colors'>"+"RoyalBlue</div>"+"<div id='d143' class='colors'>"+"RoyalBlue1</div>"+"<div id='d144' class='colors'>"+"RoyalBlue2</div>"+"<div id='d145' class='colors'>"+"RoyalBlue3</div>"+"<div id='d146' class='colors'>"+"RoyalBlue4</div>"+"<div id='d147' class='colors'>"+"CornflowerBlue</div>"+"<div id='d148' class='colors'>"+"LightSteelBlue</div>"+"<div id='d149' class='colors'>"+"LightSteelBlue1</div>"+"<div id='d150' class='colors'>"+"LightSteelBlue2</div>"+"<div id='d151' class='colors'>"+"LightSteelBlue3</div>"+"<div id='d152' class='colors'>"+"LightSteelBlue4</div>"+"<div id='d153' class='colors'>"+"SlateGray4</div>"+"<div id='d154' class='colors'>"+"SlateGray1</div>"+"<div id='d155' class='colors'>"+"SlateGray2</div>"+"<div id='d156' class='colors'>"+"SlateGray3</div>"+"<div id='d157' class='colors'>"+"LightSlateGray</div>"+"<div id='d158' class='colors'>"+"LightSlateGrey</div>"+"<div id='d159' class='colors'>"+"SlateGray</div>"+"<div id='d160' class='colors'>"+"SlateGrey</div>"+"<div id='d161' class='colors'>"+"DodgerBlue</div>"+"<div id='d162' class='colors'>"+"DodgerBlue1</div>"+"<div id='d163' class='colors'>"+"DodgerBlue2</div>"+"<div id='d164' class='colors'>"+"DodgerBlue4</div>"+"<div id='d165' class='colors'>"+"DodgerBlue3</div>"+"<div id='d166' class='colors'>"+"AliceBlue</div>"+"<div id='d167' class='colors'>"+"SteelBlue4</div>"+"<div id='d168' class='colors'>"+"SteelBlue</div>"+"<div id='d169' class='colors'>"+"SteelBlue1</div>"+"<div id='d170' class='colors'>"+"SteelBlue2</div>"+"<div id='d171' class='colors'>"+"SteelBlue3</div>"+"<div id='d172' class='colors'>"+"SkyBlue4</div>"+"<div id='d173' class='colors'>"+"SkyBlue1</div>"+"<div id='d174' class='colors'>"+"SkyBlue2</div>"+"<div id='d175' class='colors'>"+"SkyBlue3</div>"+"<div id='d176' class='colors'>"+"LightSkyBlue</div>"+"<div id='d177' class='colors'>"+"LightSkyBlue4</div>"+"<div id='d178' class='colors'>"+"LightSkyBlue1</div>"+"<div id='d179' class='colors'>"+"LightSkyBlue2</div>"+"<div id='d180' class='colors'>"+"LightSkyBlue3</div>"+"<div id='d181' class='colors'>"+"SkyBlue</div>"+"<div id='d182' class='colors'>"+"LightBlue3</div>"+"<div id='d183' class='colors'>"+"DeepSkyBlue</div>"+"<div id='d184' class='colors'>"+"DeepSkyBlue1</div>"+"<div id='d185' class='colors'>"+"DeepSkyBlue2</div>"+"<div id='d186' class='colors'>"+"DeepSkyBlue4</div>"+"<div id='d187' class='colors'>"+"DeepSkyBlue3</div>"+"<div id='d188' class='colors'>"+"LightBlue1</div>"+"<div id='d189' class='colors'>"+"LightBlue2</div>"+"<div id='d190' class='colors'>"+"LightBlue</div>"+"<div id='d191' class='colors'>"+"LightBlue4</div>"+"<div id='d192' class='colors'>"+"PowderBlue</div>"+"<div id='d193' class='colors'>"+"CadetBlue1</div>"+"<div id='d194' class='colors'>"+"CadetBlue2</div>"+"<div id='d195' class='colors'>"+"CadetBlue3</div>"+"<div id='d196' class='colors'>"+"CadetBlue4</div>"+"<div id='d197' class='colors'>"+"turquoise1</div>"+"<div id='d198' class='colors'>"+"turquoise2</div>"+"<div id='d199' class='colors'>"+"turquoise3</div>"+"<div id='d200' class='colors'>"+"turquoise4</div>"+"<div id='d201' class='colors'>"+"cadet blue</div>"+"<div id='d202' class='colors'>"+"CadetBlue</div>"+"<div id='d203' class='colors'>"+"DarkTurquoise</div>"+"<div id='d204' class='colors'>"+"azure</div>"+"<div id='d205' class='colors'>"+"azure1</div>"+"<div id='d206' class='colors'>"+"LightCyan</div>"+"<div id='d207' class='colors'>"+"LightCyan1</div>"+"<div id='d208' class='colors'>"+"azure2</div>"+"<div id='d209' class='colors'>"+"LightCyan2</div>"+"<div id='d210' class='colors'>"+"PaleTurquoise1</div>"+"<div id='d211' class='colors'>"+"PaleTurquoise</div>"+"<div id='d212' class='colors'>"+"PaleTurquoise2</div>"+"<div id='d213' class='colors'>"+"DarkSlateGray1</div>"+"<div id='d214' class='colors'>"+"azure3</div>"+"<div id='d215' class='colors'>"+"LightCyan3</div>"+"<div id='d216' class='colors'>"+"DarkSlateGray2</div>"+"<div id='d217' class='colors'>"+"PaleTurquoise3</div>"+"<div id='d218' class='colors'>"+"DarkSlateGray3</div>"+"<div id='d219' class='colors'>"+"azure4</div>"+"<div id='d220' class='colors'>"+"LightCyan4</div>"+"<div id='d221' class='colors'>"+"aqua</div>"+"<div id='d222' class='colors'>"+"cyan</div>"+"<div id='d223' class='colors'>"+"cyan1</div>"+"<div id='d224' class='colors'>"+"PaleTurquoise4</div>"+"<div id='d225' class='colors'>"+"cyan2</div>"+"<div id='d226' class='colors'>"+"DarkSlateGray4</div>"+"<div id='d227' class='colors'>"+"cyan3</div>"+"<div id='d228' class='colors'>"+"cyan4</div>"+"<div id='d229' class='colors'>"+"DarkCyan</div>"+"<div id='d230' class='colors'>"+"teal</div>"+"<div id='d231' class='colors'>"+"DarkSlateGray</div>"+"<div id='d232' class='colors'>"+"DarkSlateGrey</div>"+"<div id='d233' class='colors'>"+"MediumTurquoise</div>"+"<div id='d234' class='colors'>"+"LightSeaGreen</div>"+"<div id='d235' class='colors'>"+"turquoise</div>"+"<div id='d236' class='colors'>"+"aquamarine4</div>"+"<div id='d237' class='colors'>"+"aquamarine</div>"+"<div id='d238' class='colors'>"+"aquamarine1</div>"+"<div id='d239' class='colors'>"+"aquamarine2</div>"+"<div id='d240' class='colors'>"+"aquamarine3</div>"+"<div id='d241' class='colors'>"+"MediumAquamarine</div>"+"<div id='d242' class='colors'>"+"MediumSpringGreen</div>"+"<div id='d243' class='colors'>"+"MintCream</div>"+"<div id='d244' class='colors'>"+"SpringGreen</div>"+"<div id='d245' class='colors'>"+"SpringGreen1</div>"+"<div id='d246' class='colors'>"+"SpringGreen2</div>"+"<div id='d247' class='colors'>"+"SpringGreen3</div>"+"<div id='d248' class='colors'>"+"SpringGreen4</div>"+"<div id='d249' class='colors'>"+"MediumSeaGreen</div>"+"<div id='d250' class='colors'>"+"SeaGreen</div>"+"<div id='d251' class='colors'>"+"SeaGreen3</div>"+"<div id='d252' class='colors'>"+"SeaGreen1</div>"+"<div id='d253' class='colors'>"+"SeaGreen4</div>"+"<div id='d254' class='colors'>"+"SeaGreen2</div>"+"<div id='d255' class='colors'>"+"MediumForestGreen</div>"+"<div id='d256' class='colors'>"+"honeydew</div>"+"<div id='d257' class='colors'>"+"honeydew1</div>"+"<div id='d258' class='colors'>"+"honeydew2</div>"+"<div id='d259' class='colors'>"+"DarkSeaGreen1</div>"+"<div id='d260' class='colors'>"+"DarkSeaGreen2</div>"+"<div id='d261' class='colors'>"+"PaleGreen1</div>"+"<div id='d262' class='colors'>"+"PaleGreen</div>"+"<div id='d263' class='colors'>"+"honeydew3</div>"+"<div id='d264' class='colors'>"+"LightGreen</div>"+"<div id='d265' class='colors'>"+"PaleGreen2</div>"+"<div id='d266' class='colors'>"+"DarkSeaGreen3</div>"+"<div id='d267' class='colors'>"+"DarkSeaGreen</div>"+"<div id='d268' class='colors'>"+"PaleGreen3</div>"+"<div id='d269' class='colors'>"+"honeydew4</div>"+"<div id='d270' class='colors'>"+"green1</div>"+"<div id='d271' class='colors'>"+"lime</div>"+"<div id='d272' class='colors'>"+"LimeGreen</div>"+"<div id='d273' class='colors'>"+"DarkSeaGreen4</div>"+"<div id='d274' class='colors'>"+"green2</div>"+"<div id='d275' class='colors'>"+"PaleGreen4</div>"+"<div id='d276' class='colors'>"+"green3</div>"+"<div id='d277' class='colors'>"+"ForestGreen</div>"+"<div id='d278' class='colors'>"+"green4</div>"+"<div id='d279' class='colors'>"+"green</div>"+"<div id='d280' class='colors'>"+"DarkGreen</div>"+"<div id='d281' class='colors'>"+"LawnGreen</div>"+"<div id='d282' class='colors'>"+"chartreuse</div>"+"<div id='d283' class='colors'>"+"chartreuse1</div>"+"<div id='d284' class='colors'>"+"chartreuse2</div>"+"<div id='d285' class='colors'>"+"chartreuse3</div>"+"<div id='d286' class='colors'>"+"chartreuse4</div>"+"<div id='d287' class='colors'>"+"GreenYellow</div>"+"<div id='d288' class='colors'>"+"DarkOliveGreen3</div>"+"<div id='d289' class='colors'>"+"DarkOliveGreen1</div>"+"<div id='d290' class='colors'>"+"DarkOliveGreen2</div>"+"<div id='d291' class='colors'>"+"DarkOliveGreen4</div>"+"<div id='d292' class='colors'>"+"DarkOliveGreen</div>"+"<div id='d293' class='colors'>"+"OliveDrab</div>"+"<div id='d294' class='colors'>"+"OliveDrab1</div>"+"<div id='d295' class='colors'>"+"OliveDrab2</div>"+"<div id='d296' class='colors'>"+"OliveDrab3</div>"+"<div id='d297' class='colors'>"+"YellowGreen</div>"+"<div id='d298' class='colors'>"+"OliveDrab4</div>"+"<div id='d299' class='colors'>"+"ivory</div>"+"<div id='d300' class='colors'>"+"ivory1</div>"+"<div id='d301' class='colors'>"+"LightYellow</div>"+"<div id='d302' class='colors'>"+"LightYellow1</div>"+"<div id='d303' class='colors'>"+"beige</div>"+"<div id='d304' class='colors'>"+"ivory2</div>"+"<div id='d305' class='colors'>"+"LightGoldenrodYellow</div>"+"<div id='d306' class='colors'>"+"LightYellow2</div>"+"<div id='d307' class='colors'>"+"ivory3</div>"+"<div id='d308' class='colors'>"+"LightYellow3</div>"+"<div id='d309' class='colors'>"+"ivory4</div>"+"<div id='d310' class='colors'>"+"LightYellow4</div>"+"<div id='d311' class='colors'>"+"yellow</div>"+"<div id='d312' class='colors'>"+"yellow1</div>"+"<div id='d313' class='colors'>"+"yellow2</div>"+"<div id='d314' class='colors'>"+"yellow3</div>"+"<div id='d315' class='colors'>"+"yellow4</div>"+"<div id='d316' class='colors'>"+"olive</div>"+"<div id='d317' class='colors'>"+"DarkKhaki</div>"+"<div id='d318' class='colors'>"+"khaki2</div>"+"<div id='d319' class='colors'>"+"LemonChiffon4</div>"+"<div id='d320' class='colors'>"+"khaki1</div>"+"<div id='d321' class='colors'>"+"khaki3</div>"+"<div id='d322' class='colors'>"+"khaki4</div>"+"<div id='d323' class='colors'>"+"PaleGoldenrod</div>"+"<div id='d324' class='colors'>"+"LemonChiffon</div>"+"<div id='d325' class='colors'>"+"LemonChiffon1</div>"+"<div id='d326' class='colors'>"+"khaki</div>"+"<div id='d327' class='colors'>"+"LemonChiffon3</div>"+"<div id='d328' class='colors'>"+"LemonChiffon2</div>"+"<div id='d329' class='colors'>"+"MediumGoldenRod</div>"+"<div id='d330' class='colors'>"+"cornsilk4</div>"+"<div id='d331' class='colors'>"+"gold</div>"+"<div id='d332' class='colors'>"+"gold1</div>"+"<div id='d333' class='colors'>"+"gold2</div>"+"<div id='d334' class='colors'>"+"gold3</div>"+"<div id='d335' class='colors'>"+"gold4</div>"+"<div id='d336' class='colors'>"+"LightGoldenrod</div>"+"<div id='d337' class='colors'>"+"LightGoldenrod4</div>"+"<div id='d338' class='colors'>"+"LightGoldenrod1</div>"+"<div id='d339' class='colors'>"+"LightGoldenrod3</div>"+"<div id='d340' class='colors'>"+"LightGoldenrod2</div>"+"<div id='d341' class='colors'>"+"cornsilk3</div>"+"<div id='d342' class='colors'>"+"cornsilk2</div>"+"<div id='d343' class='colors'>"+"cornsilk</div>"+"<div id='d344' class='colors'>"+"cornsilk1</div>"+"<div id='d345' class='colors'>"+"goldenrod</div>"+"<div id='d346' class='colors'>"+"goldenrod1</div>"+"<div id='d347' class='colors'>"+"goldenrod2</div>"+"<div id='d348' class='colors'>"+"goldenrod3</div>"+"<div id='d349' class='colors'>"+"goldenrod4</div>"+"<div id='d350' class='colors'>"+"DarkGoldenrod</div>"+"<div id='d351' class='colors'>"+"DarkGoldenrod1</div>"+"<div id='d352' class='colors'>"+"DarkGoldenrod2</div>"+"<div id='d353' class='colors'>"+"DarkGoldenrod3</div>"+"<div id='d354' class='colors'>"+"DarkGoldenrod4</div>"+"<div id='d355' class='colors'>"+"FloralWhite</div>"+"<div id='d356' class='colors'>"+"wheat2</div>"+"<div id='d357' class='colors'>"+"OldLace</div>"+"<div id='d358' class='colors'>"+"wheat</div>"+"<div id='d359' class='colors'>"+"wheat1</div>"+"<div id='d360' class='colors'>"+"wheat3</div>"+"<div id='d361' class='colors'>"+"orange</div>"+"<div id='d362' class='colors'>"+"orange1</div>"+"<div id='d363' class='colors'>"+"orange2</div>"+"<div id='d364' class='colors'>"+"orange3</div>"+"<div id='d365' class='colors'>"+"orange4</div>"+"<div id='d366' class='colors'>"+"wheat4</div>"+"<div id='d367' class='colors'>"+"moccasin</div>"+"<div id='d368' class='colors'>"+"PapayaWhip</div>"+"<div id='d369' class='colors'>"+"NavajoWhite3</div>"+"<div id='d370' class='colors'>"+"BlanchedAlmond</div>"+"<div id='d371' class='colors'>"+"NavajoWhite</div>"+"<div id='d372' class='colors'>"+"NavajoWhite1</div>"+"<div id='d373' class='colors'>"+"NavajoWhite2</div>"+"<div id='d374' class='colors'>"+"NavajoWhite4</div>"+"<div id='d375' class='colors'>"+"AntiqueWhite4</div>"+"<div id='d376' class='colors'>"+"AntiqueWhite</div>"+"<div id='d377' class='colors'>"+"tan</div>"+"<div id='d378' class='colors'>"+"bisque4</div>"+"<div id='d379' class='colors'>"+"burlywood</div>"+"<div id='d380' class='colors'>"+"AntiqueWhite2</div>"+"<div id='d381' class='colors'>"+"burlywood1</div>"+"<div id='d382' class='colors'>"+"burlywood3</div>"+"<div id='d383' class='colors'>"+"burlywood2</div>"+"<div id='d384' class='colors'>"+"AntiqueWhite1</div>"+"<div id='d385' class='colors'>"+"burlywood4</div>"+"<div id='d386' class='colors'>"+"AntiqueWhite3</div>"+"<div id='d387' class='colors'>"+"DarkOrange</div>"+"<div id='d388' class='colors'>"+"bisque2</div>"+"<div id='d389' class='colors'>"+"bisque</div>"+"<div id='d390' class='colors'>"+"bisque1</div>"+"<div id='d391' class='colors'>"+"bisque3</div>"+"<div id='d392' class='colors'>"+"DarkOrange1</div>"+"<div id='d393' class='colors'>"+"linen</div>"+"<div id='d394' class='colors'>"+"DarkOrange2</div>"+"<div id='d395' class='colors'>"+"DarkOrange3</div>"+"<div id='d396' class='colors'>"+"DarkOrange4</div>"+"<div id='d397' class='colors'>"+"peru</div>"+"<div id='d398' class='colors'>"+"tan1</div>"+"<div id='d399' class='colors'>"+"tan2</div>"+"<div id='d400' class='colors'>"+"tan3</div>"+"<div id='d401' class='colors'>"+"tan4</div>"+"<div id='d402' class='colors'>"+"PeachPuff</div>"+"<div id='d403' class='colors'>"+"PeachPuff1</div>"+"<div id='d404' class='colors'>"+"PeachPuff4</div>"+"<div id='d405' class='colors'>"+"PeachPuff2</div>"+"<div id='d406' class='colors'>"+"PeachPuff3</div>"+"<div id='d407' class='colors'>"+"SandyBrown</div>"+"<div id='d408' class='colors'>"+"seashell4</div>"+"<div id='d409' class='colors'>"+"seashell2</div>"+"<div id='d410' class='colors'>"+"seashell3</div>"+"<div id='d411' class='colors'>"+"chocolate</div>"+"<div id='d412' class='colors'>"+"chocolate1</div>"+"<div id='d413' class='colors'>"+"chocolate2</div>"+"<div id='d414' class='colors'>"+"chocolate3</div>"+"<div id='d415' class='colors'>"+"chocolate4</div>"+"<div id='d416' class='colors'>"+"SaddleBrown</div>"+"<div id='d417' class='colors'>"+"seashell</div>"+"<div id='d418' class='colors'>"+"seashell1</div>"+"<div id='d419' class='colors'>"+"sienna4</div>"+"<div id='d420' class='colors'>"+"sienna</div>"+"<div id='d421' class='colors'>"+"sienna1</div>"+"<div id='d422' class='colors'>"+"sienna2</div>"+"<div id='d423' class='colors'>"+"sienna3</div>"+"<div id='d424' class='colors'>"+"LightSalmon3</div>"+"<div id='d425' class='colors'>"+"LightSalmon</div>"+"<div id='d426' class='colors'>"+"LightSalmon1</div>"+"<div id='d427' class='colors'>"+"LightSalmon4</div>"+"<div id='d428' class='colors'>"+"LightSalmon2</div>"+"<div id='d429' class='colors'>"+"coral</div>"+"<div id='d430' class='colors'>"+"OrangeRed</div>"+"<div id='d431' class='colors'>"+"OrangeRed1</div>"+"<div id='d432' class='colors'>"+"OrangeRed2</div>"+"<div id='d433' class='colors'>"+"OrangeRed3</div>"+"<div id='d434' class='colors'>"+"OrangeRed4</div>"+"<div id='d435' class='colors'>"+"DarkSalmon</div>"+"<div id='d436' class='colors'>"+"salmon1</div>"+"<div id='d437' class='colors'>"+"salmon2</div>"+"<div id='d438' class='colors'>"+"salmon3</div>"+"<div id='d439' class='colors'>"+"salmon4</div>"+"<div id='d440' class='colors'>"+"coral1</div>"+"<div id='d441' class='colors'>"+"coral2</div>"+"<div id='d442' class='colors'>"+"coral3</div>"+"<div id='d443' class='colors'>"+"coral4</div>"+"<div id='d444' class='colors'>"+"tomato4</div>"+"<div id='d445' class='colors'>"+"tomato</div>"+"<div id='d446' class='colors'>"+"tomato1</div>"+"<div id='d447' class='colors'>"+"tomato2</div>"+"<div id='d448' class='colors'>"+"tomato3</div>"+"<div id='d449' class='colors'>"+"MistyRose4</div>"+"<div id='d450' class='colors'>"+"MistyRose2</div>"+"<div id='d451' class='colors'>"+"MistyRose</div>"+"<div id='d452' class='colors'>"+"MistyRose1</div>"+"<div id='d453' class='colors'>"+"salmon</div>"+"<div id='d454' class='colors'>"+"MistyRose3</div>"+"<div id='d455' class='colors'>"+"white</div>"+"<div id='d456' class='colors'>"+"gray100</div>"+"<div id='d457' class='colors'>"+"grey100</div>"+"<div id='d458' class='colors'>"+"grey100</div>"+"<div id='d459' class='colors'>"+"gray99</div>"+"<div id='d460' class='colors'>"+"grey99</div>"+"<div id='d461' class='colors'>"+"gray98</div>"+"<div id='d462' class='colors'>"+"grey98</div>"+"<div id='d463' class='colors'>"+"gray97</div>"+"<div id='d464' class='colors'>"+"grey97</div>"+"<div id='d465' class='colors'>"+"gray96</div>"+"<div id='d466' class='colors'>"+"grey96</div>"+"<div id='d467' class='colors'>"+"WhiteSmoke</div>"+"<div id='d468' class='colors'>"+"gray95</div>"+"<div id='d469' class='colors'>"+"grey95</div>"+"<div id='d470' class='colors'>"+"gray94</div>"+"<div id='d471' class='colors'>"+"grey94</div>"+"<div id='d472' class='colors'>"+"gray93</div>"+"<div id='d473' class='colors'>"+"grey93</div>"+"<div id='d474' class='colors'>"+"gray92</div>"+"<div id='d475' class='colors'>"+"grey92</div>"+"<div id='d476' class='colors'>"+"gray91</div>"+"<div id='d477' class='colors'>"+"grey91</div>"+"<div id='d478' class='colors'>"+"gray90</div>"+"<div id='d479' class='colors'>"+"grey90</div>"+"<div id='d480' class='colors'>"+"gray89</div>"+"<div id='d481' class='colors'>"+"grey89</div>"+"<div id='d482' class='colors'>"+"gray88</div>"+"<div id='d483' class='colors'>"+"grey88</div>"+"<div id='d484' class='colors'>"+"gray87</div>"+"<div id='d485' class='colors'>"+"grey87</div>"+"<div id='d486' class='colors'>"+"gainsboro</div>"+"<div id='d487' class='colors'>"+"gray86</div>"+"<div id='d488' class='colors'>"+"grey86</div>"+"<div id='d489' class='colors'>"+"gray85</div>"+"<div id='d490' class='colors'>"+"grey85</div>"+"<div id='d491' class='colors'>"+"gray84</div>"+"<div id='d492' class='colors'>"+"grey84</div>"+"<div id='d493' class='colors'>"+"gray83</div>"+"<div id='d494' class='colors'>"+"grey83</div>"+"<div id='d495' class='colors'>"+"LightGray</div>"+"<div id='d496' class='colors'>"+"LightGrey</div>"+"<div id='d497' class='colors'>"+"gray82</div>"+"<div id='d498' class='colors'>"+"grey82</div>"+"<div id='d499' class='colors'>"+"gray81</div>"+"<div id='d500' class='colors'>"+"grey81</div>"+"<div id='d501' class='colors'>"+"gray80</div>"+"<div id='d502' class='colors'>"+"grey80</div>"+"<div id='d503' class='colors'>"+"gray79</div>"+"<div id='d504' class='colors'>"+"grey79</div>"+"<div id='d505' class='colors'>"+"gray78</div>"+"<div id='d506' class='colors'>"+"grey78</div>"+"<div id='d507' class='colors'>"+"gray77</div>"+"<div id='d508' class='colors'>"+"grey77</div>"+"<div id='d509' class='colors'>"+"gray76</div>"+"<div id='d510' class='colors'>"+"grey76</div>"+"<div id='d511' class='colors'>"+"silver</div>"+"<div id='d512' class='colors'>"+"gray75</div>"+"<div id='d513' class='colors'>"+"grey75</div>"+"<div id='d514' class='colors'>"+"gray74</div>"+"<div id='d515' class='colors'>"+"grey74</div>"+"<div id='d516' class='colors'>"+"gray73</div>"+"<div id='d517' class='colors'>"+"grey73</div>"+"<div id='d518' class='colors'>"+"gray72</div>"+"<div id='d519' class='colors'>"+"grey72</div>"+"<div id='d520' class='colors'>"+"gray71</div>"+"<div id='d521' class='colors'>"+"grey71</div>"+"<div id='d522' class='colors'>"+"gray70</div>"+"<div id='d523' class='colors'>"+"grey70</div>"+"<div id='d524' class='colors'>"+"gray69</div>"+"<div id='d525' class='colors'>"+"grey69</div>"+"<div id='d526' class='colors'>"+"gray68</div>"+"<div id='d527' class='colors'>"+"grey68</div>"+"<div id='d528' class='colors'>"+"gray67</div>"+"<div id='d529' class='colors'>"+"grey67</div>"+"<div id='d530' class='colors'>"+"DarkGray</div>"+"<div id='d531' class='colors'>"+"DarkGrey</div>"+"<div id='d532' class='colors'>"+"gray66</div>"+"<div id='d533' class='colors'>"+"grey66</div>"+"<div id='d534' class='colors'>"+"gray65</div>"+"<div id='d535' class='colors'>"+"grey65</div>"+"<div id='d536' class='colors'>"+"gray64</div>"+"<div id='d537' class='colors'>"+"grey64</div>"+"<div id='d538' class='colors'>"+"gray63</div>"+"<div id='d539' class='colors'>"+"grey63</div>"+"<div id='d540' class='colors'>"+"gray62</div>"+"<div id='d541' class='colors'>"+"grey62</div>"+"<div id='d542' class='colors'>"+"gray61</div>"+"<div id='d543' class='colors'>"+"grey61</div>"+"<div id='d544' class='colors'>"+"gray60</div>"+"<div id='d545' class='colors'>"+"grey60</div>"+"<div id='d546' class='colors'>"+"gray59</div>"+"<div id='d547' class='colors'>"+"grey59</div>"+"<div id='d548' class='colors'>"+"gray58</div>"+"<div id='d549' class='colors'>"+"grey58</div>"+"<div id='d550' class='colors'>"+"gray57</div>"+"<div id='d551' class='colors'>"+"grey57</div>"+"<div id='d552' class='colors'>"+"gray56</div>"+"<div id='d553' class='colors'>"+"grey56</div>"+"<div id='d554' class='colors'>"+"gray55</div>"+"<div id='d555' class='colors'>"+"grey55</div>"+"<div id='d556' class='colors'>"+"gray54</div>"+"<div id='d557' class='colors'>"+"grey54</div>"+"<div id='d558' class='colors'>"+"gray53</div>"+"<div id='d559' class='colors'>"+"grey53</div>"+"<div id='d560' class='colors'>"+"gray52</div>"+"<div id='d561' class='colors'>"+"grey52</div>"+"<div id='d562' class='colors'>"+"gray51</div>"+"<div id='d563' class='colors'>"+"grey51</div>"+"<div id='d564' class='colors'>"+"fractal</div>"+"<div id='d565' class='colors'>"+"gray50</div>"+"<div id='d566' class='colors'>"+"grey50</div>"+"<div id='d567' class='colors'>"+"gray</div>"+"<div id='d568' class='colors'>"+"gray49</div>"+"<div id='d569' class='colors'>"+"grey49</div>"+"<div id='d570' class='colors'>"+"gray48</div>"+"<div id='d571' class='colors'>"+"grey48</div>"+"<div id='d572' class='colors'>"+"gray47</div>"+"<div id='d573' class='colors'>"+"grey47</div>"+"<div id='d574' class='colors'>"+"gray46</div>"+"<div id='d575' class='colors'>"+"grey46</div>"+"<div id='d576' class='colors'>"+"gray45</div>"+"<div id='d577' class='colors'>"+"grey45</div>"+"<div id='d578' class='colors'>"+"gray44</div>"+"<div id='d579' class='colors'>"+"grey44</div>"+"<div id='d580' class='colors'>"+"gray43</div>"+"<div id='d581' class='colors'>"+"grey43</div>"+"<div id='d582' class='colors'>"+"gray42</div>"+"<div id='d583' class='colors'>"+"grey42</div>"+"<div id='d584' class='colors'>"+"DimGray</div>"+"<div id='d585' class='colors'>"+"DimGrey</div>"+"<div id='d586' class='colors'>"+"gray41</div>"+"<div id='d587' class='colors'>"+"grey41</div>"+"<div id='d588' class='colors'>"+"gray40</div>"+"<div id='d589' class='colors'>"+"grey40</div>"+"<div id='d590' class='colors'>"+"gray39</div>"+"<div id='d591' class='colors'>"+"grey39</div>"+"<div id='d592' class='colors'>"+"gray38</div>"+"<div id='d593' class='colors'>"+"grey38</div>"+"<div id='d594' class='colors'>"+"gray37</div>"+"<div id='d595' class='colors'>"+"grey37</div>"+"<div id='d596' class='colors'>"+"gray36</div>"+"<div id='d597' class='colors'>"+"grey36</div>"+"<div id='d598' class='colors'>"+"gray35</div>"+"<div id='d599' class='colors'>"+"grey35</div>"+"<div id='d600' class='colors'>"+"gray34</div>"+"<div id='d601' class='colors'>"+"grey34</div>"+"<div id='d602' class='colors'>"+"gray33</div>"+"<div id='d603' class='colors'>"+"grey33</div>"+"<div id='d604' class='colors'>"+"gray32</div>"+"<div id='d605' class='colors'>"+"grey32</div>"+"<div id='d606' class='colors'>"+"gray31</div>"+"<div id='d607' class='colors'>"+"grey31</div>"+"<div id='d608' class='colors'>"+"gray30</div>"+"<div id='d609' class='colors'>"+"grey30</div>"+"<div id='d610' class='colors'>"+"gray29</div>"+"<div id='d611' class='colors'>"+"grey29</div>"+"<div id='d612' class='colors'>"+"gray28</div>"+"<div id='d613' class='colors'>"+"grey28</div>"+"<div id='d614' class='colors'>"+"gray27</div>"+"<div id='d615' class='colors'>"+"grey27</div>"+"<div id='d616' class='colors'>"+"gray26</div>"+"<div id='d617' class='colors'>"+"grey26</div>"+"<div id='d618' class='colors'>"+"gray25</div>"+"<div id='d619' class='colors'>"+"grey25</div>"+"<div id='d620' class='colors'>"+"gray24</div>"+"<div id='d621' class='colors'>"+"grey24</div>"+"<div id='d622' class='colors'>"+"gray23</div>"+"<div id='d623' class='colors'>"+"grey23</div>"+"<div id='d624' class='colors'>"+"gray22</div>"+"<div id='d625' class='colors'>"+"grey22</div>"+"<div id='d626' class='colors'>"+"gray21</div>"+"<div id='d627' class='colors'>"+"grey21</div>"+"<div id='d628' class='colors'>"+"gray20</div>"+"<div id='d629' class='colors'>"+"grey20</div>"+"<div id='d630' class='colors'>"+"gray19</div>"+"<div id='d631' class='colors'>"+"grey19</div>"+"<div id='d632' class='colors'>"+"gray18</div>"+"<div id='d633' class='colors'>"+"grey18</div>"+"<div id='d634' class='colors'>"+"gray17</div>"+"<div id='d635' class='colors'>"+"grey17</div>"+"<div id='d636' class='colors'>"+"gray16</div>"+"<div id='d637' class='colors'>"+"grey16</div>"+"<div id='d638' class='colors'>"+"gray15</div>"+"<div id='d639' class='colors'>"+"grey15</div>"+"<div id='d640' class='colors'>"+"gray14</div>"+"<div id='d641' class='colors'>"+"grey14</div>"+"<div id='d642' class='colors'>"+"gray13</div>"+"<div id='d643' class='colors'>"+"grey13</div>"+"<div id='d644' class='colors'>"+"gray12</div>"+"<div id='d645' class='colors'>"+"grey12</div>"+"<div id='d646' class='colors'>"+"gray11</div>"+"<div id='d647' class='colors'>"+"grey11</div>"+"<div id='d648' class='colors'>"+"gray10</div>"+"<div id='d649' class='colors'>"+"grey10</div>"+"<div id='d650' class='colors'>"+"gray9</div>"+"<div id='d651' class='colors'>"+"grey9</div>"+"<div id='d652' class='colors'>"+"gray8</div>"+"<div id='d653' class='colors'>"+"grey8</div>"+"<div id='d654' class='colors'>"+"gray7</div>"+"<div id='d655' class='colors'>"+"grey7</div>"+"<div id='d656' class='colors'>"+"gray6</div>"+"<div id='d657' class='colors'>"+"grey6</div>"+"<div id='d658' class='colors'>"+"gray5</div>"+"<div id='d659' class='colors'>"+"grey5</div>"+"<div id='d660' class='colors'>"+"gray4</div>"+"<div id='d661' class='colors'>"+"grey4</div>"+"<div id='d662' class='colors'>"+"gray3</div>"+"<div id='d663' class='colors'>"+"grey3</div>"+"<div id='d664' class='colors'>"+"gray2</div>"+"<div id='d665' class='colors'>"+"grey2</div>"+"<div id='d666' class='colors'>"+"gray1</div>"+"<div id='d667' class='colors'>"+"grey1</div>"+"<div id='d668' class='colors'>"+"black</div>"+"<div id='d669' class='colors'>"+"gray0</div>"+"<div id='d670' class='colors'>"+"grey0</div>"+"<div id='d671' class='colors'>"+"opaque</div>"+"<div id='d672' class='colors'>"+"none</div>"+"<div id='d673' class='colors'>"+"transparent</div>"+"</div>"+"<div id='colornames'>WHERE THE COLORNAMES WILL GO</div>"+"<script type='text/javascript' src='colordict.js'></script>"+"<script type='text/javascript' src='colorpixx.js'></script>"
+
+
+function showpicker()
+ {
+ $('#popupContact').html(colorpicker);
+ $('#swingleft').append("whos the dadd addad");
+ $('#popupContact').css('height', '1500px')
+ }
+
+$('#colorlist').click(function(){showpicker()})
+
+
+
+
diff --git a/frontend/imgrid/colors/colors/junk/scrollio.html b/frontend/imgrid/colors/colors/junk/scrollio.html
new file mode 100755
index 0000000..e1443c3
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/scrollio.html
@@ -0,0 +1,3850 @@
+<html>
+<head>
+<link rel="stylesheet" type="text/css" href="ScrollEffect.css" />
+<script type="text/javascript" src="ScrollEffect.js"></script>
+
+<style type='text/css'>
+
+body
+{
+margin:0;
+}
+
+#colorpicker
+{
+position:absolute;
+width:100%;
+font-family:helvetica;
+font-size:10px;
+//background-color: gray;
+//background-image: url("http://asdf.us/im/6f/gradient_bgdither_1321255670_pepper.gif");
+background-color: black;
+background-image: url("http://dump.fm/static/img/bg.dither.gif")
+
+}
+
+#container div
+{
+text-align:left;
+display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+min-height: 30px;
+zoom: 1;
+word-wrap: break-word;
+*display: inline;
+cursor:pointer;
+}
+
+#container
+{
+margin:0 auto;
+width:31%;
+padding-bottom:0px;
+padding-right:10px;
+padding-left:10px;
+text-align:center;
+position:absolute;
+height:850px;
+}
+
+#viewarea
+{
+position: relative;
+top: 10%;
+width: 31%;
+height: 820px;
+overflow: hidden;
+margin:0 auto;
+padding-top:10px;
+padding-right:10px;
+padding-left:10px;
+text-align:center;
+border-style:outset;
+border-width:10px;
+}
+
+#colornames
+{
+color:white;
+position:fixed;
+font-size:50px;
+top:50px;
+left:2%;
+width:400px;
+}
+
+#switches
+ {
+ position:fixed;
+ top:20px;
+ right:1%;
+ height:400px;
+ width:300px;
+ font-size:20px;
+ border-style: groove;
+ border-width: 4px;
+ background-color:gray;
+ padding:2px;
+ box-shadow: 10px 10px 5px #141414;
+ }
+
+#infoswitch, #hexswitch, #backgroundswitch
+ {
+ background-image:url(http://asdf.us/im/58/gradient_whitegray80_1321305183_1321305241_pepper.jpg);
+ cursor:pointer;
+ }
+#preview
+ {
+ height:150px;
+ }
+
+
+#holder
+ {
+ float:bottom;
+ }
+
+#transparent
+ {
+ font-size:12px;
+ }
+#namespace
+ {
+ width:inherit;
+ }
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{
+height:30;
+width:10px;
+}
+</style></head><body>
+<div id='colorpicker'>
+<div id='viewarea' class="panorama">
+<div id='container'>
+<div id='d0' class='colors'>
+snow</div>
+<div id='d1' class='colors'>
+snow1</div>
+<div id='d2' class='colors'>
+snow2</div>
+<div id='d3' class='colors'>
+RosyBrown1</div>
+<div id='d4' class='colors'>
+RosyBrown2</div>
+<div id='d5' class='colors'>
+snow3</div>
+<div id='d6' class='colors'>
+LightCoral</div>
+<div id='d7' class='colors'>
+IndianRed1</div>
+<div id='d8' class='colors'>
+RosyBrown3</div>
+<div id='d9' class='colors'>
+IndianRed2</div>
+<div id='d10' class='colors'>
+RosyBrown</div>
+<div id='d11' class='colors'>
+brown1</div>
+<div id='d12' class='colors'>
+firebrick1</div>
+<div id='d13' class='colors'>
+brown2</div>
+<div id='d14' class='colors'>
+IndianRed</div>
+<div id='d15' class='colors'>
+IndianRed3</div>
+<div id='d16' class='colors'>
+firebrick2</div>
+<div id='d17' class='colors'>
+snow4</div>
+<div id='d18' class='colors'>
+brown3</div>
+<div id='d19' class='colors'>
+red</div>
+<div id='d20' class='colors'>
+red1</div>
+<div id='d21' class='colors'>
+RosyBrown4</div>
+<div id='d22' class='colors'>
+firebrick3</div>
+<div id='d23' class='colors'>
+red2</div>
+<div id='d24' class='colors'>
+firebrick</div>
+<div id='d25' class='colors'>
+brown</div>
+<div id='d26' class='colors'>
+red3</div>
+<div id='d27' class='colors'>
+IndianRed4</div>
+<div id='d28' class='colors'>
+brown4</div>
+<div id='d29' class='colors'>
+firebrick4</div>
+<div id='d30' class='colors'>
+DarkRed</div>
+<div id='d31' class='colors'>
+red4</div>
+<div id='d32' class='colors'>
+maroon</div>
+<div id='d33' class='colors'>
+LightPink1</div>
+<div id='d34' class='colors'>
+LightPink3</div>
+<div id='d35' class='colors'>
+LightPink4</div>
+<div id='d36' class='colors'>
+LightPink2</div>
+<div id='d37' class='colors'>
+LightPink</div>
+<div id='d38' class='colors'>
+pink</div>
+<div id='d39' class='colors'>
+crimson</div>
+<div id='d40' class='colors'>
+pink1</div>
+<div id='d41' class='colors'>
+pink2</div>
+<div id='d42' class='colors'>
+pink3</div>
+<div id='d43' class='colors'>
+pink4</div>
+<div id='d44' class='colors'>
+PaleVioletRed4</div>
+<div id='d45' class='colors'>
+PaleVioletRed</div>
+<div id='d46' class='colors'>
+PaleVioletRed2</div>
+<div id='d47' class='colors'>
+PaleVioletRed1</div>
+<div id='d48' class='colors'>
+PaleVioletRed3</div>
+<div id='d49' class='colors'>
+LavenderBlush</div>
+<div id='d50' class='colors'>
+LavenderBlush1</div>
+<div id='d51' class='colors'>
+LavenderBlush3</div>
+<div id='d52' class='colors'>
+LavenderBlush2</div>
+<div id='d53' class='colors'>
+LavenderBlush4</div>
+<div id='d54' class='colors'>
+maroon</div>
+<div id='d55' class='colors'>
+HotPink3</div>
+<div id='d56' class='colors'>
+VioletRed3</div>
+<div id='d57' class='colors'>
+VioletRed1</div>
+<div id='d58' class='colors'>
+VioletRed2</div>
+<div id='d59' class='colors'>
+VioletRed4</div>
+<div id='d60' class='colors'>
+HotPink2</div>
+<div id='d61' class='colors'>
+HotPink1</div>
+<div id='d62' class='colors'>
+HotPink4</div>
+<div id='d63' class='colors'>
+HotPink</div>
+<div id='d64' class='colors'>
+DeepPink</div>
+<div id='d65' class='colors'>
+DeepPink1</div>
+<div id='d66' class='colors'>
+DeepPink2</div>
+<div id='d67' class='colors'>
+DeepPink3</div>
+<div id='d68' class='colors'>
+DeepPink4</div>
+<div id='d69' class='colors'>
+maroon1</div>
+<div id='d70' class='colors'>
+maroon2</div>
+<div id='d71' class='colors'>
+maroon3</div>
+<div id='d72' class='colors'>
+maroon4</div>
+<div id='d73' class='colors'>
+MediumVioletRed</div>
+<div id='d74' class='colors'>
+VioletRed</div>
+<div id='d75' class='colors'>
+orchid2</div>
+<div id='d76' class='colors'>
+orchid</div>
+<div id='d77' class='colors'>
+orchid1</div>
+<div id='d78' class='colors'>
+orchid3</div>
+<div id='d79' class='colors'>
+orchid4</div>
+<div id='d80' class='colors'>
+thistle1</div>
+<div id='d81' class='colors'>
+thistle2</div>
+<div id='d82' class='colors'>
+plum1</div>
+<div id='d83' class='colors'>
+plum2</div>
+<div id='d84' class='colors'>
+thistle</div>
+<div id='d85' class='colors'>
+thistle3</div>
+<div id='d86' class='colors'>
+plum</div>
+<div id='d87' class='colors'>
+violet</div>
+<div id='d88' class='colors'>
+plum3</div>
+<div id='d89' class='colors'>
+thistle4</div>
+<div id='d90' class='colors'>
+fuchsia</div>
+<div id='d91' class='colors'>
+magenta</div>
+<div id='d92' class='colors'>
+magenta1</div>
+<div id='d93' class='colors'>
+plum4</div>
+<div id='d94' class='colors'>
+magenta2</div>
+<div id='d95' class='colors'>
+magenta3</div>
+<div id='d96' class='colors'>
+DarkMagenta</div>
+<div id='d97' class='colors'>
+magenta4</div>
+<div id='d98' class='colors'>
+purple</div>
+<div id='d99' class='colors'>
+MediumOrchid</div>
+<div id='d100' class='colors'>
+MediumOrchid1</div>
+<div id='d101' class='colors'>
+MediumOrchid2</div>
+<div id='d102' class='colors'>
+MediumOrchid3</div>
+<div id='d103' class='colors'>
+MediumOrchid4</div>
+<div id='d104' class='colors'>
+DarkViolet</div>
+<div id='d105' class='colors'>
+DarkOrchid</div>
+<div id='d106' class='colors'>
+DarkOrchid1</div>
+<div id='d107' class='colors'>
+DarkOrchid3</div>
+<div id='d108' class='colors'>
+DarkOrchid2</div>
+<div id='d109' class='colors'>
+DarkOrchid4</div>
+<div id='d110' class='colors'>
+purple</div>
+<div id='d111' class='colors'>
+indigo</div>
+<div id='d112' class='colors'>
+BlueViolet</div>
+<div id='d113' class='colors'>
+purple2</div>
+<div id='d114' class='colors'>
+purple3</div>
+<div id='d115' class='colors'>
+purple4</div>
+<div id='d116' class='colors'>
+purple1</div>
+<div id='d117' class='colors'>
+MediumPurple</div>
+<div id='d118' class='colors'>
+MediumPurple1</div>
+<div id='d119' class='colors'>
+MediumPurple2</div>
+<div id='d120' class='colors'>
+MediumPurple3</div>
+<div id='d121' class='colors'>
+MediumPurple4</div>
+<div id='d122' class='colors'>
+DarkSlateBlue</div>
+<div id='d123' class='colors'>
+LightSlateBlue</div>
+<div id='d124' class='colors'>
+MediumSlateBlue</div>
+<div id='d125' class='colors'>
+SlateBlue</div>
+<div id='d126' class='colors'>
+SlateBlue1</div>
+<div id='d127' class='colors'>
+SlateBlue2</div>
+<div id='d128' class='colors'>
+SlateBlue3</div>
+<div id='d129' class='colors'>
+SlateBlue4</div>
+<div id='d130' class='colors'>
+GhostWhite</div>
+<div id='d131' class='colors'>
+lavender</div>
+<div id='d132' class='colors'>
+blue</div>
+<div id='d133' class='colors'>
+blue1</div>
+<div id='d134' class='colors'>
+blue2</div>
+<div id='d135' class='colors'>
+blue3</div>
+<div id='d136' class='colors'>
+MediumBlue</div>
+<div id='d137' class='colors'>
+blue4</div>
+<div id='d138' class='colors'>
+DarkBlue</div>
+<div id='d139' class='colors'>
+MidnightBlue</div>
+<div id='d140' class='colors'>
+navy</div>
+<div id='d141' class='colors'>
+NavyBlue</div>
+<div id='d142' class='colors'>
+RoyalBlue</div>
+<div id='d143' class='colors'>
+RoyalBlue1</div>
+<div id='d144' class='colors'>
+RoyalBlue2</div>
+<div id='d145' class='colors'>
+RoyalBlue3</div>
+<div id='d146' class='colors'>
+RoyalBlue4</div>
+<div id='d147' class='colors'>
+CornflowerBlue</div>
+<div id='d148' class='colors'>
+LightSteelBlue</div>
+<div id='d149' class='colors'>
+LightSteelBlue1</div>
+<div id='d150' class='colors'>
+LightSteelBlue2</div>
+<div id='d151' class='colors'>
+LightSteelBlue3</div>
+<div id='d152' class='colors'>
+LightSteelBlue4</div>
+<div id='d153' class='colors'>
+SlateGray4</div>
+<div id='d154' class='colors'>
+SlateGray1</div>
+<div id='d155' class='colors'>
+SlateGray2</div>
+<div id='d156' class='colors'>
+SlateGray3</div>
+<div id='d157' class='colors'>
+LightSlateGray</div>
+<div id='d158' class='colors'>
+LightSlateGrey</div>
+<div id='d159' class='colors'>
+SlateGray</div>
+<div id='d160' class='colors'>
+SlateGrey</div>
+<div id='d161' class='colors'>
+DodgerBlue</div>
+<div id='d162' class='colors'>
+DodgerBlue1</div>
+<div id='d163' class='colors'>
+DodgerBlue2</div>
+<div id='d164' class='colors'>
+DodgerBlue4</div>
+<div id='d165' class='colors'>
+DodgerBlue3</div>
+<div id='d166' class='colors'>
+AliceBlue</div>
+<div id='d167' class='colors'>
+SteelBlue4</div>
+<div id='d168' class='colors'>
+SteelBlue</div>
+<div id='d169' class='colors'>
+SteelBlue1</div>
+<div id='d170' class='colors'>
+SteelBlue2</div>
+<div id='d171' class='colors'>
+SteelBlue3</div>
+<div id='d172' class='colors'>
+SkyBlue4</div>
+<div id='d173' class='colors'>
+SkyBlue1</div>
+<div id='d174' class='colors'>
+SkyBlue2</div>
+<div id='d175' class='colors'>
+SkyBlue3</div>
+<div id='d176' class='colors'>
+LightSkyBlue</div>
+<div id='d177' class='colors'>
+LightSkyBlue4</div>
+<div id='d178' class='colors'>
+LightSkyBlue1</div>
+<div id='d179' class='colors'>
+LightSkyBlue2</div>
+<div id='d180' class='colors'>
+LightSkyBlue3</div>
+<div id='d181' class='colors'>
+SkyBlue</div>
+<div id='d182' class='colors'>
+LightBlue3</div>
+<div id='d183' class='colors'>
+DeepSkyBlue</div>
+<div id='d184' class='colors'>
+DeepSkyBlue1</div>
+<div id='d185' class='colors'>
+DeepSkyBlue2</div>
+<div id='d186' class='colors'>
+DeepSkyBlue4</div>
+<div id='d187' class='colors'>
+DeepSkyBlue3</div>
+<div id='d188' class='colors'>
+LightBlue1</div>
+<div id='d189' class='colors'>
+LightBlue2</div>
+<div id='d190' class='colors'>
+LightBlue</div>
+<div id='d191' class='colors'>
+LightBlue4</div>
+<div id='d192' class='colors'>
+PowderBlue</div>
+<div id='d193' class='colors'>
+CadetBlue1</div>
+<div id='d194' class='colors'>
+CadetBlue2</div>
+<div id='d195' class='colors'>
+CadetBlue3</div>
+<div id='d196' class='colors'>
+CadetBlue4</div>
+<div id='d197' class='colors'>
+turquoise1</div>
+<div id='d198' class='colors'>
+turquoise2</div>
+<div id='d199' class='colors'>
+turquoise3</div>
+<div id='d200' class='colors'>
+turquoise4</div>
+<div id='d201' class='colors'>
+cadet blue</div>
+<div id='d202' class='colors'>
+CadetBlue</div>
+<div id='d203' class='colors'>
+DarkTurquoise</div>
+<div id='d204' class='colors'>
+azure</div>
+<div id='d205' class='colors'>
+azure1</div>
+<div id='d206' class='colors'>
+LightCyan</div>
+<div id='d207' class='colors'>
+LightCyan1</div>
+<div id='d208' class='colors'>
+azure2</div>
+<div id='d209' class='colors'>
+LightCyan2</div>
+<div id='d210' class='colors'>
+PaleTurquoise1</div>
+<div id='d211' class='colors'>
+PaleTurquoise</div>
+<div id='d212' class='colors'>
+PaleTurquoise2</div>
+<div id='d213' class='colors'>
+DarkSlateGray1</div>
+<div id='d214' class='colors'>
+azure3</div>
+<div id='d215' class='colors'>
+LightCyan3</div>
+<div id='d216' class='colors'>
+DarkSlateGray2</div>
+<div id='d217' class='colors'>
+PaleTurquoise3</div>
+<div id='d218' class='colors'>
+DarkSlateGray3</div>
+<div id='d219' class='colors'>
+azure4</div>
+<div id='d220' class='colors'>
+LightCyan4</div>
+<div id='d221' class='colors'>
+aqua</div>
+<div id='d222' class='colors'>
+cyan</div>
+<div id='d223' class='colors'>
+cyan1</div>
+<div id='d224' class='colors'>
+PaleTurquoise4</div>
+<div id='d225' class='colors'>
+cyan2</div>
+<div id='d226' class='colors'>
+DarkSlateGray4</div>
+<div id='d227' class='colors'>
+cyan3</div>
+<div id='d228' class='colors'>
+cyan4</div>
+<div id='d229' class='colors'>
+DarkCyan</div>
+<div id='d230' class='colors'>
+teal</div>
+<div id='d231' class='colors'>
+DarkSlateGray</div>
+<div id='d232' class='colors'>
+DarkSlateGrey</div>
+<div id='d233' class='colors'>
+MediumTurquoise</div>
+<div id='d234' class='colors'>
+LightSeaGreen</div>
+<div id='d235' class='colors'>
+turquoise</div>
+<div id='d236' class='colors'>
+aquamarine4</div>
+<div id='d237' class='colors'>
+aquamarine</div>
+<div id='d238' class='colors'>
+aquamarine1</div>
+<div id='d239' class='colors'>
+aquamarine2</div>
+<div id='d240' class='colors'>
+aquamarine3</div>
+<div id='d241' class='colors'>
+MediumAquamarine</div>
+<div id='d242' class='colors'>
+MediumSpringGreen</div>
+<div id='d243' class='colors'>
+MintCream</div>
+<div id='d244' class='colors'>
+SpringGreen</div>
+<div id='d245' class='colors'>
+SpringGreen1</div>
+<div id='d246' class='colors'>
+SpringGreen2</div>
+<div id='d247' class='colors'>
+SpringGreen3</div>
+<div id='d248' class='colors'>
+SpringGreen4</div>
+<div id='d249' class='colors'>
+MediumSeaGreen</div>
+<div id='d250' class='colors'>
+SeaGreen</div>
+<div id='d251' class='colors'>
+SeaGreen3</div>
+<div id='d252' class='colors'>
+SeaGreen1</div>
+<div id='d253' class='colors'>
+SeaGreen4</div>
+<div id='d254' class='colors'>
+SeaGreen2</div>
+<div id='d255' class='colors'>
+MediumForestGreen</div>
+<div id='d256' class='colors'>
+honeydew</div>
+<div id='d257' class='colors'>
+honeydew1</div>
+<div id='d258' class='colors'>
+honeydew2</div>
+<div id='d259' class='colors'>
+DarkSeaGreen1</div>
+<div id='d260' class='colors'>
+DarkSeaGreen2</div>
+<div id='d261' class='colors'>
+PaleGreen1</div>
+<div id='d262' class='colors'>
+PaleGreen</div>
+<div id='d263' class='colors'>
+honeydew3</div>
+<div id='d264' class='colors'>
+LightGreen</div>
+<div id='d265' class='colors'>
+PaleGreen2</div>
+<div id='d266' class='colors'>
+DarkSeaGreen3</div>
+<div id='d267' class='colors'>
+DarkSeaGreen</div>
+<div id='d268' class='colors'>
+PaleGreen3</div>
+<div id='d269' class='colors'>
+honeydew4</div>
+<div id='d270' class='colors'>
+green1</div>
+<div id='d271' class='colors'>
+lime</div>
+<div id='d272' class='colors'>
+LimeGreen</div>
+<div id='d273' class='colors'>
+DarkSeaGreen4</div>
+<div id='d274' class='colors'>
+green2</div>
+<div id='d275' class='colors'>
+PaleGreen4</div>
+<div id='d276' class='colors'>
+green3</div>
+<div id='d277' class='colors'>
+ForestGreen</div>
+<div id='d278' class='colors'>
+green4</div>
+<div id='d279' class='colors'>
+green</div>
+<div id='d280' class='colors'>
+DarkGreen</div>
+<div id='d281' class='colors'>
+LawnGreen</div>
+<div id='d282' class='colors'>
+chartreuse</div>
+<div id='d283' class='colors'>
+chartreuse1</div>
+<div id='d284' class='colors'>
+chartreuse2</div>
+<div id='d285' class='colors'>
+chartreuse3</div>
+<div id='d286' class='colors'>
+chartreuse4</div>
+<div id='d287' class='colors'>
+GreenYellow</div>
+<div id='d288' class='colors'>
+DarkOliveGreen3</div>
+<div id='d289' class='colors'>
+DarkOliveGreen1</div>
+<div id='d290' class='colors'>
+DarkOliveGreen2</div>
+<div id='d291' class='colors'>
+DarkOliveGreen4</div>
+<div id='d292' class='colors'>
+DarkOliveGreen</div>
+<div id='d293' class='colors'>
+OliveDrab</div>
+<div id='d294' class='colors'>
+OliveDrab1</div>
+<div id='d295' class='colors'>
+OliveDrab2</div>
+<div id='d296' class='colors'>
+OliveDrab3</div>
+<div id='d297' class='colors'>
+YellowGreen</div>
+<div id='d298' class='colors'>
+OliveDrab4</div>
+<div id='d299' class='colors'>
+ivory</div>
+<div id='d300' class='colors'>
+ivory1</div>
+<div id='d301' class='colors'>
+LightYellow</div>
+<div id='d302' class='colors'>
+LightYellow1</div>
+<div id='d303' class='colors'>
+beige</div>
+<div id='d304' class='colors'>
+ivory2</div>
+<div id='d305' class='colors'>
+LightGoldenrodYellow</div>
+<div id='d306' class='colors'>
+LightYellow2</div>
+<div id='d307' class='colors'>
+ivory3</div>
+<div id='d308' class='colors'>
+LightYellow3</div>
+<div id='d309' class='colors'>
+ivory4</div>
+<div id='d310' class='colors'>
+LightYellow4</div>
+<div id='d311' class='colors'>
+yellow</div>
+<div id='d312' class='colors'>
+yellow1</div>
+<div id='d313' class='colors'>
+yellow2</div>
+<div id='d314' class='colors'>
+yellow3</div>
+<div id='d315' class='colors'>
+yellow4</div>
+<div id='d316' class='colors'>
+olive</div>
+<div id='d317' class='colors'>
+DarkKhaki</div>
+<div id='d318' class='colors'>
+khaki2</div>
+<div id='d319' class='colors'>
+LemonChiffon4</div>
+<div id='d320' class='colors'>
+khaki1</div>
+<div id='d321' class='colors'>
+khaki3</div>
+<div id='d322' class='colors'>
+khaki4</div>
+<div id='d323' class='colors'>
+PaleGoldenrod</div>
+<div id='d324' class='colors'>
+LemonChiffon</div>
+<div id='d325' class='colors'>
+LemonChiffon1</div>
+<div id='d326' class='colors'>
+khaki</div>
+<div id='d327' class='colors'>
+LemonChiffon3</div>
+<div id='d328' class='colors'>
+LemonChiffon2</div>
+<div id='d329' class='colors'>
+MediumGoldenRod</div>
+<div id='d330' class='colors'>
+cornsilk4</div>
+<div id='d331' class='colors'>
+gold</div>
+<div id='d332' class='colors'>
+gold1</div>
+<div id='d333' class='colors'>
+gold2</div>
+<div id='d334' class='colors'>
+gold3</div>
+<div id='d335' class='colors'>
+gold4</div>
+<div id='d336' class='colors'>
+LightGoldenrod</div>
+<div id='d337' class='colors'>
+LightGoldenrod4</div>
+<div id='d338' class='colors'>
+LightGoldenrod1</div>
+<div id='d339' class='colors'>
+LightGoldenrod3</div>
+<div id='d340' class='colors'>
+LightGoldenrod2</div>
+<div id='d341' class='colors'>
+cornsilk3</div>
+<div id='d342' class='colors'>
+cornsilk2</div>
+<div id='d343' class='colors'>
+cornsilk</div>
+<div id='d344' class='colors'>
+cornsilk1</div>
+<div id='d345' class='colors'>
+goldenrod</div>
+<div id='d346' class='colors'>
+goldenrod1</div>
+<div id='d347' class='colors'>
+goldenrod2</div>
+<div id='d348' class='colors'>
+goldenrod3</div>
+<div id='d349' class='colors'>
+goldenrod4</div>
+<div id='d350' class='colors'>
+DarkGoldenrod</div>
+<div id='d351' class='colors'>
+DarkGoldenrod1</div>
+<div id='d352' class='colors'>
+DarkGoldenrod2</div>
+<div id='d353' class='colors'>
+DarkGoldenrod3</div>
+<div id='d354' class='colors'>
+DarkGoldenrod4</div>
+<div id='d355' class='colors'>
+FloralWhite</div>
+<div id='d356' class='colors'>
+wheat2</div>
+<div id='d357' class='colors'>
+OldLace</div>
+<div id='d358' class='colors'>
+wheat</div>
+<div id='d359' class='colors'>
+wheat1</div>
+<div id='d360' class='colors'>
+wheat3</div>
+<div id='d361' class='colors'>
+orange</div>
+<div id='d362' class='colors'>
+orange1</div>
+<div id='d363' class='colors'>
+orange2</div>
+<div id='d364' class='colors'>
+orange3</div>
+<div id='d365' class='colors'>
+orange4</div>
+<div id='d366' class='colors'>
+wheat4</div>
+<div id='d367' class='colors'>
+moccasin</div>
+<div id='d368' class='colors'>
+PapayaWhip</div>
+<div id='d369' class='colors'>
+NavajoWhite3</div>
+<div id='d370' class='colors'>
+BlanchedAlmond</div>
+<div id='d371' class='colors'>
+NavajoWhite</div>
+<div id='d372' class='colors'>
+NavajoWhite1</div>
+<div id='d373' class='colors'>
+NavajoWhite2</div>
+<div id='d374' class='colors'>
+NavajoWhite4</div>
+<div id='d375' class='colors'>
+AntiqueWhite4</div>
+<div id='d376' class='colors'>
+AntiqueWhite</div>
+<div id='d377' class='colors'>
+tan</div>
+<div id='d378' class='colors'>
+bisque4</div>
+<div id='d379' class='colors'>
+burlywood</div>
+<div id='d380' class='colors'>
+AntiqueWhite2</div>
+<div id='d381' class='colors'>
+burlywood1</div>
+<div id='d382' class='colors'>
+burlywood3</div>
+<div id='d383' class='colors'>
+burlywood2</div>
+<div id='d384' class='colors'>
+AntiqueWhite1</div>
+<div id='d385' class='colors'>
+burlywood4</div>
+<div id='d386' class='colors'>
+AntiqueWhite3</div>
+<div id='d387' class='colors'>
+DarkOrange</div>
+<div id='d388' class='colors'>
+bisque2</div>
+<div id='d389' class='colors'>
+bisque</div>
+<div id='d390' class='colors'>
+bisque1</div>
+<div id='d391' class='colors'>
+bisque3</div>
+<div id='d392' class='colors'>
+DarkOrange1</div>
+<div id='d393' class='colors'>
+linen</div>
+<div id='d394' class='colors'>
+DarkOrange2</div>
+<div id='d395' class='colors'>
+DarkOrange3</div>
+<div id='d396' class='colors'>
+DarkOrange4</div>
+<div id='d397' class='colors'>
+peru</div>
+<div id='d398' class='colors'>
+tan1</div>
+<div id='d399' class='colors'>
+tan2</div>
+<div id='d400' class='colors'>
+tan3</div>
+<div id='d401' class='colors'>
+tan4</div>
+<div id='d402' class='colors'>
+PeachPuff</div>
+<div id='d403' class='colors'>
+PeachPuff1</div>
+<div id='d404' class='colors'>
+PeachPuff4</div>
+<div id='d405' class='colors'>
+PeachPuff2</div>
+<div id='d406' class='colors'>
+PeachPuff3</div>
+<div id='d407' class='colors'>
+SandyBrown</div>
+<div id='d408' class='colors'>
+seashell4</div>
+<div id='d409' class='colors'>
+seashell2</div>
+<div id='d410' class='colors'>
+seashell3</div>
+<div id='d411' class='colors'>
+chocolate</div>
+<div id='d412' class='colors'>
+chocolate1</div>
+<div id='d413' class='colors'>
+chocolate2</div>
+<div id='d414' class='colors'>
+chocolate3</div>
+<div id='d415' class='colors'>
+chocolate4</div>
+<div id='d416' class='colors'>
+SaddleBrown</div>
+<div id='d417' class='colors'>
+seashell</div>
+<div id='d418' class='colors'>
+seashell1</div>
+<div id='d419' class='colors'>
+sienna4</div>
+<div id='d420' class='colors'>
+sienna</div>
+<div id='d421' class='colors'>
+sienna1</div>
+<div id='d422' class='colors'>
+sienna2</div>
+<div id='d423' class='colors'>
+sienna3</div>
+<div id='d424' class='colors'>
+LightSalmon3</div>
+<div id='d425' class='colors'>
+LightSalmon</div>
+<div id='d426' class='colors'>
+LightSalmon1</div>
+<div id='d427' class='colors'>
+LightSalmon4</div>
+<div id='d428' class='colors'>
+LightSalmon2</div>
+<div id='d429' class='colors'>
+coral</div>
+<div id='d430' class='colors'>
+OrangeRed</div>
+<div id='d431' class='colors'>
+OrangeRed1</div>
+<div id='d432' class='colors'>
+OrangeRed2</div>
+<div id='d433' class='colors'>
+OrangeRed3</div>
+<div id='d434' class='colors'>
+OrangeRed4</div>
+<div id='d435' class='colors'>
+DarkSalmon</div>
+<div id='d436' class='colors'>
+salmon1</div>
+<div id='d437' class='colors'>
+salmon2</div>
+<div id='d438' class='colors'>
+salmon3</div>
+<div id='d439' class='colors'>
+salmon4</div>
+<div id='d440' class='colors'>
+coral1</div>
+<div id='d441' class='colors'>
+coral2</div>
+<div id='d442' class='colors'>
+coral3</div>
+<div id='d443' class='colors'>
+coral4</div>
+<div id='d444' class='colors'>
+tomato4</div>
+<div id='d445' class='colors'>
+tomato</div>
+<div id='d446' class='colors'>
+tomato1</div>
+<div id='d447' class='colors'>
+tomato2</div>
+<div id='d448' class='colors'>
+tomato3</div>
+<div id='d449' class='colors'>
+MistyRose4</div>
+<div id='d450' class='colors'>
+MistyRose2</div>
+<div id='d451' class='colors'>
+MistyRose</div>
+<div id='d452' class='colors'>
+MistyRose1</div>
+<div id='d453' class='colors'>
+salmon</div>
+<div id='d454' class='colors'>
+MistyRose3</div>
+<div id='d455' class='colors'>
+white</div>
+<div id='d456' class='colors'>
+gray100</div>
+<div id='d457' class='colors'>
+grey100</div>
+<div id='d458' class='colors'>
+grey100</div>
+<div id='d459' class='colors'>
+gray99</div>
+<div id='d460' class='colors'>
+grey99</div>
+<div id='d461' class='colors'>
+gray98</div>
+<div id='d462' class='colors'>
+grey98</div>
+<div id='d463' class='colors'>
+gray97</div>
+<div id='d464' class='colors'>
+grey97</div>
+<div id='d465' class='colors'>
+gray96</div>
+<div id='d466' class='colors'>
+grey96</div>
+<div id='d467' class='colors'>
+WhiteSmoke</div>
+<div id='d468' class='colors'>
+gray95</div>
+<div id='d469' class='colors'>
+grey95</div>
+<div id='d470' class='colors'>
+gray94</div>
+<div id='d471' class='colors'>
+grey94</div>
+<div id='d472' class='colors'>
+gray93</div>
+<div id='d473' class='colors'>
+grey93</div>
+<div id='d474' class='colors'>
+gray92</div>
+<div id='d475' class='colors'>
+grey92</div>
+<div id='d476' class='colors'>
+gray91</div>
+<div id='d477' class='colors'>
+grey91</div>
+<div id='d478' class='colors'>
+gray90</div>
+<div id='d479' class='colors'>
+grey90</div>
+<div id='d480' class='colors'>
+gray89</div>
+<div id='d481' class='colors'>
+grey89</div>
+<div id='d482' class='colors'>
+gray88</div>
+<div id='d483' class='colors'>
+grey88</div>
+<div id='d484' class='colors'>
+gray87</div>
+<div id='d485' class='colors'>
+grey87</div>
+<div id='d486' class='colors'>
+gainsboro</div>
+<div id='d487' class='colors'>
+gray86</div>
+<div id='d488' class='colors'>
+grey86</div>
+<div id='d489' class='colors'>
+gray85</div>
+<div id='d490' class='colors'>
+grey85</div>
+<div id='d491' class='colors'>
+gray84</div>
+<div id='d492' class='colors'>
+grey84</div>
+<div id='d493' class='colors'>
+gray83</div>
+<div id='d494' class='colors'>
+grey83</div>
+<div id='d495' class='colors'>
+LightGray</div>
+<div id='d496' class='colors'>
+LightGrey</div>
+<div id='d497' class='colors'>
+gray82</div>
+<div id='d498' class='colors'>
+grey82</div>
+<div id='d499' class='colors'>
+gray81</div>
+<div id='d500' class='colors'>
+grey81</div>
+<div id='d501' class='colors'>
+gray80</div>
+<div id='d502' class='colors'>
+grey80</div>
+<div id='d503' class='colors'>
+gray79</div>
+<div id='d504' class='colors'>
+grey79</div>
+<div id='d505' class='colors'>
+gray78</div>
+<div id='d506' class='colors'>
+grey78</div>
+<div id='d507' class='colors'>
+gray77</div>
+<div id='d508' class='colors'>
+grey77</div>
+<div id='d509' class='colors'>
+gray76</div>
+<div id='d510' class='colors'>
+grey76</div>
+<div id='d511' class='colors'>
+silver</div>
+<div id='d512' class='colors'>
+gray75</div>
+<div id='d513' class='colors'>
+grey75</div>
+<div id='d514' class='colors'>
+gray74</div>
+<div id='d515' class='colors'>
+grey74</div>
+<div id='d516' class='colors'>
+gray73</div>
+<div id='d517' class='colors'>
+grey73</div>
+<div id='d518' class='colors'>
+gray72</div>
+<div id='d519' class='colors'>
+grey72</div>
+<div id='d520' class='colors'>
+gray71</div>
+<div id='d521' class='colors'>
+grey71</div>
+<div id='d522' class='colors'>
+gray70</div>
+<div id='d523' class='colors'>
+grey70</div>
+<div id='d524' class='colors'>
+gray69</div>
+<div id='d525' class='colors'>
+grey69</div>
+<div id='d526' class='colors'>
+gray68</div>
+<div id='d527' class='colors'>
+grey68</div>
+<div id='d528' class='colors'>
+gray67</div>
+<div id='d529' class='colors'>
+grey67</div>
+<div id='d530' class='colors'>
+DarkGray</div>
+<div id='d531' class='colors'>
+DarkGrey</div>
+<div id='d532' class='colors'>
+gray66</div>
+<div id='d533' class='colors'>
+grey66</div>
+<div id='d534' class='colors'>
+gray65</div>
+<div id='d535' class='colors'>
+grey65</div>
+<div id='d536' class='colors'>
+gray64</div>
+<div id='d537' class='colors'>
+grey64</div>
+<div id='d538' class='colors'>
+gray63</div>
+<div id='d539' class='colors'>
+grey63</div>
+<div id='d540' class='colors'>
+gray62</div>
+<div id='d541' class='colors'>
+grey62</div>
+<div id='d542' class='colors'>
+gray61</div>
+<div id='d543' class='colors'>
+grey61</div>
+<div id='d544' class='colors'>
+gray60</div>
+<div id='d545' class='colors'>
+grey60</div>
+<div id='d546' class='colors'>
+gray59</div>
+<div id='d547' class='colors'>
+grey59</div>
+<div id='d548' class='colors'>
+gray58</div>
+<div id='d549' class='colors'>
+grey58</div>
+<div id='d550' class='colors'>
+gray57</div>
+<div id='d551' class='colors'>
+grey57</div>
+<div id='d552' class='colors'>
+gray56</div>
+<div id='d553' class='colors'>
+grey56</div>
+<div id='d554' class='colors'>
+gray55</div>
+<div id='d555' class='colors'>
+grey55</div>
+<div id='d556' class='colors'>
+gray54</div>
+<div id='d557' class='colors'>
+grey54</div>
+<div id='d558' class='colors'>
+gray53</div>
+<div id='d559' class='colors'>
+grey53</div>
+<div id='d560' class='colors'>
+gray52</div>
+<div id='d561' class='colors'>
+grey52</div>
+<div id='d562' class='colors'>
+gray51</div>
+<div id='d563' class='colors'>
+grey51</div>
+<div id='d564' class='colors'>
+fractal</div>
+<div id='d565' class='colors'>
+gray50</div>
+<div id='d566' class='colors'>
+grey50</div>
+<div id='d567' class='colors'>
+gray</div>
+<div id='d568' class='colors'>
+gray49</div>
+<div id='d569' class='colors'>
+grey49</div>
+<div id='d570' class='colors'>
+gray48</div>
+<div id='d571' class='colors'>
+grey48</div>
+<div id='d572' class='colors'>
+gray47</div>
+<div id='d573' class='colors'>
+grey47</div>
+<div id='d574' class='colors'>
+gray46</div>
+<div id='d575' class='colors'>
+grey46</div>
+<div id='d576' class='colors'>
+gray45</div>
+<div id='d577' class='colors'>
+grey45</div>
+<div id='d578' class='colors'>
+gray44</div>
+<div id='d579' class='colors'>
+grey44</div>
+<div id='d580' class='colors'>
+gray43</div>
+<div id='d581' class='colors'>
+grey43</div>
+<div id='d582' class='colors'>
+gray42</div>
+<div id='d583' class='colors'>
+grey42</div>
+<div id='d584' class='colors'>
+DimGray</div>
+<div id='d585' class='colors'>
+DimGrey</div>
+<div id='d586' class='colors'>
+gray41</div>
+<div id='d587' class='colors'>
+grey41</div>
+<div id='d588' class='colors'>
+gray40</div>
+<div id='d589' class='colors'>
+grey40</div>
+<div id='d590' class='colors'>
+gray39</div>
+<div id='d591' class='colors'>
+grey39</div>
+<div id='d592' class='colors'>
+gray38</div>
+<div id='d593' class='colors'>
+grey38</div>
+<div id='d594' class='colors'>
+gray37</div>
+<div id='d595' class='colors'>
+grey37</div>
+<div id='d596' class='colors'>
+gray36</div>
+<div id='d597' class='colors'>
+grey36</div>
+<div id='d598' class='colors'>
+gray35</div>
+<div id='d599' class='colors'>
+grey35</div>
+<div id='d600' class='colors'>
+gray34</div>
+<div id='d601' class='colors'>
+grey34</div>
+<div id='d602' class='colors'>
+gray33</div>
+<div id='d603' class='colors'>
+grey33</div>
+<div id='d604' class='colors'>
+gray32</div>
+<div id='d605' class='colors'>
+grey32</div>
+<div id='d606' class='colors'>
+gray31</div>
+<div id='d607' class='colors'>
+grey31</div>
+<div id='d608' class='colors'>
+gray30</div>
+<div id='d609' class='colors'>
+grey30</div>
+<div id='d610' class='colors'>
+gray29</div>
+<div id='d611' class='colors'>
+grey29</div>
+<div id='d612' class='colors'>
+gray28</div>
+<div id='d613' class='colors'>
+grey28</div>
+<div id='d614' class='colors'>
+gray27</div>
+<div id='d615' class='colors'>
+grey27</div>
+<div id='d616' class='colors'>
+gray26</div>
+<div id='d617' class='colors'>
+grey26</div>
+<div id='d618' class='colors'>
+gray25</div>
+<div id='d619' class='colors'>
+grey25</div>
+<div id='d620' class='colors'>
+gray24</div>
+<div id='d621' class='colors'>
+grey24</div>
+<div id='d622' class='colors'>
+gray23</div>
+<div id='d623' class='colors'>
+grey23</div>
+<div id='d624' class='colors'>
+gray22</div>
+<div id='d625' class='colors'>
+grey22</div>
+<div id='d626' class='colors'>
+gray21</div>
+<div id='d627' class='colors'>
+grey21</div>
+<div id='d628' class='colors'>
+gray20</div>
+<div id='d629' class='colors'>
+grey20</div>
+<div id='d630' class='colors'>
+gray19</div>
+<div id='d631' class='colors'>
+grey19</div>
+<div id='d632' class='colors'>
+gray18</div>
+<div id='d633' class='colors'>
+grey18</div>
+<div id='d634' class='colors'>
+gray17</div>
+<div id='d635' class='colors'>
+grey17</div>
+<div id='d636' class='colors'>
+gray16</div>
+<div id='d637' class='colors'>
+grey16</div>
+<div id='d638' class='colors'>
+gray15</div>
+<div id='d639' class='colors'>
+grey15</div>
+<div id='d640' class='colors'>
+gray14</div>
+<div id='d641' class='colors'>
+grey14</div>
+<div id='d642' class='colors'>
+gray13</div>
+<div id='d643' class='colors'>
+grey13</div>
+<div id='d644' class='colors'>
+gray12</div>
+<div id='d645' class='colors'>
+grey12</div>
+<div id='d646' class='colors'>
+gray11</div>
+<div id='d647' class='colors'>
+grey11</div>
+<div id='d648' class='colors'>
+gray10</div>
+<div id='d649' class='colors'>
+grey10</div>
+<div id='d650' class='colors'>
+gray9</div>
+<div id='d651' class='colors'>
+grey9</div>
+<div id='d652' class='colors'>
+gray8</div>
+<div id='d653' class='colors'>
+grey8</div>
+<div id='d654' class='colors'>
+gray7</div>
+<div id='d655' class='colors'>
+grey7</div>
+<div id='d656' class='colors'>
+gray6</div>
+<div id='d657' class='colors'>
+grey6</div>
+<div id='d658' class='colors'>
+gray5</div>
+<div id='d659' class='colors'>
+grey5</div>
+<div id='d660' class='colors'>
+gray4</div>
+<div id='d661' class='colors'>
+grey4</div>
+<div id='d662' class='colors'>
+gray3</div>
+<div id='d663' class='colors'>
+grey3</div>
+<div id='d664' class='colors'>
+gray2</div>
+<div id='d665' class='colors'>
+grey2</div>
+<div id='d666' class='colors'>
+gray1</div>
+<div id='d667' class='colors'>
+grey1</div>
+<div id='d668' class='colors'>
+black</div>
+<div id='d669' class='colors'>
+gray0</div>
+<div id='d670' class='colors'>
+grey0</div>
+<div id='d671' class='colors'>
+opaque</div>
+<div id='d672' class='colors'>
+none</div>
+<div id='d673' class='colors'>
+transparent</div>
+</div>
+</div>
+
+<div id='colornames'>
+CLICK TO CHOOSE THE COLOR
+</div>
+
+<div id='switches'>
+
+<span id='title'>OPTIONS</span>
+<div id='hexswitch' class='theswitches'>CLICK TO USE HEX KEYS</div>
+<br>
+<div id='infoswitch' class='theswitches'>CLICK TO TOGGLE PALATE INFO<span id='infospace'></span></div>
+<br>
+<div id='backgroundswitch' class='theswitches'>CLICK TO TOGGLE BACKGROUNDS</div>
+<br>
+<div id='preview'></div>
+<div id='nameholder'>YOU WILL CHOOSE:<input id='namespace' type='text'></input></div>
+<br>
+<span id='transparent'>to choose transparent as a color, click <span id='transbutton'>HERE</span></span>
+</div>
+</div>
+<script type='text/javascript' src='jquery-1.6.4.min.js'></script>
+<script type='text/javascript' src='colordict.js'></script>
+
+<script type='text/javascript'>
+
+
+//setup dimensions
+//////////////////
+
+function regolden(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num/ratio)
+ return newnum
+ }
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newval = goldenize(result)
+ propval = newval.toString()+'px'
+ if(propertystr == 'height'){
+ $(idandselectr).css('width', propval)
+ }
+ else if(propertystr == 'width'){
+ $(idandselectr).css('height', propval)
+ }
+ }
+function shrinkwidth(arg){
+ for(var i=0; i < 5; i++){
+ arg = regolden(arg)
+ }
+ division = Math.round(arg)
+ return division
+}
+
+function makecolorswidth(){
+ colorswidth = shrinkwidth(window.innerWidth)
+ $('.colors').css('width', colorswidth.toString()+'px')
+}
+function makecolorsheight(){
+ result = getproperty('.colors', 'width')
+ newval = regolden(result)
+ propval = newval.toString()+'px'
+ $('.colors').css('height', propval)
+}
+//the following function sets up the font sizes
+//inrelation to the size of the hexswitch font
+function setupfonts(){
+ var firstfont = getproperty('#hexswitch', 'font-size')
+ var finalfont = goldenize(firstfont)
+ $('#namespace').css('font-size', finalfont+'px')
+ $('#namespace').css('width', $('#switches').css('width'))
+ var secondfont = getproperty('#namespace', 'font-size')
+ var finalfont = goldenize(secondfont)
+ $('#colornames').css('font-size', finalfont+'px')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ var transfont = regolden(firstfont)
+ $('#transparent').css('font-size', transfont+'px')
+}
+function getcontainerwidth(){
+ basis = $('.colors').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ secondbasis = '2px'
+ secondbasis = parseInt(secondbasis.slice(0,-2))
+ widthval = (secondbasis*8)+(basis*4)+(goldenize(basis)-basis)
+ widthval = widthval.toString()+'px'
+ return widthval
+}
+
+function makecontainerwidth(){
+ var containerwidth = getcontainerwidth()
+ $('#container').css('width',containerwidth)
+ $('#viewarea').css('width',containerwidth)
+}
+
+
+function setupsides()
+ {
+ var basis = $('#container').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ remainder = (100-basis)/2
+ widths = regolden(basis)
+ widths = widths.toString()+'px'
+ lateralbasis = regolden(remainder)
+ leftside = toString(lateralbasis)+'%'
+ rightside = toString(100-lateralbasis)+'%'
+ $('#colornames').css('left', leftside)
+ $('#switches').css({'width': widths, 'left': rightside})
+ }
+function previewdimensions(){
+ first = $('#switches').css('width')
+ first = parseInt(first.slice(0,-2))
+ width = regolden(first)
+ height = regolden(width)
+ width = width.toString()+'px'
+ height = height.toString()+'px'
+ $('#preview').css({'width':width, 'height':height})
+}
+function setupdimensions(){
+makecolorswidth()
+setupfonts()
+makecolorsheight()
+makecontainerwidth()
+setupsides()
+makegolden('#switches','width')
+previewdimensions()
+}
+setupdimensions()
+$(window).resize(function(){setupdimensions()})
+//$(window).resize()(function(){setupdimensions()})
+
+//BEGIN STYLINGS//
+//////////////////
+
+
+var old = {};
+function hovercss(sel, uno){
+
+ var chng = {};
+ chng['color'] = 'white';
+ chng['text-shadow'] = 'black 1px 2px';
+ chng['background-image'] = 'url(http://asdf.us/im/19/gradient_whitegray80_1321305183_1321305241_pepper_1321333403_pepper.jpg)';
+ if(uno == 'over'){
+ for(var key in chng){
+ old[key] = $('#'+sel).css(key)
+ }
+ for(var key in chng){
+ $('#'+sel).css(key, chng[key])
+ }
+ }
+ if(uno == 'out'){
+ for(var key in old){
+ $('#'+sel).css(key, old[key])
+ }
+ }
+}
+$('.theswitches').hover(function(){hovercss(this.id, 'over')}, function(){hovercss(this.id, 'out')})
+
+var transcss = {
+ 'color':'#141414','box-shadow':'10px 10px 5px #141414',
+ 'background-color':'#D1D1D1','color':'#141414',
+ 'border-width':'2px','border-style':'outset','cursor':'pointer'}
+$('#transbutton').css(transcss)
+var hovertrans = {
+ 'background-color':'DarkGrey','color':'#383838','box-shadow':'5px 5px 2px #141414'
+}
+$('#transbutton').hover(function(){$('#transbutton').css(hovertrans)},function(){$('#transbutton').css(transcss)})
+//threewayselector for what goes in the divs
+infostate = 1
+function switchinfo()
+ {
+ if(infostate == 0)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(divtoname[divlist[i]])
+ };
+ infostate = 1
+ $('#infospace').html('(NAMES)');
+ }
+ else if(infostate == 1)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html("")
+ };
+ infostate = 2
+ $('#infospace').html('(NONE)');
+ }
+ else if(infostate == 2)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(nametohex[divtoname[divlist[i]]])
+ };
+ infostate = 0
+ $('#infospace').html('(HEXES)');
+ }
+ }
+$('#infoswitch').hover(function(){$('#infospace').show()}, function(){$('#infospace').hide('slow')} )
+$('#infoswitch').click(function(){switchinfo()})
+
+
+backgroundstate = 2;
+function switchbackground()
+ {
+ if(backgroundstate == 1)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image','url(http://dump.fm/static/img/bg.dither.gif)')
+ backgroundstate = 2;
+ $('#colornames').css('color', 'white')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ }
+ else if(backgroundstate == 2)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image', 'none')
+ backgroundstate = 0
+ }
+ else if(backgroundstate == 0)
+ {
+ $('#colorpicker').css('background-color', 'white')
+ $('#colorpicker').css('background-image', 'none')
+ $('#colornames').css('color', 'grey')
+ backgroundstate = 1
+ }
+ }
+
+$('#backgroundswitch').click(function(){switchbackground()})
+
+//takes a div name and returns a colorname
+
+function showcolorname(divstr)
+
+ {
+ colorname = divtoname['#'+divstr]
+ hex = nametohex[colorname]
+ imname = hextoname[hex]
+ if (hexes == true)
+ {
+ imname = hex
+ }
+
+ return imname
+ }
+function bigname(divstr)
+ {
+ colorname = showcolorname(divstr)
+ $('#colornames').html(colorname)
+
+ }
+function writeit(text)
+ {
+ $('#colornames').append(text)
+ }
+function makebig(divstr)
+ {
+ firstheight = $('#'+divstr).height()
+ newheight = goldenize(firstheight)
+ $('#'+divstr).height(newheight)
+ }
+function makesmall(divstr)
+ {
+ oldheight = $('.colors').height()
+ $('#'+divstr).height(oldheight)
+ }
+var choice;
+$('.colors').hover(function() {
+ bigname(this.id);
+// makebig(this.id);
+// makegolden('#'+this.id, 'height')},
+//function(){
+// makesmall(this.id);
+// makegolden('#'+this.id, 'height')
+});
+$('.colors').mouseover(function(){
+ if(this.id != 'd0'){
+ makebig(this.id);
+ makegolden('#'+this.id, 'height')
+ }})
+$('.colors').mouseout(function(){
+ makesmall(this.id);
+ makegolden('#'+this.id,'height');
+ })
+$(".colors").hover(function(){
+$('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+ });
+$('.colors').css('margin-top', '2px')
+var hexes = false
+function hexswitch()
+ {
+ if(hexes == false)
+ {
+ $('#hexswitch').html('CLICK TO USE COLOR NAMES')
+ hexes = true;
+ var nameval = $('#namespace').val()
+ $('#namespace').val(nametohex[nameval])
+ }
+
+ else
+ {
+ $('#hexswitch').html('CLICK TO USE HEX KEYS')
+ hexes = false;
+ var nameval = $('#namespace').val()
+ $('#namespace').val(hextoname[nameval])
+ }
+ }
+$('#hexswitch').click(function(){hexswitch()})
+
+$('.colors').click(function(){
+ putitin()
+ })
+
+function putitin()
+ {
+ thecolor = $('#colornames').html()
+ $('#namespace').val(thecolor)
+ if(hexes == false){
+ $('#preview').css({'background-color': nametohex[thecolor], 'border-style':'none'})
+ }
+ else{
+ $('#preview').css('background-color', thecolor)
+ }
+
+ }
+function transparent()
+ {
+ $('#namespace').val('transparent');
+ $('#preview').css({'background-color':'transparent','border-style':'dashed','border-width':'2px'})
+ }
+$('#transbutton').click(function(){transparent()})
+
+//$('#switches').bind('mousemove',function(e){
+// $("#colornames").html(" e.pageY: " + e.pageY);
+//});
+vt.start("viewarea", "container");
+
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/colors/junk/separate b/frontend/imgrid/colors/colors/junk/separate
new file mode 100755
index 0000000..b32bc49
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/separate
@@ -0,0 +1,126 @@
+#!/usr/bin/python2.7
+
+
+f = open('colors.html', 'r')
+lines = f.readlines()
+colornames = []
+hexes = []
+for line in lines:
+ if 'right' in line and 'td' in line:
+ colornames.append(line[22:-6])
+ if '#' in line:
+ hexes.append(line[21:28])
+ if line == lines[len(lines)-1]:
+ break
+print len(hexes)
+print len(colornames)
+###making a dictionary
+hextoname = {}
+nametohex = {}
+for i in hexes:
+ hextoname[i] = colornames[hexes.index(i)]
+for i in colornames:
+ nametohex[i] = hexes[colornames.index(i)]
+w = open('colordict.js', 'w')
+w.write("var hextoname = "+str(hextoname)+"\n")
+w.write("var nametohex = "+str(nametohex)+"\n")
+w.close()
+ds = []
+for x in range(674):
+ ds.append('d'+str(x))
+
+#print hexes
+#note last two hex values in lists are wrong for they correspond to none and transparent
+w = open('colorsnew.html', 'w')
+w.write("""<html>\n<head>\n
+<style type='text/css'>\n
+body\n{max-width:100%;\nmax-height:100%; \nfont-family:helvetica; \nfont-size:10px; \nword-wrap: break-word;}\n
+div\n{display: -moz-inline-stack;\ndisplay:inline-block;\nvertical-align:top;\nmin-height: 30px;\nzoom: 1;\n*display: inline;}\n}\n
+#main{width:600px;}\n""")
+w.write("#colornames\n{position:fixed;\nfont-size:50px;\ntop:50px;\nright:50%;}")
+for x in range(674):
+ w.write("\n#"+ds[x]+"\n{background-color:"+str(hexes[x])+"}\n")
+w.write(".colors\n{height:30px;\nwidth:10px;}\n")
+w.write("</style></head>")
+w.write("<body>\n<div id='main'>\n")
+for x in range(674):
+ w.write("<div id='"+ds[x]+"' class='colors'>\n"+colornames[x]+"</div>\n")
+w.write("</div>\n")
+w.write("<div id='colornames'>WHERE THE COLORNAMES WILL GO</div>")
+w.write("<script type='text/javascript' src='jquery-1.6.4.min.js'></script>")
+w.write("<script type='text/javascript' src='colordict.js'></script>\n")
+w.write("\n<script type='text/javascript'>")
+w.write("""\nfunction goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idstr, propertystr)
+ {
+ grab = $('.'+idstr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idstr, propertystr)
+ {
+ result = getproperty(idstr, propertystr)
+ newwidth = goldenize(result)
+ widthval = newwidth.toString()+'px'
+ $('.'+idstr).css('width', widthval)
+ }
+makegolden('colors', 'height')
+""")
+w.write("""\n
+//remove content this function takes the name out of the divs
+
+function removecontent()
+ {
+ $('.colors').html("")
+ }
+removecontent()""")
+w.write("""
+
+function colorToHex(color) {
+ if (color.substr(0, 1) === '#') {
+ return color;
+ }
+ var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color);
+
+ var red = parseInt(digits[2]);
+ var green = parseInt(digits[3]);
+ var blue = parseInt(digits[4]);
+
+ var rgb = blue | (green << 8) | (red << 16);
+ return digits[1] + '#' + rgb.toString(16);
+};
+
+//takes a div name and returns a colorname\n
+function showcolorname(divstr)\n
+ {\n
+ bgcolor = $('#'+divstr).css('background-color')
+ lowercasehex = colorToHex(bgcolor)
+ hex = lowercasehex.toUpperCase()
+ imname = hextoname[hex]
+/* if ($('#hexortext:checked').length == 1)
+ {
+ imname = hex
+ }*/
+ return imname
+ }
+function bigname(divstr)
+ {
+ bebop = showcolorname(toString(divstr))
+ $('#colornames').html(bebop)
+ }
+$('.colors').mouseover(function() {
+ bigname(this.id);
+});
+
+
+
+""")
+w.write("</script>")
+w.write("\n</body>\n</html>")
diff --git a/frontend/imgrid/colors/colors/junk/todo.txt b/frontend/imgrid/colors/colors/junk/todo.txt
new file mode 100755
index 0000000..ff9ae66
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/todo.txt
@@ -0,0 +1,135 @@
+manyprettygradients:
+finish formatting tumblr
+put on autoscroll
+think about font (minoan) THIS IS WHY WE NEED TEXT BLASTER
+turn it to a bot
+ pre-step: delete everything on there
+ step 1: gradientscrape longerlogfile
+ step 2: post those
+ step 3: make gradientscrape call itself every 30 minutes
+ step 5: swipe???
+ step 4: import the write function from main.py
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ python 2.6 == /opt/python2.6/bin/python
+
+
+ JUANITA = True
+ #JUANITA = False
+
+
+
+from main.py, import * (follow_followers, reblog_posts, post_images)
+process_followers()
+reblog_posts()
+post_images()
+
+def now ():
+ return int(time.mktime(time.localtime()))
+
+def save_seen (ids):
+ out = open (DUMP_SEEN+".tmp", "w")
+ for id in ids.keys():
+ out.write(id+"\n")
+ out.close()
+ system(["/bin/mv", DUMP_SEEN+".tmp", DUMP_SEEN])
+
+def slurp (file):
+ input = open (file, "r")
+ lines = input.readlines()
+ input.close()
+ return lines
+
+def new_dump (dumps, seen):
+ id = random.choice(dumps.keys())
+ while id in seen:
+ id = random.choice(dumps.keys())
+ thedump = dumps[id]
+ seen[id] = True
+ save_seen(seen)
+ if JUANITA:
+ print thedump
+ else:
+ dump.say(thedump)
+ wait = random.randint(2,28)*30 + random.randint(1,55)
+ print "sleeping for", str(wait/60) + "m" + str(wait % 60) + "s..."
+ print
+ time.sleep(wait)
+
+def main ():
+ score_lines = slurp(DUMP_LIST)
+ dumps = {}
+ scored = {}
+ # first pass to work out the top score for each dump
+ for line in score_lines:
+ # 0 id 1 score 2 favers 3 urls
+ partz = line.split("\t")
+#skipping over really old stuff
+ if int(partz[0]) < 3618853:
+ continue
+
+ urls = partz[3].split(" ")
+ skip = False
+ for url in urls:
+ if "http" not in url:
+ skip = True
+ if skip:
+ continue
+ # dictionary: urls => (id, score)
+ if partz[3] in scored and int(partz[1]) > scored[partz[3]][1]:
+ scored[partz[3]] = (partz[0], int(partz[1]))
+ else:
+ scored[partz[3]] = (partz[0], int(partz[1]))
+
+ except KeyError:
+ continue
+ except ValueError:
+ continue
+
+ # second pass to weed out dumps with scores too high/low
+ for urls in scored.keys():
+ if scored[urls][1] > 0 and scored[urls][1] < 6:
+ # dictionary: id => urls
+ dumps[scored[urls][0]] = urls.strip()
+
+ seen_lines = slurp(DUMP_SEEN)
+ seen = {}
+ for line in seen_lines:
+ l = line.strip()
+ if len(l):
+ seen[l] = True
+
+ print len(dumps), "dumps in queue"
+ print len(seen_lines), "dumped already"
+
+ if JUANITA:
+ for i in xrange(10):
+ new_dump (dumps, seen)
+ else:
+ while (1):
+ new_dump (dumps, seen)
+ else:
+ print "TURNED OFF, sleeping for half an hour..."
+ time.sleep (30*60)
+
+main ()
+
diff --git a/frontend/imgrid/colors/colors/junk/withscroller.html b/frontend/imgrid/colors/colors/junk/withscroller.html
new file mode 100755
index 0000000..e1443c3
--- /dev/null
+++ b/frontend/imgrid/colors/colors/junk/withscroller.html
@@ -0,0 +1,3850 @@
+<html>
+<head>
+<link rel="stylesheet" type="text/css" href="ScrollEffect.css" />
+<script type="text/javascript" src="ScrollEffect.js"></script>
+
+<style type='text/css'>
+
+body
+{
+margin:0;
+}
+
+#colorpicker
+{
+position:absolute;
+width:100%;
+font-family:helvetica;
+font-size:10px;
+//background-color: gray;
+//background-image: url("http://asdf.us/im/6f/gradient_bgdither_1321255670_pepper.gif");
+background-color: black;
+background-image: url("http://dump.fm/static/img/bg.dither.gif")
+
+}
+
+#container div
+{
+text-align:left;
+display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+min-height: 30px;
+zoom: 1;
+word-wrap: break-word;
+*display: inline;
+cursor:pointer;
+}
+
+#container
+{
+margin:0 auto;
+width:31%;
+padding-bottom:0px;
+padding-right:10px;
+padding-left:10px;
+text-align:center;
+position:absolute;
+height:850px;
+}
+
+#viewarea
+{
+position: relative;
+top: 10%;
+width: 31%;
+height: 820px;
+overflow: hidden;
+margin:0 auto;
+padding-top:10px;
+padding-right:10px;
+padding-left:10px;
+text-align:center;
+border-style:outset;
+border-width:10px;
+}
+
+#colornames
+{
+color:white;
+position:fixed;
+font-size:50px;
+top:50px;
+left:2%;
+width:400px;
+}
+
+#switches
+ {
+ position:fixed;
+ top:20px;
+ right:1%;
+ height:400px;
+ width:300px;
+ font-size:20px;
+ border-style: groove;
+ border-width: 4px;
+ background-color:gray;
+ padding:2px;
+ box-shadow: 10px 10px 5px #141414;
+ }
+
+#infoswitch, #hexswitch, #backgroundswitch
+ {
+ background-image:url(http://asdf.us/im/58/gradient_whitegray80_1321305183_1321305241_pepper.jpg);
+ cursor:pointer;
+ }
+#preview
+ {
+ height:150px;
+ }
+
+
+#holder
+ {
+ float:bottom;
+ }
+
+#transparent
+ {
+ font-size:12px;
+ }
+#namespace
+ {
+ width:inherit;
+ }
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{
+height:30;
+width:10px;
+}
+</style></head><body>
+<div id='colorpicker'>
+<div id='viewarea' class="panorama">
+<div id='container'>
+<div id='d0' class='colors'>
+snow</div>
+<div id='d1' class='colors'>
+snow1</div>
+<div id='d2' class='colors'>
+snow2</div>
+<div id='d3' class='colors'>
+RosyBrown1</div>
+<div id='d4' class='colors'>
+RosyBrown2</div>
+<div id='d5' class='colors'>
+snow3</div>
+<div id='d6' class='colors'>
+LightCoral</div>
+<div id='d7' class='colors'>
+IndianRed1</div>
+<div id='d8' class='colors'>
+RosyBrown3</div>
+<div id='d9' class='colors'>
+IndianRed2</div>
+<div id='d10' class='colors'>
+RosyBrown</div>
+<div id='d11' class='colors'>
+brown1</div>
+<div id='d12' class='colors'>
+firebrick1</div>
+<div id='d13' class='colors'>
+brown2</div>
+<div id='d14' class='colors'>
+IndianRed</div>
+<div id='d15' class='colors'>
+IndianRed3</div>
+<div id='d16' class='colors'>
+firebrick2</div>
+<div id='d17' class='colors'>
+snow4</div>
+<div id='d18' class='colors'>
+brown3</div>
+<div id='d19' class='colors'>
+red</div>
+<div id='d20' class='colors'>
+red1</div>
+<div id='d21' class='colors'>
+RosyBrown4</div>
+<div id='d22' class='colors'>
+firebrick3</div>
+<div id='d23' class='colors'>
+red2</div>
+<div id='d24' class='colors'>
+firebrick</div>
+<div id='d25' class='colors'>
+brown</div>
+<div id='d26' class='colors'>
+red3</div>
+<div id='d27' class='colors'>
+IndianRed4</div>
+<div id='d28' class='colors'>
+brown4</div>
+<div id='d29' class='colors'>
+firebrick4</div>
+<div id='d30' class='colors'>
+DarkRed</div>
+<div id='d31' class='colors'>
+red4</div>
+<div id='d32' class='colors'>
+maroon</div>
+<div id='d33' class='colors'>
+LightPink1</div>
+<div id='d34' class='colors'>
+LightPink3</div>
+<div id='d35' class='colors'>
+LightPink4</div>
+<div id='d36' class='colors'>
+LightPink2</div>
+<div id='d37' class='colors'>
+LightPink</div>
+<div id='d38' class='colors'>
+pink</div>
+<div id='d39' class='colors'>
+crimson</div>
+<div id='d40' class='colors'>
+pink1</div>
+<div id='d41' class='colors'>
+pink2</div>
+<div id='d42' class='colors'>
+pink3</div>
+<div id='d43' class='colors'>
+pink4</div>
+<div id='d44' class='colors'>
+PaleVioletRed4</div>
+<div id='d45' class='colors'>
+PaleVioletRed</div>
+<div id='d46' class='colors'>
+PaleVioletRed2</div>
+<div id='d47' class='colors'>
+PaleVioletRed1</div>
+<div id='d48' class='colors'>
+PaleVioletRed3</div>
+<div id='d49' class='colors'>
+LavenderBlush</div>
+<div id='d50' class='colors'>
+LavenderBlush1</div>
+<div id='d51' class='colors'>
+LavenderBlush3</div>
+<div id='d52' class='colors'>
+LavenderBlush2</div>
+<div id='d53' class='colors'>
+LavenderBlush4</div>
+<div id='d54' class='colors'>
+maroon</div>
+<div id='d55' class='colors'>
+HotPink3</div>
+<div id='d56' class='colors'>
+VioletRed3</div>
+<div id='d57' class='colors'>
+VioletRed1</div>
+<div id='d58' class='colors'>
+VioletRed2</div>
+<div id='d59' class='colors'>
+VioletRed4</div>
+<div id='d60' class='colors'>
+HotPink2</div>
+<div id='d61' class='colors'>
+HotPink1</div>
+<div id='d62' class='colors'>
+HotPink4</div>
+<div id='d63' class='colors'>
+HotPink</div>
+<div id='d64' class='colors'>
+DeepPink</div>
+<div id='d65' class='colors'>
+DeepPink1</div>
+<div id='d66' class='colors'>
+DeepPink2</div>
+<div id='d67' class='colors'>
+DeepPink3</div>
+<div id='d68' class='colors'>
+DeepPink4</div>
+<div id='d69' class='colors'>
+maroon1</div>
+<div id='d70' class='colors'>
+maroon2</div>
+<div id='d71' class='colors'>
+maroon3</div>
+<div id='d72' class='colors'>
+maroon4</div>
+<div id='d73' class='colors'>
+MediumVioletRed</div>
+<div id='d74' class='colors'>
+VioletRed</div>
+<div id='d75' class='colors'>
+orchid2</div>
+<div id='d76' class='colors'>
+orchid</div>
+<div id='d77' class='colors'>
+orchid1</div>
+<div id='d78' class='colors'>
+orchid3</div>
+<div id='d79' class='colors'>
+orchid4</div>
+<div id='d80' class='colors'>
+thistle1</div>
+<div id='d81' class='colors'>
+thistle2</div>
+<div id='d82' class='colors'>
+plum1</div>
+<div id='d83' class='colors'>
+plum2</div>
+<div id='d84' class='colors'>
+thistle</div>
+<div id='d85' class='colors'>
+thistle3</div>
+<div id='d86' class='colors'>
+plum</div>
+<div id='d87' class='colors'>
+violet</div>
+<div id='d88' class='colors'>
+plum3</div>
+<div id='d89' class='colors'>
+thistle4</div>
+<div id='d90' class='colors'>
+fuchsia</div>
+<div id='d91' class='colors'>
+magenta</div>
+<div id='d92' class='colors'>
+magenta1</div>
+<div id='d93' class='colors'>
+plum4</div>
+<div id='d94' class='colors'>
+magenta2</div>
+<div id='d95' class='colors'>
+magenta3</div>
+<div id='d96' class='colors'>
+DarkMagenta</div>
+<div id='d97' class='colors'>
+magenta4</div>
+<div id='d98' class='colors'>
+purple</div>
+<div id='d99' class='colors'>
+MediumOrchid</div>
+<div id='d100' class='colors'>
+MediumOrchid1</div>
+<div id='d101' class='colors'>
+MediumOrchid2</div>
+<div id='d102' class='colors'>
+MediumOrchid3</div>
+<div id='d103' class='colors'>
+MediumOrchid4</div>
+<div id='d104' class='colors'>
+DarkViolet</div>
+<div id='d105' class='colors'>
+DarkOrchid</div>
+<div id='d106' class='colors'>
+DarkOrchid1</div>
+<div id='d107' class='colors'>
+DarkOrchid3</div>
+<div id='d108' class='colors'>
+DarkOrchid2</div>
+<div id='d109' class='colors'>
+DarkOrchid4</div>
+<div id='d110' class='colors'>
+purple</div>
+<div id='d111' class='colors'>
+indigo</div>
+<div id='d112' class='colors'>
+BlueViolet</div>
+<div id='d113' class='colors'>
+purple2</div>
+<div id='d114' class='colors'>
+purple3</div>
+<div id='d115' class='colors'>
+purple4</div>
+<div id='d116' class='colors'>
+purple1</div>
+<div id='d117' class='colors'>
+MediumPurple</div>
+<div id='d118' class='colors'>
+MediumPurple1</div>
+<div id='d119' class='colors'>
+MediumPurple2</div>
+<div id='d120' class='colors'>
+MediumPurple3</div>
+<div id='d121' class='colors'>
+MediumPurple4</div>
+<div id='d122' class='colors'>
+DarkSlateBlue</div>
+<div id='d123' class='colors'>
+LightSlateBlue</div>
+<div id='d124' class='colors'>
+MediumSlateBlue</div>
+<div id='d125' class='colors'>
+SlateBlue</div>
+<div id='d126' class='colors'>
+SlateBlue1</div>
+<div id='d127' class='colors'>
+SlateBlue2</div>
+<div id='d128' class='colors'>
+SlateBlue3</div>
+<div id='d129' class='colors'>
+SlateBlue4</div>
+<div id='d130' class='colors'>
+GhostWhite</div>
+<div id='d131' class='colors'>
+lavender</div>
+<div id='d132' class='colors'>
+blue</div>
+<div id='d133' class='colors'>
+blue1</div>
+<div id='d134' class='colors'>
+blue2</div>
+<div id='d135' class='colors'>
+blue3</div>
+<div id='d136' class='colors'>
+MediumBlue</div>
+<div id='d137' class='colors'>
+blue4</div>
+<div id='d138' class='colors'>
+DarkBlue</div>
+<div id='d139' class='colors'>
+MidnightBlue</div>
+<div id='d140' class='colors'>
+navy</div>
+<div id='d141' class='colors'>
+NavyBlue</div>
+<div id='d142' class='colors'>
+RoyalBlue</div>
+<div id='d143' class='colors'>
+RoyalBlue1</div>
+<div id='d144' class='colors'>
+RoyalBlue2</div>
+<div id='d145' class='colors'>
+RoyalBlue3</div>
+<div id='d146' class='colors'>
+RoyalBlue4</div>
+<div id='d147' class='colors'>
+CornflowerBlue</div>
+<div id='d148' class='colors'>
+LightSteelBlue</div>
+<div id='d149' class='colors'>
+LightSteelBlue1</div>
+<div id='d150' class='colors'>
+LightSteelBlue2</div>
+<div id='d151' class='colors'>
+LightSteelBlue3</div>
+<div id='d152' class='colors'>
+LightSteelBlue4</div>
+<div id='d153' class='colors'>
+SlateGray4</div>
+<div id='d154' class='colors'>
+SlateGray1</div>
+<div id='d155' class='colors'>
+SlateGray2</div>
+<div id='d156' class='colors'>
+SlateGray3</div>
+<div id='d157' class='colors'>
+LightSlateGray</div>
+<div id='d158' class='colors'>
+LightSlateGrey</div>
+<div id='d159' class='colors'>
+SlateGray</div>
+<div id='d160' class='colors'>
+SlateGrey</div>
+<div id='d161' class='colors'>
+DodgerBlue</div>
+<div id='d162' class='colors'>
+DodgerBlue1</div>
+<div id='d163' class='colors'>
+DodgerBlue2</div>
+<div id='d164' class='colors'>
+DodgerBlue4</div>
+<div id='d165' class='colors'>
+DodgerBlue3</div>
+<div id='d166' class='colors'>
+AliceBlue</div>
+<div id='d167' class='colors'>
+SteelBlue4</div>
+<div id='d168' class='colors'>
+SteelBlue</div>
+<div id='d169' class='colors'>
+SteelBlue1</div>
+<div id='d170' class='colors'>
+SteelBlue2</div>
+<div id='d171' class='colors'>
+SteelBlue3</div>
+<div id='d172' class='colors'>
+SkyBlue4</div>
+<div id='d173' class='colors'>
+SkyBlue1</div>
+<div id='d174' class='colors'>
+SkyBlue2</div>
+<div id='d175' class='colors'>
+SkyBlue3</div>
+<div id='d176' class='colors'>
+LightSkyBlue</div>
+<div id='d177' class='colors'>
+LightSkyBlue4</div>
+<div id='d178' class='colors'>
+LightSkyBlue1</div>
+<div id='d179' class='colors'>
+LightSkyBlue2</div>
+<div id='d180' class='colors'>
+LightSkyBlue3</div>
+<div id='d181' class='colors'>
+SkyBlue</div>
+<div id='d182' class='colors'>
+LightBlue3</div>
+<div id='d183' class='colors'>
+DeepSkyBlue</div>
+<div id='d184' class='colors'>
+DeepSkyBlue1</div>
+<div id='d185' class='colors'>
+DeepSkyBlue2</div>
+<div id='d186' class='colors'>
+DeepSkyBlue4</div>
+<div id='d187' class='colors'>
+DeepSkyBlue3</div>
+<div id='d188' class='colors'>
+LightBlue1</div>
+<div id='d189' class='colors'>
+LightBlue2</div>
+<div id='d190' class='colors'>
+LightBlue</div>
+<div id='d191' class='colors'>
+LightBlue4</div>
+<div id='d192' class='colors'>
+PowderBlue</div>
+<div id='d193' class='colors'>
+CadetBlue1</div>
+<div id='d194' class='colors'>
+CadetBlue2</div>
+<div id='d195' class='colors'>
+CadetBlue3</div>
+<div id='d196' class='colors'>
+CadetBlue4</div>
+<div id='d197' class='colors'>
+turquoise1</div>
+<div id='d198' class='colors'>
+turquoise2</div>
+<div id='d199' class='colors'>
+turquoise3</div>
+<div id='d200' class='colors'>
+turquoise4</div>
+<div id='d201' class='colors'>
+cadet blue</div>
+<div id='d202' class='colors'>
+CadetBlue</div>
+<div id='d203' class='colors'>
+DarkTurquoise</div>
+<div id='d204' class='colors'>
+azure</div>
+<div id='d205' class='colors'>
+azure1</div>
+<div id='d206' class='colors'>
+LightCyan</div>
+<div id='d207' class='colors'>
+LightCyan1</div>
+<div id='d208' class='colors'>
+azure2</div>
+<div id='d209' class='colors'>
+LightCyan2</div>
+<div id='d210' class='colors'>
+PaleTurquoise1</div>
+<div id='d211' class='colors'>
+PaleTurquoise</div>
+<div id='d212' class='colors'>
+PaleTurquoise2</div>
+<div id='d213' class='colors'>
+DarkSlateGray1</div>
+<div id='d214' class='colors'>
+azure3</div>
+<div id='d215' class='colors'>
+LightCyan3</div>
+<div id='d216' class='colors'>
+DarkSlateGray2</div>
+<div id='d217' class='colors'>
+PaleTurquoise3</div>
+<div id='d218' class='colors'>
+DarkSlateGray3</div>
+<div id='d219' class='colors'>
+azure4</div>
+<div id='d220' class='colors'>
+LightCyan4</div>
+<div id='d221' class='colors'>
+aqua</div>
+<div id='d222' class='colors'>
+cyan</div>
+<div id='d223' class='colors'>
+cyan1</div>
+<div id='d224' class='colors'>
+PaleTurquoise4</div>
+<div id='d225' class='colors'>
+cyan2</div>
+<div id='d226' class='colors'>
+DarkSlateGray4</div>
+<div id='d227' class='colors'>
+cyan3</div>
+<div id='d228' class='colors'>
+cyan4</div>
+<div id='d229' class='colors'>
+DarkCyan</div>
+<div id='d230' class='colors'>
+teal</div>
+<div id='d231' class='colors'>
+DarkSlateGray</div>
+<div id='d232' class='colors'>
+DarkSlateGrey</div>
+<div id='d233' class='colors'>
+MediumTurquoise</div>
+<div id='d234' class='colors'>
+LightSeaGreen</div>
+<div id='d235' class='colors'>
+turquoise</div>
+<div id='d236' class='colors'>
+aquamarine4</div>
+<div id='d237' class='colors'>
+aquamarine</div>
+<div id='d238' class='colors'>
+aquamarine1</div>
+<div id='d239' class='colors'>
+aquamarine2</div>
+<div id='d240' class='colors'>
+aquamarine3</div>
+<div id='d241' class='colors'>
+MediumAquamarine</div>
+<div id='d242' class='colors'>
+MediumSpringGreen</div>
+<div id='d243' class='colors'>
+MintCream</div>
+<div id='d244' class='colors'>
+SpringGreen</div>
+<div id='d245' class='colors'>
+SpringGreen1</div>
+<div id='d246' class='colors'>
+SpringGreen2</div>
+<div id='d247' class='colors'>
+SpringGreen3</div>
+<div id='d248' class='colors'>
+SpringGreen4</div>
+<div id='d249' class='colors'>
+MediumSeaGreen</div>
+<div id='d250' class='colors'>
+SeaGreen</div>
+<div id='d251' class='colors'>
+SeaGreen3</div>
+<div id='d252' class='colors'>
+SeaGreen1</div>
+<div id='d253' class='colors'>
+SeaGreen4</div>
+<div id='d254' class='colors'>
+SeaGreen2</div>
+<div id='d255' class='colors'>
+MediumForestGreen</div>
+<div id='d256' class='colors'>
+honeydew</div>
+<div id='d257' class='colors'>
+honeydew1</div>
+<div id='d258' class='colors'>
+honeydew2</div>
+<div id='d259' class='colors'>
+DarkSeaGreen1</div>
+<div id='d260' class='colors'>
+DarkSeaGreen2</div>
+<div id='d261' class='colors'>
+PaleGreen1</div>
+<div id='d262' class='colors'>
+PaleGreen</div>
+<div id='d263' class='colors'>
+honeydew3</div>
+<div id='d264' class='colors'>
+LightGreen</div>
+<div id='d265' class='colors'>
+PaleGreen2</div>
+<div id='d266' class='colors'>
+DarkSeaGreen3</div>
+<div id='d267' class='colors'>
+DarkSeaGreen</div>
+<div id='d268' class='colors'>
+PaleGreen3</div>
+<div id='d269' class='colors'>
+honeydew4</div>
+<div id='d270' class='colors'>
+green1</div>
+<div id='d271' class='colors'>
+lime</div>
+<div id='d272' class='colors'>
+LimeGreen</div>
+<div id='d273' class='colors'>
+DarkSeaGreen4</div>
+<div id='d274' class='colors'>
+green2</div>
+<div id='d275' class='colors'>
+PaleGreen4</div>
+<div id='d276' class='colors'>
+green3</div>
+<div id='d277' class='colors'>
+ForestGreen</div>
+<div id='d278' class='colors'>
+green4</div>
+<div id='d279' class='colors'>
+green</div>
+<div id='d280' class='colors'>
+DarkGreen</div>
+<div id='d281' class='colors'>
+LawnGreen</div>
+<div id='d282' class='colors'>
+chartreuse</div>
+<div id='d283' class='colors'>
+chartreuse1</div>
+<div id='d284' class='colors'>
+chartreuse2</div>
+<div id='d285' class='colors'>
+chartreuse3</div>
+<div id='d286' class='colors'>
+chartreuse4</div>
+<div id='d287' class='colors'>
+GreenYellow</div>
+<div id='d288' class='colors'>
+DarkOliveGreen3</div>
+<div id='d289' class='colors'>
+DarkOliveGreen1</div>
+<div id='d290' class='colors'>
+DarkOliveGreen2</div>
+<div id='d291' class='colors'>
+DarkOliveGreen4</div>
+<div id='d292' class='colors'>
+DarkOliveGreen</div>
+<div id='d293' class='colors'>
+OliveDrab</div>
+<div id='d294' class='colors'>
+OliveDrab1</div>
+<div id='d295' class='colors'>
+OliveDrab2</div>
+<div id='d296' class='colors'>
+OliveDrab3</div>
+<div id='d297' class='colors'>
+YellowGreen</div>
+<div id='d298' class='colors'>
+OliveDrab4</div>
+<div id='d299' class='colors'>
+ivory</div>
+<div id='d300' class='colors'>
+ivory1</div>
+<div id='d301' class='colors'>
+LightYellow</div>
+<div id='d302' class='colors'>
+LightYellow1</div>
+<div id='d303' class='colors'>
+beige</div>
+<div id='d304' class='colors'>
+ivory2</div>
+<div id='d305' class='colors'>
+LightGoldenrodYellow</div>
+<div id='d306' class='colors'>
+LightYellow2</div>
+<div id='d307' class='colors'>
+ivory3</div>
+<div id='d308' class='colors'>
+LightYellow3</div>
+<div id='d309' class='colors'>
+ivory4</div>
+<div id='d310' class='colors'>
+LightYellow4</div>
+<div id='d311' class='colors'>
+yellow</div>
+<div id='d312' class='colors'>
+yellow1</div>
+<div id='d313' class='colors'>
+yellow2</div>
+<div id='d314' class='colors'>
+yellow3</div>
+<div id='d315' class='colors'>
+yellow4</div>
+<div id='d316' class='colors'>
+olive</div>
+<div id='d317' class='colors'>
+DarkKhaki</div>
+<div id='d318' class='colors'>
+khaki2</div>
+<div id='d319' class='colors'>
+LemonChiffon4</div>
+<div id='d320' class='colors'>
+khaki1</div>
+<div id='d321' class='colors'>
+khaki3</div>
+<div id='d322' class='colors'>
+khaki4</div>
+<div id='d323' class='colors'>
+PaleGoldenrod</div>
+<div id='d324' class='colors'>
+LemonChiffon</div>
+<div id='d325' class='colors'>
+LemonChiffon1</div>
+<div id='d326' class='colors'>
+khaki</div>
+<div id='d327' class='colors'>
+LemonChiffon3</div>
+<div id='d328' class='colors'>
+LemonChiffon2</div>
+<div id='d329' class='colors'>
+MediumGoldenRod</div>
+<div id='d330' class='colors'>
+cornsilk4</div>
+<div id='d331' class='colors'>
+gold</div>
+<div id='d332' class='colors'>
+gold1</div>
+<div id='d333' class='colors'>
+gold2</div>
+<div id='d334' class='colors'>
+gold3</div>
+<div id='d335' class='colors'>
+gold4</div>
+<div id='d336' class='colors'>
+LightGoldenrod</div>
+<div id='d337' class='colors'>
+LightGoldenrod4</div>
+<div id='d338' class='colors'>
+LightGoldenrod1</div>
+<div id='d339' class='colors'>
+LightGoldenrod3</div>
+<div id='d340' class='colors'>
+LightGoldenrod2</div>
+<div id='d341' class='colors'>
+cornsilk3</div>
+<div id='d342' class='colors'>
+cornsilk2</div>
+<div id='d343' class='colors'>
+cornsilk</div>
+<div id='d344' class='colors'>
+cornsilk1</div>
+<div id='d345' class='colors'>
+goldenrod</div>
+<div id='d346' class='colors'>
+goldenrod1</div>
+<div id='d347' class='colors'>
+goldenrod2</div>
+<div id='d348' class='colors'>
+goldenrod3</div>
+<div id='d349' class='colors'>
+goldenrod4</div>
+<div id='d350' class='colors'>
+DarkGoldenrod</div>
+<div id='d351' class='colors'>
+DarkGoldenrod1</div>
+<div id='d352' class='colors'>
+DarkGoldenrod2</div>
+<div id='d353' class='colors'>
+DarkGoldenrod3</div>
+<div id='d354' class='colors'>
+DarkGoldenrod4</div>
+<div id='d355' class='colors'>
+FloralWhite</div>
+<div id='d356' class='colors'>
+wheat2</div>
+<div id='d357' class='colors'>
+OldLace</div>
+<div id='d358' class='colors'>
+wheat</div>
+<div id='d359' class='colors'>
+wheat1</div>
+<div id='d360' class='colors'>
+wheat3</div>
+<div id='d361' class='colors'>
+orange</div>
+<div id='d362' class='colors'>
+orange1</div>
+<div id='d363' class='colors'>
+orange2</div>
+<div id='d364' class='colors'>
+orange3</div>
+<div id='d365' class='colors'>
+orange4</div>
+<div id='d366' class='colors'>
+wheat4</div>
+<div id='d367' class='colors'>
+moccasin</div>
+<div id='d368' class='colors'>
+PapayaWhip</div>
+<div id='d369' class='colors'>
+NavajoWhite3</div>
+<div id='d370' class='colors'>
+BlanchedAlmond</div>
+<div id='d371' class='colors'>
+NavajoWhite</div>
+<div id='d372' class='colors'>
+NavajoWhite1</div>
+<div id='d373' class='colors'>
+NavajoWhite2</div>
+<div id='d374' class='colors'>
+NavajoWhite4</div>
+<div id='d375' class='colors'>
+AntiqueWhite4</div>
+<div id='d376' class='colors'>
+AntiqueWhite</div>
+<div id='d377' class='colors'>
+tan</div>
+<div id='d378' class='colors'>
+bisque4</div>
+<div id='d379' class='colors'>
+burlywood</div>
+<div id='d380' class='colors'>
+AntiqueWhite2</div>
+<div id='d381' class='colors'>
+burlywood1</div>
+<div id='d382' class='colors'>
+burlywood3</div>
+<div id='d383' class='colors'>
+burlywood2</div>
+<div id='d384' class='colors'>
+AntiqueWhite1</div>
+<div id='d385' class='colors'>
+burlywood4</div>
+<div id='d386' class='colors'>
+AntiqueWhite3</div>
+<div id='d387' class='colors'>
+DarkOrange</div>
+<div id='d388' class='colors'>
+bisque2</div>
+<div id='d389' class='colors'>
+bisque</div>
+<div id='d390' class='colors'>
+bisque1</div>
+<div id='d391' class='colors'>
+bisque3</div>
+<div id='d392' class='colors'>
+DarkOrange1</div>
+<div id='d393' class='colors'>
+linen</div>
+<div id='d394' class='colors'>
+DarkOrange2</div>
+<div id='d395' class='colors'>
+DarkOrange3</div>
+<div id='d396' class='colors'>
+DarkOrange4</div>
+<div id='d397' class='colors'>
+peru</div>
+<div id='d398' class='colors'>
+tan1</div>
+<div id='d399' class='colors'>
+tan2</div>
+<div id='d400' class='colors'>
+tan3</div>
+<div id='d401' class='colors'>
+tan4</div>
+<div id='d402' class='colors'>
+PeachPuff</div>
+<div id='d403' class='colors'>
+PeachPuff1</div>
+<div id='d404' class='colors'>
+PeachPuff4</div>
+<div id='d405' class='colors'>
+PeachPuff2</div>
+<div id='d406' class='colors'>
+PeachPuff3</div>
+<div id='d407' class='colors'>
+SandyBrown</div>
+<div id='d408' class='colors'>
+seashell4</div>
+<div id='d409' class='colors'>
+seashell2</div>
+<div id='d410' class='colors'>
+seashell3</div>
+<div id='d411' class='colors'>
+chocolate</div>
+<div id='d412' class='colors'>
+chocolate1</div>
+<div id='d413' class='colors'>
+chocolate2</div>
+<div id='d414' class='colors'>
+chocolate3</div>
+<div id='d415' class='colors'>
+chocolate4</div>
+<div id='d416' class='colors'>
+SaddleBrown</div>
+<div id='d417' class='colors'>
+seashell</div>
+<div id='d418' class='colors'>
+seashell1</div>
+<div id='d419' class='colors'>
+sienna4</div>
+<div id='d420' class='colors'>
+sienna</div>
+<div id='d421' class='colors'>
+sienna1</div>
+<div id='d422' class='colors'>
+sienna2</div>
+<div id='d423' class='colors'>
+sienna3</div>
+<div id='d424' class='colors'>
+LightSalmon3</div>
+<div id='d425' class='colors'>
+LightSalmon</div>
+<div id='d426' class='colors'>
+LightSalmon1</div>
+<div id='d427' class='colors'>
+LightSalmon4</div>
+<div id='d428' class='colors'>
+LightSalmon2</div>
+<div id='d429' class='colors'>
+coral</div>
+<div id='d430' class='colors'>
+OrangeRed</div>
+<div id='d431' class='colors'>
+OrangeRed1</div>
+<div id='d432' class='colors'>
+OrangeRed2</div>
+<div id='d433' class='colors'>
+OrangeRed3</div>
+<div id='d434' class='colors'>
+OrangeRed4</div>
+<div id='d435' class='colors'>
+DarkSalmon</div>
+<div id='d436' class='colors'>
+salmon1</div>
+<div id='d437' class='colors'>
+salmon2</div>
+<div id='d438' class='colors'>
+salmon3</div>
+<div id='d439' class='colors'>
+salmon4</div>
+<div id='d440' class='colors'>
+coral1</div>
+<div id='d441' class='colors'>
+coral2</div>
+<div id='d442' class='colors'>
+coral3</div>
+<div id='d443' class='colors'>
+coral4</div>
+<div id='d444' class='colors'>
+tomato4</div>
+<div id='d445' class='colors'>
+tomato</div>
+<div id='d446' class='colors'>
+tomato1</div>
+<div id='d447' class='colors'>
+tomato2</div>
+<div id='d448' class='colors'>
+tomato3</div>
+<div id='d449' class='colors'>
+MistyRose4</div>
+<div id='d450' class='colors'>
+MistyRose2</div>
+<div id='d451' class='colors'>
+MistyRose</div>
+<div id='d452' class='colors'>
+MistyRose1</div>
+<div id='d453' class='colors'>
+salmon</div>
+<div id='d454' class='colors'>
+MistyRose3</div>
+<div id='d455' class='colors'>
+white</div>
+<div id='d456' class='colors'>
+gray100</div>
+<div id='d457' class='colors'>
+grey100</div>
+<div id='d458' class='colors'>
+grey100</div>
+<div id='d459' class='colors'>
+gray99</div>
+<div id='d460' class='colors'>
+grey99</div>
+<div id='d461' class='colors'>
+gray98</div>
+<div id='d462' class='colors'>
+grey98</div>
+<div id='d463' class='colors'>
+gray97</div>
+<div id='d464' class='colors'>
+grey97</div>
+<div id='d465' class='colors'>
+gray96</div>
+<div id='d466' class='colors'>
+grey96</div>
+<div id='d467' class='colors'>
+WhiteSmoke</div>
+<div id='d468' class='colors'>
+gray95</div>
+<div id='d469' class='colors'>
+grey95</div>
+<div id='d470' class='colors'>
+gray94</div>
+<div id='d471' class='colors'>
+grey94</div>
+<div id='d472' class='colors'>
+gray93</div>
+<div id='d473' class='colors'>
+grey93</div>
+<div id='d474' class='colors'>
+gray92</div>
+<div id='d475' class='colors'>
+grey92</div>
+<div id='d476' class='colors'>
+gray91</div>
+<div id='d477' class='colors'>
+grey91</div>
+<div id='d478' class='colors'>
+gray90</div>
+<div id='d479' class='colors'>
+grey90</div>
+<div id='d480' class='colors'>
+gray89</div>
+<div id='d481' class='colors'>
+grey89</div>
+<div id='d482' class='colors'>
+gray88</div>
+<div id='d483' class='colors'>
+grey88</div>
+<div id='d484' class='colors'>
+gray87</div>
+<div id='d485' class='colors'>
+grey87</div>
+<div id='d486' class='colors'>
+gainsboro</div>
+<div id='d487' class='colors'>
+gray86</div>
+<div id='d488' class='colors'>
+grey86</div>
+<div id='d489' class='colors'>
+gray85</div>
+<div id='d490' class='colors'>
+grey85</div>
+<div id='d491' class='colors'>
+gray84</div>
+<div id='d492' class='colors'>
+grey84</div>
+<div id='d493' class='colors'>
+gray83</div>
+<div id='d494' class='colors'>
+grey83</div>
+<div id='d495' class='colors'>
+LightGray</div>
+<div id='d496' class='colors'>
+LightGrey</div>
+<div id='d497' class='colors'>
+gray82</div>
+<div id='d498' class='colors'>
+grey82</div>
+<div id='d499' class='colors'>
+gray81</div>
+<div id='d500' class='colors'>
+grey81</div>
+<div id='d501' class='colors'>
+gray80</div>
+<div id='d502' class='colors'>
+grey80</div>
+<div id='d503' class='colors'>
+gray79</div>
+<div id='d504' class='colors'>
+grey79</div>
+<div id='d505' class='colors'>
+gray78</div>
+<div id='d506' class='colors'>
+grey78</div>
+<div id='d507' class='colors'>
+gray77</div>
+<div id='d508' class='colors'>
+grey77</div>
+<div id='d509' class='colors'>
+gray76</div>
+<div id='d510' class='colors'>
+grey76</div>
+<div id='d511' class='colors'>
+silver</div>
+<div id='d512' class='colors'>
+gray75</div>
+<div id='d513' class='colors'>
+grey75</div>
+<div id='d514' class='colors'>
+gray74</div>
+<div id='d515' class='colors'>
+grey74</div>
+<div id='d516' class='colors'>
+gray73</div>
+<div id='d517' class='colors'>
+grey73</div>
+<div id='d518' class='colors'>
+gray72</div>
+<div id='d519' class='colors'>
+grey72</div>
+<div id='d520' class='colors'>
+gray71</div>
+<div id='d521' class='colors'>
+grey71</div>
+<div id='d522' class='colors'>
+gray70</div>
+<div id='d523' class='colors'>
+grey70</div>
+<div id='d524' class='colors'>
+gray69</div>
+<div id='d525' class='colors'>
+grey69</div>
+<div id='d526' class='colors'>
+gray68</div>
+<div id='d527' class='colors'>
+grey68</div>
+<div id='d528' class='colors'>
+gray67</div>
+<div id='d529' class='colors'>
+grey67</div>
+<div id='d530' class='colors'>
+DarkGray</div>
+<div id='d531' class='colors'>
+DarkGrey</div>
+<div id='d532' class='colors'>
+gray66</div>
+<div id='d533' class='colors'>
+grey66</div>
+<div id='d534' class='colors'>
+gray65</div>
+<div id='d535' class='colors'>
+grey65</div>
+<div id='d536' class='colors'>
+gray64</div>
+<div id='d537' class='colors'>
+grey64</div>
+<div id='d538' class='colors'>
+gray63</div>
+<div id='d539' class='colors'>
+grey63</div>
+<div id='d540' class='colors'>
+gray62</div>
+<div id='d541' class='colors'>
+grey62</div>
+<div id='d542' class='colors'>
+gray61</div>
+<div id='d543' class='colors'>
+grey61</div>
+<div id='d544' class='colors'>
+gray60</div>
+<div id='d545' class='colors'>
+grey60</div>
+<div id='d546' class='colors'>
+gray59</div>
+<div id='d547' class='colors'>
+grey59</div>
+<div id='d548' class='colors'>
+gray58</div>
+<div id='d549' class='colors'>
+grey58</div>
+<div id='d550' class='colors'>
+gray57</div>
+<div id='d551' class='colors'>
+grey57</div>
+<div id='d552' class='colors'>
+gray56</div>
+<div id='d553' class='colors'>
+grey56</div>
+<div id='d554' class='colors'>
+gray55</div>
+<div id='d555' class='colors'>
+grey55</div>
+<div id='d556' class='colors'>
+gray54</div>
+<div id='d557' class='colors'>
+grey54</div>
+<div id='d558' class='colors'>
+gray53</div>
+<div id='d559' class='colors'>
+grey53</div>
+<div id='d560' class='colors'>
+gray52</div>
+<div id='d561' class='colors'>
+grey52</div>
+<div id='d562' class='colors'>
+gray51</div>
+<div id='d563' class='colors'>
+grey51</div>
+<div id='d564' class='colors'>
+fractal</div>
+<div id='d565' class='colors'>
+gray50</div>
+<div id='d566' class='colors'>
+grey50</div>
+<div id='d567' class='colors'>
+gray</div>
+<div id='d568' class='colors'>
+gray49</div>
+<div id='d569' class='colors'>
+grey49</div>
+<div id='d570' class='colors'>
+gray48</div>
+<div id='d571' class='colors'>
+grey48</div>
+<div id='d572' class='colors'>
+gray47</div>
+<div id='d573' class='colors'>
+grey47</div>
+<div id='d574' class='colors'>
+gray46</div>
+<div id='d575' class='colors'>
+grey46</div>
+<div id='d576' class='colors'>
+gray45</div>
+<div id='d577' class='colors'>
+grey45</div>
+<div id='d578' class='colors'>
+gray44</div>
+<div id='d579' class='colors'>
+grey44</div>
+<div id='d580' class='colors'>
+gray43</div>
+<div id='d581' class='colors'>
+grey43</div>
+<div id='d582' class='colors'>
+gray42</div>
+<div id='d583' class='colors'>
+grey42</div>
+<div id='d584' class='colors'>
+DimGray</div>
+<div id='d585' class='colors'>
+DimGrey</div>
+<div id='d586' class='colors'>
+gray41</div>
+<div id='d587' class='colors'>
+grey41</div>
+<div id='d588' class='colors'>
+gray40</div>
+<div id='d589' class='colors'>
+grey40</div>
+<div id='d590' class='colors'>
+gray39</div>
+<div id='d591' class='colors'>
+grey39</div>
+<div id='d592' class='colors'>
+gray38</div>
+<div id='d593' class='colors'>
+grey38</div>
+<div id='d594' class='colors'>
+gray37</div>
+<div id='d595' class='colors'>
+grey37</div>
+<div id='d596' class='colors'>
+gray36</div>
+<div id='d597' class='colors'>
+grey36</div>
+<div id='d598' class='colors'>
+gray35</div>
+<div id='d599' class='colors'>
+grey35</div>
+<div id='d600' class='colors'>
+gray34</div>
+<div id='d601' class='colors'>
+grey34</div>
+<div id='d602' class='colors'>
+gray33</div>
+<div id='d603' class='colors'>
+grey33</div>
+<div id='d604' class='colors'>
+gray32</div>
+<div id='d605' class='colors'>
+grey32</div>
+<div id='d606' class='colors'>
+gray31</div>
+<div id='d607' class='colors'>
+grey31</div>
+<div id='d608' class='colors'>
+gray30</div>
+<div id='d609' class='colors'>
+grey30</div>
+<div id='d610' class='colors'>
+gray29</div>
+<div id='d611' class='colors'>
+grey29</div>
+<div id='d612' class='colors'>
+gray28</div>
+<div id='d613' class='colors'>
+grey28</div>
+<div id='d614' class='colors'>
+gray27</div>
+<div id='d615' class='colors'>
+grey27</div>
+<div id='d616' class='colors'>
+gray26</div>
+<div id='d617' class='colors'>
+grey26</div>
+<div id='d618' class='colors'>
+gray25</div>
+<div id='d619' class='colors'>
+grey25</div>
+<div id='d620' class='colors'>
+gray24</div>
+<div id='d621' class='colors'>
+grey24</div>
+<div id='d622' class='colors'>
+gray23</div>
+<div id='d623' class='colors'>
+grey23</div>
+<div id='d624' class='colors'>
+gray22</div>
+<div id='d625' class='colors'>
+grey22</div>
+<div id='d626' class='colors'>
+gray21</div>
+<div id='d627' class='colors'>
+grey21</div>
+<div id='d628' class='colors'>
+gray20</div>
+<div id='d629' class='colors'>
+grey20</div>
+<div id='d630' class='colors'>
+gray19</div>
+<div id='d631' class='colors'>
+grey19</div>
+<div id='d632' class='colors'>
+gray18</div>
+<div id='d633' class='colors'>
+grey18</div>
+<div id='d634' class='colors'>
+gray17</div>
+<div id='d635' class='colors'>
+grey17</div>
+<div id='d636' class='colors'>
+gray16</div>
+<div id='d637' class='colors'>
+grey16</div>
+<div id='d638' class='colors'>
+gray15</div>
+<div id='d639' class='colors'>
+grey15</div>
+<div id='d640' class='colors'>
+gray14</div>
+<div id='d641' class='colors'>
+grey14</div>
+<div id='d642' class='colors'>
+gray13</div>
+<div id='d643' class='colors'>
+grey13</div>
+<div id='d644' class='colors'>
+gray12</div>
+<div id='d645' class='colors'>
+grey12</div>
+<div id='d646' class='colors'>
+gray11</div>
+<div id='d647' class='colors'>
+grey11</div>
+<div id='d648' class='colors'>
+gray10</div>
+<div id='d649' class='colors'>
+grey10</div>
+<div id='d650' class='colors'>
+gray9</div>
+<div id='d651' class='colors'>
+grey9</div>
+<div id='d652' class='colors'>
+gray8</div>
+<div id='d653' class='colors'>
+grey8</div>
+<div id='d654' class='colors'>
+gray7</div>
+<div id='d655' class='colors'>
+grey7</div>
+<div id='d656' class='colors'>
+gray6</div>
+<div id='d657' class='colors'>
+grey6</div>
+<div id='d658' class='colors'>
+gray5</div>
+<div id='d659' class='colors'>
+grey5</div>
+<div id='d660' class='colors'>
+gray4</div>
+<div id='d661' class='colors'>
+grey4</div>
+<div id='d662' class='colors'>
+gray3</div>
+<div id='d663' class='colors'>
+grey3</div>
+<div id='d664' class='colors'>
+gray2</div>
+<div id='d665' class='colors'>
+grey2</div>
+<div id='d666' class='colors'>
+gray1</div>
+<div id='d667' class='colors'>
+grey1</div>
+<div id='d668' class='colors'>
+black</div>
+<div id='d669' class='colors'>
+gray0</div>
+<div id='d670' class='colors'>
+grey0</div>
+<div id='d671' class='colors'>
+opaque</div>
+<div id='d672' class='colors'>
+none</div>
+<div id='d673' class='colors'>
+transparent</div>
+</div>
+</div>
+
+<div id='colornames'>
+CLICK TO CHOOSE THE COLOR
+</div>
+
+<div id='switches'>
+
+<span id='title'>OPTIONS</span>
+<div id='hexswitch' class='theswitches'>CLICK TO USE HEX KEYS</div>
+<br>
+<div id='infoswitch' class='theswitches'>CLICK TO TOGGLE PALATE INFO<span id='infospace'></span></div>
+<br>
+<div id='backgroundswitch' class='theswitches'>CLICK TO TOGGLE BACKGROUNDS</div>
+<br>
+<div id='preview'></div>
+<div id='nameholder'>YOU WILL CHOOSE:<input id='namespace' type='text'></input></div>
+<br>
+<span id='transparent'>to choose transparent as a color, click <span id='transbutton'>HERE</span></span>
+</div>
+</div>
+<script type='text/javascript' src='jquery-1.6.4.min.js'></script>
+<script type='text/javascript' src='colordict.js'></script>
+
+<script type='text/javascript'>
+
+
+//setup dimensions
+//////////////////
+
+function regolden(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num/ratio)
+ return newnum
+ }
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newval = goldenize(result)
+ propval = newval.toString()+'px'
+ if(propertystr == 'height'){
+ $(idandselectr).css('width', propval)
+ }
+ else if(propertystr == 'width'){
+ $(idandselectr).css('height', propval)
+ }
+ }
+function shrinkwidth(arg){
+ for(var i=0; i < 5; i++){
+ arg = regolden(arg)
+ }
+ division = Math.round(arg)
+ return division
+}
+
+function makecolorswidth(){
+ colorswidth = shrinkwidth(window.innerWidth)
+ $('.colors').css('width', colorswidth.toString()+'px')
+}
+function makecolorsheight(){
+ result = getproperty('.colors', 'width')
+ newval = regolden(result)
+ propval = newval.toString()+'px'
+ $('.colors').css('height', propval)
+}
+//the following function sets up the font sizes
+//inrelation to the size of the hexswitch font
+function setupfonts(){
+ var firstfont = getproperty('#hexswitch', 'font-size')
+ var finalfont = goldenize(firstfont)
+ $('#namespace').css('font-size', finalfont+'px')
+ $('#namespace').css('width', $('#switches').css('width'))
+ var secondfont = getproperty('#namespace', 'font-size')
+ var finalfont = goldenize(secondfont)
+ $('#colornames').css('font-size', finalfont+'px')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ var transfont = regolden(firstfont)
+ $('#transparent').css('font-size', transfont+'px')
+}
+function getcontainerwidth(){
+ basis = $('.colors').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ secondbasis = '2px'
+ secondbasis = parseInt(secondbasis.slice(0,-2))
+ widthval = (secondbasis*8)+(basis*4)+(goldenize(basis)-basis)
+ widthval = widthval.toString()+'px'
+ return widthval
+}
+
+function makecontainerwidth(){
+ var containerwidth = getcontainerwidth()
+ $('#container').css('width',containerwidth)
+ $('#viewarea').css('width',containerwidth)
+}
+
+
+function setupsides()
+ {
+ var basis = $('#container').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ remainder = (100-basis)/2
+ widths = regolden(basis)
+ widths = widths.toString()+'px'
+ lateralbasis = regolden(remainder)
+ leftside = toString(lateralbasis)+'%'
+ rightside = toString(100-lateralbasis)+'%'
+ $('#colornames').css('left', leftside)
+ $('#switches').css({'width': widths, 'left': rightside})
+ }
+function previewdimensions(){
+ first = $('#switches').css('width')
+ first = parseInt(first.slice(0,-2))
+ width = regolden(first)
+ height = regolden(width)
+ width = width.toString()+'px'
+ height = height.toString()+'px'
+ $('#preview').css({'width':width, 'height':height})
+}
+function setupdimensions(){
+makecolorswidth()
+setupfonts()
+makecolorsheight()
+makecontainerwidth()
+setupsides()
+makegolden('#switches','width')
+previewdimensions()
+}
+setupdimensions()
+$(window).resize(function(){setupdimensions()})
+//$(window).resize()(function(){setupdimensions()})
+
+//BEGIN STYLINGS//
+//////////////////
+
+
+var old = {};
+function hovercss(sel, uno){
+
+ var chng = {};
+ chng['color'] = 'white';
+ chng['text-shadow'] = 'black 1px 2px';
+ chng['background-image'] = 'url(http://asdf.us/im/19/gradient_whitegray80_1321305183_1321305241_pepper_1321333403_pepper.jpg)';
+ if(uno == 'over'){
+ for(var key in chng){
+ old[key] = $('#'+sel).css(key)
+ }
+ for(var key in chng){
+ $('#'+sel).css(key, chng[key])
+ }
+ }
+ if(uno == 'out'){
+ for(var key in old){
+ $('#'+sel).css(key, old[key])
+ }
+ }
+}
+$('.theswitches').hover(function(){hovercss(this.id, 'over')}, function(){hovercss(this.id, 'out')})
+
+var transcss = {
+ 'color':'#141414','box-shadow':'10px 10px 5px #141414',
+ 'background-color':'#D1D1D1','color':'#141414',
+ 'border-width':'2px','border-style':'outset','cursor':'pointer'}
+$('#transbutton').css(transcss)
+var hovertrans = {
+ 'background-color':'DarkGrey','color':'#383838','box-shadow':'5px 5px 2px #141414'
+}
+$('#transbutton').hover(function(){$('#transbutton').css(hovertrans)},function(){$('#transbutton').css(transcss)})
+//threewayselector for what goes in the divs
+infostate = 1
+function switchinfo()
+ {
+ if(infostate == 0)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(divtoname[divlist[i]])
+ };
+ infostate = 1
+ $('#infospace').html('(NAMES)');
+ }
+ else if(infostate == 1)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html("")
+ };
+ infostate = 2
+ $('#infospace').html('(NONE)');
+ }
+ else if(infostate == 2)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(nametohex[divtoname[divlist[i]]])
+ };
+ infostate = 0
+ $('#infospace').html('(HEXES)');
+ }
+ }
+$('#infoswitch').hover(function(){$('#infospace').show()}, function(){$('#infospace').hide('slow')} )
+$('#infoswitch').click(function(){switchinfo()})
+
+
+backgroundstate = 2;
+function switchbackground()
+ {
+ if(backgroundstate == 1)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image','url(http://dump.fm/static/img/bg.dither.gif)')
+ backgroundstate = 2;
+ $('#colornames').css('color', 'white')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ }
+ else if(backgroundstate == 2)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image', 'none')
+ backgroundstate = 0
+ }
+ else if(backgroundstate == 0)
+ {
+ $('#colorpicker').css('background-color', 'white')
+ $('#colorpicker').css('background-image', 'none')
+ $('#colornames').css('color', 'grey')
+ backgroundstate = 1
+ }
+ }
+
+$('#backgroundswitch').click(function(){switchbackground()})
+
+//takes a div name and returns a colorname
+
+function showcolorname(divstr)
+
+ {
+ colorname = divtoname['#'+divstr]
+ hex = nametohex[colorname]
+ imname = hextoname[hex]
+ if (hexes == true)
+ {
+ imname = hex
+ }
+
+ return imname
+ }
+function bigname(divstr)
+ {
+ colorname = showcolorname(divstr)
+ $('#colornames').html(colorname)
+
+ }
+function writeit(text)
+ {
+ $('#colornames').append(text)
+ }
+function makebig(divstr)
+ {
+ firstheight = $('#'+divstr).height()
+ newheight = goldenize(firstheight)
+ $('#'+divstr).height(newheight)
+ }
+function makesmall(divstr)
+ {
+ oldheight = $('.colors').height()
+ $('#'+divstr).height(oldheight)
+ }
+var choice;
+$('.colors').hover(function() {
+ bigname(this.id);
+// makebig(this.id);
+// makegolden('#'+this.id, 'height')},
+//function(){
+// makesmall(this.id);
+// makegolden('#'+this.id, 'height')
+});
+$('.colors').mouseover(function(){
+ if(this.id != 'd0'){
+ makebig(this.id);
+ makegolden('#'+this.id, 'height')
+ }})
+$('.colors').mouseout(function(){
+ makesmall(this.id);
+ makegolden('#'+this.id,'height');
+ })
+$(".colors").hover(function(){
+$('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+ });
+$('.colors').css('margin-top', '2px')
+var hexes = false
+function hexswitch()
+ {
+ if(hexes == false)
+ {
+ $('#hexswitch').html('CLICK TO USE COLOR NAMES')
+ hexes = true;
+ var nameval = $('#namespace').val()
+ $('#namespace').val(nametohex[nameval])
+ }
+
+ else
+ {
+ $('#hexswitch').html('CLICK TO USE HEX KEYS')
+ hexes = false;
+ var nameval = $('#namespace').val()
+ $('#namespace').val(hextoname[nameval])
+ }
+ }
+$('#hexswitch').click(function(){hexswitch()})
+
+$('.colors').click(function(){
+ putitin()
+ })
+
+function putitin()
+ {
+ thecolor = $('#colornames').html()
+ $('#namespace').val(thecolor)
+ if(hexes == false){
+ $('#preview').css({'background-color': nametohex[thecolor], 'border-style':'none'})
+ }
+ else{
+ $('#preview').css('background-color', thecolor)
+ }
+
+ }
+function transparent()
+ {
+ $('#namespace').val('transparent');
+ $('#preview').css({'background-color':'transparent','border-style':'dashed','border-width':'2px'})
+ }
+$('#transbutton').click(function(){transparent()})
+
+//$('#switches').bind('mousemove',function(e){
+// $("#colornames").html(" e.pageY: " + e.pageY);
+//});
+vt.start("viewarea", "container");
+
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/colors/minimap.html b/frontend/imgrid/colors/colors/minimap.html
new file mode 100755
index 0000000..5a5291e
--- /dev/null
+++ b/frontend/imgrid/colors/colors/minimap.html
@@ -0,0 +1,3891 @@
+<html>
+<head>
+
+<style type='text/css'>
+
+body
+{
+margin:0;
+}
+
+#colorpicker
+{
+
+width:100%;
+font-family:helvetica;
+font-size:10px;
+//background-color: gray;
+//background-image: url("http://asdf.us/im/6f/gradient_bgdither_1321255670_pepper.gif");
+background-color: black;
+background-image: url("http://dump.fm/static/img/bg.dither.gif")
+
+}
+
+#container div
+{
+text-align:left;
+display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+min-height: 30px;
+zoom: 1;
+word-wrap: break-word;
+*display: inline;
+cursor:pointer;
+}
+
+#container
+{
+margin:0 auto;
+width:31%;
+padding-top:100px;
+padding-right:10px;
+padding-left:10px;
+text-align:center;
+overflow:auto;
+height:1000px;
+}
+
+#colornames
+{
+color:white;
+position:fixed;
+font-size:50px;
+top:50px;
+left:2%;
+width:400px;
+}
+
+#switches
+ {
+ position:fixed;
+ top:20px;
+ right:1%;
+ height:400px;
+ width:300px;
+ font-size:20px;
+ border-style: groove;
+ border-width: 4px;
+ background-color:gray;
+ padding:2px;
+ box-shadow: 10px 10px 5px #141414;
+ }
+
+#infoswitch, #hexswitch, #backgroundswitch
+ {
+ background-image:url(http://asdf.us/im/58/gradient_whitegray80_1321305183_1321305241_pepper.jpg);
+ cursor:pointer;
+ }
+#preview
+ {
+ height:150px;
+ }
+
+
+#holder
+ {
+ float:bottom;
+ }
+
+#transparent
+ {
+ font-size:12px;
+ }
+#namespace
+ {
+ width:inherit;
+ }
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{
+height:30;
+width:10px;
+}
+</style></head><body>
+<div id='colorpicker'>
+<div id='container'>
+<div id='d0' class='colors'>
+snow</div>
+<div id='d1' class='colors'>
+snow1</div>
+<div id='d2' class='colors'>
+snow2</div>
+<div id='d3' class='colors'>
+RosyBrown1</div>
+<div id='d4' class='colors'>
+RosyBrown2</div>
+<div id='d5' class='colors'>
+snow3</div>
+<div id='d6' class='colors'>
+LightCoral</div>
+<div id='d7' class='colors'>
+IndianRed1</div>
+<div id='d8' class='colors'>
+RosyBrown3</div>
+<div id='d9' class='colors'>
+IndianRed2</div>
+<div id='d10' class='colors'>
+RosyBrown</div>
+<div id='d11' class='colors'>
+brown1</div>
+<div id='d12' class='colors'>
+firebrick1</div>
+<div id='d13' class='colors'>
+brown2</div>
+<div id='d14' class='colors'>
+IndianRed</div>
+<div id='d15' class='colors'>
+IndianRed3</div>
+<div id='d16' class='colors'>
+firebrick2</div>
+<div id='d17' class='colors'>
+snow4</div>
+<div id='d18' class='colors'>
+brown3</div>
+<div id='d19' class='colors'>
+red</div>
+<div id='d20' class='colors'>
+red1</div>
+<div id='d21' class='colors'>
+RosyBrown4</div>
+<div id='d22' class='colors'>
+firebrick3</div>
+<div id='d23' class='colors'>
+red2</div>
+<div id='d24' class='colors'>
+firebrick</div>
+<div id='d25' class='colors'>
+brown</div>
+<div id='d26' class='colors'>
+red3</div>
+<div id='d27' class='colors'>
+IndianRed4</div>
+<div id='d28' class='colors'>
+brown4</div>
+<div id='d29' class='colors'>
+firebrick4</div>
+<div id='d30' class='colors'>
+DarkRed</div>
+<div id='d31' class='colors'>
+red4</div>
+<div id='d32' class='colors'>
+maroon</div>
+<div id='d33' class='colors'>
+LightPink1</div>
+<div id='d34' class='colors'>
+LightPink3</div>
+<div id='d35' class='colors'>
+LightPink4</div>
+<div id='d36' class='colors'>
+LightPink2</div>
+<div id='d37' class='colors'>
+LightPink</div>
+<div id='d38' class='colors'>
+pink</div>
+<div id='d39' class='colors'>
+crimson</div>
+<div id='d40' class='colors'>
+pink1</div>
+<div id='d41' class='colors'>
+pink2</div>
+<div id='d42' class='colors'>
+pink3</div>
+<div id='d43' class='colors'>
+pink4</div>
+<div id='d44' class='colors'>
+PaleVioletRed4</div>
+<div id='d45' class='colors'>
+PaleVioletRed</div>
+<div id='d46' class='colors'>
+PaleVioletRed2</div>
+<div id='d47' class='colors'>
+PaleVioletRed1</div>
+<div id='d48' class='colors'>
+PaleVioletRed3</div>
+<div id='d49' class='colors'>
+LavenderBlush</div>
+<div id='d50' class='colors'>
+LavenderBlush1</div>
+<div id='d51' class='colors'>
+LavenderBlush3</div>
+<div id='d52' class='colors'>
+LavenderBlush2</div>
+<div id='d53' class='colors'>
+LavenderBlush4</div>
+<div id='d54' class='colors'>
+maroon</div>
+<div id='d55' class='colors'>
+HotPink3</div>
+<div id='d56' class='colors'>
+VioletRed3</div>
+<div id='d57' class='colors'>
+VioletRed1</div>
+<div id='d58' class='colors'>
+VioletRed2</div>
+<div id='d59' class='colors'>
+VioletRed4</div>
+<div id='d60' class='colors'>
+HotPink2</div>
+<div id='d61' class='colors'>
+HotPink1</div>
+<div id='d62' class='colors'>
+HotPink4</div>
+<div id='d63' class='colors'>
+HotPink</div>
+<div id='d64' class='colors'>
+DeepPink</div>
+<div id='d65' class='colors'>
+DeepPink1</div>
+<div id='d66' class='colors'>
+DeepPink2</div>
+<div id='d67' class='colors'>
+DeepPink3</div>
+<div id='d68' class='colors'>
+DeepPink4</div>
+<div id='d69' class='colors'>
+maroon1</div>
+<div id='d70' class='colors'>
+maroon2</div>
+<div id='d71' class='colors'>
+maroon3</div>
+<div id='d72' class='colors'>
+maroon4</div>
+<div id='d73' class='colors'>
+MediumVioletRed</div>
+<div id='d74' class='colors'>
+VioletRed</div>
+<div id='d75' class='colors'>
+orchid2</div>
+<div id='d76' class='colors'>
+orchid</div>
+<div id='d77' class='colors'>
+orchid1</div>
+<div id='d78' class='colors'>
+orchid3</div>
+<div id='d79' class='colors'>
+orchid4</div>
+<div id='d80' class='colors'>
+thistle1</div>
+<div id='d81' class='colors'>
+thistle2</div>
+<div id='d82' class='colors'>
+plum1</div>
+<div id='d83' class='colors'>
+plum2</div>
+<div id='d84' class='colors'>
+thistle</div>
+<div id='d85' class='colors'>
+thistle3</div>
+<div id='d86' class='colors'>
+plum</div>
+<div id='d87' class='colors'>
+violet</div>
+<div id='d88' class='colors'>
+plum3</div>
+<div id='d89' class='colors'>
+thistle4</div>
+<div id='d90' class='colors'>
+fuchsia</div>
+<div id='d91' class='colors'>
+magenta</div>
+<div id='d92' class='colors'>
+magenta1</div>
+<div id='d93' class='colors'>
+plum4</div>
+<div id='d94' class='colors'>
+magenta2</div>
+<div id='d95' class='colors'>
+magenta3</div>
+<div id='d96' class='colors'>
+DarkMagenta</div>
+<div id='d97' class='colors'>
+magenta4</div>
+<div id='d98' class='colors'>
+purple</div>
+<div id='d99' class='colors'>
+MediumOrchid</div>
+<div id='d100' class='colors'>
+MediumOrchid1</div>
+<div id='d101' class='colors'>
+MediumOrchid2</div>
+<div id='d102' class='colors'>
+MediumOrchid3</div>
+<div id='d103' class='colors'>
+MediumOrchid4</div>
+<div id='d104' class='colors'>
+DarkViolet</div>
+<div id='d105' class='colors'>
+DarkOrchid</div>
+<div id='d106' class='colors'>
+DarkOrchid1</div>
+<div id='d107' class='colors'>
+DarkOrchid3</div>
+<div id='d108' class='colors'>
+DarkOrchid2</div>
+<div id='d109' class='colors'>
+DarkOrchid4</div>
+<div id='d110' class='colors'>
+purple</div>
+<div id='d111' class='colors'>
+indigo</div>
+<div id='d112' class='colors'>
+BlueViolet</div>
+<div id='d113' class='colors'>
+purple2</div>
+<div id='d114' class='colors'>
+purple3</div>
+<div id='d115' class='colors'>
+purple4</div>
+<div id='d116' class='colors'>
+purple1</div>
+<div id='d117' class='colors'>
+MediumPurple</div>
+<div id='d118' class='colors'>
+MediumPurple1</div>
+<div id='d119' class='colors'>
+MediumPurple2</div>
+<div id='d120' class='colors'>
+MediumPurple3</div>
+<div id='d121' class='colors'>
+MediumPurple4</div>
+<div id='d122' class='colors'>
+DarkSlateBlue</div>
+<div id='d123' class='colors'>
+LightSlateBlue</div>
+<div id='d124' class='colors'>
+MediumSlateBlue</div>
+<div id='d125' class='colors'>
+SlateBlue</div>
+<div id='d126' class='colors'>
+SlateBlue1</div>
+<div id='d127' class='colors'>
+SlateBlue2</div>
+<div id='d128' class='colors'>
+SlateBlue3</div>
+<div id='d129' class='colors'>
+SlateBlue4</div>
+<div id='d130' class='colors'>
+GhostWhite</div>
+<div id='d131' class='colors'>
+lavender</div>
+<div id='d132' class='colors'>
+blue</div>
+<div id='d133' class='colors'>
+blue1</div>
+<div id='d134' class='colors'>
+blue2</div>
+<div id='d135' class='colors'>
+blue3</div>
+<div id='d136' class='colors'>
+MediumBlue</div>
+<div id='d137' class='colors'>
+blue4</div>
+<div id='d138' class='colors'>
+DarkBlue</div>
+<div id='d139' class='colors'>
+MidnightBlue</div>
+<div id='d140' class='colors'>
+navy</div>
+<div id='d141' class='colors'>
+NavyBlue</div>
+<div id='d142' class='colors'>
+RoyalBlue</div>
+<div id='d143' class='colors'>
+RoyalBlue1</div>
+<div id='d144' class='colors'>
+RoyalBlue2</div>
+<div id='d145' class='colors'>
+RoyalBlue3</div>
+<div id='d146' class='colors'>
+RoyalBlue4</div>
+<div id='d147' class='colors'>
+CornflowerBlue</div>
+<div id='d148' class='colors'>
+LightSteelBlue</div>
+<div id='d149' class='colors'>
+LightSteelBlue1</div>
+<div id='d150' class='colors'>
+LightSteelBlue2</div>
+<div id='d151' class='colors'>
+LightSteelBlue3</div>
+<div id='d152' class='colors'>
+LightSteelBlue4</div>
+<div id='d153' class='colors'>
+SlateGray4</div>
+<div id='d154' class='colors'>
+SlateGray1</div>
+<div id='d155' class='colors'>
+SlateGray2</div>
+<div id='d156' class='colors'>
+SlateGray3</div>
+<div id='d157' class='colors'>
+LightSlateGray</div>
+<div id='d158' class='colors'>
+LightSlateGrey</div>
+<div id='d159' class='colors'>
+SlateGray</div>
+<div id='d160' class='colors'>
+SlateGrey</div>
+<div id='d161' class='colors'>
+DodgerBlue</div>
+<div id='d162' class='colors'>
+DodgerBlue1</div>
+<div id='d163' class='colors'>
+DodgerBlue2</div>
+<div id='d164' class='colors'>
+DodgerBlue4</div>
+<div id='d165' class='colors'>
+DodgerBlue3</div>
+<div id='d166' class='colors'>
+AliceBlue</div>
+<div id='d167' class='colors'>
+SteelBlue4</div>
+<div id='d168' class='colors'>
+SteelBlue</div>
+<div id='d169' class='colors'>
+SteelBlue1</div>
+<div id='d170' class='colors'>
+SteelBlue2</div>
+<div id='d171' class='colors'>
+SteelBlue3</div>
+<div id='d172' class='colors'>
+SkyBlue4</div>
+<div id='d173' class='colors'>
+SkyBlue1</div>
+<div id='d174' class='colors'>
+SkyBlue2</div>
+<div id='d175' class='colors'>
+SkyBlue3</div>
+<div id='d176' class='colors'>
+LightSkyBlue</div>
+<div id='d177' class='colors'>
+LightSkyBlue4</div>
+<div id='d178' class='colors'>
+LightSkyBlue1</div>
+<div id='d179' class='colors'>
+LightSkyBlue2</div>
+<div id='d180' class='colors'>
+LightSkyBlue3</div>
+<div id='d181' class='colors'>
+SkyBlue</div>
+<div id='d182' class='colors'>
+LightBlue3</div>
+<div id='d183' class='colors'>
+DeepSkyBlue</div>
+<div id='d184' class='colors'>
+DeepSkyBlue1</div>
+<div id='d185' class='colors'>
+DeepSkyBlue2</div>
+<div id='d186' class='colors'>
+DeepSkyBlue4</div>
+<div id='d187' class='colors'>
+DeepSkyBlue3</div>
+<div id='d188' class='colors'>
+LightBlue1</div>
+<div id='d189' class='colors'>
+LightBlue2</div>
+<div id='d190' class='colors'>
+LightBlue</div>
+<div id='d191' class='colors'>
+LightBlue4</div>
+<div id='d192' class='colors'>
+PowderBlue</div>
+<div id='d193' class='colors'>
+CadetBlue1</div>
+<div id='d194' class='colors'>
+CadetBlue2</div>
+<div id='d195' class='colors'>
+CadetBlue3</div>
+<div id='d196' class='colors'>
+CadetBlue4</div>
+<div id='d197' class='colors'>
+turquoise1</div>
+<div id='d198' class='colors'>
+turquoise2</div>
+<div id='d199' class='colors'>
+turquoise3</div>
+<div id='d200' class='colors'>
+turquoise4</div>
+<div id='d201' class='colors'>
+cadet blue</div>
+<div id='d202' class='colors'>
+CadetBlue</div>
+<div id='d203' class='colors'>
+DarkTurquoise</div>
+<div id='d204' class='colors'>
+azure</div>
+<div id='d205' class='colors'>
+azure1</div>
+<div id='d206' class='colors'>
+LightCyan</div>
+<div id='d207' class='colors'>
+LightCyan1</div>
+<div id='d208' class='colors'>
+azure2</div>
+<div id='d209' class='colors'>
+LightCyan2</div>
+<div id='d210' class='colors'>
+PaleTurquoise1</div>
+<div id='d211' class='colors'>
+PaleTurquoise</div>
+<div id='d212' class='colors'>
+PaleTurquoise2</div>
+<div id='d213' class='colors'>
+DarkSlateGray1</div>
+<div id='d214' class='colors'>
+azure3</div>
+<div id='d215' class='colors'>
+LightCyan3</div>
+<div id='d216' class='colors'>
+DarkSlateGray2</div>
+<div id='d217' class='colors'>
+PaleTurquoise3</div>
+<div id='d218' class='colors'>
+DarkSlateGray3</div>
+<div id='d219' class='colors'>
+azure4</div>
+<div id='d220' class='colors'>
+LightCyan4</div>
+<div id='d221' class='colors'>
+aqua</div>
+<div id='d222' class='colors'>
+cyan</div>
+<div id='d223' class='colors'>
+cyan1</div>
+<div id='d224' class='colors'>
+PaleTurquoise4</div>
+<div id='d225' class='colors'>
+cyan2</div>
+<div id='d226' class='colors'>
+DarkSlateGray4</div>
+<div id='d227' class='colors'>
+cyan3</div>
+<div id='d228' class='colors'>
+cyan4</div>
+<div id='d229' class='colors'>
+DarkCyan</div>
+<div id='d230' class='colors'>
+teal</div>
+<div id='d231' class='colors'>
+DarkSlateGray</div>
+<div id='d232' class='colors'>
+DarkSlateGrey</div>
+<div id='d233' class='colors'>
+MediumTurquoise</div>
+<div id='d234' class='colors'>
+LightSeaGreen</div>
+<div id='d235' class='colors'>
+turquoise</div>
+<div id='d236' class='colors'>
+aquamarine4</div>
+<div id='d237' class='colors'>
+aquamarine</div>
+<div id='d238' class='colors'>
+aquamarine1</div>
+<div id='d239' class='colors'>
+aquamarine2</div>
+<div id='d240' class='colors'>
+aquamarine3</div>
+<div id='d241' class='colors'>
+MediumAquamarine</div>
+<div id='d242' class='colors'>
+MediumSpringGreen</div>
+<div id='d243' class='colors'>
+MintCream</div>
+<div id='d244' class='colors'>
+SpringGreen</div>
+<div id='d245' class='colors'>
+SpringGreen1</div>
+<div id='d246' class='colors'>
+SpringGreen2</div>
+<div id='d247' class='colors'>
+SpringGreen3</div>
+<div id='d248' class='colors'>
+SpringGreen4</div>
+<div id='d249' class='colors'>
+MediumSeaGreen</div>
+<div id='d250' class='colors'>
+SeaGreen</div>
+<div id='d251' class='colors'>
+SeaGreen3</div>
+<div id='d252' class='colors'>
+SeaGreen1</div>
+<div id='d253' class='colors'>
+SeaGreen4</div>
+<div id='d254' class='colors'>
+SeaGreen2</div>
+<div id='d255' class='colors'>
+MediumForestGreen</div>
+<div id='d256' class='colors'>
+honeydew</div>
+<div id='d257' class='colors'>
+honeydew1</div>
+<div id='d258' class='colors'>
+honeydew2</div>
+<div id='d259' class='colors'>
+DarkSeaGreen1</div>
+<div id='d260' class='colors'>
+DarkSeaGreen2</div>
+<div id='d261' class='colors'>
+PaleGreen1</div>
+<div id='d262' class='colors'>
+PaleGreen</div>
+<div id='d263' class='colors'>
+honeydew3</div>
+<div id='d264' class='colors'>
+LightGreen</div>
+<div id='d265' class='colors'>
+PaleGreen2</div>
+<div id='d266' class='colors'>
+DarkSeaGreen3</div>
+<div id='d267' class='colors'>
+DarkSeaGreen</div>
+<div id='d268' class='colors'>
+PaleGreen3</div>
+<div id='d269' class='colors'>
+honeydew4</div>
+<div id='d270' class='colors'>
+green1</div>
+<div id='d271' class='colors'>
+lime</div>
+<div id='d272' class='colors'>
+LimeGreen</div>
+<div id='d273' class='colors'>
+DarkSeaGreen4</div>
+<div id='d274' class='colors'>
+green2</div>
+<div id='d275' class='colors'>
+PaleGreen4</div>
+<div id='d276' class='colors'>
+green3</div>
+<div id='d277' class='colors'>
+ForestGreen</div>
+<div id='d278' class='colors'>
+green4</div>
+<div id='d279' class='colors'>
+green</div>
+<div id='d280' class='colors'>
+DarkGreen</div>
+<div id='d281' class='colors'>
+LawnGreen</div>
+<div id='d282' class='colors'>
+chartreuse</div>
+<div id='d283' class='colors'>
+chartreuse1</div>
+<div id='d284' class='colors'>
+chartreuse2</div>
+<div id='d285' class='colors'>
+chartreuse3</div>
+<div id='d286' class='colors'>
+chartreuse4</div>
+<div id='d287' class='colors'>
+GreenYellow</div>
+<div id='d288' class='colors'>
+DarkOliveGreen3</div>
+<div id='d289' class='colors'>
+DarkOliveGreen1</div>
+<div id='d290' class='colors'>
+DarkOliveGreen2</div>
+<div id='d291' class='colors'>
+DarkOliveGreen4</div>
+<div id='d292' class='colors'>
+DarkOliveGreen</div>
+<div id='d293' class='colors'>
+OliveDrab</div>
+<div id='d294' class='colors'>
+OliveDrab1</div>
+<div id='d295' class='colors'>
+OliveDrab2</div>
+<div id='d296' class='colors'>
+OliveDrab3</div>
+<div id='d297' class='colors'>
+YellowGreen</div>
+<div id='d298' class='colors'>
+OliveDrab4</div>
+<div id='d299' class='colors'>
+ivory</div>
+<div id='d300' class='colors'>
+ivory1</div>
+<div id='d301' class='colors'>
+LightYellow</div>
+<div id='d302' class='colors'>
+LightYellow1</div>
+<div id='d303' class='colors'>
+beige</div>
+<div id='d304' class='colors'>
+ivory2</div>
+<div id='d305' class='colors'>
+LightGoldenrodYellow</div>
+<div id='d306' class='colors'>
+LightYellow2</div>
+<div id='d307' class='colors'>
+ivory3</div>
+<div id='d308' class='colors'>
+LightYellow3</div>
+<div id='d309' class='colors'>
+ivory4</div>
+<div id='d310' class='colors'>
+LightYellow4</div>
+<div id='d311' class='colors'>
+yellow</div>
+<div id='d312' class='colors'>
+yellow1</div>
+<div id='d313' class='colors'>
+yellow2</div>
+<div id='d314' class='colors'>
+yellow3</div>
+<div id='d315' class='colors'>
+yellow4</div>
+<div id='d316' class='colors'>
+olive</div>
+<div id='d317' class='colors'>
+DarkKhaki</div>
+<div id='d318' class='colors'>
+khaki2</div>
+<div id='d319' class='colors'>
+LemonChiffon4</div>
+<div id='d320' class='colors'>
+khaki1</div>
+<div id='d321' class='colors'>
+khaki3</div>
+<div id='d322' class='colors'>
+khaki4</div>
+<div id='d323' class='colors'>
+PaleGoldenrod</div>
+<div id='d324' class='colors'>
+LemonChiffon</div>
+<div id='d325' class='colors'>
+LemonChiffon1</div>
+<div id='d326' class='colors'>
+khaki</div>
+<div id='d327' class='colors'>
+LemonChiffon3</div>
+<div id='d328' class='colors'>
+LemonChiffon2</div>
+<div id='d329' class='colors'>
+MediumGoldenRod</div>
+<div id='d330' class='colors'>
+cornsilk4</div>
+<div id='d331' class='colors'>
+gold</div>
+<div id='d332' class='colors'>
+gold1</div>
+<div id='d333' class='colors'>
+gold2</div>
+<div id='d334' class='colors'>
+gold3</div>
+<div id='d335' class='colors'>
+gold4</div>
+<div id='d336' class='colors'>
+LightGoldenrod</div>
+<div id='d337' class='colors'>
+LightGoldenrod4</div>
+<div id='d338' class='colors'>
+LightGoldenrod1</div>
+<div id='d339' class='colors'>
+LightGoldenrod3</div>
+<div id='d340' class='colors'>
+LightGoldenrod2</div>
+<div id='d341' class='colors'>
+cornsilk3</div>
+<div id='d342' class='colors'>
+cornsilk2</div>
+<div id='d343' class='colors'>
+cornsilk</div>
+<div id='d344' class='colors'>
+cornsilk1</div>
+<div id='d345' class='colors'>
+goldenrod</div>
+<div id='d346' class='colors'>
+goldenrod1</div>
+<div id='d347' class='colors'>
+goldenrod2</div>
+<div id='d348' class='colors'>
+goldenrod3</div>
+<div id='d349' class='colors'>
+goldenrod4</div>
+<div id='d350' class='colors'>
+DarkGoldenrod</div>
+<div id='d351' class='colors'>
+DarkGoldenrod1</div>
+<div id='d352' class='colors'>
+DarkGoldenrod2</div>
+<div id='d353' class='colors'>
+DarkGoldenrod3</div>
+<div id='d354' class='colors'>
+DarkGoldenrod4</div>
+<div id='d355' class='colors'>
+FloralWhite</div>
+<div id='d356' class='colors'>
+wheat2</div>
+<div id='d357' class='colors'>
+OldLace</div>
+<div id='d358' class='colors'>
+wheat</div>
+<div id='d359' class='colors'>
+wheat1</div>
+<div id='d360' class='colors'>
+wheat3</div>
+<div id='d361' class='colors'>
+orange</div>
+<div id='d362' class='colors'>
+orange1</div>
+<div id='d363' class='colors'>
+orange2</div>
+<div id='d364' class='colors'>
+orange3</div>
+<div id='d365' class='colors'>
+orange4</div>
+<div id='d366' class='colors'>
+wheat4</div>
+<div id='d367' class='colors'>
+moccasin</div>
+<div id='d368' class='colors'>
+PapayaWhip</div>
+<div id='d369' class='colors'>
+NavajoWhite3</div>
+<div id='d370' class='colors'>
+BlanchedAlmond</div>
+<div id='d371' class='colors'>
+NavajoWhite</div>
+<div id='d372' class='colors'>
+NavajoWhite1</div>
+<div id='d373' class='colors'>
+NavajoWhite2</div>
+<div id='d374' class='colors'>
+NavajoWhite4</div>
+<div id='d375' class='colors'>
+AntiqueWhite4</div>
+<div id='d376' class='colors'>
+AntiqueWhite</div>
+<div id='d377' class='colors'>
+tan</div>
+<div id='d378' class='colors'>
+bisque4</div>
+<div id='d379' class='colors'>
+burlywood</div>
+<div id='d380' class='colors'>
+AntiqueWhite2</div>
+<div id='d381' class='colors'>
+burlywood1</div>
+<div id='d382' class='colors'>
+burlywood3</div>
+<div id='d383' class='colors'>
+burlywood2</div>
+<div id='d384' class='colors'>
+AntiqueWhite1</div>
+<div id='d385' class='colors'>
+burlywood4</div>
+<div id='d386' class='colors'>
+AntiqueWhite3</div>
+<div id='d387' class='colors'>
+DarkOrange</div>
+<div id='d388' class='colors'>
+bisque2</div>
+<div id='d389' class='colors'>
+bisque</div>
+<div id='d390' class='colors'>
+bisque1</div>
+<div id='d391' class='colors'>
+bisque3</div>
+<div id='d392' class='colors'>
+DarkOrange1</div>
+<div id='d393' class='colors'>
+linen</div>
+<div id='d394' class='colors'>
+DarkOrange2</div>
+<div id='d395' class='colors'>
+DarkOrange3</div>
+<div id='d396' class='colors'>
+DarkOrange4</div>
+<div id='d397' class='colors'>
+peru</div>
+<div id='d398' class='colors'>
+tan1</div>
+<div id='d399' class='colors'>
+tan2</div>
+<div id='d400' class='colors'>
+tan3</div>
+<div id='d401' class='colors'>
+tan4</div>
+<div id='d402' class='colors'>
+PeachPuff</div>
+<div id='d403' class='colors'>
+PeachPuff1</div>
+<div id='d404' class='colors'>
+PeachPuff4</div>
+<div id='d405' class='colors'>
+PeachPuff2</div>
+<div id='d406' class='colors'>
+PeachPuff3</div>
+<div id='d407' class='colors'>
+SandyBrown</div>
+<div id='d408' class='colors'>
+seashell4</div>
+<div id='d409' class='colors'>
+seashell2</div>
+<div id='d410' class='colors'>
+seashell3</div>
+<div id='d411' class='colors'>
+chocolate</div>
+<div id='d412' class='colors'>
+chocolate1</div>
+<div id='d413' class='colors'>
+chocolate2</div>
+<div id='d414' class='colors'>
+chocolate3</div>
+<div id='d415' class='colors'>
+chocolate4</div>
+<div id='d416' class='colors'>
+SaddleBrown</div>
+<div id='d417' class='colors'>
+seashell</div>
+<div id='d418' class='colors'>
+seashell1</div>
+<div id='d419' class='colors'>
+sienna4</div>
+<div id='d420' class='colors'>
+sienna</div>
+<div id='d421' class='colors'>
+sienna1</div>
+<div id='d422' class='colors'>
+sienna2</div>
+<div id='d423' class='colors'>
+sienna3</div>
+<div id='d424' class='colors'>
+LightSalmon3</div>
+<div id='d425' class='colors'>
+LightSalmon</div>
+<div id='d426' class='colors'>
+LightSalmon1</div>
+<div id='d427' class='colors'>
+LightSalmon4</div>
+<div id='d428' class='colors'>
+LightSalmon2</div>
+<div id='d429' class='colors'>
+coral</div>
+<div id='d430' class='colors'>
+OrangeRed</div>
+<div id='d431' class='colors'>
+OrangeRed1</div>
+<div id='d432' class='colors'>
+OrangeRed2</div>
+<div id='d433' class='colors'>
+OrangeRed3</div>
+<div id='d434' class='colors'>
+OrangeRed4</div>
+<div id='d435' class='colors'>
+DarkSalmon</div>
+<div id='d436' class='colors'>
+salmon1</div>
+<div id='d437' class='colors'>
+salmon2</div>
+<div id='d438' class='colors'>
+salmon3</div>
+<div id='d439' class='colors'>
+salmon4</div>
+<div id='d440' class='colors'>
+coral1</div>
+<div id='d441' class='colors'>
+coral2</div>
+<div id='d442' class='colors'>
+coral3</div>
+<div id='d443' class='colors'>
+coral4</div>
+<div id='d444' class='colors'>
+tomato4</div>
+<div id='d445' class='colors'>
+tomato</div>
+<div id='d446' class='colors'>
+tomato1</div>
+<div id='d447' class='colors'>
+tomato2</div>
+<div id='d448' class='colors'>
+tomato3</div>
+<div id='d449' class='colors'>
+MistyRose4</div>
+<div id='d450' class='colors'>
+MistyRose2</div>
+<div id='d451' class='colors'>
+MistyRose</div>
+<div id='d452' class='colors'>
+MistyRose1</div>
+<div id='d453' class='colors'>
+salmon</div>
+<div id='d454' class='colors'>
+MistyRose3</div>
+<div id='d455' class='colors'>
+white</div>
+<div id='d456' class='colors'>
+gray100</div>
+<div id='d457' class='colors'>
+grey100</div>
+<div id='d458' class='colors'>
+grey100</div>
+<div id='d459' class='colors'>
+gray99</div>
+<div id='d460' class='colors'>
+grey99</div>
+<div id='d461' class='colors'>
+gray98</div>
+<div id='d462' class='colors'>
+grey98</div>
+<div id='d463' class='colors'>
+gray97</div>
+<div id='d464' class='colors'>
+grey97</div>
+<div id='d465' class='colors'>
+gray96</div>
+<div id='d466' class='colors'>
+grey96</div>
+<div id='d467' class='colors'>
+WhiteSmoke</div>
+<div id='d468' class='colors'>
+gray95</div>
+<div id='d469' class='colors'>
+grey95</div>
+<div id='d470' class='colors'>
+gray94</div>
+<div id='d471' class='colors'>
+grey94</div>
+<div id='d472' class='colors'>
+gray93</div>
+<div id='d473' class='colors'>
+grey93</div>
+<div id='d474' class='colors'>
+gray92</div>
+<div id='d475' class='colors'>
+grey92</div>
+<div id='d476' class='colors'>
+gray91</div>
+<div id='d477' class='colors'>
+grey91</div>
+<div id='d478' class='colors'>
+gray90</div>
+<div id='d479' class='colors'>
+grey90</div>
+<div id='d480' class='colors'>
+gray89</div>
+<div id='d481' class='colors'>
+grey89</div>
+<div id='d482' class='colors'>
+gray88</div>
+<div id='d483' class='colors'>
+grey88</div>
+<div id='d484' class='colors'>
+gray87</div>
+<div id='d485' class='colors'>
+grey87</div>
+<div id='d486' class='colors'>
+gainsboro</div>
+<div id='d487' class='colors'>
+gray86</div>
+<div id='d488' class='colors'>
+grey86</div>
+<div id='d489' class='colors'>
+gray85</div>
+<div id='d490' class='colors'>
+grey85</div>
+<div id='d491' class='colors'>
+gray84</div>
+<div id='d492' class='colors'>
+grey84</div>
+<div id='d493' class='colors'>
+gray83</div>
+<div id='d494' class='colors'>
+grey83</div>
+<div id='d495' class='colors'>
+LightGray</div>
+<div id='d496' class='colors'>
+LightGrey</div>
+<div id='d497' class='colors'>
+gray82</div>
+<div id='d498' class='colors'>
+grey82</div>
+<div id='d499' class='colors'>
+gray81</div>
+<div id='d500' class='colors'>
+grey81</div>
+<div id='d501' class='colors'>
+gray80</div>
+<div id='d502' class='colors'>
+grey80</div>
+<div id='d503' class='colors'>
+gray79</div>
+<div id='d504' class='colors'>
+grey79</div>
+<div id='d505' class='colors'>
+gray78</div>
+<div id='d506' class='colors'>
+grey78</div>
+<div id='d507' class='colors'>
+gray77</div>
+<div id='d508' class='colors'>
+grey77</div>
+<div id='d509' class='colors'>
+gray76</div>
+<div id='d510' class='colors'>
+grey76</div>
+<div id='d511' class='colors'>
+silver</div>
+<div id='d512' class='colors'>
+gray75</div>
+<div id='d513' class='colors'>
+grey75</div>
+<div id='d514' class='colors'>
+gray74</div>
+<div id='d515' class='colors'>
+grey74</div>
+<div id='d516' class='colors'>
+gray73</div>
+<div id='d517' class='colors'>
+grey73</div>
+<div id='d518' class='colors'>
+gray72</div>
+<div id='d519' class='colors'>
+grey72</div>
+<div id='d520' class='colors'>
+gray71</div>
+<div id='d521' class='colors'>
+grey71</div>
+<div id='d522' class='colors'>
+gray70</div>
+<div id='d523' class='colors'>
+grey70</div>
+<div id='d524' class='colors'>
+gray69</div>
+<div id='d525' class='colors'>
+grey69</div>
+<div id='d526' class='colors'>
+gray68</div>
+<div id='d527' class='colors'>
+grey68</div>
+<div id='d528' class='colors'>
+gray67</div>
+<div id='d529' class='colors'>
+grey67</div>
+<div id='d530' class='colors'>
+DarkGray</div>
+<div id='d531' class='colors'>
+DarkGrey</div>
+<div id='d532' class='colors'>
+gray66</div>
+<div id='d533' class='colors'>
+grey66</div>
+<div id='d534' class='colors'>
+gray65</div>
+<div id='d535' class='colors'>
+grey65</div>
+<div id='d536' class='colors'>
+gray64</div>
+<div id='d537' class='colors'>
+grey64</div>
+<div id='d538' class='colors'>
+gray63</div>
+<div id='d539' class='colors'>
+grey63</div>
+<div id='d540' class='colors'>
+gray62</div>
+<div id='d541' class='colors'>
+grey62</div>
+<div id='d542' class='colors'>
+gray61</div>
+<div id='d543' class='colors'>
+grey61</div>
+<div id='d544' class='colors'>
+gray60</div>
+<div id='d545' class='colors'>
+grey60</div>
+<div id='d546' class='colors'>
+gray59</div>
+<div id='d547' class='colors'>
+grey59</div>
+<div id='d548' class='colors'>
+gray58</div>
+<div id='d549' class='colors'>
+grey58</div>
+<div id='d550' class='colors'>
+gray57</div>
+<div id='d551' class='colors'>
+grey57</div>
+<div id='d552' class='colors'>
+gray56</div>
+<div id='d553' class='colors'>
+grey56</div>
+<div id='d554' class='colors'>
+gray55</div>
+<div id='d555' class='colors'>
+grey55</div>
+<div id='d556' class='colors'>
+gray54</div>
+<div id='d557' class='colors'>
+grey54</div>
+<div id='d558' class='colors'>
+gray53</div>
+<div id='d559' class='colors'>
+grey53</div>
+<div id='d560' class='colors'>
+gray52</div>
+<div id='d561' class='colors'>
+grey52</div>
+<div id='d562' class='colors'>
+gray51</div>
+<div id='d563' class='colors'>
+grey51</div>
+<div id='d564' class='colors'>
+fractal</div>
+<div id='d565' class='colors'>
+gray50</div>
+<div id='d566' class='colors'>
+grey50</div>
+<div id='d567' class='colors'>
+gray</div>
+<div id='d568' class='colors'>
+gray49</div>
+<div id='d569' class='colors'>
+grey49</div>
+<div id='d570' class='colors'>
+gray48</div>
+<div id='d571' class='colors'>
+grey48</div>
+<div id='d572' class='colors'>
+gray47</div>
+<div id='d573' class='colors'>
+grey47</div>
+<div id='d574' class='colors'>
+gray46</div>
+<div id='d575' class='colors'>
+grey46</div>
+<div id='d576' class='colors'>
+gray45</div>
+<div id='d577' class='colors'>
+grey45</div>
+<div id='d578' class='colors'>
+gray44</div>
+<div id='d579' class='colors'>
+grey44</div>
+<div id='d580' class='colors'>
+gray43</div>
+<div id='d581' class='colors'>
+grey43</div>
+<div id='d582' class='colors'>
+gray42</div>
+<div id='d583' class='colors'>
+grey42</div>
+<div id='d584' class='colors'>
+DimGray</div>
+<div id='d585' class='colors'>
+DimGrey</div>
+<div id='d586' class='colors'>
+gray41</div>
+<div id='d587' class='colors'>
+grey41</div>
+<div id='d588' class='colors'>
+gray40</div>
+<div id='d589' class='colors'>
+grey40</div>
+<div id='d590' class='colors'>
+gray39</div>
+<div id='d591' class='colors'>
+grey39</div>
+<div id='d592' class='colors'>
+gray38</div>
+<div id='d593' class='colors'>
+grey38</div>
+<div id='d594' class='colors'>
+gray37</div>
+<div id='d595' class='colors'>
+grey37</div>
+<div id='d596' class='colors'>
+gray36</div>
+<div id='d597' class='colors'>
+grey36</div>
+<div id='d598' class='colors'>
+gray35</div>
+<div id='d599' class='colors'>
+grey35</div>
+<div id='d600' class='colors'>
+gray34</div>
+<div id='d601' class='colors'>
+grey34</div>
+<div id='d602' class='colors'>
+gray33</div>
+<div id='d603' class='colors'>
+grey33</div>
+<div id='d604' class='colors'>
+gray32</div>
+<div id='d605' class='colors'>
+grey32</div>
+<div id='d606' class='colors'>
+gray31</div>
+<div id='d607' class='colors'>
+grey31</div>
+<div id='d608' class='colors'>
+gray30</div>
+<div id='d609' class='colors'>
+grey30</div>
+<div id='d610' class='colors'>
+gray29</div>
+<div id='d611' class='colors'>
+grey29</div>
+<div id='d612' class='colors'>
+gray28</div>
+<div id='d613' class='colors'>
+grey28</div>
+<div id='d614' class='colors'>
+gray27</div>
+<div id='d615' class='colors'>
+grey27</div>
+<div id='d616' class='colors'>
+gray26</div>
+<div id='d617' class='colors'>
+grey26</div>
+<div id='d618' class='colors'>
+gray25</div>
+<div id='d619' class='colors'>
+grey25</div>
+<div id='d620' class='colors'>
+gray24</div>
+<div id='d621' class='colors'>
+grey24</div>
+<div id='d622' class='colors'>
+gray23</div>
+<div id='d623' class='colors'>
+grey23</div>
+<div id='d624' class='colors'>
+gray22</div>
+<div id='d625' class='colors'>
+grey22</div>
+<div id='d626' class='colors'>
+gray21</div>
+<div id='d627' class='colors'>
+grey21</div>
+<div id='d628' class='colors'>
+gray20</div>
+<div id='d629' class='colors'>
+grey20</div>
+<div id='d630' class='colors'>
+gray19</div>
+<div id='d631' class='colors'>
+grey19</div>
+<div id='d632' class='colors'>
+gray18</div>
+<div id='d633' class='colors'>
+grey18</div>
+<div id='d634' class='colors'>
+gray17</div>
+<div id='d635' class='colors'>
+grey17</div>
+<div id='d636' class='colors'>
+gray16</div>
+<div id='d637' class='colors'>
+grey16</div>
+<div id='d638' class='colors'>
+gray15</div>
+<div id='d639' class='colors'>
+grey15</div>
+<div id='d640' class='colors'>
+gray14</div>
+<div id='d641' class='colors'>
+grey14</div>
+<div id='d642' class='colors'>
+gray13</div>
+<div id='d643' class='colors'>
+grey13</div>
+<div id='d644' class='colors'>
+gray12</div>
+<div id='d645' class='colors'>
+grey12</div>
+<div id='d646' class='colors'>
+gray11</div>
+<div id='d647' class='colors'>
+grey11</div>
+<div id='d648' class='colors'>
+gray10</div>
+<div id='d649' class='colors'>
+grey10</div>
+<div id='d650' class='colors'>
+gray9</div>
+<div id='d651' class='colors'>
+grey9</div>
+<div id='d652' class='colors'>
+gray8</div>
+<div id='d653' class='colors'>
+grey8</div>
+<div id='d654' class='colors'>
+gray7</div>
+<div id='d655' class='colors'>
+grey7</div>
+<div id='d656' class='colors'>
+gray6</div>
+<div id='d657' class='colors'>
+grey6</div>
+<div id='d658' class='colors'>
+gray5</div>
+<div id='d659' class='colors'>
+grey5</div>
+<div id='d660' class='colors'>
+gray4</div>
+<div id='d661' class='colors'>
+grey4</div>
+<div id='d662' class='colors'>
+gray3</div>
+<div id='d663' class='colors'>
+grey3</div>
+<div id='d664' class='colors'>
+gray2</div>
+<div id='d665' class='colors'>
+grey2</div>
+<div id='d666' class='colors'>
+gray1</div>
+<div id='d667' class='colors'>
+grey1</div>
+<div id='d668' class='colors'>
+black</div>
+<div id='d669' class='colors'>
+gray0</div>
+<div id='d670' class='colors'>
+grey0</div>
+<div id='d671' class='colors'>
+opaque</div>
+<div id='d672' class='colors'>
+none</div>
+<div id='d673' class='colors'>
+transparent</div>
+</div>
+
+<div id='colornames'>
+CLICK TO CHOOSE THE COLOR
+</div>
+
+<div id='switches'>
+
+<span id='title'>OPTIONS</span>
+<div id='hexswitch' class='theswitches'>CLICK TO USE HEX KEYS</div>
+<br>
+<div id='infoswitch' class='theswitches'>CLICK TO TOGGLE PALATE INFO<span id='infospace'></span></div>
+<br>
+<div id='backgroundswitch' class='theswitches'>CLICK TO TOGGLE BACKGROUNDS</div>
+<br>
+<div id='preview'></div>
+<div id='nameholder'>YOU WILL CHOOSE:<br><input id='namespace' style='width:inherit' type='text'></input></div>
+<br>
+<span id='transparent'>to choose transparent as a color, click <span id='transbutton'>HERE</span></span>
+</div>
+</div>
+<script type='text/javascript' src='js/jquery-1.6.4.min.js'></script>
+<script type='text/javascript' src='js/colordict.js'></script>
+
+<script type='text/javascript'>
+
+
+//setup dimensions
+//////////////////
+
+
+function regolden(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num/ratio)
+ return newnum
+ }
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newval = goldenize(result)
+ propval = newval.toString()+'px'
+ if(propertystr == 'height'){
+ $(idandselectr).css('width', propval)
+ }
+ else if(propertystr == 'width'){
+ $(idandselectr).css('height', propval)
+ }
+ }
+function shrinkwidth(arg){
+ for(var i=0; i < 5; i++){
+ arg = regolden(arg)
+ }
+ division = Math.round(arg)
+ return division
+}
+
+function makecolorswidth(){
+ colorswidth = shrinkwidth(window.innerWidth)
+ $('.colors').css('width', colorswidth.toString()+'px')
+}
+function makecolorsheight(){
+ result = getproperty('.colors', 'width')
+ newval = regolden(result)
+ propval = newval.toString()+'px'
+ $('.colors').css('height', propval)
+}
+//the following function sets up the font sizes
+//inrelation to the size of the hexswitch font
+function setupfonts(){
+ var firstfont = getproperty('#hexswitch', 'font-size')
+ var finalfont = goldenize(firstfont)
+ $('#namespace').css('font-size', finalfont+'px')
+ $('#namespace').css('width', $('#switches').css('width'))
+ var secondfont = getproperty('#namespace', 'font-size')
+ var finalfont = goldenize(secondfont)
+ $('#colornames').css('font-size', finalfont+'px')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ var transfont = regolden(firstfont)
+ $('#transparent').css('font-size', transfont+'px')
+}
+function getcontainerwidth(){
+ basis = $('.colors').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ secondbasis = '2px'
+ secondbasis = parseInt(secondbasis.slice(0,-2))
+ widthval = (secondbasis*8)+(basis*4)+(goldenize(basis)-basis)
+ widthval = widthval.toString()+'px'
+ return widthval
+}
+
+function makecontainerwidth(){
+ var containerwidth = getcontainerwidth()
+ $('#container').css('width',containerwidth)
+}
+
+
+function setupsides()
+ {
+ var basis = $('#container').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ remainder = (100-basis)/2
+ widths = regolden(basis)
+ widths = widths.toString()+'px'
+ lateralbasis = regolden(remainder)
+ leftside = toString(lateralbasis)+'%'
+ rightside = toString(100-lateralbasis)+'%'
+ $('#colornames').css('left', leftside)
+ $('#switches').css({'width': widths, 'left': rightside, 'overflow':'auto'})
+ }
+function previewdimensions(){
+ first = $('#switches').css('width')
+ first = parseInt(first.slice(0,-2))
+ width = regolden(first)
+ height = regolden(width)
+ width = width.toString()+'px'
+ height = height.toString()+'px'
+ $('#preview').css({'width':width, 'height':height})
+}
+function setupdimensions(){
+makecolorswidth()
+setupfonts()
+makecolorsheight()
+makecontainerwidth()
+setupsides()
+makegolden('#switches','width')
+previewdimensions()
+$('#namespace').css('width', 'inherit')
+$('#nameholder').css('width', 'inherit')
+$('#transparent').css({'float':'bottom','width':'inherit'})
+}
+setupdimensions()
+$(window).resize(function(){setupdimensions()})
+
+//BEGIN STYLINGS//
+//////////////////
+
+
+var old = {};
+function hovercss(sel, uno){
+
+ var chng = {};
+ chng['color'] = 'white';
+ chng['text-shadow'] = 'black 1px 2px';
+ chng['background-image'] = 'url(http://asdf.us/im/19/gradient_whitegray80_1321305183_1321305241_pepper_1321333403_pepper.jpg)';
+ if(uno == 'over'){
+ for(var key in chng){
+ old[key] = $('#'+sel).css(key)
+ }
+ for(var key in chng){
+ $('#'+sel).css(key, chng[key])
+ }
+ }
+ if(uno == 'out'){
+ for(var key in old){
+ $('#'+sel).css(key, old[key])
+ }
+ }
+}
+$('.theswitches').hover(function(){hovercss(this.id, 'over')}, function(){hovercss(this.id, 'out')})
+
+var transcss = {
+ 'color':'#141414','box-shadow':'10px 10px 5px #141414',
+ 'background-color':'#D1D1D1','color':'#141414',
+ 'border-width':'2px','border-style':'outset','cursor':'pointer'}
+$('#transbutton').css(transcss)
+var hovertrans = {
+ 'background-color':'DarkGrey','color':'#383838','box-shadow':'5px 5px 2px #141414'
+}
+$('#transbutton').hover(function(){$('#transbutton').css(hovertrans)},function(){$('#transbutton').css(transcss)})
+//threewayselector for what goes in the divs
+var infostate = 1
+function switchinfo()
+ {
+ if(infostate == 0)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(divtoname[divlist[i]])
+ };
+ infostate = 1
+ $('#infospace').html('(NAMES)');
+ }
+ else if(infostate == 1)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html("")
+ };
+ infostate = 2
+ $('#infospace').html('(NONE)');
+ }
+ else if(infostate == 2)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(nametohex[divtoname[divlist[i]]])
+ };
+ infostate = 0
+ $('#infospace').html('(HEXES)');
+ }
+ }
+$('#infoswitch').hover(function(){$('#infospace').show()}, function(){$('#infospace').hide('slow')} )
+$('#infoswitch').click(function(){switchinfo()})
+
+
+backgroundstate = 2;
+function switchbackground()
+ {
+ if(backgroundstate == 1)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image','url(http://dump.fm/static/img/bg.dither.gif)')
+ backgroundstate = 2;
+ $('#colornames').css('color', 'white')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ }
+ else if(backgroundstate == 2)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image', 'none')
+ backgroundstate = 0
+ }
+ else if(backgroundstate == 0)
+ {
+ $('#colorpicker').css('background-color', 'white')
+ $('#colorpicker').css('background-image', 'none')
+ $('#colornames').css('color', 'grey')
+ backgroundstate = 1
+ }
+ }
+
+$('#backgroundswitch').click(function(){switchbackground()})
+
+//takes a div name and returns a colorname
+
+function showcolorname(divstr)
+
+ {
+ colorname = divtoname['#'+divstr]
+ hex = nametohex[colorname]
+ imname = hextoname[hex]
+ if (hexes == true)
+ {
+ imname = hex
+ }
+
+ return imname
+ }
+function bigname(divstr)
+ {
+ colorname = showcolorname(divstr)
+ $('#colornames').html(colorname)
+
+ }
+function writeit(text)
+ {
+ $('#colornames').append(text)
+ }
+function makebig(divstr)
+ {
+ firstheight = $('#'+divstr).height()
+ newheight = goldenize(firstheight)
+ $('#'+divstr).height(newheight)
+ }
+function makesmall(divstr)
+ {
+ oldheight = $('.colors').height()
+ $('#'+divstr).height(oldheight)
+ }
+var choice;
+$('.colors').hover(function() {
+ bigname(this.id);
+// makebig(this.id);
+// makegolden('#'+this.id, 'height')},
+//function(){
+// makesmall(this.id);
+// makegolden('#'+this.id, 'height')
+});
+$('.colors').mouseover(function(){
+ if(this.id != 'd0'){
+ makebig(this.id);
+ makegolden('#'+this.id, 'height')
+ }})
+$('.colors').mouseout(function(){
+ makesmall(this.id);
+ makegolden('#'+this.id,'height');
+ })
+$(".colors").hover(function(){
+$('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+ });
+$('.colors').css('margin-top', '2px')
+var hexes = false
+function hexswitch()
+ {
+ if(hexes == false)
+ {
+ $('#hexswitch').html('CLICK TO USE COLOR NAMES')
+ hexes = true;
+ var nameval = $('#namespace').val()
+ $('#namespace').val(nametohex[nameval])
+ }
+
+ else
+ {
+ $('#hexswitch').html('CLICK TO USE HEX KEYS')
+ hexes = false;
+ var nameval = $('#namespace').val()
+ $('#namespace').val(hextoname[nameval])
+ }
+ }
+$('#hexswitch').click(function(){hexswitch()})
+
+$('.colors').click(function(){
+ putitin()
+ })
+
+function putitin()
+ {
+ thecolor = $('#colornames').html()
+ $('#namespace').val(thecolor)
+ if(hexes == false){
+ $('#preview').css({'background-color': nametohex[thecolor], 'border-style':'none'})
+ }
+ else{
+ $('#preview').css('background-color', thecolor)
+ }
+
+ }
+function transparent()
+ {
+ $('#namespace').val('transparent');
+ $('#preview').css({'background-color':'transparent','border-style':'dashed','border-width':'2px'})
+ }
+$('#transbutton').click(function(){transparent()})
+
+
+function bakecookie()
+ {
+ var colormemory = $('#preview').css('background-color')
+ var preferences = {}
+ preferences['infostate'] = infostate;
+ preferences['hexes'] = hexes;
+ preferences['backgroundstate'] = backgroundstate;
+ preferences['colormemory'] = colormemory;
+ document.cookie = "preferences=infostate_"+infostate+"_hexes_"+hexes+"_backgroundstate_"+backgroundstate+";path=/;domain=.asdf.us;max-age=1086400";
+ }
+
+bakecookie()
+function eatcookie()
+ {
+ if (document.cookie)
+ {
+ var cookies = document.cookie.split(";")
+ for(i in cookies){
+ $('#preview').append(cookies[i])
+ }
+ /* for (i in cookies)
+ {
+ var cookie = cookies[i].split("=")
+ $('#preview').append(cookie)
+ }
+
+ //infostate = parseInt(preferences['infostate'])
+ //hexes = preferences['hexes']
+ //backgroundstate = preferences['backgroundstate']}
+ if (cookie[0].indexOf("imname") !== -1|cookie[0].indexOf("imname") !== -2)
+ {
+ $('#preview').append(cookie[0].indexOf('imname'))
+ if (cookie[1] !== 'false' && cookie[1] !== 'undefined' && cookie[1].length)
+ {
+ return cookie[1]
+ $('#preview').append('what the hell????')
+ }
+ }
+ else if(cookie[0].indexOf('username') !== -1)
+ {
+ $('#preview').append('what the fuck')
+ }
+ else{$('#preview').append('this was the index'+cookie[0].indexOf('imname').toString())}
+ }
+ //return ""
+ }
+ }*/
+
+ }
+ }
+$(document).ready(function(){eatcookie();switchinfo()})
+
+
+
+
+
+
+
+
+
+
+
+
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/colors/minoan.gif b/frontend/imgrid/colors/colors/minoan.gif
new file mode 100755
index 0000000..4ceb804
--- /dev/null
+++ b/frontend/imgrid/colors/colors/minoan.gif
Binary files differ
diff --git a/frontend/imgrid/colors/colors/savior.html b/frontend/imgrid/colors/colors/savior.html
new file mode 100755
index 0000000..72395fd
--- /dev/null
+++ b/frontend/imgrid/colors/colors/savior.html
@@ -0,0 +1,3582 @@
+<html>
+<head>
+
+<style type='text/css'>
+
+body
+{
+max-width:100%;
+max-height:100%;
+font-family:helvetica;
+font-size:2px;
+}
+
+
+#container div
+{
+display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+height: 15px;
+zoom: 1;
+*display: inline;
+}
+
+#container
+{
+margin:0 auto;
+width:500px;
+padding-top:100px;
+text-align:center;
+}
+
+#colornames
+{
+color:white;
+position:fixed;
+font-size:50px;
+top:50px;
+right:60%;
+width:400px;
+}
+
+#hexswitch
+ {
+ position:fixed;
+ top:20px;
+ right:10%;
+ height:100px;
+ width:300px;
+ font-size:20px
+ border-style: groove;
+ border-width: 4px;
+ background-color:goldenrod;
+ text-align:center;
+ }
+#infoswitch
+ {
+ position:fixed;
+ top: 60px;
+ right:5%;
+ font-size:20px
+ background-color:gray;
+ text-align:center;
+ }
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{
+height:30px;
+width:10px;
+}
+</style></head><body>
+<div id='container'>
+<div id='d0' class='colors'>
+snow</div>
+<div id='d1' class='colors'>
+snow1</div>
+<div id='d2' class='colors'>
+snow2</div>
+<div id='d3' class='colors'>
+RosyBrown1</div>
+<div id='d4' class='colors'>
+RosyBrown2</div>
+<div id='d5' class='colors'>
+snow3</div>
+<div id='d6' class='colors'>
+LightCoral</div>
+<div id='d7' class='colors'>
+IndianRed1</div>
+<div id='d8' class='colors'>
+RosyBrown3</div>
+<div id='d9' class='colors'>
+IndianRed2</div>
+<div id='d10' class='colors'>
+RosyBrown</div>
+<div id='d11' class='colors'>
+brown1</div>
+<div id='d12' class='colors'>
+firebrick1</div>
+<div id='d13' class='colors'>
+brown2</div>
+<div id='d14' class='colors'>
+IndianRed</div>
+<div id='d15' class='colors'>
+IndianRed3</div>
+<div id='d16' class='colors'>
+firebrick2</div>
+<div id='d17' class='colors'>
+snow4</div>
+<div id='d18' class='colors'>
+brown3</div>
+<div id='d19' class='colors'>
+red</div>
+<div id='d20' class='colors'>
+red1</div>
+<div id='d21' class='colors'>
+RosyBrown4</div>
+<div id='d22' class='colors'>
+firebrick3</div>
+<div id='d23' class='colors'>
+red2</div>
+<div id='d24' class='colors'>
+firebrick</div>
+<div id='d25' class='colors'>
+brown</div>
+<div id='d26' class='colors'>
+red3</div>
+<div id='d27' class='colors'>
+IndianRed4</div>
+<div id='d28' class='colors'>
+brown4</div>
+<div id='d29' class='colors'>
+firebrick4</div>
+<div id='d30' class='colors'>
+DarkRed</div>
+<div id='d31' class='colors'>
+red4</div>
+<div id='d32' class='colors'>
+maroon</div>
+<div id='d33' class='colors'>
+LightPink1</div>
+<div id='d34' class='colors'>
+LightPink3</div>
+<div id='d35' class='colors'>
+LightPink4</div>
+<div id='d36' class='colors'>
+LightPink2</div>
+<div id='d37' class='colors'>
+LightPink</div>
+<div id='d38' class='colors'>
+pink</div>
+<div id='d39' class='colors'>
+crimson</div>
+<div id='d40' class='colors'>
+pink1</div>
+<div id='d41' class='colors'>
+pink2</div>
+<div id='d42' class='colors'>
+pink3</div>
+<div id='d43' class='colors'>
+pink4</div>
+<div id='d44' class='colors'>
+PaleVioletRed4</div>
+<div id='d45' class='colors'>
+PaleVioletRed</div>
+<div id='d46' class='colors'>
+PaleVioletRed2</div>
+<div id='d47' class='colors'>
+PaleVioletRed1</div>
+<div id='d48' class='colors'>
+PaleVioletRed3</div>
+<div id='d49' class='colors'>
+LavenderBlush</div>
+<div id='d50' class='colors'>
+LavenderBlush1</div>
+<div id='d51' class='colors'>
+LavenderBlush3</div>
+<div id='d52' class='colors'>
+LavenderBlush2</div>
+<div id='d53' class='colors'>
+LavenderBlush4</div>
+<div id='d54' class='colors'>
+maroon</div>
+<div id='d55' class='colors'>
+HotPink3</div>
+<div id='d56' class='colors'>
+VioletRed3</div>
+<div id='d57' class='colors'>
+VioletRed1</div>
+<div id='d58' class='colors'>
+VioletRed2</div>
+<div id='d59' class='colors'>
+VioletRed4</div>
+<div id='d60' class='colors'>
+HotPink2</div>
+<div id='d61' class='colors'>
+HotPink1</div>
+<div id='d62' class='colors'>
+HotPink4</div>
+<div id='d63' class='colors'>
+HotPink</div>
+<div id='d64' class='colors'>
+DeepPink</div>
+<div id='d65' class='colors'>
+DeepPink1</div>
+<div id='d66' class='colors'>
+DeepPink2</div>
+<div id='d67' class='colors'>
+DeepPink3</div>
+<div id='d68' class='colors'>
+DeepPink4</div>
+<div id='d69' class='colors'>
+maroon1</div>
+<div id='d70' class='colors'>
+maroon2</div>
+<div id='d71' class='colors'>
+maroon3</div>
+<div id='d72' class='colors'>
+maroon4</div>
+<div id='d73' class='colors'>
+MediumVioletRed</div>
+<div id='d74' class='colors'>
+VioletRed</div>
+<div id='d75' class='colors'>
+orchid2</div>
+<div id='d76' class='colors'>
+orchid</div>
+<div id='d77' class='colors'>
+orchid1</div>
+<div id='d78' class='colors'>
+orchid3</div>
+<div id='d79' class='colors'>
+orchid4</div>
+<div id='d80' class='colors'>
+thistle1</div>
+<div id='d81' class='colors'>
+thistle2</div>
+<div id='d82' class='colors'>
+plum1</div>
+<div id='d83' class='colors'>
+plum2</div>
+<div id='d84' class='colors'>
+thistle</div>
+<div id='d85' class='colors'>
+thistle3</div>
+<div id='d86' class='colors'>
+plum</div>
+<div id='d87' class='colors'>
+violet</div>
+<div id='d88' class='colors'>
+plum3</div>
+<div id='d89' class='colors'>
+thistle4</div>
+<div id='d90' class='colors'>
+fuchsia</div>
+<div id='d91' class='colors'>
+magenta</div>
+<div id='d92' class='colors'>
+magenta1</div>
+<div id='d93' class='colors'>
+plum4</div>
+<div id='d94' class='colors'>
+magenta2</div>
+<div id='d95' class='colors'>
+magenta3</div>
+<div id='d96' class='colors'>
+DarkMagenta</div>
+<div id='d97' class='colors'>
+magenta4</div>
+<div id='d98' class='colors'>
+purple</div>
+<div id='d99' class='colors'>
+MediumOrchid</div>
+<div id='d100' class='colors'>
+MediumOrchid1</div>
+<div id='d101' class='colors'>
+MediumOrchid2</div>
+<div id='d102' class='colors'>
+MediumOrchid3</div>
+<div id='d103' class='colors'>
+MediumOrchid4</div>
+<div id='d104' class='colors'>
+DarkViolet</div>
+<div id='d105' class='colors'>
+DarkOrchid</div>
+<div id='d106' class='colors'>
+DarkOrchid1</div>
+<div id='d107' class='colors'>
+DarkOrchid3</div>
+<div id='d108' class='colors'>
+DarkOrchid2</div>
+<div id='d109' class='colors'>
+DarkOrchid4</div>
+<div id='d110' class='colors'>
+purple</div>
+<div id='d111' class='colors'>
+indigo</div>
+<div id='d112' class='colors'>
+BlueViolet</div>
+<div id='d113' class='colors'>
+purple2</div>
+<div id='d114' class='colors'>
+purple3</div>
+<div id='d115' class='colors'>
+purple4</div>
+<div id='d116' class='colors'>
+purple1</div>
+<div id='d117' class='colors'>
+MediumPurple</div>
+<div id='d118' class='colors'>
+MediumPurple1</div>
+<div id='d119' class='colors'>
+MediumPurple2</div>
+<div id='d120' class='colors'>
+MediumPurple3</div>
+<div id='d121' class='colors'>
+MediumPurple4</div>
+<div id='d122' class='colors'>
+DarkSlateBlue</div>
+<div id='d123' class='colors'>
+LightSlateBlue</div>
+<div id='d124' class='colors'>
+MediumSlateBlue</div>
+<div id='d125' class='colors'>
+SlateBlue</div>
+<div id='d126' class='colors'>
+SlateBlue1</div>
+<div id='d127' class='colors'>
+SlateBlue2</div>
+<div id='d128' class='colors'>
+SlateBlue3</div>
+<div id='d129' class='colors'>
+SlateBlue4</div>
+<div id='d130' class='colors'>
+GhostWhite</div>
+<div id='d131' class='colors'>
+lavender</div>
+<div id='d132' class='colors'>
+blue</div>
+<div id='d133' class='colors'>
+blue1</div>
+<div id='d134' class='colors'>
+blue2</div>
+<div id='d135' class='colors'>
+blue3</div>
+<div id='d136' class='colors'>
+MediumBlue</div>
+<div id='d137' class='colors'>
+blue4</div>
+<div id='d138' class='colors'>
+DarkBlue</div>
+<div id='d139' class='colors'>
+MidnightBlue</div>
+<div id='d140' class='colors'>
+navy</div>
+<div id='d141' class='colors'>
+NavyBlue</div>
+<div id='d142' class='colors'>
+RoyalBlue</div>
+<div id='d143' class='colors'>
+RoyalBlue1</div>
+<div id='d144' class='colors'>
+RoyalBlue2</div>
+<div id='d145' class='colors'>
+RoyalBlue3</div>
+<div id='d146' class='colors'>
+RoyalBlue4</div>
+<div id='d147' class='colors'>
+CornflowerBlue</div>
+<div id='d148' class='colors'>
+LightSteelBlue</div>
+<div id='d149' class='colors'>
+LightSteelBlue1</div>
+<div id='d150' class='colors'>
+LightSteelBlue2</div>
+<div id='d151' class='colors'>
+LightSteelBlue3</div>
+<div id='d152' class='colors'>
+LightSteelBlue4</div>
+<div id='d153' class='colors'>
+SlateGray4</div>
+<div id='d154' class='colors'>
+SlateGray1</div>
+<div id='d155' class='colors'>
+SlateGray2</div>
+<div id='d156' class='colors'>
+SlateGray3</div>
+<div id='d157' class='colors'>
+LightSlateGray</div>
+<div id='d158' class='colors'>
+LightSlateGrey</div>
+<div id='d159' class='colors'>
+SlateGray</div>
+<div id='d160' class='colors'>
+SlateGrey</div>
+<div id='d161' class='colors'>
+DodgerBlue</div>
+<div id='d162' class='colors'>
+DodgerBlue1</div>
+<div id='d163' class='colors'>
+DodgerBlue2</div>
+<div id='d164' class='colors'>
+DodgerBlue4</div>
+<div id='d165' class='colors'>
+DodgerBlue3</div>
+<div id='d166' class='colors'>
+AliceBlue</div>
+<div id='d167' class='colors'>
+SteelBlue4</div>
+<div id='d168' class='colors'>
+SteelBlue</div>
+<div id='d169' class='colors'>
+SteelBlue1</div>
+<div id='d170' class='colors'>
+SteelBlue2</div>
+<div id='d171' class='colors'>
+SteelBlue3</div>
+<div id='d172' class='colors'>
+SkyBlue4</div>
+<div id='d173' class='colors'>
+SkyBlue1</div>
+<div id='d174' class='colors'>
+SkyBlue2</div>
+<div id='d175' class='colors'>
+SkyBlue3</div>
+<div id='d176' class='colors'>
+LightSkyBlue</div>
+<div id='d177' class='colors'>
+LightSkyBlue4</div>
+<div id='d178' class='colors'>
+LightSkyBlue1</div>
+<div id='d179' class='colors'>
+LightSkyBlue2</div>
+<div id='d180' class='colors'>
+LightSkyBlue3</div>
+<div id='d181' class='colors'>
+SkyBlue</div>
+<div id='d182' class='colors'>
+LightBlue3</div>
+<div id='d183' class='colors'>
+DeepSkyBlue</div>
+<div id='d184' class='colors'>
+DeepSkyBlue1</div>
+<div id='d185' class='colors'>
+DeepSkyBlue2</div>
+<div id='d186' class='colors'>
+DeepSkyBlue4</div>
+<div id='d187' class='colors'>
+DeepSkyBlue3</div>
+<div id='d188' class='colors'>
+LightBlue1</div>
+<div id='d189' class='colors'>
+LightBlue2</div>
+<div id='d190' class='colors'>
+LightBlue</div>
+<div id='d191' class='colors'>
+LightBlue4</div>
+<div id='d192' class='colors'>
+PowderBlue</div>
+<div id='d193' class='colors'>
+CadetBlue1</div>
+<div id='d194' class='colors'>
+CadetBlue2</div>
+<div id='d195' class='colors'>
+CadetBlue3</div>
+<div id='d196' class='colors'>
+CadetBlue4</div>
+<div id='d197' class='colors'>
+turquoise1</div>
+<div id='d198' class='colors'>
+turquoise2</div>
+<div id='d199' class='colors'>
+turquoise3</div>
+<div id='d200' class='colors'>
+turquoise4</div>
+<div id='d201' class='colors'>
+cadet blue</div>
+<div id='d202' class='colors'>
+CadetBlue</div>
+<div id='d203' class='colors'>
+DarkTurquoise</div>
+<div id='d204' class='colors'>
+azure</div>
+<div id='d205' class='colors'>
+azure1</div>
+<div id='d206' class='colors'>
+LightCyan</div>
+<div id='d207' class='colors'>
+LightCyan1</div>
+<div id='d208' class='colors'>
+azure2</div>
+<div id='d209' class='colors'>
+LightCyan2</div>
+<div id='d210' class='colors'>
+PaleTurquoise1</div>
+<div id='d211' class='colors'>
+PaleTurquoise</div>
+<div id='d212' class='colors'>
+PaleTurquoise2</div>
+<div id='d213' class='colors'>
+DarkSlateGray1</div>
+<div id='d214' class='colors'>
+azure3</div>
+<div id='d215' class='colors'>
+LightCyan3</div>
+<div id='d216' class='colors'>
+DarkSlateGray2</div>
+<div id='d217' class='colors'>
+PaleTurquoise3</div>
+<div id='d218' class='colors'>
+DarkSlateGray3</div>
+<div id='d219' class='colors'>
+azure4</div>
+<div id='d220' class='colors'>
+LightCyan4</div>
+<div id='d221' class='colors'>
+aqua</div>
+<div id='d222' class='colors'>
+cyan</div>
+<div id='d223' class='colors'>
+cyan1</div>
+<div id='d224' class='colors'>
+PaleTurquoise4</div>
+<div id='d225' class='colors'>
+cyan2</div>
+<div id='d226' class='colors'>
+DarkSlateGray4</div>
+<div id='d227' class='colors'>
+cyan3</div>
+<div id='d228' class='colors'>
+cyan4</div>
+<div id='d229' class='colors'>
+DarkCyan</div>
+<div id='d230' class='colors'>
+teal</div>
+<div id='d231' class='colors'>
+DarkSlateGray</div>
+<div id='d232' class='colors'>
+DarkSlateGrey</div>
+<div id='d233' class='colors'>
+MediumTurquoise</div>
+<div id='d234' class='colors'>
+LightSeaGreen</div>
+<div id='d235' class='colors'>
+turquoise</div>
+<div id='d236' class='colors'>
+aquamarine4</div>
+<div id='d237' class='colors'>
+aquamarine</div>
+<div id='d238' class='colors'>
+aquamarine1</div>
+<div id='d239' class='colors'>
+aquamarine2</div>
+<div id='d240' class='colors'>
+aquamarine3</div>
+<div id='d241' class='colors'>
+MediumAquamarine</div>
+<div id='d242' class='colors'>
+MediumSpringGreen</div>
+<div id='d243' class='colors'>
+MintCream</div>
+<div id='d244' class='colors'>
+SpringGreen</div>
+<div id='d245' class='colors'>
+SpringGreen1</div>
+<div id='d246' class='colors'>
+SpringGreen2</div>
+<div id='d247' class='colors'>
+SpringGreen3</div>
+<div id='d248' class='colors'>
+SpringGreen4</div>
+<div id='d249' class='colors'>
+MediumSeaGreen</div>
+<div id='d250' class='colors'>
+SeaGreen</div>
+<div id='d251' class='colors'>
+SeaGreen3</div>
+<div id='d252' class='colors'>
+SeaGreen1</div>
+<div id='d253' class='colors'>
+SeaGreen4</div>
+<div id='d254' class='colors'>
+SeaGreen2</div>
+<div id='d255' class='colors'>
+MediumForestGreen</div>
+<div id='d256' class='colors'>
+honeydew</div>
+<div id='d257' class='colors'>
+honeydew1</div>
+<div id='d258' class='colors'>
+honeydew2</div>
+<div id='d259' class='colors'>
+DarkSeaGreen1</div>
+<div id='d260' class='colors'>
+DarkSeaGreen2</div>
+<div id='d261' class='colors'>
+PaleGreen1</div>
+<div id='d262' class='colors'>
+PaleGreen</div>
+<div id='d263' class='colors'>
+honeydew3</div>
+<div id='d264' class='colors'>
+LightGreen</div>
+<div id='d265' class='colors'>
+PaleGreen2</div>
+<div id='d266' class='colors'>
+DarkSeaGreen3</div>
+<div id='d267' class='colors'>
+DarkSeaGreen</div>
+<div id='d268' class='colors'>
+PaleGreen3</div>
+<div id='d269' class='colors'>
+honeydew4</div>
+<div id='d270' class='colors'>
+green1</div>
+<div id='d271' class='colors'>
+lime</div>
+<div id='d272' class='colors'>
+LimeGreen</div>
+<div id='d273' class='colors'>
+DarkSeaGreen4</div>
+<div id='d274' class='colors'>
+green2</div>
+<div id='d275' class='colors'>
+PaleGreen4</div>
+<div id='d276' class='colors'>
+green3</div>
+<div id='d277' class='colors'>
+ForestGreen</div>
+<div id='d278' class='colors'>
+green4</div>
+<div id='d279' class='colors'>
+green</div>
+<div id='d280' class='colors'>
+DarkGreen</div>
+<div id='d281' class='colors'>
+LawnGreen</div>
+<div id='d282' class='colors'>
+chartreuse</div>
+<div id='d283' class='colors'>
+chartreuse1</div>
+<div id='d284' class='colors'>
+chartreuse2</div>
+<div id='d285' class='colors'>
+chartreuse3</div>
+<div id='d286' class='colors'>
+chartreuse4</div>
+<div id='d287' class='colors'>
+GreenYellow</div>
+<div id='d288' class='colors'>
+DarkOliveGreen3</div>
+<div id='d289' class='colors'>
+DarkOliveGreen1</div>
+<div id='d290' class='colors'>
+DarkOliveGreen2</div>
+<div id='d291' class='colors'>
+DarkOliveGreen4</div>
+<div id='d292' class='colors'>
+DarkOliveGreen</div>
+<div id='d293' class='colors'>
+OliveDrab</div>
+<div id='d294' class='colors'>
+OliveDrab1</div>
+<div id='d295' class='colors'>
+OliveDrab2</div>
+<div id='d296' class='colors'>
+OliveDrab3</div>
+<div id='d297' class='colors'>
+YellowGreen</div>
+<div id='d298' class='colors'>
+OliveDrab4</div>
+<div id='d299' class='colors'>
+ivory</div>
+<div id='d300' class='colors'>
+ivory1</div>
+<div id='d301' class='colors'>
+LightYellow</div>
+<div id='d302' class='colors'>
+LightYellow1</div>
+<div id='d303' class='colors'>
+beige</div>
+<div id='d304' class='colors'>
+ivory2</div>
+<div id='d305' class='colors'>
+LightGoldenrodYellow</div>
+<div id='d306' class='colors'>
+LightYellow2</div>
+<div id='d307' class='colors'>
+ivory3</div>
+<div id='d308' class='colors'>
+LightYellow3</div>
+<div id='d309' class='colors'>
+ivory4</div>
+<div id='d310' class='colors'>
+LightYellow4</div>
+<div id='d311' class='colors'>
+yellow</div>
+<div id='d312' class='colors'>
+yellow1</div>
+<div id='d313' class='colors'>
+yellow2</div>
+<div id='d314' class='colors'>
+yellow3</div>
+<div id='d315' class='colors'>
+yellow4</div>
+<div id='d316' class='colors'>
+olive</div>
+<div id='d317' class='colors'>
+DarkKhaki</div>
+<div id='d318' class='colors'>
+khaki2</div>
+<div id='d319' class='colors'>
+LemonChiffon4</div>
+<div id='d320' class='colors'>
+khaki1</div>
+<div id='d321' class='colors'>
+khaki3</div>
+<div id='d322' class='colors'>
+khaki4</div>
+<div id='d323' class='colors'>
+PaleGoldenrod</div>
+<div id='d324' class='colors'>
+LemonChiffon</div>
+<div id='d325' class='colors'>
+LemonChiffon1</div>
+<div id='d326' class='colors'>
+khaki</div>
+<div id='d327' class='colors'>
+LemonChiffon3</div>
+<div id='d328' class='colors'>
+LemonChiffon2</div>
+<div id='d329' class='colors'>
+MediumGoldenRod</div>
+<div id='d330' class='colors'>
+cornsilk4</div>
+<div id='d331' class='colors'>
+gold</div>
+<div id='d332' class='colors'>
+gold1</div>
+<div id='d333' class='colors'>
+gold2</div>
+<div id='d334' class='colors'>
+gold3</div>
+<div id='d335' class='colors'>
+gold4</div>
+<div id='d336' class='colors'>
+LightGoldenrod</div>
+<div id='d337' class='colors'>
+LightGoldenrod4</div>
+<div id='d338' class='colors'>
+LightGoldenrod1</div>
+<div id='d339' class='colors'>
+LightGoldenrod3</div>
+<div id='d340' class='colors'>
+LightGoldenrod2</div>
+<div id='d341' class='colors'>
+cornsilk3</div>
+<div id='d342' class='colors'>
+cornsilk2</div>
+<div id='d343' class='colors'>
+cornsilk</div>
+<div id='d344' class='colors'>
+cornsilk1</div>
+<div id='d345' class='colors'>
+goldenrod</div>
+<div id='d346' class='colors'>
+goldenrod1</div>
+<div id='d347' class='colors'>
+goldenrod2</div>
+<div id='d348' class='colors'>
+goldenrod3</div>
+<div id='d349' class='colors'>
+goldenrod4</div>
+<div id='d350' class='colors'>
+DarkGoldenrod</div>
+<div id='d351' class='colors'>
+DarkGoldenrod1</div>
+<div id='d352' class='colors'>
+DarkGoldenrod2</div>
+<div id='d353' class='colors'>
+DarkGoldenrod3</div>
+<div id='d354' class='colors'>
+DarkGoldenrod4</div>
+<div id='d355' class='colors'>
+FloralWhite</div>
+<div id='d356' class='colors'>
+wheat2</div>
+<div id='d357' class='colors'>
+OldLace</div>
+<div id='d358' class='colors'>
+wheat</div>
+<div id='d359' class='colors'>
+wheat1</div>
+<div id='d360' class='colors'>
+wheat3</div>
+<div id='d361' class='colors'>
+orange</div>
+<div id='d362' class='colors'>
+orange1</div>
+<div id='d363' class='colors'>
+orange2</div>
+<div id='d364' class='colors'>
+orange3</div>
+<div id='d365' class='colors'>
+orange4</div>
+<div id='d366' class='colors'>
+wheat4</div>
+<div id='d367' class='colors'>
+moccasin</div>
+<div id='d368' class='colors'>
+PapayaWhip</div>
+<div id='d369' class='colors'>
+NavajoWhite3</div>
+<div id='d370' class='colors'>
+BlanchedAlmond</div>
+<div id='d371' class='colors'>
+NavajoWhite</div>
+<div id='d372' class='colors'>
+NavajoWhite1</div>
+<div id='d373' class='colors'>
+NavajoWhite2</div>
+<div id='d374' class='colors'>
+NavajoWhite4</div>
+<div id='d375' class='colors'>
+AntiqueWhite4</div>
+<div id='d376' class='colors'>
+AntiqueWhite</div>
+<div id='d377' class='colors'>
+tan</div>
+<div id='d378' class='colors'>
+bisque4</div>
+<div id='d379' class='colors'>
+burlywood</div>
+<div id='d380' class='colors'>
+AntiqueWhite2</div>
+<div id='d381' class='colors'>
+burlywood1</div>
+<div id='d382' class='colors'>
+burlywood3</div>
+<div id='d383' class='colors'>
+burlywood2</div>
+<div id='d384' class='colors'>
+AntiqueWhite1</div>
+<div id='d385' class='colors'>
+burlywood4</div>
+<div id='d386' class='colors'>
+AntiqueWhite3</div>
+<div id='d387' class='colors'>
+DarkOrange</div>
+<div id='d388' class='colors'>
+bisque2</div>
+<div id='d389' class='colors'>
+bisque</div>
+<div id='d390' class='colors'>
+bisque1</div>
+<div id='d391' class='colors'>
+bisque3</div>
+<div id='d392' class='colors'>
+DarkOrange1</div>
+<div id='d393' class='colors'>
+linen</div>
+<div id='d394' class='colors'>
+DarkOrange2</div>
+<div id='d395' class='colors'>
+DarkOrange3</div>
+<div id='d396' class='colors'>
+DarkOrange4</div>
+<div id='d397' class='colors'>
+peru</div>
+<div id='d398' class='colors'>
+tan1</div>
+<div id='d399' class='colors'>
+tan2</div>
+<div id='d400' class='colors'>
+tan3</div>
+<div id='d401' class='colors'>
+tan4</div>
+<div id='d402' class='colors'>
+PeachPuff</div>
+<div id='d403' class='colors'>
+PeachPuff1</div>
+<div id='d404' class='colors'>
+PeachPuff4</div>
+<div id='d405' class='colors'>
+PeachPuff2</div>
+<div id='d406' class='colors'>
+PeachPuff3</div>
+<div id='d407' class='colors'>
+SandyBrown</div>
+<div id='d408' class='colors'>
+seashell4</div>
+<div id='d409' class='colors'>
+seashell2</div>
+<div id='d410' class='colors'>
+seashell3</div>
+<div id='d411' class='colors'>
+chocolate</div>
+<div id='d412' class='colors'>
+chocolate1</div>
+<div id='d413' class='colors'>
+chocolate2</div>
+<div id='d414' class='colors'>
+chocolate3</div>
+<div id='d415' class='colors'>
+chocolate4</div>
+<div id='d416' class='colors'>
+SaddleBrown</div>
+<div id='d417' class='colors'>
+seashell</div>
+<div id='d418' class='colors'>
+seashell1</div>
+<div id='d419' class='colors'>
+sienna4</div>
+<div id='d420' class='colors'>
+sienna</div>
+<div id='d421' class='colors'>
+sienna1</div>
+<div id='d422' class='colors'>
+sienna2</div>
+<div id='d423' class='colors'>
+sienna3</div>
+<div id='d424' class='colors'>
+LightSalmon3</div>
+<div id='d425' class='colors'>
+LightSalmon</div>
+<div id='d426' class='colors'>
+LightSalmon1</div>
+<div id='d427' class='colors'>
+LightSalmon4</div>
+<div id='d428' class='colors'>
+LightSalmon2</div>
+<div id='d429' class='colors'>
+coral</div>
+<div id='d430' class='colors'>
+OrangeRed</div>
+<div id='d431' class='colors'>
+OrangeRed1</div>
+<div id='d432' class='colors'>
+OrangeRed2</div>
+<div id='d433' class='colors'>
+OrangeRed3</div>
+<div id='d434' class='colors'>
+OrangeRed4</div>
+<div id='d435' class='colors'>
+DarkSalmon</div>
+<div id='d436' class='colors'>
+salmon1</div>
+<div id='d437' class='colors'>
+salmon2</div>
+<div id='d438' class='colors'>
+salmon3</div>
+<div id='d439' class='colors'>
+salmon4</div>
+<div id='d440' class='colors'>
+coral1</div>
+<div id='d441' class='colors'>
+coral2</div>
+<div id='d442' class='colors'>
+coral3</div>
+<div id='d443' class='colors'>
+coral4</div>
+<div id='d444' class='colors'>
+tomato4</div>
+<div id='d445' class='colors'>
+tomato</div>
+<div id='d446' class='colors'>
+tomato1</div>
+<div id='d447' class='colors'>
+tomato2</div>
+<div id='d448' class='colors'>
+tomato3</div>
+<div id='d449' class='colors'>
+MistyRose4</div>
+<div id='d450' class='colors'>
+MistyRose2</div>
+<div id='d451' class='colors'>
+MistyRose</div>
+<div id='d452' class='colors'>
+MistyRose1</div>
+<div id='d453' class='colors'>
+salmon</div>
+<div id='d454' class='colors'>
+MistyRose3</div>
+<div id='d455' class='colors'>
+white</div>
+<div id='d456' class='colors'>
+gray100</div>
+<div id='d457' class='colors'>
+grey100</div>
+<div id='d458' class='colors'>
+grey100</div>
+<div id='d459' class='colors'>
+gray99</div>
+<div id='d460' class='colors'>
+grey99</div>
+<div id='d461' class='colors'>
+gray98</div>
+<div id='d462' class='colors'>
+grey98</div>
+<div id='d463' class='colors'>
+gray97</div>
+<div id='d464' class='colors'>
+grey97</div>
+<div id='d465' class='colors'>
+gray96</div>
+<div id='d466' class='colors'>
+grey96</div>
+<div id='d467' class='colors'>
+WhiteSmoke</div>
+<div id='d468' class='colors'>
+gray95</div>
+<div id='d469' class='colors'>
+grey95</div>
+<div id='d470' class='colors'>
+gray94</div>
+<div id='d471' class='colors'>
+grey94</div>
+<div id='d472' class='colors'>
+gray93</div>
+<div id='d473' class='colors'>
+grey93</div>
+<div id='d474' class='colors'>
+gray92</div>
+<div id='d475' class='colors'>
+grey92</div>
+<div id='d476' class='colors'>
+gray91</div>
+<div id='d477' class='colors'>
+grey91</div>
+<div id='d478' class='colors'>
+gray90</div>
+<div id='d479' class='colors'>
+grey90</div>
+<div id='d480' class='colors'>
+gray89</div>
+<div id='d481' class='colors'>
+grey89</div>
+<div id='d482' class='colors'>
+gray88</div>
+<div id='d483' class='colors'>
+grey88</div>
+<div id='d484' class='colors'>
+gray87</div>
+<div id='d485' class='colors'>
+grey87</div>
+<div id='d486' class='colors'>
+gainsboro</div>
+<div id='d487' class='colors'>
+gray86</div>
+<div id='d488' class='colors'>
+grey86</div>
+<div id='d489' class='colors'>
+gray85</div>
+<div id='d490' class='colors'>
+grey85</div>
+<div id='d491' class='colors'>
+gray84</div>
+<div id='d492' class='colors'>
+grey84</div>
+<div id='d493' class='colors'>
+gray83</div>
+<div id='d494' class='colors'>
+grey83</div>
+<div id='d495' class='colors'>
+LightGray</div>
+<div id='d496' class='colors'>
+LightGrey</div>
+<div id='d497' class='colors'>
+gray82</div>
+<div id='d498' class='colors'>
+grey82</div>
+<div id='d499' class='colors'>
+gray81</div>
+<div id='d500' class='colors'>
+grey81</div>
+<div id='d501' class='colors'>
+gray80</div>
+<div id='d502' class='colors'>
+grey80</div>
+<div id='d503' class='colors'>
+gray79</div>
+<div id='d504' class='colors'>
+grey79</div>
+<div id='d505' class='colors'>
+gray78</div>
+<div id='d506' class='colors'>
+grey78</div>
+<div id='d507' class='colors'>
+gray77</div>
+<div id='d508' class='colors'>
+grey77</div>
+<div id='d509' class='colors'>
+gray76</div>
+<div id='d510' class='colors'>
+grey76</div>
+<div id='d511' class='colors'>
+silver</div>
+<div id='d512' class='colors'>
+gray75</div>
+<div id='d513' class='colors'>
+grey75</div>
+<div id='d514' class='colors'>
+gray74</div>
+<div id='d515' class='colors'>
+grey74</div>
+<div id='d516' class='colors'>
+gray73</div>
+<div id='d517' class='colors'>
+grey73</div>
+<div id='d518' class='colors'>
+gray72</div>
+<div id='d519' class='colors'>
+grey72</div>
+<div id='d520' class='colors'>
+gray71</div>
+<div id='d521' class='colors'>
+grey71</div>
+<div id='d522' class='colors'>
+gray70</div>
+<div id='d523' class='colors'>
+grey70</div>
+<div id='d524' class='colors'>
+gray69</div>
+<div id='d525' class='colors'>
+grey69</div>
+<div id='d526' class='colors'>
+gray68</div>
+<div id='d527' class='colors'>
+grey68</div>
+<div id='d528' class='colors'>
+gray67</div>
+<div id='d529' class='colors'>
+grey67</div>
+<div id='d530' class='colors'>
+DarkGray</div>
+<div id='d531' class='colors'>
+DarkGrey</div>
+<div id='d532' class='colors'>
+gray66</div>
+<div id='d533' class='colors'>
+grey66</div>
+<div id='d534' class='colors'>
+gray65</div>
+<div id='d535' class='colors'>
+grey65</div>
+<div id='d536' class='colors'>
+gray64</div>
+<div id='d537' class='colors'>
+grey64</div>
+<div id='d538' class='colors'>
+gray63</div>
+<div id='d539' class='colors'>
+grey63</div>
+<div id='d540' class='colors'>
+gray62</div>
+<div id='d541' class='colors'>
+grey62</div>
+<div id='d542' class='colors'>
+gray61</div>
+<div id='d543' class='colors'>
+grey61</div>
+<div id='d544' class='colors'>
+gray60</div>
+<div id='d545' class='colors'>
+grey60</div>
+<div id='d546' class='colors'>
+gray59</div>
+<div id='d547' class='colors'>
+grey59</div>
+<div id='d548' class='colors'>
+gray58</div>
+<div id='d549' class='colors'>
+grey58</div>
+<div id='d550' class='colors'>
+gray57</div>
+<div id='d551' class='colors'>
+grey57</div>
+<div id='d552' class='colors'>
+gray56</div>
+<div id='d553' class='colors'>
+grey56</div>
+<div id='d554' class='colors'>
+gray55</div>
+<div id='d555' class='colors'>
+grey55</div>
+<div id='d556' class='colors'>
+gray54</div>
+<div id='d557' class='colors'>
+grey54</div>
+<div id='d558' class='colors'>
+gray53</div>
+<div id='d559' class='colors'>
+grey53</div>
+<div id='d560' class='colors'>
+gray52</div>
+<div id='d561' class='colors'>
+grey52</div>
+<div id='d562' class='colors'>
+gray51</div>
+<div id='d563' class='colors'>
+grey51</div>
+<div id='d564' class='colors'>
+fractal</div>
+<div id='d565' class='colors'>
+gray50</div>
+<div id='d566' class='colors'>
+grey50</div>
+<div id='d567' class='colors'>
+gray</div>
+<div id='d568' class='colors'>
+gray49</div>
+<div id='d569' class='colors'>
+grey49</div>
+<div id='d570' class='colors'>
+gray48</div>
+<div id='d571' class='colors'>
+grey48</div>
+<div id='d572' class='colors'>
+gray47</div>
+<div id='d573' class='colors'>
+grey47</div>
+<div id='d574' class='colors'>
+gray46</div>
+<div id='d575' class='colors'>
+grey46</div>
+<div id='d576' class='colors'>
+gray45</div>
+<div id='d577' class='colors'>
+grey45</div>
+<div id='d578' class='colors'>
+gray44</div>
+<div id='d579' class='colors'>
+grey44</div>
+<div id='d580' class='colors'>
+gray43</div>
+<div id='d581' class='colors'>
+grey43</div>
+<div id='d582' class='colors'>
+gray42</div>
+<div id='d583' class='colors'>
+grey42</div>
+<div id='d584' class='colors'>
+DimGray</div>
+<div id='d585' class='colors'>
+DimGrey</div>
+<div id='d586' class='colors'>
+gray41</div>
+<div id='d587' class='colors'>
+grey41</div>
+<div id='d588' class='colors'>
+gray40</div>
+<div id='d589' class='colors'>
+grey40</div>
+<div id='d590' class='colors'>
+gray39</div>
+<div id='d591' class='colors'>
+grey39</div>
+<div id='d592' class='colors'>
+gray38</div>
+<div id='d593' class='colors'>
+grey38</div>
+<div id='d594' class='colors'>
+gray37</div>
+<div id='d595' class='colors'>
+grey37</div>
+<div id='d596' class='colors'>
+gray36</div>
+<div id='d597' class='colors'>
+grey36</div>
+<div id='d598' class='colors'>
+gray35</div>
+<div id='d599' class='colors'>
+grey35</div>
+<div id='d600' class='colors'>
+gray34</div>
+<div id='d601' class='colors'>
+grey34</div>
+<div id='d602' class='colors'>
+gray33</div>
+<div id='d603' class='colors'>
+grey33</div>
+<div id='d604' class='colors'>
+gray32</div>
+<div id='d605' class='colors'>
+grey32</div>
+<div id='d606' class='colors'>
+gray31</div>
+<div id='d607' class='colors'>
+grey31</div>
+<div id='d608' class='colors'>
+gray30</div>
+<div id='d609' class='colors'>
+grey30</div>
+<div id='d610' class='colors'>
+gray29</div>
+<div id='d611' class='colors'>
+grey29</div>
+<div id='d612' class='colors'>
+gray28</div>
+<div id='d613' class='colors'>
+grey28</div>
+<div id='d614' class='colors'>
+gray27</div>
+<div id='d615' class='colors'>
+grey27</div>
+<div id='d616' class='colors'>
+gray26</div>
+<div id='d617' class='colors'>
+grey26</div>
+<div id='d618' class='colors'>
+gray25</div>
+<div id='d619' class='colors'>
+grey25</div>
+<div id='d620' class='colors'>
+gray24</div>
+<div id='d621' class='colors'>
+grey24</div>
+<div id='d622' class='colors'>
+gray23</div>
+<div id='d623' class='colors'>
+grey23</div>
+<div id='d624' class='colors'>
+gray22</div>
+<div id='d625' class='colors'>
+grey22</div>
+<div id='d626' class='colors'>
+gray21</div>
+<div id='d627' class='colors'>
+grey21</div>
+<div id='d628' class='colors'>
+gray20</div>
+<div id='d629' class='colors'>
+grey20</div>
+<div id='d630' class='colors'>
+gray19</div>
+<div id='d631' class='colors'>
+grey19</div>
+<div id='d632' class='colors'>
+gray18</div>
+<div id='d633' class='colors'>
+grey18</div>
+<div id='d634' class='colors'>
+gray17</div>
+<div id='d635' class='colors'>
+grey17</div>
+<div id='d636' class='colors'>
+gray16</div>
+<div id='d637' class='colors'>
+grey16</div>
+<div id='d638' class='colors'>
+gray15</div>
+<div id='d639' class='colors'>
+grey15</div>
+<div id='d640' class='colors'>
+gray14</div>
+<div id='d641' class='colors'>
+grey14</div>
+<div id='d642' class='colors'>
+gray13</div>
+<div id='d643' class='colors'>
+grey13</div>
+<div id='d644' class='colors'>
+gray12</div>
+<div id='d645' class='colors'>
+grey12</div>
+<div id='d646' class='colors'>
+gray11</div>
+<div id='d647' class='colors'>
+grey11</div>
+<div id='d648' class='colors'>
+gray10</div>
+<div id='d649' class='colors'>
+grey10</div>
+<div id='d650' class='colors'>
+gray9</div>
+<div id='d651' class='colors'>
+grey9</div>
+<div id='d652' class='colors'>
+gray8</div>
+<div id='d653' class='colors'>
+grey8</div>
+<div id='d654' class='colors'>
+gray7</div>
+<div id='d655' class='colors'>
+grey7</div>
+<div id='d656' class='colors'>
+gray6</div>
+<div id='d657' class='colors'>
+grey6</div>
+<div id='d658' class='colors'>
+gray5</div>
+<div id='d659' class='colors'>
+grey5</div>
+<div id='d660' class='colors'>
+gray4</div>
+<div id='d661' class='colors'>
+grey4</div>
+<div id='d662' class='colors'>
+gray3</div>
+<div id='d663' class='colors'>
+grey3</div>
+<div id='d664' class='colors'>
+gray2</div>
+<div id='d665' class='colors'>
+grey2</div>
+<div id='d666' class='colors'>
+gray1</div>
+<div id='d667' class='colors'>
+grey1</div>
+<div id='d668' class='colors'>
+black</div>
+<div id='d669' class='colors'>
+gray0</div>
+<div id='d670' class='colors'>
+grey0</div>
+<div id='d671' class='colors'>
+opaque</div>
+<div id='d672' class='colors'>
+none</div>
+<div id='d673' class='colors'>
+transparent</div>
+</div>
+
+<div id='colornames'>
+WHERE THE COLORNAMES WILL GO
+</div>
+
+<div id='hexswitch'>CLICK TO SHOW HEXES</div>
+<div id='infoswitch'>CLICK TO SHOW INFO</div>
+<script type='text/javascript' src='js/jquery-1.6.4.min.js'></script>
+<script type='text/javascript' src='js/colordict.js'></script>
+
+<script type='text/javascript'>
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newwidth = goldenize(result)
+ widthval = newwidth.toString()+'px'
+ $(idandselectr).css('width', widthval)
+ }
+makegolden('.colors', 'height')
+
+
+//remove content this function takes the name out of the divs
+infoswitch = false;
+function removecontent()
+ {
+ if(infoswitch == false)
+ {
+ $('#infoswitch').click(function()
+ {
+ infoswitch = true
+ if(infoswitch == true){
+ $('.colors').html("")
+ }
+ })
+ }
+ if(infoswitch == true)
+ {
+ $('#infoswitch').click(function()
+ {
+ infoswitch = false
+ })
+ }
+ }
+removecontent()
+
+function colorToHex(color)
+{
+ if (color.substr(0, 1) === '#') {
+ return color;
+ }
+ var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color);
+
+ var red = parseInt(digits[2]);
+ var green = parseInt(digits[3]);
+ var blue = parseInt(digits[4]);
+
+ var rgb = blue | (green << 8) | (red << 16);
+ return digits[1] + '#' + rgb.toString(16);
+};
+
+//takes a div name and returns a colorname
+
+function showcolorname(divstr)
+
+ {
+ bgcolor = $('#'+divstr).css('background-color')
+ lowercasehex = colorToHex(bgcolor)
+ hex = lowercasehex.toUpperCase()
+ imname = hextoname[hex]
+ if (hexes == true)
+ {
+ imname = hex
+ }
+ return imname
+ }
+function bigname(divstr)
+ {
+ colorname = showcolorname(divstr)
+ $('#colornames').html(colorname)
+ }
+function writeit(text)
+ {
+ $('#colornames').append(text)
+ }
+function makebig(divstr)
+ {
+ firstheight = $('#'+divstr).height()
+ newheight = goldenize(firstheight)
+ $('#'+divstr).height(newheight)
+ }
+function makesmall(divstr)
+ {
+ oldheight = $('.colors').height()
+ $('#'+divstr).height(oldheight)
+ }
+$('.colors').hover(function() {
+ bigname(this.id);
+ makebig(this.id);
+ makegolden('#'+this.id, 'height')},
+function(){
+ makesmall(this.id);
+ makegolden('#'+this.id, 'height')
+});
+$(".colors").hover(function(){
+$('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+});
+$('body').css('background-color', 'black')
+$('.colors').css('margin-top', '2px')
+var hexes = false
+function hexswitch()
+ {
+ if(hexes == false)
+ {
+ $('#hexswitch').html('CLICK TO SHOW COLOR NAMES')
+ hexes = true;
+ }
+
+ else
+ {
+ $('#hexswitch').html('CLICK TO SHOW HEX NAMES')
+ hexes = false;
+ }
+ }
+$('#hexswitch').click(function(){hexswitch()})
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/colors/test.html b/frontend/imgrid/colors/colors/test.html
new file mode 100755
index 0000000..1912ebf
--- /dev/null
+++ b/frontend/imgrid/colors/colors/test.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<!--<link rel="stylesheet" href="css/normalize.css">-->
+<head>
+ <style type='text/css'>
+ #master
+ {
+ width:400px;
+ font-size:0;
+ }
+ .slaves
+ {
+ width:100px;
+ background-color:gray;
+ height:40px;
+ display:inline-block;
+ }
+ </style>
+
+
+</head>
+<body>
+
+<div id='master'>
+
+<div class='slaves' style='background-color:pink'></div>
+<div class='slaves' style='background-color:blue'></div>
+<div class='slaves' style='background-color:dodgerblue'></div>
+<div class='slaves' style='background-color:red'></div>
+
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+</div>
+<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
+<!--<script type='text/javascript' src='jquery.js'></script>-->
+<script type='text/javascript'>
+$('.slaves').mouseover(function()
+ {
+ $(this).css('width','120px')
+ $('#master').css('width','420')
+ }).mouseout(function()
+ {
+ $(this).css({'width':'100px'})
+ $('#master').css('width','420')
+
+ });
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/colors/vase.gif b/frontend/imgrid/colors/colors/vase.gif
new file mode 100755
index 0000000..dc1c104
--- /dev/null
+++ b/frontend/imgrid/colors/colors/vase.gif
Binary files differ
diff --git a/frontend/imgrid/colors/colors/vase.png b/frontend/imgrid/colors/colors/vase.png
new file mode 100755
index 0000000..153e72b
--- /dev/null
+++ b/frontend/imgrid/colors/colors/vase.png
Binary files differ
diff --git a/frontend/imgrid/colors/colors/vaseshim.png b/frontend/imgrid/colors/colors/vaseshim.png
new file mode 100755
index 0000000..7dbd352
--- /dev/null
+++ b/frontend/imgrid/colors/colors/vaseshim.png
Binary files differ
diff --git a/frontend/imgrid/colors/colors/whiteshim.png b/frontend/imgrid/colors/colors/whiteshim.png
new file mode 100755
index 0000000..6b58334
--- /dev/null
+++ b/frontend/imgrid/colors/colors/whiteshim.png
Binary files differ
diff --git a/frontend/imgrid/colors/grayshim.png b/frontend/imgrid/colors/grayshim.png
new file mode 100755
index 0000000..6f71223
--- /dev/null
+++ b/frontend/imgrid/colors/grayshim.png
Binary files differ
diff --git a/frontend/imgrid/colors/hoverbutton.png b/frontend/imgrid/colors/hoverbutton.png
new file mode 100755
index 0000000..b14281e
--- /dev/null
+++ b/frontend/imgrid/colors/hoverbutton.png
Binary files differ
diff --git a/frontend/imgrid/colors/index.html b/frontend/imgrid/colors/index.html
new file mode 100755
index 0000000..93b1a9b
--- /dev/null
+++ b/frontend/imgrid/colors/index.html
@@ -0,0 +1,3507 @@
+<html>
+<head>
+
+<style type='text/css'>
+
+body
+{
+margin:0;
+}
+
+#colorpicker
+{
+
+width:100%;
+font-family:helvetica;
+font-size:10px;
+//background-color: gray;
+//background-image: url("http://asdf.us/im/6f/gradient_bgdither_1321255670_pepper.gif");
+background-color: black;
+background-image: url("http://dump.fm/static/img/bg.dither.gif")
+
+}
+
+#container div
+{
+text-align:left;
+display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+min-height: 30px;
+zoom: 1;
+word-wrap: break-word;
+*display: inline;
+cursor:pointer;
+}
+
+#container
+{
+margin:0 auto;
+width:31%;
+padding-top:100px;
+padding-right:10px;
+padding-left:10px;
+text-align:center;
+}
+
+#colornames
+{
+color:white;
+position:fixed;
+font-size:50px;
+top:50px;
+left:2%;
+width:400px;
+}
+
+#switches
+ {
+ position:fixed;
+ top:20px;
+ right:1%;
+ height:400px;
+ width:300px;
+ font-size:20px;
+ border-style: groove;
+ border-width: 4px;
+ background-color:gray;
+ padding:2px;
+ box-shadow: 10px 10px 5px #141414;
+ }
+
+#infoswitch, #hexswitch, #backgroundswitch
+ {
+ background-image:url(http://asdf.us/im/58/gradient_whitegray80_1321305183_1321305241_pepper.jpg);
+ cursor:pointer;
+ }
+#preview
+ {
+ height:150px;
+ }
+
+
+#holder
+ {
+ float:bottom;
+ }
+
+#transparent
+ {
+ font-size:12px;
+ }
+#namespace
+ {
+ width:inherit;
+ }
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{
+height:30;
+width:10px;
+}
+</style></head><body>
+<div id='colorpicker'>
+<div id='container'>
+<div id='d0' class='colors'>
+snow</div>
+<div id='d1' class='colors'>
+snow1</div>
+<div id='d2' class='colors'>
+snow2</div>
+<div id='d3' class='colors'>
+RosyBrown1</div>
+<div id='d4' class='colors'>
+RosyBrown2</div>
+<div id='d5' class='colors'>
+snow3</div>
+<div id='d6' class='colors'>
+LightCoral</div>
+<div id='d7' class='colors'>
+IndianRed1</div>
+<div id='d8' class='colors'>
+RosyBrown3</div>
+<div id='d9' class='colors'>
+IndianRed2</div>
+<div id='d10' class='colors'>
+RosyBrown</div>
+<div id='d11' class='colors'>
+brown1</div>
+<div id='d12' class='colors'>
+firebrick1</div>
+<div id='d13' class='colors'>
+brown2</div>
+<div id='d14' class='colors'>
+IndianRed</div>
+<div id='d15' class='colors'>
+IndianRed3</div>
+<div id='d16' class='colors'>
+firebrick2</div>
+<div id='d17' class='colors'>
+snow4</div>
+<div id='d18' class='colors'>
+brown3</div>
+<div id='d19' class='colors'>
+red</div>
+<div id='d20' class='colors'>
+red1</div>
+<div id='d21' class='colors'>
+RosyBrown4</div>
+<div id='d22' class='colors'>
+firebrick3</div>
+<div id='d23' class='colors'>
+red2</div>
+<div id='d24' class='colors'>
+firebrick</div>
+<div id='d25' class='colors'>
+brown</div>
+<div id='d26' class='colors'>
+red3</div>
+<div id='d27' class='colors'>
+IndianRed4</div>
+<div id='d28' class='colors'>
+brown4</div>
+<div id='d29' class='colors'>
+firebrick4</div>
+<div id='d30' class='colors'>
+DarkRed</div>
+<div id='d31' class='colors'>
+red4</div>
+<div id='d32' class='colors'>
+maroon</div>
+<div id='d33' class='colors'>
+LightPink1</div>
+<div id='d34' class='colors'>
+LightPink3</div>
+<div id='d35' class='colors'>
+LightPink4</div>
+<div id='d36' class='colors'>
+LightPink2</div>
+<div id='d37' class='colors'>
+LightPink</div>
+<div id='d38' class='colors'>
+pink</div>
+<div id='d39' class='colors'>
+crimson</div>
+<div id='d40' class='colors'>
+pink1</div>
+<div id='d41' class='colors'>
+pink2</div>
+<div id='d42' class='colors'>
+pink3</div>
+<div id='d43' class='colors'>
+pink4</div>
+<div id='d44' class='colors'>
+PaleVioletRed4</div>
+<div id='d45' class='colors'>
+PaleVioletRed</div>
+<div id='d46' class='colors'>
+PaleVioletRed2</div>
+<div id='d47' class='colors'>
+PaleVioletRed1</div>
+<div id='d48' class='colors'>
+PaleVioletRed3</div>
+<div id='d49' class='colors'>
+LavenderBlush</div>
+<div id='d50' class='colors'>
+LavenderBlush1</div>
+<div id='d51' class='colors'>
+LavenderBlush3</div>
+<div id='d52' class='colors'>
+LavenderBlush2</div>
+<div id='d53' class='colors'>
+LavenderBlush4</div>
+<div id='d54' class='colors'>
+maroon</div>
+<div id='d55' class='colors'>
+HotPink3</div>
+<div id='d56' class='colors'>
+VioletRed3</div>
+<div id='d57' class='colors'>
+VioletRed1</div>
+<div id='d58' class='colors'>
+VioletRed2</div>
+<div id='d59' class='colors'>
+VioletRed4</div>
+<div id='d60' class='colors'>
+HotPink2</div>
+<div id='d61' class='colors'>
+HotPink1</div>
+<div id='d62' class='colors'>
+HotPink4</div>
+<div id='d63' class='colors'>
+HotPink</div>
+<div id='d64' class='colors'>
+DeepPink</div>
+<div id='d65' class='colors'>
+DeepPink1</div>
+<div id='d66' class='colors'>
+DeepPink2</div>
+<div id='d67' class='colors'>
+DeepPink3</div>
+<div id='d68' class='colors'>
+DeepPink4</div>
+<div id='d69' class='colors'>
+maroon1</div>
+<div id='d70' class='colors'>
+maroon2</div>
+<div id='d71' class='colors'>
+maroon3</div>
+<div id='d72' class='colors'>
+maroon4</div>
+<div id='d73' class='colors'>
+MediumVioletRed</div>
+<div id='d74' class='colors'>
+VioletRed</div>
+<div id='d75' class='colors'>
+orchid2</div>
+<div id='d76' class='colors'>
+orchid</div>
+<div id='d77' class='colors'>
+orchid1</div>
+<div id='d78' class='colors'>
+orchid3</div>
+<div id='d79' class='colors'>
+orchid4</div>
+<div id='d80' class='colors'>
+thistle1</div>
+<div id='d81' class='colors'>
+thistle2</div>
+<div id='d82' class='colors'>
+plum1</div>
+<div id='d83' class='colors'>
+plum2</div>
+<div id='d84' class='colors'>
+thistle</div>
+<div id='d85' class='colors'>
+thistle3</div>
+<div id='d86' class='colors'>
+plum</div>
+<div id='d87' class='colors'>
+violet</div>
+<div id='d88' class='colors'>
+plum3</div>
+<div id='d89' class='colors'>
+thistle4</div>
+<div id='d90' class='colors'>
+fuchsia</div>
+<div id='d91' class='colors'>
+magenta</div>
+<div id='d92' class='colors'>
+magenta1</div>
+<div id='d93' class='colors'>
+plum4</div>
+<div id='d94' class='colors'>
+magenta2</div>
+<div id='d95' class='colors'>
+magenta3</div>
+<div id='d96' class='colors'>
+DarkMagenta</div>
+<div id='d97' class='colors'>
+magenta4</div>
+<div id='d98' class='colors'>
+purple</div>
+<div id='d99' class='colors'>
+MediumOrchid</div>
+<div id='d100' class='colors'>
+MediumOrchid1</div>
+<div id='d101' class='colors'>
+MediumOrchid2</div>
+<div id='d102' class='colors'>
+MediumOrchid3</div>
+<div id='d103' class='colors'>
+MediumOrchid4</div>
+<div id='d104' class='colors'>
+DarkViolet</div>
+<div id='d105' class='colors'>
+DarkOrchid</div>
+<div id='d106' class='colors'>
+DarkOrchid1</div>
+<div id='d107' class='colors'>
+DarkOrchid3</div>
+<div id='d108' class='colors'>
+DarkOrchid2</div>
+<div id='d109' class='colors'>
+DarkOrchid4</div>
+<div id='d110' class='colors'>
+purple</div>
+<div id='d111' class='colors'>
+indigo</div>
+<div id='d112' class='colors'>
+BlueViolet</div>
+<div id='d113' class='colors'>
+purple2</div>
+<div id='d114' class='colors'>
+purple3</div>
+<div id='d115' class='colors'>
+purple4</div>
+<div id='d116' class='colors'>
+purple1</div>
+<div id='d117' class='colors'>
+MediumPurple</div>
+<div id='d118' class='colors'>
+MediumPurple1</div>
+<div id='d119' class='colors'>
+MediumPurple2</div>
+<div id='d120' class='colors'>
+MediumPurple3</div>
+<div id='d121' class='colors'>
+MediumPurple4</div>
+<div id='d122' class='colors'>
+DarkSlateBlue</div>
+<div id='d123' class='colors'>
+LightSlateBlue</div>
+<div id='d124' class='colors'>
+MediumSlateBlue</div>
+<div id='d125' class='colors'>
+SlateBlue</div>
+<div id='d126' class='colors'>
+SlateBlue1</div>
+<div id='d127' class='colors'>
+SlateBlue2</div>
+<div id='d128' class='colors'>
+SlateBlue3</div>
+<div id='d129' class='colors'>
+SlateBlue4</div>
+<div id='d130' class='colors'>
+GhostWhite</div>
+<div id='d131' class='colors'>
+lavender</div>
+<div id='d132' class='colors'>
+blue</div>
+<div id='d133' class='colors'>
+blue1</div>
+<div id='d134' class='colors'>
+blue2</div>
+<div id='d135' class='colors'>
+blue3</div>
+<div id='d136' class='colors'>
+MediumBlue</div>
+<div id='d137' class='colors'>
+blue4</div>
+<div id='d138' class='colors'>
+DarkBlue</div>
+<div id='d139' class='colors'>
+MidnightBlue</div>
+<div id='d140' class='colors'>
+navy</div>
+<div id='d141' class='colors'>
+NavyBlue</div>
+<div id='d142' class='colors'>
+RoyalBlue</div>
+<div id='d143' class='colors'>
+RoyalBlue1</div>
+<div id='d144' class='colors'>
+RoyalBlue2</div>
+<div id='d145' class='colors'>
+RoyalBlue3</div>
+<div id='d146' class='colors'>
+RoyalBlue4</div>
+<div id='d147' class='colors'>
+CornflowerBlue</div>
+<div id='d148' class='colors'>
+LightSteelBlue</div>
+<div id='d149' class='colors'>
+LightSteelBlue1</div>
+<div id='d150' class='colors'>
+LightSteelBlue2</div>
+<div id='d151' class='colors'>
+LightSteelBlue3</div>
+<div id='d152' class='colors'>
+LightSteelBlue4</div>
+<div id='d153' class='colors'>
+SlateGray4</div>
+<div id='d154' class='colors'>
+SlateGray1</div>
+<div id='d155' class='colors'>
+SlateGray2</div>
+<div id='d156' class='colors'>
+SlateGray3</div>
+<div id='d157' class='colors'>
+LightSlateGray</div>
+<div id='d158' class='colors'>
+LightSlateGrey</div>
+<div id='d159' class='colors'>
+SlateGray</div>
+<div id='d160' class='colors'>
+SlateGrey</div>
+<div id='d161' class='colors'>
+DodgerBlue</div>
+<div id='d162' class='colors'>
+DodgerBlue1</div>
+<div id='d163' class='colors'>
+DodgerBlue2</div>
+<div id='d164' class='colors'>
+DodgerBlue4</div>
+<div id='d165' class='colors'>
+DodgerBlue3</div>
+<div id='d166' class='colors'>
+AliceBlue</div>
+<div id='d167' class='colors'>
+SteelBlue4</div>
+<div id='d168' class='colors'>
+SteelBlue</div>
+<div id='d169' class='colors'>
+SteelBlue1</div>
+<div id='d170' class='colors'>
+SteelBlue2</div>
+<div id='d171' class='colors'>
+SteelBlue3</div>
+<div id='d172' class='colors'>
+SkyBlue4</div>
+<div id='d173' class='colors'>
+SkyBlue1</div>
+<div id='d174' class='colors'>
+SkyBlue2</div>
+<div id='d175' class='colors'>
+SkyBlue3</div>
+<div id='d176' class='colors'>
+LightSkyBlue</div>
+<div id='d177' class='colors'>
+LightSkyBlue4</div>
+<div id='d178' class='colors'>
+LightSkyBlue1</div>
+<div id='d179' class='colors'>
+LightSkyBlue2</div>
+<div id='d180' class='colors'>
+LightSkyBlue3</div>
+<div id='d181' class='colors'>
+SkyBlue</div>
+<div id='d182' class='colors'>
+LightBlue3</div>
+<div id='d183' class='colors'>
+DeepSkyBlue</div>
+<div id='d184' class='colors'>
+DeepSkyBlue1</div>
+<div id='d185' class='colors'>
+DeepSkyBlue2</div>
+<div id='d186' class='colors'>
+DeepSkyBlue4</div>
+<div id='d187' class='colors'>
+DeepSkyBlue3</div>
+<div id='d188' class='colors'>
+LightBlue1</div>
+<div id='d189' class='colors'>
+LightBlue2</div>
+<div id='d190' class='colors'>
+LightBlue</div>
+<div id='d191' class='colors'>
+LightBlue4</div>
+<div id='d192' class='colors'>
+PowderBlue</div>
+<div id='d193' class='colors'>
+CadetBlue1</div>
+<div id='d194' class='colors'>
+CadetBlue2</div>
+<div id='d195' class='colors'>
+CadetBlue3</div>
+<div id='d196' class='colors'>
+CadetBlue4</div>
+<div id='d197' class='colors'>
+turquoise1</div>
+<div id='d198' class='colors'>
+turquoise2</div>
+<div id='d199' class='colors'>
+turquoise3</div>
+<div id='d200' class='colors'>
+turquoise4</div>
+<div id='d201' class='colors'>
+cadet blue</div>
+<div id='d202' class='colors'>
+CadetBlue</div>
+<div id='d203' class='colors'>
+DarkTurquoise</div>
+<div id='d204' class='colors'>
+azure</div>
+<div id='d205' class='colors'>
+azure1</div>
+<div id='d206' class='colors'>
+LightCyan</div>
+<div id='d207' class='colors'>
+LightCyan1</div>
+<div id='d208' class='colors'>
+azure2</div>
+<div id='d209' class='colors'>
+LightCyan2</div>
+<div id='d210' class='colors'>
+PaleTurquoise1</div>
+<div id='d211' class='colors'>
+PaleTurquoise</div>
+<div id='d212' class='colors'>
+PaleTurquoise2</div>
+<div id='d213' class='colors'>
+DarkSlateGray1</div>
+<div id='d214' class='colors'>
+azure3</div>
+<div id='d215' class='colors'>
+LightCyan3</div>
+<div id='d216' class='colors'>
+DarkSlateGray2</div>
+<div id='d217' class='colors'>
+PaleTurquoise3</div>
+<div id='d218' class='colors'>
+DarkSlateGray3</div>
+<div id='d219' class='colors'>
+azure4</div>
+<div id='d220' class='colors'>
+LightCyan4</div>
+<div id='d221' class='colors'>
+aqua</div>
+<div id='d222' class='colors'>
+cyan</div>
+<div id='d223' class='colors'>
+cyan1</div>
+<div id='d224' class='colors'>
+PaleTurquoise4</div>
+<div id='d225' class='colors'>
+cyan2</div>
+<div id='d226' class='colors'>
+DarkSlateGray4</div>
+<div id='d227' class='colors'>
+cyan3</div>
+<div id='d228' class='colors'>
+cyan4</div>
+<div id='d229' class='colors'>
+DarkCyan</div>
+<div id='d230' class='colors'>
+teal</div>
+<div id='d231' class='colors'>
+DarkSlateGray</div>
+<div id='d232' class='colors'>
+DarkSlateGrey</div>
+<div id='d233' class='colors'>
+MediumTurquoise</div>
+<div id='d234' class='colors'>
+LightSeaGreen</div>
+<div id='d235' class='colors'>
+turquoise</div>
+<div id='d236' class='colors'>
+aquamarine4</div>
+<div id='d237' class='colors'>
+aquamarine</div>
+<div id='d238' class='colors'>
+aquamarine1</div>
+<div id='d239' class='colors'>
+aquamarine2</div>
+<div id='d240' class='colors'>
+aquamarine3</div>
+<div id='d241' class='colors'>
+MediumAquamarine</div>
+<div id='d242' class='colors'>
+MediumSpringGreen</div>
+<div id='d243' class='colors'>
+MintCream</div>
+<div id='d244' class='colors'>
+SpringGreen</div>
+<div id='d245' class='colors'>
+SpringGreen1</div>
+<div id='d246' class='colors'>
+SpringGreen2</div>
+<div id='d247' class='colors'>
+SpringGreen3</div>
+<div id='d248' class='colors'>
+SpringGreen4</div>
+<div id='d249' class='colors'>
+MediumSeaGreen</div>
+<div id='d250' class='colors'>
+SeaGreen</div>
+<div id='d251' class='colors'>
+SeaGreen3</div>
+<div id='d252' class='colors'>
+SeaGreen1</div>
+<div id='d253' class='colors'>
+SeaGreen4</div>
+<div id='d254' class='colors'>
+SeaGreen2</div>
+<div id='d255' class='colors'>
+MediumForestGreen</div>
+<div id='d256' class='colors'>
+honeydew</div>
+<div id='d257' class='colors'>
+honeydew1</div>
+<div id='d258' class='colors'>
+honeydew2</div>
+<div id='d259' class='colors'>
+DarkSeaGreen1</div>
+<div id='d260' class='colors'>
+DarkSeaGreen2</div>
+<div id='d261' class='colors'>
+PaleGreen1</div>
+<div id='d262' class='colors'>
+PaleGreen</div>
+<div id='d263' class='colors'>
+honeydew3</div>
+<div id='d264' class='colors'>
+LightGreen</div>
+<div id='d265' class='colors'>
+PaleGreen2</div>
+<div id='d266' class='colors'>
+DarkSeaGreen3</div>
+<div id='d267' class='colors'>
+DarkSeaGreen</div>
+<div id='d268' class='colors'>
+PaleGreen3</div>
+<div id='d269' class='colors'>
+honeydew4</div>
+<div id='d270' class='colors'>
+green1</div>
+<div id='d271' class='colors'>
+lime</div>
+<div id='d272' class='colors'>
+LimeGreen</div>
+<div id='d273' class='colors'>
+DarkSeaGreen4</div>
+<div id='d274' class='colors'>
+green2</div>
+<div id='d275' class='colors'>
+PaleGreen4</div>
+<div id='d276' class='colors'>
+green3</div>
+<div id='d277' class='colors'>
+ForestGreen</div>
+<div id='d278' class='colors'>
+green4</div>
+<div id='d279' class='colors'>
+green</div>
+<div id='d280' class='colors'>
+DarkGreen</div>
+<div id='d281' class='colors'>
+LawnGreen</div>
+<div id='d282' class='colors'>
+chartreuse</div>
+<div id='d283' class='colors'>
+chartreuse1</div>
+<div id='d284' class='colors'>
+chartreuse2</div>
+<div id='d285' class='colors'>
+chartreuse3</div>
+<div id='d286' class='colors'>
+chartreuse4</div>
+<div id='d287' class='colors'>
+GreenYellow</div>
+<div id='d288' class='colors'>
+DarkOliveGreen3</div>
+<div id='d289' class='colors'>
+DarkOliveGreen1</div>
+<div id='d290' class='colors'>
+DarkOliveGreen2</div>
+<div id='d291' class='colors'>
+DarkOliveGreen4</div>
+<div id='d292' class='colors'>
+DarkOliveGreen</div>
+<div id='d293' class='colors'>
+OliveDrab</div>
+<div id='d294' class='colors'>
+OliveDrab1</div>
+<div id='d295' class='colors'>
+OliveDrab2</div>
+<div id='d296' class='colors'>
+OliveDrab3</div>
+<div id='d297' class='colors'>
+YellowGreen</div>
+<div id='d298' class='colors'>
+OliveDrab4</div>
+<div id='d299' class='colors'>
+ivory</div>
+<div id='d300' class='colors'>
+ivory1</div>
+<div id='d301' class='colors'>
+LightYellow</div>
+<div id='d302' class='colors'>
+LightYellow1</div>
+<div id='d303' class='colors'>
+beige</div>
+<div id='d304' class='colors'>
+ivory2</div>
+<div id='d305' class='colors'>
+LightGoldenrodYellow</div>
+<div id='d306' class='colors'>
+LightYellow2</div>
+<div id='d307' class='colors'>
+ivory3</div>
+<div id='d308' class='colors'>
+LightYellow3</div>
+<div id='d309' class='colors'>
+ivory4</div>
+<div id='d310' class='colors'>
+LightYellow4</div>
+<div id='d311' class='colors'>
+yellow</div>
+<div id='d312' class='colors'>
+yellow1</div>
+<div id='d313' class='colors'>
+yellow2</div>
+<div id='d314' class='colors'>
+yellow3</div>
+<div id='d315' class='colors'>
+yellow4</div>
+<div id='d316' class='colors'>
+olive</div>
+<div id='d317' class='colors'>
+DarkKhaki</div>
+<div id='d318' class='colors'>
+khaki2</div>
+<div id='d319' class='colors'>
+LemonChiffon4</div>
+<div id='d320' class='colors'>
+khaki1</div>
+<div id='d321' class='colors'>
+khaki3</div>
+<div id='d322' class='colors'>
+khaki4</div>
+<div id='d323' class='colors'>
+PaleGoldenrod</div>
+<div id='d324' class='colors'>
+LemonChiffon</div>
+<div id='d325' class='colors'>
+LemonChiffon1</div>
+<div id='d326' class='colors'>
+khaki</div>
+<div id='d327' class='colors'>
+LemonChiffon3</div>
+<div id='d328' class='colors'>
+LemonChiffon2</div>
+<div id='d329' class='colors'>
+MediumGoldenRod</div>
+<div id='d330' class='colors'>
+cornsilk4</div>
+<div id='d331' class='colors'>
+gold</div>
+<div id='d332' class='colors'>
+gold1</div>
+<div id='d333' class='colors'>
+gold2</div>
+<div id='d334' class='colors'>
+gold3</div>
+<div id='d335' class='colors'>
+gold4</div>
+<div id='d336' class='colors'>
+LightGoldenrod</div>
+<div id='d337' class='colors'>
+LightGoldenrod4</div>
+<div id='d338' class='colors'>
+LightGoldenrod1</div>
+<div id='d339' class='colors'>
+LightGoldenrod3</div>
+<div id='d340' class='colors'>
+LightGoldenrod2</div>
+<div id='d341' class='colors'>
+cornsilk3</div>
+<div id='d342' class='colors'>
+cornsilk2</div>
+<div id='d343' class='colors'>
+cornsilk</div>
+<div id='d344' class='colors'>
+cornsilk1</div>
+<div id='d345' class='colors'>
+goldenrod</div>
+<div id='d346' class='colors'>
+goldenrod1</div>
+<div id='d347' class='colors'>
+goldenrod2</div>
+<div id='d348' class='colors'>
+goldenrod3</div>
+<div id='d349' class='colors'>
+goldenrod4</div>
+<div id='d350' class='colors'>
+DarkGoldenrod</div>
+<div id='d351' class='colors'>
+DarkGoldenrod1</div>
+<div id='d352' class='colors'>
+DarkGoldenrod2</div>
+<div id='d353' class='colors'>
+DarkGoldenrod3</div>
+<div id='d354' class='colors'>
+DarkGoldenrod4</div>
+<div id='d355' class='colors'>
+FloralWhite</div>
+<div id='d356' class='colors'>
+wheat2</div>
+<div id='d357' class='colors'>
+OldLace</div>
+<div id='d358' class='colors'>
+wheat</div>
+<div id='d359' class='colors'>
+wheat1</div>
+<div id='d360' class='colors'>
+wheat3</div>
+<div id='d361' class='colors'>
+orange</div>
+<div id='d362' class='colors'>
+orange1</div>
+<div id='d363' class='colors'>
+orange2</div>
+<div id='d364' class='colors'>
+orange3</div>
+<div id='d365' class='colors'>
+orange4</div>
+<div id='d366' class='colors'>
+wheat4</div>
+<div id='d367' class='colors'>
+moccasin</div>
+<div id='d368' class='colors'>
+PapayaWhip</div>
+<div id='d369' class='colors'>
+NavajoWhite3</div>
+<div id='d370' class='colors'>
+BlanchedAlmond</div>
+<div id='d371' class='colors'>
+NavajoWhite</div>
+<div id='d372' class='colors'>
+NavajoWhite1</div>
+<div id='d373' class='colors'>
+NavajoWhite2</div>
+<div id='d374' class='colors'>
+NavajoWhite4</div>
+<div id='d375' class='colors'>
+AntiqueWhite4</div>
+<div id='d376' class='colors'>
+AntiqueWhite</div>
+<div id='d377' class='colors'>
+tan</div>
+<div id='d378' class='colors'>
+bisque4</div>
+<div id='d379' class='colors'>
+burlywood</div>
+<div id='d380' class='colors'>
+AntiqueWhite2</div>
+<div id='d381' class='colors'>
+burlywood1</div>
+<div id='d382' class='colors'>
+burlywood3</div>
+<div id='d383' class='colors'>
+burlywood2</div>
+<div id='d384' class='colors'>
+AntiqueWhite1</div>
+<div id='d385' class='colors'>
+burlywood4</div>
+<div id='d386' class='colors'>
+AntiqueWhite3</div>
+<div id='d387' class='colors'>
+DarkOrange</div>
+<div id='d388' class='colors'>
+bisque2</div>
+<div id='d389' class='colors'>
+bisque</div>
+<div id='d390' class='colors'>
+bisque1</div>
+<div id='d391' class='colors'>
+bisque3</div>
+<div id='d392' class='colors'>
+DarkOrange1</div>
+<div id='d393' class='colors'>
+linen</div>
+<div id='d394' class='colors'>
+DarkOrange2</div>
+<div id='d395' class='colors'>
+DarkOrange3</div>
+<div id='d396' class='colors'>
+DarkOrange4</div>
+<div id='d397' class='colors'>
+peru</div>
+<div id='d398' class='colors'>
+tan1</div>
+<div id='d399' class='colors'>
+tan2</div>
+<div id='d400' class='colors'>
+tan3</div>
+<div id='d401' class='colors'>
+tan4</div>
+<div id='d402' class='colors'>
+PeachPuff</div>
+<div id='d403' class='colors'>
+PeachPuff1</div>
+<div id='d404' class='colors'>
+PeachPuff4</div>
+<div id='d405' class='colors'>
+PeachPuff2</div>
+<div id='d406' class='colors'>
+PeachPuff3</div>
+<div id='d407' class='colors'>
+SandyBrown</div>
+<div id='d408' class='colors'>
+seashell4</div>
+<div id='d409' class='colors'>
+seashell2</div>
+<div id='d410' class='colors'>
+seashell3</div>
+<div id='d411' class='colors'>
+chocolate</div>
+<div id='d412' class='colors'>
+chocolate1</div>
+<div id='d413' class='colors'>
+chocolate2</div>
+<div id='d414' class='colors'>
+chocolate3</div>
+<div id='d415' class='colors'>
+chocolate4</div>
+<div id='d416' class='colors'>
+SaddleBrown</div>
+<div id='d417' class='colors'>
+seashell</div>
+<div id='d418' class='colors'>
+seashell1</div>
+<div id='d419' class='colors'>
+sienna4</div>
+<div id='d420' class='colors'>
+sienna</div>
+<div id='d421' class='colors'>
+sienna1</div>
+<div id='d422' class='colors'>
+sienna2</div>
+<div id='d423' class='colors'>
+sienna3</div>
+<div id='d424' class='colors'>
+LightSalmon3</div>
+<div id='d425' class='colors'>
+LightSalmon</div>
+<div id='d426' class='colors'>
+LightSalmon1</div>
+<div id='d427' class='colors'>
+LightSalmon4</div>
+<div id='d428' class='colors'>
+LightSalmon2</div>
+<div id='d429' class='colors'>
+coral</div>
+<div id='d430' class='colors'>
+OrangeRed</div>
+<div id='d431' class='colors'>
+OrangeRed1</div>
+<div id='d432' class='colors'>
+OrangeRed2</div>
+<div id='d433' class='colors'>
+OrangeRed3</div>
+<div id='d434' class='colors'>
+OrangeRed4</div>
+<div id='d435' class='colors'>
+DarkSalmon</div>
+<div id='d436' class='colors'>
+salmon1</div>
+<div id='d437' class='colors'>
+salmon2</div>
+<div id='d438' class='colors'>
+salmon3</div>
+<div id='d439' class='colors'>
+salmon4</div>
+<div id='d440' class='colors'>
+coral1</div>
+<div id='d441' class='colors'>
+coral2</div>
+<div id='d442' class='colors'>
+coral3</div>
+<div id='d443' class='colors'>
+coral4</div>
+<div id='d444' class='colors'>
+tomato4</div>
+<div id='d445' class='colors'>
+tomato</div>
+<div id='d446' class='colors'>
+tomato1</div>
+<div id='d447' class='colors'>
+tomato2</div>
+<div id='d448' class='colors'>
+tomato3</div>
+<div id='d449' class='colors'>
+MistyRose4</div>
+<div id='d450' class='colors'>
+MistyRose2</div>
+<div id='d451' class='colors'>
+MistyRose</div>
+<div id='d452' class='colors'>
+MistyRose1</div>
+<div id='d453' class='colors'>
+salmon</div>
+<div id='d454' class='colors'>
+MistyRose3</div>
+<div id='d455' class='colors'>
+white</div>
+<div id='d456' class='colors'>
+gray100</div>
+<div id='d457' class='colors'>
+grey100</div>
+<div id='d458' class='colors'>
+grey100</div>
+<div id='d459' class='colors'>
+gray99</div>
+<div id='d460' class='colors'>
+grey99</div>
+<div id='d461' class='colors'>
+gray98</div>
+<div id='d462' class='colors'>
+grey98</div>
+<div id='d463' class='colors'>
+gray97</div>
+<div id='d464' class='colors'>
+grey97</div>
+<div id='d465' class='colors'>
+gray96</div>
+<div id='d466' class='colors'>
+grey96</div>
+<div id='d467' class='colors'>
+WhiteSmoke</div>
+<div id='d468' class='colors'>
+gray95</div>
+<div id='d469' class='colors'>
+grey95</div>
+<div id='d470' class='colors'>
+gray94</div>
+<div id='d471' class='colors'>
+grey94</div>
+<div id='d472' class='colors'>
+gray93</div>
+<div id='d473' class='colors'>
+grey93</div>
+<div id='d474' class='colors'>
+gray92</div>
+<div id='d475' class='colors'>
+grey92</div>
+<div id='d476' class='colors'>
+gray91</div>
+<div id='d477' class='colors'>
+grey91</div>
+<div id='d478' class='colors'>
+gray90</div>
+<div id='d479' class='colors'>
+grey90</div>
+<div id='d480' class='colors'>
+gray89</div>
+<div id='d481' class='colors'>
+grey89</div>
+<div id='d482' class='colors'>
+gray88</div>
+<div id='d483' class='colors'>
+grey88</div>
+<div id='d484' class='colors'>
+gray87</div>
+<div id='d485' class='colors'>
+grey87</div>
+<div id='d486' class='colors'>
+gainsboro</div>
+<div id='d487' class='colors'>
+gray86</div>
+<div id='d488' class='colors'>
+grey86</div>
+<div id='d489' class='colors'>
+gray85</div>
+<div id='d490' class='colors'>
+grey85</div>
+<div id='d491' class='colors'>
+gray84</div>
+<div id='d492' class='colors'>
+grey84</div>
+<div id='d493' class='colors'>
+gray83</div>
+<div id='d494' class='colors'>
+grey83</div>
+<div id='d495' class='colors'>
+LightGray</div>
+<div id='d496' class='colors'>
+LightGrey</div>
+<div id='d497' class='colors'>
+gray82</div>
+<div id='d498' class='colors'>
+grey82</div>
+<div id='d499' class='colors'>
+gray81</div>
+<div id='d500' class='colors'>
+grey81</div>
+<div id='d501' class='colors'>
+gray80</div>
+<div id='d502' class='colors'>
+grey80</div>
+<div id='d503' class='colors'>
+gray79</div>
+<div id='d504' class='colors'>
+grey79</div>
+<div id='d505' class='colors'>
+gray78</div>
+<div id='d506' class='colors'>
+grey78</div>
+<div id='d507' class='colors'>
+gray77</div>
+<div id='d508' class='colors'>
+grey77</div>
+<div id='d509' class='colors'>
+gray76</div>
+<div id='d510' class='colors'>
+grey76</div>
+<div id='d511' class='colors'>
+silver</div>
+<div id='d512' class='colors'>
+gray75</div>
+<div id='d513' class='colors'>
+grey75</div>
+<div id='d514' class='colors'>
+gray74</div>
+<div id='d515' class='colors'>
+grey74</div>
+<div id='d516' class='colors'>
+gray73</div>
+<div id='d517' class='colors'>
+grey73</div>
+<div id='d518' class='colors'>
+gray72</div>
+<div id='d519' class='colors'>
+grey72</div>
+<div id='d520' class='colors'>
+gray71</div>
+<div id='d521' class='colors'>
+grey71</div>
+<div id='d522' class='colors'>
+gray70</div>
+<div id='d523' class='colors'>
+grey70</div>
+<div id='d524' class='colors'>
+gray69</div>
+<div id='d525' class='colors'>
+grey69</div>
+<div id='d526' class='colors'>
+gray68</div>
+<div id='d527' class='colors'>
+grey68</div>
+<div id='d528' class='colors'>
+gray67</div>
+<div id='d529' class='colors'>
+grey67</div>
+<div id='d530' class='colors'>
+DarkGray</div>
+<div id='d531' class='colors'>
+DarkGrey</div>
+<div id='d532' class='colors'>
+gray66</div>
+<div id='d533' class='colors'>
+grey66</div>
+<div id='d534' class='colors'>
+gray65</div>
+<div id='d535' class='colors'>
+grey65</div>
+<div id='d536' class='colors'>
+gray64</div>
+<div id='d537' class='colors'>
+grey64</div>
+<div id='d538' class='colors'>
+gray63</div>
+<div id='d539' class='colors'>
+grey63</div>
+<div id='d540' class='colors'>
+gray62</div>
+<div id='d541' class='colors'>
+grey62</div>
+<div id='d542' class='colors'>
+gray61</div>
+<div id='d543' class='colors'>
+grey61</div>
+<div id='d544' class='colors'>
+gray60</div>
+<div id='d545' class='colors'>
+grey60</div>
+<div id='d546' class='colors'>
+gray59</div>
+<div id='d547' class='colors'>
+grey59</div>
+<div id='d548' class='colors'>
+gray58</div>
+<div id='d549' class='colors'>
+grey58</div>
+<div id='d550' class='colors'>
+gray57</div>
+<div id='d551' class='colors'>
+grey57</div>
+<div id='d552' class='colors'>
+gray56</div>
+<div id='d553' class='colors'>
+grey56</div>
+<div id='d554' class='colors'>
+gray55</div>
+<div id='d555' class='colors'>
+grey55</div>
+<div id='d556' class='colors'>
+gray54</div>
+<div id='d557' class='colors'>
+grey54</div>
+<div id='d558' class='colors'>
+gray53</div>
+<div id='d559' class='colors'>
+grey53</div>
+<div id='d560' class='colors'>
+gray52</div>
+<div id='d561' class='colors'>
+grey52</div>
+<div id='d562' class='colors'>
+gray51</div>
+<div id='d563' class='colors'>
+grey51</div>
+<div id='d564' class='colors'>
+fractal</div>
+<div id='d565' class='colors'>
+gray50</div>
+<div id='d566' class='colors'>
+grey50</div>
+<div id='d567' class='colors'>
+gray</div>
+<div id='d568' class='colors'>
+gray49</div>
+<div id='d569' class='colors'>
+grey49</div>
+<div id='d570' class='colors'>
+gray48</div>
+<div id='d571' class='colors'>
+grey48</div>
+<div id='d572' class='colors'>
+gray47</div>
+<div id='d573' class='colors'>
+grey47</div>
+<div id='d574' class='colors'>
+gray46</div>
+<div id='d575' class='colors'>
+grey46</div>
+<div id='d576' class='colors'>
+gray45</div>
+<div id='d577' class='colors'>
+grey45</div>
+<div id='d578' class='colors'>
+gray44</div>
+<div id='d579' class='colors'>
+grey44</div>
+<div id='d580' class='colors'>
+gray43</div>
+<div id='d581' class='colors'>
+grey43</div>
+<div id='d582' class='colors'>
+gray42</div>
+<div id='d583' class='colors'>
+grey42</div>
+<div id='d584' class='colors'>
+DimGray</div>
+<div id='d585' class='colors'>
+DimGrey</div>
+<div id='d586' class='colors'>
+gray41</div>
+<div id='d587' class='colors'>
+grey41</div>
+<div id='d588' class='colors'>
+gray40</div>
+<div id='d589' class='colors'>
+grey40</div>
+<div id='d590' class='colors'>
+gray39</div>
+<div id='d591' class='colors'>
+grey39</div>
+<div id='d592' class='colors'>
+gray38</div>
+<div id='d593' class='colors'>
+grey38</div>
+<div id='d594' class='colors'>
+gray37</div>
+<div id='d595' class='colors'>
+grey37</div>
+<div id='d596' class='colors'>
+gray36</div>
+<div id='d597' class='colors'>
+grey36</div>
+<div id='d598' class='colors'>
+gray35</div>
+<div id='d599' class='colors'>
+grey35</div>
+<div id='d600' class='colors'>
+gray34</div>
+<div id='d601' class='colors'>
+grey34</div>
+<div id='d602' class='colors'>
+gray33</div>
+<div id='d603' class='colors'>
+grey33</div>
+<div id='d604' class='colors'>
+gray32</div>
+<div id='d605' class='colors'>
+grey32</div>
+<div id='d606' class='colors'>
+gray31</div>
+<div id='d607' class='colors'>
+grey31</div>
+<div id='d608' class='colors'>
+gray30</div>
+<div id='d609' class='colors'>
+grey30</div>
+<div id='d610' class='colors'>
+gray29</div>
+<div id='d611' class='colors'>
+grey29</div>
+<div id='d612' class='colors'>
+gray28</div>
+<div id='d613' class='colors'>
+grey28</div>
+<div id='d614' class='colors'>
+gray27</div>
+<div id='d615' class='colors'>
+grey27</div>
+<div id='d616' class='colors'>
+gray26</div>
+<div id='d617' class='colors'>
+grey26</div>
+<div id='d618' class='colors'>
+gray25</div>
+<div id='d619' class='colors'>
+grey25</div>
+<div id='d620' class='colors'>
+gray24</div>
+<div id='d621' class='colors'>
+grey24</div>
+<div id='d622' class='colors'>
+gray23</div>
+<div id='d623' class='colors'>
+grey23</div>
+<div id='d624' class='colors'>
+gray22</div>
+<div id='d625' class='colors'>
+grey22</div>
+<div id='d626' class='colors'>
+gray21</div>
+<div id='d627' class='colors'>
+grey21</div>
+<div id='d628' class='colors'>
+gray20</div>
+<div id='d629' class='colors'>
+grey20</div>
+<div id='d630' class='colors'>
+gray19</div>
+<div id='d631' class='colors'>
+grey19</div>
+<div id='d632' class='colors'>
+gray18</div>
+<div id='d633' class='colors'>
+grey18</div>
+<div id='d634' class='colors'>
+gray17</div>
+<div id='d635' class='colors'>
+grey17</div>
+<div id='d636' class='colors'>
+gray16</div>
+<div id='d637' class='colors'>
+grey16</div>
+<div id='d638' class='colors'>
+gray15</div>
+<div id='d639' class='colors'>
+grey15</div>
+<div id='d640' class='colors'>
+gray14</div>
+<div id='d641' class='colors'>
+grey14</div>
+<div id='d642' class='colors'>
+gray13</div>
+<div id='d643' class='colors'>
+grey13</div>
+<div id='d644' class='colors'>
+gray12</div>
+<div id='d645' class='colors'>
+grey12</div>
+<div id='d646' class='colors'>
+gray11</div>
+<div id='d647' class='colors'>
+grey11</div>
+<div id='d648' class='colors'>
+gray10</div>
+<div id='d649' class='colors'>
+grey10</div>
+<div id='d650' class='colors'>
+gray9</div>
+<div id='d651' class='colors'>
+grey9</div>
+<div id='d652' class='colors'>
+gray8</div>
+<div id='d653' class='colors'>
+grey8</div>
+<div id='d654' class='colors'>
+gray7</div>
+<div id='d655' class='colors'>
+grey7</div>
+<div id='d656' class='colors'>
+gray6</div>
+<div id='d657' class='colors'>
+grey6</div>
+<div id='d658' class='colors'>
+gray5</div>
+<div id='d659' class='colors'>
+grey5</div>
+<div id='d660' class='colors'>
+gray4</div>
+<div id='d661' class='colors'>
+grey4</div>
+<div id='d662' class='colors'>
+gray3</div>
+<div id='d663' class='colors'>
+grey3</div>
+<div id='d664' class='colors'>
+gray2</div>
+<div id='d665' class='colors'>
+grey2</div>
+<div id='d666' class='colors'>
+gray1</div>
+<div id='d667' class='colors'>
+grey1</div>
+<div id='d668' class='colors'>
+black</div>
+<div id='d669' class='colors'>
+gray0</div>
+<div id='d670' class='colors'>
+grey0</div>
+<div id='d671' class='colors'>
+opaque</div>
+<div id='d672' class='colors'>
+none</div>
+<div id='d673' class='colors'>
+transparent</div>
+</div>
+
+<div id='colornames'>
+CLICK TO CHOOSE THE COLOR
+</div>
+
+<div id='switches'>
+ <span id='title'>OPTIONS</span>
+ <div id='hexswitch' class='theswitches'>&nbsp</div>
+ <br>
+ <div id='infoswitch' class='theswitches'>CLICK TO TOGGLE PALATE INFO<span id='infospace'></span></div>
+ <br>
+ <div id='backgroundswitch' class='theswitches'>CLICK TO TOGGLE BACKGROUNDS</div>
+ <br>
+ <div id='preview'></div>
+ <div id='nameholder'>YOU WILL CHOOSE:<br><input id='namespace' style='width:inherit' type='text'></input></div>
+ <br>
+ <span id='transparent'>to choose transparent as a color, click <span id='transbutton'>HERE</span><span id='extra'></span></span>
+</div>
+<div id='vasebackground' style='position:fixed; z-index:2; height:120px; width:69px; top:2px; right:30px;'></div>
+
+<div id='vase' style='position:fixed; z-index:3; height:120px; width:69px; top:2px; right:30px; background-image:url(vase.png)'></div>
+<div id='vaseshim' style='position:fixed; z-index:4; height:120px; width:69px; top:2px; right:30px; background-image:url(vaseshim.png)'></div>
+<script type='text/javascript' src='js/jquery-1.6.4.min.js'></script>
+<script type='text/javascript' src='js/colordict.js'></script>
+<script type='text/javascript' src='js/colordictionaries2.js'></script>
+
+<script type='text/javascript' src='js/goldenfunctions.js'></script>
+<script type='text/javascript' src='js/hovercss.js'></script>
+<script type='text/javascript' src='js/iftransparentcss.js'></script>
+<script type='text/javascript' src='js/backgroundswitcher.js'></script>
+<script type='text/javascript' src='js/hexrgbnametoggle.js'></script>
+<script type='text/javascript' src='js/setupdimensions.js'></script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/js/backgroundswitcher.js b/frontend/imgrid/colors/js/backgroundswitcher.js
new file mode 100755
index 0000000..74e8367
--- /dev/null
+++ b/frontend/imgrid/colors/js/backgroundswitcher.js
@@ -0,0 +1,38 @@
+backgroundstate = 2;
+function switchbackground()
+ {
+ if(backgroundstate == 1)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image','url(js/ditherbackground.gif)')
+ backgroundstate = 2;
+ $('#colornames').css('color', 'white')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ $('#vaseshim').css('background-image','url(vaseshim.png)')
+ }
+ else if(backgroundstate == 2)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image', 'none')
+ $('#vaseshim').css('background-image','url(blackshim.png)')
+ backgroundstate = 3;
+ }
+ else if(backgroundstate == 3)
+ {
+ $('#colorpicker').css('background-color','gray')
+ $('#colorpicker').css('background-image','none')
+ $('#vaseshim').css('background-image','url(grayshim.png)')
+ backgroundstate = 0;
+ }
+ else if(backgroundstate == 0)
+ {
+ $('#colorpicker').css('background-color', 'white')
+ $('#colorpicker').css('background-image', 'none')
+ $('#colornames').css('color', '#7F7F7F')
+ $('#vaseshim').css('background-image','url(whiteshim.png)')
+ backgroundstate = 1
+ }
+ }
+
+$('#backgroundswitch').click(function(){switchbackground()})
+
diff --git a/frontend/imgrid/colors/js/colordict.js b/frontend/imgrid/colors/js/colordict.js
new file mode 100755
index 0000000..5c69bc8
--- /dev/null
+++ b/frontend/imgrid/colors/js/colordict.js
@@ -0,0 +1,3 @@
+var nametohex = {'grey21': '#363636', 'yellow': '#FFFF00', 'grey61': '#9C9C9C', 'HotPink3': '#CD6090', 'grey63': '#A1A1A1', 'grey62': '#9E9E9E', 'grey65': '#A6A6A6', 'AliceBlue': '#F0F8FF', 'grey67': '#ABABAB', 'grey66': '#A8A8A8', 'LightCyan1': '#E0FFFF', 'grey68': '#ADADAD', 'LightCyan3': '#B4CDCD', 'LightCyan2': '#D1EEEE', 'LightCyan4': '#7A8B8B', 'gray32': '#525252', 'gray33': '#545454', 'DarkTurquoise': '#00CED1', 'gray31': '#4F4F4F', 'gray36': '#5C5C5C', 'gray37': '#5E5E5E', 'gray34': '#575757', 'gray35': '#595959', 'aquamarine4': '#458B74', 'gray38': '#616161', 'gray39': '#636363', 'aquamarine1': '#7FFFD4', 'aquamarine3': '#66CDAA', 'aquamarine2': '#76EEC6', 'CadetBlue4': '#53868B', 'CadetBlue3': '#7AC5CD', 'CadetBlue2': '#8EE5EE', 'CadetBlue1': '#98F5FF', 'crimson': '#DC143C', 'VioletRed1': '#FF3E96', 'VioletRed2': '#EE3A8C', 'VioletRed3': '#CD3278', 'VioletRed4': '#8B2252', 'brown': '#A52A2A', 'DarkGoldenrod': '#B8860B', 'gray8': '#141414', 'SlateGrey': '#708090', 'NavajoWhite2': '#EECFA1', 'gray2': '#050505', 'cyan': '#00FFFF', 'gray0': '#000000', 'gray1': '#030303', 'fractal': '#808080', 'gray7': '#121212', 'gray4': '#0A0A0A', 'gray5': '#0D0D0D', 'grey60': '#999999', 'DarkBlue': '#00008B', 'gray98': '#FAFAFA', 'DarkKhaki': '#BDB76B', 'gray99': '#FCFCFC', 'teal': '#008080', 'grey11': '#1C1C1C', 'coral4': '#8B3E2F', 'grey12': '#1F1F1F', 'grey64': '#A3A3A3', 'PaleGreen1': '#9AFF9A', 'PaleGreen3': '#7CCD7C', 'PaleGreen2': '#90EE90', 'PaleGreen4': '#548B54', 'grey14': '#242424', 'lavender': '#E6E6FA', 'grey15': '#262626', 'chartreuse3': '#66CD00', 'chartreuse2': '#76EE00', 'chartreuse1': '#7FFF00', 'chartreuse4': '#458B00', 'RosyBrown': '#BC8F8F', 'blue': '#0000FF', 'NavajoWhite': '#FFDEAD', 'opaque': '#000000', 'maroon4': '#8B1C62', 'maroon3': '#CD2990', 'maroon2': '#EE30A7', 'maroon1': '#FF34B3', 'gold3': '#CDAD00', 'gold2': '#EEC900', 'gold1': '#FFD700', 'gold4': '#8B7500', 'LightSlateGrey': '#778899', 'gray30': '#4D4D4D', 'DarkGreen': '#006400', 'SkyBlue': '#87CEEB', 'GhostWhite': '#F8F8FF', 'LavenderBlush': '#FFF0F5', 'SeaGreen': '#2E8B57', 'BlanchedAlmond': '#FFEBCD', 'gray60': '#999999', 'DarkOliveGreen': '#556B2F', 'firebrick2': '#EE2C2C', 'firebrick1': '#FF3030', 'firebrick4': '#8B1A1A', 'sienna': '#A0522D', 'blue1': '#0000FF', 'lime': '#00FF00', 'gray55': '#8C8C8C', 'blue2': '#0000EE', 'DarkViolet': '#9400D3', 'blue4': '#00008B', 'peru': '#CD853F', 'DarkMagenta': '#8B008B', 'LightBlue2': '#B2DFEE', 'red2': '#EE0000', 'red1': '#FF0000', 'LightBlue1': '#BFEFFF', 'LightBlue4': '#68838B', 'red4': '#8B0000', 'MediumSpringGreen': '#00FA9A', 'chocolate': '#D2691E', 'ForestGreen': '#228B22', 'DarkRed': '#8B0000', 'olive': '#808000', 'HotPink2': '#EE6AA7', 'HotPink1': '#FF6EB4', 'HotPink4': '#8B3A62', 'grey18': '#2E2E2E', 'grey19': '#303030', 'none': '#000000', 'PeachPuff': '#FFDAB9', 'MediumGoldenRod': '#D1C166', 'moccasin': '#FFE4B5', 'grey10': '#1A1A1A', 'chocolate1': '#FF7F24', 'chocolate2': '#EE7621', 'chocolate3': '#CD661D', 'chocolate4': '#8B4513', 'wheat2': '#EED8AE', 'grey16': '#292929', 'grey17': '#2B2B2B', 'gray69': '#B0B0B0', 'gray68': '#ADADAD', 'gray65': '#A6A6A6', 'gray64': '#A3A3A3', 'gray67': '#ABABAB', 'gray66': '#A8A8A8', 'gray61': '#9C9C9C', 'coral': '#FF7F50', 'gray63': '#A1A1A1', 'gray62': '#9E9E9E', 'LightGoldenrod': '#EEDD82', 'turquoise4': '#00868B', 'seashell2': '#EEE5DE', 'seashell3': '#CDC5BF', 'magenta': '#FF00FF', 'seashell1': '#FFF5EE', 'tan': '#D2B48C', 'seashell4': '#8B8682', 'pink': '#FFC0CB', 'LightSlateBlue': '#8470FF', 'SteelBlue1': '#63B8FF', 'SteelBlue3': '#4F94CD', 'SteelBlue2': '#5CACEE', 'SteelBlue4': '#36648B', 'grey89': '#E3E3E3', 'grey88': '#E0E0E0', 'grey87': '#DEDEDE', 'grey86': '#DBDBDB', 'grey85': '#D9D9D9', 'grey84': '#D6D6D6', 'grey83': '#D4D4D4', 'grey82': '#D1D1D1', 'grey81': '#CFCFCF', 'grey80': '#CCCCCC', 'ivory2': '#EEEEE0', 'khaki4': '#8B864E', 'khaki1': '#FFF68F', 'khaki2': '#EEE685', 'khaki3': '#CDC673', 'salmon1': '#FF8C69', 'salmon3': '#CD7054', 'salmon2': '#EE8262', 'salmon4': '#8B4C39', 'LightPink': '#FFB6C1', 'gray9': '#171717', 'green': '#008000', 'brown2': '#EE3B3B', 'brown3': '#CD3333', 'brown1': '#FF4040', 'brown4': '#8B2323', 'cadet blue': '#5F9EA0', 'orange4': '#8B5A00', 'orange1': '#FFA500', 'orange3': '#CD8500', 'orange2': '#EE9A00', 'gray3': '#080808', 'gray6': '#0F0F0F', 'yellow4': '#8B8B00', 'yellow3': '#CDCD00', 'yellow2': '#EEEE00', 'yellow1': '#FFFF00', 'PapayaWhip': '#FFEFD5', 'bisque2': '#EED5B7', 'OliveDrab4': '#698B22', 'bisque3': '#CDB79E', 'OliveDrab1': '#C0FF3E', 'OliveDrab2': '#B3EE3A', 'OliveDrab3': '#9ACD32', 'SkyBlue4': '#4A708B', 'SkyBlue1': '#87CEFF', 'SkyBlue3': '#6CA6CD', 'SkyBlue2': '#7EC0EE', 'grey58': '#949494', 'grey59': '#969696', 'grey54': '#8A8A8A', 'grey55': '#8C8C8C', 'grey56': '#8F8F8F', 'grey57': '#919191', 'grey50': '#7F7F7F', 'silver': '#C0C0C0', 'grey52': '#858585', 'grey53': '#878787', 'cyan2': '#00EEEE', 'cyan3': '#00CDCD', 'gray23': '#3B3B3B', 'RosyBrown4': '#8B6969', 'gray25': '#404040', 'CornflowerBlue': '#6495ED', 'cyan4': '#008B8B', 'gray26': '#424242', 'gray29': '#4A4A4A', 'LimeGreen': '#32CD32', 'MistyRose': '#FFE4E1', 'navy': '#000080', 'gray94': '#F0F0F0', 'gray95': '#F2F2F2', 'gray96': '#F5F5F5', 'gray97': '#F7F7F7', 'gray90': '#E5E5E5', 'gray91': '#E8E8E8', 'gray92': '#EBEBEB', 'gray93': '#EDEDED', 'MediumPurple': '#9370DB', 'MidnightBlue': '#191970', 'cornsilk': '#FFF8DC', 'red': '#FF0000', 'grey69': '#B0B0B0', 'DarkOrchid4': '#68228B', 'blue3': '#0000CD', 'LightSteelBlue': '#B0C4DE', 'DarkOrchid1': '#BF3EFF', 'DarkOrchid2': '#B23AEE', 'DarkOrchid3': '#9A32CD', 'grey72': '#B8B8B8', 'FloralWhite': '#FFFAF0', 'grey70': '#B3B3B3', 'DarkSeaGreen': '#8FBC8F', 'grey71': '#B5B5B5', 'gray17': '#2B2B2B', 'grey77': '#C4C4C4', 'tomato4': '#8B3626', 'tomato1': '#FF6347', 'tomato3': '#CD4F39', 'tomato2': '#EE5C42', 'DarkSlateGray1': '#97FFFF', 'DarkSlateGray2': '#8DEEEE', 'DarkSlateGray3': '#79CDCD', 'DarkSlateGray4': '#528B8B', 'SteelBlue': '#4682B4', 'MediumSlateBlue': '#7B68EE', 'OrangeRed': '#FF4500', 'grey79': '#C9C9C9', 'MediumVioletRed': '#C71585', 'burlywood': '#DEB887', 'white': '#FFFFFF', 'tomato': '#FF6347', 'DodgerBlue': '#1E90FF', 'RoyalBlue4': '#27408B', 'RoyalBlue1': '#4876FF', 'RoyalBlue3': '#3A5FCD', 'RoyalBlue2': '#436EEE', 'MistyRose1': '#FFE4E1', 'MistyRose3': '#CDB7B5', 'MistyRose2': '#EED5D2', 'MistyRose4': '#8B7D7B', 'LightGray': '#D3D3D3', 'LightYellow': '#FFFFE0', 'DarkOrange': '#FF8C00', 'DarkGray': '#A9A9A9', 'SlateGray': '#708090', 'turquoise3': '#00C5CD', 'turquoise2': '#00E5EE', 'turquoise1': '#00F5FF', 'burlywood2': '#EEC591', 'burlywood4': '#8B7355', 'DarkSlateGray': '#2F4F4F', 'linen': '#FAF0E6', 'grey47': '#787878', 'snow': '#FFFAFA', 'grey46': '#757575', 'gray58': '#949494', 'gray59': '#969696', 'IndianRed4': '#8B3A3A', 'purple4': '#551A8B', 'gray52': '#858585', 'gray53': '#878787', 'purple1': '#9B30FF', 'IndianRed1': '#FF6A6A', 'purple3': '#7D26CD', 'purple2': '#912CEE', 'thistle3': '#CDB5CD', 'thistle2': '#EED2EE', 'SpringGreen2': '#00EE76', 'SpringGreen3': '#00CD66', 'SpringGreen4': '#008B45', 'thistle4': '#8B7B8B', 'LightPink2': '#EEA2AD', 'LightPink3': '#CD8C95', 'LightPink1': '#FFAEB9', 'LightPink4': '#8B5F65', 'MediumPurple1': '#AB82FF', 'MediumPurple2': '#9F79EE', 'MediumPurple3': '#8968CD', 'MediumPurple4': '#5D478B', 'MediumTurquoise': '#48D1CC', 'DimGray': '#696969', 'gray14': '#242424', 'grey100': '#FFFFFF', 'OrangeRed3': '#CD3700', 'OrangeRed2': '#EE4000', 'OrangeRed1': '#FF4500', 'LightSeaGreen': '#20B2AA', 'gold': '#FFD700', 'OrangeRed4': '#8B2500', 'NavajoWhite4': '#8B795E', 'NavajoWhite1': '#FFDEAD', 'LawnGreen': '#7CFC00', 'NavajoWhite3': '#CDB38B', 'LightGoldenrod4': '#8B814C', 'LightGoldenrod1': '#FFEC8B', 'LightGoldenrod3': '#CDBE70', 'LightGoldenrod2': '#EEDC82', 'gray21': '#363636', 'PaleGreen': '#98FB98', 'green4': '#008B00', 'green1': '#00FF00', 'green3': '#00CD00', 'green2': '#00EE00', 'MediumOrchid': '#BA55D3', 'black': '#000000', 'gray20': '#333333', 'orchid4': '#8B4789', 'DodgerBlue1': '#1E90FF', 'DodgerBlue2': '#1C86EE', 'DodgerBlue3': '#1874CD', 'DodgerBlue4': '#104E8B', 'orchid1': '#FF83FA', 'orchid2': '#EE7AE9', 'orchid3': '#CD69C9', 'DarkSeaGreen4': '#698B69', 'DarkSeaGreen3': '#9BCD9B', 'DarkSeaGreen2': '#B4EEB4', 'DarkSeaGreen1': '#C1FFC1', 'gray100': '#FFFFFF', 'BlueViolet': '#8A2BE2', 'bisque4': '#8B7D6B', 'MediumOrchid4': '#7A378B', 'MintCream': '#F5FFFA', 'MediumOrchid1': '#E066FF', 'bisque1': '#FFE4C4', 'MediumOrchid3': '#B452CD', 'MediumOrchid2': '#D15FEE', 'gray': '#7E7E7E', 'DeepSkyBlue': '#00BFFF', 'LightGrey': '#D3D3D3', 'grey78': '#C7C7C7', 'gray22': '#383838', 'plum4': '#8B668B', 'plum3': '#CD96CD', 'plum2': '#EEAEEE', 'plum1': '#FFBBFF', 'DarkSlateGrey': '#2F4F4F', 'DarkOrchid': '#9932CC', 'OliveDrab': '#6B8E23', 'gray83': '#D4D4D4', 'grey49': '#7D7D7D', 'grey48': '#7A7A7A', 'thistle': '#D8BFD8', 'violet': '#EE82EE', 'grey43': '#6E6E6E', 'grey42': '#6B6B6B', 'LightSalmon4': '#8B5742', 'grey40': '#666666', 'LightSalmon2': '#EE9572', 'LightSalmon3': '#CD8162', 'grey45': '#737373', 'LightSalmon1': '#FFA07A', 'honeydew': '#F0FFF0', 'gray18': '#2E2E2E', 'gray19': '#303030', 'LightCyan': '#E0FFFF', 'gray15': '#262626', 'gray16': '#292929', 'gray82': '#D1D1D1', 'gray10': '#1A1A1A', 'gray11': '#1C1C1C', 'gray12': '#1F1F1F', 'gray13': '#212121', 'grey93': '#EDEDED', 'PaleGoldenrod': '#EEE8AA', 'gainsboro': '#DCDCDC', 'AntiqueWhite3': '#CDC0B0', 'AntiqueWhite2': '#EEDFCC', 'AntiqueWhite1': '#FFEFDB', 'gray27': '#454545', 'SlateBlue': '#6A5ACD', 'AntiqueWhite4': '#8B8378', 'DimGrey': '#696969', 'VioletRed': '#D02090', 'WhiteSmoke': '#F5F5F5', 'grey38': '#616161', 'grey39': '#636363', 'grey36': '#5C5C5C', 'grey37': '#5E5E5E', 'grey34': '#575757', 'grey35': '#595959', 'aqua': '#00FFFF', 'grey33': '#545454', 'grey30': '#4D4D4D', 'grey31': '#4F4F4F', 'NavyBlue': '#000080', 'sienna4': '#8B4726', 'gray81': '#CFCFCF', 'gray80': '#CCCCCC', 'sienna1': '#FF8247', 'gray86': '#DBDBDB', 'sienna3': '#CD6839', 'sienna2': '#EE7942', 'gray89': '#E3E3E3', 'gray88': '#E0E0E0', 'SlateBlue4': '#473C8B', 'gray87': '#DEDEDE', 'LightSteelBlue1': '#CAE1FF', 'magenta3': '#CD00CD', 'IndianRed': '#CD5C5C', 'SlateBlue2': '#7A67EE', 'SlateBlue1': '#836FFF', 'LightBlue': '#ADD8E6', 'PeachPuff4': '#8B7765', 'seashell': '#FFF5EE', 'SaddleBrown': '#8B4513', 'PeachPuff1': '#FFDAB9', 'PeachPuff2': '#EECBAD', 'PeachPuff3': '#CDAF95', 'aquamarine': '#7FFFD4', 'LemonChiffon2': '#EEE9BF', 'LemonChiffon1': '#FFFACD', 'tan4': '#8B5A2B', 'tan3': '#CD853F', 'tan2': '#EE9A49', 'tan1': '#FFA54F', 'LemonChiffon4': '#8B8970', 'orange': '#FFA500', 'OldLace': '#FDF5E6', 'PowderBlue': '#B0E0E6', 'RosyBrown3': '#CD9B9B', 'RoyalBlue': '#4169E1', 'LightSkyBlue4': '#607B8B', 'LightSkyBlue1': '#B0E2FF', 'LightSkyBlue2': '#A4D3EE', 'LightSkyBlue3': '#8DB6CD', 'LightYellow1': '#FFFFE0', 'LightYellow2': '#EEEED1', 'LightYellow3': '#CDCDB4', 'LightYellow4': '#8B8B7A', 'goldenrod4': '#8B6914', 'goldenrod1': '#FFC125', 'goldenrod2': '#EEB422', 'goldenrod3': '#CD9B1D', 'grey32': '#525252', 'LemonChiffon': '#FFFACD', 'burlywood1': '#FFD39B', 'YellowGreen': '#9ACD32', 'LightCoral': '#F08080', 'burlywood3': '#CDAA7D', 'ivory3': '#CDCDC1', 'firebrick3': '#CD2626', 'ivory1': '#FFFFF0', 'grey8': '#141414', 'ivory4': '#8B8B83', 'grey9': '#171717', 'DarkSalmon': '#E9967A', 'SlateGray1': '#C6E2FF', 'SlateGray2': '#B9D3EE', 'SlateGray3': '#9FB6CD', 'SlateGray4': '#6C7B8B', 'RosyBrown2': '#EEB4B4', 'RosyBrown1': '#FFC1C1', 'gray85': '#D9D9D9', 'gray84': '#D6D6D6', 'LightGreen': '#90EE90', 'LavenderBlush1': '#FFF0F5', 'grey73': '#BABABA', 'LavenderBlush3': '#CDC1C5', 'LavenderBlush2': '#EEE0E5', 'grey76': '#C2C2C2', 'LavenderBlush4': '#8B8386', 'grey74': '#BDBDBD', 'grey75': '#BFBFBF', 'pink1': '#FFB5C5', 'pink3': '#CD919E', 'pink2': '#EEA9B8', 'pink4': '#8B636C', 'gray47': '#787878', 'gray46': '#757575', 'gray45': '#737373', 'gray44': '#707070', 'gray43': '#6E6E6E', 'gray42': '#6B6B6B', 'gray41': '#696969', 'gray40': '#666666', 'gray49': '#7D7D7D', 'gray48': '#7A7A7A', 'MediumAquamarine': '#66CDAA', 'MediumForestGreen': '#32814B', 'azure1': '#F0FFFF', 'azure3': '#C1CDCD', 'azure2': '#E0EEEE', 'indigo': '#4B0082', 'azure4': '#838B8B', 'firebrick': '#B22222', 'DarkGrey': '#A9A9A9', 'magenta4': '#8B008B', 'SlateBlue3': '#6959CD', 'magenta2': '#EE00EE', 'magenta1': '#FF00FF', 'grey51': '#828282', 'chartreuse': '#7FFF00', 'grey41': '#696969', 'DarkOliveGreen4': '#6E8B3D', 'turquoise': '#40E0D0', 'DarkOliveGreen1': '#CAFF70', 'DarkOliveGreen3': '#A2CD5A', 'DarkOliveGreen2': '#BCEE68', 'grey6': '#0F0F0F', 'grey7': '#121212', 'grey4': '#0A0A0A', 'grey5': '#0D0D0D', 'grey2': '#050505', 'grey3': '#080808', 'grey0': '#000000', 'grey1': '#030303', 'gray50': '#7F7F7F', 'cyan1': '#00FFFF', 'gray51': '#828282', 'gray24': '#3D3D3D', 'HotPink': '#FF69B4', 'DarkGoldenrod4': '#8B6508', 'gray54': '#8A8A8A', 'DarkGoldenrod1': '#FFB90F', 'DarkGoldenrod2': '#EEAD0E', 'DarkGoldenrod3': '#CD950C', 'IndianRed2': '#EE6363', 'DeepPink': '#FF1493', 'gray28': '#474747', 'IndianRed3': '#CD5555', 'DarkCyan': '#008B8B', 'GreenYellow': '#ADFF2F', 'LightSalmon': '#FFA07A', 'DarkOrange4': '#8B4500', 'DarkOrange1': '#FF7F00', 'transparent': '#000000', 'DarkOrange3': '#CD6600', 'orchid': '#DA70D6', 'purple': '#800080', 'wheat4': '#8B7E66', 'wheat1': '#FFE7BA', 'wheat3': '#CDBA96', 'SpringGreen1': '#00FF7F', 'coral3': '#CD5B45', 'coral2': '#EE6A50', 'coral1': '#FF7256', 'thistle1': '#FFE1FF', 'PaleTurquoise': '#AFEEEE', 'bisque': '#FFE4C4', 'DeepPink3': '#CD1076', 'DeepPink2': '#EE1289', 'DeepPink1': '#FF1493', 'khaki': '#F0E68C', 'wheat': '#F5DEB3', 'MediumSeaGreen': '#3CB371', 'DeepPink4': '#8B0A50', 'salmon': '#FA8072', 'grey44': '#707070', 'DarkSlateBlue': '#483D8B', 'PaleVioletRed4': '#8B475D', 'PaleVioletRed1': '#FF82AB', 'PaleVioletRed2': '#EE799F', 'PaleVioletRed3': '#CD6889', 'AntiqueWhite': '#FAEBD7', 'PaleTurquoise4': '#668B8B', 'PaleTurquoise3': '#96CDCD', 'PaleTurquoise2': '#AEEEEE', 'PaleTurquoise1': '#BBFFFF', 'gray56': '#8F8F8F', 'plum': '#DDA0DD', 'beige': '#F5F5DC', 'SpringGreen': '#00FF7F', 'azure': '#F0FFFF', 'honeydew1': '#F0FFF0', 'honeydew2': '#E0EEE0', 'honeydew3': '#C1CDC1', 'honeydew4': '#838B83', 'gray57': '#919191', 'snow4': '#8B8989', 'snow2': '#EEE9E9', 'snow3': '#CDC9C9', 'snow1': '#FFFAFA', 'SandyBrown': '#F4A460', 'grey13': '#212121', 'SeaGreen4': '#2E8B57', 'SeaGreen3': '#43CD80', 'SeaGreen2': '#4EEE94', 'SeaGreen1': '#54FF9F', 'grey29': '#4A4A4A', 'grey28': '#474747', 'grey25': '#404040', 'grey24': '#3D3D3D', 'grey27': '#454545', 'grey26': '#424242', 'fuchsia': '#FF00FF', 'grey20': '#333333', 'grey23': '#3B3B3B', 'grey22': '#383838', 'gray78': '#C7C7C7', 'gray79': '#C9C9C9', 'gray76': '#C2C2C2', 'gray77': '#C4C4C4', 'gray74': '#BDBDBD', 'gray75': '#BFBFBF', 'gray72': '#B8B8B8', 'gray73': '#BABABA', 'gray70': '#B3B3B3', 'gray71': '#B5B5B5', 'ivory': '#FFFFF0', 'LemonChiffon3': '#CDC9A5', 'DeepSkyBlue4': '#00688B', 'DeepSkyBlue3': '#009ACD', 'DeepSkyBlue2': '#00B2EE', 'DeepSkyBlue1': '#00BFFF', 'cornsilk4': '#8B8878', 'cornsilk2': '#EEE8CD', 'cornsilk3': '#CDC8B1', 'CadetBlue': '#5F9EA0', 'cornsilk1': '#FFF8DC', 'grey90': '#E5E5E5', 'grey91': '#E8E8E8', 'grey92': '#EBEBEB', 'goldenrod': '#DAA520', 'grey94': '#F0F0F0', 'grey95': '#F2F2F2', 'grey96': '#F5F5F5', 'grey97': '#F7F7F7', 'grey98': '#FAFAFA', 'grey99': '#FCFCFC', 'red3': '#CD0000', 'LightSteelBlue2': '#BCD2EE', 'LightSteelBlue3': '#A2B5CD', 'LightSteelBlue4': '#6E7B8B', 'LightBlue3': '#9AC0CD', 'maroon': '#800000', 'LightSkyBlue': '#87CEFA', 'LightGoldenrodYellow': '#FAFAD2', 'MediumBlue': '#0000CD', 'LightSlateGray': '#778899', 'DarkOrange2': '#EE7600', 'PaleVioletRed': '#DB7093'}
+var divlist = ['#d0', '#d1', '#d2', '#d3', '#d4', '#d5', '#d6', '#d7', '#d8', '#d9', '#d10', '#d11', '#d12', '#d13', '#d14', '#d15', '#d16', '#d17', '#d18', '#d19', '#d20', '#d21', '#d22', '#d23', '#d24', '#d25', '#d26', '#d27', '#d28', '#d29', '#d30', '#d31', '#d32', '#d33', '#d34', '#d35', '#d36', '#d37', '#d38', '#d39', '#d40', '#d41', '#d42', '#d43', '#d44', '#d45', '#d46', '#d47', '#d48', '#d49', '#d50', '#d51', '#d52', '#d53', '#d54', '#d55', '#d56', '#d57', '#d58', '#d59', '#d60', '#d61', '#d62', '#d63', '#d64', '#d65', '#d66', '#d67', '#d68', '#d69', '#d70', '#d71', '#d72', '#d73', '#d74', '#d75', '#d76', '#d77', '#d78', '#d79', '#d80', '#d81', '#d82', '#d83', '#d84', '#d85', '#d86', '#d87', '#d88', '#d89', '#d90', '#d91', '#d92', '#d93', '#d94', '#d95', '#d96', '#d97', '#d98', '#d99', '#d100', '#d101', '#d102', '#d103', '#d104', '#d105', '#d106', '#d107', '#d108', '#d109', '#d110', '#d111', '#d112', '#d113', '#d114', '#d115', '#d116', '#d117', '#d118', '#d119', '#d120', '#d121', '#d122', '#d123', '#d124', '#d125', '#d126', '#d127', '#d128', '#d129', '#d130', '#d131', '#d132', '#d133', '#d134', '#d135', '#d136', '#d137', '#d138', '#d139', '#d140', '#d141', '#d142', '#d143', '#d144', '#d145', '#d146', '#d147', '#d148', '#d149', '#d150', '#d151', '#d152', '#d153', '#d154', '#d155', '#d156', '#d157', '#d158', '#d159', '#d160', '#d161', '#d162', '#d163', '#d164', '#d165', '#d166', '#d167', '#d168', '#d169', '#d170', '#d171', '#d172', '#d173', '#d174', '#d175', '#d176', '#d177', '#d178', '#d179', '#d180', '#d181', '#d182', '#d183', '#d184', '#d185', '#d186', '#d187', '#d188', '#d189', '#d190', '#d191', '#d192', '#d193', '#d194', '#d195', '#d196', '#d197', '#d198', '#d199', '#d200', '#d201', '#d202', '#d203', '#d204', '#d205', '#d206', '#d207', '#d208', '#d209', '#d210', '#d211', '#d212', '#d213', '#d214', '#d215', '#d216', '#d217', '#d218', '#d219', '#d220', '#d221', '#d222', '#d223', '#d224', '#d225', '#d226', '#d227', '#d228', '#d229', '#d230', '#d231', '#d232', '#d233', '#d234', '#d235', '#d236', '#d237', '#d238', '#d239', '#d240', '#d241', '#d242', '#d243', '#d244', '#d245', '#d246', '#d247', '#d248', '#d249', '#d250', '#d251', '#d252', '#d253', '#d254', '#d255', '#d256', '#d257', '#d258', '#d259', '#d260', '#d261', '#d262', '#d263', '#d264', '#d265', '#d266', '#d267', '#d268', '#d269', '#d270', '#d271', '#d272', '#d273', '#d274', '#d275', '#d276', '#d277', '#d278', '#d279', '#d280', '#d281', '#d282', '#d283', '#d284', '#d285', '#d286', '#d287', '#d288', '#d289', '#d290', '#d291', '#d292', '#d293', '#d294', '#d295', '#d296', '#d297', '#d298', '#d299', '#d300', '#d301', '#d302', '#d303', '#d304', '#d305', '#d306', '#d307', '#d308', '#d309', '#d310', '#d311', '#d312', '#d313', '#d314', '#d315', '#d316', '#d317', '#d318', '#d319', '#d320', '#d321', '#d322', '#d323', '#d324', '#d325', '#d326', '#d327', '#d328', '#d329', '#d330', '#d331', '#d332', '#d333', '#d334', '#d335', '#d336', '#d337', '#d338', '#d339', '#d340', '#d341', '#d342', '#d343', '#d344', '#d345', '#d346', '#d347', '#d348', '#d349', '#d350', '#d351', '#d352', '#d353', '#d354', '#d355', '#d356', '#d357', '#d358', '#d359', '#d360', '#d361', '#d362', '#d363', '#d364', '#d365', '#d366', '#d367', '#d368', '#d369', '#d370', '#d371', '#d372', '#d373', '#d374', '#d375', '#d376', '#d377', '#d378', '#d379', '#d380', '#d381', '#d382', '#d383', '#d384', '#d385', '#d386', '#d387', '#d388', '#d389', '#d390', '#d391', '#d392', '#d393', '#d394', '#d395', '#d396', '#d397', '#d398', '#d399', '#d400', '#d401', '#d402', '#d403', '#d404', '#d405', '#d406', '#d407', '#d408', '#d409', '#d410', '#d411', '#d412', '#d413', '#d414', '#d415', '#d416', '#d417', '#d418', '#d419', '#d420', '#d421', '#d422', '#d423', '#d424', '#d425', '#d426', '#d427', '#d428', '#d429', '#d430', '#d431', '#d432', '#d433', '#d434', '#d435', '#d436', '#d437', '#d438', '#d439', '#d440', '#d441', '#d442', '#d443', '#d444', '#d445', '#d446', '#d447', '#d448', '#d449', '#d450', '#d451', '#d452', '#d453', '#d454', '#d455', '#d456', '#d457', '#d458', '#d459', '#d460', '#d461', '#d462', '#d463', '#d464', '#d465', '#d466', '#d467', '#d468', '#d469', '#d470', '#d471', '#d472', '#d473', '#d474', '#d475', '#d476', '#d477', '#d478', '#d479', '#d480', '#d481', '#d482', '#d483', '#d484', '#d485', '#d486', '#d487', '#d488', '#d489', '#d490', '#d491', '#d492', '#d493', '#d494', '#d495', '#d496', '#d497', '#d498', '#d499', '#d500', '#d501', '#d502', '#d503', '#d504', '#d505', '#d506', '#d507', '#d508', '#d509', '#d510', '#d511', '#d512', '#d513', '#d514', '#d515', '#d516', '#d517', '#d518', '#d519', '#d520', '#d521', '#d522', '#d523', '#d524', '#d525', '#d526', '#d527', '#d528', '#d529', '#d530', '#d531', '#d532', '#d533', '#d534', '#d535', '#d536', '#d537', '#d538', '#d539', '#d540', '#d541', '#d542', '#d543', '#d544', '#d545', '#d546', '#d547', '#d548', '#d549', '#d550', '#d551', '#d552', '#d553', '#d554', '#d555', '#d556', '#d557', '#d558', '#d559', '#d560', '#d561', '#d562', '#d563', '#d564', '#d565', '#d566', '#d567', '#d568', '#d569', '#d570', '#d571', '#d572', '#d573', '#d574', '#d575', '#d576', '#d577', '#d578', '#d579', '#d580', '#d581', '#d582', '#d583', '#d584', '#d585', '#d586', '#d587', '#d588', '#d589', '#d590', '#d591', '#d592', '#d593', '#d594', '#d595', '#d596', '#d597', '#d598', '#d599', '#d600', '#d601', '#d602', '#d603', '#d604', '#d605', '#d606', '#d607', '#d608', '#d609', '#d610', '#d611', '#d612', '#d613', '#d614', '#d615', '#d616', '#d617', '#d618', '#d619', '#d620', '#d621', '#d622', '#d623', '#d624', '#d625', '#d626', '#d627', '#d628', '#d629', '#d630', '#d631', '#d632', '#d633', '#d634', '#d635', '#d636', '#d637', '#d638', '#d639', '#d640', '#d641', '#d642', '#d643', '#d644', '#d645', '#d646', '#d647', '#d648', '#d649', '#d650', '#d651', '#d652', '#d653', '#d654', '#d655', '#d656', '#d657', '#d658', '#d659', '#d660', '#d661', '#d662', '#d663', '#d664', '#d665', '#d666', '#d667', '#d668', '#d669', '#d670', '#d671', '#d672', '#d673']
+var divtoname = {'#d322': 'khaki4', '#d600': 'gray34', '#d118': 'MediumPurple1', '#d119': 'MediumPurple2', '#d114': 'purple3', '#d115': 'purple4', '#d116': 'purple1', '#d117': 'MediumPurple', '#d110': 'purple', '#d111': 'indigo', '#d112': 'BlueViolet', '#d113': 'purple2', '#d529': 'grey67', '#d231': 'DarkSlateGray', '#d339': 'LightGoldenrod3', '#d233': 'MediumTurquoise', '#d232': 'DarkSlateGrey', '#d235': 'turquoise', '#d234': 'LightSeaGreen', '#d237': 'aquamarine', '#d236': 'aquamarine4', '#d239': 'aquamarine2', '#d238': 'aquamarine1', '#d332': 'gold1', '#d333': 'gold2', '#d334': 'gold3', '#d335': 'gold4', '#d336': 'LightGoldenrod', '#d337': 'LightGoldenrod4', '#d424': 'LightSalmon3', '#d425': 'LightSalmon', '#d426': 'LightSalmon1', '#d427': 'LightSalmon4', '#d420': 'sienna', '#d421': 'sienna1', '#d422': 'sienna2', '#d423': 'sienna3', '#d587': 'grey41', '#d586': 'gray41', '#d585': 'DimGrey', '#d584': 'DimGray', '#d428': 'LightSalmon2', '#d429': 'coral', '#d581': 'grey43', '#d580': 'gray43', '#d89': 'thistle4', '#d88': 'plum3', '#d349': 'goldenrod4', '#d348': 'goldenrod3', '#d81': 'thistle2', '#d80': 'thistle1', '#d83': 'plum2', '#d82': 'plum1', '#d85': 'thistle3', '#d84': 'thistle', '#d87': 'violet', '#d86': 'plum', '#d601': 'grey34', '#d67': 'DeepPink3', '#d66': 'DeepPink2', '#d65': 'DeepPink1', '#d64': 'DeepPink', '#d63': 'HotPink', '#d62': 'HotPink4', '#d61': 'HotPink1', '#d60': 'HotPink2', '#d69': 'maroon1', '#d68': 'DeepPink4', '#d510': 'grey76', '#d511': 'silver', '#d512': 'gray75', '#d513': 'grey75', '#d514': 'gray74', '#d515': 'grey74', '#d516': 'gray73', '#d517': 'grey73', '#d518': 'gray72', '#d519': 'grey72', '#d150': 'LightSteelBlue2', '#d151': 'LightSteelBlue3', '#d152': 'LightSteelBlue4', '#d153': 'SlateGray4', '#d154': 'SlateGray1', '#d155': 'SlateGray2', '#d156': 'SlateGray3', '#d157': 'LightSlateGray', '#d158': 'LightSlateGrey', '#d159': 'SlateGray', '#d565': 'gray50', '#d564': 'fractal', '#d567': 'gray', '#d566': 'grey50', '#d561': 'grey52', '#d560': 'gray52', '#d563': 'grey51', '#d562': 'gray51', '#d604': 'gray32', '#d605': 'grey32', '#d606': 'gray31', '#d607': 'grey31', '#d569': 'grey49', '#d568': 'gray49', '#d602': 'gray33', '#d603': 'grey33', '#d125': 'SlateBlue', '#d124': 'MediumSlateBlue', '#d127': 'SlateBlue2', '#d126': 'SlateBlue1', '#d121': 'MediumPurple4', '#d120': 'MediumPurple3', '#d123': 'LightSlateBlue', '#d122': 'DarkSlateBlue', '#d359': 'wheat1', '#d129': 'SlateBlue4', '#d128': 'SlateBlue3', '#d301': 'LightYellow', '#d300': 'ivory1', '#d303': 'beige', '#d302': 'LightYellow1', '#d305': 'LightGoldenrodYellow', '#d304': 'ivory2', '#d307': 'ivory3', '#d306': 'LightYellow2', '#d309': 'ivory4', '#d308': 'LightYellow3', '#d462': 'grey98', '#d351': 'DarkGoldenrod1', '#d464': 'grey97', '#d465': 'gray96', '#d466': 'grey96', '#d467': 'WhiteSmoke', '#d463': 'gray97', '#d268': 'PaleGreen3', '#d269': 'honeydew4', '#d266': 'DarkSeaGreen3', '#d267': 'DarkSeaGreen', '#d264': 'LightGreen', '#d265': 'PaleGreen2', '#d262': 'PaleGreen', '#d263': 'honeydew3', '#d260': 'DarkSeaGreen2', '#d261': 'PaleGreen1', '#d598': 'gray35', '#d29': 'firebrick4', '#d28': 'brown4', '#d23': 'red2', '#d22': 'firebrick3', '#d21': 'RosyBrown4', '#d20': 'red1', '#d27': 'IndianRed4', '#d26': 'red3', '#d25': 'brown', '#d24': 'firebrick', '#d599': 'grey35', '#d338': 'LightGoldenrod1', '#d419': 'sienna4', '#d418': 'seashell1', '#d230': 'teal', '#d415': 'chocolate4', '#d414': 'chocolate3', '#d417': 'seashell', '#d416': 'SaddleBrown', '#d411': 'chocolate', '#d410': 'seashell3', '#d413': 'chocolate2', '#d412': 'chocolate1', '#d398': 'tan1', '#d399': 'tan2', '#d392': 'DarkOrange1', '#d393': 'linen', '#d390': 'bisque1', '#d391': 'bisque3', '#d396': 'DarkOrange4', '#d397': 'peru', '#d394': 'DarkOrange2', '#d395': 'DarkOrange3', '#d194': 'CadetBlue2', '#d195': 'CadetBlue3', '#d196': 'CadetBlue4', '#d197': 'turquoise1', '#d190': 'LightBlue', '#d191': 'LightBlue4', '#d192': 'PowderBlue', '#d193': 'CadetBlue1', '#d198': 'turquoise2', '#d199': 'turquoise3', '#d330': 'cornsilk4', '#d331': 'gold', '#d640': 'gray14', '#d641': 'grey14', '#d642': 'gray13', '#d643': 'grey13', '#d644': 'gray12', '#d645': 'grey12', '#d646': 'gray11', '#d647': 'grey11', '#d648': 'gray10', '#d649': 'grey10', '#d668': 'black', '#d486': 'gainsboro', '#d487': 'gray86', '#d484': 'gray87', '#d485': 'grey87', '#d482': 'gray88', '#d483': 'grey88', '#d480': 'gray89', '#d481': 'grey89', '#d521': 'grey71', '#d520': 'gray71', '#d523': 'grey70', '#d522': 'gray70', '#d525': 'grey69', '#d524': 'gray69', '#d488': 'grey86', '#d489': 'gray85', '#d430': 'OrangeRed', '#d660': 'gray4', '#d169': 'SteelBlue1', '#d168': 'SteelBlue', '#d661': 'grey4', '#d161': 'DodgerBlue', '#d160': 'SlateGrey', '#d163': 'DodgerBlue2', '#d162': 'DodgerBlue1', '#d165': 'DodgerBlue3', '#d164': 'DodgerBlue4', '#d167': 'SteelBlue4', '#d166': 'AliceBlue', '#d635': 'grey17', '#d634': 'gray17', '#d637': 'grey16', '#d636': 'gray16', '#d631': 'grey19', '#d630': 'gray19', '#d633': 'grey18', '#d632': 'gray18', '#d639': 'grey15', '#d638': 'gray15', '#d368': 'PapayaWhip', '#d222': 'cyan', '#d223': 'cyan1', '#d220': 'LightCyan4', '#d221': 'aqua', '#d226': 'DarkSlateGray4', '#d227': 'cyan3', '#d224': 'PaleTurquoise4', '#d225': 'cyan2', '#d228': 'cyan4', '#d229': 'DarkCyan', '#d590': 'gray39', '#d538': 'gray63', '#d539': 'grey63', '#d591': 'grey39', '#d451': 'MistyRose', '#d450': 'MistyRose2', '#d453': 'salmon', '#d452': 'MistyRose1', '#d455': 'white', '#d454': 'MistyRose3', '#d457': 'grey100', '#d456': 'gray100', '#d459': 'gray99', '#d458': 'grey100', '#d592': 'gray38', '#d593': 'grey38', '#d594': 'gray37', '#d595': 'grey37', '#d596': 'gray36', '#d597': 'grey36', '#d297': 'YellowGreen', '#d296': 'OliveDrab3', '#d295': 'OliveDrab2', '#d294': 'OliveDrab1', '#d293': 'OliveDrab', '#d292': 'DarkOliveGreen', '#d291': 'DarkOliveGreen4', '#d290': 'DarkOliveGreen2', '#d356': 'wheat2', '#d357': 'OldLace', '#d354': 'DarkGoldenrod4', '#d355': 'FloralWhite', '#d352': 'DarkGoldenrod2', '#d353': 'DarkGoldenrod3', '#d299': 'ivory', '#d298': 'OliveDrab4', '#d468': 'gray95', '#d534': 'gray65', '#d535': 'grey65', '#d52': 'LavenderBlush2', '#d53': 'LavenderBlush4', '#d50': 'LavenderBlush1', '#d51': 'LavenderBlush3', '#d56': 'VioletRed3', '#d57': 'VioletRed1', '#d54': 'maroon', '#d55': 'HotPink3', '#d58': 'VioletRed2', '#d59': 'VioletRed4', '#d469': 'grey95', '#d558': 'gray53', '#d559': 'grey53', '#d576': 'gray45', '#d577': 'grey45', '#d574': 'gray46', '#d575': 'grey46', '#d572': 'gray47', '#d573': 'grey47', '#d570': 'gray48', '#d571': 'grey48', '#d671': 'opaque', '#d670': 'grey0', '#d673': 'transparent', '#d672': 'none', '#d578': 'gray44', '#d579': 'grey44', '#d589': 'grey40', '#d588': 'gray40', '#d4': 'RosyBrown2', '#d5': 'snow3', '#d6': 'LightCoral', '#d7': 'IndianRed1', '#d0': 'snow', '#d1': 'snow1', '#d2': 'snow2', '#d3': 'RosyBrown1', '#d8': 'RosyBrown3', '#d9': 'IndianRed2', '#d136': 'MediumBlue', '#d137': 'blue4', '#d134': 'blue2', '#d135': 'blue3', '#d132': 'blue', '#d133': 'blue1', '#d130': 'GhostWhite', '#d131': 'lavender', '#d583': 'grey42', '#d138': 'DarkBlue', '#d139': 'MidnightBlue', '#d312': 'yellow1', '#d313': 'yellow2', '#d310': 'LightYellow4', '#d311': 'yellow', '#d316': 'olive', '#d317': 'DarkKhaki', '#d314': 'yellow3', '#d315': 'yellow4', '#d318': 'khaki2', '#d319': 'LemonChiffon4', '#d259': 'DarkSeaGreen1', '#d258': 'honeydew2', '#d253': 'SeaGreen4', '#d252': 'SeaGreen1', '#d251': 'SeaGreen3', '#d250': 'SeaGreen', '#d257': 'honeydew1', '#d256': 'honeydew', '#d255': 'MediumForestGreen', '#d254': 'SeaGreen2', '#d345': 'goldenrod', '#d344': 'cornsilk1', '#d612': 'gray28', '#d347': 'goldenrod2', '#d461': 'gray98', '#d346': 'goldenrod1', '#d479': 'grey90', '#d341': 'cornsilk3', '#d478': 'gray90', '#d340': 'LightGoldenrod2', '#d343': 'cornsilk', '#d342': 'cornsilk2', '#d528': 'gray67', '#d408': 'seashell4', '#d409': 'seashell2', '#d406': 'PeachPuff3', '#d407': 'SandyBrown', '#d404': 'PeachPuff4', '#d405': 'PeachPuff2', '#d402': 'PeachPuff', '#d403': 'PeachPuff1', '#d400': 'tan3', '#d401': 'tan4', '#d552': 'gray56', '#d460': 'grey99', '#d16': 'firebrick2', '#d17': 'snow4', '#d14': 'IndianRed', '#d15': 'IndianRed3', '#d12': 'firebrick1', '#d13': 'brown2', '#d10': 'RosyBrown', '#d11': 'brown1', '#d532': 'gray66', '#d533': 'grey66', '#d530': 'DarkGray', '#d531': 'DarkGrey', '#d536': 'gray64', '#d537': 'grey64', '#d18': 'brown3', '#d19': 'red', '#d329': 'MediumGoldenRod', '#d328': 'LemonChiffon2', '#d178': 'LightSkyBlue1', '#d179': 'LightSkyBlue2', '#d172': 'SkyBlue4', '#d173': 'SkyBlue1', '#d170': 'SteelBlue2', '#d171': 'SteelBlue3', '#d176': 'LightSkyBlue', '#d177': 'LightSkyBlue4', '#d174': 'SkyBlue2', '#d175': 'SkyBlue3', '#d626': 'gray21', '#d627': 'grey21', '#d624': 'gray22', '#d625': 'grey22', '#d622': 'gray23', '#d623': 'grey23', '#d620': 'gray24', '#d621': 'grey24', '#d628': 'gray20', '#d629': 'grey20', '#d219': 'azure4', '#d218': 'DarkSlateGray3', '#d217': 'PaleTurquoise3', '#d216': 'DarkSlateGray2', '#d215': 'LightCyan3', '#d214': 'azure3', '#d213': 'DarkSlateGray1', '#d212': 'PaleTurquoise2', '#d211': 'PaleTurquoise', '#d210': 'PaleTurquoise1', '#d669': 'gray0', '#d582': 'gray42', '#d442': 'coral3', '#d443': 'coral4', '#d440': 'coral1', '#d441': 'coral2', '#d446': 'tomato1', '#d447': 'tomato2', '#d444': 'tomato4', '#d445': 'tomato', '#d448': 'tomato3', '#d449': 'MistyRose4', '#d280': 'DarkGreen', '#d281': 'LawnGreen', '#d282': 'chartreuse', '#d283': 'chartreuse1', '#d284': 'chartreuse2', '#d285': 'chartreuse3', '#d286': 'chartreuse4', '#d287': 'GreenYellow', '#d288': 'DarkOliveGreen3', '#d289': 'DarkOliveGreen1', '#d361': 'orange', '#d360': 'wheat3', '#d367': 'moccasin', '#d366': 'wheat4', '#d365': 'orange4', '#d364': 'orange3', '#d49': 'LavenderBlush', '#d48': 'PaleVioletRed3', '#d45': 'PaleVioletRed', '#d44': 'PaleVioletRed4', '#d47': 'PaleVioletRed1', '#d46': 'PaleVioletRed2', '#d41': 'pink2', '#d40': 'pink1', '#d43': 'pink4', '#d42': 'pink3', '#d358': 'wheat', '#d527': 'grey68', '#d526': 'gray68', '#d614': 'gray27', '#d543': 'grey61', '#d542': 'gray61', '#d541': 'grey62', '#d540': 'gray62', '#d547': 'grey59', '#d546': 'gray59', '#d545': 'grey60', '#d544': 'gray60', '#d662': 'gray3', '#d663': 'grey3', '#d549': 'grey58', '#d548': 'gray58', '#d666': 'gray1', '#d667': 'grey1', '#d664': 'gray2', '#d665': 'grey2', '#d103': 'MediumOrchid4', '#d102': 'MediumOrchid3', '#d101': 'MediumOrchid2', '#d100': 'MediumOrchid1', '#d107': 'DarkOrchid3', '#d106': 'DarkOrchid1', '#d105': 'DarkOrchid', '#d104': 'DarkViolet', '#d109': 'DarkOrchid4', '#d108': 'DarkOrchid2', '#d244': 'SpringGreen', '#d245': 'SpringGreen1', '#d246': 'SpringGreen2', '#d247': 'SpringGreen3', '#d240': 'aquamarine3', '#d241': 'MediumAquamarine', '#d242': 'MediumSpringGreen', '#d243': 'MintCream', '#d327': 'LemonChiffon3', '#d326': 'khaki', '#d325': 'LemonChiffon1', '#d324': 'LemonChiffon', '#d248': 'SpringGreen4', '#d249': 'MediumSeaGreen', '#d321': 'khaki3', '#d320': 'khaki1', '#d350': 'DarkGoldenrod', '#d439': 'salmon4', '#d438': 'salmon3', '#d98': 'purple', '#d99': 'MediumOrchid', '#d96': 'DarkMagenta', '#d97': 'magenta4', '#d94': 'magenta2', '#d95': 'magenta3', '#d92': 'magenta1', '#d93': 'plum4', '#d90': 'fuchsia', '#d91': 'magenta', '#d433': 'OrangeRed3', '#d432': 'OrangeRed2', '#d431': 'OrangeRed1', '#d74': 'VioletRed', '#d75': 'orchid2', '#d76': 'orchid', '#d77': 'orchid1', '#d70': 'maroon2', '#d71': 'maroon3', '#d72': 'maroon4', '#d73': 'MediumVioletRed', '#d437': 'salmon2', '#d78': 'orchid3', '#d79': 'orchid4', '#d436': 'salmon1', '#d435': 'DarkSalmon', '#d434': 'OrangeRed4', '#d507': 'gray77', '#d506': 'grey78', '#d505': 'gray78', '#d504': 'grey79', '#d503': 'gray79', '#d502': 'grey80', '#d501': 'gray80', '#d500': 'grey81', '#d509': 'gray76', '#d508': 'grey77', '#d473': 'grey93', '#d369': 'NavajoWhite3', '#d147': 'CornflowerBlue', '#d146': 'RoyalBlue4', '#d145': 'RoyalBlue3', '#d144': 'RoyalBlue2', '#d143': 'RoyalBlue1', '#d142': 'RoyalBlue', '#d141': 'NavyBlue', '#d140': 'navy', '#d149': 'LightSteelBlue1', '#d148': 'LightSteelBlue', '#d472': 'gray93', '#d613': 'grey28', '#d363': 'orange2', '#d611': 'grey29', '#d610': 'gray29', '#d617': 'grey26', '#d616': 'gray26', '#d615': 'grey27', '#d362': 'orange1', '#d619': 'grey25', '#d618': 'gray25', '#d208': 'azure2', '#d209': 'LightCyan2', '#d200': 'turquoise4', '#d201': 'cadet blue', '#d202': 'CadetBlue', '#d203': 'DarkTurquoise', '#d204': 'azure', '#d205': 'azure1', '#d206': 'LightCyan', '#d207': 'LightCyan1', '#d608': 'gray30', '#d609': 'grey30', '#d374': 'NavajoWhite4', '#d375': 'AntiqueWhite4', '#d376': 'AntiqueWhite', '#d377': 'tan', '#d370': 'BlanchedAlmond', '#d371': 'NavajoWhite', '#d372': 'NavajoWhite1', '#d373': 'NavajoWhite2', '#d477': 'grey91', '#d476': 'gray91', '#d475': 'grey92', '#d474': 'gray92', '#d378': 'bisque4', '#d379': 'burlywood', '#d471': 'grey94', '#d470': 'gray94', '#d279': 'green', '#d278': 'green4', '#d275': 'PaleGreen4', '#d274': 'green2', '#d277': 'ForestGreen', '#d276': 'green3', '#d271': 'lime', '#d270': 'green1', '#d273': 'DarkSeaGreen4', '#d272': 'LimeGreen', '#d38': 'pink', '#d39': 'crimson', '#d30': 'DarkRed', '#d31': 'red4', '#d32': 'maroon', '#d33': 'LightPink1', '#d34': 'LightPink3', '#d35': 'LightPink4', '#d36': 'LightPink2', '#d37': 'LightPink', '#d658': 'gray5', '#d389': 'bisque', '#d388': 'bisque2', '#d381': 'burlywood1', '#d380': 'AntiqueWhite2', '#d383': 'burlywood2', '#d382': 'burlywood3', '#d385': 'burlywood4', '#d384': 'AntiqueWhite1', '#d387': 'DarkOrange', '#d386': 'AntiqueWhite3', '#d189': 'LightBlue2', '#d188': 'LightBlue1', '#d183': 'DeepSkyBlue', '#d182': 'LightBlue3', '#d181': 'SkyBlue', '#d180': 'LightSkyBlue3', '#d187': 'DeepSkyBlue3', '#d186': 'DeepSkyBlue4', '#d185': 'DeepSkyBlue2', '#d184': 'DeepSkyBlue1', '#d657': 'grey6', '#d656': 'gray6', '#d655': 'grey7', '#d654': 'gray7', '#d653': 'grey8', '#d652': 'gray8', '#d651': 'grey9', '#d650': 'gray9', '#d550': 'gray57', '#d659': 'grey5', '#d551': 'grey57', '#d495': 'LightGray', '#d494': 'grey83', '#d497': 'gray82', '#d496': 'LightGrey', '#d491': 'gray84', '#d490': 'grey85', '#d493': 'gray83', '#d492': 'grey84', '#d554': 'gray55', '#d555': 'grey55', '#d556': 'gray54', '#d557': 'grey54', '#d499': 'gray81', '#d498': 'grey82', '#d323': 'PaleGoldenrod', '#d553': 'grey56'}
diff --git a/frontend/imgrid/colors/js/colordictionaries2.js b/frontend/imgrid/colors/js/colordictionaries2.js
new file mode 100755
index 0000000..a4acbf2
--- /dev/null
+++ b/frontend/imgrid/colors/js/colordictionaries2.js
@@ -0,0 +1,3 @@
+rgbtohex = {'rgb(255, 235, 205)': '#FFEBCD', 'rgb(205, 155, 155)': '#CD9B9B', 'rgb(0, 0, 128)': '#000080', 'rgb(179, 238, 58)': '#B3EE3A', 'rgb(205, 51, 51)': '#CD3333', 'rgb(118, 238, 198)': '#76EEC6', 'rgb(214, 214, 214)': '#D6D6D6', 'rgb(189, 189, 189)': '#BDBDBD', 'rgb(139, 131, 120)': '#8B8378', 'rgb(0, 238, 238)': '#00EEEE', 'rgb(137, 104, 205)': '#8968CD', 'rgb(85, 107, 47)': '#556B2F', 'rgb(107, 107, 107)': '#6B6B6B', 'rgb(205, 205, 180)': '#CDCDB4', 'rgb(218, 112, 214)': '#DA70D6', 'rgb(34, 139, 34)': '#228B22', 'rgb(245, 222, 179)': '#F5DEB3', 'rgb(139, 90, 43)': '#8B5A2B', 'rgb(255, 246, 143)': '#FFF68F', 'rgb(205, 91, 69)': '#CD5B45', 'rgb(255, 187, 255)': '#FFBBFF', 'rgb(162, 181, 205)': '#A2B5CD', 'rgb(238, 118, 0)': '#EE7600', 'rgb(238, 154, 73)': '#EE9A49', 'rgb(194, 194, 194)': '#C2C2C2', 'rgb(184, 134, 11)': '#B8860B', 'rgb(93, 71, 139)': '#5D478B', 'rgb(255, 182, 193)': '#FFB6C1', 'rgb(139, 69, 0)': '#8B4500', 'rgb(105, 89, 205)': '#6959CD', 'rgb(238, 173, 14)': '#EEAD0E', 'rgb(151, 255, 255)': '#97FFFF', 'rgb(205, 150, 205)': '#CD96CD', 'rgb(255, 69, 0)': '#FF4500', 'rgb(0, 134, 139)': '#00868B', 'rgb(0, 238, 0)': '#00EE00', 'rgb(255, 106, 106)': '#FF6A6A', 'rgb(186, 186, 186)': '#BABABA', 'rgb(143, 188, 143)': '#8FBC8F', 'rgb(139, 99, 108)': '#8B636C', 'rgb(224, 102, 255)': '#E066FF', 'rgb(100, 149, 237)': '#6495ED', 'rgb(0, 139, 69)': '#008B45', 'rgb(178, 223, 238)': '#B2DFEE', 'rgb(205, 192, 176)': '#CDC0B0', 'rgb(0, 206, 209)': '#00CED1', 'rgb(104, 131, 139)': '#68838B', 'rgb(155, 205, 155)': '#9BCD9B', 'rgb(139, 76, 57)': '#8B4C39', 'rgb(205, 149, 12)': '#CD950C', 'rgb(67, 205, 128)': '#43CD80', 'rgb(54, 54, 54)': '#363636', 'rgb(0, 205, 205)': '#00CDCD', 'rgb(99, 184, 255)': '#63B8FF', 'rgb(238, 233, 233)': '#EEE9E9', 'rgb(205, 201, 201)': '#CDC9C9', 'rgb(156, 156, 156)': '#9C9C9C', 'rgb(139, 125, 123)': '#8B7D7B', 'rgb(148, 148, 148)': '#949494', 'rgb(102, 205, 170)': '#66CDAA', 'rgb(139, 54, 38)': '#8B3626', 'rgb(255, 181, 197)': '#FFB5C5', 'rgb(173, 216, 230)': '#ADD8E6', 'rgb(46, 46, 46)': '#2E2E2E', 'rgb(164, 211, 238)': '#A4D3EE', 'rgb(232, 232, 232)': '#E8E8E8', 'rgb(105, 105, 105)': '#696969', 'rgb(205, 193, 197)': '#CDC1C5', 'rgb(20, 20, 20)': '#141414', 'rgb(139, 139, 131)': '#8B8B83', 'rgb(255, 114, 86)': '#FF7256', 'rgb(0, 104, 139)': '#00688B', 'rgb(205, 41, 144)': '#CD2990', 'rgb(127, 127, 127)': '#7F7F7F', 'rgb(255, 239, 213)': '#FFEFD5', 'rgb(238, 238, 209)': '#EEEED1', 'rgb(242, 242, 242)': '#F2F2F2', 'rgb(240, 230, 140)': '#F0E68C', 'rgb(238, 207, 161)': '#EECFA1', 'rgb(25, 25, 112)': '#191970', 'rgb(205, 79, 57)': '#CD4F39', 'rgb(84, 84, 84)': '#545454', 'rgb(110, 139, 61)': '#6E8B3D', 'rgb(255, 215, 0)': '#FFD700', 'rgb(143, 143, 143)': '#8F8F8F', 'rgb(238, 59, 59)': '#EE3B3B', 'rgb(166, 166, 166)': '#A6A6A6', 'rgb(255, 160, 122)': '#FFA07A', 'rgb(51, 51, 51)': '#333333', 'rgb(224, 238, 224)': '#E0EEE0', 'rgb(139, 121, 94)': '#8B795E', 'rgb(110, 123, 139)': '#6E7B8B', 'rgb(26, 26, 26)': '#1A1A1A', 'rgb(238, 99, 99)': '#EE6363', 'rgb(178, 58, 238)': '#B23AEE', 'rgb(238, 197, 145)': '#EEC591', 'rgb(171, 171, 171)': '#ABABAB', 'rgb(237, 237, 237)': '#EDEDED', 'rgb(238, 0, 0)': '#EE0000', 'rgb(139, 71, 38)': '#8B4726', 'rgb(82, 139, 139)': '#528B8B', 'rgb(139, 105, 105)': '#8B6969', 'rgb(160, 32, 240)': '#A020F0', 'rgb(78, 238, 148)': '#4EEE94', 'rgb(205, 85, 85)': '#CD5555', 'rgb(205, 181, 205)': '#CDB5CD', 'rgb(184, 184, 184)': '#B8B8B8', 'rgb(255, 222, 173)': '#FFDEAD', 'rgb(8, 8, 8)': '#080808', 'rgb(255, 248, 220)': '#FFF8DC', 'rgb(175, 238, 238)': '#AFEEEE', 'rgb(255, 130, 71)': '#FF8247', 'rgb(13, 13, 13)': '#0D0D0D', 'rgb(0, 139, 139)': '#008B8B', 'rgb(187, 255, 255)': '#BBFFFF', 'rgb(147, 112, 219)': '#9370DB', 'rgb(0, 128, 0)': '#008000', 'rgb(238, 64, 0)': '#EE4000', 'rgb(238, 18, 137)': '#EE1289', 'rgb(54, 100, 139)': '#36648B', 'rgb(176, 176, 176)': '#B0B0B0', 'rgb(0, 0, 238)': '#0000EE', 'rgb(238, 154, 0)': '#EE9A00', 'rgb(188, 143, 143)': '#BC8F8F', 'rgb(240, 255, 255)': '#F0FFFF', 'rgb(191, 62, 255)': '#BF3EFF', 'rgb(171, 130, 255)': '#AB82FF', 'rgb(205, 173, 0)': '#CDAD00', 'rgb(255, 48, 48)': '#FF3030', 'rgb(122, 197, 205)': '#7AC5CD', 'rgb(139, 87, 66)': '#8B5742', 'rgb(204, 204, 204)': '#CCCCCC', 'rgb(205, 129, 98)': '#CD8162', 'rgb(224, 224, 224)': '#E0E0E0', 'rgb(218, 165, 32)': '#DAA520', 'rgb(205, 145, 158)': '#CD919E', 'rgb(139, 62, 47)': '#8B3E2F', 'rgb(238, 122, 233)': '#EE7AE9', 'rgb(152, 251, 152)': '#98FB98', 'rgb(240, 128, 128)': '#F08080', 'rgb(162, 205, 90)': '#A2CD5A', 'rgb(79, 79, 79)': '#4F4F4F', 'rgb(169, 169, 169)': '#A9A9A9', 'rgb(255, 127, 0)': '#FF7F00', 'rgb(139, 28, 98)': '#8B1C62', 'rgb(253, 245, 230)': '#FDF5E6', 'rgb(141, 238, 238)': '#8DEEEE', 'rgb(238, 213, 210)': '#EED5D2', 'rgb(208, 32, 144)': '#D02090', 'rgb(0, 205, 0)': '#00CD00', 'rgb(139, 71, 137)': '#8B4789', 'rgb(205, 201, 165)': '#CDC9A5', 'rgb(0, 229, 238)': '#00E5EE', 'rgb(205, 140, 149)': '#CD8C95', 'rgb(124, 205, 124)': '#7CCD7C', 'rgb(220, 220, 220)': '#DCDCDC', 'rgb(238, 229, 222)': '#EEE5DE', 'rgb(87, 87, 87)': '#575757', 'rgb(70, 130, 180)': '#4682B4', 'rgb(205, 104, 137)': '#CD6889', 'rgb(15, 15, 15)': '#0F0F0F', 'rgb(38, 38, 38)': '#262626', 'rgb(238, 180, 34)': '#EEB422', 'rgb(205, 200, 177)': '#CDC8B1', 'rgb(238, 210, 238)': '#EED2EE', 'rgb(150, 150, 150)': '#969696', 'rgb(0, 255, 127)': '#00FF7F', 'rgb(139, 126, 102)': '#8B7E66', 'rgb(205, 175, 149)': '#CDAF95', 'rgb(152, 245, 255)': '#98F5FF', 'rgb(0, 250, 154)': '#00FA9A', 'rgb(120, 120, 120)': '#787878', 'rgb(238, 118, 33)': '#EE7621', 'rgb(128, 128, 0)': '#808000', 'rgb(139, 137, 112)': '#8B8970', 'rgb(107, 142, 35)': '#6B8E23', 'rgb(219, 219, 219)': '#DBDBDB', 'rgb(205, 205, 0)': '#CDCD00', 'rgb(180, 205, 205)': '#B4CDCD', 'rgb(115, 115, 115)': '#737373', 'rgb(131, 139, 139)': '#838B8B', 'rgb(0, 178, 238)': '#00B2EE', 'rgb(94, 94, 94)': '#5E5E5E', 'rgb(135, 135, 135)': '#878787', 'rgb(145, 145, 145)': '#919191', 'rgb(205, 0, 0)': '#CD0000', 'rgb(16, 78, 139)': '#104E8B', 'rgb(133, 133, 133)': '#858585', 'rgb(205, 38, 38)': '#CD2626', 'rgb(255, 193, 193)': '#FFC1C1', 'rgb(205, 183, 181)': '#CDB7B5', 'rgb(122, 55, 139)': '#7A378B', 'rgb(154, 192, 205)': '#9AC0CD', 'rgb(191, 239, 255)': '#BFEFFF', 'rgb(219, 112, 147)': '#DB7093', 'rgb(121, 205, 205)': '#79CDCD', 'rgb(238, 232, 170)': '#EEE8AA', 'rgb(102, 205, 0)': '#66CD00', 'rgb(255, 185, 15)': '#FFB90F', 'rgb(176, 196, 222)': '#B0C4DE', 'rgb(255, 236, 139)': '#FFEC8B', 'rgb(205, 105, 201)': '#CD69C9', 'rgb(250, 250, 250)': '#FAFAFA', 'rgb(245, 245, 220)': '#F5F5DC', 'rgb(238, 106, 80)': '#EE6A50', 'rgb(64, 64, 64)': '#404040', 'rgb(238, 220, 130)': '#EEDC82', 'white': '#000000', 'rgb(125, 38, 205)': '#7D26CD', 'rgb(205, 133, 63)': '#CD853F', 'rgb(139, 102, 139)': '#8B668B', 'rgb(71, 71, 71)': '#474747', 'rgb(118, 238, 0)': '#76EE00', 'rgb(192, 255, 62)': '#C0FF3E', 'rgb(0, 0, 139)': '#00008B', 'rgb(248, 248, 255)': '#F8F8FF', 'rgb(3, 3, 3)': '#030303', 'rgb(176, 226, 255)': '#B0E2FF', 'rgb(139, 105, 20)': '#8B6914', 'rgb(255, 105, 180)': '#FF69B4', 'rgb(124, 252, 0)': '#7CFC00', 'rgb(238, 238, 224)': '#EEEEE0', 'rgb(139, 69, 19)': '#8B4513', 'rgb(139, 0, 139)': '#8B008B', 'rgb(31, 31, 31)': '#1F1F1F', 'rgb(159, 182, 205)': '#9FB6CD', 'rgb(181, 181, 181)': '#B5B5B5', 'rgb(0, 245, 255)': '#00F5FF', 'rgb(105, 139, 105)': '#698B69', 'rgb(159, 121, 238)': '#9F79EE', 'rgb(205, 198, 115)': '#CDC673', 'rgb(77, 77, 77)': '#4D4D4D', 'rgb(139, 90, 0)': '#8B5A00', 'rgb(122, 122, 122)': '#7A7A7A', 'rgb(224, 238, 238)': '#E0EEEE', 'rgb(50, 129, 75)': '#32814B', 'rgb(202, 225, 255)': '#CAE1FF', 'rgb(255, 110, 180)': '#FF6EB4', 'rgb(238, 48, 167)': '#EE30A7', 'rgb(220, 20, 60)': '#DC143C', 'rgb(127, 255, 212)': '#7FFFD4', 'rgb(205, 179, 139)': '#CDB38B', 'rgb(28, 28, 28)': '#1C1C1C', 'rgb(229, 229, 229)': '#E5E5E5', 'rgb(47, 79, 79)': '#2F4F4F', 'rgb(59, 59, 59)': '#3B3B3B', 'rgb(69, 139, 116)': '#458B74', 'rgb(255, 211, 155)': '#FFD39B', 'rgb(139, 119, 101)': '#8B7765', 'rgb(238, 230, 133)': '#EEE685', 'rgb(10, 10, 10)': '#0A0A0A', 'rgb(144, 238, 144)': '#90EE90', 'rgb(99, 99, 99)': '#636363', 'rgb(188, 238, 104)': '#BCEE68', 'rgb(255, 231, 186)': '#FFE7BA', 'rgb(154, 50, 205)': '#9A32CD', 'rgb(46, 139, 87)': '#2E8B57', 'rgb(145, 44, 238)': '#912CEE', 'rgb(255, 240, 245)': '#FFF0F5', 'rgb(67, 110, 238)': '#436EEE', 'rgb(238, 180, 180)': '#EEB4B4', 'rgb(108, 166, 205)': '#6CA6CD', 'rgb(173, 173, 173)': '#ADADAD', 'rgb(176, 48, 96)': '#B03060', 'rgb(23, 23, 23)': '#171717', 'rgb(138, 138, 138)': '#8A8A8A', 'rgb(139, 137, 137)': '#8B8989', 'rgb(209, 193, 102)': '#D1C166', 'rgb(139, 123, 139)': '#8B7B8B', 'rgb(154, 255, 154)': '#9AFF9A', 'rgb(130, 130, 130)': '#828282', 'rgb(255, 99, 71)': '#FF6347', 'rgb(205, 183, 158)': '#CDB79E', 'rgb(205, 102, 29)': '#CD661D', 'rgb(128, 0, 0)': '#800000', 'rgb(0, 0, 255)': '#0000FF', 'rgb(255, 52, 179)': '#FF34B3', 'rgb(250, 235, 215)': '#FAEBD7', 'rgb(163, 163, 163)': '#A3A3A3', 'rgb(56, 56, 56)': '#383838', 'rgb(85, 26, 139)': '#551A8B', 'rgb(139, 58, 58)': '#8B3A3A', 'rgb(168, 168, 168)': '#A8A8A8', 'rgb(255, 225, 255)': '#FFE1FF', 'rgb(125, 125, 125)': '#7D7D7D', 'rgb(131, 111, 255)': '#836FFF', 'rgb(95, 158, 160)': '#5F9EA0', 'rgb(165, 42, 42)': '#A52A2A', 'rgb(245, 255, 250)': '#F5FFFA', 'rgb(255, 218, 185)': '#FFDAB9', 'rgb(255, 228, 225)': '#FFE4E1', 'rgb(216, 191, 216)': '#D8BFD8', 'rgb(139, 101, 8)': '#8B6508', 'rgb(205, 104, 57)': '#CD6839', 'rgb(255, 131, 250)': '#FF83FA', 'rgb(82, 82, 82)': '#525252', 'rgb(117, 117, 117)': '#757575', 'rgb(255, 165, 0)': '#FFA500', 'rgb(255, 64, 64)': '#FF4040', 'rgb(255, 165, 79)': '#FFA54F', 'rgb(205, 55, 0)': '#CD3700', 'rgb(188, 210, 238)': '#BCD2EE', 'rgb(238, 121, 159)': '#EE799F', 'rgb(5, 5, 5)': '#050505', 'rgb(217, 217, 217)': '#D9D9D9', 'rgb(205, 186, 150)': '#CDBA96', 'rgb(139, 131, 134)': '#8B8386', 'rgb(185, 211, 238)': '#B9D3EE', 'rgb(235, 235, 235)': '#EBEBEB', 'rgb(230, 230, 250)': '#E6E6FA', 'rgb(41, 41, 41)': '#292929', 'rgb(205, 92, 92)': '#CD5C5C', 'rgb(131, 139, 131)': '#838B83', 'rgb(123, 104, 238)': '#7B68EE', 'rgb(128, 0, 128)': '#800080', 'rgb(139, 26, 26)': '#8B1A1A', 'rgb(141, 182, 205)': '#8DB6CD', 'rgb(212, 212, 212)': '#D4D4D4', 'rgb(238, 162, 173)': '#EEA2AD', 'rgb(255, 255, 0)': '#FFFF00', 'rgb(192, 192, 192)': '#C0C0C0', 'rgb(139, 71, 93)': '#8B475D', 'rgb(0, 100, 0)': '#006400', 'rgb(139, 37, 0)': '#8B2500', 'rgb(198, 226, 255)': '#C6E2FF', 'rgb(24, 116, 205)': '#1874CD', 'rgb(178, 34, 34)': '#B22222', 'rgb(28, 134, 238)': '#1C86EE', 'rgb(255, 0, 255)': '#FF00FF', 'rgb(33, 33, 33)': '#212121', 'rgb(209, 238, 238)': '#D1EEEE', 'rgb(255, 127, 80)': '#FF7F50', 'rgb(0, 154, 205)': '#009ACD', 'rgb(255, 255, 224)': '#FFFFE0', 'rgb(75, 0, 130)': '#4B0082', 'rgb(160, 82, 45)': '#A0522D', 'rgb(138, 43, 226)': '#8A2BE2', 'rgb(238, 224, 229)': '#EEE0E5', 'rgb(106, 90, 205)': '#6A5ACD', 'rgb(227, 227, 227)': '#E3E3E3', 'rgb(255, 250, 250)': '#FFFAFA', 'rgb(255, 174, 185)': '#FFAEB9', 'rgb(205, 0, 205)': '#CD00CD', 'rgb(126, 126, 126)': '#7E7E7E', 'rgb(139, 10, 80)': '#8B0A50', 'rgb(186, 85, 211)': '#BA55D3', 'rgb(205, 133, 0)': '#CD8500', 'rgb(211, 211, 211)': '#D3D3D3', 'rgb(69, 69, 69)': '#454545', 'rgb(222, 222, 222)': '#DEDEDE', 'rgb(221, 160, 221)': '#DDA0DD', 'rgb(255, 255, 240)': '#FFFFF0', 'rgb(112, 112, 112)': '#707070', 'rgb(209, 95, 238)': '#D15FEE', 'rgb(0, 255, 0)': '#00FF00', 'rgb(238, 233, 191)': '#EEE9BF', 'rgb(92, 92, 92)': '#5C5C5C', 'rgb(205, 112, 84)': '#CD7054', 'rgb(255, 228, 196)': '#FFE4C4', 'rgb(255, 192, 203)': '#FFC0CB', 'rgb(238, 130, 238)': '#EE82EE', 'rgb(122, 103, 238)': '#7A67EE', 'rgb(238, 121, 66)': '#EE7942', 'rgb(102, 139, 139)': '#668B8B', 'rgb(250, 240, 230)': '#FAF0E6', 'rgb(247, 247, 247)': '#F7F7F7', 'rgb(32, 178, 170)': '#20B2AA', 'rgb(97, 97, 97)': '#616161', 'rgb(150, 205, 205)': '#96CDCD', 'rgb(158, 158, 158)': '#9E9E9E', 'rgb(238, 58, 140)': '#EE3A8C', 'rgb(255, 228, 181)': '#FFE4B5', 'rgb(0, 197, 205)': '#00C5CD', 'rgb(205, 96, 144)': '#CD6090', 'rgb(205, 16, 118)': '#CD1076', 'rgb(240, 240, 240)': '#F0F0F0', 'rgb(176, 224, 230)': '#B0E0E6', 'rgb(199, 21, 133)': '#C71585', 'rgb(238, 203, 173)': '#EECBAD', 'rgb(173, 255, 47)': '#ADFF2F', 'rgb(238, 174, 238)': '#EEAEEE', 'rgb(191, 191, 191)': '#BFBFBF', 'rgb(222, 184, 135)': '#DEB887', 'rgb(18, 18, 18)': '#121212', 'rgb(83, 134, 139)': '#53868B', 'rgb(139, 134, 130)': '#8B8682', 'rgb(142, 229, 238)': '#8EE5EE', 'rgb(0, 139, 0)': '#008B00', 'rgb(240, 255, 240)': '#F0FFF0', 'rgb(104, 34, 139)': '#68228B', 'rgb(193, 255, 193)': '#C1FFC1', 'rgb(0, 0, 0)': '#000000', 'rgb(139, 58, 98)': '#8B3A62', 'rgb(89, 89, 89)': '#595959', 'rgb(72, 118, 255)': '#4876FF', 'rgb(108, 123, 139)': '#6C7B8B', 'rgb(255, 20, 147)': '#FF1493', 'rgb(255, 250, 240)': '#FFFAF0', 'rgb(132, 112, 255)': '#8470FF', 'rgb(255, 62, 150)': '#FF3E96', 'rgb(139, 125, 107)': '#8B7D6B', 'rgb(64, 224, 208)': '#40E0D0', 'rgb(148, 0, 211)': '#9400D3', 'rgb(238, 106, 167)': '#EE6AA7', 'rgb(238, 44, 44)': '#EE2C2C', 'rgb(72, 209, 204)': '#48D1CC', 'rgb(205, 155, 29)': '#CD9B1D', 'rgb(139, 0, 0)': '#8B0000', 'rgb(238, 92, 66)': '#EE5C42', 'rgb(238, 216, 174)': '#EED8AE', 'rgb(65, 105, 225)': '#4169E1', 'rgb(0, 205, 102)': '#00CD66', 'rgb(96, 123, 139)': '#607B8B', 'rgb(210, 180, 140)': '#D2B48C', 'rgb(135, 206, 255)': '#87CEFF', 'rgb(252, 252, 252)': '#FCFCFC', 'rgb(61, 61, 61)': '#3D3D3D', 'rgb(205, 102, 0)': '#CD6600', 'rgb(58, 95, 205)': '#3A5FCD', 'rgb(30, 144, 255)': '#1E90FF', 'rgb(245, 245, 245)': '#F5F5F5', 'rgb(255, 130, 171)': '#FF82AB', 'rgb(60, 179, 113)': '#3CB371', 'rgb(139, 139, 122)': '#8B8B7A', 'rgb(139, 136, 120)': '#8B8878', 'rgb(139, 34, 82)': '#8B2252', 'rgb(238, 223, 204)': '#EEDFCC', 'rgb(238, 213, 183)': '#EED5B7', 'rgb(250, 250, 210)': '#FAFAD2', 'rgb(255, 250, 205)': '#FFFACD', 'rgb(39, 64, 139)': '#27408B', 'rgb(84, 139, 84)': '#548B54', 'rgb(238, 221, 130)': '#EEDD82', 'rgb(139, 95, 101)': '#8B5F65', 'rgb(210, 105, 30)': '#D2691E', 'rgb(139, 139, 0)': '#8B8B00', 'rgb(238, 149, 114)': '#EE9572', 'rgb(0, 255, 255)': '#00FFFF', 'rgb(71, 60, 139)': '#473C8B', 'rgb(207, 207, 207)': '#CFCFCF', 'rgb(153, 50, 204)': '#9932CC', 'rgb(36, 36, 36)': '#242424', 'rgb(153, 153, 153)': '#999999', 'rgb(250, 128, 114)': '#FA8072', 'rgb(174, 238, 238)': '#AEEEEE', 'rgb(139, 117, 0)': '#8B7500', 'rgb(139, 35, 35)': '#8B2323', 'rgb(92, 172, 238)': '#5CACEE', 'rgb(48, 48, 48)': '#303030', 'rgb(139, 129, 76)': '#8B814C', 'rgb(72, 61, 139)': '#483D8B', 'rgb(238, 169, 184)': '#EEA9B8', 'rgb(69, 139, 0)': '#458B00', 'rgb(0, 128, 128)': '#008080', 'rgb(255, 255, 255)': '#FFFFFF', 'rgb(244, 164, 96)': '#F4A460', 'rgb(154, 205, 50)': '#9ACD32', 'rgb(126, 192, 238)': '#7EC0EE', 'rgb(209, 209, 209)': '#D1D1D1', 'rgb(74, 112, 139)': '#4A708B', 'rgb(112, 128, 144)': '#708090', 'rgb(105, 139, 34)': '#698B22', 'rgb(110, 110, 110)': '#6E6E6E', 'rgb(179, 179, 179)': '#B3B3B3', 'rgb(205, 50, 120)': '#CD3278', 'rgb(119, 136, 153)': '#778899', 'rgb(139, 115, 85)': '#8B7355', 'rgb(255, 193, 37)': '#FFC125', 'rgb(224, 255, 255)': '#E0FFFF', 'rgb(66, 66, 66)': '#424242', 'rgb(193, 205, 193)': '#C1CDC1', 'rgb(0, 191, 255)': '#00BFFF', 'rgb(205, 205, 193)': '#CDCDC1', 'rgb(238, 238, 0)': '#EEEE00', 'rgb(255, 140, 105)': '#FF8C69', 'rgb(135, 206, 235)': '#87CEEB', 'rgb(238, 201, 0)': '#EEC900', 'rgb(238, 232, 205)': '#EEE8CD', 'rgb(0, 0, 205)': '#0000CD', 'rgb(238, 130, 98)': '#EE8262', 'rgb(155, 48, 255)': '#9B30FF', 'rgb(43, 43, 43)': '#2B2B2B', 'rgb(240, 248, 255)': '#F0F8FF', 'rgb(238, 0, 238)': '#EE00EE', 'rgb(128, 128, 128)': '#808080', 'rgb(193, 205, 205)': '#C1CDCD', 'rgb(50, 205, 50)': '#32CD32', 'rgb(201, 201, 201)': '#C9C9C9', 'rgb(255, 239, 219)': '#FFEFDB', 'rgb(196, 196, 196)': '#C4C4C4', 'rgb(135, 206, 250)': '#87CEFA', 'rgb(139, 134, 78)': '#8B864E', 'rgb(79, 148, 205)': '#4F94CD', 'rgb(74, 74, 74)': '#4A4A4A', 'rgb(255, 0, 0)': '#FF0000', 'rgb(233, 150, 122)': '#E9967A', 'rgb(205, 190, 112)': '#CDBE70', 'rgb(84, 255, 159)': '#54FF9F', 'rgb(205, 170, 125)': '#CDAA7D', 'rgb(127, 255, 0)': '#7FFF00', 'rgb(102, 102, 102)': '#666666', 'rgb(180, 238, 180)': '#B4EEB4', 'rgb(122, 139, 139)': '#7A8B8B', 'rgb(255, 140, 0)': '#FF8C00', 'rgb(205, 197, 191)': '#CDC5BF', 'rgb(140, 140, 140)': '#8C8C8C', 'rgb(199, 199, 199)': '#C7C7C7', 'rgb(202, 255, 112)': '#CAFF70', 'rgb(255, 245, 238)': '#FFF5EE', 'rgb(189, 183, 107)': '#BDB76B', 'rgb(0, 238, 118)': '#00EE76', 'rgb(180, 82, 205)': '#B452CD', 'rgb(255, 127, 36)': '#FF7F24', 'rgb(161, 161, 161)': '#A1A1A1'}
+rgbtoname = {'rgb(255, 235, 205)': 'BlanchedAlmond', 'rgb(205, 155, 155)': 'RosyBrown3', 'rgb(0, 0, 128)': 'NavyBlue', 'rgb(179, 238, 58)': 'OliveDrab2', 'rgb(205, 51, 51)': 'brown3', 'rgb(118, 238, 198)': 'aquamarine2', 'rgb(214, 214, 214)': 'grey84', 'rgb(189, 189, 189)': 'grey74', 'rgb(139, 131, 120)': 'AntiqueWhite4', 'rgb(0, 238, 238)': 'cyan2', 'rgb(137, 104, 205)': 'MediumPurple3', 'rgb(85, 107, 47)': 'DarkOliveGreen', 'rgb(107, 107, 107)': 'grey42', 'rgb(205, 205, 180)': 'LightYellow3', 'rgb(218, 112, 214)': 'orchid', 'rgb(34, 139, 34)': 'ForestGreen', 'rgb(245, 222, 179)': 'wheat', 'rgb(139, 90, 43)': 'tan4', 'rgb(255, 246, 143)': 'khaki1', 'rgb(205, 91, 69)': 'coral3', 'rgb(255, 187, 255)': 'plum1', 'rgb(162, 181, 205)': 'LightSteelBlue3', 'rgb(238, 118, 0)': 'DarkOrange2', 'rgb(238, 154, 73)': 'tan2', 'rgb(194, 194, 194)': 'grey76', 'rgb(184, 134, 11)': 'DarkGoldenrod', 'rgb(93, 71, 139)': 'MediumPurple4', 'rgb(255, 182, 193)': 'LightPink', 'rgb(139, 69, 0)': 'DarkOrange4', 'rgb(105, 89, 205)': 'SlateBlue3', 'rgb(238, 173, 14)': 'DarkGoldenrod2', 'rgb(151, 255, 255)': 'DarkSlateGray1', 'rgb(205, 150, 205)': 'plum3', 'rgb(255, 69, 0)': 'OrangeRed1', 'rgb(0, 134, 139)': 'turquoise4', 'rgb(0, 238, 0)': 'green2', 'rgb(255, 106, 106)': 'IndianRed1', 'rgb(186, 186, 186)': 'grey73', 'rgb(143, 188, 143)': 'DarkSeaGreen', 'rgb(139, 99, 108)': 'pink4', 'rgb(224, 102, 255)': 'MediumOrchid1', 'rgb(100, 149, 237)': 'CornflowerBlue', 'rgb(0, 139, 69)': 'SpringGreen4', 'rgb(178, 223, 238)': 'LightBlue2', 'rgb(205, 192, 176)': 'AntiqueWhite3', 'rgb(0, 206, 209)': 'DarkTurquoise', 'rgb(104, 131, 139)': 'LightBlue4', 'rgb(155, 205, 155)': 'DarkSeaGreen3', 'rgb(139, 76, 57)': 'salmon4', 'rgb(205, 149, 12)': 'DarkGoldenrod3', 'rgb(67, 205, 128)': 'SeaGreen3', 'rgb(54, 54, 54)': 'grey21', 'rgb(0, 205, 205)': 'cyan3', 'rgb(99, 184, 255)': 'SteelBlue1', 'rgb(238, 233, 233)': 'snow2', 'rgb(205, 201, 201)': 'snow3', 'rgb(156, 156, 156)': 'grey61', 'rgb(139, 125, 123)': 'MistyRose4', 'rgb(148, 148, 148)': 'grey58', 'rgb(102, 205, 170)': 'MediumAquamarine', 'rgb(139, 54, 38)': 'tomato4', 'rgb(255, 181, 197)': 'pink1', 'rgb(173, 216, 230)': 'LightBlue', 'rgb(46, 46, 46)': 'grey18', 'rgb(164, 211, 238)': 'LightSkyBlue2', 'rgb(232, 232, 232)': 'grey91', 'rgb(105, 105, 105)': 'grey41', 'rgb(205, 193, 197)': 'LavenderBlush3', 'rgb(20, 20, 20)': 'grey8', 'rgb(139, 139, 131)': 'ivory4', 'rgb(255, 114, 86)': 'coral1', 'rgb(0, 104, 139)': 'DeepSkyBlue4', 'rgb(205, 41, 144)': 'maroon3', 'rgb(127, 127, 127)': 'grey50', 'rgb(255, 239, 213)': 'PapayaWhip', 'rgb(238, 238, 209)': 'LightYellow2', 'rgb(242, 242, 242)': 'grey95', 'rgb(240, 230, 140)': 'khaki', 'rgb(238, 207, 161)': 'NavajoWhite2', 'rgb(25, 25, 112)': 'MidnightBlue', 'rgb(205, 79, 57)': 'tomato3', 'rgb(84, 84, 84)': 'grey33', 'rgb(110, 139, 61)': 'DarkOliveGreen4', 'rgb(255, 215, 0)': 'gold1', 'rgb(143, 143, 143)': 'grey56', 'rgb(238, 59, 59)': 'brown2', 'rgb(166, 166, 166)': 'grey65', 'rgb(255, 160, 122)': 'LightSalmon1', 'rgb(51, 51, 51)': 'grey20', 'rgb(224, 238, 224)': 'honeydew2', 'rgb(139, 121, 94)': 'NavajoWhite4', 'rgb(110, 123, 139)': 'LightSteelBlue4', 'rgb(26, 26, 26)': 'grey10', 'rgb(238, 99, 99)': 'IndianRed2', 'rgb(178, 58, 238)': 'DarkOrchid2', 'rgb(238, 197, 145)': 'burlywood2', 'rgb(171, 171, 171)': 'grey67', 'rgb(237, 237, 237)': 'grey93', 'rgb(238, 0, 0)': 'red2', 'rgb(139, 71, 38)': 'sienna4', 'rgb(82, 139, 139)': 'DarkSlateGray4', 'rgb(139, 105, 105)': 'RosyBrown4', 'rgb(160, 32, 240)': 'purple', 'rgb(78, 238, 148)': 'SeaGreen2', 'rgb(205, 85, 85)': 'IndianRed3', 'rgb(205, 181, 205)': 'thistle3', 'rgb(184, 184, 184)': 'grey72', 'rgb(255, 222, 173)': 'NavajoWhite1', 'rgb(8, 8, 8)': 'grey3', 'rgb(255, 248, 220)': 'cornsilk1', 'rgb(175, 238, 238)': 'PaleTurquoise', 'rgb(255, 130, 71)': 'sienna1', 'rgb(13, 13, 13)': 'grey5', 'rgb(0, 139, 139)': 'DarkCyan', 'rgb(187, 255, 255)': 'PaleTurquoise1', 'rgb(147, 112, 219)': 'MediumPurple', 'rgb(0, 128, 0)': 'green', 'rgb(238, 64, 0)': 'OrangeRed2', 'rgb(238, 18, 137)': 'DeepPink2', 'rgb(54, 100, 139)': 'SteelBlue4', 'rgb(176, 176, 176)': 'grey69', 'rgb(0, 0, 238)': 'blue2', 'rgb(238, 154, 0)': 'orange2', 'rgb(188, 143, 143)': 'RosyBrown', 'rgb(240, 255, 255)': 'azure1', 'rgb(191, 62, 255)': 'DarkOrchid1', 'rgb(171, 130, 255)': 'MediumPurple1', 'rgb(205, 173, 0)': 'gold3', 'rgb(255, 48, 48)': 'firebrick1', 'rgb(122, 197, 205)': 'CadetBlue3', 'rgb(139, 87, 66)': 'LightSalmon4', 'rgb(204, 204, 204)': 'grey80', 'rgb(205, 129, 98)': 'LightSalmon3', 'rgb(224, 224, 224)': 'grey88', 'rgb(218, 165, 32)': 'goldenrod', 'rgb(205, 145, 158)': 'pink3', 'rgb(139, 62, 47)': 'coral4', 'rgb(238, 122, 233)': 'orchid2', 'rgb(152, 251, 152)': 'PaleGreen', 'rgb(240, 128, 128)': 'LightCoral', 'rgb(162, 205, 90)': 'DarkOliveGreen3', 'rgb(79, 79, 79)': 'grey31', 'rgb(169, 169, 169)': 'DarkGrey', 'rgb(255, 127, 0)': 'DarkOrange1', 'rgb(139, 28, 98)': 'maroon4', 'rgb(253, 245, 230)': 'OldLace', 'rgb(141, 238, 238)': 'DarkSlateGray2', 'rgb(238, 213, 210)': 'MistyRose2', 'rgb(208, 32, 144)': 'VioletRed', 'rgb(0, 205, 0)': 'green3', 'rgb(139, 71, 137)': 'orchid4', 'rgb(205, 201, 165)': 'LemonChiffon3', 'rgb(0, 229, 238)': 'turquoise2', 'rgb(205, 140, 149)': 'LightPink3', 'rgb(124, 205, 124)': 'PaleGreen3', 'rgb(220, 220, 220)': 'gainsboro', 'rgb(238, 229, 222)': 'seashell2', 'rgb(87, 87, 87)': 'grey34', 'rgb(70, 130, 180)': 'SteelBlue', 'rgb(205, 104, 137)': 'PaleVioletRed3', 'rgb(15, 15, 15)': 'grey6', 'rgb(38, 38, 38)': 'grey15', 'rgb(238, 180, 34)': 'goldenrod2', 'rgb(205, 200, 177)': 'cornsilk3', 'rgb(238, 210, 238)': 'thistle2', 'rgb(150, 150, 150)': 'grey59', 'rgb(0, 255, 127)': 'SpringGreen1', 'rgb(139, 126, 102)': 'wheat4', 'rgb(205, 175, 149)': 'PeachPuff3', 'rgb(152, 245, 255)': 'CadetBlue1', 'rgb(0, 250, 154)': 'MediumSpringGreen', 'rgb(120, 120, 120)': 'grey47', 'rgb(238, 118, 33)': 'chocolate2', 'rgb(128, 128, 0)': 'olive', 'rgb(139, 137, 112)': 'LemonChiffon4', 'rgb(107, 142, 35)': 'OliveDrab', 'rgb(219, 219, 219)': 'grey86', 'rgb(205, 205, 0)': 'yellow3', 'rgb(180, 205, 205)': 'LightCyan3', 'rgb(115, 115, 115)': 'grey45', 'rgb(131, 139, 139)': 'azure4', 'rgb(0, 178, 238)': 'DeepSkyBlue2', 'rgb(94, 94, 94)': 'grey37', 'rgb(135, 135, 135)': 'grey53', 'rgb(145, 145, 145)': 'grey57', 'rgb(205, 0, 0)': 'red3', 'rgb(16, 78, 139)': 'DodgerBlue4', 'rgb(133, 133, 133)': 'grey52', 'rgb(205, 38, 38)': 'firebrick3', 'rgb(255, 193, 193)': 'RosyBrown1', 'rgb(205, 183, 181)': 'MistyRose3', 'rgb(122, 55, 139)': 'MediumOrchid4', 'rgb(154, 192, 205)': 'LightBlue3', 'rgb(191, 239, 255)': 'LightBlue1', 'rgb(219, 112, 147)': 'PaleVioletRed', 'rgb(121, 205, 205)': 'DarkSlateGray3', 'rgb(238, 232, 170)': 'PaleGoldenrod', 'rgb(102, 205, 0)': 'chartreuse3', 'rgb(255, 185, 15)': 'DarkGoldenrod1', 'rgb(176, 196, 222)': 'LightSteelBlue', 'rgb(255, 236, 139)': 'LightGoldenrod1', 'rgb(205, 105, 201)': 'orchid3', 'rgb(250, 250, 250)': 'grey98', 'rgb(245, 245, 220)': 'beige', 'rgb(238, 106, 80)': 'coral2', 'rgb(64, 64, 64)': 'grey25', 'rgb(238, 220, 130)': 'LightGoldenrod2', 'white': 'none', 'rgb(125, 38, 205)': 'purple3', 'rgb(205, 133, 63)': 'tan3', 'rgb(139, 102, 139)': 'plum4', 'rgb(71, 71, 71)': 'grey28', 'rgb(118, 238, 0)': 'chartreuse2', 'rgb(192, 255, 62)': 'OliveDrab1', 'rgb(0, 0, 139)': 'DarkBlue', 'rgb(248, 248, 255)': 'GhostWhite', 'rgb(3, 3, 3)': 'grey1', 'rgb(176, 226, 255)': 'LightSkyBlue1', 'rgb(139, 105, 20)': 'goldenrod4', 'rgb(255, 105, 180)': 'HotPink', 'rgb(124, 252, 0)': 'LawnGreen', 'rgb(238, 238, 224)': 'ivory2', 'rgb(139, 69, 19)': 'SaddleBrown', 'rgb(139, 0, 139)': 'magenta4', 'rgb(31, 31, 31)': 'grey12', 'rgb(159, 182, 205)': 'SlateGray3', 'rgb(181, 181, 181)': 'grey71', 'rgb(0, 245, 255)': 'turquoise1', 'rgb(105, 139, 105)': 'DarkSeaGreen4', 'rgb(159, 121, 238)': 'MediumPurple2', 'rgb(205, 198, 115)': 'khaki3', 'rgb(77, 77, 77)': 'grey30', 'rgb(139, 90, 0)': 'orange4', 'rgb(122, 122, 122)': 'grey48', 'rgb(224, 238, 238)': 'azure2', 'rgb(50, 129, 75)': 'MediumForestGreen', 'rgb(202, 225, 255)': 'LightSteelBlue1', 'rgb(255, 110, 180)': 'HotPink1', 'rgb(238, 48, 167)': 'maroon2', 'rgb(220, 20, 60)': 'crimson', 'rgb(127, 255, 212)': 'aquamarine1', 'rgb(205, 179, 139)': 'NavajoWhite3', 'rgb(28, 28, 28)': 'grey11', 'rgb(229, 229, 229)': 'grey90', 'rgb(47, 79, 79)': 'DarkSlateGrey', 'rgb(59, 59, 59)': 'grey23', 'rgb(69, 139, 116)': 'aquamarine4', 'rgb(255, 211, 155)': 'burlywood1', 'rgb(139, 119, 101)': 'PeachPuff4', 'rgb(238, 230, 133)': 'khaki2', 'rgb(10, 10, 10)': 'grey4', 'rgb(144, 238, 144)': 'PaleGreen2', 'rgb(99, 99, 99)': 'grey39', 'rgb(188, 238, 104)': 'DarkOliveGreen2', 'rgb(255, 231, 186)': 'wheat1', 'rgb(154, 50, 205)': 'DarkOrchid3', 'rgb(46, 139, 87)': 'SeaGreen4', 'rgb(145, 44, 238)': 'purple2', 'rgb(255, 240, 245)': 'LavenderBlush1', 'rgb(67, 110, 238)': 'RoyalBlue2', 'rgb(238, 180, 180)': 'RosyBrown2', 'rgb(108, 166, 205)': 'SkyBlue3', 'rgb(173, 173, 173)': 'grey68', 'rgb(176, 48, 96)': 'maroon', 'rgb(23, 23, 23)': 'grey9', 'rgb(138, 138, 138)': 'grey54', 'rgb(139, 137, 137)': 'snow4', 'rgb(209, 193, 102)': 'MediumGoldenRod', 'rgb(139, 123, 139)': 'thistle4', 'rgb(154, 255, 154)': 'PaleGreen1', 'rgb(130, 130, 130)': 'grey51', 'rgb(255, 99, 71)': 'tomato1', 'rgb(205, 183, 158)': 'bisque3', 'rgb(205, 102, 29)': 'chocolate3', 'rgb(128, 0, 0)': 'maroon', 'rgb(0, 0, 255)': 'blue1', 'rgb(255, 52, 179)': 'maroon1', 'rgb(250, 235, 215)': 'AntiqueWhite', 'rgb(163, 163, 163)': 'grey64', 'rgb(56, 56, 56)': 'grey22', 'rgb(85, 26, 139)': 'purple4', 'rgb(139, 58, 58)': 'IndianRed4', 'rgb(168, 168, 168)': 'grey66', 'rgb(255, 225, 255)': 'thistle1', 'rgb(125, 125, 125)': 'grey49', 'rgb(131, 111, 255)': 'SlateBlue1', 'rgb(95, 158, 160)': 'CadetBlue', 'rgb(165, 42, 42)': 'brown', 'rgb(245, 255, 250)': 'MintCream', 'rgb(255, 218, 185)': 'PeachPuff1', 'rgb(255, 228, 225)': 'MistyRose1', 'rgb(216, 191, 216)': 'thistle', 'rgb(139, 101, 8)': 'DarkGoldenrod4', 'rgb(205, 104, 57)': 'sienna3', 'rgb(255, 131, 250)': 'orchid1', 'rgb(82, 82, 82)': 'grey32', 'rgb(117, 117, 117)': 'grey46', 'rgb(255, 165, 0)': 'orange1', 'rgb(255, 64, 64)': 'brown1', 'rgb(255, 165, 79)': 'tan1', 'rgb(205, 55, 0)': 'OrangeRed3', 'rgb(188, 210, 238)': 'LightSteelBlue2', 'rgb(238, 121, 159)': 'PaleVioletRed2', 'rgb(5, 5, 5)': 'grey2', 'rgb(217, 217, 217)': 'grey85', 'rgb(205, 186, 150)': 'wheat3', 'rgb(139, 131, 134)': 'LavenderBlush4', 'rgb(185, 211, 238)': 'SlateGray2', 'rgb(235, 235, 235)': 'grey92', 'rgb(230, 230, 250)': 'lavender', 'rgb(41, 41, 41)': 'grey16', 'rgb(205, 92, 92)': 'IndianRed', 'rgb(131, 139, 131)': 'honeydew4', 'rgb(123, 104, 238)': 'MediumSlateBlue', 'rgb(128, 0, 128)': 'purple', 'rgb(139, 26, 26)': 'firebrick4', 'rgb(141, 182, 205)': 'LightSkyBlue3', 'rgb(212, 212, 212)': 'grey83', 'rgb(238, 162, 173)': 'LightPink2', 'rgb(255, 255, 0)': 'yellow1', 'rgb(192, 192, 192)': 'silver', 'rgb(139, 71, 93)': 'PaleVioletRed4', 'rgb(0, 100, 0)': 'DarkGreen', 'rgb(139, 37, 0)': 'OrangeRed4', 'rgb(198, 226, 255)': 'SlateGray1', 'rgb(24, 116, 205)': 'DodgerBlue3', 'rgb(178, 34, 34)': 'firebrick', 'rgb(28, 134, 238)': 'DodgerBlue2', 'rgb(255, 0, 255)': 'magenta1', 'rgb(33, 33, 33)': 'grey13', 'rgb(209, 238, 238)': 'LightCyan2', 'rgb(255, 127, 80)': 'coral', 'rgb(0, 154, 205)': 'DeepSkyBlue3', 'rgb(255, 255, 224)': 'LightYellow1', 'rgb(75, 0, 130)': 'indigo', 'rgb(160, 82, 45)': 'sienna', 'rgb(138, 43, 226)': 'BlueViolet', 'rgb(238, 224, 229)': 'LavenderBlush2', 'rgb(106, 90, 205)': 'SlateBlue', 'rgb(227, 227, 227)': 'grey89', 'rgb(255, 250, 250)': 'snow1', 'rgb(255, 174, 185)': 'LightPink1', 'rgb(205, 0, 205)': 'magenta3', 'rgb(126, 126, 126)': 'gray', 'rgb(139, 10, 80)': 'DeepPink4', 'rgb(186, 85, 211)': 'MediumOrchid', 'rgb(205, 133, 0)': 'orange3', 'rgb(211, 211, 211)': 'LightGrey', 'rgb(69, 69, 69)': 'grey27', 'rgb(222, 222, 222)': 'grey87', 'rgb(221, 160, 221)': 'plum', 'rgb(255, 255, 240)': 'ivory1', 'rgb(112, 112, 112)': 'grey44', 'rgb(209, 95, 238)': 'MediumOrchid2', 'rgb(0, 255, 0)': 'lime', 'rgb(238, 233, 191)': 'LemonChiffon2', 'rgb(92, 92, 92)': 'grey36', 'rgb(205, 112, 84)': 'salmon3', 'rgb(255, 228, 196)': 'bisque1', 'rgb(255, 192, 203)': 'pink', 'rgb(238, 130, 238)': 'violet', 'rgb(122, 103, 238)': 'SlateBlue2', 'rgb(238, 121, 66)': 'sienna2', 'rgb(102, 139, 139)': 'PaleTurquoise4', 'rgb(250, 240, 230)': 'linen', 'rgb(247, 247, 247)': 'grey97', 'rgb(32, 178, 170)': 'LightSeaGreen', 'rgb(97, 97, 97)': 'grey38', 'rgb(150, 205, 205)': 'PaleTurquoise3', 'rgb(158, 158, 158)': 'grey62', 'rgb(238, 58, 140)': 'VioletRed2', 'rgb(255, 228, 181)': 'moccasin', 'rgb(0, 197, 205)': 'turquoise3', 'rgb(205, 96, 144)': 'HotPink3', 'rgb(205, 16, 118)': 'DeepPink3', 'rgb(240, 240, 240)': 'grey94', 'rgb(176, 224, 230)': 'PowderBlue', 'rgb(199, 21, 133)': 'MediumVioletRed', 'rgb(238, 203, 173)': 'PeachPuff2', 'rgb(173, 255, 47)': 'GreenYellow', 'rgb(238, 174, 238)': 'plum2', 'rgb(191, 191, 191)': 'grey75', 'rgb(222, 184, 135)': 'burlywood', 'rgb(18, 18, 18)': 'grey7', 'rgb(83, 134, 139)': 'CadetBlue4', 'rgb(139, 134, 130)': 'seashell4', 'rgb(142, 229, 238)': 'CadetBlue2', 'rgb(0, 139, 0)': 'green4', 'rgb(240, 255, 240)': 'honeydew1', 'rgb(104, 34, 139)': 'DarkOrchid4', 'rgb(193, 255, 193)': 'DarkSeaGreen1', 'rgb(0, 0, 0)': 'opaque', 'rgb(139, 58, 98)': 'HotPink4', 'rgb(89, 89, 89)': 'grey35', 'rgb(72, 118, 255)': 'RoyalBlue1', 'rgb(108, 123, 139)': 'SlateGray4', 'rgb(255, 20, 147)': 'DeepPink1', 'rgb(255, 250, 240)': 'FloralWhite', 'rgb(132, 112, 255)': 'LightSlateBlue', 'rgb(255, 62, 150)': 'VioletRed1', 'rgb(139, 125, 107)': 'bisque4', 'rgb(64, 224, 208)': 'turquoise', 'rgb(148, 0, 211)': 'DarkViolet', 'rgb(238, 106, 167)': 'HotPink2', 'rgb(238, 44, 44)': 'firebrick2', 'rgb(72, 209, 204)': 'MediumTurquoise', 'rgb(205, 155, 29)': 'goldenrod3', 'rgb(139, 0, 0)': 'red4', 'rgb(238, 92, 66)': 'tomato2', 'rgb(238, 216, 174)': 'wheat2', 'rgb(65, 105, 225)': 'RoyalBlue', 'rgb(0, 205, 102)': 'SpringGreen3', 'rgb(96, 123, 139)': 'LightSkyBlue4', 'rgb(210, 180, 140)': 'tan', 'rgb(135, 206, 255)': 'SkyBlue1', 'rgb(252, 252, 252)': 'grey99', 'rgb(61, 61, 61)': 'grey24', 'rgb(205, 102, 0)': 'DarkOrange3', 'rgb(58, 95, 205)': 'RoyalBlue3', 'rgb(30, 144, 255)': 'DodgerBlue1', 'rgb(245, 245, 245)': 'WhiteSmoke', 'rgb(255, 130, 171)': 'PaleVioletRed1', 'rgb(60, 179, 113)': 'MediumSeaGreen', 'rgb(139, 139, 122)': 'LightYellow4', 'rgb(139, 136, 120)': 'cornsilk4', 'rgb(139, 34, 82)': 'VioletRed4', 'rgb(238, 223, 204)': 'AntiqueWhite2', 'rgb(238, 213, 183)': 'bisque2', 'rgb(250, 250, 210)': 'LightGoldenrodYellow', 'rgb(255, 250, 205)': 'LemonChiffon1', 'rgb(39, 64, 139)': 'RoyalBlue4', 'rgb(84, 139, 84)': 'PaleGreen4', 'rgb(238, 221, 130)': 'LightGoldenrod', 'rgb(139, 95, 101)': 'LightPink4', 'rgb(210, 105, 30)': 'chocolate', 'rgb(139, 139, 0)': 'yellow4', 'rgb(238, 149, 114)': 'LightSalmon2', 'rgb(0, 255, 255)': 'cyan1', 'rgb(71, 60, 139)': 'SlateBlue4', 'rgb(207, 207, 207)': 'grey81', 'rgb(153, 50, 204)': 'DarkOrchid', 'rgb(36, 36, 36)': 'grey14', 'rgb(153, 153, 153)': 'grey60', 'rgb(250, 128, 114)': 'salmon', 'rgb(174, 238, 238)': 'PaleTurquoise2', 'rgb(139, 117, 0)': 'gold4', 'rgb(139, 35, 35)': 'brown4', 'rgb(92, 172, 238)': 'SteelBlue2', 'rgb(48, 48, 48)': 'grey19', 'rgb(139, 129, 76)': 'LightGoldenrod4', 'rgb(72, 61, 139)': 'DarkSlateBlue', 'rgb(238, 169, 184)': 'pink2', 'rgb(69, 139, 0)': 'chartreuse4', 'rgb(0, 128, 128)': 'teal', 'rgb(255, 255, 255)': 'grey100', 'rgb(244, 164, 96)': 'SandyBrown', 'rgb(154, 205, 50)': 'YellowGreen', 'rgb(126, 192, 238)': 'SkyBlue2', 'rgb(209, 209, 209)': 'grey82', 'rgb(74, 112, 139)': 'SkyBlue4', 'rgb(112, 128, 144)': 'SlateGrey', 'rgb(105, 139, 34)': 'OliveDrab4', 'rgb(110, 110, 110)': 'grey43', 'rgb(179, 179, 179)': 'grey70', 'rgb(205, 50, 120)': 'VioletRed3', 'rgb(119, 136, 153)': 'LightSlateGrey', 'rgb(139, 115, 85)': 'burlywood4', 'rgb(255, 193, 37)': 'goldenrod1', 'rgb(224, 255, 255)': 'LightCyan1', 'rgb(66, 66, 66)': 'grey26', 'rgb(193, 205, 193)': 'honeydew3', 'rgb(0, 191, 255)': 'DeepSkyBlue1', 'rgb(205, 205, 193)': 'ivory3', 'rgb(238, 238, 0)': 'yellow2', 'rgb(255, 140, 105)': 'salmon1', 'rgb(135, 206, 235)': 'SkyBlue', 'rgb(238, 201, 0)': 'gold2', 'rgb(238, 232, 205)': 'cornsilk2', 'rgb(0, 0, 205)': 'MediumBlue', 'rgb(238, 130, 98)': 'salmon2', 'rgb(155, 48, 255)': 'purple1', 'rgb(43, 43, 43)': 'grey17', 'rgb(240, 248, 255)': 'AliceBlue', 'rgb(238, 0, 238)': 'magenta2', 'rgb(128, 128, 128)': 'fractal', 'rgb(193, 205, 205)': 'azure3', 'rgb(50, 205, 50)': 'LimeGreen', 'rgb(201, 201, 201)': 'grey79', 'rgb(255, 239, 219)': 'AntiqueWhite1', 'rgb(196, 196, 196)': 'grey77', 'rgb(135, 206, 250)': 'LightSkyBlue', 'rgb(139, 134, 78)': 'khaki4', 'rgb(79, 148, 205)': 'SteelBlue3', 'rgb(74, 74, 74)': 'grey29', 'rgb(255, 0, 0)': 'red1', 'rgb(233, 150, 122)': 'DarkSalmon', 'rgb(205, 190, 112)': 'LightGoldenrod3', 'rgb(84, 255, 159)': 'SeaGreen1', 'rgb(205, 170, 125)': 'burlywood3', 'rgb(127, 255, 0)': 'chartreuse1', 'rgb(102, 102, 102)': 'grey40', 'rgb(180, 238, 180)': 'DarkSeaGreen2', 'rgb(122, 139, 139)': 'LightCyan4', 'rgb(255, 140, 0)': 'DarkOrange', 'rgb(205, 197, 191)': 'seashell3', 'rgb(140, 140, 140)': 'grey55', 'rgb(199, 199, 199)': 'grey78', 'rgb(202, 255, 112)': 'DarkOliveGreen1', 'rgb(255, 245, 238)': 'seashell1', 'rgb(189, 183, 107)': 'DarkKhaki', 'rgb(0, 238, 118)': 'SpringGreen2', 'rgb(180, 82, 205)': 'MediumOrchid3', 'rgb(255, 127, 36)': 'chocolate1', 'rgb(161, 161, 161)': 'grey63'}
+hextorgb = {'#EE1289': 'rgb(238, 18, 137)', '#EE8262': 'rgb(238, 130, 98)', '#C4C4C4': 'rgb(196, 196, 196)', '#556B2F': 'rgb(85, 107, 47)', '#FF8C00': 'rgb(255, 140, 0)', '#8B7B8B': 'rgb(139, 123, 139)', '#0000EE': 'rgb(0, 0, 238)', '#EED5D2': 'rgb(238, 213, 210)', '#BA55D3': 'rgb(186, 85, 211)', '#FFF5EE': 'rgb(255, 245, 238)', '#912CEE': 'rgb(145, 44, 238)', '#2F4F4F': 'rgb(47, 79, 79)', '#32814B': 'rgb(50, 129, 75)', '#D15FEE': 'rgb(209, 95, 238)', '#F0FFF0': 'rgb(240, 255, 240)', '#B23AEE': 'rgb(178, 58, 238)', '#8B7765': 'rgb(139, 119, 101)', '#3D3D3D': 'rgb(61, 61, 61)', '#54FF9F': 'rgb(84, 255, 159)', '#636363': 'rgb(99, 99, 99)', '#8B8386': 'rgb(139, 131, 134)', '#FF4040': 'rgb(255, 64, 64)', '#EEA9B8': 'rgb(238, 169, 184)', '#C2C2C2': 'rgb(194, 194, 194)', '#800080': 'rgb(128, 0, 128)', '#545454': 'rgb(84, 84, 84)', '#EE3A8C': 'rgb(238, 58, 140)', '#8A8A8A': 'rgb(138, 138, 138)', '#FF00FF': 'rgb(255, 0, 255)', '#436EEE': 'rgb(67, 110, 238)', '#8B864E': 'rgb(139, 134, 78)', '#0A0A0A': 'rgb(10, 10, 10)', '#808000': 'rgb(128, 128, 0)', '#E3E3E3': 'rgb(227, 227, 227)', '#1874CD': 'rgb(24, 116, 205)', '#BCD2EE': 'rgb(188, 210, 238)', '#A9A9A9': 'rgb(169, 169, 169)', '#F4A460': 'rgb(244, 164, 96)', '#FF3030': 'rgb(255, 48, 48)', '#FFEBCD': 'rgb(255, 235, 205)', '#B0C4DE': 'rgb(176, 196, 222)', '#00CDCD': 'rgb(0, 205, 205)', '#C0FF3E': 'rgb(192, 255, 62)', '#FFD700': 'rgb(255, 215, 0)', '#242424': 'rgb(36, 36, 36)', '#8B2252': 'rgb(139, 34, 82)', '#4EEE94': 'rgb(78, 238, 148)', '#CD3278': 'rgb(205, 50, 120)', '#00E5EE': 'rgb(0, 229, 238)', '#CD853F': 'rgb(205, 133, 63)', '#ADD8E6': 'rgb(173, 216, 230)', '#C7C7C7': 'rgb(199, 199, 199)', '#CD2990': 'rgb(205, 41, 144)', '#EEE5DE': 'rgb(238, 229, 222)', '#66CD00': 'rgb(102, 205, 0)', '#878787': 'rgb(135, 135, 135)', '#FFA54F': 'rgb(255, 165, 79)', '#A2B5CD': 'rgb(162, 181, 205)', '#BC8F8F': 'rgb(188, 143, 143)', '#C9C9C9': 'rgb(201, 201, 201)', '#D1C166': 'rgb(209, 193, 102)', '#8B2323': 'rgb(139, 35, 35)', '#B3EE3A': 'rgb(179, 238, 58)', '#EEEED1': 'rgb(238, 238, 209)', '#AEEEEE': 'rgb(174, 238, 238)', '#BDBDBD': 'rgb(189, 189, 189)', '#FF7F00': 'rgb(255, 127, 0)', '#FFC0CB': 'rgb(255, 192, 203)', '#EE3B3B': 'rgb(238, 59, 59)', '#CDC8B1': 'rgb(205, 200, 177)', '#CDB38B': 'rgb(205, 179, 139)', '#CDBA96': 'rgb(205, 186, 150)', '#B4EEB4': 'rgb(180, 238, 180)', '#40E0D0': 'rgb(64, 224, 208)', '#8B795E': 'rgb(139, 121, 94)', '#27408B': 'rgb(39, 64, 139)', '#424242': 'rgb(66, 66, 66)', '#CDB7B5': 'rgb(205, 183, 181)', '#CAE1FF': 'rgb(202, 225, 255)', '#F0FFFF': 'rgb(240, 255, 255)', '#2E8B57': 'rgb(46, 139, 87)', '#87CEEB': 'rgb(135, 206, 235)', '#CD00CD': 'rgb(205, 0, 205)', '#CDAA7D': 'rgb(205, 170, 125)', '#836FFF': 'rgb(131, 111, 255)', '#ABABAB': 'rgb(171, 171, 171)', '#EEB4B4': 'rgb(238, 180, 180)', '#8B7355': 'rgb(139, 115, 85)', '#F0E68C': 'rgb(240, 230, 140)', '#CDCDB4': 'rgb(205, 205, 180)', '#4D4D4D': 'rgb(77, 77, 77)', '#B8B8B8': 'rgb(184, 184, 184)', '#B4CDCD': 'rgb(180, 205, 205)', '#008B8B': 'rgb(0, 139, 139)', '#828282': 'rgb(130, 130, 130)', '#00EEEE': 'rgb(0, 238, 238)', '#708090': 'rgb(112, 128, 144)', '#9AFF9A': 'rgb(154, 255, 154)', '#FFA07A': 'rgb(255, 160, 122)', '#EBEBEB': 'rgb(235, 235, 235)', '#FFB5C5': 'rgb(255, 181, 197)', '#00688B': 'rgb(0, 104, 139)', '#DBDBDB': 'rgb(219, 219, 219)', '#191970': 'rgb(25, 25, 112)', '#FF83FA': 'rgb(255, 131, 250)', '#A1A1A1': 'rgb(161, 161, 161)', '#838B8B': 'rgb(131, 139, 139)', '#FFA500': 'rgb(255, 165, 0)', '#00FF7F': 'rgb(0, 255, 127)', '#EEAD0E': 'rgb(238, 173, 14)', '#B03060': 'rgb(176, 48, 96)', '#96CDCD': 'rgb(150, 205, 205)', '#CD3333': 'rgb(205, 51, 51)', '#CDBE70': 'rgb(205, 190, 112)', '#7CCD7C': 'rgb(124, 205, 124)', '#97FFFF': 'rgb(151, 255, 255)', '#DAA520': 'rgb(218, 165, 32)', '#8B3A3A': 'rgb(139, 58, 58)', '#6B6B6B': 'rgb(107, 107, 107)', '#FFFAF0': 'rgb(255, 250, 240)', '#757575': 'rgb(117, 117, 117)', '#BFBFBF': 'rgb(191, 191, 191)', '#00EE76': 'rgb(0, 238, 118)', '#FFFAFA': 'rgb(255, 250, 250)', '#6E8B3D': 'rgb(110, 139, 61)', '#EEE685': 'rgb(238, 230, 133)', '#FF3E96': 'rgb(255, 62, 150)', '#EE0000': 'rgb(238, 0, 0)', '#FDF5E6': 'rgb(253, 245, 230)', '#E066FF': 'rgb(224, 102, 255)', '#8DB6CD': 'rgb(141, 182, 205)', '#FF7256': 'rgb(255, 114, 86)', '#7CFC00': 'rgb(124, 252, 0)', '#838B83': 'rgb(131, 139, 131)', '#BF3EFF': 'rgb(191, 62, 255)', '#8B6914': 'rgb(139, 105, 20)', '#00CD66': 'rgb(0, 205, 102)', '#525252': 'rgb(82, 82, 82)', '#A4D3EE': 'rgb(164, 211, 238)', '#00868B': 'rgb(0, 134, 139)', '#8DEEEE': 'rgb(141, 238, 238)', '#787878': 'rgb(120, 120, 120)', '#8B1C62': 'rgb(139, 28, 98)', '#616161': 'rgb(97, 97, 97)', '#4876FF': 'rgb(72, 118, 255)', '#9F79EE': 'rgb(159, 121, 238)', '#212121': 'rgb(33, 33, 33)', '#C1CDC1': 'rgb(193, 205, 193)', '#CD69C9': 'rgb(205, 105, 201)', '#E0EEEE': 'rgb(224, 238, 238)', '#8B7E66': 'rgb(139, 126, 102)', '#8A2BE2': 'rgb(138, 43, 226)', '#CDCD00': 'rgb(205, 205, 0)', '#EE5C42': 'rgb(238, 92, 66)', '#6E6E6E': 'rgb(110, 110, 110)', '#EEAEEE': 'rgb(238, 174, 238)', '#DC143C': 'rgb(220, 20, 60)', '#CD919E': 'rgb(205, 145, 158)', '#528B8B': 'rgb(82, 139, 139)', '#AFEEEE': 'rgb(175, 238, 238)', '#CD6889': 'rgb(205, 104, 137)', '#E6E6FA': 'rgb(230, 230, 250)', '#EE00EE': 'rgb(238, 0, 238)', '#999999': 'rgb(153, 153, 153)', '#F0F8FF': 'rgb(240, 248, 255)', '#595959': 'rgb(89, 89, 89)', '#FF7F50': 'rgb(255, 127, 80)', '#A6A6A6': 'rgb(166, 166, 166)', '#DEDEDE': 'rgb(222, 222, 222)', '#262626': 'rgb(38, 38, 38)', '#6CA6CD': 'rgb(108, 166, 205)', '#8B8B83': 'rgb(139, 139, 131)', '#474747': 'rgb(71, 71, 71)', '#F7F7F7': 'rgb(247, 247, 247)', '#548B54': 'rgb(84, 139, 84)', '#48D1CC': 'rgb(72, 209, 204)', '#C1CDCD': 'rgb(193, 205, 205)', '#E0EEE0': 'rgb(224, 238, 224)', '#FFB90F': 'rgb(255, 185, 15)', '#FFD39B': 'rgb(255, 211, 155)', '#8B5A2B': 'rgb(139, 90, 43)', '#EEE9BF': 'rgb(238, 233, 191)', '#BCEE68': 'rgb(188, 238, 104)', '#8470FF': 'rgb(132, 112, 255)', '#8B0A50': 'rgb(139, 10, 80)', '#FFF68F': 'rgb(255, 246, 143)', '#EEA2AD': 'rgb(238, 162, 173)', '#CD5B45': 'rgb(205, 91, 69)', '#7FFF00': 'rgb(127, 255, 0)', '#8B8378': 'rgb(139, 131, 120)', '#9BCD9B': 'rgb(155, 205, 155)', '#454545': 'rgb(69, 69, 69)', '#D1D1D1': 'rgb(209, 209, 209)', '#EEE8AA': 'rgb(238, 232, 170)', '#668B8B': 'rgb(102, 139, 139)', '#EE30A7': 'rgb(238, 48, 167)', '#FFC125': 'rgb(255, 193, 37)', '#8B475D': 'rgb(139, 71, 93)', '#D8BFD8': 'rgb(216, 191, 216)', '#404040': 'rgb(64, 64, 64)', '#EEEE00': 'rgb(238, 238, 0)', '#CDB5CD': 'rgb(205, 181, 205)', '#00C5CD': 'rgb(0, 197, 205)', '#00CED1': 'rgb(0, 206, 209)', '#CFCFCF': 'rgb(207, 207, 207)', '#008B00': 'rgb(0, 139, 0)', '#7A7A7A': 'rgb(122, 122, 122)', '#B8860B': 'rgb(184, 134, 11)', '#1C86EE': 'rgb(28, 134, 238)', '#8B5742': 'rgb(139, 87, 66)', '#1A1A1A': 'rgb(26, 26, 26)', '#8B008B': 'rgb(139, 0, 139)', '#0F0F0F': 'rgb(15, 15, 15)', '#CD3700': 'rgb(205, 55, 0)', '#7F7F7F': 'rgb(127, 127, 127)', '#FF6EB4': 'rgb(255, 110, 180)', '#6959CD': 'rgb(105, 89, 205)', '#90EE90': 'rgb(144, 238, 144)', '#8B4789': 'rgb(139, 71, 137)', '#EE7AE9': 'rgb(238, 122, 233)', '#8968CD': 'rgb(137, 104, 205)', '#080808': 'rgb(8, 8, 8)', '#CDC9C9': 'rgb(205, 201, 201)', '#BDB76B': 'rgb(189, 183, 107)', '#9370DB': 'rgb(147, 112, 219)', '#EEDC82': 'rgb(238, 220, 130)', '#3CB371': 'rgb(60, 179, 113)', '#F5FFFA': 'rgb(245, 255, 250)', '#303030': 'rgb(48, 48, 48)', '#B9D3EE': 'rgb(185, 211, 238)', '#575757': 'rgb(87, 87, 87)', '#F5F5DC': 'rgb(245, 245, 220)', '#BABABA': 'rgb(186, 186, 186)', '#0000CD': 'rgb(0, 0, 205)', '#FF8247': 'rgb(255, 130, 71)', '#F2F2F2': 'rgb(242, 242, 242)', '#EED5B7': 'rgb(238, 213, 183)', '#FFEC8B': 'rgb(255, 236, 139)', '#EE7600': 'rgb(238, 118, 0)', '#8B636C': 'rgb(139, 99, 108)', '#8B814C': 'rgb(139, 129, 76)', '#FFE4B5': 'rgb(255, 228, 181)', '#4F94CD': 'rgb(79, 148, 205)', '#CDAD00': 'rgb(205, 173, 0)', '#CD5555': 'rgb(205, 85, 85)', '#8B7500': 'rgb(139, 117, 0)', '#473C8B': 'rgb(71, 60, 139)', '#B0E0E6': 'rgb(176, 224, 230)', '#FFFF00': 'rgb(255, 255, 0)', '#CD96CD': 'rgb(205, 150, 205)', '#006400': 'rgb(0, 100, 0)', '#FAFAFA': 'rgb(250, 250, 250)', '#53868B': 'rgb(83, 134, 139)', '#8B4513': 'rgb(139, 69, 19)', '#98FB98': 'rgb(152, 251, 152)', '#63B8FF': 'rgb(99, 184, 255)', '#FFAEB9': 'rgb(255, 174, 185)', '#EE6A50': 'rgb(238, 106, 80)', '#87CEFF': 'rgb(135, 206, 255)', '#87CEFA': 'rgb(135, 206, 250)', '#ADFF2F': 'rgb(173, 255, 47)', '#008B45': 'rgb(0, 139, 69)', '#EE4000': 'rgb(238, 64, 0)', '#8B6969': 'rgb(139, 105, 105)', '#00008B': 'rgb(0, 0, 139)', '#DB7093': 'rgb(219, 112, 147)', '#7EC0EE': 'rgb(126, 192, 238)', '#3B3B3B': 'rgb(59, 59, 59)', '#8C8C8C': 'rgb(140, 140, 140)', '#5F9EA0': 'rgb(95, 158, 160)', '#EE799F': 'rgb(238, 121, 159)', '#CD6090': 'rgb(205, 96, 144)', '#8B8682': 'rgb(139, 134, 130)', '#458B74': 'rgb(69, 139, 116)', '#EECFA1': 'rgb(238, 207, 161)', '#76EE00': 'rgb(118, 238, 0)', '#000080': 'rgb(0, 0, 128)', '#228B22': 'rgb(34, 139, 34)', '#8B8B00': 'rgb(139, 139, 0)', '#B5B5B5': 'rgb(181, 181, 181)', '#CD950C': 'rgb(205, 149, 12)', '#EE82EE': 'rgb(238, 130, 238)', '#EDEDED': 'rgb(237, 237, 237)', '#F5DEB3': 'rgb(245, 222, 179)', '#3A5FCD': 'rgb(58, 95, 205)', '#00FA9A': 'rgb(0, 250, 154)', '#F0F0F0': 'rgb(240, 240, 240)', '#D1EEEE': 'rgb(209, 238, 238)', '#2E2E2E': 'rgb(46, 46, 46)', '#EEC591': 'rgb(238, 197, 145)', '#8B3E2F': 'rgb(139, 62, 47)', '#CD8162': 'rgb(205, 129, 98)', '#9AC0CD': 'rgb(154, 192, 205)', '#8B8989': 'rgb(139, 137, 137)', '#EED8AE': 'rgb(238, 216, 174)', '#551A8B': 'rgb(85, 26, 139)', '#919191': 'rgb(145, 145, 145)', '#949494': 'rgb(148, 148, 148)', '#778899': 'rgb(119, 136, 153)', '#FFFACD': 'rgb(255, 250, 205)', '#458B00': 'rgb(69, 139, 0)', '#008000': 'rgb(0, 128, 0)', '#FFFFF0': 'rgb(255, 255, 240)', '#E0E0E0': 'rgb(224, 224, 224)', '#EEB422': 'rgb(238, 180, 34)', '#A020F0': 'rgb(160, 32, 240)', '#5CACEE': 'rgb(92, 172, 238)', '#CD4F39': 'rgb(205, 79, 57)', '#CDC0B0': 'rgb(205, 192, 176)', '#6E7B8B': 'rgb(110, 123, 139)', '#9E9E9E': 'rgb(158, 158, 158)', '#CDC673': 'rgb(205, 198, 115)', '#104E8B': 'rgb(16, 78, 139)', '#E0FFFF': 'rgb(224, 255, 255)', '#FFFFFF': 'rgb(255, 255, 255)', '#6C7B8B': 'rgb(108, 123, 139)', '#FFC1C1': 'rgb(255, 193, 193)', '#D6D6D6': 'rgb(214, 214, 214)', '#8B4726': 'rgb(139, 71, 38)', '#CD9B1D': 'rgb(205, 155, 29)', '#FF6347': 'rgb(255, 99, 71)', '#FF34B3': 'rgb(255, 52, 179)', '#7D7D7D': 'rgb(125, 125, 125)', '#121212': 'rgb(18, 18, 18)', '#B0E2FF': 'rgb(176, 226, 255)', '#8B3A62': 'rgb(139, 58, 98)', '#CD5C5C': 'rgb(205, 92, 92)', '#4A4A4A': 'rgb(74, 74, 74)', '#B0B0B0': 'rgb(176, 176, 176)', '#D9D9D9': 'rgb(217, 217, 217)', '#A2CD5A': 'rgb(162, 205, 90)', '#8B0000': 'rgb(139, 0, 0)', '#FF6A6A': 'rgb(255, 106, 106)', '#CD6600': 'rgb(205, 102, 0)', '#FFEFDB': 'rgb(255, 239, 219)', '#E9967A': 'rgb(233, 150, 122)', '#EEE9E9': 'rgb(238, 233, 233)', '#D4D4D4': 'rgb(212, 212, 212)', '#383838': 'rgb(56, 56, 56)', '#7A67EE': 'rgb(122, 103, 238)', '#4169E1': 'rgb(65, 105, 225)', '#5E5E5E': 'rgb(94, 94, 94)', '#00F5FF': 'rgb(0, 245, 255)', '#FFEFD5': 'rgb(255, 239, 213)', '#CDAF95': 'rgb(205, 175, 149)', '#CCCCCC': 'rgb(204, 204, 204)', '#00BFFF': 'rgb(0, 191, 255)', '#CDB79E': 'rgb(205, 183, 158)', '#969696': 'rgb(150, 150, 150)', '#4F4F4F': 'rgb(79, 79, 79)', '#1E90FF': 'rgb(30, 144, 255)', '#FCFCFC': 'rgb(252, 252, 252)', '#EE2C2C': 'rgb(238, 44, 44)', '#8B6508': 'rgb(139, 101, 8)', '#696969': 'rgb(105, 105, 105)', '#FF7F24': 'rgb(255, 127, 36)', '#8FBC8F': 'rgb(143, 188, 143)', '#66CDAA': 'rgb(102, 205, 170)', '#6495ED': 'rgb(100, 149, 237)', '#0D0D0D': 'rgb(13, 13, 13)', '#EEE0E5': 'rgb(238, 224, 229)', '#666666': 'rgb(102, 102, 102)', '#B2DFEE': 'rgb(178, 223, 238)', '#B22222': 'rgb(178, 34, 34)', '#4B0082': 'rgb(75, 0, 130)', '#FF82AB': 'rgb(255, 130, 171)', '#AB82FF': 'rgb(171, 130, 255)', '#79CDCD': 'rgb(121, 205, 205)', '#FFE4C4': 'rgb(255, 228, 196)', '#DEB887': 'rgb(222, 184, 135)', '#5D478B': 'rgb(93, 71, 139)', '#8B3626': 'rgb(139, 54, 38)', '#FFFFE0': 'rgb(255, 255, 224)', '#FFE4E1': 'rgb(255, 228, 225)', '#171717': 'rgb(23, 23, 23)', '#EEDFCC': 'rgb(238, 223, 204)', '#9400D3': 'rgb(148, 0, 211)', '#BFEFFF': 'rgb(191, 239, 255)', '#8B7D6B': 'rgb(139, 125, 107)', '#FF8C69': 'rgb(255, 140, 105)', '#C6E2FF': 'rgb(198, 226, 255)', '#1C1C1C': 'rgb(28, 28, 28)', '#FF4500': 'rgb(255, 69, 0)', '#FFE7BA': 'rgb(255, 231, 186)', '#808080': 'rgb(128, 128, 128)', '#EE9572': 'rgb(238, 149, 114)', '#CD8500': 'rgb(205, 133, 0)', '#8B5A00': 'rgb(139, 90, 0)', '#9932CC': 'rgb(153, 50, 204)', '#EECBAD': 'rgb(238, 203, 173)', '#CD8C95': 'rgb(205, 140, 149)', '#292929': 'rgb(41, 41, 41)', '#CD1076': 'rgb(205, 16, 118)', '#7A378B': 'rgb(122, 55, 139)', '#FF0000': 'rgb(255, 0, 0)', '#698B22': 'rgb(105, 139, 34)', '#ADADAD': 'rgb(173, 173, 173)', '#EEE8CD': 'rgb(238, 232, 205)', '#DDA0DD': 'rgb(221, 160, 221)', '#7D26CD': 'rgb(125, 38, 205)', '#DA70D6': 'rgb(218, 112, 214)', '#DCDCDC': 'rgb(220, 220, 220)', '#68228B': 'rgb(104, 34, 139)', '#7B68EE': 'rgb(123, 104, 238)', '#000000': 'white', '#6B8E23': 'rgb(107, 142, 35)', '#FF69B4': 'rgb(255, 105, 180)', '#800000': 'rgb(128, 0, 0)', '#8B668B': 'rgb(139, 102, 139)', '#363636': 'rgb(54, 54, 54)', '#8B4500': 'rgb(139, 69, 0)', '#D3D3D3': 'rgb(211, 211, 211)', '#607B8B': 'rgb(96, 123, 139)', '#F08080': 'rgb(240, 128, 128)', '#CD9B9B': 'rgb(205, 155, 155)', '#76EEC6': 'rgb(118, 238, 198)', '#FAEBD7': 'rgb(250, 235, 215)', '#68838B': 'rgb(104, 131, 139)', '#7FFFD4': 'rgb(127, 255, 212)', '#C0C0C0': 'rgb(192, 192, 192)', '#EEDD82': 'rgb(238, 221, 130)', '#EE9A49': 'rgb(238, 154, 73)', '#4A708B': 'rgb(74, 112, 139)', '#008080': 'rgb(0, 128, 128)', '#7AC5CD': 'rgb(122, 197, 205)', '#98F5FF': 'rgb(152, 245, 255)', '#8B2500': 'rgb(139, 37, 0)', '#8F8F8F': 'rgb(143, 143, 143)', '#FFF0F5': 'rgb(255, 240, 245)', '#8B8970': 'rgb(139, 137, 112)', '#8B8878': 'rgb(139, 136, 120)', '#6A5ACD': 'rgb(106, 90, 205)', '#4682B4': 'rgb(70, 130, 180)', '#EEEEE0': 'rgb(238, 238, 224)', '#B3B3B3': 'rgb(179, 179, 179)', '#00FF00': 'rgb(0, 255, 0)', '#FFDEAD': 'rgb(255, 222, 173)', '#CD2626': 'rgb(205, 38, 38)', '#8B4C39': 'rgb(139, 76, 57)', '#9B30FF': 'rgb(155, 48, 255)', '#E5E5E5': 'rgb(229, 229, 229)', '#36648B': 'rgb(54, 100, 139)', '#9C9C9C': 'rgb(156, 156, 156)', '#F8F8FF': 'rgb(248, 248, 255)', '#333333': 'rgb(51, 51, 51)', '#5C5C5C': 'rgb(92, 92, 92)', '#737373': 'rgb(115, 115, 115)', '#EEC900': 'rgb(238, 201, 0)', '#FFE1FF': 'rgb(255, 225, 255)', '#C1FFC1': 'rgb(193, 255, 193)', '#CDC5BF': 'rgb(205, 197, 191)', '#A0522D': 'rgb(160, 82, 45)', '#8B5F65': 'rgb(139, 95, 101)', '#CDC1C5': 'rgb(205, 193, 197)', '#EE7621': 'rgb(238, 118, 33)', '#FFBBFF': 'rgb(255, 187, 255)', '#CD6839': 'rgb(205, 104, 57)', '#698B69': 'rgb(105, 139, 105)', '#050505': 'rgb(5, 5, 5)', '#CD661D': 'rgb(205, 102, 29)', '#FAFAD2': 'rgb(250, 250, 210)', '#CDCDC1': 'rgb(205, 205, 193)', '#FFF8DC': 'rgb(255, 248, 220)', '#A8A8A8': 'rgb(168, 168, 168)', '#B452CD': 'rgb(180, 82, 205)', '#D2B48C': 'rgb(210, 180, 140)', '#8EE5EE': 'rgb(142, 229, 238)', '#483D8B': 'rgb(72, 61, 139)', '#BBFFFF': 'rgb(187, 255, 255)', '#0000FF': 'rgb(0, 0, 255)', '#EE6AA7': 'rgb(238, 106, 167)', '#EE7942': 'rgb(238, 121, 66)', '#00CD00': 'rgb(0, 205, 0)', '#141414': 'rgb(20, 20, 20)', '#9ACD32': 'rgb(154, 205, 50)', '#C71585': 'rgb(199, 21, 133)', '#EE9A00': 'rgb(238, 154, 0)', '#CAFF70': 'rgb(202, 255, 112)', '#F5F5F5': 'rgb(245, 245, 245)', '#32CD32': 'rgb(50, 205, 50)', '#00EE00': 'rgb(0, 238, 0)', '#FFB6C1': 'rgb(255, 182, 193)', '#8B1A1A': 'rgb(139, 26, 26)', '#00B2EE': 'rgb(0, 178, 238)', '#20B2AA': 'rgb(32, 178, 170)', '#707070': 'rgb(112, 112, 112)', '#009ACD': 'rgb(0, 154, 205)', '#A52A2A': 'rgb(165, 42, 42)', '#EE6363': 'rgb(238, 99, 99)', '#FAF0E6': 'rgb(250, 240, 230)', '#8B7D7B': 'rgb(139, 125, 123)', '#9A32CD': 'rgb(154, 50, 205)', '#1F1F1F': 'rgb(31, 31, 31)', '#E8E8E8': 'rgb(232, 232, 232)', '#7E7E7E': 'rgb(126, 126, 126)', '#7A8B8B': 'rgb(122, 139, 139)', '#CD7054': 'rgb(205, 112, 84)', '#9FB6CD': 'rgb(159, 182, 205)', '#CDC9A5': 'rgb(205, 201, 165)', '#D02090': 'rgb(208, 32, 144)', '#00FFFF': 'rgb(0, 255, 255)', '#2B2B2B': 'rgb(43, 43, 43)', '#858585': 'rgb(133, 133, 133)', '#A3A3A3': 'rgb(163, 163, 163)', '#CD0000': 'rgb(205, 0, 0)', '#43CD80': 'rgb(67, 205, 128)', '#FA8072': 'rgb(250, 128, 114)', '#FFDAB9': 'rgb(255, 218, 185)', '#D2691E': 'rgb(210, 105, 30)', '#FF1493': 'rgb(255, 20, 147)', '#EED2EE': 'rgb(238, 210, 238)', '#030303': 'rgb(3, 3, 3)', '#8B8B7A': 'rgb(139, 139, 122)'}
diff --git a/frontend/imgrid/colors/js/ditherbackground.gif b/frontend/imgrid/colors/js/ditherbackground.gif
new file mode 100755
index 0000000..670df08
--- /dev/null
+++ b/frontend/imgrid/colors/js/ditherbackground.gif
Binary files differ
diff --git a/frontend/imgrid/colors/js/goldenfunctions.js b/frontend/imgrid/colors/js/goldenfunctions.js
new file mode 100755
index 0000000..ab39533
--- /dev/null
+++ b/frontend/imgrid/colors/js/goldenfunctions.js
@@ -0,0 +1,33 @@
+function regolden(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num/ratio)
+ return newnum
+ }
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newval = goldenize(result)
+ propval = newval.toString()+'px'
+ if(propertystr == 'height'){
+ $(idandselectr).css('width', propval)
+ }
+ else if(propertystr == 'width'){
+ $(idandselectr).css('height', propval)
+ }
+ }
+
diff --git a/frontend/imgrid/colors/js/hexrgbnametoggle.js b/frontend/imgrid/colors/js/hexrgbnametoggle.js
new file mode 100755
index 0000000..60567a5
--- /dev/null
+++ b/frontend/imgrid/colors/js/hexrgbnametoggle.js
@@ -0,0 +1,148 @@
+///threewayselector for what goes in the divs/////////////////////
+///MUST SWITCH TO FOUR WAY WITH RGB///////////////////////////////
+var infostate = 0
+var stringvalue = "CLICK TO CHOOSE THE COLOR"
+function switchinfo()
+ {
+ if(infostate == 1)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(divtoname[divlist[i]])
+ };
+ infostate = 2
+ $('#infospace').html('(NAMES)');
+ }
+ else if(infostate == 0)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html("")
+ };
+ infostate = 1
+ $('#infospace').html('(NONE)');
+ }
+ else if(infostate == 2)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(nametohex[divtoname[divlist[i]]])
+ };
+ infostate = 3
+ $('#infospace').html('(HEXES)');
+ }
+ else if(infostate == 3)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(hextorgb[nametohex[divtoname[divlist[i]]]]);
+ // $(divlist[i]).html($(divlist[i]).css('background-color'));
+ }
+ infostate = 0
+ $('#infospace').html('(RGBS)');
+ }
+
+ }
+switchinfo()
+$('#infoswitch').hover(function(){$('#infospace').show()}, function(){$('#infospace').hide('slow')} )
+$('#infoswitch').click(function(){switchinfo()})
+/////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+//takes a div name and returns the colorname associated with that div
+var rgb
+var selectedrgb
+var colorname
+function showcolorname(divstr)
+ {
+ rgb = $('#'+divstr).css('background-color');
+ colorname = divtoname['#'+divstr]
+ // hex = nametohex[colorname]
+ imname = colorname
+ // imname = hextoname[hex]
+ if (hexes === true)
+ {
+ imname = rgb
+ }
+ else if (rgbs === true)
+ {
+ imname = colorname
+ }
+ else if (names === true)
+ {
+ imname = rgbtohex[rgb]
+ }
+ return imname
+ }
+function bigname(divstr)
+ {
+ stringvalue = showcolorname(divstr)
+ $('#colornames').html(stringvalue)
+ }
+$('.colors').hover(function()
+ {
+ thabg = $(this).css('background-color')
+ bigname(this.id);
+ });
+
+//////////////////////////////////////////////////////////////////////
+//THIS CONTROLS THE VALUE OF THE SELECTION ETC
+//MUST ADD RGB VALUES TO THIS AND MAKE IT A THREE-WAY SELECTOR
+var names = true;
+var hexes = false;
+var rgbs = false;
+var selectedname = "";
+function hexswitch()
+ {
+ if(names == true)
+ {
+ hexes = false;
+ rgbs = false;
+ $('#hexswitch').html('CLICK TO SWITCH TO RGB VALUES');
+ $('#namespace').val(selectedname);
+ names = false;
+ rgbs = true;
+ }
+ else if(hexes == true)
+ {
+ rgbs = false;
+ names = false;
+ $('#hexswitch').html('CLICK TO SWITCH TO COLOR NAMES');
+ $('#namespace').val(rgbtohex[selectedrgb]);
+ hexes = false;
+ names = true;
+ }
+ else if(rgbs == true)
+ {
+ names = false;
+ hexes = false;
+ $('#hexswitch').html('CLICK TO SWITCH TO HEX VALUES')
+ $('#namespace').val(selectedrgb)
+ rgbs = false;
+ hexes = true;
+ }
+ }
+hexswitch()
+$('#hexswitch').click(function(){hexswitch()});
+//////////////////////////////////////////////////////
+//////////CLICK TO PUT THE COLORS IN//////////////////
+function putitin()
+ {
+ if (rgbs === true)
+ {thecolor = selectedname}
+ if (hexes === true)
+ {thecolor = selectedrgb}
+ if (names === true)
+ {thecolor = rgbtohex[selectedrgb]}
+ $('#namespace').val(thecolor)
+ $('#preview').css({'background-color':selectedrgb,'border-style':'none'})
+ $('#vasebackground').css('background-color',selectedrgb)
+ }
+$('.colors').click(function()
+ {
+ selectednameid = $(this).attr('id')
+ selectedname = divtoname['#'+selectednameid]
+ selectedrgb = $(this).css('background-color');
+ putitin()
+ });
+
+
diff --git a/frontend/imgrid/colors/js/hoverbackground.jpg b/frontend/imgrid/colors/js/hoverbackground.jpg
new file mode 100755
index 0000000..c1ef116
--- /dev/null
+++ b/frontend/imgrid/colors/js/hoverbackground.jpg
Binary files differ
diff --git a/frontend/imgrid/colors/js/hovercss.js b/frontend/imgrid/colors/js/hovercss.js
new file mode 100755
index 0000000..0223b8b
--- /dev/null
+++ b/frontend/imgrid/colors/js/hovercss.js
@@ -0,0 +1,31 @@
+//HOVER CSS SCRIPT//
+var old = {};
+function hovercss(sel, uno)
+ {
+ var chng = {};
+ chng['color'] = 'white';
+ chng['text-shadow'] = 'black 1px 2px';
+ chng['background-image'] = 'url(js/hoverbackground.jpg)';
+ if(uno == 'over')
+ {
+ for(var key in chng){
+ old[key] = $('#'+sel).css(key)
+ }
+ for(var key in chng){
+ $('#'+sel).css(key, chng[key])
+ }
+ }
+ if(uno == 'out'){
+ for(var key in old){
+ $('#'+sel).css(key, old[key])
+ }
+ }
+ };
+$('.theswitches').hover(function()
+ {
+ hovercss(this.id, 'over')
+ }, function()
+ {
+ hovercss(this.id, 'out')
+ });
+
diff --git a/frontend/imgrid/colors/js/iftransparentcss.js b/frontend/imgrid/colors/js/iftransparentcss.js
new file mode 100755
index 0000000..fd4fe6c
--- /dev/null
+++ b/frontend/imgrid/colors/js/iftransparentcss.js
@@ -0,0 +1,25 @@
+///if transparent etc styling
+var transcss = {
+ 'color':'#141414','box-shadow':'10px 10px 5px #141414',
+ 'background-color':'#D1D1D1','color':'#141414',
+ 'border-width':'2px','border-style':'outset','cursor':'pointer'}
+$('#transbutton').css(transcss)
+var hovertrans = {
+ 'background-color':'DarkGrey','color':'#383838','box-shadow':'5px 5px 2px #141414'
+ }
+$('#transbutton').hover(function(){$('#transbutton').css(hovertrans)},function(){$('#transbutton').css(transcss)})
+
+function transparent()
+ {
+ $('#namespace').val('transparent');
+ $('#preview').css({'background-color':'transparent','border-style':'dashed','border-width':'2px'})
+ }
+$('#transbutton').click(function()
+ {
+ transparent()
+ $('#colornames').html('transparent')
+ $('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+ $('#extra').html('<br><br><span style="color:red;background-color:black;border-color:red; border-width:1px; border-style:solid; font-size:14px;">note: the .jpg image format does not support transparency</span>')
+ });
+
+
diff --git a/frontend/imgrid/colors/js/jquery-1.6.4.min.js b/frontend/imgrid/colors/js/jquery-1.6.4.min.js
new file mode 100755
index 0000000..628ed9b
--- /dev/null
+++ b/frontend/imgrid/colors/js/jquery-1.6.4.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */
+(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bA.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bW(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bP,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bW(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bW(a,c,d,e,"*",g));return l}function bV(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bL),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function by(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bt:bu;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bf(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function V(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(Q.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(w,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.4",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(!b)return-1;if(I)return I.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g+"With"](this===b?d:this,[h])}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u,v;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete
+t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,M(a.origType,a.selector),f.extend({},a,{handler:L,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,M(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?D:C):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=D;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=D;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=D,this.stopPropagation()},isDefaultPrevented:C,isPropagationStopped:C,isImmediatePropagationStopped:C};var E=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},F=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?F:E,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?F:E)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="submit"||c==="image")&&f(b).closest("form").length&&J("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&J("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var G,H=function(a){var b=f.nodeName(a,"input")?a.type:"",c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=H(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",H(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in G)f.event.add(this,c+".specialChange",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var K={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||C,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=w.exec(h),k="",j&&(k=j[0],h=h.replace(w,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,K[h]?(a.push(K[h]+k),h=h+k):h=(K[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+M(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+M(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var N=/Until$/,O=/^(?:parents|prevUntil|prevAll)/,P=/,/,Q=/^.[^:#\[\.,]*$/,R=Array.prototype.slice,S=f.expr.match.POS,T={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(V(this,a,!1),"not",a)},filter:function(a){return this.pushStack(V(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=S.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!T[a]?f.unique(e):e,(this.length>1||P.test(d))&&O.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|object|embed|option|style)/i,bb=/checked\s*(?:[^=]|=\s*.checked.)/i,bc=/\/(java|ecma)script/i,bd=/^\s*<!(?:\[CDATA\[|\-\-)/,be={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!be[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bb.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bf(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bl)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!ba.test(a[0])&&(f.support.checkClone||!bb.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean
+(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]&&bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bk(k[i]);else bk(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bc.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bm=/alpha\([^)]*\)/i,bn=/opacity=([^)]*)/,bo=/([A-Z]|^ms)/g,bp=/^-?\d+(?:px)?$/i,bq=/^-?\d/,br=/^([\-+])=([\-+.\de]+)/,bs={position:"absolute",visibility:"hidden",display:"block"},bt=["Left","Right"],bu=["Top","Bottom"],bv,bw,bx;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bv(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=br.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bv)return bv(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return by(a,b,d);f.swap(a,bs,function(){e=by(a,b,d)});return e}},set:function(a,b){if(!bp.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bm,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bv(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bw=function(a,c){var d,e,g;c=c.replace(bo,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bx=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bp.test(d)&&bq.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bv=bw||bx,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\[\]$/,bB=/\r?\n/g,bC=/#.*$/,bD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\/\//,bI=/\?/,bJ=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bK=/^(?:select|textarea)/i,bL=/\s+/,bM=/([?&])_=[^&]*/,bN=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=["*/"]+["*"];try{bR=e.href}catch(bU){bR=c.createElement("a"),bR.href="",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bJ,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,"\r\n")}}):{name:b.name,value:c.replace(bB,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=b$(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bC,"").replace(bH,bS[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bL),d.crossDomain==null&&(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]&&r[2]==bS[2]&&(r[3]||(r[1]==="http:"?80:443))==(bS[3]||(bS[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bI.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,"$1_="+x);d.url=y+(y===d.url?(bI.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bT+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bz,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cr(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cq("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cq("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cr(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cq("show",1),slideUp:cq("hide",1),slideToggle:cq("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return d.step(a)}var d=this,e=f.fx;this.startTime=cn||co(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&f.timers.push(g)&&!cl&&(cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||co(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cs=/^t(?:able|d|h)$/i,ct=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cu(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cs.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!ct.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file
diff --git a/frontend/imgrid/colors/js/jquery.cookie.js b/frontend/imgrid/colors/js/jquery.cookie.js
new file mode 100755
index 0000000..6036754
--- /dev/null
+++ b/frontend/imgrid/colors/js/jquery.cookie.js
@@ -0,0 +1,96 @@
+/**
+ * Cookie plugin
+ *
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ */
+
+/**
+ * Create a cookie with the given name and value and other optional parameters.
+ *
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Set the value of a cookie.
+ * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
+ * @desc Create a cookie with all available options.
+ * @example $.cookie('the_cookie', 'the_value');
+ * @desc Create a session cookie.
+ * @example $.cookie('the_cookie', null);
+ * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
+ * used when the cookie was set.
+ *
+ * @param String name The name of the cookie.
+ * @param String value The value of the cookie.
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
+ * If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
+ * If set to null or omitted, the cookie will be a session cookie and will not be retained
+ * when the the browser exits.
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
+ * require a secure protocol (like HTTPS).
+ * @type undefined
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+
+/**
+ * Get the value of a cookie with the given name.
+ *
+ * @example $.cookie('the_cookie');
+ * @desc Get the value of a cookie.
+ *
+ * @param String name The name of the cookie.
+ * @return The value of the cookie.
+ * @type String
+ *
+ * @name $.cookie
+ * @cat Plugins/Cookie
+ * @author Klaus Hartl/klaus.hartl@stilbuero.de
+ */
+jQuery.cookie = function(name, value, options) {
+ if (typeof value != 'undefined') { // name and value given, set cookie
+ options = options || {};
+ if (value === null) {
+ value = '';
+ options.expires = -1;
+ }
+ var expires = '';
+ if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
+ var date;
+ if (typeof options.expires == 'number') {
+ date = new Date();
+ date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
+ } else {
+ date = options.expires;
+ }
+ expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
+ }
+ // CAUTION: Needed to parenthesize options.path and options.domain
+ // in the following expressions, otherwise they evaluate to undefined
+ // in the packed version for some reason...
+ var path = options.path ? '; path=' + (options.path) : '';
+ var domain = options.domain ? '; domain=' + (options.domain) : '';
+ var secure = options.secure ? '; secure' : '';
+ document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
+ } else { // only name given, get cookie
+ var cookieValue = null;
+ if (document.cookie && document.cookie != '') {
+ var cookies = document.cookie.split(';');
+ for (var i = 0; i < cookies.length; i++) {
+ var cookie = jQuery.trim(cookies[i]);
+ // Does this cookie string begin with the name we want?
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+ break;
+ }
+ }
+ }
+ return cookieValue;
+ }
+}; \ No newline at end of file
diff --git a/frontend/imgrid/colors/js/setupdimensions.js b/frontend/imgrid/colors/js/setupdimensions.js
new file mode 100755
index 0000000..a496e87
--- /dev/null
+++ b/frontend/imgrid/colors/js/setupdimensions.js
@@ -0,0 +1,173 @@
+//setup dimensions
+//everything needs to be positioned according to
+//window.innerWidth
+
+//step 1...forget about the rollover css for now
+//step 2...make sure ratios are in place
+
+//function makebig(divstr)
+// {
+/// newheight = goldenize(colorsheight)
+/// $('#'+divstr).height(newheight)
+// }
+//function makesmall(divstr)
+// {
+// $('#'+divstr).height(colorsheight)
+// }
+//////////////////
+/////////////this function runs a for loop
+////////////and makes it so that the colors are related
+//////////by width to the innerwidth of the window
+widthratio = 7
+numberacross = 10
+
+
+function shrinkwidth(arg, ratio)
+ {
+ for(var i=0; i < ratio; i++)
+ {
+ arg = regolden(arg)
+ }
+ division = Math.round(arg)
+ return division
+ }
+////////////////right now the ratio is set at 1/6th
+var colorsh
+function makecolorswidth()
+ {
+ colorswidth = shrinkwidth(windowWidth, widthratio)
+ $('.colors').css('width', colorswidth.toString()+'px')
+ }
+
+function makecolorsheight()
+ {
+ colorsheight = regolden(colorswidth)
+ propval = colorsheight.toString()+'px'
+ $('.colors').css('height', propval)
+ }
+//the following function sets up the font sizes
+//inrelation to the size of the hexswitch font
+function getcontainerwidth()
+ {
+ basis = $('.colors').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ secondbasis = '2px'
+ secondbasis = parseInt(secondbasis.slice(0,-2))
+ widthval = (secondbasis*(numberacross*2))+(basis*numberacross)+(basis*.44)//(goldenize(basis)-basis)
+ widthval = widthval.toString()+'px'
+ return widthval
+ }
+function makecontainerwidth()
+ {
+ var containerwidth = getcontainerwidth()
+ $('#container').css('width',containerwidth)
+ }
+function setupsides()
+ {
+ $('#container').css({'position':'relative','z-index':'1'})
+ $('#switches').css('z-index','10')
+ var basis = $('#container').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ remainder = (100-basis)/2
+ widths = regolden(basis)
+ widths = widths.toString()+'px'
+ lateralbasis = regolden(remainder)
+ leftside = toString(lateralbasis)+'%'
+ rightside = toString(100-lateralbasis)+'%'
+ $('#colornames').css('left', leftside)
+ $('#switches').css({'width': widths, 'left': rightside, 'overflow':'hidden','top':'118px'})
+ }
+//////preview dimensions is for the
+///preview box inside the switches container
+function previewdimensions()
+ {
+ first = $('#switches').css('width')
+ first = parseInt(first.slice(0,-2))
+ width = regolden(first)
+ height = regolden(width)
+ width = width.toString()+'px'
+ height = height.toString()+'px'
+ $('#preview').css({'width':width, 'height':height})
+ }
+/////////////////////////////
+////font-size is related to hexswitch font-size
+////also the width of the switches container
+var fontratioone
+function setupfonts()
+ {
+ fontratioone = shrinkwidth(windowWidth, 9)
+ $('.theswitches').css('font-size',fontratioone)
+ fontratiotwo = shrinkwidth(windowWidth, 8)
+ $('#nameholder, #title, #namespace').css('font-size',fontratiotwo)
+ $('#colornames').css('font-size', goldenize(fontratiotwo)+'px')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ var transfont = regolden(fontratioone)
+ $('#transparent, #extra').css({'width':'100%','font-size':transfont})
+ switcheswidth = $('#switches').css('width')
+ $('#namespace, #nameholder').css('width', '100%')
+ }
+function setupdimensions()
+ {
+ if(window.innerWidth > 933)
+ {windowWidth = window.innerWidth}
+ else
+ {windowWidth = 933}
+ $('#container').css('font-size','0');
+ $('.colors').css('font-size','9px');
+ makecolorswidth()
+ makecolorsheight()
+ makecontainerwidth()
+ setupfonts()
+ setupsides()
+ makegolden('#switches','width')
+ previewdimensions()
+ $('#namespace').css('width', 'inherit')
+ $('#nameholder').css('width', 'inherit')
+ $('#transparent').css({'float':'bottom','width':'inherit'})
+ $('.colors').css({'margin-top': '2px','margin-right':'2px'});
+ }
+$(window).resize(function()
+ {
+ setupdimensions()
+ });
+var colorsheight
+var colorswidth
+setupdimensions()
+function makebig(divstr)
+ {
+ newheight = goldenize(colorsheight)
+ $('#'+divstr).height(newheight)
+ }
+function makesmall(divstr)
+ {
+ $('#'+divstr).height(colorsheight)
+ }
+var firstwidth
+$('.colors').mouseover(function()
+ {
+ $('#extra').html("");
+ if(this.id != 'd0')
+ {
+ $(this).css({'height':goldenize(colorsheight),'width':goldenize(colorswidth)})
+ firstwidth = $('#container').css('width')
+ newwidth = firstwidth+goldenize(colorswidth)-colorswidth
+ $('#container').css('width',newwidth)
+// makebig(this.id);
+ // makegolden('#'+this.id, 'height')
+ }
+ });
+
+
+
+
+$('.colors').mouseout(function()
+ {
+ $(this).css('height',colorsheight)
+ $(this).css('width', colorswidth)
+ $('#container').css('width',firstwidth)
+ });
+
+$(".colors").hover(function(){
+$('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+ });
+
diff --git a/frontend/imgrid/colors/js/wrkshp/colors.html b/frontend/imgrid/colors/js/wrkshp/colors.html
new file mode 100755
index 0000000..0ef22f9
--- /dev/null
+++ b/frontend/imgrid/colors/js/wrkshp/colors.html
@@ -0,0 +1,5429 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- saved from url=(0124)https://mail.google.com/mail/?ui=2&ik=8c5c6e41c0&view=att&th=131a60939ee4c454&attid=0.1&disp=inline&realattid=f_gr2htzs60&zw -->
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head>
+<style type="text/css">
+*
+ {
+ font-family: sans-serif;
+ }
+</style>
+<body>
+
+
+
+<div>
+<h1><a></a>List of Color Names</h1>
+<div>
+
+<p>a list of named colors for use with PHOTOBLASTER:</p>
+
+<table>
+<tbody>
+ <tr>
+ <th align="right">Name</th>
+ <th align="center">Color</th>
+ <th align="left">RGB</th>
+ <th align="left">Hex</th>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow</td>
+ <td align="center" style="background-color:rgb(255, 250, 250)">snow</td>
+ <td align="left">rgb(255, 250, 250)</td>
+ <td align="left">#FFFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow1</td>
+ <td align="center" style="background-color:rgb(255, 250, 250)">snow1</td>
+ <td align="left">rgb(255, 250, 250)</td>
+ <td align="left">#FFFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow2</td>
+ <td align="center" style="background-color:rgb(238, 233, 233)">snow2</td>
+ <td align="left">rgb(238, 233, 233)</td>
+ <td align="left">#EEE9E9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown1</td>
+ <td align="center" style="background-color:rgb(255, 193, 193)">RosyBrown1</td>
+ <td align="left">rgb(255, 193, 193)</td>
+ <td align="left">#FFC1C1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown2</td>
+ <td align="center" style="background-color:rgb(238, 180, 180)">RosyBrown2</td>
+ <td align="left">rgb(238, 180, 180)</td>
+ <td align="left">#EEB4B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow3</td>
+ <td align="center" style="background-color:rgb(205, 201, 201)">snow3</td>
+ <td align="left">rgb(205, 201, 201)</td>
+ <td align="left">#CDC9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCoral</td>
+ <td align="center" style="background-color:rgb(240, 128, 128)">LightCoral</td>
+ <td align="left">rgb(240, 128, 128)</td>
+ <td align="left">#F08080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed1</td>
+ <td align="center" style="background-color:rgb(255, 106, 106)">IndianRed1</td>
+ <td align="left">rgb(255, 106, 106)</td>
+ <td align="left">#FF6A6A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown3</td>
+ <td align="center" style="background-color:rgb(205, 155, 155)">RosyBrown3</td>
+ <td align="left">rgb(205, 155, 155)</td>
+ <td align="left">#CD9B9B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed2</td>
+ <td align="center" style="background-color:rgb(238, 99, 99)">IndianRed2</td>
+ <td align="left">rgb(238, 99, 99)</td>
+ <td align="left">#EE6363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown</td>
+ <td align="center" style="background-color:rgb(188, 143, 143)">RosyBrown</td>
+ <td align="left">rgb(188, 143, 143)</td>
+ <td align="left">#BC8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown1</td>
+ <td align="center" style="background-color:rgb(255, 64, 64)">brown1</td>
+ <td align="left">rgb(255, 64, 64)</td>
+ <td align="left">#FF4040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick1</td>
+ <td align="center" style="background-color:rgb(255, 48, 48)">firebrick1</td>
+ <td align="left">rgb(255, 48, 48)</td>
+ <td align="left">#FF3030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown2</td>
+ <td align="center" style="background-color:rgb(238, 59, 59)">brown2</td>
+ <td align="left">rgb(238, 59, 59)</td>
+ <td align="left">#EE3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed</td>
+ <td align="center" style="background-color:rgb(205, 92, 92)">IndianRed</td>
+ <td align="left">rgb(205, 92, 92)</td>
+ <td align="left">#CD5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed3</td>
+ <td align="center" style="background-color:rgb(205, 85, 85)">IndianRed3</td>
+ <td align="left">rgb(205, 85, 85)</td>
+ <td align="left">#CD5555</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick2</td>
+ <td align="center" style="background-color:rgb(238, 44, 44)">firebrick2</td>
+ <td align="left">rgb(238, 44, 44)</td>
+ <td align="left">#EE2C2C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow4</td>
+ <td align="center" style="background-color:rgb(139, 137, 137)">snow4</td>
+ <td align="left">rgb(139, 137, 137)</td>
+ <td align="left">#8B8989</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown3</td>
+ <td align="center" style="background-color:rgb(205, 51, 51)">brown3</td>
+ <td align="left">rgb(205, 51, 51)</td>
+ <td align="left">#CD3333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red</td>
+ <td align="center" style="background-color:rgb(255, 0, 0)">red</td>
+ <td align="left">rgb(255, 0, 0)</td>
+ <td align="left">#FF0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red1</td>
+ <td align="center" style="background-color:rgb(255, 0, 0)">red1</td>
+ <td align="left">rgb(255, 0, 0)</td>
+ <td align="left">#FF0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown4</td>
+ <td align="center" style="background-color:rgb(139, 105, 105)">RosyBrown4</td>
+ <td align="left">rgb(139, 105, 105)</td>
+ <td align="left">#8B6969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick3</td>
+ <td align="center" style="background-color:rgb(205, 38, 38)">firebrick3</td>
+ <td align="left">rgb(205, 38, 38)</td>
+ <td align="left">#CD2626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red2</td>
+ <td align="center" style="background-color:rgb(238, 0, 0)">red2</td>
+ <td align="left">rgb(238, 0, 0)</td>
+ <td align="left">#EE0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick</td>
+ <td align="center" style="background-color:rgb(178, 34, 34)">firebrick</td>
+ <td align="left">rgb(178, 34, 34)</td>
+ <td align="left">#B22222</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown</td>
+ <td align="center" style="background-color:rgb(165, 42, 42)">brown</td>
+ <td align="left">rgb(165, 42, 42)</td>
+ <td align="left">#A52A2A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red3</td>
+ <td align="center" style="background-color:rgb(205, 0, 0)">red3</td>
+ <td align="left">rgb(205, 0, 0)</td>
+ <td align="left">#CD0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed4</td>
+ <td align="center" style="background-color:rgb(139, 58, 58)">IndianRed4</td>
+ <td align="left">rgb(139, 58, 58)</td>
+ <td align="left">#8B3A3A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown4</td>
+ <td align="center" style="background-color:rgb(139, 35, 35)">brown4</td>
+ <td align="left">rgb(139, 35, 35)</td>
+ <td align="left">#8B2323</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick4</td>
+ <td align="center" style="background-color:rgb(139, 26, 26)">firebrick4</td>
+ <td align="left">rgb(139, 26, 26)</td>
+ <td align="left">#8B1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkRed</td>
+ <td align="center" style="background-color:rgb(139, 0, 0)">DarkRed</td>
+ <td align="left">rgb(139, 0, 0)</td>
+ <td align="left">#8B0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red4</td>
+ <td align="center" style="background-color:rgb(139, 0, 0)">red4</td>
+ <td align="left">rgb(139, 0, 0)</td>
+ <td align="left">#8B0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon</td>
+ <td align="center" style="background-color:rgb(128, 0, 0)">maroon</td>
+ <td align="left">rgb(128, 0, 0)</td>
+ <td align="left">#800000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink1</td>
+ <td align="center" style="background-color:rgb(255, 174, 185)">LightPink1</td>
+ <td align="left">rgb(255, 174, 185)</td>
+ <td align="left">#FFAEB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink3</td>
+ <td align="center" style="background-color:rgb(205, 140, 149)">LightPink3</td>
+ <td align="left">rgb(205, 140, 149)</td>
+ <td align="left">#CD8C95</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink4</td>
+ <td align="center" style="background-color:rgb(139, 95, 101)">LightPink4</td>
+ <td align="left">rgb(139, 95, 101)</td>
+ <td align="left">#8B5F65</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink2</td>
+ <td align="center" style="background-color:rgb(238, 162, 173)">LightPink2</td>
+ <td align="left">rgb(238, 162, 173)</td>
+ <td align="left">#EEA2AD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink</td>
+ <td align="center" style="background-color:rgb(255, 182, 193)">LightPink</td>
+ <td align="left">rgb(255, 182, 193)</td>
+ <td align="left">#FFB6C1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink</td>
+ <td align="center" style="background-color:rgb(255, 192, 203)">pink</td>
+ <td align="left">rgb(255, 192, 203)</td>
+ <td align="left">#FFC0CB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">crimson</td>
+ <td align="center" style="background-color:rgb(220, 20, 60)">crimson</td>
+ <td align="left">rgb(220, 20, 60)</td>
+ <td align="left">#DC143C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink1</td>
+ <td align="center" style="background-color:rgb(255, 181, 197)">pink1</td>
+ <td align="left">rgb(255, 181, 197)</td>
+ <td align="left">#FFB5C5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink2</td>
+ <td align="center" style="background-color:rgb(238, 169, 184)">pink2</td>
+ <td align="left">rgb(238, 169, 184)</td>
+ <td align="left">#EEA9B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink3</td>
+ <td align="center" style="background-color:rgb(205, 145, 158)">pink3</td>
+ <td align="left">rgb(205, 145, 158)</td>
+ <td align="left">#CD919E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink4</td>
+ <td align="center" style="background-color:rgb(139, 99, 108)">pink4</td>
+ <td align="left">rgb(139, 99, 108)</td>
+ <td align="left">#8B636C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed4</td>
+ <td align="center" style="background-color:rgb(139, 71, 93)">PaleVioletRed4</td>
+ <td align="left">rgb(139, 71, 93)</td>
+ <td align="left">#8B475D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed</td>
+ <td align="center" style="background-color:rgb(219, 112, 147)">PaleVioletRed</td>
+ <td align="left">rgb(219, 112, 147)</td>
+ <td align="left">#DB7093</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed2</td>
+ <td align="center" style="background-color:rgb(238, 121, 159)">PaleVioletRed2</td>
+ <td align="left">rgb(238, 121, 159)</td>
+ <td align="left">#EE799F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed1</td>
+ <td align="center" style="background-color:rgb(255, 130, 171)">PaleVioletRed1</td>
+ <td align="left">rgb(255, 130, 171)</td>
+ <td align="left">#FF82AB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed3</td>
+ <td align="center" style="background-color:rgb(205, 104, 137)">PaleVioletRed3</td>
+ <td align="left">rgb(205, 104, 137)</td>
+ <td align="left">#CD6889</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush</td>
+ <td align="center" style="background-color:rgb(255, 240, 245)">LavenderBlush</td>
+ <td align="left">rgb(255, 240, 245)</td>
+ <td align="left">#FFF0F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush1</td>
+ <td align="center" style="background-color:rgb(255, 240, 245)">LavenderBlush1</td>
+ <td align="left">rgb(255, 240, 245)</td>
+ <td align="left">#FFF0F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush3</td>
+ <td align="center" style="background-color:rgb(205, 193, 197)">LavenderBlush3</td>
+ <td align="left">rgb(205, 193, 197)</td>
+ <td align="left">#CDC1C5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush2</td>
+ <td align="center" style="background-color:rgb(238, 224, 229)">LavenderBlush2</td>
+ <td align="left">rgb(238, 224, 229)</td>
+ <td align="left">#EEE0E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush4</td>
+ <td align="center" style="background-color:rgb(139, 131, 134)">LavenderBlush4</td>
+ <td align="left">rgb(139, 131, 134)</td>
+ <td align="left">#8B8386</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon</td>
+ <td align="center" style="background-color:rgb(176, 48, 96)">maroon</td>
+ <td align="left">rgb(176, 48, 96)</td>
+ <td align="left">#B03060</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink3</td>
+ <td align="center" style="background-color:rgb(205, 96, 144)">HotPink3</td>
+ <td align="left">rgb(205, 96, 144)</td>
+ <td align="left">#CD6090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed3</td>
+ <td align="center" style="background-color:rgb(205, 50, 120)">VioletRed3</td>
+ <td align="left">rgb(205, 50, 120)</td>
+ <td align="left">#CD3278</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed1</td>
+ <td align="center" style="background-color:rgb(255, 62, 150)">VioletRed1</td>
+ <td align="left">rgb(255, 62, 150)</td>
+ <td align="left">#FF3E96</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed2</td>
+ <td align="center" style="background-color:rgb(238, 58, 140)">VioletRed2</td>
+ <td align="left">rgb(238, 58, 140)</td>
+ <td align="left">#EE3A8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed4</td>
+ <td align="center" style="background-color:rgb(139, 34, 82)">VioletRed4</td>
+ <td align="left">rgb(139, 34, 82)</td>
+ <td align="left">#8B2252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink2</td>
+ <td align="center" style="background-color:rgb(238, 106, 167)">HotPink2</td>
+ <td align="left">rgb(238, 106, 167)</td>
+ <td align="left">#EE6AA7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink1</td>
+ <td align="center" style="background-color:rgb(255, 110, 180)">HotPink1</td>
+ <td align="left">rgb(255, 110, 180)</td>
+ <td align="left">#FF6EB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink4</td>
+ <td align="center" style="background-color:rgb(139, 58, 98)">HotPink4</td>
+ <td align="left">rgb(139, 58, 98)</td>
+ <td align="left">#8B3A62</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink</td>
+ <td align="center" style="background-color:rgb(255, 105, 180)">HotPink</td>
+ <td align="left">rgb(255, 105, 180)</td>
+ <td align="left">#FF69B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink</td>
+ <td align="center" style="background-color:rgb(255, 20, 147)">DeepPink</td>
+ <td align="left">rgb(255, 20, 147)</td>
+ <td align="left">#FF1493</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink1</td>
+ <td align="center" style="background-color:rgb(255, 20, 147)">DeepPink1</td>
+ <td align="left">rgb(255, 20, 147)</td>
+ <td align="left">#FF1493</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink2</td>
+ <td align="center" style="background-color:rgb(238, 18, 137)">DeepPink2</td>
+ <td align="left">rgb(238, 18, 137)</td>
+ <td align="left">#EE1289</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink3</td>
+ <td align="center" style="background-color:rgb(205, 16, 118)">DeepPink3</td>
+ <td align="left">rgb(205, 16, 118)</td>
+ <td align="left">#CD1076</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink4</td>
+ <td align="center" style="background-color:rgb(139, 10, 80)">DeepPink4</td>
+ <td align="left">rgb(139, 10, 80)</td>
+ <td align="left">#8B0A50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon1</td>
+ <td align="center" style="background-color:rgb(255, 52, 179)">maroon1</td>
+ <td align="left">rgb(255, 52, 179)</td>
+ <td align="left">#FF34B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon2</td>
+ <td align="center" style="background-color:rgb(238, 48, 167)">maroon2</td>
+ <td align="left">rgb(238, 48, 167)</td>
+ <td align="left">#EE30A7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon3</td>
+ <td align="center" style="background-color:rgb(205, 41, 144)">maroon3</td>
+ <td align="left">rgb(205, 41, 144)</td>
+ <td align="left">#CD2990</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon4</td>
+ <td align="center" style="background-color:rgb(139, 28, 98)">maroon4</td>
+ <td align="left">rgb(139, 28, 98)</td>
+ <td align="left">#8B1C62</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumVioletRed</td>
+ <td align="center" style="background-color:rgb(199, 21, 133)">MediumVioletRed</td>
+ <td align="left">rgb(199, 21, 133)</td>
+ <td align="left">#C71585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed</td>
+ <td align="center" style="background-color:rgb(208, 32, 144)">VioletRed</td>
+ <td align="left">rgb(208, 32, 144)</td>
+ <td align="left">#D02090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid2</td>
+ <td align="center" style="background-color:rgb(238, 122, 233)">orchid2</td>
+ <td align="left">rgb(238, 122, 233)</td>
+ <td align="left">#EE7AE9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid</td>
+ <td align="center" style="background-color:rgb(218, 112, 214)">orchid</td>
+ <td align="left">rgb(218, 112, 214)</td>
+ <td align="left">#DA70D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid1</td>
+ <td align="center" style="background-color:rgb(255, 131, 250)">orchid1</td>
+ <td align="left">rgb(255, 131, 250)</td>
+ <td align="left">#FF83FA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid3</td>
+ <td align="center" style="background-color:rgb(205, 105, 201)">orchid3</td>
+ <td align="left">rgb(205, 105, 201)</td>
+ <td align="left">#CD69C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid4</td>
+ <td align="center" style="background-color:rgb(139, 71, 137)">orchid4</td>
+ <td align="left">rgb(139, 71, 137)</td>
+ <td align="left">#8B4789</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle1</td>
+ <td align="center" style="background-color:rgb(255, 225, 255)">thistle1</td>
+ <td align="left">rgb(255, 225, 255)</td>
+ <td align="left">#FFE1FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle2</td>
+ <td align="center" style="background-color:rgb(238, 210, 238)">thistle2</td>
+ <td align="left">rgb(238, 210, 238)</td>
+ <td align="left">#EED2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum1</td>
+ <td align="center" style="background-color:rgb(255, 187, 255)">plum1</td>
+ <td align="left">rgb(255, 187, 255)</td>
+ <td align="left">#FFBBFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum2</td>
+ <td align="center" style="background-color:rgb(238, 174, 238)">plum2</td>
+ <td align="left">rgb(238, 174, 238)</td>
+ <td align="left">#EEAEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle</td>
+ <td align="center" style="background-color:rgb(216, 191, 216)">thistle</td>
+ <td align="left">rgb(216, 191, 216)</td>
+ <td align="left">#D8BFD8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle3</td>
+ <td align="center" style="background-color:rgb(205, 181, 205)">thistle3</td>
+ <td align="left">rgb(205, 181, 205)</td>
+ <td align="left">#CDB5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum</td>
+ <td align="center" style="background-color:rgb(221, 160, 221)">plum</td>
+ <td align="left">rgb(221, 160, 221)</td>
+ <td align="left">#DDA0DD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">violet</td>
+ <td align="center" style="background-color:rgb(238, 130, 238)">violet</td>
+ <td align="left">rgb(238, 130, 238)</td>
+ <td align="left">#EE82EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum3</td>
+ <td align="center" style="background-color:rgb(205, 150, 205)">plum3</td>
+ <td align="left">rgb(205, 150, 205)</td>
+ <td align="left">#CD96CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle4</td>
+ <td align="center" style="background-color:rgb(139, 123, 139)">thistle4</td>
+ <td align="left">rgb(139, 123, 139)</td>
+ <td align="left">#8B7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">fuchsia</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">fuchsia</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">magenta</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta1</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">magenta1</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum4</td>
+ <td align="center" style="background-color:rgb(139, 102, 139)">plum4</td>
+ <td align="left">rgb(139, 102, 139)</td>
+ <td align="left">#8B668B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta2</td>
+ <td align="center" style="background-color:rgb(238, 0, 238)">magenta2</td>
+ <td align="left">rgb(238, 0, 238)</td>
+ <td align="left">#EE00EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta3</td>
+ <td align="center" style="background-color:rgb(205, 0, 205)">magenta3</td>
+ <td align="left">rgb(205, 0, 205)</td>
+ <td align="left">#CD00CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkMagenta</td>
+ <td align="center" style="background-color:rgb(139, 0, 139)">DarkMagenta</td>
+ <td align="left">rgb(139, 0, 139)</td>
+ <td align="left">#8B008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta4</td>
+ <td align="center" style="background-color:rgb(139, 0, 139)">magenta4</td>
+ <td align="left">rgb(139, 0, 139)</td>
+ <td align="left">#8B008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple</td>
+ <td align="center" style="background-color:rgb(128, 0, 128)">purple</td>
+ <td align="left">rgb(128, 0, 128)</td>
+ <td align="left">#800080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid</td>
+ <td align="center" style="background-color:rgb(186, 85, 211)">MediumOrchid</td>
+ <td align="left">rgb(186, 85, 211)</td>
+ <td align="left">#BA55D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid1</td>
+ <td align="center" style="background-color:rgb(224, 102, 255)">MediumOrchid1</td>
+ <td align="left">rgb(224, 102, 255)</td>
+ <td align="left">#E066FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid2</td>
+ <td align="center" style="background-color:rgb(209, 95, 238)">MediumOrchid2</td>
+ <td align="left">rgb(209, 95, 238)</td>
+ <td align="left">#D15FEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid3</td>
+ <td align="center" style="background-color:rgb(180, 82, 205)">MediumOrchid3</td>
+ <td align="left">rgb(180, 82, 205)</td>
+ <td align="left">#B452CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid4</td>
+ <td align="center" style="background-color:rgb(122, 55, 139)">MediumOrchid4</td>
+ <td align="left">rgb(122, 55, 139)</td>
+ <td align="left">#7A378B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkViolet</td>
+ <td align="center" style="background-color:rgb(148, 0, 211)">DarkViolet</td>
+ <td align="left">rgb(148, 0, 211)</td>
+ <td align="left">#9400D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid</td>
+ <td align="center" style="background-color:rgb(153, 50, 204)">DarkOrchid</td>
+ <td align="left">rgb(153, 50, 204)</td>
+ <td align="left">#9932CC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid1</td>
+ <td align="center" style="background-color:rgb(191, 62, 255)">DarkOrchid1</td>
+ <td align="left">rgb(191, 62, 255)</td>
+ <td align="left">#BF3EFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid3</td>
+ <td align="center" style="background-color:rgb(154, 50, 205)">DarkOrchid3</td>
+ <td align="left">rgb(154, 50, 205)</td>
+ <td align="left">#9A32CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid2</td>
+ <td align="center" style="background-color:rgb(178, 58, 238)">DarkOrchid2</td>
+ <td align="left">rgb(178, 58, 238)</td>
+ <td align="left">#B23AEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid4</td>
+ <td align="center" style="background-color:rgb(104, 34, 139)">DarkOrchid4</td>
+ <td align="left">rgb(104, 34, 139)</td>
+ <td align="left">#68228B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple</td>
+ <td align="center" style="background-color:rgb(160, 32, 240)">purple</td>
+ <td align="left">rgb(160, 32, 240)</td>
+ <td align="left">#A020F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">indigo</td>
+ <td align="center" style="background-color:rgb( 75, 0, 130)">indigo</td>
+ <td align="left">rgb( 75, 0, 130)</td>
+ <td align="left">#4B0082</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">BlueViolet</td>
+ <td align="center" style="background-color:rgb(138, 43, 226)">BlueViolet</td>
+ <td align="left">rgb(138, 43, 226)</td>
+ <td align="left">#8A2BE2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple2</td>
+ <td align="center" style="background-color:rgb(145, 44, 238)">purple2</td>
+ <td align="left">rgb(145, 44, 238)</td>
+ <td align="left">#912CEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple3</td>
+ <td align="center" style="background-color:rgb(125, 38, 205)">purple3</td>
+ <td align="left">rgb(125, 38, 205)</td>
+ <td align="left">#7D26CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple4</td>
+ <td align="center" style="background-color:rgb( 85, 26, 139)">purple4</td>
+ <td align="left">rgb( 85, 26, 139)</td>
+ <td align="left">#551A8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple1</td>
+ <td align="center" style="background-color:rgb(155, 48, 255)">purple1</td>
+ <td align="left">rgb(155, 48, 255)</td>
+ <td align="left">#9B30FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple</td>
+ <td align="center" style="background-color:rgb(147, 112, 219)">MediumPurple</td>
+ <td align="left">rgb(147, 112, 219)</td>
+ <td align="left">#9370DB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple1</td>
+ <td align="center" style="background-color:rgb(171, 130, 255)">MediumPurple1</td>
+ <td align="left">rgb(171, 130, 255)</td>
+ <td align="left">#AB82FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple2</td>
+ <td align="center" style="background-color:rgb(159, 121, 238)">MediumPurple2</td>
+ <td align="left">rgb(159, 121, 238)</td>
+ <td align="left">#9F79EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple3</td>
+ <td align="center" style="background-color:rgb(137, 104, 205)">MediumPurple3</td>
+ <td align="left">rgb(137, 104, 205)</td>
+ <td align="left">#8968CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple4</td>
+ <td align="center" style="background-color:rgb( 93, 71, 139)">MediumPurple4</td>
+ <td align="left">rgb( 93, 71, 139)</td>
+ <td align="left">#5D478B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateBlue</td>
+ <td align="center" style="background-color:rgb( 72, 61, 139)">DarkSlateBlue</td>
+ <td align="left">rgb( 72, 61, 139)</td>
+ <td align="left">#483D8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateBlue</td>
+ <td align="center" style="background-color:rgb(132, 112, 255)">LightSlateBlue</td>
+ <td align="left">rgb(132, 112, 255)</td>
+ <td align="left">#8470FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSlateBlue</td>
+ <td align="center" style="background-color:rgb(123, 104, 238)">MediumSlateBlue</td>
+ <td align="left">rgb(123, 104, 238)</td>
+ <td align="left">#7B68EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue</td>
+ <td align="center" style="background-color:rgb(106, 90, 205)">SlateBlue</td>
+ <td align="left">rgb(106, 90, 205)</td>
+ <td align="left">#6A5ACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue1</td>
+ <td align="center" style="background-color:rgb(131, 111, 255)">SlateBlue1</td>
+ <td align="left">rgb(131, 111, 255)</td>
+ <td align="left">#836FFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue2</td>
+ <td align="center" style="background-color:rgb(122, 103, 238)">SlateBlue2</td>
+ <td align="left">rgb(122, 103, 238)</td>
+ <td align="left">#7A67EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue3</td>
+ <td align="center" style="background-color:rgb(105, 89, 205)">SlateBlue3</td>
+ <td align="left">rgb(105, 89, 205)</td>
+ <td align="left">#6959CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue4</td>
+ <td align="center" style="background-color:rgb( 71, 60, 139)">SlateBlue4</td>
+ <td align="left">rgb( 71, 60, 139)</td>
+ <td align="left">#473C8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">GhostWhite</td>
+ <td align="center" style="background-color:rgb(248, 248, 255)">GhostWhite</td>
+ <td align="left">rgb(248, 248, 255)</td>
+ <td align="left">#F8F8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">lavender</td>
+ <td align="center" style="background-color:rgb(230, 230, 250)">lavender</td>
+ <td align="left">rgb(230, 230, 250)</td>
+ <td align="left">#E6E6FA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 255)">blue</td>
+ <td align="left">rgb( 0, 0, 255)</td>
+ <td align="left">#0000FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue1</td>
+ <td align="center" style="background-color:rgb( 0, 0, 255)">blue1</td>
+ <td align="left">rgb( 0, 0, 255)</td>
+ <td align="left">#0000FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue2</td>
+ <td align="center" style="background-color:rgb( 0, 0, 238)">blue2</td>
+ <td align="left">rgb( 0, 0, 238)</td>
+ <td align="left">#0000EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue3</td>
+ <td align="center" style="background-color:rgb( 0, 0, 205)">blue3</td>
+ <td align="left">rgb( 0, 0, 205)</td>
+ <td align="left">#0000CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 205)">MediumBlue</td>
+ <td align="left">rgb( 0, 0, 205)</td>
+ <td align="left">#0000CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue4</td>
+ <td align="center" style="background-color:rgb( 0, 0, 139)">blue4</td>
+ <td align="left">rgb( 0, 0, 139)</td>
+ <td align="left">#00008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 139)">DarkBlue</td>
+ <td align="left">rgb( 0, 0, 139)</td>
+ <td align="left">#00008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MidnightBlue</td>
+ <td align="center" style="background-color:rgb( 25, 25, 112)">MidnightBlue</td>
+ <td align="left">rgb( 25, 25, 112)</td>
+ <td align="left">#191970</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">navy</td>
+ <td align="center" style="background-color:rgb( 0, 0, 128)">navy</td>
+ <td align="left">rgb( 0, 0, 128)</td>
+ <td align="left">#000080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavyBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 128)">NavyBlue</td>
+ <td align="left">rgb( 0, 0, 128)</td>
+ <td align="left">#000080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue</td>
+ <td align="center" style="background-color:rgb( 65, 105, 225)">RoyalBlue</td>
+ <td align="left">rgb( 65, 105, 225)</td>
+ <td align="left">#4169E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue1</td>
+ <td align="center" style="background-color:rgb( 72, 118, 255)">RoyalBlue1</td>
+ <td align="left">rgb( 72, 118, 255)</td>
+ <td align="left">#4876FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue2</td>
+ <td align="center" style="background-color:rgb( 67, 110, 238)">RoyalBlue2</td>
+ <td align="left">rgb( 67, 110, 238)</td>
+ <td align="left">#436EEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue3</td>
+ <td align="center" style="background-color:rgb( 58, 95, 205)">RoyalBlue3</td>
+ <td align="left">rgb( 58, 95, 205)</td>
+ <td align="left">#3A5FCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue4</td>
+ <td align="center" style="background-color:rgb( 39, 64, 139)">RoyalBlue4</td>
+ <td align="left">rgb( 39, 64, 139)</td>
+ <td align="left">#27408B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CornflowerBlue</td>
+ <td align="center" style="background-color:rgb(100, 149, 237)">CornflowerBlue</td>
+ <td align="left">rgb(100, 149, 237)</td>
+ <td align="left">#6495ED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue</td>
+ <td align="center" style="background-color:rgb(176, 196, 222)">LightSteelBlue</td>
+ <td align="left">rgb(176, 196, 222)</td>
+ <td align="left">#B0C4DE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue1</td>
+ <td align="center" style="background-color:rgb(202, 225, 255)">LightSteelBlue1</td>
+ <td align="left">rgb(202, 225, 255)</td>
+ <td align="left">#CAE1FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue2</td>
+ <td align="center" style="background-color:rgb(188, 210, 238)">LightSteelBlue2</td>
+ <td align="left">rgb(188, 210, 238)</td>
+ <td align="left">#BCD2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue3</td>
+ <td align="center" style="background-color:rgb(162, 181, 205)">LightSteelBlue3</td>
+ <td align="left">rgb(162, 181, 205)</td>
+ <td align="left">#A2B5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue4</td>
+ <td align="center" style="background-color:rgb(110, 123, 139)">LightSteelBlue4</td>
+ <td align="left">rgb(110, 123, 139)</td>
+ <td align="left">#6E7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray4</td>
+ <td align="center" style="background-color:rgb(108, 123, 139)">SlateGray4</td>
+ <td align="left">rgb(108, 123, 139)</td>
+ <td align="left">#6C7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray1</td>
+ <td align="center" style="background-color:rgb(198, 226, 255)">SlateGray1</td>
+ <td align="left">rgb(198, 226, 255)</td>
+ <td align="left">#C6E2FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray2</td>
+ <td align="center" style="background-color:rgb(185, 211, 238)">SlateGray2</td>
+ <td align="left">rgb(185, 211, 238)</td>
+ <td align="left">#B9D3EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray3</td>
+ <td align="center" style="background-color:rgb(159, 182, 205)">SlateGray3</td>
+ <td align="left">rgb(159, 182, 205)</td>
+ <td align="left">#9FB6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateGray</td>
+ <td align="center" style="background-color:rgb(119, 136, 153)">LightSlateGray</td>
+ <td align="left">rgb(119, 136, 153)</td>
+ <td align="left">#778899</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateGrey</td>
+ <td align="center" style="background-color:rgb(119, 136, 153)">LightSlateGrey</td>
+ <td align="left">rgb(119, 136, 153)</td>
+ <td align="left">#778899</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray</td>
+ <td align="center" style="background-color:rgb(112, 128, 144)">SlateGray</td>
+ <td align="left">rgb(112, 128, 144)</td>
+ <td align="left">#708090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGrey</td>
+ <td align="center" style="background-color:rgb(112, 128, 144)">SlateGrey</td>
+ <td align="left">rgb(112, 128, 144)</td>
+ <td align="left">#708090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue</td>
+ <td align="center" style="background-color:rgb( 30, 144, 255)">DodgerBlue</td>
+ <td align="left">rgb( 30, 144, 255)</td>
+ <td align="left">#1E90FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue1</td>
+ <td align="center" style="background-color:rgb( 30, 144, 255)">DodgerBlue1</td>
+ <td align="left">rgb( 30, 144, 255)</td>
+ <td align="left">#1E90FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue2</td>
+ <td align="center" style="background-color:rgb( 28, 134, 238)">DodgerBlue2</td>
+ <td align="left">rgb( 28, 134, 238)</td>
+ <td align="left">#1C86EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue4</td>
+ <td align="center" style="background-color:rgb( 16, 78, 139)">DodgerBlue4</td>
+ <td align="left">rgb( 16, 78, 139)</td>
+ <td align="left">#104E8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue3</td>
+ <td align="center" style="background-color:rgb( 24, 116, 205)">DodgerBlue3</td>
+ <td align="left">rgb( 24, 116, 205)</td>
+ <td align="left">#1874CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AliceBlue</td>
+ <td align="center" style="background-color:rgb(240, 248, 255)">AliceBlue</td>
+ <td align="left">rgb(240, 248, 255)</td>
+ <td align="left">#F0F8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue4</td>
+ <td align="center" style="background-color:rgb( 54, 100, 139)">SteelBlue4</td>
+ <td align="left">rgb( 54, 100, 139)</td>
+ <td align="left">#36648B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue</td>
+ <td align="center" style="background-color:rgb( 70, 130, 180)">SteelBlue</td>
+ <td align="left">rgb( 70, 130, 180)</td>
+ <td align="left">#4682B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue1</td>
+ <td align="center" style="background-color:rgb( 99, 184, 255)">SteelBlue1</td>
+ <td align="left">rgb( 99, 184, 255)</td>
+ <td align="left">#63B8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue2</td>
+ <td align="center" style="background-color:rgb( 92, 172, 238)">SteelBlue2</td>
+ <td align="left">rgb( 92, 172, 238)</td>
+ <td align="left">#5CACEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue3</td>
+ <td align="center" style="background-color:rgb( 79, 148, 205)">SteelBlue3</td>
+ <td align="left">rgb( 79, 148, 205)</td>
+ <td align="left">#4F94CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue4</td>
+ <td align="center" style="background-color:rgb( 74, 112, 139)">SkyBlue4</td>
+ <td align="left">rgb( 74, 112, 139)</td>
+ <td align="left">#4A708B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue1</td>
+ <td align="center" style="background-color:rgb(135, 206, 255)">SkyBlue1</td>
+ <td align="left">rgb(135, 206, 255)</td>
+ <td align="left">#87CEFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue2</td>
+ <td align="center" style="background-color:rgb(126, 192, 238)">SkyBlue2</td>
+ <td align="left">rgb(126, 192, 238)</td>
+ <td align="left">#7EC0EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue3</td>
+ <td align="center" style="background-color:rgb(108, 166, 205)">SkyBlue3</td>
+ <td align="left">rgb(108, 166, 205)</td>
+ <td align="left">#6CA6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue</td>
+ <td align="center" style="background-color:rgb(135, 206, 250)">LightSkyBlue</td>
+ <td align="left">rgb(135, 206, 250)</td>
+ <td align="left">#87CEFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue4</td>
+ <td align="center" style="background-color:rgb( 96, 123, 139)">LightSkyBlue4</td>
+ <td align="left">rgb( 96, 123, 139)</td>
+ <td align="left">#607B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue1</td>
+ <td align="center" style="background-color:rgb(176, 226, 255)">LightSkyBlue1</td>
+ <td align="left">rgb(176, 226, 255)</td>
+ <td align="left">#B0E2FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue2</td>
+ <td align="center" style="background-color:rgb(164, 211, 238)">LightSkyBlue2</td>
+ <td align="left">rgb(164, 211, 238)</td>
+ <td align="left">#A4D3EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue3</td>
+ <td align="center" style="background-color:rgb(141, 182, 205)">LightSkyBlue3</td>
+ <td align="left">rgb(141, 182, 205)</td>
+ <td align="left">#8DB6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue</td>
+ <td align="center" style="background-color:rgb(135, 206, 235)">SkyBlue</td>
+ <td align="left">rgb(135, 206, 235)</td>
+ <td align="left">#87CEEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue3</td>
+ <td align="center" style="background-color:rgb(154, 192, 205)">LightBlue3</td>
+ <td align="left">rgb(154, 192, 205)</td>
+ <td align="left">#9AC0CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue</td>
+ <td align="center" style="background-color:rgb( 0, 191, 255)">DeepSkyBlue</td>
+ <td align="left">rgb( 0, 191, 255)</td>
+ <td align="left">#00BFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue1</td>
+ <td align="center" style="background-color:rgb( 0, 191, 255)">DeepSkyBlue1</td>
+ <td align="left">rgb( 0, 191, 255)</td>
+ <td align="left">#00BFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue2</td>
+ <td align="center" style="background-color:rgb( 0, 178, 238)">DeepSkyBlue2</td>
+ <td align="left">rgb( 0, 178, 238)</td>
+ <td align="left">#00B2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue4</td>
+ <td align="center" style="background-color:rgb( 0, 104, 139)">DeepSkyBlue4</td>
+ <td align="left">rgb( 0, 104, 139)</td>
+ <td align="left">#00688B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue3</td>
+ <td align="center" style="background-color:rgb( 0, 154, 205)">DeepSkyBlue3</td>
+ <td align="left">rgb( 0, 154, 205)</td>
+ <td align="left">#009ACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue1</td>
+ <td align="center" style="background-color:rgb(191, 239, 255)">LightBlue1</td>
+ <td align="left">rgb(191, 239, 255)</td>
+ <td align="left">#BFEFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue2</td>
+ <td align="center" style="background-color:rgb(178, 223, 238)">LightBlue2</td>
+ <td align="left">rgb(178, 223, 238)</td>
+ <td align="left">#B2DFEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue</td>
+ <td align="center" style="background-color:rgb(173, 216, 230)">LightBlue</td>
+ <td align="left">rgb(173, 216, 230)</td>
+ <td align="left">#ADD8E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue4</td>
+ <td align="center" style="background-color:rgb(104, 131, 139)">LightBlue4</td>
+ <td align="left">rgb(104, 131, 139)</td>
+ <td align="left">#68838B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PowderBlue</td>
+ <td align="center" style="background-color:rgb(176, 224, 230)">PowderBlue</td>
+ <td align="left">rgb(176, 224, 230)</td>
+ <td align="left">#B0E0E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue1</td>
+ <td align="center" style="background-color:rgb(152, 245, 255)">CadetBlue1</td>
+ <td align="left">rgb(152, 245, 255)</td>
+ <td align="left">#98F5FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue2</td>
+ <td align="center" style="background-color:rgb(142, 229, 238)">CadetBlue2</td>
+ <td align="left">rgb(142, 229, 238)</td>
+ <td align="left">#8EE5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue3</td>
+ <td align="center" style="background-color:rgb(122, 197, 205)">CadetBlue3</td>
+ <td align="left">rgb(122, 197, 205)</td>
+ <td align="left">#7AC5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue4</td>
+ <td align="center" style="background-color:rgb( 83, 134, 139)">CadetBlue4</td>
+ <td align="left">rgb( 83, 134, 139)</td>
+ <td align="left">#53868B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise1</td>
+ <td align="center" style="background-color:rgb( 0, 245, 255)">turquoise1</td>
+ <td align="left">rgb( 0, 245, 255)</td>
+ <td align="left">#00F5FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise2</td>
+ <td align="center" style="background-color:rgb( 0, 229, 238)">turquoise2</td>
+ <td align="left">rgb( 0, 229, 238)</td>
+ <td align="left">#00E5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise3</td>
+ <td align="center" style="background-color:rgb( 0, 197, 205)">turquoise3</td>
+ <td align="left">rgb( 0, 197, 205)</td>
+ <td align="left">#00C5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise4</td>
+ <td align="center" style="background-color:rgb( 0, 134, 139)">turquoise4</td>
+ <td align="left">rgb( 0, 134, 139)</td>
+ <td align="left">#00868B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cadet blue</td>
+ <td align="center" style="background-color:rgb( 95, 158, 160)">cadet blue</td>
+ <td align="left">rgb( 95, 158, 160)</td>
+ <td align="left">#5F9EA0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue</td>
+ <td align="center" style="background-color:rgb( 95, 158, 160)">CadetBlue</td>
+ <td align="left">rgb( 95, 158, 160)</td>
+ <td align="left">#5F9EA0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkTurquoise</td>
+ <td align="center" style="background-color:rgb( 0, 206, 209)">DarkTurquoise</td>
+ <td align="left">rgb( 0, 206, 209)</td>
+ <td align="left">#00CED1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure</td>
+ <td align="center" style="background-color:rgb(240, 255, 255)">azure</td>
+ <td align="left">rgb(240, 255, 255)</td>
+ <td align="left">#F0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure1</td>
+ <td align="center" style="background-color:rgb(240, 255, 255)">azure1</td>
+ <td align="left">rgb(240, 255, 255)</td>
+ <td align="left">#F0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan</td>
+ <td align="center" style="background-color:rgb(224, 255, 255)">LightCyan</td>
+ <td align="left">rgb(224, 255, 255)</td>
+ <td align="left">#E0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan1</td>
+ <td align="center" style="background-color:rgb(224, 255, 255)">LightCyan1</td>
+ <td align="left">rgb(224, 255, 255)</td>
+ <td align="left">#E0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure2</td>
+ <td align="center" style="background-color:rgb(224, 238, 238)">azure2</td>
+ <td align="left">rgb(224, 238, 238)</td>
+ <td align="left">#E0EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan2</td>
+ <td align="center" style="background-color:rgb(209, 238, 238)">LightCyan2</td>
+ <td align="left">rgb(209, 238, 238)</td>
+ <td align="left">#D1EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise1</td>
+ <td align="center" style="background-color:rgb(187, 255, 255)">PaleTurquoise1</td>
+ <td align="left">rgb(187, 255, 255)</td>
+ <td align="left">#BBFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise</td>
+ <td align="center" style="background-color:rgb(175, 238, 238)">PaleTurquoise</td>
+ <td align="left">rgb(175, 238, 238)</td>
+ <td align="left">#AFEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise2</td>
+ <td align="center" style="background-color:rgb(174, 238, 238)">PaleTurquoise2</td>
+ <td align="left">rgb(174, 238, 238)</td>
+ <td align="left">#AEEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray1</td>
+ <td align="center" style="background-color:rgb(151, 255, 255)">DarkSlateGray1</td>
+ <td align="left">rgb(151, 255, 255)</td>
+ <td align="left">#97FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure3</td>
+ <td align="center" style="background-color:rgb(193, 205, 205)">azure3</td>
+ <td align="left">rgb(193, 205, 205)</td>
+ <td align="left">#C1CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan3</td>
+ <td align="center" style="background-color:rgb(180, 205, 205)">LightCyan3</td>
+ <td align="left">rgb(180, 205, 205)</td>
+ <td align="left">#B4CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray2</td>
+ <td align="center" style="background-color:rgb(141, 238, 238)">DarkSlateGray2</td>
+ <td align="left">rgb(141, 238, 238)</td>
+ <td align="left">#8DEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise3</td>
+ <td align="center" style="background-color:rgb(150, 205, 205)">PaleTurquoise3</td>
+ <td align="left">rgb(150, 205, 205)</td>
+ <td align="left">#96CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray3</td>
+ <td align="center" style="background-color:rgb(121, 205, 205)">DarkSlateGray3</td>
+ <td align="left">rgb(121, 205, 205)</td>
+ <td align="left">#79CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure4</td>
+ <td align="center" style="background-color:rgb(131, 139, 139)">azure4</td>
+ <td align="left">rgb(131, 139, 139)</td>
+ <td align="left">#838B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan4</td>
+ <td align="center" style="background-color:rgb(122, 139, 139)">LightCyan4</td>
+ <td align="left">rgb(122, 139, 139)</td>
+ <td align="left">#7A8B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aqua</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">aqua</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">cyan</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">cyan1</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise4</td>
+ <td align="center" style="background-color:rgb(102, 139, 139)">PaleTurquoise4</td>
+ <td align="left">rgb(102, 139, 139)</td>
+ <td align="left">#668B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 238)">cyan2</td>
+ <td align="left">rgb( 0, 238, 238)</td>
+ <td align="left">#00EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray4</td>
+ <td align="center" style="background-color:rgb( 82, 139, 139)">DarkSlateGray4</td>
+ <td align="left">rgb( 82, 139, 139)</td>
+ <td align="left">#528B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 205)">cyan3</td>
+ <td align="left">rgb( 0, 205, 205)</td>
+ <td align="left">#00CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 139)">cyan4</td>
+ <td align="left">rgb( 0, 139, 139)</td>
+ <td align="left">#008B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkCyan</td>
+ <td align="center" style="background-color:rgb( 0, 139, 139)">DarkCyan</td>
+ <td align="left">rgb( 0, 139, 139)</td>
+ <td align="left">#008B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">teal</td>
+ <td align="center" style="background-color:rgb( 0, 128, 128)">teal</td>
+ <td align="left">rgb( 0, 128, 128)</td>
+ <td align="left">#008080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray</td>
+ <td align="center" style="background-color:rgb( 47, 79, 79)">DarkSlateGray</td>
+ <td align="left">rgb( 47, 79, 79)</td>
+ <td align="left">#2F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGrey</td>
+ <td align="center" style="background-color:rgb( 47, 79, 79)">DarkSlateGrey</td>
+ <td align="left">rgb( 47, 79, 79)</td>
+ <td align="left">#2F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumTurquoise</td>
+ <td align="center" style="background-color:rgb( 72, 209, 204)">MediumTurquoise</td>
+ <td align="left">rgb( 72, 209, 204)</td>
+ <td align="left">#48D1CC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSeaGreen</td>
+ <td align="center" style="background-color:rgb( 32, 178, 170)">LightSeaGreen</td>
+ <td align="left">rgb( 32, 178, 170)</td>
+ <td align="left">#20B2AA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise</td>
+ <td align="center" style="background-color:rgb( 64, 224, 208)">turquoise</td>
+ <td align="left">rgb( 64, 224, 208)</td>
+ <td align="left">#40E0D0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine4</td>
+ <td align="center" style="background-color:rgb( 69, 139, 116)">aquamarine4</td>
+ <td align="left">rgb( 69, 139, 116)</td>
+ <td align="left">#458B74</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine</td>
+ <td align="center" style="background-color:rgb(127, 255, 212)">aquamarine</td>
+ <td align="left">rgb(127, 255, 212)</td>
+ <td align="left">#7FFFD4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine1</td>
+ <td align="center" style="background-color:rgb(127, 255, 212)">aquamarine1</td>
+ <td align="left">rgb(127, 255, 212)</td>
+ <td align="left">#7FFFD4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine2</td>
+ <td align="center" style="background-color:rgb(118, 238, 198)">aquamarine2</td>
+ <td align="left">rgb(118, 238, 198)</td>
+ <td align="left">#76EEC6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine3</td>
+ <td align="center" style="background-color:rgb(102, 205, 170)">aquamarine3</td>
+ <td align="left">rgb(102, 205, 170)</td>
+ <td align="left">#66CDAA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumAquamarine</td>
+ <td align="center" style="background-color:rgb(102, 205, 170)">MediumAquamarine</td>
+ <td align="left">rgb(102, 205, 170)</td>
+ <td align="left">#66CDAA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSpringGreen</td>
+ <td align="center" style="background-color:rgb( 0, 250, 154)">MediumSpringGreen</td>
+ <td align="left">rgb( 0, 250, 154)</td>
+ <td align="left">#00FA9A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MintCream</td>
+ <td align="center" style="background-color:rgb(245, 255, 250)">MintCream</td>
+ <td align="left">rgb(245, 255, 250)</td>
+ <td align="left">#F5FFFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen</td>
+ <td align="center" style="background-color:rgb( 0, 255, 127)">SpringGreen</td>
+ <td align="left">rgb( 0, 255, 127)</td>
+ <td align="left">#00FF7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 127)">SpringGreen1</td>
+ <td align="left">rgb( 0, 255, 127)</td>
+ <td align="left">#00FF7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 118)">SpringGreen2</td>
+ <td align="left">rgb( 0, 238, 118)</td>
+ <td align="left">#00EE76</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 102)">SpringGreen3</td>
+ <td align="left">rgb( 0, 205, 102)</td>
+ <td align="left">#00CD66</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 69)">SpringGreen4</td>
+ <td align="left">rgb( 0, 139, 69)</td>
+ <td align="left">#008B45</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSeaGreen</td>
+ <td align="center" style="background-color:rgb( 60, 179, 113)">MediumSeaGreen</td>
+ <td align="left">rgb( 60, 179, 113)</td>
+ <td align="left">#3CB371</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen</td>
+ <td align="center" style="background-color:rgb( 46, 139, 87)">SeaGreen</td>
+ <td align="left">rgb( 46, 139, 87)</td>
+ <td align="left">#2E8B57</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen3</td>
+ <td align="center" style="background-color:rgb( 67, 205, 128)">SeaGreen3</td>
+ <td align="left">rgb( 67, 205, 128)</td>
+ <td align="left">#43CD80</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen1</td>
+ <td align="center" style="background-color:rgb( 84, 255, 159)">SeaGreen1</td>
+ <td align="left">rgb( 84, 255, 159)</td>
+ <td align="left">#54FF9F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen4</td>
+ <td align="center" style="background-color:rgb( 46, 139, 87)">SeaGreen4</td>
+ <td align="left">rgb( 46, 139, 87)</td>
+ <td align="left">#2E8B57</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen2</td>
+ <td align="center" style="background-color:rgb( 78, 238, 148)">SeaGreen2</td>
+ <td align="left">rgb( 78, 238, 148)</td>
+ <td align="left">#4EEE94</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumForestGreen</td>
+ <td align="center" style="background-color:rgb( 50, 129, 75)">MediumForestGreen</td>
+ <td align="left">rgb( 50, 129, 75)</td>
+ <td align="left">#32814B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew</td>
+ <td align="center" style="background-color:rgb(240, 255, 240)">honeydew</td>
+ <td align="left">rgb(240, 255, 240)</td>
+ <td align="left">#F0FFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew1</td>
+ <td align="center" style="background-color:rgb(240, 255, 240)">honeydew1</td>
+ <td align="left">rgb(240, 255, 240)</td>
+ <td align="left">#F0FFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew2</td>
+ <td align="center" style="background-color:rgb(224, 238, 224)">honeydew2</td>
+ <td align="left">rgb(224, 238, 224)</td>
+ <td align="left">#E0EEE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen1</td>
+ <td align="center" style="background-color:rgb(193, 255, 193)">DarkSeaGreen1</td>
+ <td align="left">rgb(193, 255, 193)</td>
+ <td align="left">#C1FFC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen2</td>
+ <td align="center" style="background-color:rgb(180, 238, 180)">DarkSeaGreen2</td>
+ <td align="left">rgb(180, 238, 180)</td>
+ <td align="left">#B4EEB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen1</td>
+ <td align="center" style="background-color:rgb(154, 255, 154)">PaleGreen1</td>
+ <td align="left">rgb(154, 255, 154)</td>
+ <td align="left">#9AFF9A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen</td>
+ <td align="center" style="background-color:rgb(152, 251, 152)">PaleGreen</td>
+ <td align="left">rgb(152, 251, 152)</td>
+ <td align="left">#98FB98</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew3</td>
+ <td align="center" style="background-color:rgb(193, 205, 193)">honeydew3</td>
+ <td align="left">rgb(193, 205, 193)</td>
+ <td align="left">#C1CDC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGreen</td>
+ <td align="center" style="background-color:rgb(144, 238, 144)">LightGreen</td>
+ <td align="left">rgb(144, 238, 144)</td>
+ <td align="left">#90EE90</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen2</td>
+ <td align="center" style="background-color:rgb(144, 238, 144)">PaleGreen2</td>
+ <td align="left">rgb(144, 238, 144)</td>
+ <td align="left">#90EE90</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen3</td>
+ <td align="center" style="background-color:rgb(155, 205, 155)">DarkSeaGreen3</td>
+ <td align="left">rgb(155, 205, 155)</td>
+ <td align="left">#9BCD9B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen</td>
+ <td align="center" style="background-color:rgb(143, 188, 143)">DarkSeaGreen</td>
+ <td align="left">rgb(143, 188, 143)</td>
+ <td align="left">#8FBC8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen3</td>
+ <td align="center" style="background-color:rgb(124, 205, 124)">PaleGreen3</td>
+ <td align="left">rgb(124, 205, 124)</td>
+ <td align="left">#7CCD7C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew4</td>
+ <td align="center" style="background-color:rgb(131, 139, 131)">honeydew4</td>
+ <td align="left">rgb(131, 139, 131)</td>
+ <td align="left">#838B83</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 0)">green1</td>
+ <td align="left">rgb( 0, 255, 0)</td>
+ <td align="left">#00FF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">lime</td>
+ <td align="center" style="background-color:rgb( 0, 255, 0)">lime</td>
+ <td align="left">rgb( 0, 255, 0)</td>
+ <td align="left">#00FF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LimeGreen</td>
+ <td align="center" style="background-color:rgb( 50, 205, 50)">LimeGreen</td>
+ <td align="left">rgb( 50, 205, 50)</td>
+ <td align="left">#32CD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen4</td>
+ <td align="center" style="background-color:rgb(105, 139, 105)">DarkSeaGreen4</td>
+ <td align="left">rgb(105, 139, 105)</td>
+ <td align="left">#698B69</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 0)">green2</td>
+ <td align="left">rgb( 0, 238, 0)</td>
+ <td align="left">#00EE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen4</td>
+ <td align="center" style="background-color:rgb( 84, 139, 84)">PaleGreen4</td>
+ <td align="left">rgb( 84, 139, 84)</td>
+ <td align="left">#548B54</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 0)">green3</td>
+ <td align="left">rgb( 0, 205, 0)</td>
+ <td align="left">#00CD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ForestGreen</td>
+ <td align="center" style="background-color:rgb( 34, 139, 34)">ForestGreen</td>
+ <td align="left">rgb( 34, 139, 34)</td>
+ <td align="left">#228B22</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 0)">green4</td>
+ <td align="left">rgb( 0, 139, 0)</td>
+ <td align="left">#008B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green</td>
+ <td align="center" style="background-color:rgb( 0, 128, 0)">green</td>
+ <td align="left">rgb( 0, 128, 0)</td>
+ <td align="left">#008000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGreen</td>
+ <td align="center" style="background-color:rgb( 0, 100, 0)">DarkGreen</td>
+ <td align="left">rgb( 0, 100, 0)</td>
+ <td align="left">#006400</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LawnGreen</td>
+ <td align="center" style="background-color:rgb(124, 252, 0)">LawnGreen</td>
+ <td align="left">rgb(124, 252, 0)</td>
+ <td align="left">#7CFC00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse</td>
+ <td align="center" style="background-color:rgb(127, 255, 0)">chartreuse</td>
+ <td align="left">rgb(127, 255, 0)</td>
+ <td align="left">#7FFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse1</td>
+ <td align="center" style="background-color:rgb(127, 255, 0)">chartreuse1</td>
+ <td align="left">rgb(127, 255, 0)</td>
+ <td align="left">#7FFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse2</td>
+ <td align="center" style="background-color:rgb(118, 238, 0)">chartreuse2</td>
+ <td align="left">rgb(118, 238, 0)</td>
+ <td align="left">#76EE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse3</td>
+ <td align="center" style="background-color:rgb(102, 205, 0)">chartreuse3</td>
+ <td align="left">rgb(102, 205, 0)</td>
+ <td align="left">#66CD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse4</td>
+ <td align="center" style="background-color:rgb( 69, 139, 0)">chartreuse4</td>
+ <td align="left">rgb( 69, 139, 0)</td>
+ <td align="left">#458B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">GreenYellow</td>
+ <td align="center" style="background-color:rgb(173, 255, 47)">GreenYellow</td>
+ <td align="left">rgb(173, 255, 47)</td>
+ <td align="left">#ADFF2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen3</td>
+ <td align="center" style="background-color:rgb(162, 205, 90)">DarkOliveGreen3</td>
+ <td align="left">rgb(162, 205, 90)</td>
+ <td align="left">#A2CD5A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen1</td>
+ <td align="center" style="background-color:rgb(202, 255, 112)">DarkOliveGreen1</td>
+ <td align="left">rgb(202, 255, 112)</td>
+ <td align="left">#CAFF70</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen2</td>
+ <td align="center" style="background-color:rgb(188, 238, 104)">DarkOliveGreen2</td>
+ <td align="left">rgb(188, 238, 104)</td>
+ <td align="left">#BCEE68</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen4</td>
+ <td align="center" style="background-color:rgb(110, 139, 61)">DarkOliveGreen4</td>
+ <td align="left">rgb(110, 139, 61)</td>
+ <td align="left">#6E8B3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen</td>
+ <td align="center" style="background-color:rgb( 85, 107, 47)">DarkOliveGreen</td>
+ <td align="left">rgb( 85, 107, 47)</td>
+ <td align="left">#556B2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab</td>
+ <td align="center" style="background-color:rgb(107, 142, 35)">OliveDrab</td>
+ <td align="left">rgb(107, 142, 35)</td>
+ <td align="left">#6B8E23</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab1</td>
+ <td align="center" style="background-color:rgb(192, 255, 62)">OliveDrab1</td>
+ <td align="left">rgb(192, 255, 62)</td>
+ <td align="left">#C0FF3E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab2</td>
+ <td align="center" style="background-color:rgb(179, 238, 58)">OliveDrab2</td>
+ <td align="left">rgb(179, 238, 58)</td>
+ <td align="left">#B3EE3A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab3</td>
+ <td align="center" style="background-color:rgb(154, 205, 50)">OliveDrab3</td>
+ <td align="left">rgb(154, 205, 50)</td>
+ <td align="left">#9ACD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">YellowGreen</td>
+ <td align="center" style="background-color:rgb(154, 205, 50)">YellowGreen</td>
+ <td align="left">rgb(154, 205, 50)</td>
+ <td align="left">#9ACD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab4</td>
+ <td align="center" style="background-color:rgb(105, 139, 34)">OliveDrab4</td>
+ <td align="left">rgb(105, 139, 34)</td>
+ <td align="left">#698B22</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory</td>
+ <td align="center" style="background-color:rgb(255, 255, 240)">ivory</td>
+ <td align="left">rgb(255, 255, 240)</td>
+ <td align="left">#FFFFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory1</td>
+ <td align="center" style="background-color:rgb(255, 255, 240)">ivory1</td>
+ <td align="left">rgb(255, 255, 240)</td>
+ <td align="left">#FFFFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow</td>
+ <td align="center" style="background-color:rgb(255, 255, 224)">LightYellow</td>
+ <td align="left">rgb(255, 255, 224)</td>
+ <td align="left">#FFFFE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow1</td>
+ <td align="center" style="background-color:rgb(255, 255, 224)">LightYellow1</td>
+ <td align="left">rgb(255, 255, 224)</td>
+ <td align="left">#FFFFE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">beige</td>
+ <td align="center" style="background-color:rgb(245, 245, 220)">beige</td>
+ <td align="left">rgb(245, 245, 220)</td>
+ <td align="left">#F5F5DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory2</td>
+ <td align="center" style="background-color:rgb(238, 238, 224)">ivory2</td>
+ <td align="left">rgb(238, 238, 224)</td>
+ <td align="left">#EEEEE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrodYellow</td>
+ <td align="center" style="background-color:rgb(250, 250, 210)">LightGoldenrodYellow</td>
+ <td align="left">rgb(250, 250, 210)</td>
+ <td align="left">#FAFAD2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow2</td>
+ <td align="center" style="background-color:rgb(238, 238, 209)">LightYellow2</td>
+ <td align="left">rgb(238, 238, 209)</td>
+ <td align="left">#EEEED1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory3</td>
+ <td align="center" style="background-color:rgb(205, 205, 193)">ivory3</td>
+ <td align="left">rgb(205, 205, 193)</td>
+ <td align="left">#CDCDC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow3</td>
+ <td align="center" style="background-color:rgb(205, 205, 180)">LightYellow3</td>
+ <td align="left">rgb(205, 205, 180)</td>
+ <td align="left">#CDCDB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory4</td>
+ <td align="center" style="background-color:rgb(139, 139, 131)">ivory4</td>
+ <td align="left">rgb(139, 139, 131)</td>
+ <td align="left">#8B8B83</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow4</td>
+ <td align="center" style="background-color:rgb(139, 139, 122)">LightYellow4</td>
+ <td align="left">rgb(139, 139, 122)</td>
+ <td align="left">#8B8B7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow</td>
+ <td align="center" style="background-color:rgb(255, 255, 0)">yellow</td>
+ <td align="left">rgb(255, 255, 0)</td>
+ <td align="left">#FFFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow1</td>
+ <td align="center" style="background-color:rgb(255, 255, 0)">yellow1</td>
+ <td align="left">rgb(255, 255, 0)</td>
+ <td align="left">#FFFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow2</td>
+ <td align="center" style="background-color:rgb(238, 238, 0)">yellow2</td>
+ <td align="left">rgb(238, 238, 0)</td>
+ <td align="left">#EEEE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow3</td>
+ <td align="center" style="background-color:rgb(205, 205, 0)">yellow3</td>
+ <td align="left">rgb(205, 205, 0)</td>
+ <td align="left">#CDCD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow4</td>
+ <td align="center" style="background-color:rgb(139, 139, 0)">yellow4</td>
+ <td align="left">rgb(139, 139, 0)</td>
+ <td align="left">#8B8B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">olive</td>
+ <td align="center" style="background-color:rgb(128, 128, 0)">olive</td>
+ <td align="left">rgb(128, 128, 0)</td>
+ <td align="left">#808000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkKhaki</td>
+ <td align="center" style="background-color:rgb(189, 183, 107)">DarkKhaki</td>
+ <td align="left">rgb(189, 183, 107)</td>
+ <td align="left">#BDB76B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki2</td>
+ <td align="center" style="background-color:rgb(238, 230, 133)">khaki2</td>
+ <td align="left">rgb(238, 230, 133)</td>
+ <td align="left">#EEE685</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon4</td>
+ <td align="center" style="background-color:rgb(139, 137, 112)">LemonChiffon4</td>
+ <td align="left">rgb(139, 137, 112)</td>
+ <td align="left">#8B8970</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki1</td>
+ <td align="center" style="background-color:rgb(255, 246, 143)">khaki1</td>
+ <td align="left">rgb(255, 246, 143)</td>
+ <td align="left">#FFF68F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki3</td>
+ <td align="center" style="background-color:rgb(205, 198, 115)">khaki3</td>
+ <td align="left">rgb(205, 198, 115)</td>
+ <td align="left">#CDC673</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki4</td>
+ <td align="center" style="background-color:rgb(139, 134, 78)">khaki4</td>
+ <td align="left">rgb(139, 134, 78)</td>
+ <td align="left">#8B864E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGoldenrod</td>
+ <td align="center" style="background-color:rgb(238, 232, 170)">PaleGoldenrod</td>
+ <td align="left">rgb(238, 232, 170)</td>
+ <td align="left">#EEE8AA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon</td>
+ <td align="center" style="background-color:rgb(255, 250, 205)">LemonChiffon</td>
+ <td align="left">rgb(255, 250, 205)</td>
+ <td align="left">#FFFACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon1</td>
+ <td align="center" style="background-color:rgb(255, 250, 205)">LemonChiffon1</td>
+ <td align="left">rgb(255, 250, 205)</td>
+ <td align="left">#FFFACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki</td>
+ <td align="center" style="background-color:rgb(240, 230, 140)">khaki</td>
+ <td align="left">rgb(240, 230, 140)</td>
+ <td align="left">#F0E68C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon3</td>
+ <td align="center" style="background-color:rgb(205, 201, 165)">LemonChiffon3</td>
+ <td align="left">rgb(205, 201, 165)</td>
+ <td align="left">#CDC9A5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon2</td>
+ <td align="center" style="background-color:rgb(238, 233, 191)">LemonChiffon2</td>
+ <td align="left">rgb(238, 233, 191)</td>
+ <td align="left">#EEE9BF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumGoldenRod</td>
+ <td align="center" style="background-color:rgb(209, 193, 102)">MediumGoldenRod</td>
+ <td align="left">rgb(209, 193, 102)</td>
+ <td align="left">#D1C166</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk4</td>
+ <td align="center" style="background-color:rgb(139, 136, 120)">cornsilk4</td>
+ <td align="left">rgb(139, 136, 120)</td>
+ <td align="left">#8B8878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold</td>
+ <td align="center" style="background-color:rgb(255, 215, 0)">gold</td>
+ <td align="left">rgb(255, 215, 0)</td>
+ <td align="left">#FFD700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold1</td>
+ <td align="center" style="background-color:rgb(255, 215, 0)">gold1</td>
+ <td align="left">rgb(255, 215, 0)</td>
+ <td align="left">#FFD700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold2</td>
+ <td align="center" style="background-color:rgb(238, 201, 0)">gold2</td>
+ <td align="left">rgb(238, 201, 0)</td>
+ <td align="left">#EEC900</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold3</td>
+ <td align="center" style="background-color:rgb(205, 173, 0)">gold3</td>
+ <td align="left">rgb(205, 173, 0)</td>
+ <td align="left">#CDAD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold4</td>
+ <td align="center" style="background-color:rgb(139, 117, 0)">gold4</td>
+ <td align="left">rgb(139, 117, 0)</td>
+ <td align="left">#8B7500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod</td>
+ <td align="center" style="background-color:rgb(238, 221, 130)">LightGoldenrod</td>
+ <td align="left">rgb(238, 221, 130)</td>
+ <td align="left">#EEDD82</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 129, 76)">LightGoldenrod4</td>
+ <td align="left">rgb(139, 129, 76)</td>
+ <td align="left">#8B814C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 236, 139)">LightGoldenrod1</td>
+ <td align="left">rgb(255, 236, 139)</td>
+ <td align="left">#FFEC8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 190, 112)">LightGoldenrod3</td>
+ <td align="left">rgb(205, 190, 112)</td>
+ <td align="left">#CDBE70</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 220, 130)">LightGoldenrod2</td>
+ <td align="left">rgb(238, 220, 130)</td>
+ <td align="left">#EEDC82</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk3</td>
+ <td align="center" style="background-color:rgb(205, 200, 177)">cornsilk3</td>
+ <td align="left">rgb(205, 200, 177)</td>
+ <td align="left">#CDC8B1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk2</td>
+ <td align="center" style="background-color:rgb(238, 232, 205)">cornsilk2</td>
+ <td align="left">rgb(238, 232, 205)</td>
+ <td align="left">#EEE8CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk</td>
+ <td align="center" style="background-color:rgb(255, 248, 220)">cornsilk</td>
+ <td align="left">rgb(255, 248, 220)</td>
+ <td align="left">#FFF8DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk1</td>
+ <td align="center" style="background-color:rgb(255, 248, 220)">cornsilk1</td>
+ <td align="left">rgb(255, 248, 220)</td>
+ <td align="left">#FFF8DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod</td>
+ <td align="center" style="background-color:rgb(218, 165, 32)">goldenrod</td>
+ <td align="left">rgb(218, 165, 32)</td>
+ <td align="left">#DAA520</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 193, 37)">goldenrod1</td>
+ <td align="left">rgb(255, 193, 37)</td>
+ <td align="left">#FFC125</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 180, 34)">goldenrod2</td>
+ <td align="left">rgb(238, 180, 34)</td>
+ <td align="left">#EEB422</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 155, 29)">goldenrod3</td>
+ <td align="left">rgb(205, 155, 29)</td>
+ <td align="left">#CD9B1D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 105, 20)">goldenrod4</td>
+ <td align="left">rgb(139, 105, 20)</td>
+ <td align="left">#8B6914</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod</td>
+ <td align="center" style="background-color:rgb(184, 134, 11)">DarkGoldenrod</td>
+ <td align="left">rgb(184, 134, 11)</td>
+ <td align="left">#B8860B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 185, 15)">DarkGoldenrod1</td>
+ <td align="left">rgb(255, 185, 15)</td>
+ <td align="left">#FFB90F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 173, 14)">DarkGoldenrod2</td>
+ <td align="left">rgb(238, 173, 14)</td>
+ <td align="left">#EEAD0E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 149, 12)">DarkGoldenrod3</td>
+ <td align="left">rgb(205, 149, 12)</td>
+ <td align="left">#CD950C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 101, 8)">DarkGoldenrod4</td>
+ <td align="left">rgb(139, 101, 8)</td>
+ <td align="left">#8B6508</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">FloralWhite</td>
+ <td align="center" style="background-color:rgb(255, 250, 240)">FloralWhite</td>
+ <td align="left">rgb(255, 250, 240)</td>
+ <td align="left">#FFFAF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat2</td>
+ <td align="center" style="background-color:rgb(238, 216, 174)">wheat2</td>
+ <td align="left">rgb(238, 216, 174)</td>
+ <td align="left">#EED8AE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OldLace</td>
+ <td align="center" style="background-color:rgb(253, 245, 230)">OldLace</td>
+ <td align="left">rgb(253, 245, 230)</td>
+ <td align="left">#FDF5E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat</td>
+ <td align="center" style="background-color:rgb(245, 222, 179)">wheat</td>
+ <td align="left">rgb(245, 222, 179)</td>
+ <td align="left">#F5DEB3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat1</td>
+ <td align="center" style="background-color:rgb(255, 231, 186)">wheat1</td>
+ <td align="left">rgb(255, 231, 186)</td>
+ <td align="left">#FFE7BA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat3</td>
+ <td align="center" style="background-color:rgb(205, 186, 150)">wheat3</td>
+ <td align="left">rgb(205, 186, 150)</td>
+ <td align="left">#CDBA96</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange</td>
+ <td align="center" style="background-color:rgb(255, 165, 0)">orange</td>
+ <td align="left">rgb(255, 165, 0)</td>
+ <td align="left">#FFA500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange1</td>
+ <td align="center" style="background-color:rgb(255, 165, 0)">orange1</td>
+ <td align="left">rgb(255, 165, 0)</td>
+ <td align="left">#FFA500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange2</td>
+ <td align="center" style="background-color:rgb(238, 154, 0)">orange2</td>
+ <td align="left">rgb(238, 154, 0)</td>
+ <td align="left">#EE9A00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange3</td>
+ <td align="center" style="background-color:rgb(205, 133, 0)">orange3</td>
+ <td align="left">rgb(205, 133, 0)</td>
+ <td align="left">#CD8500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange4</td>
+ <td align="center" style="background-color:rgb(139, 90, 0)">orange4</td>
+ <td align="left">rgb(139, 90, 0)</td>
+ <td align="left">#8B5A00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat4</td>
+ <td align="center" style="background-color:rgb(139, 126, 102)">wheat4</td>
+ <td align="left">rgb(139, 126, 102)</td>
+ <td align="left">#8B7E66</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">moccasin</td>
+ <td align="center" style="background-color:rgb(255, 228, 181)">moccasin</td>
+ <td align="left">rgb(255, 228, 181)</td>
+ <td align="left">#FFE4B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PapayaWhip</td>
+ <td align="center" style="background-color:rgb(255, 239, 213)">PapayaWhip</td>
+ <td align="left">rgb(255, 239, 213)</td>
+ <td align="left">#FFEFD5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite3</td>
+ <td align="center" style="background-color:rgb(205, 179, 139)">NavajoWhite3</td>
+ <td align="left">rgb(205, 179, 139)</td>
+ <td align="left">#CDB38B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">BlanchedAlmond</td>
+ <td align="center" style="background-color:rgb(255, 235, 205)">BlanchedAlmond</td>
+ <td align="left">rgb(255, 235, 205)</td>
+ <td align="left">#FFEBCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite</td>
+ <td align="center" style="background-color:rgb(255, 222, 173)">NavajoWhite</td>
+ <td align="left">rgb(255, 222, 173)</td>
+ <td align="left">#FFDEAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite1</td>
+ <td align="center" style="background-color:rgb(255, 222, 173)">NavajoWhite1</td>
+ <td align="left">rgb(255, 222, 173)</td>
+ <td align="left">#FFDEAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite2</td>
+ <td align="center" style="background-color:rgb(238, 207, 161)">NavajoWhite2</td>
+ <td align="left">rgb(238, 207, 161)</td>
+ <td align="left">#EECFA1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite4</td>
+ <td align="center" style="background-color:rgb(139, 121, 94)">NavajoWhite4</td>
+ <td align="left">rgb(139, 121, 94)</td>
+ <td align="left">#8B795E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite4</td>
+ <td align="center" style="background-color:rgb(139, 131, 120)">AntiqueWhite4</td>
+ <td align="left">rgb(139, 131, 120)</td>
+ <td align="left">#8B8378</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite</td>
+ <td align="center" style="background-color:rgb(250, 235, 215)">AntiqueWhite</td>
+ <td align="left">rgb(250, 235, 215)</td>
+ <td align="left">#FAEBD7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan</td>
+ <td align="center" style="background-color:rgb(210, 180, 140)">tan</td>
+ <td align="left">rgb(210, 180, 140)</td>
+ <td align="left">#D2B48C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque4</td>
+ <td align="center" style="background-color:rgb(139, 125, 107)">bisque4</td>
+ <td align="left">rgb(139, 125, 107)</td>
+ <td align="left">#8B7D6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood</td>
+ <td align="center" style="background-color:rgb(222, 184, 135)">burlywood</td>
+ <td align="left">rgb(222, 184, 135)</td>
+ <td align="left">#DEB887</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite2</td>
+ <td align="center" style="background-color:rgb(238, 223, 204)">AntiqueWhite2</td>
+ <td align="left">rgb(238, 223, 204)</td>
+ <td align="left">#EEDFCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood1</td>
+ <td align="center" style="background-color:rgb(255, 211, 155)">burlywood1</td>
+ <td align="left">rgb(255, 211, 155)</td>
+ <td align="left">#FFD39B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood3</td>
+ <td align="center" style="background-color:rgb(205, 170, 125)">burlywood3</td>
+ <td align="left">rgb(205, 170, 125)</td>
+ <td align="left">#CDAA7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood2</td>
+ <td align="center" style="background-color:rgb(238, 197, 145)">burlywood2</td>
+ <td align="left">rgb(238, 197, 145)</td>
+ <td align="left">#EEC591</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite1</td>
+ <td align="center" style="background-color:rgb(255, 239, 219)">AntiqueWhite1</td>
+ <td align="left">rgb(255, 239, 219)</td>
+ <td align="left">#FFEFDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood4</td>
+ <td align="center" style="background-color:rgb(139, 115, 85)">burlywood4</td>
+ <td align="left">rgb(139, 115, 85)</td>
+ <td align="left">#8B7355</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite3</td>
+ <td align="center" style="background-color:rgb(205, 192, 176)">AntiqueWhite3</td>
+ <td align="left">rgb(205, 192, 176)</td>
+ <td align="left">#CDC0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange</td>
+ <td align="center" style="background-color:rgb(255, 140, 0)">DarkOrange</td>
+ <td align="left">rgb(255, 140, 0)</td>
+ <td align="left">#FF8C00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque2</td>
+ <td align="center" style="background-color:rgb(238, 213, 183)">bisque2</td>
+ <td align="left">rgb(238, 213, 183)</td>
+ <td align="left">#EED5B7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque</td>
+ <td align="center" style="background-color:rgb(255, 228, 196)">bisque</td>
+ <td align="left">rgb(255, 228, 196)</td>
+ <td align="left">#FFE4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque1</td>
+ <td align="center" style="background-color:rgb(255, 228, 196)">bisque1</td>
+ <td align="left">rgb(255, 228, 196)</td>
+ <td align="left">#FFE4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque3</td>
+ <td align="center" style="background-color:rgb(205, 183, 158)">bisque3</td>
+ <td align="left">rgb(205, 183, 158)</td>
+ <td align="left">#CDB79E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange1</td>
+ <td align="center" style="background-color:rgb(255, 127, 0)">DarkOrange1</td>
+ <td align="left">rgb(255, 127, 0)</td>
+ <td align="left">#FF7F00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">linen</td>
+ <td align="center" style="background-color:rgb(250, 240, 230)">linen</td>
+ <td align="left">rgb(250, 240, 230)</td>
+ <td align="left">#FAF0E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange2</td>
+ <td align="center" style="background-color:rgb(238, 118, 0)">DarkOrange2</td>
+ <td align="left">rgb(238, 118, 0)</td>
+ <td align="left">#EE7600</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange3</td>
+ <td align="center" style="background-color:rgb(205, 102, 0)">DarkOrange3</td>
+ <td align="left">rgb(205, 102, 0)</td>
+ <td align="left">#CD6600</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange4</td>
+ <td align="center" style="background-color:rgb(139, 69, 0)">DarkOrange4</td>
+ <td align="left">rgb(139, 69, 0)</td>
+ <td align="left">#8B4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">peru</td>
+ <td align="center" style="background-color:rgb(205, 133, 63)">peru</td>
+ <td align="left">rgb(205, 133, 63)</td>
+ <td align="left">#CD853F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan1</td>
+ <td align="center" style="background-color:rgb(255, 165, 79)">tan1</td>
+ <td align="left">rgb(255, 165, 79)</td>
+ <td align="left">#FFA54F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan2</td>
+ <td align="center" style="background-color:rgb(238, 154, 73)">tan2</td>
+ <td align="left">rgb(238, 154, 73)</td>
+ <td align="left">#EE9A49</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan3</td>
+ <td align="center" style="background-color:rgb(205, 133, 63)">tan3</td>
+ <td align="left">rgb(205, 133, 63)</td>
+ <td align="left">#CD853F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan4</td>
+ <td align="center" style="background-color:rgb(139, 90, 43)">tan4</td>
+ <td align="left">rgb(139, 90, 43)</td>
+ <td align="left">#8B5A2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff</td>
+ <td align="center" style="background-color:rgb(255, 218, 185)">PeachPuff</td>
+ <td align="left">rgb(255, 218, 185)</td>
+ <td align="left">#FFDAB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff1</td>
+ <td align="center" style="background-color:rgb(255, 218, 185)">PeachPuff1</td>
+ <td align="left">rgb(255, 218, 185)</td>
+ <td align="left">#FFDAB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff4</td>
+ <td align="center" style="background-color:rgb(139, 119, 101)">PeachPuff4</td>
+ <td align="left">rgb(139, 119, 101)</td>
+ <td align="left">#8B7765</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff2</td>
+ <td align="center" style="background-color:rgb(238, 203, 173)">PeachPuff2</td>
+ <td align="left">rgb(238, 203, 173)</td>
+ <td align="left">#EECBAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff3</td>
+ <td align="center" style="background-color:rgb(205, 175, 149)">PeachPuff3</td>
+ <td align="left">rgb(205, 175, 149)</td>
+ <td align="left">#CDAF95</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SandyBrown</td>
+ <td align="center" style="background-color:rgb(244, 164, 96)">SandyBrown</td>
+ <td align="left">rgb(244, 164, 96)</td>
+ <td align="left">#F4A460</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell4</td>
+ <td align="center" style="background-color:rgb(139, 134, 130)">seashell4</td>
+ <td align="left">rgb(139, 134, 130)</td>
+ <td align="left">#8B8682</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell2</td>
+ <td align="center" style="background-color:rgb(238, 229, 222)">seashell2</td>
+ <td align="left">rgb(238, 229, 222)</td>
+ <td align="left">#EEE5DE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell3</td>
+ <td align="center" style="background-color:rgb(205, 197, 191)">seashell3</td>
+ <td align="left">rgb(205, 197, 191)</td>
+ <td align="left">#CDC5BF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate</td>
+ <td align="center" style="background-color:rgb(210, 105, 30)">chocolate</td>
+ <td align="left">rgb(210, 105, 30)</td>
+ <td align="left">#D2691E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate1</td>
+ <td align="center" style="background-color:rgb(255, 127, 36)">chocolate1</td>
+ <td align="left">rgb(255, 127, 36)</td>
+ <td align="left">#FF7F24</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate2</td>
+ <td align="center" style="background-color:rgb(238, 118, 33)">chocolate2</td>
+ <td align="left">rgb(238, 118, 33)</td>
+ <td align="left">#EE7621</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate3</td>
+ <td align="center" style="background-color:rgb(205, 102, 29)">chocolate3</td>
+ <td align="left">rgb(205, 102, 29)</td>
+ <td align="left">#CD661D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate4</td>
+ <td align="center" style="background-color:rgb(139, 69, 19)">chocolate4</td>
+ <td align="left">rgb(139, 69, 19)</td>
+ <td align="left">#8B4513</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SaddleBrown</td>
+ <td align="center" style="background-color:rgb(139, 69, 19)">SaddleBrown</td>
+ <td align="left">rgb(139, 69, 19)</td>
+ <td align="left">#8B4513</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell</td>
+ <td align="center" style="background-color:rgb(255, 245, 238)">seashell</td>
+ <td align="left">rgb(255, 245, 238)</td>
+ <td align="left">#FFF5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell1</td>
+ <td align="center" style="background-color:rgb(255, 245, 238)">seashell1</td>
+ <td align="left">rgb(255, 245, 238)</td>
+ <td align="left">#FFF5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna4</td>
+ <td align="center" style="background-color:rgb(139, 71, 38)">sienna4</td>
+ <td align="left">rgb(139, 71, 38)</td>
+ <td align="left">#8B4726</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna</td>
+ <td align="center" style="background-color:rgb(160, 82, 45)">sienna</td>
+ <td align="left">rgb(160, 82, 45)</td>
+ <td align="left">#A0522D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna1</td>
+ <td align="center" style="background-color:rgb(255, 130, 71)">sienna1</td>
+ <td align="left">rgb(255, 130, 71)</td>
+ <td align="left">#FF8247</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna2</td>
+ <td align="center" style="background-color:rgb(238, 121, 66)">sienna2</td>
+ <td align="left">rgb(238, 121, 66)</td>
+ <td align="left">#EE7942</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna3</td>
+ <td align="center" style="background-color:rgb(205, 104, 57)">sienna3</td>
+ <td align="left">rgb(205, 104, 57)</td>
+ <td align="left">#CD6839</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon3</td>
+ <td align="center" style="background-color:rgb(205, 129, 98)">LightSalmon3</td>
+ <td align="left">rgb(205, 129, 98)</td>
+ <td align="left">#CD8162</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon</td>
+ <td align="center" style="background-color:rgb(255, 160, 122)">LightSalmon</td>
+ <td align="left">rgb(255, 160, 122)</td>
+ <td align="left">#FFA07A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon1</td>
+ <td align="center" style="background-color:rgb(255, 160, 122)">LightSalmon1</td>
+ <td align="left">rgb(255, 160, 122)</td>
+ <td align="left">#FFA07A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon4</td>
+ <td align="center" style="background-color:rgb(139, 87, 66)">LightSalmon4</td>
+ <td align="left">rgb(139, 87, 66)</td>
+ <td align="left">#8B5742</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon2</td>
+ <td align="center" style="background-color:rgb(238, 149, 114)">LightSalmon2</td>
+ <td align="left">rgb(238, 149, 114)</td>
+ <td align="left">#EE9572</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral</td>
+ <td align="center" style="background-color:rgb(255, 127, 80)">coral</td>
+ <td align="left">rgb(255, 127, 80)</td>
+ <td align="left">#FF7F50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed</td>
+ <td align="center" style="background-color:rgb(255, 69, 0)">OrangeRed</td>
+ <td align="left">rgb(255, 69, 0)</td>
+ <td align="left">#FF4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed1</td>
+ <td align="center" style="background-color:rgb(255, 69, 0)">OrangeRed1</td>
+ <td align="left">rgb(255, 69, 0)</td>
+ <td align="left">#FF4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed2</td>
+ <td align="center" style="background-color:rgb(238, 64, 0)">OrangeRed2</td>
+ <td align="left">rgb(238, 64, 0)</td>
+ <td align="left">#EE4000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed3</td>
+ <td align="center" style="background-color:rgb(205, 55, 0)">OrangeRed3</td>
+ <td align="left">rgb(205, 55, 0)</td>
+ <td align="left">#CD3700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed4</td>
+ <td align="center" style="background-color:rgb(139, 37, 0)">OrangeRed4</td>
+ <td align="left">rgb(139, 37, 0)</td>
+ <td align="left">#8B2500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSalmon</td>
+ <td align="center" style="background-color:rgb(233, 150, 122)">DarkSalmon</td>
+ <td align="left">rgb(233, 150, 122)</td>
+ <td align="left">#E9967A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon1</td>
+ <td align="center" style="background-color:rgb(255, 140, 105)">salmon1</td>
+ <td align="left">rgb(255, 140, 105)</td>
+ <td align="left">#FF8C69</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon2</td>
+ <td align="center" style="background-color:rgb(238, 130, 98)">salmon2</td>
+ <td align="left">rgb(238, 130, 98)</td>
+ <td align="left">#EE8262</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon3</td>
+ <td align="center" style="background-color:rgb(205, 112, 84)">salmon3</td>
+ <td align="left">rgb(205, 112, 84)</td>
+ <td align="left">#CD7054</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon4</td>
+ <td align="center" style="background-color:rgb(139, 76, 57)">salmon4</td>
+ <td align="left">rgb(139, 76, 57)</td>
+ <td align="left">#8B4C39</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral1</td>
+ <td align="center" style="background-color:rgb(255, 114, 86)">coral1</td>
+ <td align="left">rgb(255, 114, 86)</td>
+ <td align="left">#FF7256</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral2</td>
+ <td align="center" style="background-color:rgb(238, 106, 80)">coral2</td>
+ <td align="left">rgb(238, 106, 80)</td>
+ <td align="left">#EE6A50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral3</td>
+ <td align="center" style="background-color:rgb(205, 91, 69)">coral3</td>
+ <td align="left">rgb(205, 91, 69)</td>
+ <td align="left">#CD5B45</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral4</td>
+ <td align="center" style="background-color:rgb(139, 62, 47)">coral4</td>
+ <td align="left">rgb(139, 62, 47)</td>
+ <td align="left">#8B3E2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato4</td>
+ <td align="center" style="background-color:rgb(139, 54, 38)">tomato4</td>
+ <td align="left">rgb(139, 54, 38)</td>
+ <td align="left">#8B3626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato</td>
+ <td align="center" style="background-color:rgb(255, 99, 71)">tomato</td>
+ <td align="left">rgb(255, 99, 71)</td>
+ <td align="left">#FF6347</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato1</td>
+ <td align="center" style="background-color:rgb(255, 99, 71)">tomato1</td>
+ <td align="left">rgb(255, 99, 71)</td>
+ <td align="left">#FF6347</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato2</td>
+ <td align="center" style="background-color:rgb(238, 92, 66)">tomato2</td>
+ <td align="left">rgb(238, 92, 66)</td>
+ <td align="left">#EE5C42</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato3</td>
+ <td align="center" style="background-color:rgb(205, 79, 57)">tomato3</td>
+ <td align="left">rgb(205, 79, 57)</td>
+ <td align="left">#CD4F39</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose4</td>
+ <td align="center" style="background-color:rgb(139, 125, 123)">MistyRose4</td>
+ <td align="left">rgb(139, 125, 123)</td>
+ <td align="left">#8B7D7B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose2</td>
+ <td align="center" style="background-color:rgb(238, 213, 210)">MistyRose2</td>
+ <td align="left">rgb(238, 213, 210)</td>
+ <td align="left">#EED5D2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose</td>
+ <td align="center" style="background-color:rgb(255, 228, 225)">MistyRose</td>
+ <td align="left">rgb(255, 228, 225)</td>
+ <td align="left">#FFE4E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose1</td>
+ <td align="center" style="background-color:rgb(255, 228, 225)">MistyRose1</td>
+ <td align="left">rgb(255, 228, 225)</td>
+ <td align="left">#FFE4E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon</td>
+ <td align="center" style="background-color:rgb(250, 128, 114)">salmon</td>
+ <td align="left">rgb(250, 128, 114)</td>
+ <td align="left">#FA8072</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose3</td>
+ <td align="center" style="background-color:rgb(205, 183, 181)">MistyRose3</td>
+ <td align="left">rgb(205, 183, 181)</td>
+ <td align="left">#CDB7B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">white</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">white</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">gray100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">grey100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">grey100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray99</td>
+ <td align="center" style="background-color:rgb(252, 252, 252)">gray99</td>
+ <td align="left">rgb(252, 252, 252)</td>
+ <td align="left">#FCFCFC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey99</td>
+ <td align="center" style="background-color:rgb(252, 252, 252)">grey99</td>
+ <td align="left">rgb(252, 252, 252)</td>
+ <td align="left">#FCFCFC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray98</td>
+ <td align="center" style="background-color:rgb(250, 250, 250)">gray98</td>
+ <td align="left">rgb(250, 250, 250)</td>
+ <td align="left">#FAFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey98</td>
+ <td align="center" style="background-color:rgb(250, 250, 250)">grey98</td>
+ <td align="left">rgb(250, 250, 250)</td>
+ <td align="left">#FAFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray97</td>
+ <td align="center" style="background-color:rgb(247, 247, 247)">gray97</td>
+ <td align="left">rgb(247, 247, 247)</td>
+ <td align="left">#F7F7F7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey97</td>
+ <td align="center" style="background-color:rgb(247, 247, 247)">grey97</td>
+ <td align="left">rgb(247, 247, 247)</td>
+ <td align="left">#F7F7F7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray96</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">gray96</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey96</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">grey96</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">WhiteSmoke</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">WhiteSmoke</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray95</td>
+ <td align="center" style="background-color:rgb(242, 242, 242)">gray95</td>
+ <td align="left">rgb(242, 242, 242)</td>
+ <td align="left">#F2F2F2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey95</td>
+ <td align="center" style="background-color:rgb(242, 242, 242)">grey95</td>
+ <td align="left">rgb(242, 242, 242)</td>
+ <td align="left">#F2F2F2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray94</td>
+ <td align="center" style="background-color:rgb(240, 240, 240)">gray94</td>
+ <td align="left">rgb(240, 240, 240)</td>
+ <td align="left">#F0F0F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey94</td>
+ <td align="center" style="background-color:rgb(240, 240, 240)">grey94</td>
+ <td align="left">rgb(240, 240, 240)</td>
+ <td align="left">#F0F0F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray93</td>
+ <td align="center" style="background-color:rgb(237, 237, 237)">gray93</td>
+ <td align="left">rgb(237, 237, 237)</td>
+ <td align="left">#EDEDED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey93</td>
+ <td align="center" style="background-color:rgb(237, 237, 237)">grey93</td>
+ <td align="left">rgb(237, 237, 237)</td>
+ <td align="left">#EDEDED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray92</td>
+ <td align="center" style="background-color:rgb(235, 235, 235)">gray92</td>
+ <td align="left">rgb(235, 235, 235)</td>
+ <td align="left">#EBEBEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey92</td>
+ <td align="center" style="background-color:rgb(235, 235, 235)">grey92</td>
+ <td align="left">rgb(235, 235, 235)</td>
+ <td align="left">#EBEBEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray91</td>
+ <td align="center" style="background-color:rgb(232, 232, 232)">gray91</td>
+ <td align="left">rgb(232, 232, 232)</td>
+ <td align="left">#E8E8E8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey91</td>
+ <td align="center" style="background-color:rgb(232, 232, 232)">grey91</td>
+ <td align="left">rgb(232, 232, 232)</td>
+ <td align="left">#E8E8E8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray90</td>
+ <td align="center" style="background-color:rgb(229, 229, 229)">gray90</td>
+ <td align="left">rgb(229, 229, 229)</td>
+ <td align="left">#E5E5E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey90</td>
+ <td align="center" style="background-color:rgb(229, 229, 229)">grey90</td>
+ <td align="left">rgb(229, 229, 229)</td>
+ <td align="left">#E5E5E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray89</td>
+ <td align="center" style="background-color:rgb(227, 227, 227)">gray89</td>
+ <td align="left">rgb(227, 227, 227)</td>
+ <td align="left">#E3E3E3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey89</td>
+ <td align="center" style="background-color:rgb(227, 227, 227)">grey89</td>
+ <td align="left">rgb(227, 227, 227)</td>
+ <td align="left">#E3E3E3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray88</td>
+ <td align="center" style="background-color:rgb(224, 224, 224)">gray88</td>
+ <td align="left">rgb(224, 224, 224)</td>
+ <td align="left">#E0E0E0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey88</td>
+ <td align="center" style="background-color:rgb(224, 224, 224)">grey88</td>
+ <td align="left">rgb(224, 224, 224)</td>
+ <td align="left">#E0E0E0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray87</td>
+ <td align="center" style="background-color:rgb(222, 222, 222)">gray87</td>
+ <td align="left">rgb(222, 222, 222)</td>
+ <td align="left">#DEDEDE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey87</td>
+ <td align="center" style="background-color:rgb(222, 222, 222)">grey87</td>
+ <td align="left">rgb(222, 222, 222)</td>
+ <td align="left">#DEDEDE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gainsboro</td>
+ <td align="center" style="background-color:rgb(220, 220, 220)">gainsboro</td>
+ <td align="left">rgb(220, 220, 220)</td>
+ <td align="left">#DCDCDC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray86</td>
+ <td align="center" style="background-color:rgb(219, 219, 219)">gray86</td>
+ <td align="left">rgb(219, 219, 219)</td>
+ <td align="left">#DBDBDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey86</td>
+ <td align="center" style="background-color:rgb(219, 219, 219)">grey86</td>
+ <td align="left">rgb(219, 219, 219)</td>
+ <td align="left">#DBDBDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray85</td>
+ <td align="center" style="background-color:rgb(217, 217, 217)">gray85</td>
+ <td align="left">rgb(217, 217, 217)</td>
+ <td align="left">#D9D9D9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey85</td>
+ <td align="center" style="background-color:rgb(217, 217, 217)">grey85</td>
+ <td align="left">rgb(217, 217, 217)</td>
+ <td align="left">#D9D9D9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray84</td>
+ <td align="center" style="background-color:rgb(214, 214, 214)">gray84</td>
+ <td align="left">rgb(214, 214, 214)</td>
+ <td align="left">#D6D6D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey84</td>
+ <td align="center" style="background-color:rgb(214, 214, 214)">grey84</td>
+ <td align="left">rgb(214, 214, 214)</td>
+ <td align="left">#D6D6D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray83</td>
+ <td align="center" style="background-color:rgb(212, 212, 212)">gray83</td>
+ <td align="left">rgb(212, 212, 212)</td>
+ <td align="left">#D4D4D4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey83</td>
+ <td align="center" style="background-color:rgb(212, 212, 212)">grey83</td>
+ <td align="left">rgb(212, 212, 212)</td>
+ <td align="left">#D4D4D4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGray</td>
+ <td align="center" style="background-color:rgb(211, 211, 211)">LightGray</td>
+ <td align="left">rgb(211, 211, 211)</td>
+ <td align="left">#D3D3D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGrey</td>
+ <td align="center" style="background-color:rgb(211, 211, 211)">LightGrey</td>
+ <td align="left">rgb(211, 211, 211)</td>
+ <td align="left">#D3D3D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray82</td>
+ <td align="center" style="background-color:rgb(209, 209, 209)">gray82</td>
+ <td align="left">rgb(209, 209, 209)</td>
+ <td align="left">#D1D1D1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey82</td>
+ <td align="center" style="background-color:rgb(209, 209, 209)">grey82</td>
+ <td align="left">rgb(209, 209, 209)</td>
+ <td align="left">#D1D1D1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray81</td>
+ <td align="center" style="background-color:rgb(207, 207, 207)">gray81</td>
+ <td align="left">rgb(207, 207, 207)</td>
+ <td align="left">#CFCFCF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey81</td>
+ <td align="center" style="background-color:rgb(207, 207, 207)">grey81</td>
+ <td align="left">rgb(207, 207, 207)</td>
+ <td align="left">#CFCFCF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray80</td>
+ <td align="center" style="background-color:rgb(204, 204, 204)">gray80</td>
+ <td align="left">rgb(204, 204, 204)</td>
+ <td align="left">#CCCCCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey80</td>
+ <td align="center" style="background-color:rgb(204, 204, 204)">grey80</td>
+ <td align="left">rgb(204, 204, 204)</td>
+ <td align="left">#CCCCCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray79</td>
+ <td align="center" style="background-color:rgb(201, 201, 201)">gray79</td>
+ <td align="left">rgb(201, 201, 201)</td>
+ <td align="left">#C9C9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey79</td>
+ <td align="center" style="background-color:rgb(201, 201, 201)">grey79</td>
+ <td align="left">rgb(201, 201, 201)</td>
+ <td align="left">#C9C9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray78</td>
+ <td align="center" style="background-color:rgb(199, 199, 199)">gray78</td>
+ <td align="left">rgb(199, 199, 199)</td>
+ <td align="left">#C7C7C7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey78</td>
+ <td align="center" style="background-color:rgb(199, 199, 199)">grey78</td>
+ <td align="left">rgb(199, 199, 199)</td>
+ <td align="left">#C7C7C7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray77</td>
+ <td align="center" style="background-color:rgb(196, 196, 196)">gray77</td>
+ <td align="left">rgb(196, 196, 196)</td>
+ <td align="left">#C4C4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey77</td>
+ <td align="center" style="background-color:rgb(196, 196, 196)">grey77</td>
+ <td align="left">rgb(196, 196, 196)</td>
+ <td align="left">#C4C4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray76</td>
+ <td align="center" style="background-color:rgb(194, 194, 194)">gray76</td>
+ <td align="left">rgb(194, 194, 194)</td>
+ <td align="left">#C2C2C2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey76</td>
+ <td align="center" style="background-color:rgb(194, 194, 194)">grey76</td>
+ <td align="left">rgb(194, 194, 194)</td>
+ <td align="left">#C2C2C2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">silver</td>
+ <td align="center" style="background-color:rgb(192, 192, 192)">silver</td>
+ <td align="left">rgb(192, 192, 192)</td>
+ <td align="left">#C0C0C0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray75</td>
+ <td align="center" style="background-color:rgb(191, 191, 191)">gray75</td>
+ <td align="left">rgb(191, 191, 191)</td>
+ <td align="left">#BFBFBF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey75</td>
+ <td align="center" style="background-color:rgb(191, 191, 191)">grey75</td>
+ <td align="left">rgb(191, 191, 191)</td>
+ <td align="left">#BFBFBF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray74</td>
+ <td align="center" style="background-color:rgb(189, 189, 189)">gray74</td>
+ <td align="left">rgb(189, 189, 189)</td>
+ <td align="left">#BDBDBD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey74</td>
+ <td align="center" style="background-color:rgb(189, 189, 189)">grey74</td>
+ <td align="left">rgb(189, 189, 189)</td>
+ <td align="left">#BDBDBD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray73</td>
+ <td align="center" style="background-color:rgb(186, 186, 186)">gray73</td>
+ <td align="left">rgb(186, 186, 186)</td>
+ <td align="left">#BABABA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey73</td>
+ <td align="center" style="background-color:rgb(186, 186, 186)">grey73</td>
+ <td align="left">rgb(186, 186, 186)</td>
+ <td align="left">#BABABA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray72</td>
+ <td align="center" style="background-color:rgb(184, 184, 184)">gray72</td>
+ <td align="left">rgb(184, 184, 184)</td>
+ <td align="left">#B8B8B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey72</td>
+ <td align="center" style="background-color:rgb(184, 184, 184)">grey72</td>
+ <td align="left">rgb(184, 184, 184)</td>
+ <td align="left">#B8B8B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray71</td>
+ <td align="center" style="background-color:rgb(181, 181, 181)">gray71</td>
+ <td align="left">rgb(181, 181, 181)</td>
+ <td align="left">#B5B5B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey71</td>
+ <td align="center" style="background-color:rgb(181, 181, 181)">grey71</td>
+ <td align="left">rgb(181, 181, 181)</td>
+ <td align="left">#B5B5B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray70</td>
+ <td align="center" style="background-color:rgb(179, 179, 179)">gray70</td>
+ <td align="left">rgb(179, 179, 179)</td>
+ <td align="left">#B3B3B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey70</td>
+ <td align="center" style="background-color:rgb(179, 179, 179)">grey70</td>
+ <td align="left">rgb(179, 179, 179)</td>
+ <td align="left">#B3B3B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray69</td>
+ <td align="center" style="background-color:rgb(176, 176, 176)">gray69</td>
+ <td align="left">rgb(176, 176, 176)</td>
+ <td align="left">#B0B0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey69</td>
+ <td align="center" style="background-color:rgb(176, 176, 176)">grey69</td>
+ <td align="left">rgb(176, 176, 176)</td>
+ <td align="left">#B0B0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray68</td>
+ <td align="center" style="background-color:rgb(173, 173, 173)">gray68</td>
+ <td align="left">rgb(173, 173, 173)</td>
+ <td align="left">#ADADAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey68</td>
+ <td align="center" style="background-color:rgb(173, 173, 173)">grey68</td>
+ <td align="left">rgb(173, 173, 173)</td>
+ <td align="left">#ADADAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray67</td>
+ <td align="center" style="background-color:rgb(171, 171, 171)">gray67</td>
+ <td align="left">rgb(171, 171, 171)</td>
+ <td align="left">#ABABAB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey67</td>
+ <td align="center" style="background-color:rgb(171, 171, 171)">grey67</td>
+ <td align="left">rgb(171, 171, 171)</td>
+ <td align="left">#ABABAB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGray</td>
+ <td align="center" style="background-color:rgb(169, 169, 169)">DarkGray</td>
+ <td align="left">rgb(169, 169, 169)</td>
+ <td align="left">#A9A9A9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGrey</td>
+ <td align="center" style="background-color:rgb(169, 169, 169)">DarkGrey</td>
+ <td align="left">rgb(169, 169, 169)</td>
+ <td align="left">#A9A9A9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray66</td>
+ <td align="center" style="background-color:rgb(168, 168, 168)">gray66</td>
+ <td align="left">rgb(168, 168, 168)</td>
+ <td align="left">#A8A8A8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey66</td>
+ <td align="center" style="background-color:rgb(168, 168, 168)">grey66</td>
+ <td align="left">rgb(168, 168, 168)</td>
+ <td align="left">#A8A8A8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray65</td>
+ <td align="center" style="background-color:rgb(166, 166, 166)">gray65</td>
+ <td align="left">rgb(166, 166, 166)</td>
+ <td align="left">#A6A6A6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey65</td>
+ <td align="center" style="background-color:rgb(166, 166, 166)">grey65</td>
+ <td align="left">rgb(166, 166, 166)</td>
+ <td align="left">#A6A6A6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray64</td>
+ <td align="center" style="background-color:rgb(163, 163, 163)">gray64</td>
+ <td align="left">rgb(163, 163, 163)</td>
+ <td align="left">#A3A3A3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey64</td>
+ <td align="center" style="background-color:rgb(163, 163, 163)">grey64</td>
+ <td align="left">rgb(163, 163, 163)</td>
+ <td align="left">#A3A3A3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray63</td>
+ <td align="center" style="background-color:rgb(161, 161, 161)">gray63</td>
+ <td align="left">rgb(161, 161, 161)</td>
+ <td align="left">#A1A1A1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey63</td>
+ <td align="center" style="background-color:rgb(161, 161, 161)">grey63</td>
+ <td align="left">rgb(161, 161, 161)</td>
+ <td align="left">#A1A1A1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray62</td>
+ <td align="center" style="background-color:rgb(158, 158, 158)">gray62</td>
+ <td align="left">rgb(158, 158, 158)</td>
+ <td align="left">#9E9E9E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey62</td>
+ <td align="center" style="background-color:rgb(158, 158, 158)">grey62</td>
+ <td align="left">rgb(158, 158, 158)</td>
+ <td align="left">#9E9E9E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray61</td>
+ <td align="center" style="background-color:rgb(156, 156, 156)">gray61</td>
+ <td align="left">rgb(156, 156, 156)</td>
+ <td align="left">#9C9C9C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey61</td>
+ <td align="center" style="background-color:rgb(156, 156, 156)">grey61</td>
+ <td align="left">rgb(156, 156, 156)</td>
+ <td align="left">#9C9C9C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray60</td>
+ <td align="center" style="background-color:rgb(153, 153, 153)">gray60</td>
+ <td align="left">rgb(153, 153, 153)</td>
+ <td align="left">#999999</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey60</td>
+ <td align="center" style="background-color:rgb(153, 153, 153)">grey60</td>
+ <td align="left">rgb(153, 153, 153)</td>
+ <td align="left">#999999</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray59</td>
+ <td align="center" style="background-color:rgb(150, 150, 150)">gray59</td>
+ <td align="left">rgb(150, 150, 150)</td>
+ <td align="left">#969696</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey59</td>
+ <td align="center" style="background-color:rgb(150, 150, 150)">grey59</td>
+ <td align="left">rgb(150, 150, 150)</td>
+ <td align="left">#969696</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray58</td>
+ <td align="center" style="background-color:rgb(148, 148, 148)">gray58</td>
+ <td align="left">rgb(148, 148, 148)</td>
+ <td align="left">#949494</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey58</td>
+ <td align="center" style="background-color:rgb(148, 148, 148)">grey58</td>
+ <td align="left">rgb(148, 148, 148)</td>
+ <td align="left">#949494</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray57</td>
+ <td align="center" style="background-color:rgb(145, 145, 145)">gray57</td>
+ <td align="left">rgb(145, 145, 145)</td>
+ <td align="left">#919191</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey57</td>
+ <td align="center" style="background-color:rgb(145, 145, 145)">grey57</td>
+ <td align="left">rgb(145, 145, 145)</td>
+ <td align="left">#919191</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray56</td>
+ <td align="center" style="background-color:rgb(143, 143, 143)">gray56</td>
+ <td align="left">rgb(143, 143, 143)</td>
+ <td align="left">#8F8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey56</td>
+ <td align="center" style="background-color:rgb(143, 143, 143)">grey56</td>
+ <td align="left">rgb(143, 143, 143)</td>
+ <td align="left">#8F8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray55</td>
+ <td align="center" style="background-color:rgb(140, 140, 140)">gray55</td>
+ <td align="left">rgb(140, 140, 140)</td>
+ <td align="left">#8C8C8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey55</td>
+ <td align="center" style="background-color:rgb(140, 140, 140)">grey55</td>
+ <td align="left">rgb(140, 140, 140)</td>
+ <td align="left">#8C8C8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray54</td>
+ <td align="center" style="background-color:rgb(138, 138, 138)">gray54</td>
+ <td align="left">rgb(138, 138, 138)</td>
+ <td align="left">#8A8A8A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey54</td>
+ <td align="center" style="background-color:rgb(138, 138, 138)">grey54</td>
+ <td align="left">rgb(138, 138, 138)</td>
+ <td align="left">#8A8A8A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray53</td>
+ <td align="center" style="background-color:rgb(135, 135, 135)">gray53</td>
+ <td align="left">rgb(135, 135, 135)</td>
+ <td align="left">#878787</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey53</td>
+ <td align="center" style="background-color:rgb(135, 135, 135)">grey53</td>
+ <td align="left">rgb(135, 135, 135)</td>
+ <td align="left">#878787</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray52</td>
+ <td align="center" style="background-color:rgb(133, 133, 133)">gray52</td>
+ <td align="left">rgb(133, 133, 133)</td>
+ <td align="left">#858585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey52</td>
+ <td align="center" style="background-color:rgb(133, 133, 133)">grey52</td>
+ <td align="left">rgb(133, 133, 133)</td>
+ <td align="left">#858585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray51</td>
+ <td align="center" style="background-color:rgb(130, 130, 130)">gray51</td>
+ <td align="left">rgb(130, 130, 130)</td>
+ <td align="left">#828282</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey51</td>
+ <td align="center" style="background-color:rgb(130, 130, 130)">grey51</td>
+ <td align="left">rgb(130, 130, 130)</td>
+ <td align="left">#828282</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">fractal</td>
+ <td align="center" style="background-color:rgb(128, 128, 128)">fractal</td>
+ <td align="left">rgb(128, 128, 128)</td>
+ <td align="left">#808080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray50</td>
+ <td align="center" style="background-color:rgb(127, 127, 127)">gray50</td>
+ <td align="left">rgb(127, 127, 127)</td>
+ <td align="left">#7F7F7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey50</td>
+ <td align="center" style="background-color:rgb(127, 127, 127)">grey50</td>
+ <td align="left">rgb(127, 127, 127)</td>
+ <td align="left">#7F7F7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray</td>
+ <td align="center" style="background-color:rgb(126, 126, 126)">gray</td>
+ <td align="left">rgb(126, 126, 126)</td>
+ <td align="left">#7E7E7E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray49</td>
+ <td align="center" style="background-color:rgb(125, 125, 125)">gray49</td>
+ <td align="left">rgb(125, 125, 125)</td>
+ <td align="left">#7D7D7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey49</td>
+ <td align="center" style="background-color:rgb(125, 125, 125)">grey49</td>
+ <td align="left">rgb(125, 125, 125)</td>
+ <td align="left">#7D7D7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray48</td>
+ <td align="center" style="background-color:rgb(122, 122, 122)">gray48</td>
+ <td align="left">rgb(122, 122, 122)</td>
+ <td align="left">#7A7A7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey48</td>
+ <td align="center" style="background-color:rgb(122, 122, 122)">grey48</td>
+ <td align="left">rgb(122, 122, 122)</td>
+ <td align="left">#7A7A7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray47</td>
+ <td align="center" style="background-color:rgb(120, 120, 120)">gray47</td>
+ <td align="left">rgb(120, 120, 120)</td>
+ <td align="left">#787878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey47</td>
+ <td align="center" style="background-color:rgb(120, 120, 120)">grey47</td>
+ <td align="left">rgb(120, 120, 120)</td>
+ <td align="left">#787878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray46</td>
+ <td align="center" style="background-color:rgb(117, 117, 117)">gray46</td>
+ <td align="left">rgb(117, 117, 117)</td>
+ <td align="left">#757575</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey46</td>
+ <td align="center" style="background-color:rgb(117, 117, 117)">grey46</td>
+ <td align="left">rgb(117, 117, 117)</td>
+ <td align="left">#757575</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray45</td>
+ <td align="center" style="background-color:rgb(115, 115, 115)">gray45</td>
+ <td align="left">rgb(115, 115, 115)</td>
+ <td align="left">#737373</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey45</td>
+ <td align="center" style="background-color:rgb(115, 115, 115)">grey45</td>
+ <td align="left">rgb(115, 115, 115)</td>
+ <td align="left">#737373</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray44</td>
+ <td align="center" style="background-color:rgb(112, 112, 112)">gray44</td>
+ <td align="left">rgb(112, 112, 112)</td>
+ <td align="left">#707070</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey44</td>
+ <td align="center" style="background-color:rgb(112, 112, 112)">grey44</td>
+ <td align="left">rgb(112, 112, 112)</td>
+ <td align="left">#707070</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray43</td>
+ <td align="center" style="background-color:rgb(110, 110, 110)">gray43</td>
+ <td align="left">rgb(110, 110, 110)</td>
+ <td align="left">#6E6E6E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey43</td>
+ <td align="center" style="background-color:rgb(110, 110, 110)">grey43</td>
+ <td align="left">rgb(110, 110, 110)</td>
+ <td align="left">#6E6E6E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray42</td>
+ <td align="center" style="background-color:rgb(107, 107, 107)">gray42</td>
+ <td align="left">rgb(107, 107, 107)</td>
+ <td align="left">#6B6B6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey42</td>
+ <td align="center" style="background-color:rgb(107, 107, 107)">grey42</td>
+ <td align="left">rgb(107, 107, 107)</td>
+ <td align="left">#6B6B6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DimGray</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">DimGray</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DimGrey</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">DimGrey</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray41</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">gray41</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey41</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">grey41</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray40</td>
+ <td align="center" style="background-color:rgb(102, 102, 102)">gray40</td>
+ <td align="left">rgb(102, 102, 102)</td>
+ <td align="left">#666666</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey40</td>
+ <td align="center" style="background-color:rgb(102, 102, 102)">grey40</td>
+ <td align="left">rgb(102, 102, 102)</td>
+ <td align="left">#666666</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray39</td>
+ <td align="center" style="background-color:rgb( 99, 99, 99)">gray39</td>
+ <td align="left">rgb( 99, 99, 99)</td>
+ <td align="left">#636363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey39</td>
+ <td align="center" style="background-color:rgb( 99, 99, 99)">grey39</td>
+ <td align="left">rgb( 99, 99, 99)</td>
+ <td align="left">#636363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray38</td>
+ <td align="center" style="background-color:rgb( 97, 97, 97)">gray38</td>
+ <td align="left">rgb( 97, 97, 97)</td>
+ <td align="left">#616161</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey38</td>
+ <td align="center" style="background-color:rgb( 97, 97, 97)">grey38</td>
+ <td align="left">rgb( 97, 97, 97)</td>
+ <td align="left">#616161</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray37</td>
+ <td align="center" style="background-color:rgb( 94, 94, 94)">gray37</td>
+ <td align="left">rgb( 94, 94, 94)</td>
+ <td align="left">#5E5E5E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey37</td>
+ <td align="center" style="background-color:rgb( 94, 94, 94)">grey37</td>
+ <td align="left">rgb( 94, 94, 94)</td>
+ <td align="left">#5E5E5E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray36</td>
+ <td align="center" style="background-color:rgb( 92, 92, 92)">gray36</td>
+ <td align="left">rgb( 92, 92, 92)</td>
+ <td align="left">#5C5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey36</td>
+ <td align="center" style="background-color:rgb( 92, 92, 92)">grey36</td>
+ <td align="left">rgb( 92, 92, 92)</td>
+ <td align="left">#5C5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray35</td>
+ <td align="center" style="background-color:rgb( 89, 89, 89)">gray35</td>
+ <td align="left">rgb( 89, 89, 89)</td>
+ <td align="left">#595959</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey35</td>
+ <td align="center" style="background-color:rgb( 89, 89, 89)">grey35</td>
+ <td align="left">rgb( 89, 89, 89)</td>
+ <td align="left">#595959</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray34</td>
+ <td align="center" style="background-color:rgb( 87, 87, 87)">gray34</td>
+ <td align="left">rgb( 87, 87, 87)</td>
+ <td align="left">#575757</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey34</td>
+ <td align="center" style="background-color:rgb( 87, 87, 87)">grey34</td>
+ <td align="left">rgb( 87, 87, 87)</td>
+ <td align="left">#575757</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray33</td>
+ <td align="center" style="background-color:rgb( 84, 84, 84)">gray33</td>
+ <td align="left">rgb( 84, 84, 84)</td>
+ <td align="left">#545454</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey33</td>
+ <td align="center" style="background-color:rgb( 84, 84, 84)">grey33</td>
+ <td align="left">rgb( 84, 84, 84)</td>
+ <td align="left">#545454</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray32</td>
+ <td align="center" style="background-color:rgb( 82, 82, 82)">gray32</td>
+ <td align="left">rgb( 82, 82, 82)</td>
+ <td align="left">#525252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey32</td>
+ <td align="center" style="background-color:rgb( 82, 82, 82)">grey32</td>
+ <td align="left">rgb( 82, 82, 82)</td>
+ <td align="left">#525252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray31</td>
+ <td align="center" style="background-color:rgb( 79, 79, 79)">gray31</td>
+ <td align="left">rgb( 79, 79, 79)</td>
+ <td align="left">#4F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey31</td>
+ <td align="center" style="background-color:rgb( 79, 79, 79)">grey31</td>
+ <td align="left">rgb( 79, 79, 79)</td>
+ <td align="left">#4F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray30</td>
+ <td align="center" style="background-color:rgb( 77, 77, 77)">gray30</td>
+ <td align="left">rgb( 77, 77, 77)</td>
+ <td align="left">#4D4D4D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey30</td>
+ <td align="center" style="background-color:rgb( 77, 77, 77)">grey30</td>
+ <td align="left">rgb( 77, 77, 77)</td>
+ <td align="left">#4D4D4D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray29</td>
+ <td align="center" style="background-color:rgb( 74, 74, 74)">gray29</td>
+ <td align="left">rgb( 74, 74, 74)</td>
+ <td align="left">#4A4A4A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey29</td>
+ <td align="center" style="background-color:rgb( 74, 74, 74)">grey29</td>
+ <td align="left">rgb( 74, 74, 74)</td>
+ <td align="left">#4A4A4A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray28</td>
+ <td align="center" style="background-color:rgb( 71, 71, 71)">gray28</td>
+ <td align="left">rgb( 71, 71, 71)</td>
+ <td align="left">#474747</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey28</td>
+ <td align="center" style="background-color:rgb( 71, 71, 71)">grey28</td>
+ <td align="left">rgb( 71, 71, 71)</td>
+ <td align="left">#474747</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray27</td>
+ <td align="center" style="background-color:rgb( 69, 69, 69)">gray27</td>
+ <td align="left">rgb( 69, 69, 69)</td>
+ <td align="left">#454545</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey27</td>
+ <td align="center" style="background-color:rgb( 69, 69, 69)">grey27</td>
+ <td align="left">rgb( 69, 69, 69)</td>
+ <td align="left">#454545</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray26</td>
+ <td align="center" style="background-color:rgb( 66, 66, 66)">gray26</td>
+ <td align="left">rgb( 66, 66, 66)</td>
+ <td align="left">#424242</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey26</td>
+ <td align="center" style="background-color:rgb( 66, 66, 66)">grey26</td>
+ <td align="left">rgb( 66, 66, 66)</td>
+ <td align="left">#424242</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray25</td>
+ <td align="center" style="background-color:rgb( 64, 64, 64)">gray25</td>
+ <td align="left">rgb( 64, 64, 64)</td>
+ <td align="left">#404040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey25</td>
+ <td align="center" style="background-color:rgb( 64, 64, 64)">grey25</td>
+ <td align="left">rgb( 64, 64, 64)</td>
+ <td align="left">#404040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray24</td>
+ <td align="center" style="background-color:rgb( 61, 61, 61)">gray24</td>
+ <td align="left">rgb( 61, 61, 61)</td>
+ <td align="left">#3D3D3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey24</td>
+ <td align="center" style="background-color:rgb( 61, 61, 61)">grey24</td>
+ <td align="left">rgb( 61, 61, 61)</td>
+ <td align="left">#3D3D3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray23</td>
+ <td align="center" style="background-color:rgb( 59, 59, 59)">gray23</td>
+ <td align="left">rgb( 59, 59, 59)</td>
+ <td align="left">#3B3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey23</td>
+ <td align="center" style="background-color:rgb( 59, 59, 59)">grey23</td>
+ <td align="left">rgb( 59, 59, 59)</td>
+ <td align="left">#3B3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray22</td>
+ <td align="center" style="background-color:rgb( 56, 56, 56)">gray22</td>
+ <td align="left">rgb( 56, 56, 56)</td>
+ <td align="left">#383838</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey22</td>
+ <td align="center" style="background-color:rgb( 56, 56, 56)">grey22</td>
+ <td align="left">rgb( 56, 56, 56)</td>
+ <td align="left">#383838</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray21</td>
+ <td align="center" style="background-color:rgb( 54, 54, 54)">gray21</td>
+ <td align="left">rgb( 54, 54, 54)</td>
+ <td align="left">#363636</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey21</td>
+ <td align="center" style="background-color:rgb( 54, 54, 54)">grey21</td>
+ <td align="left">rgb( 54, 54, 54)</td>
+ <td align="left">#363636</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray20</td>
+ <td align="center" style="background-color:rgb( 51, 51, 51)">gray20</td>
+ <td align="left">rgb( 51, 51, 51)</td>
+ <td align="left">#333333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey20</td>
+ <td align="center" style="background-color:rgb( 51, 51, 51)">grey20</td>
+ <td align="left">rgb( 51, 51, 51)</td>
+ <td align="left">#333333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray19</td>
+ <td align="center" style="background-color:rgb( 48, 48, 48)">gray19</td>
+ <td align="left">rgb( 48, 48, 48)</td>
+ <td align="left">#303030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey19</td>
+ <td align="center" style="background-color:rgb( 48, 48, 48)">grey19</td>
+ <td align="left">rgb( 48, 48, 48)</td>
+ <td align="left">#303030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray18</td>
+ <td align="center" style="background-color:rgb( 46, 46, 46)">gray18</td>
+ <td align="left">rgb( 46, 46, 46)</td>
+ <td align="left">#2E2E2E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey18</td>
+ <td align="center" style="background-color:rgb( 46, 46, 46)">grey18</td>
+ <td align="left">rgb( 46, 46, 46)</td>
+ <td align="left">#2E2E2E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray17</td>
+ <td align="center" style="background-color:rgb( 43, 43, 43)">gray17</td>
+ <td align="left">rgb( 43, 43, 43)</td>
+ <td align="left">#2B2B2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey17</td>
+ <td align="center" style="background-color:rgb( 43, 43, 43)">grey17</td>
+ <td align="left">rgb( 43, 43, 43)</td>
+ <td align="left">#2B2B2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray16</td>
+ <td align="center" style="background-color:rgb( 41, 41, 41)">gray16</td>
+ <td align="left">rgb( 41, 41, 41)</td>
+ <td align="left">#292929</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey16</td>
+ <td align="center" style="background-color:rgb( 41, 41, 41)">grey16</td>
+ <td align="left">rgb( 41, 41, 41)</td>
+ <td align="left">#292929</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray15</td>
+ <td align="center" style="background-color:rgb( 38, 38, 38)">gray15</td>
+ <td align="left">rgb( 38, 38, 38)</td>
+ <td align="left">#262626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey15</td>
+ <td align="center" style="background-color:rgb( 38, 38, 38)">grey15</td>
+ <td align="left">rgb( 38, 38, 38)</td>
+ <td align="left">#262626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray14</td>
+ <td align="center" style="background-color:rgb( 36, 36, 36)">gray14</td>
+ <td align="left">rgb( 36, 36, 36)</td>
+ <td align="left">#242424</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey14</td>
+ <td align="center" style="background-color:rgb( 36, 36, 36)">grey14</td>
+ <td align="left">rgb( 36, 36, 36)</td>
+ <td align="left">#242424</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray13</td>
+ <td align="center" style="background-color:rgb( 33, 33, 33)">gray13</td>
+ <td align="left">rgb( 33, 33, 33)</td>
+ <td align="left">#212121</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey13</td>
+ <td align="center" style="background-color:rgb( 33, 33, 33)">grey13</td>
+ <td align="left">rgb( 33, 33, 33)</td>
+ <td align="left">#212121</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray12</td>
+ <td align="center" style="background-color:rgb( 31, 31, 31)">gray12</td>
+ <td align="left">rgb( 31, 31, 31)</td>
+ <td align="left">#1F1F1F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey12</td>
+ <td align="center" style="background-color:rgb( 31, 31, 31)">grey12</td>
+ <td align="left">rgb( 31, 31, 31)</td>
+ <td align="left">#1F1F1F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray11</td>
+ <td align="center" style="background-color:rgb( 28, 28, 28)">gray11</td>
+ <td align="left">rgb( 28, 28, 28)</td>
+ <td align="left">#1C1C1C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey11</td>
+ <td align="center" style="background-color:rgb( 28, 28, 28)">grey11</td>
+ <td align="left">rgb( 28, 28, 28)</td>
+ <td align="left">#1C1C1C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray10</td>
+ <td align="center" style="background-color:rgb( 26, 26, 26)">gray10</td>
+ <td align="left">rgb( 26, 26, 26)</td>
+ <td align="left">#1A1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey10</td>
+ <td align="center" style="background-color:rgb( 26, 26, 26)">grey10</td>
+ <td align="left">rgb( 26, 26, 26)</td>
+ <td align="left">#1A1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray9</td>
+ <td align="center" style="background-color:rgb( 23, 23, 23)">gray9</td>
+ <td align="left">rgb( 23, 23, 23)</td>
+ <td align="left">#171717</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey9</td>
+ <td align="center" style="background-color:rgb( 23, 23, 23)">grey9</td>
+ <td align="left">rgb( 23, 23, 23)</td>
+ <td align="left">#171717</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray8</td>
+ <td align="center" style="background-color:rgb( 20, 20, 20)">gray8</td>
+ <td align="left">rgb( 20, 20, 20)</td>
+ <td align="left">#141414</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey8</td>
+ <td align="center" style="background-color:rgb( 20, 20, 20)">grey8</td>
+ <td align="left">rgb( 20, 20, 20)</td>
+ <td align="left">#141414</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray7</td>
+ <td align="center" style="background-color:rgb( 18, 18, 18)">gray7</td>
+ <td align="left">rgb( 18, 18, 18)</td>
+ <td align="left">#121212</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey7</td>
+ <td align="center" style="background-color:rgb( 18, 18, 18)">grey7</td>
+ <td align="left">rgb( 18, 18, 18)</td>
+ <td align="left">#121212</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray6</td>
+ <td align="center" style="background-color:rgb( 15, 15, 15)">gray6</td>
+ <td align="left">rgb( 15, 15, 15)</td>
+ <td align="left">#0F0F0F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey6</td>
+ <td align="center" style="background-color:rgb( 15, 15, 15)">grey6</td>
+ <td align="left">rgb( 15, 15, 15)</td>
+ <td align="left">#0F0F0F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray5</td>
+ <td align="center" style="background-color:rgb( 13, 13, 13)">gray5</td>
+ <td align="left">rgb( 13, 13, 13)</td>
+ <td align="left">#0D0D0D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey5</td>
+ <td align="center" style="background-color:rgb( 13, 13, 13)">grey5</td>
+ <td align="left">rgb( 13, 13, 13)</td>
+ <td align="left">#0D0D0D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray4</td>
+ <td align="center" style="background-color:rgb( 10, 10, 10)">gray4</td>
+ <td align="left">rgb( 10, 10, 10)</td>
+ <td align="left">#0A0A0A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey4</td>
+ <td align="center" style="background-color:rgb( 10, 10, 10)">grey4</td>
+ <td align="left">rgb( 10, 10, 10)</td>
+ <td align="left">#0A0A0A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray3</td>
+ <td align="center" style="background-color:rgb( 8, 8, 8)">gray3</td>
+ <td align="left">rgb( 8, 8, 8)</td>
+ <td align="left">#080808</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey3</td>
+ <td align="center" style="background-color:rgb( 8, 8, 8)">grey3</td>
+ <td align="left">rgb( 8, 8, 8)</td>
+ <td align="left">#080808</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray2</td>
+ <td align="center" style="background-color:rgb( 5, 5, 5)">gray2</td>
+ <td align="left">rgb( 5, 5, 5)</td>
+ <td align="left">#050505</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey2</td>
+ <td align="center" style="background-color:rgb( 5, 5, 5)">grey2</td>
+ <td align="left">rgb( 5, 5, 5)</td>
+ <td align="left">#050505</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray1</td>
+ <td align="center" style="background-color:rgb( 3, 3, 3)">gray1</td>
+ <td align="left">rgb( 3, 3, 3)</td>
+ <td align="left">#030303</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey1</td>
+ <td align="center" style="background-color:rgb( 3, 3, 3)">grey1</td>
+ <td align="left">rgb( 3, 3, 3)</td>
+ <td align="left">#030303</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">black</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">black</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray0</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">gray0</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey0</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">grey0</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">opaque</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">opaque</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">none</td>
+ <td align="center" style="background-color:white">none</td>
+ <td align="left">rgba( 0, 0, 0, 0.0)</td>
+ <td align="left">#00000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">transparent</td>
+ <td align="center" style="background-color:white">transparent</td>
+ <td align="left">rgba( 0, 0, 0, 0.0)</td>
+ <td align="left">#00000000</td>
+
+ </tr>
+
+ </tbody>
+</table>
+
+</div>
+
+</div>
+
+</body></html>
diff --git a/frontend/imgrid/colors/js/wrkshp/hexes b/frontend/imgrid/colors/js/wrkshp/hexes
new file mode 100755
index 0000000..dcc3bda
--- /dev/null
+++ b/frontend/imgrid/colors/js/wrkshp/hexes
@@ -0,0 +1 @@
+hexlist = ['#FFFAFA', '#FFFAFA', '#EEE9E9', '#FFC1C1', '#EEB4B4', '#CDC9C9', '#F08080', '#FF6A6A', '#CD9B9B', '#EE6363', '#BC8F8F', '#FF4040', '#FF3030', '#EE3B3B', '#CD5C5C', '#CD5555', '#EE2C2C', '#8B8989', '#CD3333', '#FF0000', '#FF0000', '#8B6969', '#CD2626', '#EE0000', '#B22222', '#A52A2A', '#CD0000', '#8B3A3A', '#8B2323', '#8B1A1A', '#8B0000', '#8B0000', '#800000', '#FFAEB9', '#CD8C95', '#8B5F65', '#EEA2AD', '#FFB6C1', '#FFC0CB', '#DC143C', '#FFB5C5', '#EEA9B8', '#CD919E', '#8B636C', '#8B475D', '#DB7093', '#EE799F', '#FF82AB', '#CD6889', '#FFF0F5', '#FFF0F5', '#CDC1C5', '#EEE0E5', '#8B8386', '#B03060', '#CD6090', '#CD3278', '#FF3E96', '#EE3A8C', '#8B2252', '#EE6AA7', '#FF6EB4', '#8B3A62', '#FF69B4', '#FF1493', '#FF1493', '#EE1289', '#CD1076', '#8B0A50', '#FF34B3', '#EE30A7', '#CD2990', '#8B1C62', '#C71585', '#D02090', '#EE7AE9', '#DA70D6', '#FF83FA', '#CD69C9', '#8B4789', '#FFE1FF', '#EED2EE', '#FFBBFF', '#EEAEEE', '#D8BFD8', '#CDB5CD', '#DDA0DD', '#EE82EE', '#CD96CD', '#8B7B8B', '#FF00FF', '#FF00FF', '#FF00FF', '#8B668B', '#EE00EE', '#CD00CD', '#8B008B', '#8B008B', '#800080', '#BA55D3', '#E066FF', '#D15FEE', '#B452CD', '#7A378B', '#9400D3', '#9932CC', '#BF3EFF', '#9A32CD', '#B23AEE', '#68228B', '#A020F0', '#4B0082', '#8A2BE2', '#912CEE', '#7D26CD', '#551A8B', '#9B30FF', '#9370DB', '#AB82FF', '#9F79EE', '#8968CD', '#5D478B', '#483D8B', '#8470FF', '#7B68EE', '#6A5ACD', '#836FFF', '#7A67EE', '#6959CD', '#473C8B', '#F8F8FF', '#E6E6FA', '#0000FF', '#0000FF', '#0000EE', '#0000CD', '#0000CD', '#00008B', '#00008B', '#191970', '#000080', '#000080', '#4169E1', '#4876FF', '#436EEE', '#3A5FCD', '#27408B', '#6495ED', '#B0C4DE', '#CAE1FF', '#BCD2EE', '#A2B5CD', '#6E7B8B', '#6C7B8B', '#C6E2FF', '#B9D3EE', '#9FB6CD', '#778899', '#778899', '#708090', '#708090', '#1E90FF', '#1E90FF', '#1C86EE', '#104E8B', '#1874CD', '#F0F8FF', '#36648B', '#4682B4', '#63B8FF', '#5CACEE', '#4F94CD', '#4A708B', '#87CEFF', '#7EC0EE', '#6CA6CD', '#87CEFA', '#607B8B', '#B0E2FF', '#A4D3EE', '#8DB6CD', '#87CEEB', '#9AC0CD', '#00BFFF', '#00BFFF', '#00B2EE', '#00688B', '#009ACD', '#BFEFFF', '#B2DFEE', '#ADD8E6', '#68838B', '#B0E0E6', '#98F5FF', '#8EE5EE', '#7AC5CD', '#53868B', '#00F5FF', '#00E5EE', '#00C5CD', '#00868B', '#5F9EA0', '#5F9EA0', '#00CED1', '#F0FFFF', '#F0FFFF', '#E0FFFF', '#E0FFFF', '#E0EEEE', '#D1EEEE', '#BBFFFF', '#AFEEEE', '#AEEEEE', '#97FFFF', '#C1CDCD', '#B4CDCD', '#8DEEEE', '#96CDCD', '#79CDCD', '#838B8B', '#7A8B8B', '#00FFFF', '#00FFFF', '#00FFFF', '#668B8B', '#00EEEE', '#528B8B', '#00CDCD', '#008B8B', '#008B8B', '#008080', '#2F4F4F', '#2F4F4F', '#48D1CC', '#20B2AA', '#40E0D0', '#458B74', '#7FFFD4', '#7FFFD4', '#76EEC6', '#66CDAA', '#66CDAA', '#00FA9A', '#F5FFFA', '#00FF7F', '#00FF7F', '#00EE76', '#00CD66', '#008B45', '#3CB371', '#2E8B57', '#43CD80', '#54FF9F', '#2E8B57', '#4EEE94', '#32814B', '#F0FFF0', '#F0FFF0', '#E0EEE0', '#C1FFC1', '#B4EEB4', '#9AFF9A', '#98FB98', '#C1CDC1', '#90EE90', '#90EE90', '#9BCD9B', '#8FBC8F', '#7CCD7C', '#838B83', '#00FF00', '#00FF00', '#32CD32', '#698B69', '#00EE00', '#548B54', '#00CD00', '#228B22', '#008B00', '#008000', '#006400', '#7CFC00', '#7FFF00', '#7FFF00', '#76EE00', '#66CD00', '#458B00', '#ADFF2F', '#A2CD5A', '#CAFF70', '#BCEE68', '#6E8B3D', '#556B2F', '#6B8E23', '#C0FF3E', '#B3EE3A', '#9ACD32', '#9ACD32', '#698B22', '#FFFFF0', '#FFFFF0', '#FFFFE0', '#FFFFE0', '#F5F5DC', '#EEEEE0', '#FAFAD2', '#EEEED1', '#CDCDC1', '#CDCDB4', '#8B8B83', '#8B8B7A', '#FFFF00', '#FFFF00', '#EEEE00', '#CDCD00', '#8B8B00', '#808000', '#BDB76B', '#EEE685', '#8B8970', '#FFF68F', '#CDC673', '#8B864E', '#EEE8AA', '#FFFACD', '#FFFACD', '#F0E68C', '#CDC9A5', '#EEE9BF', '#D1C166', '#8B8878', '#FFD700', '#FFD700', '#EEC900', '#CDAD00', '#8B7500', '#EEDD82', '#8B814C', '#FFEC8B', '#CDBE70', '#EEDC82', '#CDC8B1', '#EEE8CD', '#FFF8DC', '#FFF8DC', '#DAA520', '#FFC125', '#EEB422', '#CD9B1D', '#8B6914', '#B8860B', '#FFB90F', '#EEAD0E', '#CD950C', '#8B6508', '#FFFAF0', '#EED8AE', '#FDF5E6', '#F5DEB3', '#FFE7BA', '#CDBA96', '#FFA500', '#FFA500', '#EE9A00', '#CD8500', '#8B5A00', '#8B7E66', '#FFE4B5', '#FFEFD5', '#CDB38B', '#FFEBCD', '#FFDEAD', '#FFDEAD', '#EECFA1', '#8B795E', '#8B8378', '#FAEBD7', '#D2B48C', '#8B7D6B', '#DEB887', '#EEDFCC', '#FFD39B', '#CDAA7D', '#EEC591', '#FFEFDB', '#8B7355', '#CDC0B0', '#FF8C00', '#EED5B7', '#FFE4C4', '#FFE4C4', '#CDB79E', '#FF7F00', '#FAF0E6', '#EE7600', '#CD6600', '#8B4500', '#CD853F', '#FFA54F', '#EE9A49', '#CD853F', '#8B5A2B', '#FFDAB9', '#FFDAB9', '#8B7765', '#EECBAD', '#CDAF95', '#F4A460', '#8B8682', '#EEE5DE', '#CDC5BF', '#D2691E', '#FF7F24', '#EE7621', '#CD661D', '#8B4513', '#8B4513', '#FFF5EE', '#FFF5EE', '#8B4726', '#A0522D', '#FF8247', '#EE7942', '#CD6839', '#CD8162', '#FFA07A', '#FFA07A', '#8B5742', '#EE9572', '#FF7F50', '#FF4500', '#FF4500', '#EE4000', '#CD3700', '#8B2500', '#E9967A', '#FF8C69', '#EE8262', '#CD7054', '#8B4C39', '#FF7256', '#EE6A50', '#CD5B45', '#8B3E2F', '#8B3626', '#FF6347', '#FF6347', '#EE5C42', '#CD4F39', '#8B7D7B', '#EED5D2', '#FFE4E1', '#FFE4E1', '#FA8072', '#CDB7B5', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FCFCFC', '#FCFCFC', '#FAFAFA', '#FAFAFA', '#F7F7F7', '#F7F7F7', '#F5F5F5', '#F5F5F5', '#F5F5F5', '#F2F2F2', '#F2F2F2', '#F0F0F0', '#F0F0F0', '#EDEDED', '#EDEDED', '#EBEBEB', '#EBEBEB', '#E8E8E8', '#E8E8E8', '#E5E5E5', '#E5E5E5', '#E3E3E3', '#E3E3E3', '#E0E0E0', '#E0E0E0', '#DEDEDE', '#DEDEDE', '#DCDCDC', '#DBDBDB', '#DBDBDB', '#D9D9D9', '#D9D9D9', '#D6D6D6', '#D6D6D6', '#D4D4D4', '#D4D4D4', '#D3D3D3', '#D3D3D3', '#D1D1D1', '#D1D1D1', '#CFCFCF', '#CFCFCF', '#CCCCCC', '#CCCCCC', '#C9C9C9', '#C9C9C9', '#C7C7C7', '#C7C7C7', '#C4C4C4', '#C4C4C4', '#C2C2C2', '#C2C2C2', '#C0C0C0', '#BFBFBF', '#BFBFBF', '#BDBDBD', '#BDBDBD', '#BABABA', '#BABABA', '#B8B8B8', '#B8B8B8', '#B5B5B5', '#B5B5B5', '#B3B3B3', '#B3B3B3', '#B0B0B0', '#B0B0B0', '#ADADAD', '#ADADAD', '#ABABAB', '#ABABAB', '#A9A9A9', '#A9A9A9', '#A8A8A8', '#A8A8A8', '#A6A6A6', '#A6A6A6', '#A3A3A3', '#A3A3A3', '#A1A1A1', '#A1A1A1', '#9E9E9E', '#9E9E9E', '#9C9C9C', '#9C9C9C', '#999999', '#999999', '#969696', '#969696', '#949494', '#949494', '#919191', '#919191', '#8F8F8F', '#8F8F8F', '#8C8C8C', '#8C8C8C', '#8A8A8A', '#8A8A8A', '#878787', '#878787', '#858585', '#858585', '#828282', '#828282', '#808080', '#7F7F7F', '#7F7F7F', '#7E7E7E', '#7D7D7D', '#7D7D7D', '#7A7A7A', '#7A7A7A', '#787878', '#787878', '#757575', '#757575', '#737373', '#737373', '#707070', '#707070', '#6E6E6E', '#6E6E6E', '#6B6B6B', '#6B6B6B', '#696969', '#696969', '#696969', '#696969', '#666666', '#666666', '#636363', '#636363', '#616161', '#616161', '#5E5E5E', '#5E5E5E', '#5C5C5C', '#5C5C5C', '#595959', '#595959', '#575757', '#575757', '#545454', '#545454', '#525252', '#525252', '#4F4F4F', '#4F4F4F', '#4D4D4D', '#4D4D4D', '#4A4A4A', '#4A4A4A', '#474747', '#474747', '#454545', '#454545', '#424242', '#424242', '#404040', '#404040', '#3D3D3D', '#3D3D3D', '#3B3B3B', '#3B3B3B', '#383838', '#383838', '#363636', '#363636', '#333333', '#333333', '#303030', '#303030', '#2E2E2E', '#2E2E2E', '#2B2B2B', '#2B2B2B', '#292929', '#292929', '#262626', '#262626', '#242424', '#242424', '#212121', '#212121', '#1F1F1F', '#1F1F1F', '#1C1C1C', '#1C1C1C', '#1A1A1A', '#1A1A1A', '#171717', '#171717', '#141414', '#141414', '#121212', '#121212', '#0F0F0F', '#0F0F0F', '#0D0D0D', '#0D0D0D', '#0A0A0A', '#0A0A0A', '#080808', '#080808', '#050505', '#050505', '#030303', '#030303', '#000000', '#000000', '#000000', '#000000', '#000000', '#000000'] \ No newline at end of file
diff --git a/frontend/imgrid/colors/js/wrkshp/maker.py b/frontend/imgrid/colors/js/wrkshp/maker.py
new file mode 100755
index 0000000..65209aa
--- /dev/null
+++ b/frontend/imgrid/colors/js/wrkshp/maker.py
@@ -0,0 +1,33 @@
+#!/usr/bin/python2.7
+
+
+
+hexlist = ['#FFFAFA', '#FFFAFA', '#EEE9E9', '#FFC1C1', '#EEB4B4', '#CDC9C9', '#F08080', '#FF6A6A', '#CD9B9B', '#EE6363', '#BC8F8F', '#FF4040', '#FF3030', '#EE3B3B', '#CD5C5C', '#CD5555', '#EE2C2C', '#8B8989', '#CD3333', '#FF0000', '#FF0000', '#8B6969', '#CD2626', '#EE0000', '#B22222', '#A52A2A', '#CD0000', '#8B3A3A', '#8B2323', '#8B1A1A', '#8B0000', '#8B0000', '#800000', '#FFAEB9', '#CD8C95', '#8B5F65', '#EEA2AD', '#FFB6C1', '#FFC0CB', '#DC143C', '#FFB5C5', '#EEA9B8', '#CD919E', '#8B636C', '#8B475D', '#DB7093', '#EE799F', '#FF82AB', '#CD6889', '#FFF0F5', '#FFF0F5', '#CDC1C5', '#EEE0E5', '#8B8386', '#B03060', '#CD6090', '#CD3278', '#FF3E96', '#EE3A8C', '#8B2252', '#EE6AA7', '#FF6EB4', '#8B3A62', '#FF69B4', '#FF1493', '#FF1493', '#EE1289', '#CD1076', '#8B0A50', '#FF34B3', '#EE30A7', '#CD2990', '#8B1C62', '#C71585', '#D02090', '#EE7AE9', '#DA70D6', '#FF83FA', '#CD69C9', '#8B4789', '#FFE1FF', '#EED2EE', '#FFBBFF', '#EEAEEE', '#D8BFD8', '#CDB5CD', '#DDA0DD', '#EE82EE', '#CD96CD', '#8B7B8B', '#FF00FF', '#FF00FF', '#FF00FF', '#8B668B', '#EE00EE', '#CD00CD', '#8B008B', '#8B008B', '#800080', '#BA55D3', '#E066FF', '#D15FEE', '#B452CD', '#7A378B', '#9400D3', '#9932CC', '#BF3EFF', '#9A32CD', '#B23AEE', '#68228B', '#A020F0', '#4B0082', '#8A2BE2', '#912CEE', '#7D26CD', '#551A8B', '#9B30FF', '#9370DB', '#AB82FF', '#9F79EE', '#8968CD', '#5D478B', '#483D8B', '#8470FF', '#7B68EE', '#6A5ACD', '#836FFF', '#7A67EE', '#6959CD', '#473C8B', '#F8F8FF', '#E6E6FA', '#0000FF', '#0000FF', '#0000EE', '#0000CD', '#0000CD', '#00008B', '#00008B', '#191970', '#000080', '#000080', '#4169E1', '#4876FF', '#436EEE', '#3A5FCD', '#27408B', '#6495ED', '#B0C4DE', '#CAE1FF', '#BCD2EE', '#A2B5CD', '#6E7B8B', '#6C7B8B', '#C6E2FF', '#B9D3EE', '#9FB6CD', '#778899', '#778899', '#708090', '#708090', '#1E90FF', '#1E90FF', '#1C86EE', '#104E8B', '#1874CD', '#F0F8FF', '#36648B', '#4682B4', '#63B8FF', '#5CACEE', '#4F94CD', '#4A708B', '#87CEFF', '#7EC0EE', '#6CA6CD', '#87CEFA', '#607B8B', '#B0E2FF', '#A4D3EE', '#8DB6CD', '#87CEEB', '#9AC0CD', '#00BFFF', '#00BFFF', '#00B2EE', '#00688B', '#009ACD', '#BFEFFF', '#B2DFEE', '#ADD8E6', '#68838B', '#B0E0E6', '#98F5FF', '#8EE5EE', '#7AC5CD', '#53868B', '#00F5FF', '#00E5EE', '#00C5CD', '#00868B', '#5F9EA0', '#5F9EA0', '#00CED1', '#F0FFFF', '#F0FFFF', '#E0FFFF', '#E0FFFF', '#E0EEEE', '#D1EEEE', '#BBFFFF', '#AFEEEE', '#AEEEEE', '#97FFFF', '#C1CDCD', '#B4CDCD', '#8DEEEE', '#96CDCD', '#79CDCD', '#838B8B', '#7A8B8B', '#00FFFF', '#00FFFF', '#00FFFF', '#668B8B', '#00EEEE', '#528B8B', '#00CDCD', '#008B8B', '#008B8B', '#008080', '#2F4F4F', '#2F4F4F', '#48D1CC', '#20B2AA', '#40E0D0', '#458B74', '#7FFFD4', '#7FFFD4', '#76EEC6', '#66CDAA', '#66CDAA', '#00FA9A', '#F5FFFA', '#00FF7F', '#00FF7F', '#00EE76', '#00CD66', '#008B45', '#3CB371', '#2E8B57', '#43CD80', '#54FF9F', '#2E8B57', '#4EEE94', '#32814B', '#F0FFF0', '#F0FFF0', '#E0EEE0', '#C1FFC1', '#B4EEB4', '#9AFF9A', '#98FB98', '#C1CDC1', '#90EE90', '#90EE90', '#9BCD9B', '#8FBC8F', '#7CCD7C', '#838B83', '#00FF00', '#00FF00', '#32CD32', '#698B69', '#00EE00', '#548B54', '#00CD00', '#228B22', '#008B00', '#008000', '#006400', '#7CFC00', '#7FFF00', '#7FFF00', '#76EE00', '#66CD00', '#458B00', '#ADFF2F', '#A2CD5A', '#CAFF70', '#BCEE68', '#6E8B3D', '#556B2F', '#6B8E23', '#C0FF3E', '#B3EE3A', '#9ACD32', '#9ACD32', '#698B22', '#FFFFF0', '#FFFFF0', '#FFFFE0', '#FFFFE0', '#F5F5DC', '#EEEEE0', '#FAFAD2', '#EEEED1', '#CDCDC1', '#CDCDB4', '#8B8B83', '#8B8B7A', '#FFFF00', '#FFFF00', '#EEEE00', '#CDCD00', '#8B8B00', '#808000', '#BDB76B', '#EEE685', '#8B8970', '#FFF68F', '#CDC673', '#8B864E', '#EEE8AA', '#FFFACD', '#FFFACD', '#F0E68C', '#CDC9A5', '#EEE9BF', '#D1C166', '#8B8878', '#FFD700', '#FFD700', '#EEC900', '#CDAD00', '#8B7500', '#EEDD82', '#8B814C', '#FFEC8B', '#CDBE70', '#EEDC82', '#CDC8B1', '#EEE8CD', '#FFF8DC', '#FFF8DC', '#DAA520', '#FFC125', '#EEB422', '#CD9B1D', '#8B6914', '#B8860B', '#FFB90F', '#EEAD0E', '#CD950C', '#8B6508', '#FFFAF0', '#EED8AE', '#FDF5E6', '#F5DEB3', '#FFE7BA', '#CDBA96', '#FFA500', '#FFA500', '#EE9A00', '#CD8500', '#8B5A00', '#8B7E66', '#FFE4B5', '#FFEFD5', '#CDB38B', '#FFEBCD', '#FFDEAD', '#FFDEAD', '#EECFA1', '#8B795E', '#8B8378', '#FAEBD7', '#D2B48C', '#8B7D6B', '#DEB887', '#EEDFCC', '#FFD39B', '#CDAA7D', '#EEC591', '#FFEFDB', '#8B7355', '#CDC0B0', '#FF8C00', '#EED5B7', '#FFE4C4', '#FFE4C4', '#CDB79E', '#FF7F00', '#FAF0E6', '#EE7600', '#CD6600', '#8B4500', '#CD853F', '#FFA54F', '#EE9A49', '#CD853F', '#8B5A2B', '#FFDAB9', '#FFDAB9', '#8B7765', '#EECBAD', '#CDAF95', '#F4A460', '#8B8682', '#EEE5DE', '#CDC5BF', '#D2691E', '#FF7F24', '#EE7621', '#CD661D', '#8B4513', '#8B4513', '#FFF5EE', '#FFF5EE', '#8B4726', '#A0522D', '#FF8247', '#EE7942', '#CD6839', '#CD8162', '#FFA07A', '#FFA07A', '#8B5742', '#EE9572', '#FF7F50', '#FF4500', '#FF4500', '#EE4000', '#CD3700', '#8B2500', '#E9967A', '#FF8C69', '#EE8262', '#CD7054', '#8B4C39', '#FF7256', '#EE6A50', '#CD5B45', '#8B3E2F', '#8B3626', '#FF6347', '#FF6347', '#EE5C42', '#CD4F39', '#8B7D7B', '#EED5D2', '#FFE4E1', '#FFE4E1', '#FA8072', '#CDB7B5', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FFFFFF', '#FCFCFC', '#FCFCFC', '#FAFAFA', '#FAFAFA', '#F7F7F7', '#F7F7F7', '#F5F5F5', '#F5F5F5', '#F5F5F5', '#F2F2F2', '#F2F2F2', '#F0F0F0', '#F0F0F0', '#EDEDED', '#EDEDED', '#EBEBEB', '#EBEBEB', '#E8E8E8', '#E8E8E8', '#E5E5E5', '#E5E5E5', '#E3E3E3', '#E3E3E3', '#E0E0E0', '#E0E0E0', '#DEDEDE', '#DEDEDE', '#DCDCDC', '#DBDBDB', '#DBDBDB', '#D9D9D9', '#D9D9D9', '#D6D6D6', '#D6D6D6', '#D4D4D4', '#D4D4D4', '#D3D3D3', '#D3D3D3', '#D1D1D1', '#D1D1D1', '#CFCFCF', '#CFCFCF', '#CCCCCC', '#CCCCCC', '#C9C9C9', '#C9C9C9', '#C7C7C7', '#C7C7C7', '#C4C4C4', '#C4C4C4', '#C2C2C2', '#C2C2C2', '#C0C0C0', '#BFBFBF', '#BFBFBF', '#BDBDBD', '#BDBDBD', '#BABABA', '#BABABA', '#B8B8B8', '#B8B8B8', '#B5B5B5', '#B5B5B5', '#B3B3B3', '#B3B3B3', '#B0B0B0', '#B0B0B0', '#ADADAD', '#ADADAD', '#ABABAB', '#ABABAB', '#A9A9A9', '#A9A9A9', '#A8A8A8', '#A8A8A8', '#A6A6A6', '#A6A6A6', '#A3A3A3', '#A3A3A3', '#A1A1A1', '#A1A1A1', '#9E9E9E', '#9E9E9E', '#9C9C9C', '#9C9C9C', '#999999', '#999999', '#969696', '#969696', '#949494', '#949494', '#919191', '#919191', '#8F8F8F', '#8F8F8F', '#8C8C8C', '#8C8C8C', '#8A8A8A', '#8A8A8A', '#878787', '#878787', '#858585', '#858585', '#828282', '#828282', '#808080', '#7F7F7F', '#7F7F7F', '#7E7E7E', '#7D7D7D', '#7D7D7D', '#7A7A7A', '#7A7A7A', '#787878', '#787878', '#757575', '#757575', '#737373', '#737373', '#707070', '#707070', '#6E6E6E', '#6E6E6E', '#6B6B6B', '#6B6B6B', '#696969', '#696969', '#696969', '#696969', '#666666', '#666666', '#636363', '#636363', '#616161', '#616161', '#5E5E5E', '#5E5E5E', '#5C5C5C', '#5C5C5C', '#595959', '#595959', '#575757', '#575757', '#545454', '#545454', '#525252', '#525252', '#4F4F4F', '#4F4F4F', '#4D4D4D', '#4D4D4D', '#4A4A4A', '#4A4A4A', '#474747', '#474747', '#454545', '#454545', '#424242', '#424242', '#404040', '#404040', '#3D3D3D', '#3D3D3D', '#3B3B3B', '#3B3B3B', '#383838', '#383838', '#363636', '#363636', '#333333', '#333333', '#303030', '#303030', '#2E2E2E', '#2E2E2E', '#2B2B2B', '#2B2B2B', '#292929', '#292929', '#262626', '#262626', '#242424', '#242424', '#212121', '#212121', '#1F1F1F', '#1F1F1F', '#1C1C1C', '#1C1C1C', '#1A1A1A', '#1A1A1A', '#171717', '#171717', '#141414', '#141414', '#121212', '#121212', '#0F0F0F', '#0F0F0F', '#0D0D0D', '#0D0D0D', '#0A0A0A', '#0A0A0A', '#080808', '#080808', '#050505', '#050505', '#030303', '#030303', '#000000', '#000000', '#000000', '#000000', '#000000', '#000000']
+rgblist = ['rgb(255, 250, 250)', 'rgb(255, 250, 250)', 'rgb(238, 233, 233)', 'rgb(255, 193, 193)', 'rgb(238, 180, 180)', 'rgb(205, 201, 201)', 'rgb(240, 128, 128)', 'rgb(255, 106, 106)', 'rgb(205, 155, 155)', 'rgb(238, 99, 99)', 'rgb(188, 143, 143)', 'rgb(255, 64, 64)', 'rgb(255, 48, 48)', 'rgb(238, 59, 59)', 'rgb(205, 92, 92)', 'rgb(205, 85, 85)', 'rgb(238, 44, 44)', 'rgb(139, 137, 137)', 'rgb(205, 51, 51)', 'rgb(255, 0, 0)', 'rgb(255, 0, 0)', 'rgb(139, 105, 105)', 'rgb(205, 38, 38)', 'rgb(238, 0, 0)', 'rgb(178, 34, 34)', 'rgb(165, 42, 42)', 'rgb(205, 0, 0)', 'rgb(139, 58, 58)', 'rgb(139, 35, 35)', 'rgb(139, 26, 26)', 'rgb(139, 0, 0)', 'rgb(139, 0, 0)', 'rgb(128, 0, 0)', 'rgb(255, 174, 185)', 'rgb(205, 140, 149)', 'rgb(139, 95, 101)', 'rgb(238, 162, 173)', 'rgb(255, 182, 193)', 'rgb(255, 192, 203)', 'rgb(220, 20, 60)', 'rgb(255, 181, 197)', 'rgb(238, 169, 184)', 'rgb(205, 145, 158)', 'rgb(139, 99, 108)', 'rgb(139, 71, 93)', 'rgb(219, 112, 147)', 'rgb(238, 121, 159)', 'rgb(255, 130, 171)', 'rgb(205, 104, 137)', 'rgb(255, 240, 245)', 'rgb(255, 240, 245)', 'rgb(205, 193, 197)', 'rgb(238, 224, 229)', 'rgb(139, 131, 134)', 'rgb(176, 48, 96)', 'rgb(205, 96, 144)', 'rgb(205, 50, 120)', 'rgb(255, 62, 150)', 'rgb(238, 58, 140)', 'rgb(139, 34, 82)', 'rgb(238, 106, 167)', 'rgb(255, 110, 180)', 'rgb(139, 58, 98)', 'rgb(255, 105, 180)', 'rgb(255, 20, 147)', 'rgb(255, 20, 147)', 'rgb(238, 18, 137)', 'rgb(205, 16, 118)', 'rgb(139, 10, 80)', 'rgb(255, 52, 179)', 'rgb(238, 48, 167)', 'rgb(205, 41, 144)', 'rgb(139, 28, 98)', 'rgb(199, 21, 133)', 'rgb(208, 32, 144)', 'rgb(238, 122, 233)', 'rgb(218, 112, 214)', 'rgb(255, 131, 250)', 'rgb(205, 105, 201)', 'rgb(139, 71, 137)', 'rgb(255, 225, 255)', 'rgb(238, 210, 238)', 'rgb(255, 187, 255)', 'rgb(238, 174, 238)', 'rgb(216, 191, 216)', 'rgb(205, 181, 205)', 'rgb(221, 160, 221)', 'rgb(238, 130, 238)', 'rgb(205, 150, 205)', 'rgb(139, 123, 139)', 'rgb(255, 0, 255)', 'rgb(255, 0, 255)', 'rgb(255, 0, 255)', 'rgb(139, 102, 139)', 'rgb(238, 0, 238)', 'rgb(205, 0, 205)', 'rgb(139, 0, 139)', 'rgb(139, 0, 139)', 'rgb(128, 0, 128)', 'rgb(186, 85, 211)', 'rgb(224, 102, 255)', 'rgb(209, 95, 238)', 'rgb(180, 82, 205)', 'rgb(122, 55, 139)', 'rgb(148, 0, 211)', 'rgb(153, 50, 204)', 'rgb(191, 62, 255)', 'rgb(154, 50, 205)', 'rgb(178, 58, 238)', 'rgb(104, 34, 139)', 'rgb(160, 32, 240)', 'rgb( 75, 0, 130)', 'rgb(138, 43, 226)', 'rgb(145, 44, 238)', 'rgb(125, 38, 205)', 'rgb( 85, 26, 139)', 'rgb(155, 48, 255)', 'rgb(147, 112, 219)', 'rgb(171, 130, 255)', 'rgb(159, 121, 238)', 'rgb(137, 104, 205)', 'rgb( 93, 71, 139)', 'rgb( 72, 61, 139)', 'rgb(132, 112, 255)', 'rgb(123, 104, 238)', 'rgb(106, 90, 205)', 'rgb(131, 111, 255)', 'rgb(122, 103, 238)', 'rgb(105, 89, 205)', 'rgb( 71, 60, 139)', 'rgb(248, 248, 255)', 'rgb(230, 230, 250)', 'rgb( 0, 0, 255)', 'rgb( 0, 0, 255)', 'rgb( 0, 0, 238)', 'rgb( 0, 0, 205)', 'rgb( 0, 0, 205)', 'rgb( 0, 0, 139)', 'rgb( 0, 0, 139)', 'rgb( 25, 25, 112)', 'rgb( 0, 0, 128)', 'rgb( 0, 0, 128)', 'rgb( 65, 105, 225)', 'rgb( 72, 118, 255)', 'rgb( 67, 110, 238)', 'rgb( 58, 95, 205)', 'rgb( 39, 64, 139)', 'rgb(100, 149, 237)', 'rgb(176, 196, 222)', 'rgb(202, 225, 255)', 'rgb(188, 210, 238)', 'rgb(162, 181, 205)', 'rgb(110, 123, 139)', 'rgb(108, 123, 139)', 'rgb(198, 226, 255)', 'rgb(185, 211, 238)', 'rgb(159, 182, 205)', 'rgb(119, 136, 153)', 'rgb(119, 136, 153)', 'rgb(112, 128, 144)', 'rgb(112, 128, 144)', 'rgb( 30, 144, 255)', 'rgb( 30, 144, 255)', 'rgb( 28, 134, 238)', 'rgb( 16, 78, 139)', 'rgb( 24, 116, 205)', 'rgb(240, 248, 255)', 'rgb( 54, 100, 139)', 'rgb( 70, 130, 180)', 'rgb( 99, 184, 255)', 'rgb( 92, 172, 238)', 'rgb( 79, 148, 205)', 'rgb( 74, 112, 139)', 'rgb(135, 206, 255)', 'rgb(126, 192, 238)', 'rgb(108, 166, 205)', 'rgb(135, 206, 250)', 'rgb( 96, 123, 139)', 'rgb(176, 226, 255)', 'rgb(164, 211, 238)', 'rgb(141, 182, 205)', 'rgb(135, 206, 235)', 'rgb(154, 192, 205)', 'rgb( 0, 191, 255)', 'rgb( 0, 191, 255)', 'rgb( 0, 178, 238)', 'rgb( 0, 104, 139)', 'rgb( 0, 154, 205)', 'rgb(191, 239, 255)', 'rgb(178, 223, 238)', 'rgb(173, 216, 230)', 'rgb(104, 131, 139)', 'rgb(176, 224, 230)', 'rgb(152, 245, 255)', 'rgb(142, 229, 238)', 'rgb(122, 197, 205)', 'rgb( 83, 134, 139)', 'rgb( 0, 245, 255)', 'rgb( 0, 229, 238)', 'rgb( 0, 197, 205)', 'rgb( 0, 134, 139)', 'rgb( 95, 158, 160)', 'rgb( 95, 158, 160)', 'rgb( 0, 206, 209)', 'rgb(240, 255, 255)', 'rgb(240, 255, 255)', 'rgb(224, 255, 255)', 'rgb(224, 255, 255)', 'rgb(224, 238, 238)', 'rgb(209, 238, 238)', 'rgb(187, 255, 255)', 'rgb(175, 238, 238)', 'rgb(174, 238, 238)', 'rgb(151, 255, 255)', 'rgb(193, 205, 205)', 'rgb(180, 205, 205)', 'rgb(141, 238, 238)', 'rgb(150, 205, 205)', 'rgb(121, 205, 205)', 'rgb(131, 139, 139)', 'rgb(122, 139, 139)', 'rgb( 0, 255, 255)', 'rgb( 0, 255, 255)', 'rgb( 0, 255, 255)', 'rgb(102, 139, 139)', 'rgb( 0, 238, 238)', 'rgb( 82, 139, 139)', 'rgb( 0, 205, 205)', 'rgb( 0, 139, 139)', 'rgb( 0, 139, 139)', 'rgb( 0, 128, 128)', 'rgb( 47, 79, 79)', 'rgb( 47, 79, 79)', 'rgb( 72, 209, 204)', 'rgb( 32, 178, 170)', 'rgb( 64, 224, 208)', 'rgb( 69, 139, 116)', 'rgb(127, 255, 212)', 'rgb(127, 255, 212)', 'rgb(118, 238, 198)', 'rgb(102, 205, 170)', 'rgb(102, 205, 170)', 'rgb( 0, 250, 154)', 'rgb(245, 255, 250)', 'rgb( 0, 255, 127)', 'rgb( 0, 255, 127)', 'rgb( 0, 238, 118)', 'rgb( 0, 205, 102)', 'rgb( 0, 139, 69)', 'rgb( 60, 179, 113)', 'rgb( 46, 139, 87)', 'rgb( 67, 205, 128)', 'rgb( 84, 255, 159)', 'rgb( 46, 139, 87)', 'rgb( 78, 238, 148)', 'rgb( 50, 129, 75)', 'rgb(240, 255, 240)', 'rgb(240, 255, 240)', 'rgb(224, 238, 224)', 'rgb(193, 255, 193)', 'rgb(180, 238, 180)', 'rgb(154, 255, 154)', 'rgb(152, 251, 152)', 'rgb(193, 205, 193)', 'rgb(144, 238, 144)', 'rgb(144, 238, 144)', 'rgb(155, 205, 155)', 'rgb(143, 188, 143)', 'rgb(124, 205, 124)', 'rgb(131, 139, 131)', 'rgb( 0, 255, 0)', 'rgb( 0, 255, 0)', 'rgb( 50, 205, 50)', 'rgb(105, 139, 105)', 'rgb( 0, 238, 0)', 'rgb( 84, 139, 84)', 'rgb( 0, 205, 0)', 'rgb( 34, 139, 34)', 'rgb( 0, 139, 0)', 'rgb( 0, 128, 0)', 'rgb( 0, 100, 0)', 'rgb(124, 252, 0)', 'rgb(127, 255, 0)', 'rgb(127, 255, 0)', 'rgb(118, 238, 0)', 'rgb(102, 205, 0)', 'rgb( 69, 139, 0)', 'rgb(173, 255, 47)', 'rgb(162, 205, 90)', 'rgb(202, 255, 112)', 'rgb(188, 238, 104)', 'rgb(110, 139, 61)', 'rgb( 85, 107, 47)', 'rgb(107, 142, 35)', 'rgb(192, 255, 62)', 'rgb(179, 238, 58)', 'rgb(154, 205, 50)', 'rgb(154, 205, 50)', 'rgb(105, 139, 34)', 'rgb(255, 255, 240)', 'rgb(255, 255, 240)', 'rgb(255, 255, 224)', 'rgb(255, 255, 224)', 'rgb(245, 245, 220)', 'rgb(238, 238, 224)', 'rgb(250, 250, 210)', 'rgb(238, 238, 209)', 'rgb(205, 205, 193)', 'rgb(205, 205, 180)', 'rgb(139, 139, 131)', 'rgb(139, 139, 122)', 'rgb(255, 255, 0)', 'rgb(255, 255, 0)', 'rgb(238, 238, 0)', 'rgb(205, 205, 0)', 'rgb(139, 139, 0)', 'rgb(128, 128, 0)', 'rgb(189, 183, 107)', 'rgb(238, 230, 133)', 'rgb(139, 137, 112)', 'rgb(255, 246, 143)', 'rgb(205, 198, 115)', 'rgb(139, 134, 78)', 'rgb(238, 232, 170)', 'rgb(255, 250, 205)', 'rgb(255, 250, 205)', 'rgb(240, 230, 140)', 'rgb(205, 201, 165)', 'rgb(238, 233, 191)', 'rgb(209, 193, 102)', 'rgb(139, 136, 120)', 'rgb(255, 215, 0)', 'rgb(255, 215, 0)', 'rgb(238, 201, 0)', 'rgb(205, 173, 0)', 'rgb(139, 117, 0)', 'rgb(238, 221, 130)', 'rgb(139, 129, 76)', 'rgb(255, 236, 139)', 'rgb(205, 190, 112)', 'rgb(238, 220, 130)', 'rgb(205, 200, 177)', 'rgb(238, 232, 205)', 'rgb(255, 248, 220)', 'rgb(255, 248, 220)', 'rgb(218, 165, 32)', 'rgb(255, 193, 37)', 'rgb(238, 180, 34)', 'rgb(205, 155, 29)', 'rgb(139, 105, 20)', 'rgb(184, 134, 11)', 'rgb(255, 185, 15)', 'rgb(238, 173, 14)', 'rgb(205, 149, 12)', 'rgb(139, 101, 8)', 'rgb(255, 250, 240)', 'rgb(238, 216, 174)', 'rgb(253, 245, 230)', 'rgb(245, 222, 179)', 'rgb(255, 231, 186)', 'rgb(205, 186, 150)', 'rgb(255, 165, 0)', 'rgb(255, 165, 0)', 'rgb(238, 154, 0)', 'rgb(205, 133, 0)', 'rgb(139, 90, 0)', 'rgb(139, 126, 102)', 'rgb(255, 228, 181)', 'rgb(255, 239, 213)', 'rgb(205, 179, 139)', 'rgb(255, 235, 205)', 'rgb(255, 222, 173)', 'rgb(255, 222, 173)', 'rgb(238, 207, 161)', 'rgb(139, 121, 94)', 'rgb(139, 131, 120)', 'rgb(250, 235, 215)', 'rgb(210, 180, 140)', 'rgb(139, 125, 107)', 'rgb(222, 184, 135)', 'rgb(238, 223, 204)', 'rgb(255, 211, 155)', 'rgb(205, 170, 125)', 'rgb(238, 197, 145)', 'rgb(255, 239, 219)', 'rgb(139, 115, 85)', 'rgb(205, 192, 176)', 'rgb(255, 140, 0)', 'rgb(238, 213, 183)', 'rgb(255, 228, 196)', 'rgb(255, 228, 196)', 'rgb(205, 183, 158)', 'rgb(255, 127, 0)', 'rgb(250, 240, 230)', 'rgb(238, 118, 0)', 'rgb(205, 102, 0)', 'rgb(139, 69, 0)', 'rgb(205, 133, 63)', 'rgb(255, 165, 79)', 'rgb(238, 154, 73)', 'rgb(205, 133, 63)', 'rgb(139, 90, 43)', 'rgb(255, 218, 185)', 'rgb(255, 218, 185)', 'rgb(139, 119, 101)', 'rgb(238, 203, 173)', 'rgb(205, 175, 149)', 'rgb(244, 164, 96)', 'rgb(139, 134, 130)', 'rgb(238, 229, 222)', 'rgb(205, 197, 191)', 'rgb(210, 105, 30)', 'rgb(255, 127, 36)', 'rgb(238, 118, 33)', 'rgb(205, 102, 29)', 'rgb(139, 69, 19)', 'rgb(139, 69, 19)', 'rgb(255, 245, 238)', 'rgb(255, 245, 238)', 'rgb(139, 71, 38)', 'rgb(160, 82, 45)', 'rgb(255, 130, 71)', 'rgb(238, 121, 66)', 'rgb(205, 104, 57)', 'rgb(205, 129, 98)', 'rgb(255, 160, 122)', 'rgb(255, 160, 122)', 'rgb(139, 87, 66)', 'rgb(238, 149, 114)', 'rgb(255, 127, 80)', 'rgb(255, 69, 0)', 'rgb(255, 69, 0)', 'rgb(238, 64, 0)', 'rgb(205, 55, 0)', 'rgb(139, 37, 0)', 'rgb(233, 150, 122)', 'rgb(255, 140, 105)', 'rgb(238, 130, 98)', 'rgb(205, 112, 84)', 'rgb(139, 76, 57)', 'rgb(255, 114, 86)', 'rgb(238, 106, 80)', 'rgb(205, 91, 69)', 'rgb(139, 62, 47)', 'rgb(139, 54, 38)', 'rgb(255, 99, 71)', 'rgb(255, 99, 71)', 'rgb(238, 92, 66)', 'rgb(205, 79, 57)', 'rgb(139, 125, 123)', 'rgb(238, 213, 210)', 'rgb(255, 228, 225)', 'rgb(255, 228, 225)', 'rgb(250, 128, 114)', 'rgb(205, 183, 181)', 'rgb(255, 255, 255)', 'rgb(255, 255, 255)', 'rgb(255, 255, 255)', 'rgb(255, 255, 255)', 'rgb(252, 252, 252)', 'rgb(252, 252, 252)', 'rgb(250, 250, 250)', 'rgb(250, 250, 250)', 'rgb(247, 247, 247)', 'rgb(247, 247, 247)', 'rgb(245, 245, 245)', 'rgb(245, 245, 245)', 'rgb(245, 245, 245)', 'rgb(242, 242, 242)', 'rgb(242, 242, 242)', 'rgb(240, 240, 240)', 'rgb(240, 240, 240)', 'rgb(237, 237, 237)', 'rgb(237, 237, 237)', 'rgb(235, 235, 235)', 'rgb(235, 235, 235)', 'rgb(232, 232, 232)', 'rgb(232, 232, 232)', 'rgb(229, 229, 229)', 'rgb(229, 229, 229)', 'rgb(227, 227, 227)', 'rgb(227, 227, 227)', 'rgb(224, 224, 224)', 'rgb(224, 224, 224)', 'rgb(222, 222, 222)', 'rgb(222, 222, 222)', 'rgb(220, 220, 220)', 'rgb(219, 219, 219)', 'rgb(219, 219, 219)', 'rgb(217, 217, 217)', 'rgb(217, 217, 217)', 'rgb(214, 214, 214)', 'rgb(214, 214, 214)', 'rgb(212, 212, 212)', 'rgb(212, 212, 212)', 'rgb(211, 211, 211)', 'rgb(211, 211, 211)', 'rgb(209, 209, 209)', 'rgb(209, 209, 209)', 'rgb(207, 207, 207)', 'rgb(207, 207, 207)', 'rgb(204, 204, 204)', 'rgb(204, 204, 204)', 'rgb(201, 201, 201)', 'rgb(201, 201, 201)', 'rgb(199, 199, 199)', 'rgb(199, 199, 199)', 'rgb(196, 196, 196)', 'rgb(196, 196, 196)', 'rgb(194, 194, 194)', 'rgb(194, 194, 194)', 'rgb(192, 192, 192)', 'rgb(191, 191, 191)', 'rgb(191, 191, 191)', 'rgb(189, 189, 189)', 'rgb(189, 189, 189)', 'rgb(186, 186, 186)', 'rgb(186, 186, 186)', 'rgb(184, 184, 184)', 'rgb(184, 184, 184)', 'rgb(181, 181, 181)', 'rgb(181, 181, 181)', 'rgb(179, 179, 179)', 'rgb(179, 179, 179)', 'rgb(176, 176, 176)', 'rgb(176, 176, 176)', 'rgb(173, 173, 173)', 'rgb(173, 173, 173)', 'rgb(171, 171, 171)', 'rgb(171, 171, 171)', 'rgb(169, 169, 169)', 'rgb(169, 169, 169)', 'rgb(168, 168, 168)', 'rgb(168, 168, 168)', 'rgb(166, 166, 166)', 'rgb(166, 166, 166)', 'rgb(163, 163, 163)', 'rgb(163, 163, 163)', 'rgb(161, 161, 161)', 'rgb(161, 161, 161)', 'rgb(158, 158, 158)', 'rgb(158, 158, 158)', 'rgb(156, 156, 156)', 'rgb(156, 156, 156)', 'rgb(153, 153, 153)', 'rgb(153, 153, 153)', 'rgb(150, 150, 150)', 'rgb(150, 150, 150)', 'rgb(148, 148, 148)', 'rgb(148, 148, 148)', 'rgb(145, 145, 145)', 'rgb(145, 145, 145)', 'rgb(143, 143, 143)', 'rgb(143, 143, 143)', 'rgb(140, 140, 140)', 'rgb(140, 140, 140)', 'rgb(138, 138, 138)', 'rgb(138, 138, 138)', 'rgb(135, 135, 135)', 'rgb(135, 135, 135)', 'rgb(133, 133, 133)', 'rgb(133, 133, 133)', 'rgb(130, 130, 130)', 'rgb(130, 130, 130)', 'rgb(128, 128, 128)', 'rgb(127, 127, 127)', 'rgb(127, 127, 127)', 'rgb(126, 126, 126)', 'rgb(125, 125, 125)', 'rgb(125, 125, 125)', 'rgb(122, 122, 122)', 'rgb(122, 122, 122)', 'rgb(120, 120, 120)', 'rgb(120, 120, 120)', 'rgb(117, 117, 117)', 'rgb(117, 117, 117)', 'rgb(115, 115, 115)', 'rgb(115, 115, 115)', 'rgb(112, 112, 112)', 'rgb(112, 112, 112)', 'rgb(110, 110, 110)', 'rgb(110, 110, 110)', 'rgb(107, 107, 107)', 'rgb(107, 107, 107)', 'rgb(105, 105, 105)', 'rgb(105, 105, 105)', 'rgb(105, 105, 105)', 'rgb(105, 105, 105)', 'rgb(102, 102, 102)', 'rgb(102, 102, 102)', 'rgb( 99, 99, 99)', 'rgb( 99, 99, 99)', 'rgb( 97, 97, 97)', 'rgb( 97, 97, 97)', 'rgb( 94, 94, 94)', 'rgb( 94, 94, 94)', 'rgb( 92, 92, 92)', 'rgb( 92, 92, 92)', 'rgb( 89, 89, 89)', 'rgb( 89, 89, 89)', 'rgb( 87, 87, 87)', 'rgb( 87, 87, 87)', 'rgb( 84, 84, 84)', 'rgb( 84, 84, 84)', 'rgb( 82, 82, 82)', 'rgb( 82, 82, 82)', 'rgb( 79, 79, 79)', 'rgb( 79, 79, 79)', 'rgb( 77, 77, 77)', 'rgb( 77, 77, 77)', 'rgb( 74, 74, 74)', 'rgb( 74, 74, 74)', 'rgb( 71, 71, 71)', 'rgb( 71, 71, 71)', 'rgb( 69, 69, 69)', 'rgb( 69, 69, 69)', 'rgb( 66, 66, 66)', 'rgb( 66, 66, 66)', 'rgb( 64, 64, 64)', 'rgb( 64, 64, 64)', 'rgb( 61, 61, 61)', 'rgb( 61, 61, 61)', 'rgb( 59, 59, 59)', 'rgb( 59, 59, 59)', 'rgb( 56, 56, 56)', 'rgb( 56, 56, 56)', 'rgb( 54, 54, 54)', 'rgb( 54, 54, 54)', 'rgb( 51, 51, 51)', 'rgb( 51, 51, 51)', 'rgb( 48, 48, 48)', 'rgb( 48, 48, 48)', 'rgb( 46, 46, 46)', 'rgb( 46, 46, 46)', 'rgb( 43, 43, 43)', 'rgb( 43, 43, 43)', 'rgb( 41, 41, 41)', 'rgb( 41, 41, 41)', 'rgb( 38, 38, 38)', 'rgb( 38, 38, 38)', 'rgb( 36, 36, 36)', 'rgb( 36, 36, 36)', 'rgb( 33, 33, 33)', 'rgb( 33, 33, 33)', 'rgb( 31, 31, 31)', 'rgb( 31, 31, 31)', 'rgb( 28, 28, 28)', 'rgb( 28, 28, 28)', 'rgb( 26, 26, 26)', 'rgb( 26, 26, 26)', 'rgb( 23, 23, 23)', 'rgb( 23, 23, 23)', 'rgb( 20, 20, 20)', 'rgb( 20, 20, 20)', 'rgb( 18, 18, 18)', 'rgb( 18, 18, 18)', 'rgb( 15, 15, 15)', 'rgb( 15, 15, 15)', 'rgb( 13, 13, 13)', 'rgb( 13, 13, 13)', 'rgb( 10, 10, 10)', 'rgb( 10, 10, 10)', 'rgb( 8, 8, 8)', 'rgb( 8, 8, 8)', 'rgb( 5, 5, 5)', 'rgb( 5, 5, 5)', 'rgb( 3, 3, 3)', 'rgb( 3, 3, 3)', 'rgb( 0, 0, 0)', 'rgb( 0, 0, 0)', 'rgb( 0, 0, 0)', 'rgb( 0, 0, 0)', 'white', 'white']
+namelist = ['snow', 'snow1', 'snow2', 'RosyBrown1', 'RosyBrown2', 'snow3', 'LightCoral', 'IndianRed1', 'RosyBrown3', 'IndianRed2', 'RosyBrown', 'brown1', 'firebrick1', 'brown2', 'IndianRed', 'IndianRed3', 'firebrick2', 'snow4', 'brown3', 'red', 'red1', 'RosyBrown4', 'firebrick3', 'red2', 'firebrick', 'brown', 'red3', 'IndianRed4', 'brown4', 'firebrick4', 'DarkRed', 'red4', 'maroon', 'LightPink1', 'LightPink3', 'LightPink4', 'LightPink2', 'LightPink', 'pink', 'crimson', 'pink1', 'pink2', 'pink3', 'pink4', 'PaleVioletRed4', 'PaleVioletRed', 'PaleVioletRed2', 'PaleVioletRed1', 'PaleVioletRed3', 'LavenderBlush', 'LavenderBlush1', 'LavenderBlush3', 'LavenderBlush2', 'LavenderBlush4', 'maroon', 'HotPink3', 'VioletRed3', 'VioletRed1', 'VioletRed2', 'VioletRed4', 'HotPink2', 'HotPink1', 'HotPink4', 'HotPink', 'DeepPink', 'DeepPink1', 'DeepPink2', 'DeepPink3', 'DeepPink4', 'maroon1', 'maroon2', 'maroon3', 'maroon4', 'MediumVioletRed', 'VioletRed', 'orchid2', 'orchid', 'orchid1', 'orchid3', 'orchid4', 'thistle1', 'thistle2', 'plum1', 'plum2', 'thistle', 'thistle3', 'plum', 'violet', 'plum3', 'thistle4', 'fuchsia', 'magenta', 'magenta1', 'plum4', 'magenta2', 'magenta3', 'DarkMagenta', 'magenta4', 'purple', 'MediumOrchid', 'MediumOrchid1', 'MediumOrchid2', 'MediumOrchid3', 'MediumOrchid4', 'DarkViolet', 'DarkOrchid', 'DarkOrchid1', 'DarkOrchid3', 'DarkOrchid2', 'DarkOrchid4', 'purple', 'indigo', 'BlueViolet', 'purple2', 'purple3', 'purple4', 'purple1', 'MediumPurple', 'MediumPurple1', 'MediumPurple2', 'MediumPurple3', 'MediumPurple4', 'DarkSlateBlue', 'LightSlateBlue', 'MediumSlateBlue', 'SlateBlue', 'SlateBlue1', 'SlateBlue2', 'SlateBlue3', 'SlateBlue4', 'GhostWhite', 'lavender', 'blue', 'blue1', 'blue2', 'blue3', 'MediumBlue', 'blue4', 'DarkBlue', 'MidnightBlue', 'navy', 'NavyBlue', 'RoyalBlue', 'RoyalBlue1', 'RoyalBlue2', 'RoyalBlue3', 'RoyalBlue4', 'CornflowerBlue', 'LightSteelBlue', 'LightSteelBlue1', 'LightSteelBlue2', 'LightSteelBlue3', 'LightSteelBlue4', 'SlateGray4', 'SlateGray1', 'SlateGray2', 'SlateGray3', 'LightSlateGray', 'LightSlateGrey', 'SlateGray', 'SlateGrey', 'DodgerBlue', 'DodgerBlue1', 'DodgerBlue2', 'DodgerBlue4', 'DodgerBlue3', 'AliceBlue', 'SteelBlue4', 'SteelBlue', 'SteelBlue1', 'SteelBlue2', 'SteelBlue3', 'SkyBlue4', 'SkyBlue1', 'SkyBlue2', 'SkyBlue3', 'LightSkyBlue', 'LightSkyBlue4', 'LightSkyBlue1', 'LightSkyBlue2', 'LightSkyBlue3', 'SkyBlue', 'LightBlue3', 'DeepSkyBlue', 'DeepSkyBlue1', 'DeepSkyBlue2', 'DeepSkyBlue4', 'DeepSkyBlue3', 'LightBlue1', 'LightBlue2', 'LightBlue', 'LightBlue4', 'PowderBlue', 'CadetBlue1', 'CadetBlue2', 'CadetBlue3', 'CadetBlue4', 'turquoise1', 'turquoise2', 'turquoise3', 'turquoise4', 'cadet blue', 'CadetBlue', 'DarkTurquoise', 'azure', 'azure1', 'LightCyan', 'LightCyan1', 'azure2', 'LightCyan2', 'PaleTurquoise1', 'PaleTurquoise', 'PaleTurquoise2', 'DarkSlateGray1', 'azure3', 'LightCyan3', 'DarkSlateGray2', 'PaleTurquoise3', 'DarkSlateGray3', 'azure4', 'LightCyan4', 'aqua', 'cyan', 'cyan1', 'PaleTurquoise4', 'cyan2', 'DarkSlateGray4', 'cyan3', 'cyan4', 'DarkCyan', 'teal', 'DarkSlateGray', 'DarkSlateGrey', 'MediumTurquoise', 'LightSeaGreen', 'turquoise', 'aquamarine4', 'aquamarine', 'aquamarine1', 'aquamarine2', 'aquamarine3', 'MediumAquamarine', 'MediumSpringGreen', 'MintCream', 'SpringGreen', 'SpringGreen1', 'SpringGreen2', 'SpringGreen3', 'SpringGreen4', 'MediumSeaGreen', 'SeaGreen', 'SeaGreen3', 'SeaGreen1', 'SeaGreen4', 'SeaGreen2', 'MediumForestGreen', 'honeydew', 'honeydew1', 'honeydew2', 'DarkSeaGreen1', 'DarkSeaGreen2', 'PaleGreen1', 'PaleGreen', 'honeydew3', 'LightGreen', 'PaleGreen2', 'DarkSeaGreen3', 'DarkSeaGreen', 'PaleGreen3', 'honeydew4', 'green1', 'lime', 'LimeGreen', 'DarkSeaGreen4', 'green2', 'PaleGreen4', 'green3', 'ForestGreen', 'green4', 'green', 'DarkGreen', 'LawnGreen', 'chartreuse', 'chartreuse1', 'chartreuse2', 'chartreuse3', 'chartreuse4', 'GreenYellow', 'DarkOliveGreen3', 'DarkOliveGreen1', 'DarkOliveGreen2', 'DarkOliveGreen4', 'DarkOliveGreen', 'OliveDrab', 'OliveDrab1', 'OliveDrab2', 'OliveDrab3', 'YellowGreen', 'OliveDrab4', 'ivory', 'ivory1', 'LightYellow', 'LightYellow1', 'beige', 'ivory2', 'LightGoldenrodYellow', 'LightYellow2', 'ivory3', 'LightYellow3', 'ivory4', 'LightYellow4', 'yellow', 'yellow1', 'yellow2', 'yellow3', 'yellow4', 'olive', 'DarkKhaki', 'khaki2', 'LemonChiffon4', 'khaki1', 'khaki3', 'khaki4', 'PaleGoldenrod', 'LemonChiffon', 'LemonChiffon1', 'khaki', 'LemonChiffon3', 'LemonChiffon2', 'MediumGoldenRod', 'cornsilk4', 'gold', 'gold1', 'gold2', 'gold3', 'gold4', 'LightGoldenrod', 'LightGoldenrod4', 'LightGoldenrod1', 'LightGoldenrod3', 'LightGoldenrod2', 'cornsilk3', 'cornsilk2', 'cornsilk', 'cornsilk1', 'goldenrod', 'goldenrod1', 'goldenrod2', 'goldenrod3', 'goldenrod4', 'DarkGoldenrod', 'DarkGoldenrod1', 'DarkGoldenrod2', 'DarkGoldenrod3', 'DarkGoldenrod4', 'FloralWhite', 'wheat2', 'OldLace', 'wheat', 'wheat1', 'wheat3', 'orange', 'orange1', 'orange2', 'orange3', 'orange4', 'wheat4', 'moccasin', 'PapayaWhip', 'NavajoWhite3', 'BlanchedAlmond', 'NavajoWhite', 'NavajoWhite1', 'NavajoWhite2', 'NavajoWhite4', 'AntiqueWhite4', 'AntiqueWhite', 'tan', 'bisque4', 'burlywood', 'AntiqueWhite2', 'burlywood1', 'burlywood3', 'burlywood2', 'AntiqueWhite1', 'burlywood4', 'AntiqueWhite3', 'DarkOrange', 'bisque2', 'bisque', 'bisque1', 'bisque3', 'DarkOrange1', 'linen', 'DarkOrange2', 'DarkOrange3', 'DarkOrange4', 'peru', 'tan1', 'tan2', 'tan3', 'tan4', 'PeachPuff', 'PeachPuff1', 'PeachPuff4', 'PeachPuff2', 'PeachPuff3', 'SandyBrown', 'seashell4', 'seashell2', 'seashell3', 'chocolate', 'chocolate1', 'chocolate2', 'chocolate3', 'chocolate4', 'SaddleBrown', 'seashell', 'seashell1', 'sienna4', 'sienna', 'sienna1', 'sienna2', 'sienna3', 'LightSalmon3', 'LightSalmon', 'LightSalmon1', 'LightSalmon4', 'LightSalmon2', 'coral', 'OrangeRed', 'OrangeRed1', 'OrangeRed2', 'OrangeRed3', 'OrangeRed4', 'DarkSalmon', 'salmon1', 'salmon2', 'salmon3', 'salmon4', 'coral1', 'coral2', 'coral3', 'coral4', 'tomato4', 'tomato', 'tomato1', 'tomato2', 'tomato3', 'MistyRose4', 'MistyRose2', 'MistyRose', 'MistyRose1', 'salmon', 'MistyRose3', 'white', 'gray100', 'grey100', 'grey100', 'gray99', 'grey99', 'gray98', 'grey98', 'gray97', 'grey97', 'gray96', 'grey96', 'WhiteSmoke', 'gray95', 'grey95', 'gray94', 'grey94', 'gray93', 'grey93', 'gray92', 'grey92', 'gray91', 'grey91', 'gray90', 'grey90', 'gray89', 'grey89', 'gray88', 'grey88', 'gray87', 'grey87', 'gainsboro', 'gray86', 'grey86', 'gray85', 'grey85', 'gray84', 'grey84', 'gray83', 'grey83', 'LightGray', 'LightGrey', 'gray82', 'grey82', 'gray81', 'grey81', 'gray80', 'grey80', 'gray79', 'grey79', 'gray78', 'grey78', 'gray77', 'grey77', 'gray76', 'grey76', 'silver', 'gray75', 'grey75', 'gray74', 'grey74', 'gray73', 'grey73', 'gray72', 'grey72', 'gray71', 'grey71', 'gray70', 'grey70', 'gray69', 'grey69', 'gray68', 'grey68', 'gray67', 'grey67', 'DarkGray', 'DarkGrey', 'gray66', 'grey66', 'gray65', 'grey65', 'gray64', 'grey64', 'gray63', 'grey63', 'gray62', 'grey62', 'gray61', 'grey61', 'gray60', 'grey60', 'gray59', 'grey59', 'gray58', 'grey58', 'gray57', 'grey57', 'gray56', 'grey56', 'gray55', 'grey55', 'gray54', 'grey54', 'gray53', 'grey53', 'gray52', 'grey52', 'gray51', 'grey51', 'fractal', 'gray50', 'grey50', 'gray', 'gray49', 'grey49', 'gray48', 'grey48', 'gray47', 'grey47', 'gray46', 'grey46', 'gray45', 'grey45', 'gray44', 'grey44', 'gray43', 'grey43', 'gray42', 'grey42', 'DimGray', 'DimGrey', 'gray41', 'grey41', 'gray40', 'grey40', 'gray39', 'grey39', 'gray38', 'grey38', 'gray37', 'grey37', 'gray36', 'grey36', 'gray35', 'grey35', 'gray34', 'grey34', 'gray33', 'grey33', 'gray32', 'grey32', 'gray31', 'grey31', 'gray30', 'grey30', 'gray29', 'grey29', 'gray28', 'grey28', 'gray27', 'grey27', 'gray26', 'grey26', 'gray25', 'grey25', 'gray24', 'grey24', 'gray23', 'grey23', 'gray22', 'grey22', 'gray21', 'grey21', 'gray20', 'grey20', 'gray19', 'grey19', 'gray18', 'grey18', 'gray17', 'grey17', 'gray16', 'grey16', 'gray15', 'grey15', 'gray14', 'grey14', 'gray13', 'grey13', 'gray12', 'grey12', 'gray11', 'grey11', 'gray10', 'grey10', 'gray9', 'grey9', 'gray8', 'grey8', 'gray7', 'grey7', 'gray6', 'grey6', 'gray5', 'grey5', 'gray4', 'grey4', 'gray3', 'grey3', 'gray2', 'grey2', 'gray1', 'grey1', 'black', 'gray0', 'grey0', 'opaque', 'none', 'transparent']
+
+
+#### create some dictionaries######
+#rgb to hex
+#rgb to name
+#the rest will not work
+#maybe hex to rgb
+
+rgbtohex = {}
+for x in xrange(0,len(hexlist)-1):
+ rgbtohex[rgblist[x]] = hexlist[x]
+
+rgbtoname ={}
+for x in xrange(0, len(namelist)-1):
+ rgbtoname[rgblist[x]] = namelist[x]
+
+hextorgb = {}
+for x in xrange(0, len(hexlist)-1):
+ hextorgb[hexlist[x]] = rgblist[x]
+
+f = open("colordictionaries2.js","w")
+f.write('rgbtohex = '+str(rgbtohex)+'\n')
+f.write('rgbtoname = '+str(rgbtoname)+'\n')
+f.write('hextorgb = '+str(hextorgb)+'\n')
+
+f.close()
diff --git a/frontend/imgrid/colors/js/wrkshp/names b/frontend/imgrid/colors/js/wrkshp/names
new file mode 100755
index 0000000..ebcec30
--- /dev/null
+++ b/frontend/imgrid/colors/js/wrkshp/names
@@ -0,0 +1 @@
+namelist = ['snow', 'snow1', 'snow2', 'RosyBrown1', 'RosyBrown2', 'snow3', 'LightCoral', 'IndianRed1', 'RosyBrown3', 'IndianRed2', 'RosyBrown', 'brown1', 'firebrick1', 'brown2', 'IndianRed', 'IndianRed3', 'firebrick2', 'snow4', 'brown3', 'red', 'red1', 'RosyBrown4', 'firebrick3', 'red2', 'firebrick', 'brown', 'red3', 'IndianRed4', 'brown4', 'firebrick4', 'DarkRed', 'red4', 'maroon', 'LightPink1', 'LightPink3', 'LightPink4', 'LightPink2', 'LightPink', 'pink', 'crimson', 'pink1', 'pink2', 'pink3', 'pink4', 'PaleVioletRed4', 'PaleVioletRed', 'PaleVioletRed2', 'PaleVioletRed1', 'PaleVioletRed3', 'LavenderBlush', 'LavenderBlush1', 'LavenderBlush3', 'LavenderBlush2', 'LavenderBlush4', 'maroon', 'HotPink3', 'VioletRed3', 'VioletRed1', 'VioletRed2', 'VioletRed4', 'HotPink2', 'HotPink1', 'HotPink4', 'HotPink', 'DeepPink', 'DeepPink1', 'DeepPink2', 'DeepPink3', 'DeepPink4', 'maroon1', 'maroon2', 'maroon3', 'maroon4', 'MediumVioletRed', 'VioletRed', 'orchid2', 'orchid', 'orchid1', 'orchid3', 'orchid4', 'thistle1', 'thistle2', 'plum1', 'plum2', 'thistle', 'thistle3', 'plum', 'violet', 'plum3', 'thistle4', 'fuchsia', 'magenta', 'magenta1', 'plum4', 'magenta2', 'magenta3', 'DarkMagenta', 'magenta4', 'purple', 'MediumOrchid', 'MediumOrchid1', 'MediumOrchid2', 'MediumOrchid3', 'MediumOrchid4', 'DarkViolet', 'DarkOrchid', 'DarkOrchid1', 'DarkOrchid3', 'DarkOrchid2', 'DarkOrchid4', 'purple', 'indigo', 'BlueViolet', 'purple2', 'purple3', 'purple4', 'purple1', 'MediumPurple', 'MediumPurple1', 'MediumPurple2', 'MediumPurple3', 'MediumPurple4', 'DarkSlateBlue', 'LightSlateBlue', 'MediumSlateBlue', 'SlateBlue', 'SlateBlue1', 'SlateBlue2', 'SlateBlue3', 'SlateBlue4', 'GhostWhite', 'lavender', 'blue', 'blue1', 'blue2', 'blue3', 'MediumBlue', 'blue4', 'DarkBlue', 'MidnightBlue', 'navy', 'NavyBlue', 'RoyalBlue', 'RoyalBlue1', 'RoyalBlue2', 'RoyalBlue3', 'RoyalBlue4', 'CornflowerBlue', 'LightSteelBlue', 'LightSteelBlue1', 'LightSteelBlue2', 'LightSteelBlue3', 'LightSteelBlue4', 'SlateGray4', 'SlateGray1', 'SlateGray2', 'SlateGray3', 'LightSlateGray', 'LightSlateGrey', 'SlateGray', 'SlateGrey', 'DodgerBlue', 'DodgerBlue1', 'DodgerBlue2', 'DodgerBlue4', 'DodgerBlue3', 'AliceBlue', 'SteelBlue4', 'SteelBlue', 'SteelBlue1', 'SteelBlue2', 'SteelBlue3', 'SkyBlue4', 'SkyBlue1', 'SkyBlue2', 'SkyBlue3', 'LightSkyBlue', 'LightSkyBlue4', 'LightSkyBlue1', 'LightSkyBlue2', 'LightSkyBlue3', 'SkyBlue', 'LightBlue3', 'DeepSkyBlue', 'DeepSkyBlue1', 'DeepSkyBlue2', 'DeepSkyBlue4', 'DeepSkyBlue3', 'LightBlue1', 'LightBlue2', 'LightBlue', 'LightBlue4', 'PowderBlue', 'CadetBlue1', 'CadetBlue2', 'CadetBlue3', 'CadetBlue4', 'turquoise1', 'turquoise2', 'turquoise3', 'turquoise4', 'cadet blue', 'CadetBlue', 'DarkTurquoise', 'azure', 'azure1', 'LightCyan', 'LightCyan1', 'azure2', 'LightCyan2', 'PaleTurquoise1', 'PaleTurquoise', 'PaleTurquoise2', 'DarkSlateGray1', 'azure3', 'LightCyan3', 'DarkSlateGray2', 'PaleTurquoise3', 'DarkSlateGray3', 'azure4', 'LightCyan4', 'aqua', 'cyan', 'cyan1', 'PaleTurquoise4', 'cyan2', 'DarkSlateGray4', 'cyan3', 'cyan4', 'DarkCyan', 'teal', 'DarkSlateGray', 'DarkSlateGrey', 'MediumTurquoise', 'LightSeaGreen', 'turquoise', 'aquamarine4', 'aquamarine', 'aquamarine1', 'aquamarine2', 'aquamarine3', 'MediumAquamarine', 'MediumSpringGreen', 'MintCream', 'SpringGreen', 'SpringGreen1', 'SpringGreen2', 'SpringGreen3', 'SpringGreen4', 'MediumSeaGreen', 'SeaGreen', 'SeaGreen3', 'SeaGreen1', 'SeaGreen4', 'SeaGreen2', 'MediumForestGreen', 'honeydew', 'honeydew1', 'honeydew2', 'DarkSeaGreen1', 'DarkSeaGreen2', 'PaleGreen1', 'PaleGreen', 'honeydew3', 'LightGreen', 'PaleGreen2', 'DarkSeaGreen3', 'DarkSeaGreen', 'PaleGreen3', 'honeydew4', 'green1', 'lime', 'LimeGreen', 'DarkSeaGreen4', 'green2', 'PaleGreen4', 'green3', 'ForestGreen', 'green4', 'green', 'DarkGreen', 'LawnGreen', 'chartreuse', 'chartreuse1', 'chartreuse2', 'chartreuse3', 'chartreuse4', 'GreenYellow', 'DarkOliveGreen3', 'DarkOliveGreen1', 'DarkOliveGreen2', 'DarkOliveGreen4', 'DarkOliveGreen', 'OliveDrab', 'OliveDrab1', 'OliveDrab2', 'OliveDrab3', 'YellowGreen', 'OliveDrab4', 'ivory', 'ivory1', 'LightYellow', 'LightYellow1', 'beige', 'ivory2', 'LightGoldenrodYellow', 'LightYellow2', 'ivory3', 'LightYellow3', 'ivory4', 'LightYellow4', 'yellow', 'yellow1', 'yellow2', 'yellow3', 'yellow4', 'olive', 'DarkKhaki', 'khaki2', 'LemonChiffon4', 'khaki1', 'khaki3', 'khaki4', 'PaleGoldenrod', 'LemonChiffon', 'LemonChiffon1', 'khaki', 'LemonChiffon3', 'LemonChiffon2', 'MediumGoldenRod', 'cornsilk4', 'gold', 'gold1', 'gold2', 'gold3', 'gold4', 'LightGoldenrod', 'LightGoldenrod4', 'LightGoldenrod1', 'LightGoldenrod3', 'LightGoldenrod2', 'cornsilk3', 'cornsilk2', 'cornsilk', 'cornsilk1', 'goldenrod', 'goldenrod1', 'goldenrod2', 'goldenrod3', 'goldenrod4', 'DarkGoldenrod', 'DarkGoldenrod1', 'DarkGoldenrod2', 'DarkGoldenrod3', 'DarkGoldenrod4', 'FloralWhite', 'wheat2', 'OldLace', 'wheat', 'wheat1', 'wheat3', 'orange', 'orange1', 'orange2', 'orange3', 'orange4', 'wheat4', 'moccasin', 'PapayaWhip', 'NavajoWhite3', 'BlanchedAlmond', 'NavajoWhite', 'NavajoWhite1', 'NavajoWhite2', 'NavajoWhite4', 'AntiqueWhite4', 'AntiqueWhite', 'tan', 'bisque4', 'burlywood', 'AntiqueWhite2', 'burlywood1', 'burlywood3', 'burlywood2', 'AntiqueWhite1', 'burlywood4', 'AntiqueWhite3', 'DarkOrange', 'bisque2', 'bisque', 'bisque1', 'bisque3', 'DarkOrange1', 'linen', 'DarkOrange2', 'DarkOrange3', 'DarkOrange4', 'peru', 'tan1', 'tan2', 'tan3', 'tan4', 'PeachPuff', 'PeachPuff1', 'PeachPuff4', 'PeachPuff2', 'PeachPuff3', 'SandyBrown', 'seashell4', 'seashell2', 'seashell3', 'chocolate', 'chocolate1', 'chocolate2', 'chocolate3', 'chocolate4', 'SaddleBrown', 'seashell', 'seashell1', 'sienna4', 'sienna', 'sienna1', 'sienna2', 'sienna3', 'LightSalmon3', 'LightSalmon', 'LightSalmon1', 'LightSalmon4', 'LightSalmon2', 'coral', 'OrangeRed', 'OrangeRed1', 'OrangeRed2', 'OrangeRed3', 'OrangeRed4', 'DarkSalmon', 'salmon1', 'salmon2', 'salmon3', 'salmon4', 'coral1', 'coral2', 'coral3', 'coral4', 'tomato4', 'tomato', 'tomato1', 'tomato2', 'tomato3', 'MistyRose4', 'MistyRose2', 'MistyRose', 'MistyRose1', 'salmon', 'MistyRose3', 'white', 'gray100', 'grey100', 'grey100', 'gray99', 'grey99', 'gray98', 'grey98', 'gray97', 'grey97', 'gray96', 'grey96', 'WhiteSmoke', 'gray95', 'grey95', 'gray94', 'grey94', 'gray93', 'grey93', 'gray92', 'grey92', 'gray91', 'grey91', 'gray90', 'grey90', 'gray89', 'grey89', 'gray88', 'grey88', 'gray87', 'grey87', 'gainsboro', 'gray86', 'grey86', 'gray85', 'grey85', 'gray84', 'grey84', 'gray83', 'grey83', 'LightGray', 'LightGrey', 'gray82', 'grey82', 'gray81', 'grey81', 'gray80', 'grey80', 'gray79', 'grey79', 'gray78', 'grey78', 'gray77', 'grey77', 'gray76', 'grey76', 'silver', 'gray75', 'grey75', 'gray74', 'grey74', 'gray73', 'grey73', 'gray72', 'grey72', 'gray71', 'grey71', 'gray70', 'grey70', 'gray69', 'grey69', 'gray68', 'grey68', 'gray67', 'grey67', 'DarkGray', 'DarkGrey', 'gray66', 'grey66', 'gray65', 'grey65', 'gray64', 'grey64', 'gray63', 'grey63', 'gray62', 'grey62', 'gray61', 'grey61', 'gray60', 'grey60', 'gray59', 'grey59', 'gray58', 'grey58', 'gray57', 'grey57', 'gray56', 'grey56', 'gray55', 'grey55', 'gray54', 'grey54', 'gray53', 'grey53', 'gray52', 'grey52', 'gray51', 'grey51', 'fractal', 'gray50', 'grey50', 'gray', 'gray49', 'grey49', 'gray48', 'grey48', 'gray47', 'grey47', 'gray46', 'grey46', 'gray45', 'grey45', 'gray44', 'grey44', 'gray43', 'grey43', 'gray42', 'grey42', 'DimGray', 'DimGrey', 'gray41', 'grey41', 'gray40', 'grey40', 'gray39', 'grey39', 'gray38', 'grey38', 'gray37', 'grey37', 'gray36', 'grey36', 'gray35', 'grey35', 'gray34', 'grey34', 'gray33', 'grey33', 'gray32', 'grey32', 'gray31', 'grey31', 'gray30', 'grey30', 'gray29', 'grey29', 'gray28', 'grey28', 'gray27', 'grey27', 'gray26', 'grey26', 'gray25', 'grey25', 'gray24', 'grey24', 'gray23', 'grey23', 'gray22', 'grey22', 'gray21', 'grey21', 'gray20', 'grey20', 'gray19', 'grey19', 'gray18', 'grey18', 'gray17', 'grey17', 'gray16', 'grey16', 'gray15', 'grey15', 'gray14', 'grey14', 'gray13', 'grey13', 'gray12', 'grey12', 'gray11', 'grey11', 'gray10', 'grey10', 'gray9', 'grey9', 'gray8', 'grey8', 'gray7', 'grey7', 'gray6', 'grey6', 'gray5', 'grey5', 'gray4', 'grey4', 'gray3', 'grey3', 'gray2', 'grey2', 'gray1', 'grey1', 'black', 'gray0', 'grey0', 'opaque', 'none', 'transparent'] \ No newline at end of file
diff --git a/frontend/imgrid/colors/js/wrkshp/rgbs b/frontend/imgrid/colors/js/wrkshp/rgbs
new file mode 100755
index 0000000..59981a8
--- /dev/null
+++ b/frontend/imgrid/colors/js/wrkshp/rgbs
@@ -0,0 +1 @@
+rgblist = ['rgb(255, 250, 250)', 'rgb(255, 250, 250)', 'rgb(238, 233, 233)', 'rgb(255, 193, 193)', 'rgb(238, 180, 180)', 'rgb(205, 201, 201)', 'rgb(240, 128, 128)', 'rgb(255, 106, 106)', 'rgb(205, 155, 155)', 'rgb(238, 99, 99)', 'rgb(188, 143, 143)', 'rgb(255, 64, 64)', 'rgb(255, 48, 48)', 'rgb(238, 59, 59)', 'rgb(205, 92, 92)', 'rgb(205, 85, 85)', 'rgb(238, 44, 44)', 'rgb(139, 137, 137)', 'rgb(205, 51, 51)', 'rgb(255, 0, 0)', 'rgb(255, 0, 0)', 'rgb(139, 105, 105)', 'rgb(205, 38, 38)', 'rgb(238, 0, 0)', 'rgb(178, 34, 34)', 'rgb(165, 42, 42)', 'rgb(205, 0, 0)', 'rgb(139, 58, 58)', 'rgb(139, 35, 35)', 'rgb(139, 26, 26)', 'rgb(139, 0, 0)', 'rgb(139, 0, 0)', 'rgb(128, 0, 0)', 'rgb(255, 174, 185)', 'rgb(205, 140, 149)', 'rgb(139, 95, 101)', 'rgb(238, 162, 173)', 'rgb(255, 182, 193)', 'rgb(255, 192, 203)', 'rgb(220, 20, 60)', 'rgb(255, 181, 197)', 'rgb(238, 169, 184)', 'rgb(205, 145, 158)', 'rgb(139, 99, 108)', 'rgb(139, 71, 93)', 'rgb(219, 112, 147)', 'rgb(238, 121, 159)', 'rgb(255, 130, 171)', 'rgb(205, 104, 137)', 'rgb(255, 240, 245)', 'rgb(255, 240, 245)', 'rgb(205, 193, 197)', 'rgb(238, 224, 229)', 'rgb(139, 131, 134)', 'rgb(176, 48, 96)', 'rgb(205, 96, 144)', 'rgb(205, 50, 120)', 'rgb(255, 62, 150)', 'rgb(238, 58, 140)', 'rgb(139, 34, 82)', 'rgb(238, 106, 167)', 'rgb(255, 110, 180)', 'rgb(139, 58, 98)', 'rgb(255, 105, 180)', 'rgb(255, 20, 147)', 'rgb(255, 20, 147)', 'rgb(238, 18, 137)', 'rgb(205, 16, 118)', 'rgb(139, 10, 80)', 'rgb(255, 52, 179)', 'rgb(238, 48, 167)', 'rgb(205, 41, 144)', 'rgb(139, 28, 98)', 'rgb(199, 21, 133)', 'rgb(208, 32, 144)', 'rgb(238, 122, 233)', 'rgb(218, 112, 214)', 'rgb(255, 131, 250)', 'rgb(205, 105, 201)', 'rgb(139, 71, 137)', 'rgb(255, 225, 255)', 'rgb(238, 210, 238)', 'rgb(255, 187, 255)', 'rgb(238, 174, 238)', 'rgb(216, 191, 216)', 'rgb(205, 181, 205)', 'rgb(221, 160, 221)', 'rgb(238, 130, 238)', 'rgb(205, 150, 205)', 'rgb(139, 123, 139)', 'rgb(255, 0, 255)', 'rgb(255, 0, 255)', 'rgb(255, 0, 255)', 'rgb(139, 102, 139)', 'rgb(238, 0, 238)', 'rgb(205, 0, 205)', 'rgb(139, 0, 139)', 'rgb(139, 0, 139)', 'rgb(128, 0, 128)', 'rgb(186, 85, 211)', 'rgb(224, 102, 255)', 'rgb(209, 95, 238)', 'rgb(180, 82, 205)', 'rgb(122, 55, 139)', 'rgb(148, 0, 211)', 'rgb(153, 50, 204)', 'rgb(191, 62, 255)', 'rgb(154, 50, 205)', 'rgb(178, 58, 238)', 'rgb(104, 34, 139)', 'rgb(160, 32, 240)', 'rgb( 75, 0, 130)', 'rgb(138, 43, 226)', 'rgb(145, 44, 238)', 'rgb(125, 38, 205)', 'rgb( 85, 26, 139)', 'rgb(155, 48, 255)', 'rgb(147, 112, 219)', 'rgb(171, 130, 255)', 'rgb(159, 121, 238)', 'rgb(137, 104, 205)', 'rgb( 93, 71, 139)', 'rgb( 72, 61, 139)', 'rgb(132, 112, 255)', 'rgb(123, 104, 238)', 'rgb(106, 90, 205)', 'rgb(131, 111, 255)', 'rgb(122, 103, 238)', 'rgb(105, 89, 205)', 'rgb( 71, 60, 139)', 'rgb(248, 248, 255)', 'rgb(230, 230, 250)', 'rgb( 0, 0, 255)', 'rgb( 0, 0, 255)', 'rgb( 0, 0, 238)', 'rgb( 0, 0, 205)', 'rgb( 0, 0, 205)', 'rgb( 0, 0, 139)', 'rgb( 0, 0, 139)', 'rgb( 25, 25, 112)', 'rgb( 0, 0, 128)', 'rgb( 0, 0, 128)', 'rgb( 65, 105, 225)', 'rgb( 72, 118, 255)', 'rgb( 67, 110, 238)', 'rgb( 58, 95, 205)', 'rgb( 39, 64, 139)', 'rgb(100, 149, 237)', 'rgb(176, 196, 222)', 'rgb(202, 225, 255)', 'rgb(188, 210, 238)', 'rgb(162, 181, 205)', 'rgb(110, 123, 139)', 'rgb(108, 123, 139)', 'rgb(198, 226, 255)', 'rgb(185, 211, 238)', 'rgb(159, 182, 205)', 'rgb(119, 136, 153)', 'rgb(119, 136, 153)', 'rgb(112, 128, 144)', 'rgb(112, 128, 144)', 'rgb( 30, 144, 255)', 'rgb( 30, 144, 255)', 'rgb( 28, 134, 238)', 'rgb( 16, 78, 139)', 'rgb( 24, 116, 205)', 'rgb(240, 248, 255)', 'rgb( 54, 100, 139)', 'rgb( 70, 130, 180)', 'rgb( 99, 184, 255)', 'rgb( 92, 172, 238)', 'rgb( 79, 148, 205)', 'rgb( 74, 112, 139)', 'rgb(135, 206, 255)', 'rgb(126, 192, 238)', 'rgb(108, 166, 205)', 'rgb(135, 206, 250)', 'rgb( 96, 123, 139)', 'rgb(176, 226, 255)', 'rgb(164, 211, 238)', 'rgb(141, 182, 205)', 'rgb(135, 206, 235)', 'rgb(154, 192, 205)', 'rgb( 0, 191, 255)', 'rgb( 0, 191, 255)', 'rgb( 0, 178, 238)', 'rgb( 0, 104, 139)', 'rgb( 0, 154, 205)', 'rgb(191, 239, 255)', 'rgb(178, 223, 238)', 'rgb(173, 216, 230)', 'rgb(104, 131, 139)', 'rgb(176, 224, 230)', 'rgb(152, 245, 255)', 'rgb(142, 229, 238)', 'rgb(122, 197, 205)', 'rgb( 83, 134, 139)', 'rgb( 0, 245, 255)', 'rgb( 0, 229, 238)', 'rgb( 0, 197, 205)', 'rgb( 0, 134, 139)', 'rgb( 95, 158, 160)', 'rgb( 95, 158, 160)', 'rgb( 0, 206, 209)', 'rgb(240, 255, 255)', 'rgb(240, 255, 255)', 'rgb(224, 255, 255)', 'rgb(224, 255, 255)', 'rgb(224, 238, 238)', 'rgb(209, 238, 238)', 'rgb(187, 255, 255)', 'rgb(175, 238, 238)', 'rgb(174, 238, 238)', 'rgb(151, 255, 255)', 'rgb(193, 205, 205)', 'rgb(180, 205, 205)', 'rgb(141, 238, 238)', 'rgb(150, 205, 205)', 'rgb(121, 205, 205)', 'rgb(131, 139, 139)', 'rgb(122, 139, 139)', 'rgb( 0, 255, 255)', 'rgb( 0, 255, 255)', 'rgb( 0, 255, 255)', 'rgb(102, 139, 139)', 'rgb( 0, 238, 238)', 'rgb( 82, 139, 139)', 'rgb( 0, 205, 205)', 'rgb( 0, 139, 139)', 'rgb( 0, 139, 139)', 'rgb( 0, 128, 128)', 'rgb( 47, 79, 79)', 'rgb( 47, 79, 79)', 'rgb( 72, 209, 204)', 'rgb( 32, 178, 170)', 'rgb( 64, 224, 208)', 'rgb( 69, 139, 116)', 'rgb(127, 255, 212)', 'rgb(127, 255, 212)', 'rgb(118, 238, 198)', 'rgb(102, 205, 170)', 'rgb(102, 205, 170)', 'rgb( 0, 250, 154)', 'rgb(245, 255, 250)', 'rgb( 0, 255, 127)', 'rgb( 0, 255, 127)', 'rgb( 0, 238, 118)', 'rgb( 0, 205, 102)', 'rgb( 0, 139, 69)', 'rgb( 60, 179, 113)', 'rgb( 46, 139, 87)', 'rgb( 67, 205, 128)', 'rgb( 84, 255, 159)', 'rgb( 46, 139, 87)', 'rgb( 78, 238, 148)', 'rgb( 50, 129, 75)', 'rgb(240, 255, 240)', 'rgb(240, 255, 240)', 'rgb(224, 238, 224)', 'rgb(193, 255, 193)', 'rgb(180, 238, 180)', 'rgb(154, 255, 154)', 'rgb(152, 251, 152)', 'rgb(193, 205, 193)', 'rgb(144, 238, 144)', 'rgb(144, 238, 144)', 'rgb(155, 205, 155)', 'rgb(143, 188, 143)', 'rgb(124, 205, 124)', 'rgb(131, 139, 131)', 'rgb( 0, 255, 0)', 'rgb( 0, 255, 0)', 'rgb( 50, 205, 50)', 'rgb(105, 139, 105)', 'rgb( 0, 238, 0)', 'rgb( 84, 139, 84)', 'rgb( 0, 205, 0)', 'rgb( 34, 139, 34)', 'rgb( 0, 139, 0)', 'rgb( 0, 128, 0)', 'rgb( 0, 100, 0)', 'rgb(124, 252, 0)', 'rgb(127, 255, 0)', 'rgb(127, 255, 0)', 'rgb(118, 238, 0)', 'rgb(102, 205, 0)', 'rgb( 69, 139, 0)', 'rgb(173, 255, 47)', 'rgb(162, 205, 90)', 'rgb(202, 255, 112)', 'rgb(188, 238, 104)', 'rgb(110, 139, 61)', 'rgb( 85, 107, 47)', 'rgb(107, 142, 35)', 'rgb(192, 255, 62)', 'rgb(179, 238, 58)', 'rgb(154, 205, 50)', 'rgb(154, 205, 50)', 'rgb(105, 139, 34)', 'rgb(255, 255, 240)', 'rgb(255, 255, 240)', 'rgb(255, 255, 224)', 'rgb(255, 255, 224)', 'rgb(245, 245, 220)', 'rgb(238, 238, 224)', 'rgb(250, 250, 210)', 'rgb(238, 238, 209)', 'rgb(205, 205, 193)', 'rgb(205, 205, 180)', 'rgb(139, 139, 131)', 'rgb(139, 139, 122)', 'rgb(255, 255, 0)', 'rgb(255, 255, 0)', 'rgb(238, 238, 0)', 'rgb(205, 205, 0)', 'rgb(139, 139, 0)', 'rgb(128, 128, 0)', 'rgb(189, 183, 107)', 'rgb(238, 230, 133)', 'rgb(139, 137, 112)', 'rgb(255, 246, 143)', 'rgb(205, 198, 115)', 'rgb(139, 134, 78)', 'rgb(238, 232, 170)', 'rgb(255, 250, 205)', 'rgb(255, 250, 205)', 'rgb(240, 230, 140)', 'rgb(205, 201, 165)', 'rgb(238, 233, 191)', 'rgb(209, 193, 102)', 'rgb(139, 136, 120)', 'rgb(255, 215, 0)', 'rgb(255, 215, 0)', 'rgb(238, 201, 0)', 'rgb(205, 173, 0)', 'rgb(139, 117, 0)', 'rgb(238, 221, 130)', 'rgb(139, 129, 76)', 'rgb(255, 236, 139)', 'rgb(205, 190, 112)', 'rgb(238, 220, 130)', 'rgb(205, 200, 177)', 'rgb(238, 232, 205)', 'rgb(255, 248, 220)', 'rgb(255, 248, 220)', 'rgb(218, 165, 32)', 'rgb(255, 193, 37)', 'rgb(238, 180, 34)', 'rgb(205, 155, 29)', 'rgb(139, 105, 20)', 'rgb(184, 134, 11)', 'rgb(255, 185, 15)', 'rgb(238, 173, 14)', 'rgb(205, 149, 12)', 'rgb(139, 101, 8)', 'rgb(255, 250, 240)', 'rgb(238, 216, 174)', 'rgb(253, 245, 230)', 'rgb(245, 222, 179)', 'rgb(255, 231, 186)', 'rgb(205, 186, 150)', 'rgb(255, 165, 0)', 'rgb(255, 165, 0)', 'rgb(238, 154, 0)', 'rgb(205, 133, 0)', 'rgb(139, 90, 0)', 'rgb(139, 126, 102)', 'rgb(255, 228, 181)', 'rgb(255, 239, 213)', 'rgb(205, 179, 139)', 'rgb(255, 235, 205)', 'rgb(255, 222, 173)', 'rgb(255, 222, 173)', 'rgb(238, 207, 161)', 'rgb(139, 121, 94)', 'rgb(139, 131, 120)', 'rgb(250, 235, 215)', 'rgb(210, 180, 140)', 'rgb(139, 125, 107)', 'rgb(222, 184, 135)', 'rgb(238, 223, 204)', 'rgb(255, 211, 155)', 'rgb(205, 170, 125)', 'rgb(238, 197, 145)', 'rgb(255, 239, 219)', 'rgb(139, 115, 85)', 'rgb(205, 192, 176)', 'rgb(255, 140, 0)', 'rgb(238, 213, 183)', 'rgb(255, 228, 196)', 'rgb(255, 228, 196)', 'rgb(205, 183, 158)', 'rgb(255, 127, 0)', 'rgb(250, 240, 230)', 'rgb(238, 118, 0)', 'rgb(205, 102, 0)', 'rgb(139, 69, 0)', 'rgb(205, 133, 63)', 'rgb(255, 165, 79)', 'rgb(238, 154, 73)', 'rgb(205, 133, 63)', 'rgb(139, 90, 43)', 'rgb(255, 218, 185)', 'rgb(255, 218, 185)', 'rgb(139, 119, 101)', 'rgb(238, 203, 173)', 'rgb(205, 175, 149)', 'rgb(244, 164, 96)', 'rgb(139, 134, 130)', 'rgb(238, 229, 222)', 'rgb(205, 197, 191)', 'rgb(210, 105, 30)', 'rgb(255, 127, 36)', 'rgb(238, 118, 33)', 'rgb(205, 102, 29)', 'rgb(139, 69, 19)', 'rgb(139, 69, 19)', 'rgb(255, 245, 238)', 'rgb(255, 245, 238)', 'rgb(139, 71, 38)', 'rgb(160, 82, 45)', 'rgb(255, 130, 71)', 'rgb(238, 121, 66)', 'rgb(205, 104, 57)', 'rgb(205, 129, 98)', 'rgb(255, 160, 122)', 'rgb(255, 160, 122)', 'rgb(139, 87, 66)', 'rgb(238, 149, 114)', 'rgb(255, 127, 80)', 'rgb(255, 69, 0)', 'rgb(255, 69, 0)', 'rgb(238, 64, 0)', 'rgb(205, 55, 0)', 'rgb(139, 37, 0)', 'rgb(233, 150, 122)', 'rgb(255, 140, 105)', 'rgb(238, 130, 98)', 'rgb(205, 112, 84)', 'rgb(139, 76, 57)', 'rgb(255, 114, 86)', 'rgb(238, 106, 80)', 'rgb(205, 91, 69)', 'rgb(139, 62, 47)', 'rgb(139, 54, 38)', 'rgb(255, 99, 71)', 'rgb(255, 99, 71)', 'rgb(238, 92, 66)', 'rgb(205, 79, 57)', 'rgb(139, 125, 123)', 'rgb(238, 213, 210)', 'rgb(255, 228, 225)', 'rgb(255, 228, 225)', 'rgb(250, 128, 114)', 'rgb(205, 183, 181)', 'rgb(255, 255, 255)', 'rgb(255, 255, 255)', 'rgb(255, 255, 255)', 'rgb(255, 255, 255)', 'rgb(252, 252, 252)', 'rgb(252, 252, 252)', 'rgb(250, 250, 250)', 'rgb(250, 250, 250)', 'rgb(247, 247, 247)', 'rgb(247, 247, 247)', 'rgb(245, 245, 245)', 'rgb(245, 245, 245)', 'rgb(245, 245, 245)', 'rgb(242, 242, 242)', 'rgb(242, 242, 242)', 'rgb(240, 240, 240)', 'rgb(240, 240, 240)', 'rgb(237, 237, 237)', 'rgb(237, 237, 237)', 'rgb(235, 235, 235)', 'rgb(235, 235, 235)', 'rgb(232, 232, 232)', 'rgb(232, 232, 232)', 'rgb(229, 229, 229)', 'rgb(229, 229, 229)', 'rgb(227, 227, 227)', 'rgb(227, 227, 227)', 'rgb(224, 224, 224)', 'rgb(224, 224, 224)', 'rgb(222, 222, 222)', 'rgb(222, 222, 222)', 'rgb(220, 220, 220)', 'rgb(219, 219, 219)', 'rgb(219, 219, 219)', 'rgb(217, 217, 217)', 'rgb(217, 217, 217)', 'rgb(214, 214, 214)', 'rgb(214, 214, 214)', 'rgb(212, 212, 212)', 'rgb(212, 212, 212)', 'rgb(211, 211, 211)', 'rgb(211, 211, 211)', 'rgb(209, 209, 209)', 'rgb(209, 209, 209)', 'rgb(207, 207, 207)', 'rgb(207, 207, 207)', 'rgb(204, 204, 204)', 'rgb(204, 204, 204)', 'rgb(201, 201, 201)', 'rgb(201, 201, 201)', 'rgb(199, 199, 199)', 'rgb(199, 199, 199)', 'rgb(196, 196, 196)', 'rgb(196, 196, 196)', 'rgb(194, 194, 194)', 'rgb(194, 194, 194)', 'rgb(192, 192, 192)', 'rgb(191, 191, 191)', 'rgb(191, 191, 191)', 'rgb(189, 189, 189)', 'rgb(189, 189, 189)', 'rgb(186, 186, 186)', 'rgb(186, 186, 186)', 'rgb(184, 184, 184)', 'rgb(184, 184, 184)', 'rgb(181, 181, 181)', 'rgb(181, 181, 181)', 'rgb(179, 179, 179)', 'rgb(179, 179, 179)', 'rgb(176, 176, 176)', 'rgb(176, 176, 176)', 'rgb(173, 173, 173)', 'rgb(173, 173, 173)', 'rgb(171, 171, 171)', 'rgb(171, 171, 171)', 'rgb(169, 169, 169)', 'rgb(169, 169, 169)', 'rgb(168, 168, 168)', 'rgb(168, 168, 168)', 'rgb(166, 166, 166)', 'rgb(166, 166, 166)', 'rgb(163, 163, 163)', 'rgb(163, 163, 163)', 'rgb(161, 161, 161)', 'rgb(161, 161, 161)', 'rgb(158, 158, 158)', 'rgb(158, 158, 158)', 'rgb(156, 156, 156)', 'rgb(156, 156, 156)', 'rgb(153, 153, 153)', 'rgb(153, 153, 153)', 'rgb(150, 150, 150)', 'rgb(150, 150, 150)', 'rgb(148, 148, 148)', 'rgb(148, 148, 148)', 'rgb(145, 145, 145)', 'rgb(145, 145, 145)', 'rgb(143, 143, 143)', 'rgb(143, 143, 143)', 'rgb(140, 140, 140)', 'rgb(140, 140, 140)', 'rgb(138, 138, 138)', 'rgb(138, 138, 138)', 'rgb(135, 135, 135)', 'rgb(135, 135, 135)', 'rgb(133, 133, 133)', 'rgb(133, 133, 133)', 'rgb(130, 130, 130)', 'rgb(130, 130, 130)', 'rgb(128, 128, 128)', 'rgb(127, 127, 127)', 'rgb(127, 127, 127)', 'rgb(126, 126, 126)', 'rgb(125, 125, 125)', 'rgb(125, 125, 125)', 'rgb(122, 122, 122)', 'rgb(122, 122, 122)', 'rgb(120, 120, 120)', 'rgb(120, 120, 120)', 'rgb(117, 117, 117)', 'rgb(117, 117, 117)', 'rgb(115, 115, 115)', 'rgb(115, 115, 115)', 'rgb(112, 112, 112)', 'rgb(112, 112, 112)', 'rgb(110, 110, 110)', 'rgb(110, 110, 110)', 'rgb(107, 107, 107)', 'rgb(107, 107, 107)', 'rgb(105, 105, 105)', 'rgb(105, 105, 105)', 'rgb(105, 105, 105)', 'rgb(105, 105, 105)', 'rgb(102, 102, 102)', 'rgb(102, 102, 102)', 'rgb( 99, 99, 99)', 'rgb( 99, 99, 99)', 'rgb( 97, 97, 97)', 'rgb( 97, 97, 97)', 'rgb( 94, 94, 94)', 'rgb( 94, 94, 94)', 'rgb( 92, 92, 92)', 'rgb( 92, 92, 92)', 'rgb( 89, 89, 89)', 'rgb( 89, 89, 89)', 'rgb( 87, 87, 87)', 'rgb( 87, 87, 87)', 'rgb( 84, 84, 84)', 'rgb( 84, 84, 84)', 'rgb( 82, 82, 82)', 'rgb( 82, 82, 82)', 'rgb( 79, 79, 79)', 'rgb( 79, 79, 79)', 'rgb( 77, 77, 77)', 'rgb( 77, 77, 77)', 'rgb( 74, 74, 74)', 'rgb( 74, 74, 74)', 'rgb( 71, 71, 71)', 'rgb( 71, 71, 71)', 'rgb( 69, 69, 69)', 'rgb( 69, 69, 69)', 'rgb( 66, 66, 66)', 'rgb( 66, 66, 66)', 'rgb( 64, 64, 64)', 'rgb( 64, 64, 64)', 'rgb( 61, 61, 61)', 'rgb( 61, 61, 61)', 'rgb( 59, 59, 59)', 'rgb( 59, 59, 59)', 'rgb( 56, 56, 56)', 'rgb( 56, 56, 56)', 'rgb( 54, 54, 54)', 'rgb( 54, 54, 54)', 'rgb( 51, 51, 51)', 'rgb( 51, 51, 51)', 'rgb( 48, 48, 48)', 'rgb( 48, 48, 48)', 'rgb( 46, 46, 46)', 'rgb( 46, 46, 46)', 'rgb( 43, 43, 43)', 'rgb( 43, 43, 43)', 'rgb( 41, 41, 41)', 'rgb( 41, 41, 41)', 'rgb( 38, 38, 38)', 'rgb( 38, 38, 38)', 'rgb( 36, 36, 36)', 'rgb( 36, 36, 36)', 'rgb( 33, 33, 33)', 'rgb( 33, 33, 33)', 'rgb( 31, 31, 31)', 'rgb( 31, 31, 31)', 'rgb( 28, 28, 28)', 'rgb( 28, 28, 28)', 'rgb( 26, 26, 26)', 'rgb( 26, 26, 26)', 'rgb( 23, 23, 23)', 'rgb( 23, 23, 23)', 'rgb( 20, 20, 20)', 'rgb( 20, 20, 20)', 'rgb( 18, 18, 18)', 'rgb( 18, 18, 18)', 'rgb( 15, 15, 15)', 'rgb( 15, 15, 15)', 'rgb( 13, 13, 13)', 'rgb( 13, 13, 13)', 'rgb( 10, 10, 10)', 'rgb( 10, 10, 10)', 'rgb( 8, 8, 8)', 'rgb( 8, 8, 8)', 'rgb( 5, 5, 5)', 'rgb( 5, 5, 5)', 'rgb( 3, 3, 3)', 'rgb( 3, 3, 3)', 'rgb( 0, 0, 0)', 'rgb( 0, 0, 0)', 'rgb( 0, 0, 0)', 'rgb( 0, 0, 0)', 'white', 'white'] \ No newline at end of file
diff --git a/frontend/imgrid/colors/junk/ScrollEffect.js b/frontend/imgrid/colors/junk/ScrollEffect.js
new file mode 100755
index 0000000..ac8ca3f
--- /dev/null
+++ b/frontend/imgrid/colors/junk/ScrollEffect.js
@@ -0,0 +1,86 @@
+var vt = function () {
+ var view_box,
+ scrolled_element,
+ scrolled_element_actualheight = 0,
+ new_scrolled_element_top_position = 0,
+ final_Landing_Spot = 0,
+ hidden_material = 0,
+ viewbox_actualheight = 0,
+ y_coordinate = 0;
+
+ var velx;
+ var prevY;
+ // ----- setup jquery selectors, set mouse event, run function run on timer
+ var start = function (view_element, element_to_be_scrolled) {
+
+ // ----- mouse event -----
+ $('.colors').mousemove(function(e){
+ y_coordinate = e.clientY;
+ velx = e.clientY - prevY;
+ });
+
+ // ----- selectors and variables
+ view_box = $('#'+view_element)[0];//.(view_element);//viewarea
+ scrolled_element = $('#'+element_to_be_scrolled)[0]; //container
+ viewbox_actualheight = view_box.offsetHeight;//always 850px
+ scrolled_element_actualheight = scrolled_element.offsetHeight;
+ hidden_material = scrolled_element_actualheight - viewbox_actualheight;
+
+
+ // ----- start engine -----
+
+ setInterval(run, 60);//previously 16, the higher the number, the easier it is on the browser
+ };
+ /////////////////////////////////////////////////////////////////////////////
+
+
+ // ----- main ----- all this function does is adjust the top position of the div
+ var run = function () {
+
+ prevY = y_coordinate;
+
+ //if velocity is negative, landing spot and scrolltop increase in value (you have to add it)
+
+ //velocity function if velocity is high, final landing spot is high,
+
+//FINAL LANDING SPOT IS NO LONGER FINAL LANDING SPOT. INSTEAD it's
+//how much the div will move
+ // ----- calculate the final landing spot
+// if(y_coordinate < viewbox_actualheight){ //it almost always is
+ final_Landing_Spot = y_coordinate * -18.5//( hidden_material / viewbox_actualheight)*-1; //this is negative because it's adjusting top css
+
+ $('#preview').html('x-velocity='+'scrolled element'+scrolled_element_offset_height+'thats it'+velx+'<br><span id="boners" style="position:absolute; z-index:1000;"></span>')
+// }
+ /*this is the mouse position multiplied by the ratio of hidden to visible. this makes sense going in the negative direction, because
+ it allows the number to grow in proportion to how much invisible stuff there is...the issue is that the mouse position is small at the top of
+ the screen and large at the bottom...it needs to be equalized*/
+
+
+
+ // ----- function to determine easing
+ var velocity = (final_Landing_Spot - new_scrolled_element_top_position)
+ new_scrolled_element_top_position += Math.max(-25, Math.min(25, (final_Landing_Spot - new_scrolled_element_top_position)));
+
+
+
+
+
+
+
+
+
+
+
+
+ $('#boners').html('<span style="font-size:14"> final_Landing_Spot ='+(final_Landing_Spot - new_scrolled_element_top_position)+'<br>var vvvvvvelocity='+velocity+'<br> clientY='+y_coordinate+'<br>new scrolled top='+new_scrolled_element_top_position+'</span>')
+ // ----- HTML position -----
+ scrolled_element.style.top = Math.round(new_scrolled_element_top_position) + 'px'; //and finally it's put in...continuously against the timer
+
+ };
+
+ return {
+ ////////////////////////////////////////////////////////////////////////////
+ /* ==== public functions ==== */
+ start : start,
+ }
+}();
diff --git a/frontend/imgrid/colors/junk/ScrollEffectcomingsoon.js b/frontend/imgrid/colors/junk/ScrollEffectcomingsoon.js
new file mode 100755
index 0000000..3388d5f
--- /dev/null
+++ b/frontend/imgrid/colors/junk/ScrollEffectcomingsoon.js
@@ -0,0 +1,237 @@
+var vt = function () {
+ var view_box,
+ scrolled_element,
+ scrolled_element_actualheight = 0,
+ easing = 0,
+ final_resting_place = 0,
+ hidden_material = 0,
+ viewbox_actualheight = 0;
+ var y_coordinate = 0;
+
+ var velocity;
+ var prevY;
+ var lastrested = 0;
+ // ----- setup jquery selectors, set mouse event, run function run on timer
+ var start = function (view_element, element_to_be_scrolled) {
+
+ // ----- mouse event -----
+ $('.colors').mousemove(function(e){
+ y_coordinate = e.clientY;
+ velocity = e.clientY - prevY;
+ });
+ velocity = y_coordinate - prevY
+ // ----- selectors and variables
+ view_box = $('#'+view_element)[0];//.(view_element);//viewarea
+ scrolled_element = $('#'+element_to_be_scrolled)[0]; //container
+ viewbox_actualheight = view_box.offsetHeight;//always 850px
+ scrolled_element_actualheight = scrolled_element.offsetHeight;
+ hidden_material = scrolled_element_actualheight - viewbox_actualheight;
+
+
+ // ----- timer -----
+
+ setInterval(run, 50);//previously 16, the higher the number, the easier it is on the browser
+ };
+ /////////////////////////////////////////////////////////////////////////////
+
+
+ // ----- main ----- all this function does is adjust the top position of the div
+ var run = function () {
+
+ prevY = y_coordinate;
+
+ //if velocity is negative, landing spot and scrolltop increase in value (you have to add it)
+
+ //velocity function if velocity is high, final landing spot is high,
+
+//FINAL LANDING SPOT IS NO LONGER FINAL LANDING SPOT. INSTEAD it's
+//how much the div will move
+ // ----- calculate the final landing spot
+// if(y_coordinate < viewbox_actualheight){ //it almost always is
+ final_resting_place = velocity * -8
+ // -18.5//( hidden_material / viewbox_actualheight)*-1; //this is negative because it's adjusting top css
+ var rush = velocity*.1
+
+ $('#preview').html('velocity='+velocity+'<br>rush='+rush+'<br><span id="boners" style="position:absolute; z-index:1000;"></span>')
+// }
+ /*this is the mouse position multiplied by the ratio of hidden to visible. this makes sense going in the negative direction, because
+ it allows the number to grow in proportion to how much invisible stuff there is...the issue is that the mouse position is small at the top of
+ the screen and large at the bottom...it needs to be equalized*/
+
+
+
+ // ----- function to determine roll_to_zero
+ // var wheelshow;
+ var roll_to_zero;
+ // if(Math.abs(velocity)<10){roll_to_zero = roll_to_zero}
+ // else{
+ roll_to_zero = (final_resting_place - easing)
+ // easing += Math.max(-25, Math.min(25, roll_to_zero));}
+ // easing += Math.max(-25, Math.min(25, roll_to_zero));}
+ if (roll_to_zero > 0)
+ {if (roll_to_zero > 8000)
+ {easing = easing + 100}
+ else if (roll_to_zero > 6000)
+ {easing = easing +50}
+ else if (roll_to_zero > 3000)
+ {easing = easing + 30}
+ else if (roll_to_zero > 1000)
+ {easing = easing + 20}
+ else if (roll_to_zero > 50)
+ {easing = easing +5}
+ else{easing = easing +1}}
+ else if (roll_to_zero < 0)
+ {if (roll_to_zero < 8000)
+ {easing = easing - 100}
+ else if (roll_to_zero < 6000)
+ {easing = easing -50}
+ else if (roll_to_zero < 3000)
+ {easing = easing - 30}
+ else if (roll_to_zero < 1000)
+ {easing = easing - 20}
+ else if (roll_to_zero < 50)
+ {easing = easing -1}}
+ else{easing = final_resting_place}
+
+ if (roll_to_zero == 0){roll_to_zero = 0}
+ if (Math.abs(velocity) <= 50){roll_to_zero = 0}
+// }
+ // easing =
+ //in other words if its less than 25(and moving down to zero), it uses 25 and if it's greater than 25 (moving up to zero) it uses 25. it will move
+ //faster going up if the Math.min(25, number is higher, but since the value is determined by the mouse cursor position it won't move as fast
+
+
+
+
+
+
+
+
+
+
+ $('#boners').html('<span style="font-size:14"><br>final resting place='+final_resting_place+'<br>var roll_to_zero='+roll_to_zero+'<br> clientY='+y_coordinate+'<br>easing='+easing+'</span>')
+ // ----- HTML position -----
+ scrolled_element.style.top = Math.round(easing) + 'px'; //and finally it's put in...continuously against the timer
+
+ };
+// var wheelshow = final_resting_place - lastrested;
+ // while(easing > 0){html = this div rightwheel}
+// while(easing < 0){html = this div leftwheel.show} //wheel should be gray and transparent 3/4 view bg = colors under the mouseover
+ // if(easing == 0){hmtl = ''}
+ return {
+ ////////////////////////////////////////////////////////////////////////////
+ /* ==== public functions ==== */
+ start : start,
+ }
+}();
+
+
+/*minimap...how would it work?
+
+an image of the page...
+
+plus a div with a border
+
+there would have to be some sort of mathematical correllation to the window.height and the height of the div
+against the minimap
+
+
+
+
+
+WHAT WE'VE GOT;;;;;;;;;;;;;;;;;;;;;;;;;
+VELOCITY Y...A NUMBER THAT INDICATES THE CHANGE IN POSITION OF THE MOUSE
+
+HIDDENMATERIAL/VIEWBOX ACTUAL HeIGHT = 18.5
+
+resting space range is -200 -1200
+
+
+
+the way the algorithm works
+
+
+final_top_position = (y coordinate)(-20) //some big number that's dependent on the y position
+
+
+easing function...rolling toward the final_top_position
+
+[first off
+the y coordinate shouldn't be based on the upper left (only because of VALUE, that's why it's easier to scroll down than up)]
+
+[e.pageY-($(window).height()*0.5)]
+
+value should be eradicated...we should instead use velocity which is DELTA. doesn't matter
+
+
+ roll_to_zero = (final_Landing_Spot - easing) first a destination spot is calculated, then easing takes place
+new_scrolled_element
+
+
+ roll_to_zero = (final_Landing_Spot - easing)}
+ easing += Math.max(-25, Math.min(25, roll_to_zero))
+
+instead of adjusting the height to the final landing spot, it becomes the easing value
+
+how easing works
+ x += Math.max(-25, Math.min(25, finalrestingplace-x));//as x approaches the final resting place, easing is used. 25 and -25 are used to traverse
+long spaces more quickly
+
+where x = the current scroller position
+as x becomes larger final resting place gets closer to 0 (it would actually be smaller, but we're dealing with negative values)
+
+the function is read from the inside out
+
+and of course, the statement that is missing is that x MUST be less than the overall distance travelable (which MUST be calculated)
+
+what's less important is the destination spot. more important would be the distance traveled per mouse move
+
+if the velocity is low, the distance is low, if the velocity is really high, it zooms to the end.
+
+before getting into specifics, for ease of reference lets say the velocity is has a range of -10 to 10, the over all distance traveled is 100px
+
+if the velocity is equal to range(-3,3) distance traved = 0
+if the velocity is between range(-4,-3) or range(3,4) distance traveled = 2
+if the velocity is between range (5,6) or (-5,-6) distance traveled would be 20
+if the velocity is between the range of 7,8 or -7,-8 the distance traveled would be 40
+if the velocity is between the range of 89 the velocity traveled would 80
+9-10 velocity is 160
+
+0
+-12302 from the top is the current max
+
+
+
+
+
+
+
+
+plotted out this looks like this
+ #
+
+
+
+
+
+
+
+ #
+
+
+
+
+ #
+
+
+__- __- __# __ __ __ __ __ __ __ __ __
+
+essentially we want something that looks like this (0.3x)^5
+0.ax^b
+
+we can play with which exponent is right, but only choosing odd ones
+where a is the stationary range number
+and b is the new slope
+
+
+this function is called on a timer*/
diff --git a/frontend/imgrid/colors/junk/brush.ani b/frontend/imgrid/colors/junk/brush.ani
new file mode 100755
index 0000000..6da99b4
--- /dev/null
+++ b/frontend/imgrid/colors/junk/brush.ani
Binary files differ
diff --git a/frontend/imgrid/colors/junk/colordictOLD.js b/frontend/imgrid/colors/junk/colordictOLD.js
new file mode 100755
index 0000000..67220ca
--- /dev/null
+++ b/frontend/imgrid/colors/junk/colordictOLD.js
@@ -0,0 +1,2 @@
+var hextoname = {'#EE1289': 'DeepPink2', '#EE8262': 'salmon2', '#C4C4C4': 'gray77', '#556B2F': 'DarkOliveGreen', '#FF8C00': 'DarkOrange', '#8B7B8B': 'thistle4', '#0000EE': 'blue2', '#EED5D2': 'MistyRose2', '#BA55D3': 'MediumOrchid', '#FFF5EE': 'seashell', '#912CEE': 'purple2', '#2F4F4F': 'DarkSlateGray', '#32814B': 'MediumForestGreen', '#D15FEE': 'MediumOrchid2', '#F0FFF0': 'honeydew', '#B23AEE': 'DarkOrchid2', '#8B7765': 'PeachPuff4', '#3D3D3D': 'gray24', '#54FF9F': 'SeaGreen1', '#636363': 'gray39', '#8B8386': 'LavenderBlush4', '#FF4040': 'brown1', '#EEA9B8': 'pink2', '#C2C2C2': 'gray76', '#800080': 'purple', '#545454': 'gray33', '#EE3A8C': 'VioletRed2', '#8A8A8A': 'gray54', '#FF00FF': 'fuchsia', '#436EEE': 'RoyalBlue2', '#8B864E': 'khaki4', '#0A0A0A': 'gray4', '#808000': 'olive', '#E3E3E3': 'gray89', '#1874CD': 'DodgerBlue3', '#BCD2EE': 'LightSteelBlue2', '#A9A9A9': 'DarkGray', '#F4A460': 'SandyBrown', '#FF3030': 'firebrick1', '#FFEBCD': 'BlanchedAlmond', '#B0C4DE': 'LightSteelBlue', '#00CDCD': 'cyan3', '#C0FF3E': 'OliveDrab1', '#FFD700': 'gold', '#242424': 'gray14', '#8B2252': 'VioletRed4', '#4EEE94': 'SeaGreen2', '#CD3278': 'VioletRed3', '#00E5EE': 'turquoise2', '#CD853F': 'peru', '#ADD8E6': 'LightBlue', '#C7C7C7': 'gray78', '#CD2990': 'maroon3', '#EEE5DE': 'seashell2', '#66CD00': 'chartreuse3', '#878787': 'gray53', '#FFA54F': 'tan1', '#A2B5CD': 'LightSteelBlue3', '#BC8F8F': 'RosyBrown', '#C9C9C9': 'gray79', '#D1C166': 'MediumGoldenRod', '#8B2323': 'brown4', '#B3EE3A': 'OliveDrab2', '#EEEED1': 'LightYellow2', '#AEEEEE': 'PaleTurquoise2', '#BDBDBD': 'gray74', '#FF7F00': 'DarkOrange1', '#FFC0CB': 'pink', '#EE3B3B': 'brown2', '#CDC8B1': 'cornsilk3', '#CDB38B': 'NavajoWhite3', '#CDBA96': 'wheat3', '#B4EEB4': 'DarkSeaGreen2', '#40E0D0': 'turquoise', '#8B795E': 'NavajoWhite4', '#27408B': 'RoyalBlue4', '#424242': 'gray26', '#CDB7B5': 'MistyRose3', '#CAE1FF': 'LightSteelBlue1', '#F0FFFF': 'azure', '#2E8B57': 'SeaGreen', '#87CEEB': 'SkyBlue', '#CD00CD': 'magenta3', '#CDAA7D': 'burlywood3', '#836FFF': 'SlateBlue1', '#ABABAB': 'gray67', '#EEB4B4': 'RosyBrown2', '#8B7355': 'burlywood4', '#F0E68C': 'khaki', '#CDCDB4': 'LightYellow3', '#4D4D4D': 'gray30', '#B8B8B8': 'gray72', '#B4CDCD': 'LightCyan3', '#008B8B': 'cyan4', '#828282': 'gray51', '#00EEEE': 'cyan2', '#708090': 'SlateGray', '#9AFF9A': 'PaleGreen1', '#FFA07A': 'LightSalmon', '#EBEBEB': 'gray92', '#FFB5C5': 'pink1', '#00688B': 'DeepSkyBlue4', '#DBDBDB': 'gray86', '#191970': 'MidnightBlue', '#FF83FA': 'orchid1', '#A1A1A1': 'gray63', '#838B8B': 'azure4', '#FFA500': 'orange', '#00FF7F': 'SpringGreen', '#EEAD0E': 'DarkGoldenrod2', '#B03060': 'maroon', '#96CDCD': 'PaleTurquoise3', '#CD3333': 'brown3', '#CDBE70': 'LightGoldenrod3', '#7CCD7C': 'PaleGreen3', '#97FFFF': 'DarkSlateGray1', '#DAA520': 'goldenrod', '#8B3A3A': 'IndianRed4', '#6B6B6B': 'gray42', '#FFFAF0': 'FloralWhite', '#757575': 'gray46', '#BFBFBF': 'gray75', '#00EE76': 'SpringGreen2', '#FFFAFA': 'snow', '#6E8B3D': 'DarkOliveGreen4', '#EEE685': 'khaki2', '#FF3E96': 'VioletRed1', '#EE0000': 'red2', '#FDF5E6': 'OldLace', '#E066FF': 'MediumOrchid1', '#8DB6CD': 'LightSkyBlue3', '#FF7256': 'coral1', '#7CFC00': 'LawnGreen', '#838B83': 'honeydew4', '#BF3EFF': 'DarkOrchid1', '#8B6914': 'goldenrod4', '#00CD66': 'SpringGreen3', '#525252': 'gray32', '#A4D3EE': 'LightSkyBlue2', '#00868B': 'turquoise4', '#8DEEEE': 'DarkSlateGray2', '#787878': 'gray47', '#8B1C62': 'maroon4', '#616161': 'gray38', '#4876FF': 'RoyalBlue1', '#9F79EE': 'MediumPurple2', '#212121': 'gray13', '#C1CDC1': 'honeydew3', '#CD69C9': 'orchid3', '#E0EEEE': 'azure2', '#8B7E66': 'wheat4', '#8A2BE2': 'BlueViolet', '#CDCD00': 'yellow3', '#EE5C42': 'tomato2', '#6E6E6E': 'gray43', '#EEAEEE': 'plum2', '#DC143C': 'crimson', '#CD919E': 'pink3', '#528B8B': 'DarkSlateGray4', '#AFEEEE': 'PaleTurquoise', '#CD6889': 'PaleVioletRed3', '#E6E6FA': 'lavender', '#EE00EE': 'magenta2', '#999999': 'gray60', '#F0F8FF': 'AliceBlue', '#595959': 'gray35', '#FF7F50': 'coral', '#A6A6A6': 'gray65', '#DEDEDE': 'gray87', '#262626': 'gray15', '#6CA6CD': 'SkyBlue3', '#8B8B83': 'ivory4', '#474747': 'gray28', '#F7F7F7': 'gray97', '#548B54': 'PaleGreen4', '#48D1CC': 'MediumTurquoise', '#C1CDCD': 'azure3', '#E0EEE0': 'honeydew2', '#FFB90F': 'DarkGoldenrod1', '#FFD39B': 'burlywood1', '#8B5A2B': 'tan4', '#EEE9BF': 'LemonChiffon2', '#BCEE68': 'DarkOliveGreen2', '#8470FF': 'LightSlateBlue', '#8B0A50': 'DeepPink4', '#FFF68F': 'khaki1', '#EEA2AD': 'LightPink2', '#CD5B45': 'coral3', '#7FFF00': 'chartreuse', '#8B8378': 'AntiqueWhite4', '#9BCD9B': 'DarkSeaGreen3', '#454545': 'gray27', '#D1D1D1': 'gray82', '#EEE8AA': 'PaleGoldenrod', '#668B8B': 'PaleTurquoise4', '#EE30A7': 'maroon2', '#FFC125': 'goldenrod1', '#8B475D': 'PaleVioletRed4', '#D8BFD8': 'thistle', '#404040': 'gray25', '#EEEE00': 'yellow2', '#CDB5CD': 'thistle3', '#00C5CD': 'turquoise3', '#00CED1': 'DarkTurquoise', '#CFCFCF': 'gray81', '#008B00': 'green4', '#7A7A7A': 'gray48', '#B8860B': 'DarkGoldenrod', '#1C86EE': 'DodgerBlue2', '#8B5742': 'LightSalmon4', '#1A1A1A': 'gray10', '#8B008B': 'DarkMagenta', '#0F0F0F': 'gray6', '#CD3700': 'OrangeRed3', '#7F7F7F': 'gray50', '#FF6EB4': 'HotPink1', '#6959CD': 'SlateBlue3', '#90EE90': 'LightGreen', '#8B4789': 'orchid4', '#EE7AE9': 'orchid2', '#8968CD': 'MediumPurple3', '#080808': 'gray3', '#CDC9C9': 'snow3', '#BDB76B': 'DarkKhaki', '#9370DB': 'MediumPurple', '#EEDC82': 'LightGoldenrod2', '#3CB371': 'MediumSeaGreen', '#F5FFFA': 'MintCream', '#303030': 'gray19', '#B9D3EE': 'SlateGray2', '#575757': 'gray34', '#F5F5DC': 'beige', '#BABABA': 'gray73', '#0000CD': 'blue3', '#FF8247': 'sienna1', '#F2F2F2': 'gray95', '#EED5B7': 'bisque2', '#FFEC8B': 'LightGoldenrod1', '#EE7600': 'DarkOrange2', '#8B636C': 'pink4', '#8B814C': 'LightGoldenrod4', '#FFE4B5': 'moccasin', '#4F94CD': 'SteelBlue3', '#CDAD00': 'gold3', '#CD5555': 'IndianRed3', '#8B7500': 'gold4', '#473C8B': 'SlateBlue4', '#B0E0E6': 'PowderBlue', '#FFFF00': 'yellow', '#CD96CD': 'plum3', '#006400': 'DarkGreen', '#FAFAFA': 'gray98', '#53868B': 'CadetBlue4', '#8B4513': 'chocolate4', '#98FB98': 'PaleGreen', '#63B8FF': 'SteelBlue1', '#FFAEB9': 'LightPink1', '#EE6A50': 'coral2', '#87CEFF': 'SkyBlue1', '#87CEFA': 'LightSkyBlue', '#ADFF2F': 'GreenYellow', '#008B45': 'SpringGreen4', '#EE4000': 'OrangeRed2', '#8B6969': 'RosyBrown4', '#00008B': 'blue4', '#DB7093': 'PaleVioletRed', '#7EC0EE': 'SkyBlue2', '#3B3B3B': 'gray23', '#8C8C8C': 'gray55', '#5F9EA0': 'cadet blue', '#EE799F': 'PaleVioletRed2', '#CD6090': 'HotPink3', '#8B8682': 'seashell4', '#458B74': 'aquamarine4', '#EECFA1': 'NavajoWhite2', '#76EE00': 'chartreuse2', '#000080': 'navy', '#228B22': 'ForestGreen', '#8B8B00': 'yellow4', '#B5B5B5': 'gray71', '#CD950C': 'DarkGoldenrod3', '#EE82EE': 'violet', '#EDEDED': 'gray93', '#F5DEB3': 'wheat', '#3A5FCD': 'RoyalBlue3', '#00FA9A': 'MediumSpringGreen', '#F0F0F0': 'gray94', '#D1EEEE': 'LightCyan2', '#2E2E2E': 'gray18', '#EEC591': 'burlywood2', '#8B3E2F': 'coral4', '#CD8162': 'LightSalmon3', '#9AC0CD': 'LightBlue3', '#8B8989': 'snow4', '#EED8AE': 'wheat2', '#551A8B': 'purple4', '#919191': 'gray57', '#949494': 'gray58', '#778899': 'LightSlateGray', '#FFFACD': 'LemonChiffon', '#458B00': 'chartreuse4', '#008000': 'green', '#FFFFF0': 'ivory', '#E0E0E0': 'gray88', '#EEB422': 'goldenrod2', '#A020F0': 'purple', '#5CACEE': 'SteelBlue2', '#CD4F39': 'tomato3', '#CDC0B0': 'AntiqueWhite3', '#6E7B8B': 'LightSteelBlue4', '#9E9E9E': 'gray62', '#CDC673': 'khaki3', '#104E8B': 'DodgerBlue4', '#E0FFFF': 'LightCyan', '#FFFFFF': 'white', '#6C7B8B': 'SlateGray4', '#FFC1C1': 'RosyBrown1', '#D6D6D6': 'gray84', '#8B4726': 'sienna4', '#CD9B1D': 'goldenrod3', '#FF6347': 'tomato', '#FF34B3': 'maroon1', '#7D7D7D': 'gray49', '#121212': 'gray7', '#B0E2FF': 'LightSkyBlue1', '#8B3A62': 'HotPink4', '#CD5C5C': 'IndianRed', '#4A4A4A': 'gray29', '#B0B0B0': 'gray69', '#D9D9D9': 'gray85', '#A2CD5A': 'DarkOliveGreen3', '#8B0000': 'DarkRed', '#FF6A6A': 'IndianRed1', '#CD6600': 'DarkOrange3', '#FFEFDB': 'AntiqueWhite1', '#E9967A': 'DarkSalmon', '#EEE9E9': 'snow2', '#D4D4D4': 'gray83', '#383838': 'gray22', '#7A67EE': 'SlateBlue2', '#4169E1': 'RoyalBlue', '#5E5E5E': 'gray37', '#00F5FF': 'turquoise1', '#FFEFD5': 'PapayaWhip', '#CDAF95': 'PeachPuff3', '#CCCCCC': 'gray80', '#00BFFF': 'DeepSkyBlue', '#CDB79E': 'bisque3', '#969696': 'gray59', '#4F4F4F': 'gray31', '#1E90FF': 'DodgerBlue', '#FCFCFC': 'gray99', '#EE2C2C': 'firebrick2', '#8B6508': 'DarkGoldenrod4', '#696969': 'DimGray', '#FF7F24': 'chocolate1', '#8FBC8F': 'DarkSeaGreen', '#66CDAA': 'aquamarine3', '#6495ED': 'CornflowerBlue', '#0D0D0D': 'gray5', '#EEE0E5': 'LavenderBlush2', '#666666': 'gray40', '#B2DFEE': 'LightBlue2', '#B22222': 'firebrick', '#4B0082': 'indigo', '#FF82AB': 'PaleVioletRed1', '#AB82FF': 'MediumPurple1', '#79CDCD': 'DarkSlateGray3', '#FFE4C4': 'bisque', '#DEB887': 'burlywood', '#5D478B': 'MediumPurple4', '#8B3626': 'tomato4', '#FFFFE0': 'LightYellow', '#FFE4E1': 'MistyRose', '#171717': 'gray9', '#EEDFCC': 'AntiqueWhite2', '#9400D3': 'DarkViolet', '#BFEFFF': 'LightBlue1', '#8B7D6B': 'bisque4', '#FF8C69': 'salmon1', '#C6E2FF': 'SlateGray1', '#1C1C1C': 'gray11', '#FF4500': 'OrangeRed', '#FFE7BA': 'wheat1', '#808080': 'fractal', '#EE9572': 'LightSalmon2', '#CD8500': 'orange3', '#8B5A00': 'orange4', '#9932CC': 'DarkOrchid', '#EECBAD': 'PeachPuff2', '#CD8C95': 'LightPink3', '#292929': 'gray16', '#CD1076': 'DeepPink3', '#7A378B': 'MediumOrchid4', '#FF0000': 'red', '#698B22': 'OliveDrab4', '#ADADAD': 'gray68', '#EEE8CD': 'cornsilk2', '#DDA0DD': 'plum', '#7D26CD': 'purple3', '#DA70D6': 'orchid', '#DCDCDC': 'gainsboro', '#68228B': 'DarkOrchid4', '#7B68EE': 'MediumSlateBlue', '#000000': 'black', '#6B8E23': 'OliveDrab', '#FF69B4': 'HotPink', '#800000': 'maroon', '#8B668B': 'plum4', '#363636': 'gray21', '#8B4500': 'DarkOrange4', '#D3D3D3': 'LightGray', '#607B8B': 'LightSkyBlue4', '#F08080': 'LightCoral', '#CD9B9B': 'RosyBrown3', '#76EEC6': 'aquamarine2', '#FAEBD7': 'AntiqueWhite', '#68838B': 'LightBlue4', '#7FFFD4': 'aquamarine', '#C0C0C0': 'silver', '#EEDD82': 'LightGoldenrod', '#EE9A49': 'tan2', '#4A708B': 'SkyBlue4', '#008080': 'teal', '#7AC5CD': 'CadetBlue3', '#98F5FF': 'CadetBlue1', '#8B2500': 'OrangeRed4', '#8F8F8F': 'gray56', '#FFF0F5': 'LavenderBlush', '#8B8970': 'LemonChiffon4', '#8B8878': 'cornsilk4', '#6A5ACD': 'SlateBlue', '#4682B4': 'SteelBlue', '#EEEEE0': 'ivory2', '#B3B3B3': 'gray70', '#00FF00': 'green1', '#FFDEAD': 'NavajoWhite', '#CD2626': 'firebrick3', '#8B4C39': 'salmon4', '#9B30FF': 'purple1', '#E5E5E5': 'gray90', '#36648B': 'SteelBlue4', '#9C9C9C': 'gray61', '#F8F8FF': 'GhostWhite', '#333333': 'gray20', '#5C5C5C': 'gray36', '#737373': 'gray45', '#EEC900': 'gold2', '#FFE1FF': 'thistle1', '#C1FFC1': 'DarkSeaGreen1', '#CDC5BF': 'seashell3', '#A0522D': 'sienna', '#8B5F65': 'LightPink4', '#CDC1C5': 'LavenderBlush3', '#EE7621': 'chocolate2', '#FFBBFF': 'plum1', '#CD6839': 'sienna3', '#698B69': 'DarkSeaGreen4', '#050505': 'gray2', '#CD661D': 'chocolate3', '#FAFAD2': 'LightGoldenrodYellow', '#CDCDC1': 'ivory3', '#FFF8DC': 'cornsilk', '#A8A8A8': 'gray66', '#B452CD': 'MediumOrchid3', '#D2B48C': 'tan', '#8EE5EE': 'CadetBlue2', '#483D8B': 'DarkSlateBlue', '#BBFFFF': 'PaleTurquoise1', '#0000FF': 'blue', '#EE6AA7': 'HotPink2', '#EE7942': 'sienna2', '#00CD00': 'green3', '#141414': 'gray8', '#9ACD32': 'OliveDrab3', '#C71585': 'MediumVioletRed', '#EE9A00': 'orange2', '#CAFF70': 'DarkOliveGreen1', '#F5F5F5': 'gray96', '#32CD32': 'LimeGreen', '#00EE00': 'green2', '#FFB6C1': 'LightPink', '#8B1A1A': 'firebrick4', '#00B2EE': 'DeepSkyBlue2', '#20B2AA': 'LightSeaGreen', '#707070': 'gray44', '#009ACD': 'DeepSkyBlue3', '#A52A2A': 'brown', '#EE6363': 'IndianRed2', '#FAF0E6': 'linen', '#8B7D7B': 'MistyRose4', '#9A32CD': 'DarkOrchid3', '#1F1F1F': 'gray12', '#E8E8E8': 'gray91', '#7E7E7E': 'gray', '#7A8B8B': 'LightCyan4', '#CD7054': 'salmon3', '#9FB6CD': 'SlateGray3', '#CDC9A5': 'LemonChiffon3', '#D02090': 'VioletRed', '#00FFFF': 'aqua', '#2B2B2B': 'gray17', '#858585': 'gray52', '#A3A3A3': 'gray64', '#CD0000': 'red3', '#43CD80': 'SeaGreen3', '#FA8072': 'salmon', '#FFDAB9': 'PeachPuff', '#D2691E': 'chocolate', '#FF1493': 'DeepPink', '#EED2EE': 'thistle2', '#030303': 'gray1', '#8B8B7A': 'LightYellow4'}
+var nametohex = {'grey21': '#363636', 'yellow': '#FFFF00', 'grey61': '#9C9C9C', 'HotPink3': '#CD6090', 'grey63': '#A1A1A1', 'grey62': '#9E9E9E', 'grey65': '#A6A6A6', 'AliceBlue': '#F0F8FF', 'grey67': '#ABABAB', 'grey66': '#A8A8A8', 'LightCyan1': '#E0FFFF', 'grey68': '#ADADAD', 'LightCyan3': '#B4CDCD', 'LightCyan2': '#D1EEEE', 'LightCyan4': '#7A8B8B', 'gray32': '#525252', 'gray33': '#545454', 'DarkTurquoise': '#00CED1', 'gray31': '#4F4F4F', 'gray36': '#5C5C5C', 'gray37': '#5E5E5E', 'gray34': '#575757', 'gray35': '#595959', 'aquamarine4': '#458B74', 'gray38': '#616161', 'gray39': '#636363', 'aquamarine1': '#7FFFD4', 'aquamarine3': '#66CDAA', 'aquamarine2': '#76EEC6', 'CadetBlue4': '#53868B', 'CadetBlue3': '#7AC5CD', 'CadetBlue2': '#8EE5EE', 'CadetBlue1': '#98F5FF', 'crimson': '#DC143C', 'VioletRed1': '#FF3E96', 'VioletRed2': '#EE3A8C', 'VioletRed3': '#CD3278', 'VioletRed4': '#8B2252', 'brown': '#A52A2A', 'DarkGoldenrod': '#B8860B', 'gray8': '#141414', 'SlateGrey': '#708090', 'NavajoWhite2': '#EECFA1', 'gray2': '#050505', 'cyan': '#00FFFF', 'gray0': '#000000', 'gray1': '#030303', 'fractal': '#808080', 'gray7': '#121212', 'gray4': '#0A0A0A', 'gray5': '#0D0D0D', 'grey60': '#999999', 'DarkBlue': '#00008B', 'gray98': '#FAFAFA', 'DarkKhaki': '#BDB76B', 'gray99': '#FCFCFC', 'teal': '#008080', 'grey11': '#1C1C1C', 'coral4': '#8B3E2F', 'grey12': '#1F1F1F', 'grey64': '#A3A3A3', 'PaleGreen1': '#9AFF9A', 'PaleGreen3': '#7CCD7C', 'PaleGreen2': '#90EE90', 'PaleGreen4': '#548B54', 'grey14': '#242424', 'lavender': '#E6E6FA', 'grey15': '#262626', 'chartreuse3': '#66CD00', 'chartreuse2': '#76EE00', 'chartreuse1': '#7FFF00', 'chartreuse4': '#458B00', 'RosyBrown': '#BC8F8F', 'blue': '#0000FF', 'NavajoWhite': '#FFDEAD', 'opaque': '#000000', 'maroon4': '#8B1C62', 'maroon3': '#CD2990', 'maroon2': '#EE30A7', 'maroon1': '#FF34B3', 'gold3': '#CDAD00', 'gold2': '#EEC900', 'gold1': '#FFD700', 'gold4': '#8B7500', 'LightSlateGrey': '#778899', 'gray30': '#4D4D4D', 'DarkGreen': '#006400', 'SkyBlue': '#87CEEB', 'GhostWhite': '#F8F8FF', 'LavenderBlush': '#FFF0F5', 'SeaGreen': '#2E8B57', 'BlanchedAlmond': '#FFEBCD', 'gray60': '#999999', 'DarkOliveGreen': '#556B2F', 'firebrick2': '#EE2C2C', 'firebrick1': '#FF3030', 'firebrick4': '#8B1A1A', 'sienna': '#A0522D', 'blue1': '#0000FF', 'lime': '#00FF00', 'gray55': '#8C8C8C', 'blue2': '#0000EE', 'DarkViolet': '#9400D3', 'blue4': '#00008B', 'peru': '#CD853F', 'DarkMagenta': '#8B008B', 'LightBlue2': '#B2DFEE', 'red2': '#EE0000', 'red1': '#FF0000', 'LightBlue1': '#BFEFFF', 'LightBlue4': '#68838B', 'red4': '#8B0000', 'MediumSpringGreen': '#00FA9A', 'chocolate': '#D2691E', 'ForestGreen': '#228B22', 'DarkRed': '#8B0000', 'olive': '#808000', 'HotPink2': '#EE6AA7', 'HotPink1': '#FF6EB4', 'HotPink4': '#8B3A62', 'grey18': '#2E2E2E', 'grey19': '#303030', 'none': '#000000', 'PeachPuff': '#FFDAB9', 'MediumGoldenRod': '#D1C166', 'moccasin': '#FFE4B5', 'grey10': '#1A1A1A', 'chocolate1': '#FF7F24', 'chocolate2': '#EE7621', 'chocolate3': '#CD661D', 'chocolate4': '#8B4513', 'wheat2': '#EED8AE', 'grey16': '#292929', 'grey17': '#2B2B2B', 'gray69': '#B0B0B0', 'gray68': '#ADADAD', 'gray65': '#A6A6A6', 'gray64': '#A3A3A3', 'gray67': '#ABABAB', 'gray66': '#A8A8A8', 'gray61': '#9C9C9C', 'coral': '#FF7F50', 'gray63': '#A1A1A1', 'gray62': '#9E9E9E', 'LightGoldenrod': '#EEDD82', 'turquoise4': '#00868B', 'seashell2': '#EEE5DE', 'seashell3': '#CDC5BF', 'magenta': '#FF00FF', 'seashell1': '#FFF5EE', 'tan': '#D2B48C', 'seashell4': '#8B8682', 'pink': '#FFC0CB', 'LightSlateBlue': '#8470FF', 'SteelBlue1': '#63B8FF', 'SteelBlue3': '#4F94CD', 'SteelBlue2': '#5CACEE', 'SteelBlue4': '#36648B', 'grey89': '#E3E3E3', 'grey88': '#E0E0E0', 'grey87': '#DEDEDE', 'grey86': '#DBDBDB', 'grey85': '#D9D9D9', 'grey84': '#D6D6D6', 'grey83': '#D4D4D4', 'grey82': '#D1D1D1', 'grey81': '#CFCFCF', 'grey80': '#CCCCCC', 'ivory2': '#EEEEE0', 'khaki4': '#8B864E', 'khaki1': '#FFF68F', 'khaki2': '#EEE685', 'khaki3': '#CDC673', 'salmon1': '#FF8C69', 'salmon3': '#CD7054', 'salmon2': '#EE8262', 'salmon4': '#8B4C39', 'LightPink': '#FFB6C1', 'gray9': '#171717', 'green': '#008000', 'brown2': '#EE3B3B', 'brown3': '#CD3333', 'brown1': '#FF4040', 'brown4': '#8B2323', 'cadet blue': '#5F9EA0', 'orange4': '#8B5A00', 'orange1': '#FFA500', 'orange3': '#CD8500', 'orange2': '#EE9A00', 'gray3': '#080808', 'gray6': '#0F0F0F', 'yellow4': '#8B8B00', 'yellow3': '#CDCD00', 'yellow2': '#EEEE00', 'yellow1': '#FFFF00', 'PapayaWhip': '#FFEFD5', 'bisque2': '#EED5B7', 'OliveDrab4': '#698B22', 'bisque3': '#CDB79E', 'OliveDrab1': '#C0FF3E', 'OliveDrab2': '#B3EE3A', 'OliveDrab3': '#9ACD32', 'SkyBlue4': '#4A708B', 'SkyBlue1': '#87CEFF', 'SkyBlue3': '#6CA6CD', 'SkyBlue2': '#7EC0EE', 'grey58': '#949494', 'grey59': '#969696', 'grey54': '#8A8A8A', 'grey55': '#8C8C8C', 'grey56': '#8F8F8F', 'grey57': '#919191', 'grey50': '#7F7F7F', 'silver': '#C0C0C0', 'grey52': '#858585', 'grey53': '#878787', 'cyan2': '#00EEEE', 'cyan3': '#00CDCD', 'gray23': '#3B3B3B', 'RosyBrown4': '#8B6969', 'gray25': '#404040', 'CornflowerBlue': '#6495ED', 'cyan4': '#008B8B', 'gray26': '#424242', 'gray29': '#4A4A4A', 'LimeGreen': '#32CD32', 'MistyRose': '#FFE4E1', 'navy': '#000080', 'gray94': '#F0F0F0', 'gray95': '#F2F2F2', 'gray96': '#F5F5F5', 'gray97': '#F7F7F7', 'gray90': '#E5E5E5', 'gray91': '#E8E8E8', 'gray92': '#EBEBEB', 'gray93': '#EDEDED', 'MediumPurple': '#9370DB', 'MidnightBlue': '#191970', 'cornsilk': '#FFF8DC', 'red': '#FF0000', 'grey69': '#B0B0B0', 'DarkOrchid4': '#68228B', 'blue3': '#0000CD', 'LightSteelBlue': '#B0C4DE', 'DarkOrchid1': '#BF3EFF', 'DarkOrchid2': '#B23AEE', 'DarkOrchid3': '#9A32CD', 'grey72': '#B8B8B8', 'FloralWhite': '#FFFAF0', 'grey70': '#B3B3B3', 'DarkSeaGreen': '#8FBC8F', 'grey71': '#B5B5B5', 'gray17': '#2B2B2B', 'grey77': '#C4C4C4', 'tomato4': '#8B3626', 'tomato1': '#FF6347', 'tomato3': '#CD4F39', 'tomato2': '#EE5C42', 'DarkSlateGray1': '#97FFFF', 'DarkSlateGray2': '#8DEEEE', 'DarkSlateGray3': '#79CDCD', 'DarkSlateGray4': '#528B8B', 'SteelBlue': '#4682B4', 'MediumSlateBlue': '#7B68EE', 'OrangeRed': '#FF4500', 'grey79': '#C9C9C9', 'MediumVioletRed': '#C71585', 'burlywood': '#DEB887', 'white': '#FFFFFF', 'tomato': '#FF6347', 'DodgerBlue': '#1E90FF', 'RoyalBlue4': '#27408B', 'RoyalBlue1': '#4876FF', 'RoyalBlue3': '#3A5FCD', 'RoyalBlue2': '#436EEE', 'MistyRose1': '#FFE4E1', 'MistyRose3': '#CDB7B5', 'MistyRose2': '#EED5D2', 'MistyRose4': '#8B7D7B', 'LightGray': '#D3D3D3', 'LightYellow': '#FFFFE0', 'DarkOrange': '#FF8C00', 'DarkGray': '#A9A9A9', 'SlateGray': '#708090', 'turquoise3': '#00C5CD', 'turquoise2': '#00E5EE', 'turquoise1': '#00F5FF', 'burlywood2': '#EEC591', 'burlywood4': '#8B7355', 'DarkSlateGray': '#2F4F4F', 'linen': '#FAF0E6', 'grey47': '#787878', 'snow': '#FFFAFA', 'grey46': '#757575', 'gray58': '#949494', 'gray59': '#969696', 'IndianRed4': '#8B3A3A', 'purple4': '#551A8B', 'gray52': '#858585', 'gray53': '#878787', 'purple1': '#9B30FF', 'IndianRed1': '#FF6A6A', 'purple3': '#7D26CD', 'purple2': '#912CEE', 'thistle3': '#CDB5CD', 'thistle2': '#EED2EE', 'SpringGreen2': '#00EE76', 'SpringGreen3': '#00CD66', 'SpringGreen4': '#008B45', 'thistle4': '#8B7B8B', 'LightPink2': '#EEA2AD', 'LightPink3': '#CD8C95', 'LightPink1': '#FFAEB9', 'LightPink4': '#8B5F65', 'MediumPurple1': '#AB82FF', 'MediumPurple2': '#9F79EE', 'MediumPurple3': '#8968CD', 'MediumPurple4': '#5D478B', 'MediumTurquoise': '#48D1CC', 'DimGray': '#696969', 'gray14': '#242424', 'grey100': '#FFFFFF', 'OrangeRed3': '#CD3700', 'OrangeRed2': '#EE4000', 'OrangeRed1': '#FF4500', 'LightSeaGreen': '#20B2AA', 'gold': '#FFD700', 'OrangeRed4': '#8B2500', 'NavajoWhite4': '#8B795E', 'NavajoWhite1': '#FFDEAD', 'LawnGreen': '#7CFC00', 'NavajoWhite3': '#CDB38B', 'LightGoldenrod4': '#8B814C', 'LightGoldenrod1': '#FFEC8B', 'LightGoldenrod3': '#CDBE70', 'LightGoldenrod2': '#EEDC82', 'gray21': '#363636', 'PaleGreen': '#98FB98', 'green4': '#008B00', 'green1': '#00FF00', 'green3': '#00CD00', 'green2': '#00EE00', 'MediumOrchid': '#BA55D3', 'black': '#000000', 'gray20': '#333333', 'orchid4': '#8B4789', 'DodgerBlue1': '#1E90FF', 'DodgerBlue2': '#1C86EE', 'DodgerBlue3': '#1874CD', 'DodgerBlue4': '#104E8B', 'orchid1': '#FF83FA', 'orchid2': '#EE7AE9', 'orchid3': '#CD69C9', 'DarkSeaGreen4': '#698B69', 'DarkSeaGreen3': '#9BCD9B', 'DarkSeaGreen2': '#B4EEB4', 'DarkSeaGreen1': '#C1FFC1', 'gray100': '#FFFFFF', 'BlueViolet': '#8A2BE2', 'bisque4': '#8B7D6B', 'MediumOrchid4': '#7A378B', 'MintCream': '#F5FFFA', 'MediumOrchid1': '#E066FF', 'bisque1': '#FFE4C4', 'MediumOrchid3': '#B452CD', 'MediumOrchid2': '#D15FEE', 'gray': '#7E7E7E', 'DeepSkyBlue': '#00BFFF', 'LightGrey': '#D3D3D3', 'grey78': '#C7C7C7', 'gray22': '#383838', 'plum4': '#8B668B', 'plum3': '#CD96CD', 'plum2': '#EEAEEE', 'plum1': '#FFBBFF', 'DarkSlateGrey': '#2F4F4F', 'DarkOrchid': '#9932CC', 'OliveDrab': '#6B8E23', 'gray83': '#D4D4D4', 'grey49': '#7D7D7D', 'grey48': '#7A7A7A', 'thistle': '#D8BFD8', 'violet': '#EE82EE', 'grey43': '#6E6E6E', 'grey42': '#6B6B6B', 'LightSalmon4': '#8B5742', 'grey40': '#666666', 'LightSalmon2': '#EE9572', 'LightSalmon3': '#CD8162', 'grey45': '#737373', 'LightSalmon1': '#FFA07A', 'honeydew': '#F0FFF0', 'gray18': '#2E2E2E', 'gray19': '#303030', 'LightCyan': '#E0FFFF', 'gray15': '#262626', 'gray16': '#292929', 'gray82': '#D1D1D1', 'gray10': '#1A1A1A', 'gray11': '#1C1C1C', 'gray12': '#1F1F1F', 'gray13': '#212121', 'grey93': '#EDEDED', 'PaleGoldenrod': '#EEE8AA', 'gainsboro': '#DCDCDC', 'AntiqueWhite3': '#CDC0B0', 'AntiqueWhite2': '#EEDFCC', 'AntiqueWhite1': '#FFEFDB', 'gray27': '#454545', 'SlateBlue': '#6A5ACD', 'AntiqueWhite4': '#8B8378', 'DimGrey': '#696969', 'VioletRed': '#D02090', 'WhiteSmoke': '#F5F5F5', 'grey38': '#616161', 'grey39': '#636363', 'grey36': '#5C5C5C', 'grey37': '#5E5E5E', 'grey34': '#575757', 'grey35': '#595959', 'aqua': '#00FFFF', 'grey33': '#545454', 'grey30': '#4D4D4D', 'grey31': '#4F4F4F', 'NavyBlue': '#000080', 'sienna4': '#8B4726', 'gray81': '#CFCFCF', 'gray80': '#CCCCCC', 'sienna1': '#FF8247', 'gray86': '#DBDBDB', 'sienna3': '#CD6839', 'sienna2': '#EE7942', 'gray89': '#E3E3E3', 'gray88': '#E0E0E0', 'SlateBlue4': '#473C8B', 'gray87': '#DEDEDE', 'LightSteelBlue1': '#CAE1FF', 'magenta3': '#CD00CD', 'IndianRed': '#CD5C5C', 'SlateBlue2': '#7A67EE', 'SlateBlue1': '#836FFF', 'LightBlue': '#ADD8E6', 'PeachPuff4': '#8B7765', 'seashell': '#FFF5EE', 'SaddleBrown': '#8B4513', 'PeachPuff1': '#FFDAB9', 'PeachPuff2': '#EECBAD', 'PeachPuff3': '#CDAF95', 'aquamarine': '#7FFFD4', 'LemonChiffon2': '#EEE9BF', 'LemonChiffon1': '#FFFACD', 'tan4': '#8B5A2B', 'tan3': '#CD853F', 'tan2': '#EE9A49', 'tan1': '#FFA54F', 'LemonChiffon4': '#8B8970', 'orange': '#FFA500', 'OldLace': '#FDF5E6', 'PowderBlue': '#B0E0E6', 'RosyBrown3': '#CD9B9B', 'RoyalBlue': '#4169E1', 'LightSkyBlue4': '#607B8B', 'LightSkyBlue1': '#B0E2FF', 'LightSkyBlue2': '#A4D3EE', 'LightSkyBlue3': '#8DB6CD', 'LightYellow1': '#FFFFE0', 'LightYellow2': '#EEEED1', 'LightYellow3': '#CDCDB4', 'LightYellow4': '#8B8B7A', 'goldenrod4': '#8B6914', 'goldenrod1': '#FFC125', 'goldenrod2': '#EEB422', 'goldenrod3': '#CD9B1D', 'grey32': '#525252', 'LemonChiffon': '#FFFACD', 'burlywood1': '#FFD39B', 'YellowGreen': '#9ACD32', 'LightCoral': '#F08080', 'burlywood3': '#CDAA7D', 'ivory3': '#CDCDC1', 'firebrick3': '#CD2626', 'ivory1': '#FFFFF0', 'grey8': '#141414', 'ivory4': '#8B8B83', 'grey9': '#171717', 'DarkSalmon': '#E9967A', 'SlateGray1': '#C6E2FF', 'SlateGray2': '#B9D3EE', 'SlateGray3': '#9FB6CD', 'SlateGray4': '#6C7B8B', 'RosyBrown2': '#EEB4B4', 'RosyBrown1': '#FFC1C1', 'gray85': '#D9D9D9', 'gray84': '#D6D6D6', 'LightGreen': '#90EE90', 'LavenderBlush1': '#FFF0F5', 'grey73': '#BABABA', 'LavenderBlush3': '#CDC1C5', 'LavenderBlush2': '#EEE0E5', 'grey76': '#C2C2C2', 'LavenderBlush4': '#8B8386', 'grey74': '#BDBDBD', 'grey75': '#BFBFBF', 'pink1': '#FFB5C5', 'pink3': '#CD919E', 'pink2': '#EEA9B8', 'pink4': '#8B636C', 'gray47': '#787878', 'gray46': '#757575', 'gray45': '#737373', 'gray44': '#707070', 'gray43': '#6E6E6E', 'gray42': '#6B6B6B', 'gray41': '#696969', 'gray40': '#666666', 'gray49': '#7D7D7D', 'gray48': '#7A7A7A', 'MediumAquamarine': '#66CDAA', 'MediumForestGreen': '#32814B', 'azure1': '#F0FFFF', 'azure3': '#C1CDCD', 'azure2': '#E0EEEE', 'indigo': '#4B0082', 'azure4': '#838B8B', 'firebrick': '#B22222', 'DarkGrey': '#A9A9A9', 'magenta4': '#8B008B', 'SlateBlue3': '#6959CD', 'magenta2': '#EE00EE', 'magenta1': '#FF00FF', 'grey51': '#828282', 'chartreuse': '#7FFF00', 'grey41': '#696969', 'DarkOliveGreen4': '#6E8B3D', 'turquoise': '#40E0D0', 'DarkOliveGreen1': '#CAFF70', 'DarkOliveGreen3': '#A2CD5A', 'DarkOliveGreen2': '#BCEE68', 'grey6': '#0F0F0F', 'grey7': '#121212', 'grey4': '#0A0A0A', 'grey5': '#0D0D0D', 'grey2': '#050505', 'grey3': '#080808', 'grey0': '#000000', 'grey1': '#030303', 'gray50': '#7F7F7F', 'cyan1': '#00FFFF', 'gray51': '#828282', 'gray24': '#3D3D3D', 'HotPink': '#FF69B4', 'DarkGoldenrod4': '#8B6508', 'gray54': '#8A8A8A', 'DarkGoldenrod1': '#FFB90F', 'DarkGoldenrod2': '#EEAD0E', 'DarkGoldenrod3': '#CD950C', 'IndianRed2': '#EE6363', 'DeepPink': '#FF1493', 'gray28': '#474747', 'IndianRed3': '#CD5555', 'DarkCyan': '#008B8B', 'GreenYellow': '#ADFF2F', 'LightSalmon': '#FFA07A', 'DarkOrange4': '#8B4500', 'DarkOrange1': '#FF7F00', 'transparent': '#000000', 'DarkOrange3': '#CD6600', 'orchid': '#DA70D6', 'purple': '#800080', 'wheat4': '#8B7E66', 'wheat1': '#FFE7BA', 'wheat3': '#CDBA96', 'SpringGreen1': '#00FF7F', 'coral3': '#CD5B45', 'coral2': '#EE6A50', 'coral1': '#FF7256', 'thistle1': '#FFE1FF', 'PaleTurquoise': '#AFEEEE', 'bisque': '#FFE4C4', 'DeepPink3': '#CD1076', 'DeepPink2': '#EE1289', 'DeepPink1': '#FF1493', 'khaki': '#F0E68C', 'wheat': '#F5DEB3', 'MediumSeaGreen': '#3CB371', 'DeepPink4': '#8B0A50', 'salmon': '#FA8072', 'grey44': '#707070', 'DarkSlateBlue': '#483D8B', 'PaleVioletRed4': '#8B475D', 'PaleVioletRed1': '#FF82AB', 'PaleVioletRed2': '#EE799F', 'PaleVioletRed3': '#CD6889', 'AntiqueWhite': '#FAEBD7', 'PaleTurquoise4': '#668B8B', 'PaleTurquoise3': '#96CDCD', 'PaleTurquoise2': '#AEEEEE', 'PaleTurquoise1': '#BBFFFF', 'gray56': '#8F8F8F', 'plum': '#DDA0DD', 'beige': '#F5F5DC', 'SpringGreen': '#00FF7F', 'azure': '#F0FFFF', 'honeydew1': '#F0FFF0', 'honeydew2': '#E0EEE0', 'honeydew3': '#C1CDC1', 'honeydew4': '#838B83', 'gray57': '#919191', 'snow4': '#8B8989', 'snow2': '#EEE9E9', 'snow3': '#CDC9C9', 'snow1': '#FFFAFA', 'SandyBrown': '#F4A460', 'grey13': '#212121', 'SeaGreen4': '#2E8B57', 'SeaGreen3': '#43CD80', 'SeaGreen2': '#4EEE94', 'SeaGreen1': '#54FF9F', 'grey29': '#4A4A4A', 'grey28': '#474747', 'grey25': '#404040', 'grey24': '#3D3D3D', 'grey27': '#454545', 'grey26': '#424242', 'fuchsia': '#FF00FF', 'grey20': '#333333', 'grey23': '#3B3B3B', 'grey22': '#383838', 'gray78': '#C7C7C7', 'gray79': '#C9C9C9', 'gray76': '#C2C2C2', 'gray77': '#C4C4C4', 'gray74': '#BDBDBD', 'gray75': '#BFBFBF', 'gray72': '#B8B8B8', 'gray73': '#BABABA', 'gray70': '#B3B3B3', 'gray71': '#B5B5B5', 'ivory': '#FFFFF0', 'LemonChiffon3': '#CDC9A5', 'DeepSkyBlue4': '#00688B', 'DeepSkyBlue3': '#009ACD', 'DeepSkyBlue2': '#00B2EE', 'DeepSkyBlue1': '#00BFFF', 'cornsilk4': '#8B8878', 'cornsilk2': '#EEE8CD', 'cornsilk3': '#CDC8B1', 'CadetBlue': '#5F9EA0', 'cornsilk1': '#FFF8DC', 'grey90': '#E5E5E5', 'grey91': '#E8E8E8', 'grey92': '#EBEBEB', 'goldenrod': '#DAA520', 'grey94': '#F0F0F0', 'grey95': '#F2F2F2', 'grey96': '#F5F5F5', 'grey97': '#F7F7F7', 'grey98': '#FAFAFA', 'grey99': '#FCFCFC', 'red3': '#CD0000', 'LightSteelBlue2': '#BCD2EE', 'LightSteelBlue3': '#A2B5CD', 'LightSteelBlue4': '#6E7B8B', 'LightBlue3': '#9AC0CD', 'maroon': '#800000', 'LightSkyBlue': '#87CEFA', 'LightGoldenrodYellow': '#FAFAD2', 'MediumBlue': '#0000CD', 'LightSlateGray': '#778899', 'DarkOrange2': '#EE7600', 'PaleVioletRed': '#DB7093'}
diff --git a/frontend/imgrid/colors/junk/colorpicker.html b/frontend/imgrid/colors/junk/colorpicker.html
new file mode 100755
index 0000000..23993ac
--- /dev/null
+++ b/frontend/imgrid/colors/junk/colorpicker.html
@@ -0,0 +1,254 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+<html>
+<head>
+<style type='text/css'>
+body
+ {
+ background-image:url('http://asdf.us/im/ef/_imgrid_1320723477_pepper.png');
+ }
+#firstd
+ {
+ position:fixed;
+ top:40px;
+ right:20%;
+ height:40px;
+ width:0px;
+ background-color:#ffdead;
+ color:white;
+ }
+#secondd
+ {
+ position:fixed;
+ top: 100px;
+ right:20%;
+ height:40px;
+ width: 200px;
+ font-family:'helvetica';
+ font-size:40px;
+ }
+
+#error
+ {
+ position: fixed;
+ bottom: 100px;
+ height:40px;
+ width: 200px;
+ background-color: mediumseagreen;
+ right: 50%;
+ }
+#colorerror
+ {
+ position: fixed;
+ bottom:50px;
+ height:30px;
+ width: 140px;
+ background-color: red;
+ right: 50%;
+ }
+iframe
+ {
+ width:600px;
+ height:400px;
+ }
+#namespace
+ {
+ position:fixed;
+ bottom:40px;
+ right:20px;
+ }
+#hexmode
+ {
+ position:fixed;
+ top:300px;
+ right:100px;
+ font-size:40px;
+ font-family:helvetica;
+ }
+#hexswitch
+ {
+ height:100px;
+ width:300px;
+ font-size:20px
+ border-style: groove;
+ border-width: 4px;
+ background-color:goldenrod;
+ text-align:center;
+ }
+</style>
+</head>
+<body>
+<div class='content' sytle="background-color:yellow; height:40px; width:300px; position:fixed; bottom:20px; right:45%">BLACH BLAH BLAH</div>
+<button>wonderbutton</button>
+<p>hex</p>
+<p>text</p>
+<div id='hexswitch'>CLICK TO SHOW HEXES</div>
+<div><iframe src='colorsnew.html'></iframe></div>
+<div id='guy2' class='guys' style='position:fixed;z-index:10;background-color:dodgerblue;height:40px;width:50px;top:10px;right:81%'>funny</div>
+<div id='guy3' class='guys' style='position:fixed;z-index:10;background-color:snow;height:40px;width:50px;top:10px;right:76%'>happy</div>
+<div id='guy1' class='guys' style='position:fixed;z-index:10;background-color:magenta;height:40px;width:50px;top:10px;right:66%'>silly</div>
+<div id='guy5' class='guys' style='position:fixed;z-index:10;background-color:magenta;height:40px;width:50px;top:10px;right:71%'>smart</div>
+<div id='showinfo' class='guys' style='position:fixed;z-index:10;background-color:magenta;height:40px;width:50px;top:10px;right:60%'>click it</div>
+
+<div id='firstd'>click me</div><div id='secondd'></div>
+<div id='error'></div>
+<div id='colorerror'></div>
+<input id='namespace' type='text'></input>
+<div id='hexmode'>choose between hex or text...<input id='hexortext' type='checkbox' value="1"></input></div>
+<script type="text/javascript" src="jquery-1.6.4.min.js"></script>
+<script type="text/javascript" src="colordict.js"></script>
+<script type="text/javascript">
+
+function showid(id)
+ {
+ $('#guy5').html(id)
+ }
+$('.guys').mouseover(function() {
+ showid(this.id);
+});
+$("button").click(function () {
+$("p").toggle();
+});
+
+function removecontent()
+ {
+ $('.content').hover(function(){return})
+ $('.content').html("")
+ }
+removecontent()
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idstr, propertystr)
+ {
+ grab = $('#'+idstr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idstr, propertystr)
+ {
+ result = getproperty(idstr, propertystr)
+ newwidth = goldenize(result)
+ widthval = newwidth.toString()+'px'
+ $('#'+idstr).css('width', widthval)
+ }
+makegolden('firstd', 'height')
+$('#colorerror').css('background-color', '#556B2F')
+
+//from http://haacked.com/archive/2009/12/29/convert-rgb-to-hex.aspx
+function colorToHex(color) {
+ if (color.substr(0, 1) === '#') {
+ return color;
+ }
+ var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color);
+
+ var red = parseInt(digits[2]);
+ var green = parseInt(digits[3]);
+ var blue = parseInt(digits[4]);
+
+ var rgb = blue | (green << 8) | (red << 16);
+ return digits[1] + '#' + rgb.toString(16);
+};
+
+
+monica = $('#hexortext:checked').length
+$('#error').append(monica)
+$('#error').append('knows whassup')
+var hexes = false
+function hexswitch()
+ {
+ if(hexes == false)
+ {
+ $('#hexswitch').html('CLICK TO SHOW COLOR NAMES')
+ hexes = true;
+ }
+
+ else
+ {
+ $('#hexswitch').html('CLICK TO SHOW HEX NAMES')
+ hexes = false;
+ }
+ }
+$('#hexswitch').click(function(){hexswitch()})
+//takes a div name and returns a colorname
+function showcolorname(divstr)
+ {
+ bgcolor = $('#'+divstr).css('background-color')
+ lowercasehex = colorToHex(bgcolor)
+ hex = lowercasehex.toUpperCase()
+ imname = hextoname[hex]
+ if ($('#hexortext:checked').length == 1)
+ {
+ imname = hex
+ }
+ return imname
+ }
+function bigname()
+ {
+ bebop = showcolorname('firstd')
+ $('#secondd').html(bebop)
+ }
+function putitin(hotboy)
+ {
+ $('#namespace').val(hotboy)
+ }
+$("#firstd").hover(function(){bigname()})
+$("#firstd").hover(function(){$('#secondd').fadeOut(100);$('#secondd').fadeIn(500);});
+function boys ()
+ {
+ var heyguys = showcolorname('firstd')
+ putitin(heyguys)
+ }
+$('#firstd').click(function(){boys()})
+//$('#'+divstr).mouseover(bigname(divstr)
+//three way toggle with background color
+//here's how it will work
+//there is a dictionary of background color hexes which translate into names
+// with every click of a div the .html() property shifts between three states
+//1. showing the background color as a string
+//2. showing nothing
+//3. showing the value of the hash using the background color as the key to the
+//hash
+//first step: make the three stage button DONE
+
+var infostate = 0;
+$('#showinfo').click(function(){
+ if(infostate == 0)
+ {$('#guy2').html(colorToHex($('#guy2').css('background-color')));infostate = 1}
+ else if(infostate == 1)
+ {$('#guy2').html(newdict[colorToHex($('#guy2').css('background-color'))]);infostate = 2}
+ else if(infostate == 2)
+ {$('#guy2').html(0);infostate = 0}
+ })
+//second step make dictionary DONE
+var newdict = {}
+newdict['#1e90ff'] = 'green'
+newdict['#ff00ff'] = 'purple'
+newdict['#fffafa'] = 'mauve'
+
+//make it happen using guy1 guy2 guy3
+// DO NOT USE HEX TO COLORNAME AND JQUERY BACKGROUND COLOR...use the dictionari
+//es instead...they are divlist, and hextoname and nametohex and divtoname they have a
+//range of 0-673 (or length of 674)
+
+
+var happyguys = ['#guy1','#guy2','#guy3']
+function tester()
+ {
+ for(var i=0; i<happyguys.length; i++){
+ $(happyguys[i]).html($(happyguys[i]).css('background-color'))
+ }
+ }
+tester()
+
+//the script will be very convoluted. please make it anyway
+//remember the only way to affect a list of things is to iterate over them
+//make a list of the div names put it in this format... do that next
+
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/junk/colorpixx.css b/frontend/imgrid/colors/junk/colorpixx.css
new file mode 100755
index 0000000..1ddf557
--- /dev/null
+++ b/frontend/imgrid/colors/junk/colorpixx.css
@@ -0,0 +1,2047 @@
+
+body
+{word-wrap: break-word;}
+
+#main div
+{display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+min-height: 30px;
+min-width:20px;
+zoom: 1;
+*display: inline;}
+}
+
+#main
+ {
+ width:600px;
+ }
+#colornames
+{position:fixed;
+font-size:50px;
+top:50px;
+right:50%;}
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{height:30px;
+width:10px;}
diff --git a/frontend/imgrid/colors/junk/colorpixx.js b/frontend/imgrid/colors/junk/colorpixx.js
new file mode 100755
index 0000000..4b42e4d
--- /dev/null
+++ b/frontend/imgrid/colors/junk/colorpixx.js
@@ -0,0 +1,92 @@
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newwidth = goldenize(result)
+ widthval = newwidth.toString()+'px'
+ $(idandselectr).css('width', widthval)
+ }
+makegolden('.colors', 'height')
+//remove content this function takes the name out of the divs
+
+function removecontent()
+ {
+ $('.colors').html("")
+ }
+removecontent()
+
+function colorToHex(color) {
+ if (color.substr(0, 1) === '#') {
+ return color;
+ }
+ var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color);
+
+ var red = parseInt(digits[2]);
+ var green = parseInt(digits[3]);
+ var blue = parseInt(digits[4]);
+
+ var rgb = blue | (green << 8) | (red << 16);
+ return digits[1] + '#' + rgb.toString(16);
+};
+
+//takes a div name and returns a colorname
+
+function showcolorname(divstr)
+
+ {
+
+ bgcolor = $('#'+divstr).css('background-color')
+ lowercasehex = colorToHex(bgcolor)
+ hex = lowercasehex.toUpperCase()
+ imname = hextoname[hex]
+/* if ($('#hexortext:checked').length == 1)
+ {
+ imname = hex
+ }*/
+ return imname
+ }
+function bigname(divstr)
+ {
+ bebop = showcolorname(divstr)
+// $('#colornames').html(bebop)
+ }
+function writeit(text)
+ {
+// $('#colornames').append(text)
+ }
+function makebig(divstr)
+ {
+ firstheight = $('#'+divstr).height()
+ newheight = goldenize(firstheight)
+ $('#'+divstr).height(newheight)
+// $('#colornames').append(firstheight)
+ }
+function makesmall(divstr)
+ {
+ oldheight = $('.colors').height()
+ $('#'+divstr).height(oldheight)
+ }
+$('.colors').hover(function() {
+ bigname(this.id);
+ makebig(this.id);
+ makegolden('#'+this.id, 'height')},
+function(){
+ makesmall(this.id);
+ makegolden('#'+this.id, 'height')
+});
+$('#colornames').html("")
+$("#popupContact").css('background-color', 'black')
+$('.colors').css('margin-top', '2px')
diff --git a/frontend/imgrid/colors/junk/colors.html b/frontend/imgrid/colors/junk/colors.html
new file mode 100755
index 0000000..0ef22f9
--- /dev/null
+++ b/frontend/imgrid/colors/junk/colors.html
@@ -0,0 +1,5429 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!-- saved from url=(0124)https://mail.google.com/mail/?ui=2&ik=8c5c6e41c0&view=att&th=131a60939ee4c454&attid=0.1&disp=inline&realattid=f_gr2htzs60&zw -->
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head>
+<style type="text/css">
+*
+ {
+ font-family: sans-serif;
+ }
+</style>
+<body>
+
+
+
+<div>
+<h1><a></a>List of Color Names</h1>
+<div>
+
+<p>a list of named colors for use with PHOTOBLASTER:</p>
+
+<table>
+<tbody>
+ <tr>
+ <th align="right">Name</th>
+ <th align="center">Color</th>
+ <th align="left">RGB</th>
+ <th align="left">Hex</th>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow</td>
+ <td align="center" style="background-color:rgb(255, 250, 250)">snow</td>
+ <td align="left">rgb(255, 250, 250)</td>
+ <td align="left">#FFFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow1</td>
+ <td align="center" style="background-color:rgb(255, 250, 250)">snow1</td>
+ <td align="left">rgb(255, 250, 250)</td>
+ <td align="left">#FFFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow2</td>
+ <td align="center" style="background-color:rgb(238, 233, 233)">snow2</td>
+ <td align="left">rgb(238, 233, 233)</td>
+ <td align="left">#EEE9E9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown1</td>
+ <td align="center" style="background-color:rgb(255, 193, 193)">RosyBrown1</td>
+ <td align="left">rgb(255, 193, 193)</td>
+ <td align="left">#FFC1C1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown2</td>
+ <td align="center" style="background-color:rgb(238, 180, 180)">RosyBrown2</td>
+ <td align="left">rgb(238, 180, 180)</td>
+ <td align="left">#EEB4B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow3</td>
+ <td align="center" style="background-color:rgb(205, 201, 201)">snow3</td>
+ <td align="left">rgb(205, 201, 201)</td>
+ <td align="left">#CDC9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCoral</td>
+ <td align="center" style="background-color:rgb(240, 128, 128)">LightCoral</td>
+ <td align="left">rgb(240, 128, 128)</td>
+ <td align="left">#F08080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed1</td>
+ <td align="center" style="background-color:rgb(255, 106, 106)">IndianRed1</td>
+ <td align="left">rgb(255, 106, 106)</td>
+ <td align="left">#FF6A6A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown3</td>
+ <td align="center" style="background-color:rgb(205, 155, 155)">RosyBrown3</td>
+ <td align="left">rgb(205, 155, 155)</td>
+ <td align="left">#CD9B9B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed2</td>
+ <td align="center" style="background-color:rgb(238, 99, 99)">IndianRed2</td>
+ <td align="left">rgb(238, 99, 99)</td>
+ <td align="left">#EE6363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown</td>
+ <td align="center" style="background-color:rgb(188, 143, 143)">RosyBrown</td>
+ <td align="left">rgb(188, 143, 143)</td>
+ <td align="left">#BC8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown1</td>
+ <td align="center" style="background-color:rgb(255, 64, 64)">brown1</td>
+ <td align="left">rgb(255, 64, 64)</td>
+ <td align="left">#FF4040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick1</td>
+ <td align="center" style="background-color:rgb(255, 48, 48)">firebrick1</td>
+ <td align="left">rgb(255, 48, 48)</td>
+ <td align="left">#FF3030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown2</td>
+ <td align="center" style="background-color:rgb(238, 59, 59)">brown2</td>
+ <td align="left">rgb(238, 59, 59)</td>
+ <td align="left">#EE3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed</td>
+ <td align="center" style="background-color:rgb(205, 92, 92)">IndianRed</td>
+ <td align="left">rgb(205, 92, 92)</td>
+ <td align="left">#CD5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed3</td>
+ <td align="center" style="background-color:rgb(205, 85, 85)">IndianRed3</td>
+ <td align="left">rgb(205, 85, 85)</td>
+ <td align="left">#CD5555</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick2</td>
+ <td align="center" style="background-color:rgb(238, 44, 44)">firebrick2</td>
+ <td align="left">rgb(238, 44, 44)</td>
+ <td align="left">#EE2C2C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">snow4</td>
+ <td align="center" style="background-color:rgb(139, 137, 137)">snow4</td>
+ <td align="left">rgb(139, 137, 137)</td>
+ <td align="left">#8B8989</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown3</td>
+ <td align="center" style="background-color:rgb(205, 51, 51)">brown3</td>
+ <td align="left">rgb(205, 51, 51)</td>
+ <td align="left">#CD3333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red</td>
+ <td align="center" style="background-color:rgb(255, 0, 0)">red</td>
+ <td align="left">rgb(255, 0, 0)</td>
+ <td align="left">#FF0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red1</td>
+ <td align="center" style="background-color:rgb(255, 0, 0)">red1</td>
+ <td align="left">rgb(255, 0, 0)</td>
+ <td align="left">#FF0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RosyBrown4</td>
+ <td align="center" style="background-color:rgb(139, 105, 105)">RosyBrown4</td>
+ <td align="left">rgb(139, 105, 105)</td>
+ <td align="left">#8B6969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick3</td>
+ <td align="center" style="background-color:rgb(205, 38, 38)">firebrick3</td>
+ <td align="left">rgb(205, 38, 38)</td>
+ <td align="left">#CD2626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red2</td>
+ <td align="center" style="background-color:rgb(238, 0, 0)">red2</td>
+ <td align="left">rgb(238, 0, 0)</td>
+ <td align="left">#EE0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick</td>
+ <td align="center" style="background-color:rgb(178, 34, 34)">firebrick</td>
+ <td align="left">rgb(178, 34, 34)</td>
+ <td align="left">#B22222</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown</td>
+ <td align="center" style="background-color:rgb(165, 42, 42)">brown</td>
+ <td align="left">rgb(165, 42, 42)</td>
+ <td align="left">#A52A2A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red3</td>
+ <td align="center" style="background-color:rgb(205, 0, 0)">red3</td>
+ <td align="left">rgb(205, 0, 0)</td>
+ <td align="left">#CD0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">IndianRed4</td>
+ <td align="center" style="background-color:rgb(139, 58, 58)">IndianRed4</td>
+ <td align="left">rgb(139, 58, 58)</td>
+ <td align="left">#8B3A3A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">brown4</td>
+ <td align="center" style="background-color:rgb(139, 35, 35)">brown4</td>
+ <td align="left">rgb(139, 35, 35)</td>
+ <td align="left">#8B2323</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">firebrick4</td>
+ <td align="center" style="background-color:rgb(139, 26, 26)">firebrick4</td>
+ <td align="left">rgb(139, 26, 26)</td>
+ <td align="left">#8B1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkRed</td>
+ <td align="center" style="background-color:rgb(139, 0, 0)">DarkRed</td>
+ <td align="left">rgb(139, 0, 0)</td>
+ <td align="left">#8B0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">red4</td>
+ <td align="center" style="background-color:rgb(139, 0, 0)">red4</td>
+ <td align="left">rgb(139, 0, 0)</td>
+ <td align="left">#8B0000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon</td>
+ <td align="center" style="background-color:rgb(128, 0, 0)">maroon</td>
+ <td align="left">rgb(128, 0, 0)</td>
+ <td align="left">#800000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink1</td>
+ <td align="center" style="background-color:rgb(255, 174, 185)">LightPink1</td>
+ <td align="left">rgb(255, 174, 185)</td>
+ <td align="left">#FFAEB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink3</td>
+ <td align="center" style="background-color:rgb(205, 140, 149)">LightPink3</td>
+ <td align="left">rgb(205, 140, 149)</td>
+ <td align="left">#CD8C95</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink4</td>
+ <td align="center" style="background-color:rgb(139, 95, 101)">LightPink4</td>
+ <td align="left">rgb(139, 95, 101)</td>
+ <td align="left">#8B5F65</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink2</td>
+ <td align="center" style="background-color:rgb(238, 162, 173)">LightPink2</td>
+ <td align="left">rgb(238, 162, 173)</td>
+ <td align="left">#EEA2AD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightPink</td>
+ <td align="center" style="background-color:rgb(255, 182, 193)">LightPink</td>
+ <td align="left">rgb(255, 182, 193)</td>
+ <td align="left">#FFB6C1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink</td>
+ <td align="center" style="background-color:rgb(255, 192, 203)">pink</td>
+ <td align="left">rgb(255, 192, 203)</td>
+ <td align="left">#FFC0CB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">crimson</td>
+ <td align="center" style="background-color:rgb(220, 20, 60)">crimson</td>
+ <td align="left">rgb(220, 20, 60)</td>
+ <td align="left">#DC143C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink1</td>
+ <td align="center" style="background-color:rgb(255, 181, 197)">pink1</td>
+ <td align="left">rgb(255, 181, 197)</td>
+ <td align="left">#FFB5C5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink2</td>
+ <td align="center" style="background-color:rgb(238, 169, 184)">pink2</td>
+ <td align="left">rgb(238, 169, 184)</td>
+ <td align="left">#EEA9B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink3</td>
+ <td align="center" style="background-color:rgb(205, 145, 158)">pink3</td>
+ <td align="left">rgb(205, 145, 158)</td>
+ <td align="left">#CD919E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">pink4</td>
+ <td align="center" style="background-color:rgb(139, 99, 108)">pink4</td>
+ <td align="left">rgb(139, 99, 108)</td>
+ <td align="left">#8B636C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed4</td>
+ <td align="center" style="background-color:rgb(139, 71, 93)">PaleVioletRed4</td>
+ <td align="left">rgb(139, 71, 93)</td>
+ <td align="left">#8B475D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed</td>
+ <td align="center" style="background-color:rgb(219, 112, 147)">PaleVioletRed</td>
+ <td align="left">rgb(219, 112, 147)</td>
+ <td align="left">#DB7093</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed2</td>
+ <td align="center" style="background-color:rgb(238, 121, 159)">PaleVioletRed2</td>
+ <td align="left">rgb(238, 121, 159)</td>
+ <td align="left">#EE799F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed1</td>
+ <td align="center" style="background-color:rgb(255, 130, 171)">PaleVioletRed1</td>
+ <td align="left">rgb(255, 130, 171)</td>
+ <td align="left">#FF82AB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleVioletRed3</td>
+ <td align="center" style="background-color:rgb(205, 104, 137)">PaleVioletRed3</td>
+ <td align="left">rgb(205, 104, 137)</td>
+ <td align="left">#CD6889</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush</td>
+ <td align="center" style="background-color:rgb(255, 240, 245)">LavenderBlush</td>
+ <td align="left">rgb(255, 240, 245)</td>
+ <td align="left">#FFF0F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush1</td>
+ <td align="center" style="background-color:rgb(255, 240, 245)">LavenderBlush1</td>
+ <td align="left">rgb(255, 240, 245)</td>
+ <td align="left">#FFF0F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush3</td>
+ <td align="center" style="background-color:rgb(205, 193, 197)">LavenderBlush3</td>
+ <td align="left">rgb(205, 193, 197)</td>
+ <td align="left">#CDC1C5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush2</td>
+ <td align="center" style="background-color:rgb(238, 224, 229)">LavenderBlush2</td>
+ <td align="left">rgb(238, 224, 229)</td>
+ <td align="left">#EEE0E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LavenderBlush4</td>
+ <td align="center" style="background-color:rgb(139, 131, 134)">LavenderBlush4</td>
+ <td align="left">rgb(139, 131, 134)</td>
+ <td align="left">#8B8386</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon</td>
+ <td align="center" style="background-color:rgb(176, 48, 96)">maroon</td>
+ <td align="left">rgb(176, 48, 96)</td>
+ <td align="left">#B03060</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink3</td>
+ <td align="center" style="background-color:rgb(205, 96, 144)">HotPink3</td>
+ <td align="left">rgb(205, 96, 144)</td>
+ <td align="left">#CD6090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed3</td>
+ <td align="center" style="background-color:rgb(205, 50, 120)">VioletRed3</td>
+ <td align="left">rgb(205, 50, 120)</td>
+ <td align="left">#CD3278</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed1</td>
+ <td align="center" style="background-color:rgb(255, 62, 150)">VioletRed1</td>
+ <td align="left">rgb(255, 62, 150)</td>
+ <td align="left">#FF3E96</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed2</td>
+ <td align="center" style="background-color:rgb(238, 58, 140)">VioletRed2</td>
+ <td align="left">rgb(238, 58, 140)</td>
+ <td align="left">#EE3A8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed4</td>
+ <td align="center" style="background-color:rgb(139, 34, 82)">VioletRed4</td>
+ <td align="left">rgb(139, 34, 82)</td>
+ <td align="left">#8B2252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink2</td>
+ <td align="center" style="background-color:rgb(238, 106, 167)">HotPink2</td>
+ <td align="left">rgb(238, 106, 167)</td>
+ <td align="left">#EE6AA7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink1</td>
+ <td align="center" style="background-color:rgb(255, 110, 180)">HotPink1</td>
+ <td align="left">rgb(255, 110, 180)</td>
+ <td align="left">#FF6EB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink4</td>
+ <td align="center" style="background-color:rgb(139, 58, 98)">HotPink4</td>
+ <td align="left">rgb(139, 58, 98)</td>
+ <td align="left">#8B3A62</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">HotPink</td>
+ <td align="center" style="background-color:rgb(255, 105, 180)">HotPink</td>
+ <td align="left">rgb(255, 105, 180)</td>
+ <td align="left">#FF69B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink</td>
+ <td align="center" style="background-color:rgb(255, 20, 147)">DeepPink</td>
+ <td align="left">rgb(255, 20, 147)</td>
+ <td align="left">#FF1493</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink1</td>
+ <td align="center" style="background-color:rgb(255, 20, 147)">DeepPink1</td>
+ <td align="left">rgb(255, 20, 147)</td>
+ <td align="left">#FF1493</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink2</td>
+ <td align="center" style="background-color:rgb(238, 18, 137)">DeepPink2</td>
+ <td align="left">rgb(238, 18, 137)</td>
+ <td align="left">#EE1289</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink3</td>
+ <td align="center" style="background-color:rgb(205, 16, 118)">DeepPink3</td>
+ <td align="left">rgb(205, 16, 118)</td>
+ <td align="left">#CD1076</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepPink4</td>
+ <td align="center" style="background-color:rgb(139, 10, 80)">DeepPink4</td>
+ <td align="left">rgb(139, 10, 80)</td>
+ <td align="left">#8B0A50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon1</td>
+ <td align="center" style="background-color:rgb(255, 52, 179)">maroon1</td>
+ <td align="left">rgb(255, 52, 179)</td>
+ <td align="left">#FF34B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon2</td>
+ <td align="center" style="background-color:rgb(238, 48, 167)">maroon2</td>
+ <td align="left">rgb(238, 48, 167)</td>
+ <td align="left">#EE30A7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon3</td>
+ <td align="center" style="background-color:rgb(205, 41, 144)">maroon3</td>
+ <td align="left">rgb(205, 41, 144)</td>
+ <td align="left">#CD2990</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">maroon4</td>
+ <td align="center" style="background-color:rgb(139, 28, 98)">maroon4</td>
+ <td align="left">rgb(139, 28, 98)</td>
+ <td align="left">#8B1C62</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumVioletRed</td>
+ <td align="center" style="background-color:rgb(199, 21, 133)">MediumVioletRed</td>
+ <td align="left">rgb(199, 21, 133)</td>
+ <td align="left">#C71585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">VioletRed</td>
+ <td align="center" style="background-color:rgb(208, 32, 144)">VioletRed</td>
+ <td align="left">rgb(208, 32, 144)</td>
+ <td align="left">#D02090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid2</td>
+ <td align="center" style="background-color:rgb(238, 122, 233)">orchid2</td>
+ <td align="left">rgb(238, 122, 233)</td>
+ <td align="left">#EE7AE9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid</td>
+ <td align="center" style="background-color:rgb(218, 112, 214)">orchid</td>
+ <td align="left">rgb(218, 112, 214)</td>
+ <td align="left">#DA70D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid1</td>
+ <td align="center" style="background-color:rgb(255, 131, 250)">orchid1</td>
+ <td align="left">rgb(255, 131, 250)</td>
+ <td align="left">#FF83FA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid3</td>
+ <td align="center" style="background-color:rgb(205, 105, 201)">orchid3</td>
+ <td align="left">rgb(205, 105, 201)</td>
+ <td align="left">#CD69C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orchid4</td>
+ <td align="center" style="background-color:rgb(139, 71, 137)">orchid4</td>
+ <td align="left">rgb(139, 71, 137)</td>
+ <td align="left">#8B4789</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle1</td>
+ <td align="center" style="background-color:rgb(255, 225, 255)">thistle1</td>
+ <td align="left">rgb(255, 225, 255)</td>
+ <td align="left">#FFE1FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle2</td>
+ <td align="center" style="background-color:rgb(238, 210, 238)">thistle2</td>
+ <td align="left">rgb(238, 210, 238)</td>
+ <td align="left">#EED2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum1</td>
+ <td align="center" style="background-color:rgb(255, 187, 255)">plum1</td>
+ <td align="left">rgb(255, 187, 255)</td>
+ <td align="left">#FFBBFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum2</td>
+ <td align="center" style="background-color:rgb(238, 174, 238)">plum2</td>
+ <td align="left">rgb(238, 174, 238)</td>
+ <td align="left">#EEAEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle</td>
+ <td align="center" style="background-color:rgb(216, 191, 216)">thistle</td>
+ <td align="left">rgb(216, 191, 216)</td>
+ <td align="left">#D8BFD8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle3</td>
+ <td align="center" style="background-color:rgb(205, 181, 205)">thistle3</td>
+ <td align="left">rgb(205, 181, 205)</td>
+ <td align="left">#CDB5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum</td>
+ <td align="center" style="background-color:rgb(221, 160, 221)">plum</td>
+ <td align="left">rgb(221, 160, 221)</td>
+ <td align="left">#DDA0DD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">violet</td>
+ <td align="center" style="background-color:rgb(238, 130, 238)">violet</td>
+ <td align="left">rgb(238, 130, 238)</td>
+ <td align="left">#EE82EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum3</td>
+ <td align="center" style="background-color:rgb(205, 150, 205)">plum3</td>
+ <td align="left">rgb(205, 150, 205)</td>
+ <td align="left">#CD96CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">thistle4</td>
+ <td align="center" style="background-color:rgb(139, 123, 139)">thistle4</td>
+ <td align="left">rgb(139, 123, 139)</td>
+ <td align="left">#8B7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">fuchsia</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">fuchsia</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">magenta</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta1</td>
+ <td align="center" style="background-color:rgb(255, 0, 255)">magenta1</td>
+ <td align="left">rgb(255, 0, 255)</td>
+ <td align="left">#FF00FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">plum4</td>
+ <td align="center" style="background-color:rgb(139, 102, 139)">plum4</td>
+ <td align="left">rgb(139, 102, 139)</td>
+ <td align="left">#8B668B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta2</td>
+ <td align="center" style="background-color:rgb(238, 0, 238)">magenta2</td>
+ <td align="left">rgb(238, 0, 238)</td>
+ <td align="left">#EE00EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta3</td>
+ <td align="center" style="background-color:rgb(205, 0, 205)">magenta3</td>
+ <td align="left">rgb(205, 0, 205)</td>
+ <td align="left">#CD00CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkMagenta</td>
+ <td align="center" style="background-color:rgb(139, 0, 139)">DarkMagenta</td>
+ <td align="left">rgb(139, 0, 139)</td>
+ <td align="left">#8B008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">magenta4</td>
+ <td align="center" style="background-color:rgb(139, 0, 139)">magenta4</td>
+ <td align="left">rgb(139, 0, 139)</td>
+ <td align="left">#8B008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple</td>
+ <td align="center" style="background-color:rgb(128, 0, 128)">purple</td>
+ <td align="left">rgb(128, 0, 128)</td>
+ <td align="left">#800080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid</td>
+ <td align="center" style="background-color:rgb(186, 85, 211)">MediumOrchid</td>
+ <td align="left">rgb(186, 85, 211)</td>
+ <td align="left">#BA55D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid1</td>
+ <td align="center" style="background-color:rgb(224, 102, 255)">MediumOrchid1</td>
+ <td align="left">rgb(224, 102, 255)</td>
+ <td align="left">#E066FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid2</td>
+ <td align="center" style="background-color:rgb(209, 95, 238)">MediumOrchid2</td>
+ <td align="left">rgb(209, 95, 238)</td>
+ <td align="left">#D15FEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid3</td>
+ <td align="center" style="background-color:rgb(180, 82, 205)">MediumOrchid3</td>
+ <td align="left">rgb(180, 82, 205)</td>
+ <td align="left">#B452CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumOrchid4</td>
+ <td align="center" style="background-color:rgb(122, 55, 139)">MediumOrchid4</td>
+ <td align="left">rgb(122, 55, 139)</td>
+ <td align="left">#7A378B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkViolet</td>
+ <td align="center" style="background-color:rgb(148, 0, 211)">DarkViolet</td>
+ <td align="left">rgb(148, 0, 211)</td>
+ <td align="left">#9400D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid</td>
+ <td align="center" style="background-color:rgb(153, 50, 204)">DarkOrchid</td>
+ <td align="left">rgb(153, 50, 204)</td>
+ <td align="left">#9932CC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid1</td>
+ <td align="center" style="background-color:rgb(191, 62, 255)">DarkOrchid1</td>
+ <td align="left">rgb(191, 62, 255)</td>
+ <td align="left">#BF3EFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid3</td>
+ <td align="center" style="background-color:rgb(154, 50, 205)">DarkOrchid3</td>
+ <td align="left">rgb(154, 50, 205)</td>
+ <td align="left">#9A32CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid2</td>
+ <td align="center" style="background-color:rgb(178, 58, 238)">DarkOrchid2</td>
+ <td align="left">rgb(178, 58, 238)</td>
+ <td align="left">#B23AEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrchid4</td>
+ <td align="center" style="background-color:rgb(104, 34, 139)">DarkOrchid4</td>
+ <td align="left">rgb(104, 34, 139)</td>
+ <td align="left">#68228B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple</td>
+ <td align="center" style="background-color:rgb(160, 32, 240)">purple</td>
+ <td align="left">rgb(160, 32, 240)</td>
+ <td align="left">#A020F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">indigo</td>
+ <td align="center" style="background-color:rgb( 75, 0, 130)">indigo</td>
+ <td align="left">rgb( 75, 0, 130)</td>
+ <td align="left">#4B0082</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">BlueViolet</td>
+ <td align="center" style="background-color:rgb(138, 43, 226)">BlueViolet</td>
+ <td align="left">rgb(138, 43, 226)</td>
+ <td align="left">#8A2BE2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple2</td>
+ <td align="center" style="background-color:rgb(145, 44, 238)">purple2</td>
+ <td align="left">rgb(145, 44, 238)</td>
+ <td align="left">#912CEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple3</td>
+ <td align="center" style="background-color:rgb(125, 38, 205)">purple3</td>
+ <td align="left">rgb(125, 38, 205)</td>
+ <td align="left">#7D26CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple4</td>
+ <td align="center" style="background-color:rgb( 85, 26, 139)">purple4</td>
+ <td align="left">rgb( 85, 26, 139)</td>
+ <td align="left">#551A8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">purple1</td>
+ <td align="center" style="background-color:rgb(155, 48, 255)">purple1</td>
+ <td align="left">rgb(155, 48, 255)</td>
+ <td align="left">#9B30FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple</td>
+ <td align="center" style="background-color:rgb(147, 112, 219)">MediumPurple</td>
+ <td align="left">rgb(147, 112, 219)</td>
+ <td align="left">#9370DB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple1</td>
+ <td align="center" style="background-color:rgb(171, 130, 255)">MediumPurple1</td>
+ <td align="left">rgb(171, 130, 255)</td>
+ <td align="left">#AB82FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple2</td>
+ <td align="center" style="background-color:rgb(159, 121, 238)">MediumPurple2</td>
+ <td align="left">rgb(159, 121, 238)</td>
+ <td align="left">#9F79EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple3</td>
+ <td align="center" style="background-color:rgb(137, 104, 205)">MediumPurple3</td>
+ <td align="left">rgb(137, 104, 205)</td>
+ <td align="left">#8968CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumPurple4</td>
+ <td align="center" style="background-color:rgb( 93, 71, 139)">MediumPurple4</td>
+ <td align="left">rgb( 93, 71, 139)</td>
+ <td align="left">#5D478B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateBlue</td>
+ <td align="center" style="background-color:rgb( 72, 61, 139)">DarkSlateBlue</td>
+ <td align="left">rgb( 72, 61, 139)</td>
+ <td align="left">#483D8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateBlue</td>
+ <td align="center" style="background-color:rgb(132, 112, 255)">LightSlateBlue</td>
+ <td align="left">rgb(132, 112, 255)</td>
+ <td align="left">#8470FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSlateBlue</td>
+ <td align="center" style="background-color:rgb(123, 104, 238)">MediumSlateBlue</td>
+ <td align="left">rgb(123, 104, 238)</td>
+ <td align="left">#7B68EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue</td>
+ <td align="center" style="background-color:rgb(106, 90, 205)">SlateBlue</td>
+ <td align="left">rgb(106, 90, 205)</td>
+ <td align="left">#6A5ACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue1</td>
+ <td align="center" style="background-color:rgb(131, 111, 255)">SlateBlue1</td>
+ <td align="left">rgb(131, 111, 255)</td>
+ <td align="left">#836FFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue2</td>
+ <td align="center" style="background-color:rgb(122, 103, 238)">SlateBlue2</td>
+ <td align="left">rgb(122, 103, 238)</td>
+ <td align="left">#7A67EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue3</td>
+ <td align="center" style="background-color:rgb(105, 89, 205)">SlateBlue3</td>
+ <td align="left">rgb(105, 89, 205)</td>
+ <td align="left">#6959CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateBlue4</td>
+ <td align="center" style="background-color:rgb( 71, 60, 139)">SlateBlue4</td>
+ <td align="left">rgb( 71, 60, 139)</td>
+ <td align="left">#473C8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">GhostWhite</td>
+ <td align="center" style="background-color:rgb(248, 248, 255)">GhostWhite</td>
+ <td align="left">rgb(248, 248, 255)</td>
+ <td align="left">#F8F8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">lavender</td>
+ <td align="center" style="background-color:rgb(230, 230, 250)">lavender</td>
+ <td align="left">rgb(230, 230, 250)</td>
+ <td align="left">#E6E6FA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 255)">blue</td>
+ <td align="left">rgb( 0, 0, 255)</td>
+ <td align="left">#0000FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue1</td>
+ <td align="center" style="background-color:rgb( 0, 0, 255)">blue1</td>
+ <td align="left">rgb( 0, 0, 255)</td>
+ <td align="left">#0000FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue2</td>
+ <td align="center" style="background-color:rgb( 0, 0, 238)">blue2</td>
+ <td align="left">rgb( 0, 0, 238)</td>
+ <td align="left">#0000EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue3</td>
+ <td align="center" style="background-color:rgb( 0, 0, 205)">blue3</td>
+ <td align="left">rgb( 0, 0, 205)</td>
+ <td align="left">#0000CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 205)">MediumBlue</td>
+ <td align="left">rgb( 0, 0, 205)</td>
+ <td align="left">#0000CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">blue4</td>
+ <td align="center" style="background-color:rgb( 0, 0, 139)">blue4</td>
+ <td align="left">rgb( 0, 0, 139)</td>
+ <td align="left">#00008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 139)">DarkBlue</td>
+ <td align="left">rgb( 0, 0, 139)</td>
+ <td align="left">#00008B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MidnightBlue</td>
+ <td align="center" style="background-color:rgb( 25, 25, 112)">MidnightBlue</td>
+ <td align="left">rgb( 25, 25, 112)</td>
+ <td align="left">#191970</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">navy</td>
+ <td align="center" style="background-color:rgb( 0, 0, 128)">navy</td>
+ <td align="left">rgb( 0, 0, 128)</td>
+ <td align="left">#000080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavyBlue</td>
+ <td align="center" style="background-color:rgb( 0, 0, 128)">NavyBlue</td>
+ <td align="left">rgb( 0, 0, 128)</td>
+ <td align="left">#000080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue</td>
+ <td align="center" style="background-color:rgb( 65, 105, 225)">RoyalBlue</td>
+ <td align="left">rgb( 65, 105, 225)</td>
+ <td align="left">#4169E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue1</td>
+ <td align="center" style="background-color:rgb( 72, 118, 255)">RoyalBlue1</td>
+ <td align="left">rgb( 72, 118, 255)</td>
+ <td align="left">#4876FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue2</td>
+ <td align="center" style="background-color:rgb( 67, 110, 238)">RoyalBlue2</td>
+ <td align="left">rgb( 67, 110, 238)</td>
+ <td align="left">#436EEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue3</td>
+ <td align="center" style="background-color:rgb( 58, 95, 205)">RoyalBlue3</td>
+ <td align="left">rgb( 58, 95, 205)</td>
+ <td align="left">#3A5FCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">RoyalBlue4</td>
+ <td align="center" style="background-color:rgb( 39, 64, 139)">RoyalBlue4</td>
+ <td align="left">rgb( 39, 64, 139)</td>
+ <td align="left">#27408B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CornflowerBlue</td>
+ <td align="center" style="background-color:rgb(100, 149, 237)">CornflowerBlue</td>
+ <td align="left">rgb(100, 149, 237)</td>
+ <td align="left">#6495ED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue</td>
+ <td align="center" style="background-color:rgb(176, 196, 222)">LightSteelBlue</td>
+ <td align="left">rgb(176, 196, 222)</td>
+ <td align="left">#B0C4DE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue1</td>
+ <td align="center" style="background-color:rgb(202, 225, 255)">LightSteelBlue1</td>
+ <td align="left">rgb(202, 225, 255)</td>
+ <td align="left">#CAE1FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue2</td>
+ <td align="center" style="background-color:rgb(188, 210, 238)">LightSteelBlue2</td>
+ <td align="left">rgb(188, 210, 238)</td>
+ <td align="left">#BCD2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue3</td>
+ <td align="center" style="background-color:rgb(162, 181, 205)">LightSteelBlue3</td>
+ <td align="left">rgb(162, 181, 205)</td>
+ <td align="left">#A2B5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSteelBlue4</td>
+ <td align="center" style="background-color:rgb(110, 123, 139)">LightSteelBlue4</td>
+ <td align="left">rgb(110, 123, 139)</td>
+ <td align="left">#6E7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray4</td>
+ <td align="center" style="background-color:rgb(108, 123, 139)">SlateGray4</td>
+ <td align="left">rgb(108, 123, 139)</td>
+ <td align="left">#6C7B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray1</td>
+ <td align="center" style="background-color:rgb(198, 226, 255)">SlateGray1</td>
+ <td align="left">rgb(198, 226, 255)</td>
+ <td align="left">#C6E2FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray2</td>
+ <td align="center" style="background-color:rgb(185, 211, 238)">SlateGray2</td>
+ <td align="left">rgb(185, 211, 238)</td>
+ <td align="left">#B9D3EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray3</td>
+ <td align="center" style="background-color:rgb(159, 182, 205)">SlateGray3</td>
+ <td align="left">rgb(159, 182, 205)</td>
+ <td align="left">#9FB6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateGray</td>
+ <td align="center" style="background-color:rgb(119, 136, 153)">LightSlateGray</td>
+ <td align="left">rgb(119, 136, 153)</td>
+ <td align="left">#778899</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSlateGrey</td>
+ <td align="center" style="background-color:rgb(119, 136, 153)">LightSlateGrey</td>
+ <td align="left">rgb(119, 136, 153)</td>
+ <td align="left">#778899</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGray</td>
+ <td align="center" style="background-color:rgb(112, 128, 144)">SlateGray</td>
+ <td align="left">rgb(112, 128, 144)</td>
+ <td align="left">#708090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SlateGrey</td>
+ <td align="center" style="background-color:rgb(112, 128, 144)">SlateGrey</td>
+ <td align="left">rgb(112, 128, 144)</td>
+ <td align="left">#708090</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue</td>
+ <td align="center" style="background-color:rgb( 30, 144, 255)">DodgerBlue</td>
+ <td align="left">rgb( 30, 144, 255)</td>
+ <td align="left">#1E90FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue1</td>
+ <td align="center" style="background-color:rgb( 30, 144, 255)">DodgerBlue1</td>
+ <td align="left">rgb( 30, 144, 255)</td>
+ <td align="left">#1E90FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue2</td>
+ <td align="center" style="background-color:rgb( 28, 134, 238)">DodgerBlue2</td>
+ <td align="left">rgb( 28, 134, 238)</td>
+ <td align="left">#1C86EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue4</td>
+ <td align="center" style="background-color:rgb( 16, 78, 139)">DodgerBlue4</td>
+ <td align="left">rgb( 16, 78, 139)</td>
+ <td align="left">#104E8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DodgerBlue3</td>
+ <td align="center" style="background-color:rgb( 24, 116, 205)">DodgerBlue3</td>
+ <td align="left">rgb( 24, 116, 205)</td>
+ <td align="left">#1874CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AliceBlue</td>
+ <td align="center" style="background-color:rgb(240, 248, 255)">AliceBlue</td>
+ <td align="left">rgb(240, 248, 255)</td>
+ <td align="left">#F0F8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue4</td>
+ <td align="center" style="background-color:rgb( 54, 100, 139)">SteelBlue4</td>
+ <td align="left">rgb( 54, 100, 139)</td>
+ <td align="left">#36648B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue</td>
+ <td align="center" style="background-color:rgb( 70, 130, 180)">SteelBlue</td>
+ <td align="left">rgb( 70, 130, 180)</td>
+ <td align="left">#4682B4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue1</td>
+ <td align="center" style="background-color:rgb( 99, 184, 255)">SteelBlue1</td>
+ <td align="left">rgb( 99, 184, 255)</td>
+ <td align="left">#63B8FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue2</td>
+ <td align="center" style="background-color:rgb( 92, 172, 238)">SteelBlue2</td>
+ <td align="left">rgb( 92, 172, 238)</td>
+ <td align="left">#5CACEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SteelBlue3</td>
+ <td align="center" style="background-color:rgb( 79, 148, 205)">SteelBlue3</td>
+ <td align="left">rgb( 79, 148, 205)</td>
+ <td align="left">#4F94CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue4</td>
+ <td align="center" style="background-color:rgb( 74, 112, 139)">SkyBlue4</td>
+ <td align="left">rgb( 74, 112, 139)</td>
+ <td align="left">#4A708B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue1</td>
+ <td align="center" style="background-color:rgb(135, 206, 255)">SkyBlue1</td>
+ <td align="left">rgb(135, 206, 255)</td>
+ <td align="left">#87CEFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue2</td>
+ <td align="center" style="background-color:rgb(126, 192, 238)">SkyBlue2</td>
+ <td align="left">rgb(126, 192, 238)</td>
+ <td align="left">#7EC0EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue3</td>
+ <td align="center" style="background-color:rgb(108, 166, 205)">SkyBlue3</td>
+ <td align="left">rgb(108, 166, 205)</td>
+ <td align="left">#6CA6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue</td>
+ <td align="center" style="background-color:rgb(135, 206, 250)">LightSkyBlue</td>
+ <td align="left">rgb(135, 206, 250)</td>
+ <td align="left">#87CEFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue4</td>
+ <td align="center" style="background-color:rgb( 96, 123, 139)">LightSkyBlue4</td>
+ <td align="left">rgb( 96, 123, 139)</td>
+ <td align="left">#607B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue1</td>
+ <td align="center" style="background-color:rgb(176, 226, 255)">LightSkyBlue1</td>
+ <td align="left">rgb(176, 226, 255)</td>
+ <td align="left">#B0E2FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue2</td>
+ <td align="center" style="background-color:rgb(164, 211, 238)">LightSkyBlue2</td>
+ <td align="left">rgb(164, 211, 238)</td>
+ <td align="left">#A4D3EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSkyBlue3</td>
+ <td align="center" style="background-color:rgb(141, 182, 205)">LightSkyBlue3</td>
+ <td align="left">rgb(141, 182, 205)</td>
+ <td align="left">#8DB6CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SkyBlue</td>
+ <td align="center" style="background-color:rgb(135, 206, 235)">SkyBlue</td>
+ <td align="left">rgb(135, 206, 235)</td>
+ <td align="left">#87CEEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue3</td>
+ <td align="center" style="background-color:rgb(154, 192, 205)">LightBlue3</td>
+ <td align="left">rgb(154, 192, 205)</td>
+ <td align="left">#9AC0CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue</td>
+ <td align="center" style="background-color:rgb( 0, 191, 255)">DeepSkyBlue</td>
+ <td align="left">rgb( 0, 191, 255)</td>
+ <td align="left">#00BFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue1</td>
+ <td align="center" style="background-color:rgb( 0, 191, 255)">DeepSkyBlue1</td>
+ <td align="left">rgb( 0, 191, 255)</td>
+ <td align="left">#00BFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue2</td>
+ <td align="center" style="background-color:rgb( 0, 178, 238)">DeepSkyBlue2</td>
+ <td align="left">rgb( 0, 178, 238)</td>
+ <td align="left">#00B2EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue4</td>
+ <td align="center" style="background-color:rgb( 0, 104, 139)">DeepSkyBlue4</td>
+ <td align="left">rgb( 0, 104, 139)</td>
+ <td align="left">#00688B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DeepSkyBlue3</td>
+ <td align="center" style="background-color:rgb( 0, 154, 205)">DeepSkyBlue3</td>
+ <td align="left">rgb( 0, 154, 205)</td>
+ <td align="left">#009ACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue1</td>
+ <td align="center" style="background-color:rgb(191, 239, 255)">LightBlue1</td>
+ <td align="left">rgb(191, 239, 255)</td>
+ <td align="left">#BFEFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue2</td>
+ <td align="center" style="background-color:rgb(178, 223, 238)">LightBlue2</td>
+ <td align="left">rgb(178, 223, 238)</td>
+ <td align="left">#B2DFEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue</td>
+ <td align="center" style="background-color:rgb(173, 216, 230)">LightBlue</td>
+ <td align="left">rgb(173, 216, 230)</td>
+ <td align="left">#ADD8E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightBlue4</td>
+ <td align="center" style="background-color:rgb(104, 131, 139)">LightBlue4</td>
+ <td align="left">rgb(104, 131, 139)</td>
+ <td align="left">#68838B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PowderBlue</td>
+ <td align="center" style="background-color:rgb(176, 224, 230)">PowderBlue</td>
+ <td align="left">rgb(176, 224, 230)</td>
+ <td align="left">#B0E0E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue1</td>
+ <td align="center" style="background-color:rgb(152, 245, 255)">CadetBlue1</td>
+ <td align="left">rgb(152, 245, 255)</td>
+ <td align="left">#98F5FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue2</td>
+ <td align="center" style="background-color:rgb(142, 229, 238)">CadetBlue2</td>
+ <td align="left">rgb(142, 229, 238)</td>
+ <td align="left">#8EE5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue3</td>
+ <td align="center" style="background-color:rgb(122, 197, 205)">CadetBlue3</td>
+ <td align="left">rgb(122, 197, 205)</td>
+ <td align="left">#7AC5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue4</td>
+ <td align="center" style="background-color:rgb( 83, 134, 139)">CadetBlue4</td>
+ <td align="left">rgb( 83, 134, 139)</td>
+ <td align="left">#53868B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise1</td>
+ <td align="center" style="background-color:rgb( 0, 245, 255)">turquoise1</td>
+ <td align="left">rgb( 0, 245, 255)</td>
+ <td align="left">#00F5FF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise2</td>
+ <td align="center" style="background-color:rgb( 0, 229, 238)">turquoise2</td>
+ <td align="left">rgb( 0, 229, 238)</td>
+ <td align="left">#00E5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise3</td>
+ <td align="center" style="background-color:rgb( 0, 197, 205)">turquoise3</td>
+ <td align="left">rgb( 0, 197, 205)</td>
+ <td align="left">#00C5CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise4</td>
+ <td align="center" style="background-color:rgb( 0, 134, 139)">turquoise4</td>
+ <td align="left">rgb( 0, 134, 139)</td>
+ <td align="left">#00868B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cadet blue</td>
+ <td align="center" style="background-color:rgb( 95, 158, 160)">cadet blue</td>
+ <td align="left">rgb( 95, 158, 160)</td>
+ <td align="left">#5F9EA0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">CadetBlue</td>
+ <td align="center" style="background-color:rgb( 95, 158, 160)">CadetBlue</td>
+ <td align="left">rgb( 95, 158, 160)</td>
+ <td align="left">#5F9EA0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkTurquoise</td>
+ <td align="center" style="background-color:rgb( 0, 206, 209)">DarkTurquoise</td>
+ <td align="left">rgb( 0, 206, 209)</td>
+ <td align="left">#00CED1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure</td>
+ <td align="center" style="background-color:rgb(240, 255, 255)">azure</td>
+ <td align="left">rgb(240, 255, 255)</td>
+ <td align="left">#F0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure1</td>
+ <td align="center" style="background-color:rgb(240, 255, 255)">azure1</td>
+ <td align="left">rgb(240, 255, 255)</td>
+ <td align="left">#F0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan</td>
+ <td align="center" style="background-color:rgb(224, 255, 255)">LightCyan</td>
+ <td align="left">rgb(224, 255, 255)</td>
+ <td align="left">#E0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan1</td>
+ <td align="center" style="background-color:rgb(224, 255, 255)">LightCyan1</td>
+ <td align="left">rgb(224, 255, 255)</td>
+ <td align="left">#E0FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure2</td>
+ <td align="center" style="background-color:rgb(224, 238, 238)">azure2</td>
+ <td align="left">rgb(224, 238, 238)</td>
+ <td align="left">#E0EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan2</td>
+ <td align="center" style="background-color:rgb(209, 238, 238)">LightCyan2</td>
+ <td align="left">rgb(209, 238, 238)</td>
+ <td align="left">#D1EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise1</td>
+ <td align="center" style="background-color:rgb(187, 255, 255)">PaleTurquoise1</td>
+ <td align="left">rgb(187, 255, 255)</td>
+ <td align="left">#BBFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise</td>
+ <td align="center" style="background-color:rgb(175, 238, 238)">PaleTurquoise</td>
+ <td align="left">rgb(175, 238, 238)</td>
+ <td align="left">#AFEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise2</td>
+ <td align="center" style="background-color:rgb(174, 238, 238)">PaleTurquoise2</td>
+ <td align="left">rgb(174, 238, 238)</td>
+ <td align="left">#AEEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray1</td>
+ <td align="center" style="background-color:rgb(151, 255, 255)">DarkSlateGray1</td>
+ <td align="left">rgb(151, 255, 255)</td>
+ <td align="left">#97FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure3</td>
+ <td align="center" style="background-color:rgb(193, 205, 205)">azure3</td>
+ <td align="left">rgb(193, 205, 205)</td>
+ <td align="left">#C1CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan3</td>
+ <td align="center" style="background-color:rgb(180, 205, 205)">LightCyan3</td>
+ <td align="left">rgb(180, 205, 205)</td>
+ <td align="left">#B4CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray2</td>
+ <td align="center" style="background-color:rgb(141, 238, 238)">DarkSlateGray2</td>
+ <td align="left">rgb(141, 238, 238)</td>
+ <td align="left">#8DEEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise3</td>
+ <td align="center" style="background-color:rgb(150, 205, 205)">PaleTurquoise3</td>
+ <td align="left">rgb(150, 205, 205)</td>
+ <td align="left">#96CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray3</td>
+ <td align="center" style="background-color:rgb(121, 205, 205)">DarkSlateGray3</td>
+ <td align="left">rgb(121, 205, 205)</td>
+ <td align="left">#79CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">azure4</td>
+ <td align="center" style="background-color:rgb(131, 139, 139)">azure4</td>
+ <td align="left">rgb(131, 139, 139)</td>
+ <td align="left">#838B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightCyan4</td>
+ <td align="center" style="background-color:rgb(122, 139, 139)">LightCyan4</td>
+ <td align="left">rgb(122, 139, 139)</td>
+ <td align="left">#7A8B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aqua</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">aqua</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">cyan</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 255)">cyan1</td>
+ <td align="left">rgb( 0, 255, 255)</td>
+ <td align="left">#00FFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleTurquoise4</td>
+ <td align="center" style="background-color:rgb(102, 139, 139)">PaleTurquoise4</td>
+ <td align="left">rgb(102, 139, 139)</td>
+ <td align="left">#668B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 238)">cyan2</td>
+ <td align="left">rgb( 0, 238, 238)</td>
+ <td align="left">#00EEEE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray4</td>
+ <td align="center" style="background-color:rgb( 82, 139, 139)">DarkSlateGray4</td>
+ <td align="left">rgb( 82, 139, 139)</td>
+ <td align="left">#528B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 205)">cyan3</td>
+ <td align="left">rgb( 0, 205, 205)</td>
+ <td align="left">#00CDCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cyan4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 139)">cyan4</td>
+ <td align="left">rgb( 0, 139, 139)</td>
+ <td align="left">#008B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkCyan</td>
+ <td align="center" style="background-color:rgb( 0, 139, 139)">DarkCyan</td>
+ <td align="left">rgb( 0, 139, 139)</td>
+ <td align="left">#008B8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">teal</td>
+ <td align="center" style="background-color:rgb( 0, 128, 128)">teal</td>
+ <td align="left">rgb( 0, 128, 128)</td>
+ <td align="left">#008080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGray</td>
+ <td align="center" style="background-color:rgb( 47, 79, 79)">DarkSlateGray</td>
+ <td align="left">rgb( 47, 79, 79)</td>
+ <td align="left">#2F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSlateGrey</td>
+ <td align="center" style="background-color:rgb( 47, 79, 79)">DarkSlateGrey</td>
+ <td align="left">rgb( 47, 79, 79)</td>
+ <td align="left">#2F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumTurquoise</td>
+ <td align="center" style="background-color:rgb( 72, 209, 204)">MediumTurquoise</td>
+ <td align="left">rgb( 72, 209, 204)</td>
+ <td align="left">#48D1CC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSeaGreen</td>
+ <td align="center" style="background-color:rgb( 32, 178, 170)">LightSeaGreen</td>
+ <td align="left">rgb( 32, 178, 170)</td>
+ <td align="left">#20B2AA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">turquoise</td>
+ <td align="center" style="background-color:rgb( 64, 224, 208)">turquoise</td>
+ <td align="left">rgb( 64, 224, 208)</td>
+ <td align="left">#40E0D0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine4</td>
+ <td align="center" style="background-color:rgb( 69, 139, 116)">aquamarine4</td>
+ <td align="left">rgb( 69, 139, 116)</td>
+ <td align="left">#458B74</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine</td>
+ <td align="center" style="background-color:rgb(127, 255, 212)">aquamarine</td>
+ <td align="left">rgb(127, 255, 212)</td>
+ <td align="left">#7FFFD4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine1</td>
+ <td align="center" style="background-color:rgb(127, 255, 212)">aquamarine1</td>
+ <td align="left">rgb(127, 255, 212)</td>
+ <td align="left">#7FFFD4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine2</td>
+ <td align="center" style="background-color:rgb(118, 238, 198)">aquamarine2</td>
+ <td align="left">rgb(118, 238, 198)</td>
+ <td align="left">#76EEC6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">aquamarine3</td>
+ <td align="center" style="background-color:rgb(102, 205, 170)">aquamarine3</td>
+ <td align="left">rgb(102, 205, 170)</td>
+ <td align="left">#66CDAA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumAquamarine</td>
+ <td align="center" style="background-color:rgb(102, 205, 170)">MediumAquamarine</td>
+ <td align="left">rgb(102, 205, 170)</td>
+ <td align="left">#66CDAA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSpringGreen</td>
+ <td align="center" style="background-color:rgb( 0, 250, 154)">MediumSpringGreen</td>
+ <td align="left">rgb( 0, 250, 154)</td>
+ <td align="left">#00FA9A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MintCream</td>
+ <td align="center" style="background-color:rgb(245, 255, 250)">MintCream</td>
+ <td align="left">rgb(245, 255, 250)</td>
+ <td align="left">#F5FFFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen</td>
+ <td align="center" style="background-color:rgb( 0, 255, 127)">SpringGreen</td>
+ <td align="left">rgb( 0, 255, 127)</td>
+ <td align="left">#00FF7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 127)">SpringGreen1</td>
+ <td align="left">rgb( 0, 255, 127)</td>
+ <td align="left">#00FF7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 118)">SpringGreen2</td>
+ <td align="left">rgb( 0, 238, 118)</td>
+ <td align="left">#00EE76</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 102)">SpringGreen3</td>
+ <td align="left">rgb( 0, 205, 102)</td>
+ <td align="left">#00CD66</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SpringGreen4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 69)">SpringGreen4</td>
+ <td align="left">rgb( 0, 139, 69)</td>
+ <td align="left">#008B45</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumSeaGreen</td>
+ <td align="center" style="background-color:rgb( 60, 179, 113)">MediumSeaGreen</td>
+ <td align="left">rgb( 60, 179, 113)</td>
+ <td align="left">#3CB371</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen</td>
+ <td align="center" style="background-color:rgb( 46, 139, 87)">SeaGreen</td>
+ <td align="left">rgb( 46, 139, 87)</td>
+ <td align="left">#2E8B57</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen3</td>
+ <td align="center" style="background-color:rgb( 67, 205, 128)">SeaGreen3</td>
+ <td align="left">rgb( 67, 205, 128)</td>
+ <td align="left">#43CD80</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen1</td>
+ <td align="center" style="background-color:rgb( 84, 255, 159)">SeaGreen1</td>
+ <td align="left">rgb( 84, 255, 159)</td>
+ <td align="left">#54FF9F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen4</td>
+ <td align="center" style="background-color:rgb( 46, 139, 87)">SeaGreen4</td>
+ <td align="left">rgb( 46, 139, 87)</td>
+ <td align="left">#2E8B57</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SeaGreen2</td>
+ <td align="center" style="background-color:rgb( 78, 238, 148)">SeaGreen2</td>
+ <td align="left">rgb( 78, 238, 148)</td>
+ <td align="left">#4EEE94</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumForestGreen</td>
+ <td align="center" style="background-color:rgb( 50, 129, 75)">MediumForestGreen</td>
+ <td align="left">rgb( 50, 129, 75)</td>
+ <td align="left">#32814B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew</td>
+ <td align="center" style="background-color:rgb(240, 255, 240)">honeydew</td>
+ <td align="left">rgb(240, 255, 240)</td>
+ <td align="left">#F0FFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew1</td>
+ <td align="center" style="background-color:rgb(240, 255, 240)">honeydew1</td>
+ <td align="left">rgb(240, 255, 240)</td>
+ <td align="left">#F0FFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew2</td>
+ <td align="center" style="background-color:rgb(224, 238, 224)">honeydew2</td>
+ <td align="left">rgb(224, 238, 224)</td>
+ <td align="left">#E0EEE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen1</td>
+ <td align="center" style="background-color:rgb(193, 255, 193)">DarkSeaGreen1</td>
+ <td align="left">rgb(193, 255, 193)</td>
+ <td align="left">#C1FFC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen2</td>
+ <td align="center" style="background-color:rgb(180, 238, 180)">DarkSeaGreen2</td>
+ <td align="left">rgb(180, 238, 180)</td>
+ <td align="left">#B4EEB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen1</td>
+ <td align="center" style="background-color:rgb(154, 255, 154)">PaleGreen1</td>
+ <td align="left">rgb(154, 255, 154)</td>
+ <td align="left">#9AFF9A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen</td>
+ <td align="center" style="background-color:rgb(152, 251, 152)">PaleGreen</td>
+ <td align="left">rgb(152, 251, 152)</td>
+ <td align="left">#98FB98</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew3</td>
+ <td align="center" style="background-color:rgb(193, 205, 193)">honeydew3</td>
+ <td align="left">rgb(193, 205, 193)</td>
+ <td align="left">#C1CDC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGreen</td>
+ <td align="center" style="background-color:rgb(144, 238, 144)">LightGreen</td>
+ <td align="left">rgb(144, 238, 144)</td>
+ <td align="left">#90EE90</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen2</td>
+ <td align="center" style="background-color:rgb(144, 238, 144)">PaleGreen2</td>
+ <td align="left">rgb(144, 238, 144)</td>
+ <td align="left">#90EE90</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen3</td>
+ <td align="center" style="background-color:rgb(155, 205, 155)">DarkSeaGreen3</td>
+ <td align="left">rgb(155, 205, 155)</td>
+ <td align="left">#9BCD9B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen</td>
+ <td align="center" style="background-color:rgb(143, 188, 143)">DarkSeaGreen</td>
+ <td align="left">rgb(143, 188, 143)</td>
+ <td align="left">#8FBC8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen3</td>
+ <td align="center" style="background-color:rgb(124, 205, 124)">PaleGreen3</td>
+ <td align="left">rgb(124, 205, 124)</td>
+ <td align="left">#7CCD7C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">honeydew4</td>
+ <td align="center" style="background-color:rgb(131, 139, 131)">honeydew4</td>
+ <td align="left">rgb(131, 139, 131)</td>
+ <td align="left">#838B83</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green1</td>
+ <td align="center" style="background-color:rgb( 0, 255, 0)">green1</td>
+ <td align="left">rgb( 0, 255, 0)</td>
+ <td align="left">#00FF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">lime</td>
+ <td align="center" style="background-color:rgb( 0, 255, 0)">lime</td>
+ <td align="left">rgb( 0, 255, 0)</td>
+ <td align="left">#00FF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LimeGreen</td>
+ <td align="center" style="background-color:rgb( 50, 205, 50)">LimeGreen</td>
+ <td align="left">rgb( 50, 205, 50)</td>
+ <td align="left">#32CD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSeaGreen4</td>
+ <td align="center" style="background-color:rgb(105, 139, 105)">DarkSeaGreen4</td>
+ <td align="left">rgb(105, 139, 105)</td>
+ <td align="left">#698B69</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green2</td>
+ <td align="center" style="background-color:rgb( 0, 238, 0)">green2</td>
+ <td align="left">rgb( 0, 238, 0)</td>
+ <td align="left">#00EE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGreen4</td>
+ <td align="center" style="background-color:rgb( 84, 139, 84)">PaleGreen4</td>
+ <td align="left">rgb( 84, 139, 84)</td>
+ <td align="left">#548B54</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green3</td>
+ <td align="center" style="background-color:rgb( 0, 205, 0)">green3</td>
+ <td align="left">rgb( 0, 205, 0)</td>
+ <td align="left">#00CD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ForestGreen</td>
+ <td align="center" style="background-color:rgb( 34, 139, 34)">ForestGreen</td>
+ <td align="left">rgb( 34, 139, 34)</td>
+ <td align="left">#228B22</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green4</td>
+ <td align="center" style="background-color:rgb( 0, 139, 0)">green4</td>
+ <td align="left">rgb( 0, 139, 0)</td>
+ <td align="left">#008B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">green</td>
+ <td align="center" style="background-color:rgb( 0, 128, 0)">green</td>
+ <td align="left">rgb( 0, 128, 0)</td>
+ <td align="left">#008000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGreen</td>
+ <td align="center" style="background-color:rgb( 0, 100, 0)">DarkGreen</td>
+ <td align="left">rgb( 0, 100, 0)</td>
+ <td align="left">#006400</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LawnGreen</td>
+ <td align="center" style="background-color:rgb(124, 252, 0)">LawnGreen</td>
+ <td align="left">rgb(124, 252, 0)</td>
+ <td align="left">#7CFC00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse</td>
+ <td align="center" style="background-color:rgb(127, 255, 0)">chartreuse</td>
+ <td align="left">rgb(127, 255, 0)</td>
+ <td align="left">#7FFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse1</td>
+ <td align="center" style="background-color:rgb(127, 255, 0)">chartreuse1</td>
+ <td align="left">rgb(127, 255, 0)</td>
+ <td align="left">#7FFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse2</td>
+ <td align="center" style="background-color:rgb(118, 238, 0)">chartreuse2</td>
+ <td align="left">rgb(118, 238, 0)</td>
+ <td align="left">#76EE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse3</td>
+ <td align="center" style="background-color:rgb(102, 205, 0)">chartreuse3</td>
+ <td align="left">rgb(102, 205, 0)</td>
+ <td align="left">#66CD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chartreuse4</td>
+ <td align="center" style="background-color:rgb( 69, 139, 0)">chartreuse4</td>
+ <td align="left">rgb( 69, 139, 0)</td>
+ <td align="left">#458B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">GreenYellow</td>
+ <td align="center" style="background-color:rgb(173, 255, 47)">GreenYellow</td>
+ <td align="left">rgb(173, 255, 47)</td>
+ <td align="left">#ADFF2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen3</td>
+ <td align="center" style="background-color:rgb(162, 205, 90)">DarkOliveGreen3</td>
+ <td align="left">rgb(162, 205, 90)</td>
+ <td align="left">#A2CD5A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen1</td>
+ <td align="center" style="background-color:rgb(202, 255, 112)">DarkOliveGreen1</td>
+ <td align="left">rgb(202, 255, 112)</td>
+ <td align="left">#CAFF70</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen2</td>
+ <td align="center" style="background-color:rgb(188, 238, 104)">DarkOliveGreen2</td>
+ <td align="left">rgb(188, 238, 104)</td>
+ <td align="left">#BCEE68</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen4</td>
+ <td align="center" style="background-color:rgb(110, 139, 61)">DarkOliveGreen4</td>
+ <td align="left">rgb(110, 139, 61)</td>
+ <td align="left">#6E8B3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOliveGreen</td>
+ <td align="center" style="background-color:rgb( 85, 107, 47)">DarkOliveGreen</td>
+ <td align="left">rgb( 85, 107, 47)</td>
+ <td align="left">#556B2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab</td>
+ <td align="center" style="background-color:rgb(107, 142, 35)">OliveDrab</td>
+ <td align="left">rgb(107, 142, 35)</td>
+ <td align="left">#6B8E23</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab1</td>
+ <td align="center" style="background-color:rgb(192, 255, 62)">OliveDrab1</td>
+ <td align="left">rgb(192, 255, 62)</td>
+ <td align="left">#C0FF3E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab2</td>
+ <td align="center" style="background-color:rgb(179, 238, 58)">OliveDrab2</td>
+ <td align="left">rgb(179, 238, 58)</td>
+ <td align="left">#B3EE3A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab3</td>
+ <td align="center" style="background-color:rgb(154, 205, 50)">OliveDrab3</td>
+ <td align="left">rgb(154, 205, 50)</td>
+ <td align="left">#9ACD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">YellowGreen</td>
+ <td align="center" style="background-color:rgb(154, 205, 50)">YellowGreen</td>
+ <td align="left">rgb(154, 205, 50)</td>
+ <td align="left">#9ACD32</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OliveDrab4</td>
+ <td align="center" style="background-color:rgb(105, 139, 34)">OliveDrab4</td>
+ <td align="left">rgb(105, 139, 34)</td>
+ <td align="left">#698B22</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory</td>
+ <td align="center" style="background-color:rgb(255, 255, 240)">ivory</td>
+ <td align="left">rgb(255, 255, 240)</td>
+ <td align="left">#FFFFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory1</td>
+ <td align="center" style="background-color:rgb(255, 255, 240)">ivory1</td>
+ <td align="left">rgb(255, 255, 240)</td>
+ <td align="left">#FFFFF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow</td>
+ <td align="center" style="background-color:rgb(255, 255, 224)">LightYellow</td>
+ <td align="left">rgb(255, 255, 224)</td>
+ <td align="left">#FFFFE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow1</td>
+ <td align="center" style="background-color:rgb(255, 255, 224)">LightYellow1</td>
+ <td align="left">rgb(255, 255, 224)</td>
+ <td align="left">#FFFFE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">beige</td>
+ <td align="center" style="background-color:rgb(245, 245, 220)">beige</td>
+ <td align="left">rgb(245, 245, 220)</td>
+ <td align="left">#F5F5DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory2</td>
+ <td align="center" style="background-color:rgb(238, 238, 224)">ivory2</td>
+ <td align="left">rgb(238, 238, 224)</td>
+ <td align="left">#EEEEE0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrodYellow</td>
+ <td align="center" style="background-color:rgb(250, 250, 210)">LightGoldenrodYellow</td>
+ <td align="left">rgb(250, 250, 210)</td>
+ <td align="left">#FAFAD2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow2</td>
+ <td align="center" style="background-color:rgb(238, 238, 209)">LightYellow2</td>
+ <td align="left">rgb(238, 238, 209)</td>
+ <td align="left">#EEEED1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory3</td>
+ <td align="center" style="background-color:rgb(205, 205, 193)">ivory3</td>
+ <td align="left">rgb(205, 205, 193)</td>
+ <td align="left">#CDCDC1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow3</td>
+ <td align="center" style="background-color:rgb(205, 205, 180)">LightYellow3</td>
+ <td align="left">rgb(205, 205, 180)</td>
+ <td align="left">#CDCDB4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">ivory4</td>
+ <td align="center" style="background-color:rgb(139, 139, 131)">ivory4</td>
+ <td align="left">rgb(139, 139, 131)</td>
+ <td align="left">#8B8B83</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightYellow4</td>
+ <td align="center" style="background-color:rgb(139, 139, 122)">LightYellow4</td>
+ <td align="left">rgb(139, 139, 122)</td>
+ <td align="left">#8B8B7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow</td>
+ <td align="center" style="background-color:rgb(255, 255, 0)">yellow</td>
+ <td align="left">rgb(255, 255, 0)</td>
+ <td align="left">#FFFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow1</td>
+ <td align="center" style="background-color:rgb(255, 255, 0)">yellow1</td>
+ <td align="left">rgb(255, 255, 0)</td>
+ <td align="left">#FFFF00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow2</td>
+ <td align="center" style="background-color:rgb(238, 238, 0)">yellow2</td>
+ <td align="left">rgb(238, 238, 0)</td>
+ <td align="left">#EEEE00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow3</td>
+ <td align="center" style="background-color:rgb(205, 205, 0)">yellow3</td>
+ <td align="left">rgb(205, 205, 0)</td>
+ <td align="left">#CDCD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">yellow4</td>
+ <td align="center" style="background-color:rgb(139, 139, 0)">yellow4</td>
+ <td align="left">rgb(139, 139, 0)</td>
+ <td align="left">#8B8B00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">olive</td>
+ <td align="center" style="background-color:rgb(128, 128, 0)">olive</td>
+ <td align="left">rgb(128, 128, 0)</td>
+ <td align="left">#808000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkKhaki</td>
+ <td align="center" style="background-color:rgb(189, 183, 107)">DarkKhaki</td>
+ <td align="left">rgb(189, 183, 107)</td>
+ <td align="left">#BDB76B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki2</td>
+ <td align="center" style="background-color:rgb(238, 230, 133)">khaki2</td>
+ <td align="left">rgb(238, 230, 133)</td>
+ <td align="left">#EEE685</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon4</td>
+ <td align="center" style="background-color:rgb(139, 137, 112)">LemonChiffon4</td>
+ <td align="left">rgb(139, 137, 112)</td>
+ <td align="left">#8B8970</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki1</td>
+ <td align="center" style="background-color:rgb(255, 246, 143)">khaki1</td>
+ <td align="left">rgb(255, 246, 143)</td>
+ <td align="left">#FFF68F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki3</td>
+ <td align="center" style="background-color:rgb(205, 198, 115)">khaki3</td>
+ <td align="left">rgb(205, 198, 115)</td>
+ <td align="left">#CDC673</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki4</td>
+ <td align="center" style="background-color:rgb(139, 134, 78)">khaki4</td>
+ <td align="left">rgb(139, 134, 78)</td>
+ <td align="left">#8B864E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PaleGoldenrod</td>
+ <td align="center" style="background-color:rgb(238, 232, 170)">PaleGoldenrod</td>
+ <td align="left">rgb(238, 232, 170)</td>
+ <td align="left">#EEE8AA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon</td>
+ <td align="center" style="background-color:rgb(255, 250, 205)">LemonChiffon</td>
+ <td align="left">rgb(255, 250, 205)</td>
+ <td align="left">#FFFACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon1</td>
+ <td align="center" style="background-color:rgb(255, 250, 205)">LemonChiffon1</td>
+ <td align="left">rgb(255, 250, 205)</td>
+ <td align="left">#FFFACD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">khaki</td>
+ <td align="center" style="background-color:rgb(240, 230, 140)">khaki</td>
+ <td align="left">rgb(240, 230, 140)</td>
+ <td align="left">#F0E68C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon3</td>
+ <td align="center" style="background-color:rgb(205, 201, 165)">LemonChiffon3</td>
+ <td align="left">rgb(205, 201, 165)</td>
+ <td align="left">#CDC9A5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LemonChiffon2</td>
+ <td align="center" style="background-color:rgb(238, 233, 191)">LemonChiffon2</td>
+ <td align="left">rgb(238, 233, 191)</td>
+ <td align="left">#EEE9BF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MediumGoldenRod</td>
+ <td align="center" style="background-color:rgb(209, 193, 102)">MediumGoldenRod</td>
+ <td align="left">rgb(209, 193, 102)</td>
+ <td align="left">#D1C166</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk4</td>
+ <td align="center" style="background-color:rgb(139, 136, 120)">cornsilk4</td>
+ <td align="left">rgb(139, 136, 120)</td>
+ <td align="left">#8B8878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold</td>
+ <td align="center" style="background-color:rgb(255, 215, 0)">gold</td>
+ <td align="left">rgb(255, 215, 0)</td>
+ <td align="left">#FFD700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold1</td>
+ <td align="center" style="background-color:rgb(255, 215, 0)">gold1</td>
+ <td align="left">rgb(255, 215, 0)</td>
+ <td align="left">#FFD700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold2</td>
+ <td align="center" style="background-color:rgb(238, 201, 0)">gold2</td>
+ <td align="left">rgb(238, 201, 0)</td>
+ <td align="left">#EEC900</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold3</td>
+ <td align="center" style="background-color:rgb(205, 173, 0)">gold3</td>
+ <td align="left">rgb(205, 173, 0)</td>
+ <td align="left">#CDAD00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gold4</td>
+ <td align="center" style="background-color:rgb(139, 117, 0)">gold4</td>
+ <td align="left">rgb(139, 117, 0)</td>
+ <td align="left">#8B7500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod</td>
+ <td align="center" style="background-color:rgb(238, 221, 130)">LightGoldenrod</td>
+ <td align="left">rgb(238, 221, 130)</td>
+ <td align="left">#EEDD82</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 129, 76)">LightGoldenrod4</td>
+ <td align="left">rgb(139, 129, 76)</td>
+ <td align="left">#8B814C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 236, 139)">LightGoldenrod1</td>
+ <td align="left">rgb(255, 236, 139)</td>
+ <td align="left">#FFEC8B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 190, 112)">LightGoldenrod3</td>
+ <td align="left">rgb(205, 190, 112)</td>
+ <td align="left">#CDBE70</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGoldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 220, 130)">LightGoldenrod2</td>
+ <td align="left">rgb(238, 220, 130)</td>
+ <td align="left">#EEDC82</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk3</td>
+ <td align="center" style="background-color:rgb(205, 200, 177)">cornsilk3</td>
+ <td align="left">rgb(205, 200, 177)</td>
+ <td align="left">#CDC8B1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk2</td>
+ <td align="center" style="background-color:rgb(238, 232, 205)">cornsilk2</td>
+ <td align="left">rgb(238, 232, 205)</td>
+ <td align="left">#EEE8CD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk</td>
+ <td align="center" style="background-color:rgb(255, 248, 220)">cornsilk</td>
+ <td align="left">rgb(255, 248, 220)</td>
+ <td align="left">#FFF8DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">cornsilk1</td>
+ <td align="center" style="background-color:rgb(255, 248, 220)">cornsilk1</td>
+ <td align="left">rgb(255, 248, 220)</td>
+ <td align="left">#FFF8DC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod</td>
+ <td align="center" style="background-color:rgb(218, 165, 32)">goldenrod</td>
+ <td align="left">rgb(218, 165, 32)</td>
+ <td align="left">#DAA520</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 193, 37)">goldenrod1</td>
+ <td align="left">rgb(255, 193, 37)</td>
+ <td align="left">#FFC125</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 180, 34)">goldenrod2</td>
+ <td align="left">rgb(238, 180, 34)</td>
+ <td align="left">#EEB422</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 155, 29)">goldenrod3</td>
+ <td align="left">rgb(205, 155, 29)</td>
+ <td align="left">#CD9B1D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">goldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 105, 20)">goldenrod4</td>
+ <td align="left">rgb(139, 105, 20)</td>
+ <td align="left">#8B6914</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod</td>
+ <td align="center" style="background-color:rgb(184, 134, 11)">DarkGoldenrod</td>
+ <td align="left">rgb(184, 134, 11)</td>
+ <td align="left">#B8860B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod1</td>
+ <td align="center" style="background-color:rgb(255, 185, 15)">DarkGoldenrod1</td>
+ <td align="left">rgb(255, 185, 15)</td>
+ <td align="left">#FFB90F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod2</td>
+ <td align="center" style="background-color:rgb(238, 173, 14)">DarkGoldenrod2</td>
+ <td align="left">rgb(238, 173, 14)</td>
+ <td align="left">#EEAD0E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod3</td>
+ <td align="center" style="background-color:rgb(205, 149, 12)">DarkGoldenrod3</td>
+ <td align="left">rgb(205, 149, 12)</td>
+ <td align="left">#CD950C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGoldenrod4</td>
+ <td align="center" style="background-color:rgb(139, 101, 8)">DarkGoldenrod4</td>
+ <td align="left">rgb(139, 101, 8)</td>
+ <td align="left">#8B6508</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">FloralWhite</td>
+ <td align="center" style="background-color:rgb(255, 250, 240)">FloralWhite</td>
+ <td align="left">rgb(255, 250, 240)</td>
+ <td align="left">#FFFAF0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat2</td>
+ <td align="center" style="background-color:rgb(238, 216, 174)">wheat2</td>
+ <td align="left">rgb(238, 216, 174)</td>
+ <td align="left">#EED8AE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OldLace</td>
+ <td align="center" style="background-color:rgb(253, 245, 230)">OldLace</td>
+ <td align="left">rgb(253, 245, 230)</td>
+ <td align="left">#FDF5E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat</td>
+ <td align="center" style="background-color:rgb(245, 222, 179)">wheat</td>
+ <td align="left">rgb(245, 222, 179)</td>
+ <td align="left">#F5DEB3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat1</td>
+ <td align="center" style="background-color:rgb(255, 231, 186)">wheat1</td>
+ <td align="left">rgb(255, 231, 186)</td>
+ <td align="left">#FFE7BA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat3</td>
+ <td align="center" style="background-color:rgb(205, 186, 150)">wheat3</td>
+ <td align="left">rgb(205, 186, 150)</td>
+ <td align="left">#CDBA96</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange</td>
+ <td align="center" style="background-color:rgb(255, 165, 0)">orange</td>
+ <td align="left">rgb(255, 165, 0)</td>
+ <td align="left">#FFA500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange1</td>
+ <td align="center" style="background-color:rgb(255, 165, 0)">orange1</td>
+ <td align="left">rgb(255, 165, 0)</td>
+ <td align="left">#FFA500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange2</td>
+ <td align="center" style="background-color:rgb(238, 154, 0)">orange2</td>
+ <td align="left">rgb(238, 154, 0)</td>
+ <td align="left">#EE9A00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange3</td>
+ <td align="center" style="background-color:rgb(205, 133, 0)">orange3</td>
+ <td align="left">rgb(205, 133, 0)</td>
+ <td align="left">#CD8500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">orange4</td>
+ <td align="center" style="background-color:rgb(139, 90, 0)">orange4</td>
+ <td align="left">rgb(139, 90, 0)</td>
+ <td align="left">#8B5A00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">wheat4</td>
+ <td align="center" style="background-color:rgb(139, 126, 102)">wheat4</td>
+ <td align="left">rgb(139, 126, 102)</td>
+ <td align="left">#8B7E66</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">moccasin</td>
+ <td align="center" style="background-color:rgb(255, 228, 181)">moccasin</td>
+ <td align="left">rgb(255, 228, 181)</td>
+ <td align="left">#FFE4B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PapayaWhip</td>
+ <td align="center" style="background-color:rgb(255, 239, 213)">PapayaWhip</td>
+ <td align="left">rgb(255, 239, 213)</td>
+ <td align="left">#FFEFD5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite3</td>
+ <td align="center" style="background-color:rgb(205, 179, 139)">NavajoWhite3</td>
+ <td align="left">rgb(205, 179, 139)</td>
+ <td align="left">#CDB38B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">BlanchedAlmond</td>
+ <td align="center" style="background-color:rgb(255, 235, 205)">BlanchedAlmond</td>
+ <td align="left">rgb(255, 235, 205)</td>
+ <td align="left">#FFEBCD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite</td>
+ <td align="center" style="background-color:rgb(255, 222, 173)">NavajoWhite</td>
+ <td align="left">rgb(255, 222, 173)</td>
+ <td align="left">#FFDEAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite1</td>
+ <td align="center" style="background-color:rgb(255, 222, 173)">NavajoWhite1</td>
+ <td align="left">rgb(255, 222, 173)</td>
+ <td align="left">#FFDEAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite2</td>
+ <td align="center" style="background-color:rgb(238, 207, 161)">NavajoWhite2</td>
+ <td align="left">rgb(238, 207, 161)</td>
+ <td align="left">#EECFA1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">NavajoWhite4</td>
+ <td align="center" style="background-color:rgb(139, 121, 94)">NavajoWhite4</td>
+ <td align="left">rgb(139, 121, 94)</td>
+ <td align="left">#8B795E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite4</td>
+ <td align="center" style="background-color:rgb(139, 131, 120)">AntiqueWhite4</td>
+ <td align="left">rgb(139, 131, 120)</td>
+ <td align="left">#8B8378</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite</td>
+ <td align="center" style="background-color:rgb(250, 235, 215)">AntiqueWhite</td>
+ <td align="left">rgb(250, 235, 215)</td>
+ <td align="left">#FAEBD7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan</td>
+ <td align="center" style="background-color:rgb(210, 180, 140)">tan</td>
+ <td align="left">rgb(210, 180, 140)</td>
+ <td align="left">#D2B48C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque4</td>
+ <td align="center" style="background-color:rgb(139, 125, 107)">bisque4</td>
+ <td align="left">rgb(139, 125, 107)</td>
+ <td align="left">#8B7D6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood</td>
+ <td align="center" style="background-color:rgb(222, 184, 135)">burlywood</td>
+ <td align="left">rgb(222, 184, 135)</td>
+ <td align="left">#DEB887</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite2</td>
+ <td align="center" style="background-color:rgb(238, 223, 204)">AntiqueWhite2</td>
+ <td align="left">rgb(238, 223, 204)</td>
+ <td align="left">#EEDFCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood1</td>
+ <td align="center" style="background-color:rgb(255, 211, 155)">burlywood1</td>
+ <td align="left">rgb(255, 211, 155)</td>
+ <td align="left">#FFD39B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood3</td>
+ <td align="center" style="background-color:rgb(205, 170, 125)">burlywood3</td>
+ <td align="left">rgb(205, 170, 125)</td>
+ <td align="left">#CDAA7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood2</td>
+ <td align="center" style="background-color:rgb(238, 197, 145)">burlywood2</td>
+ <td align="left">rgb(238, 197, 145)</td>
+ <td align="left">#EEC591</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite1</td>
+ <td align="center" style="background-color:rgb(255, 239, 219)">AntiqueWhite1</td>
+ <td align="left">rgb(255, 239, 219)</td>
+ <td align="left">#FFEFDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">burlywood4</td>
+ <td align="center" style="background-color:rgb(139, 115, 85)">burlywood4</td>
+ <td align="left">rgb(139, 115, 85)</td>
+ <td align="left">#8B7355</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">AntiqueWhite3</td>
+ <td align="center" style="background-color:rgb(205, 192, 176)">AntiqueWhite3</td>
+ <td align="left">rgb(205, 192, 176)</td>
+ <td align="left">#CDC0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange</td>
+ <td align="center" style="background-color:rgb(255, 140, 0)">DarkOrange</td>
+ <td align="left">rgb(255, 140, 0)</td>
+ <td align="left">#FF8C00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque2</td>
+ <td align="center" style="background-color:rgb(238, 213, 183)">bisque2</td>
+ <td align="left">rgb(238, 213, 183)</td>
+ <td align="left">#EED5B7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque</td>
+ <td align="center" style="background-color:rgb(255, 228, 196)">bisque</td>
+ <td align="left">rgb(255, 228, 196)</td>
+ <td align="left">#FFE4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque1</td>
+ <td align="center" style="background-color:rgb(255, 228, 196)">bisque1</td>
+ <td align="left">rgb(255, 228, 196)</td>
+ <td align="left">#FFE4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">bisque3</td>
+ <td align="center" style="background-color:rgb(205, 183, 158)">bisque3</td>
+ <td align="left">rgb(205, 183, 158)</td>
+ <td align="left">#CDB79E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange1</td>
+ <td align="center" style="background-color:rgb(255, 127, 0)">DarkOrange1</td>
+ <td align="left">rgb(255, 127, 0)</td>
+ <td align="left">#FF7F00</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">linen</td>
+ <td align="center" style="background-color:rgb(250, 240, 230)">linen</td>
+ <td align="left">rgb(250, 240, 230)</td>
+ <td align="left">#FAF0E6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange2</td>
+ <td align="center" style="background-color:rgb(238, 118, 0)">DarkOrange2</td>
+ <td align="left">rgb(238, 118, 0)</td>
+ <td align="left">#EE7600</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange3</td>
+ <td align="center" style="background-color:rgb(205, 102, 0)">DarkOrange3</td>
+ <td align="left">rgb(205, 102, 0)</td>
+ <td align="left">#CD6600</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkOrange4</td>
+ <td align="center" style="background-color:rgb(139, 69, 0)">DarkOrange4</td>
+ <td align="left">rgb(139, 69, 0)</td>
+ <td align="left">#8B4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">peru</td>
+ <td align="center" style="background-color:rgb(205, 133, 63)">peru</td>
+ <td align="left">rgb(205, 133, 63)</td>
+ <td align="left">#CD853F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan1</td>
+ <td align="center" style="background-color:rgb(255, 165, 79)">tan1</td>
+ <td align="left">rgb(255, 165, 79)</td>
+ <td align="left">#FFA54F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan2</td>
+ <td align="center" style="background-color:rgb(238, 154, 73)">tan2</td>
+ <td align="left">rgb(238, 154, 73)</td>
+ <td align="left">#EE9A49</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan3</td>
+ <td align="center" style="background-color:rgb(205, 133, 63)">tan3</td>
+ <td align="left">rgb(205, 133, 63)</td>
+ <td align="left">#CD853F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tan4</td>
+ <td align="center" style="background-color:rgb(139, 90, 43)">tan4</td>
+ <td align="left">rgb(139, 90, 43)</td>
+ <td align="left">#8B5A2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff</td>
+ <td align="center" style="background-color:rgb(255, 218, 185)">PeachPuff</td>
+ <td align="left">rgb(255, 218, 185)</td>
+ <td align="left">#FFDAB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff1</td>
+ <td align="center" style="background-color:rgb(255, 218, 185)">PeachPuff1</td>
+ <td align="left">rgb(255, 218, 185)</td>
+ <td align="left">#FFDAB9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff4</td>
+ <td align="center" style="background-color:rgb(139, 119, 101)">PeachPuff4</td>
+ <td align="left">rgb(139, 119, 101)</td>
+ <td align="left">#8B7765</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff2</td>
+ <td align="center" style="background-color:rgb(238, 203, 173)">PeachPuff2</td>
+ <td align="left">rgb(238, 203, 173)</td>
+ <td align="left">#EECBAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">PeachPuff3</td>
+ <td align="center" style="background-color:rgb(205, 175, 149)">PeachPuff3</td>
+ <td align="left">rgb(205, 175, 149)</td>
+ <td align="left">#CDAF95</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SandyBrown</td>
+ <td align="center" style="background-color:rgb(244, 164, 96)">SandyBrown</td>
+ <td align="left">rgb(244, 164, 96)</td>
+ <td align="left">#F4A460</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell4</td>
+ <td align="center" style="background-color:rgb(139, 134, 130)">seashell4</td>
+ <td align="left">rgb(139, 134, 130)</td>
+ <td align="left">#8B8682</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell2</td>
+ <td align="center" style="background-color:rgb(238, 229, 222)">seashell2</td>
+ <td align="left">rgb(238, 229, 222)</td>
+ <td align="left">#EEE5DE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell3</td>
+ <td align="center" style="background-color:rgb(205, 197, 191)">seashell3</td>
+ <td align="left">rgb(205, 197, 191)</td>
+ <td align="left">#CDC5BF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate</td>
+ <td align="center" style="background-color:rgb(210, 105, 30)">chocolate</td>
+ <td align="left">rgb(210, 105, 30)</td>
+ <td align="left">#D2691E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate1</td>
+ <td align="center" style="background-color:rgb(255, 127, 36)">chocolate1</td>
+ <td align="left">rgb(255, 127, 36)</td>
+ <td align="left">#FF7F24</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate2</td>
+ <td align="center" style="background-color:rgb(238, 118, 33)">chocolate2</td>
+ <td align="left">rgb(238, 118, 33)</td>
+ <td align="left">#EE7621</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate3</td>
+ <td align="center" style="background-color:rgb(205, 102, 29)">chocolate3</td>
+ <td align="left">rgb(205, 102, 29)</td>
+ <td align="left">#CD661D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">chocolate4</td>
+ <td align="center" style="background-color:rgb(139, 69, 19)">chocolate4</td>
+ <td align="left">rgb(139, 69, 19)</td>
+ <td align="left">#8B4513</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">SaddleBrown</td>
+ <td align="center" style="background-color:rgb(139, 69, 19)">SaddleBrown</td>
+ <td align="left">rgb(139, 69, 19)</td>
+ <td align="left">#8B4513</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell</td>
+ <td align="center" style="background-color:rgb(255, 245, 238)">seashell</td>
+ <td align="left">rgb(255, 245, 238)</td>
+ <td align="left">#FFF5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">seashell1</td>
+ <td align="center" style="background-color:rgb(255, 245, 238)">seashell1</td>
+ <td align="left">rgb(255, 245, 238)</td>
+ <td align="left">#FFF5EE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna4</td>
+ <td align="center" style="background-color:rgb(139, 71, 38)">sienna4</td>
+ <td align="left">rgb(139, 71, 38)</td>
+ <td align="left">#8B4726</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna</td>
+ <td align="center" style="background-color:rgb(160, 82, 45)">sienna</td>
+ <td align="left">rgb(160, 82, 45)</td>
+ <td align="left">#A0522D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna1</td>
+ <td align="center" style="background-color:rgb(255, 130, 71)">sienna1</td>
+ <td align="left">rgb(255, 130, 71)</td>
+ <td align="left">#FF8247</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna2</td>
+ <td align="center" style="background-color:rgb(238, 121, 66)">sienna2</td>
+ <td align="left">rgb(238, 121, 66)</td>
+ <td align="left">#EE7942</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">sienna3</td>
+ <td align="center" style="background-color:rgb(205, 104, 57)">sienna3</td>
+ <td align="left">rgb(205, 104, 57)</td>
+ <td align="left">#CD6839</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon3</td>
+ <td align="center" style="background-color:rgb(205, 129, 98)">LightSalmon3</td>
+ <td align="left">rgb(205, 129, 98)</td>
+ <td align="left">#CD8162</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon</td>
+ <td align="center" style="background-color:rgb(255, 160, 122)">LightSalmon</td>
+ <td align="left">rgb(255, 160, 122)</td>
+ <td align="left">#FFA07A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon1</td>
+ <td align="center" style="background-color:rgb(255, 160, 122)">LightSalmon1</td>
+ <td align="left">rgb(255, 160, 122)</td>
+ <td align="left">#FFA07A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon4</td>
+ <td align="center" style="background-color:rgb(139, 87, 66)">LightSalmon4</td>
+ <td align="left">rgb(139, 87, 66)</td>
+ <td align="left">#8B5742</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightSalmon2</td>
+ <td align="center" style="background-color:rgb(238, 149, 114)">LightSalmon2</td>
+ <td align="left">rgb(238, 149, 114)</td>
+ <td align="left">#EE9572</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral</td>
+ <td align="center" style="background-color:rgb(255, 127, 80)">coral</td>
+ <td align="left">rgb(255, 127, 80)</td>
+ <td align="left">#FF7F50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed</td>
+ <td align="center" style="background-color:rgb(255, 69, 0)">OrangeRed</td>
+ <td align="left">rgb(255, 69, 0)</td>
+ <td align="left">#FF4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed1</td>
+ <td align="center" style="background-color:rgb(255, 69, 0)">OrangeRed1</td>
+ <td align="left">rgb(255, 69, 0)</td>
+ <td align="left">#FF4500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed2</td>
+ <td align="center" style="background-color:rgb(238, 64, 0)">OrangeRed2</td>
+ <td align="left">rgb(238, 64, 0)</td>
+ <td align="left">#EE4000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed3</td>
+ <td align="center" style="background-color:rgb(205, 55, 0)">OrangeRed3</td>
+ <td align="left">rgb(205, 55, 0)</td>
+ <td align="left">#CD3700</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">OrangeRed4</td>
+ <td align="center" style="background-color:rgb(139, 37, 0)">OrangeRed4</td>
+ <td align="left">rgb(139, 37, 0)</td>
+ <td align="left">#8B2500</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkSalmon</td>
+ <td align="center" style="background-color:rgb(233, 150, 122)">DarkSalmon</td>
+ <td align="left">rgb(233, 150, 122)</td>
+ <td align="left">#E9967A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon1</td>
+ <td align="center" style="background-color:rgb(255, 140, 105)">salmon1</td>
+ <td align="left">rgb(255, 140, 105)</td>
+ <td align="left">#FF8C69</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon2</td>
+ <td align="center" style="background-color:rgb(238, 130, 98)">salmon2</td>
+ <td align="left">rgb(238, 130, 98)</td>
+ <td align="left">#EE8262</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon3</td>
+ <td align="center" style="background-color:rgb(205, 112, 84)">salmon3</td>
+ <td align="left">rgb(205, 112, 84)</td>
+ <td align="left">#CD7054</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon4</td>
+ <td align="center" style="background-color:rgb(139, 76, 57)">salmon4</td>
+ <td align="left">rgb(139, 76, 57)</td>
+ <td align="left">#8B4C39</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral1</td>
+ <td align="center" style="background-color:rgb(255, 114, 86)">coral1</td>
+ <td align="left">rgb(255, 114, 86)</td>
+ <td align="left">#FF7256</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral2</td>
+ <td align="center" style="background-color:rgb(238, 106, 80)">coral2</td>
+ <td align="left">rgb(238, 106, 80)</td>
+ <td align="left">#EE6A50</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral3</td>
+ <td align="center" style="background-color:rgb(205, 91, 69)">coral3</td>
+ <td align="left">rgb(205, 91, 69)</td>
+ <td align="left">#CD5B45</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">coral4</td>
+ <td align="center" style="background-color:rgb(139, 62, 47)">coral4</td>
+ <td align="left">rgb(139, 62, 47)</td>
+ <td align="left">#8B3E2F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato4</td>
+ <td align="center" style="background-color:rgb(139, 54, 38)">tomato4</td>
+ <td align="left">rgb(139, 54, 38)</td>
+ <td align="left">#8B3626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato</td>
+ <td align="center" style="background-color:rgb(255, 99, 71)">tomato</td>
+ <td align="left">rgb(255, 99, 71)</td>
+ <td align="left">#FF6347</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato1</td>
+ <td align="center" style="background-color:rgb(255, 99, 71)">tomato1</td>
+ <td align="left">rgb(255, 99, 71)</td>
+ <td align="left">#FF6347</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato2</td>
+ <td align="center" style="background-color:rgb(238, 92, 66)">tomato2</td>
+ <td align="left">rgb(238, 92, 66)</td>
+ <td align="left">#EE5C42</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">tomato3</td>
+ <td align="center" style="background-color:rgb(205, 79, 57)">tomato3</td>
+ <td align="left">rgb(205, 79, 57)</td>
+ <td align="left">#CD4F39</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose4</td>
+ <td align="center" style="background-color:rgb(139, 125, 123)">MistyRose4</td>
+ <td align="left">rgb(139, 125, 123)</td>
+ <td align="left">#8B7D7B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose2</td>
+ <td align="center" style="background-color:rgb(238, 213, 210)">MistyRose2</td>
+ <td align="left">rgb(238, 213, 210)</td>
+ <td align="left">#EED5D2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose</td>
+ <td align="center" style="background-color:rgb(255, 228, 225)">MistyRose</td>
+ <td align="left">rgb(255, 228, 225)</td>
+ <td align="left">#FFE4E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose1</td>
+ <td align="center" style="background-color:rgb(255, 228, 225)">MistyRose1</td>
+ <td align="left">rgb(255, 228, 225)</td>
+ <td align="left">#FFE4E1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">salmon</td>
+ <td align="center" style="background-color:rgb(250, 128, 114)">salmon</td>
+ <td align="left">rgb(250, 128, 114)</td>
+ <td align="left">#FA8072</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">MistyRose3</td>
+ <td align="center" style="background-color:rgb(205, 183, 181)">MistyRose3</td>
+ <td align="left">rgb(205, 183, 181)</td>
+ <td align="left">#CDB7B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">white</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">white</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">gray100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">grey100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey100</td>
+ <td align="center" style="background-color:rgb(255, 255, 255)">grey100</td>
+ <td align="left">rgb(255, 255, 255)</td>
+ <td align="left">#FFFFFF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray99</td>
+ <td align="center" style="background-color:rgb(252, 252, 252)">gray99</td>
+ <td align="left">rgb(252, 252, 252)</td>
+ <td align="left">#FCFCFC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey99</td>
+ <td align="center" style="background-color:rgb(252, 252, 252)">grey99</td>
+ <td align="left">rgb(252, 252, 252)</td>
+ <td align="left">#FCFCFC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray98</td>
+ <td align="center" style="background-color:rgb(250, 250, 250)">gray98</td>
+ <td align="left">rgb(250, 250, 250)</td>
+ <td align="left">#FAFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey98</td>
+ <td align="center" style="background-color:rgb(250, 250, 250)">grey98</td>
+ <td align="left">rgb(250, 250, 250)</td>
+ <td align="left">#FAFAFA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray97</td>
+ <td align="center" style="background-color:rgb(247, 247, 247)">gray97</td>
+ <td align="left">rgb(247, 247, 247)</td>
+ <td align="left">#F7F7F7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey97</td>
+ <td align="center" style="background-color:rgb(247, 247, 247)">grey97</td>
+ <td align="left">rgb(247, 247, 247)</td>
+ <td align="left">#F7F7F7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray96</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">gray96</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey96</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">grey96</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">WhiteSmoke</td>
+ <td align="center" style="background-color:rgb(245, 245, 245)">WhiteSmoke</td>
+ <td align="left">rgb(245, 245, 245)</td>
+ <td align="left">#F5F5F5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray95</td>
+ <td align="center" style="background-color:rgb(242, 242, 242)">gray95</td>
+ <td align="left">rgb(242, 242, 242)</td>
+ <td align="left">#F2F2F2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey95</td>
+ <td align="center" style="background-color:rgb(242, 242, 242)">grey95</td>
+ <td align="left">rgb(242, 242, 242)</td>
+ <td align="left">#F2F2F2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray94</td>
+ <td align="center" style="background-color:rgb(240, 240, 240)">gray94</td>
+ <td align="left">rgb(240, 240, 240)</td>
+ <td align="left">#F0F0F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey94</td>
+ <td align="center" style="background-color:rgb(240, 240, 240)">grey94</td>
+ <td align="left">rgb(240, 240, 240)</td>
+ <td align="left">#F0F0F0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray93</td>
+ <td align="center" style="background-color:rgb(237, 237, 237)">gray93</td>
+ <td align="left">rgb(237, 237, 237)</td>
+ <td align="left">#EDEDED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey93</td>
+ <td align="center" style="background-color:rgb(237, 237, 237)">grey93</td>
+ <td align="left">rgb(237, 237, 237)</td>
+ <td align="left">#EDEDED</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray92</td>
+ <td align="center" style="background-color:rgb(235, 235, 235)">gray92</td>
+ <td align="left">rgb(235, 235, 235)</td>
+ <td align="left">#EBEBEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey92</td>
+ <td align="center" style="background-color:rgb(235, 235, 235)">grey92</td>
+ <td align="left">rgb(235, 235, 235)</td>
+ <td align="left">#EBEBEB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray91</td>
+ <td align="center" style="background-color:rgb(232, 232, 232)">gray91</td>
+ <td align="left">rgb(232, 232, 232)</td>
+ <td align="left">#E8E8E8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey91</td>
+ <td align="center" style="background-color:rgb(232, 232, 232)">grey91</td>
+ <td align="left">rgb(232, 232, 232)</td>
+ <td align="left">#E8E8E8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray90</td>
+ <td align="center" style="background-color:rgb(229, 229, 229)">gray90</td>
+ <td align="left">rgb(229, 229, 229)</td>
+ <td align="left">#E5E5E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey90</td>
+ <td align="center" style="background-color:rgb(229, 229, 229)">grey90</td>
+ <td align="left">rgb(229, 229, 229)</td>
+ <td align="left">#E5E5E5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray89</td>
+ <td align="center" style="background-color:rgb(227, 227, 227)">gray89</td>
+ <td align="left">rgb(227, 227, 227)</td>
+ <td align="left">#E3E3E3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey89</td>
+ <td align="center" style="background-color:rgb(227, 227, 227)">grey89</td>
+ <td align="left">rgb(227, 227, 227)</td>
+ <td align="left">#E3E3E3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray88</td>
+ <td align="center" style="background-color:rgb(224, 224, 224)">gray88</td>
+ <td align="left">rgb(224, 224, 224)</td>
+ <td align="left">#E0E0E0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey88</td>
+ <td align="center" style="background-color:rgb(224, 224, 224)">grey88</td>
+ <td align="left">rgb(224, 224, 224)</td>
+ <td align="left">#E0E0E0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray87</td>
+ <td align="center" style="background-color:rgb(222, 222, 222)">gray87</td>
+ <td align="left">rgb(222, 222, 222)</td>
+ <td align="left">#DEDEDE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey87</td>
+ <td align="center" style="background-color:rgb(222, 222, 222)">grey87</td>
+ <td align="left">rgb(222, 222, 222)</td>
+ <td align="left">#DEDEDE</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gainsboro</td>
+ <td align="center" style="background-color:rgb(220, 220, 220)">gainsboro</td>
+ <td align="left">rgb(220, 220, 220)</td>
+ <td align="left">#DCDCDC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray86</td>
+ <td align="center" style="background-color:rgb(219, 219, 219)">gray86</td>
+ <td align="left">rgb(219, 219, 219)</td>
+ <td align="left">#DBDBDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey86</td>
+ <td align="center" style="background-color:rgb(219, 219, 219)">grey86</td>
+ <td align="left">rgb(219, 219, 219)</td>
+ <td align="left">#DBDBDB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray85</td>
+ <td align="center" style="background-color:rgb(217, 217, 217)">gray85</td>
+ <td align="left">rgb(217, 217, 217)</td>
+ <td align="left">#D9D9D9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey85</td>
+ <td align="center" style="background-color:rgb(217, 217, 217)">grey85</td>
+ <td align="left">rgb(217, 217, 217)</td>
+ <td align="left">#D9D9D9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray84</td>
+ <td align="center" style="background-color:rgb(214, 214, 214)">gray84</td>
+ <td align="left">rgb(214, 214, 214)</td>
+ <td align="left">#D6D6D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey84</td>
+ <td align="center" style="background-color:rgb(214, 214, 214)">grey84</td>
+ <td align="left">rgb(214, 214, 214)</td>
+ <td align="left">#D6D6D6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray83</td>
+ <td align="center" style="background-color:rgb(212, 212, 212)">gray83</td>
+ <td align="left">rgb(212, 212, 212)</td>
+ <td align="left">#D4D4D4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey83</td>
+ <td align="center" style="background-color:rgb(212, 212, 212)">grey83</td>
+ <td align="left">rgb(212, 212, 212)</td>
+ <td align="left">#D4D4D4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGray</td>
+ <td align="center" style="background-color:rgb(211, 211, 211)">LightGray</td>
+ <td align="left">rgb(211, 211, 211)</td>
+ <td align="left">#D3D3D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">LightGrey</td>
+ <td align="center" style="background-color:rgb(211, 211, 211)">LightGrey</td>
+ <td align="left">rgb(211, 211, 211)</td>
+ <td align="left">#D3D3D3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray82</td>
+ <td align="center" style="background-color:rgb(209, 209, 209)">gray82</td>
+ <td align="left">rgb(209, 209, 209)</td>
+ <td align="left">#D1D1D1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey82</td>
+ <td align="center" style="background-color:rgb(209, 209, 209)">grey82</td>
+ <td align="left">rgb(209, 209, 209)</td>
+ <td align="left">#D1D1D1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray81</td>
+ <td align="center" style="background-color:rgb(207, 207, 207)">gray81</td>
+ <td align="left">rgb(207, 207, 207)</td>
+ <td align="left">#CFCFCF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey81</td>
+ <td align="center" style="background-color:rgb(207, 207, 207)">grey81</td>
+ <td align="left">rgb(207, 207, 207)</td>
+ <td align="left">#CFCFCF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray80</td>
+ <td align="center" style="background-color:rgb(204, 204, 204)">gray80</td>
+ <td align="left">rgb(204, 204, 204)</td>
+ <td align="left">#CCCCCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey80</td>
+ <td align="center" style="background-color:rgb(204, 204, 204)">grey80</td>
+ <td align="left">rgb(204, 204, 204)</td>
+ <td align="left">#CCCCCC</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray79</td>
+ <td align="center" style="background-color:rgb(201, 201, 201)">gray79</td>
+ <td align="left">rgb(201, 201, 201)</td>
+ <td align="left">#C9C9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey79</td>
+ <td align="center" style="background-color:rgb(201, 201, 201)">grey79</td>
+ <td align="left">rgb(201, 201, 201)</td>
+ <td align="left">#C9C9C9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray78</td>
+ <td align="center" style="background-color:rgb(199, 199, 199)">gray78</td>
+ <td align="left">rgb(199, 199, 199)</td>
+ <td align="left">#C7C7C7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey78</td>
+ <td align="center" style="background-color:rgb(199, 199, 199)">grey78</td>
+ <td align="left">rgb(199, 199, 199)</td>
+ <td align="left">#C7C7C7</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray77</td>
+ <td align="center" style="background-color:rgb(196, 196, 196)">gray77</td>
+ <td align="left">rgb(196, 196, 196)</td>
+ <td align="left">#C4C4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey77</td>
+ <td align="center" style="background-color:rgb(196, 196, 196)">grey77</td>
+ <td align="left">rgb(196, 196, 196)</td>
+ <td align="left">#C4C4C4</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray76</td>
+ <td align="center" style="background-color:rgb(194, 194, 194)">gray76</td>
+ <td align="left">rgb(194, 194, 194)</td>
+ <td align="left">#C2C2C2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey76</td>
+ <td align="center" style="background-color:rgb(194, 194, 194)">grey76</td>
+ <td align="left">rgb(194, 194, 194)</td>
+ <td align="left">#C2C2C2</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">silver</td>
+ <td align="center" style="background-color:rgb(192, 192, 192)">silver</td>
+ <td align="left">rgb(192, 192, 192)</td>
+ <td align="left">#C0C0C0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray75</td>
+ <td align="center" style="background-color:rgb(191, 191, 191)">gray75</td>
+ <td align="left">rgb(191, 191, 191)</td>
+ <td align="left">#BFBFBF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey75</td>
+ <td align="center" style="background-color:rgb(191, 191, 191)">grey75</td>
+ <td align="left">rgb(191, 191, 191)</td>
+ <td align="left">#BFBFBF</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray74</td>
+ <td align="center" style="background-color:rgb(189, 189, 189)">gray74</td>
+ <td align="left">rgb(189, 189, 189)</td>
+ <td align="left">#BDBDBD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey74</td>
+ <td align="center" style="background-color:rgb(189, 189, 189)">grey74</td>
+ <td align="left">rgb(189, 189, 189)</td>
+ <td align="left">#BDBDBD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray73</td>
+ <td align="center" style="background-color:rgb(186, 186, 186)">gray73</td>
+ <td align="left">rgb(186, 186, 186)</td>
+ <td align="left">#BABABA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey73</td>
+ <td align="center" style="background-color:rgb(186, 186, 186)">grey73</td>
+ <td align="left">rgb(186, 186, 186)</td>
+ <td align="left">#BABABA</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray72</td>
+ <td align="center" style="background-color:rgb(184, 184, 184)">gray72</td>
+ <td align="left">rgb(184, 184, 184)</td>
+ <td align="left">#B8B8B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey72</td>
+ <td align="center" style="background-color:rgb(184, 184, 184)">grey72</td>
+ <td align="left">rgb(184, 184, 184)</td>
+ <td align="left">#B8B8B8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray71</td>
+ <td align="center" style="background-color:rgb(181, 181, 181)">gray71</td>
+ <td align="left">rgb(181, 181, 181)</td>
+ <td align="left">#B5B5B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey71</td>
+ <td align="center" style="background-color:rgb(181, 181, 181)">grey71</td>
+ <td align="left">rgb(181, 181, 181)</td>
+ <td align="left">#B5B5B5</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray70</td>
+ <td align="center" style="background-color:rgb(179, 179, 179)">gray70</td>
+ <td align="left">rgb(179, 179, 179)</td>
+ <td align="left">#B3B3B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey70</td>
+ <td align="center" style="background-color:rgb(179, 179, 179)">grey70</td>
+ <td align="left">rgb(179, 179, 179)</td>
+ <td align="left">#B3B3B3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray69</td>
+ <td align="center" style="background-color:rgb(176, 176, 176)">gray69</td>
+ <td align="left">rgb(176, 176, 176)</td>
+ <td align="left">#B0B0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey69</td>
+ <td align="center" style="background-color:rgb(176, 176, 176)">grey69</td>
+ <td align="left">rgb(176, 176, 176)</td>
+ <td align="left">#B0B0B0</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray68</td>
+ <td align="center" style="background-color:rgb(173, 173, 173)">gray68</td>
+ <td align="left">rgb(173, 173, 173)</td>
+ <td align="left">#ADADAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey68</td>
+ <td align="center" style="background-color:rgb(173, 173, 173)">grey68</td>
+ <td align="left">rgb(173, 173, 173)</td>
+ <td align="left">#ADADAD</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray67</td>
+ <td align="center" style="background-color:rgb(171, 171, 171)">gray67</td>
+ <td align="left">rgb(171, 171, 171)</td>
+ <td align="left">#ABABAB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey67</td>
+ <td align="center" style="background-color:rgb(171, 171, 171)">grey67</td>
+ <td align="left">rgb(171, 171, 171)</td>
+ <td align="left">#ABABAB</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGray</td>
+ <td align="center" style="background-color:rgb(169, 169, 169)">DarkGray</td>
+ <td align="left">rgb(169, 169, 169)</td>
+ <td align="left">#A9A9A9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DarkGrey</td>
+ <td align="center" style="background-color:rgb(169, 169, 169)">DarkGrey</td>
+ <td align="left">rgb(169, 169, 169)</td>
+ <td align="left">#A9A9A9</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray66</td>
+ <td align="center" style="background-color:rgb(168, 168, 168)">gray66</td>
+ <td align="left">rgb(168, 168, 168)</td>
+ <td align="left">#A8A8A8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey66</td>
+ <td align="center" style="background-color:rgb(168, 168, 168)">grey66</td>
+ <td align="left">rgb(168, 168, 168)</td>
+ <td align="left">#A8A8A8</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray65</td>
+ <td align="center" style="background-color:rgb(166, 166, 166)">gray65</td>
+ <td align="left">rgb(166, 166, 166)</td>
+ <td align="left">#A6A6A6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey65</td>
+ <td align="center" style="background-color:rgb(166, 166, 166)">grey65</td>
+ <td align="left">rgb(166, 166, 166)</td>
+ <td align="left">#A6A6A6</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray64</td>
+ <td align="center" style="background-color:rgb(163, 163, 163)">gray64</td>
+ <td align="left">rgb(163, 163, 163)</td>
+ <td align="left">#A3A3A3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey64</td>
+ <td align="center" style="background-color:rgb(163, 163, 163)">grey64</td>
+ <td align="left">rgb(163, 163, 163)</td>
+ <td align="left">#A3A3A3</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray63</td>
+ <td align="center" style="background-color:rgb(161, 161, 161)">gray63</td>
+ <td align="left">rgb(161, 161, 161)</td>
+ <td align="left">#A1A1A1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey63</td>
+ <td align="center" style="background-color:rgb(161, 161, 161)">grey63</td>
+ <td align="left">rgb(161, 161, 161)</td>
+ <td align="left">#A1A1A1</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray62</td>
+ <td align="center" style="background-color:rgb(158, 158, 158)">gray62</td>
+ <td align="left">rgb(158, 158, 158)</td>
+ <td align="left">#9E9E9E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey62</td>
+ <td align="center" style="background-color:rgb(158, 158, 158)">grey62</td>
+ <td align="left">rgb(158, 158, 158)</td>
+ <td align="left">#9E9E9E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray61</td>
+ <td align="center" style="background-color:rgb(156, 156, 156)">gray61</td>
+ <td align="left">rgb(156, 156, 156)</td>
+ <td align="left">#9C9C9C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey61</td>
+ <td align="center" style="background-color:rgb(156, 156, 156)">grey61</td>
+ <td align="left">rgb(156, 156, 156)</td>
+ <td align="left">#9C9C9C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray60</td>
+ <td align="center" style="background-color:rgb(153, 153, 153)">gray60</td>
+ <td align="left">rgb(153, 153, 153)</td>
+ <td align="left">#999999</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey60</td>
+ <td align="center" style="background-color:rgb(153, 153, 153)">grey60</td>
+ <td align="left">rgb(153, 153, 153)</td>
+ <td align="left">#999999</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray59</td>
+ <td align="center" style="background-color:rgb(150, 150, 150)">gray59</td>
+ <td align="left">rgb(150, 150, 150)</td>
+ <td align="left">#969696</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey59</td>
+ <td align="center" style="background-color:rgb(150, 150, 150)">grey59</td>
+ <td align="left">rgb(150, 150, 150)</td>
+ <td align="left">#969696</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray58</td>
+ <td align="center" style="background-color:rgb(148, 148, 148)">gray58</td>
+ <td align="left">rgb(148, 148, 148)</td>
+ <td align="left">#949494</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey58</td>
+ <td align="center" style="background-color:rgb(148, 148, 148)">grey58</td>
+ <td align="left">rgb(148, 148, 148)</td>
+ <td align="left">#949494</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray57</td>
+ <td align="center" style="background-color:rgb(145, 145, 145)">gray57</td>
+ <td align="left">rgb(145, 145, 145)</td>
+ <td align="left">#919191</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey57</td>
+ <td align="center" style="background-color:rgb(145, 145, 145)">grey57</td>
+ <td align="left">rgb(145, 145, 145)</td>
+ <td align="left">#919191</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray56</td>
+ <td align="center" style="background-color:rgb(143, 143, 143)">gray56</td>
+ <td align="left">rgb(143, 143, 143)</td>
+ <td align="left">#8F8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey56</td>
+ <td align="center" style="background-color:rgb(143, 143, 143)">grey56</td>
+ <td align="left">rgb(143, 143, 143)</td>
+ <td align="left">#8F8F8F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray55</td>
+ <td align="center" style="background-color:rgb(140, 140, 140)">gray55</td>
+ <td align="left">rgb(140, 140, 140)</td>
+ <td align="left">#8C8C8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey55</td>
+ <td align="center" style="background-color:rgb(140, 140, 140)">grey55</td>
+ <td align="left">rgb(140, 140, 140)</td>
+ <td align="left">#8C8C8C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray54</td>
+ <td align="center" style="background-color:rgb(138, 138, 138)">gray54</td>
+ <td align="left">rgb(138, 138, 138)</td>
+ <td align="left">#8A8A8A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey54</td>
+ <td align="center" style="background-color:rgb(138, 138, 138)">grey54</td>
+ <td align="left">rgb(138, 138, 138)</td>
+ <td align="left">#8A8A8A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray53</td>
+ <td align="center" style="background-color:rgb(135, 135, 135)">gray53</td>
+ <td align="left">rgb(135, 135, 135)</td>
+ <td align="left">#878787</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey53</td>
+ <td align="center" style="background-color:rgb(135, 135, 135)">grey53</td>
+ <td align="left">rgb(135, 135, 135)</td>
+ <td align="left">#878787</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray52</td>
+ <td align="center" style="background-color:rgb(133, 133, 133)">gray52</td>
+ <td align="left">rgb(133, 133, 133)</td>
+ <td align="left">#858585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey52</td>
+ <td align="center" style="background-color:rgb(133, 133, 133)">grey52</td>
+ <td align="left">rgb(133, 133, 133)</td>
+ <td align="left">#858585</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray51</td>
+ <td align="center" style="background-color:rgb(130, 130, 130)">gray51</td>
+ <td align="left">rgb(130, 130, 130)</td>
+ <td align="left">#828282</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey51</td>
+ <td align="center" style="background-color:rgb(130, 130, 130)">grey51</td>
+ <td align="left">rgb(130, 130, 130)</td>
+ <td align="left">#828282</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">fractal</td>
+ <td align="center" style="background-color:rgb(128, 128, 128)">fractal</td>
+ <td align="left">rgb(128, 128, 128)</td>
+ <td align="left">#808080</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray50</td>
+ <td align="center" style="background-color:rgb(127, 127, 127)">gray50</td>
+ <td align="left">rgb(127, 127, 127)</td>
+ <td align="left">#7F7F7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey50</td>
+ <td align="center" style="background-color:rgb(127, 127, 127)">grey50</td>
+ <td align="left">rgb(127, 127, 127)</td>
+ <td align="left">#7F7F7F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray</td>
+ <td align="center" style="background-color:rgb(126, 126, 126)">gray</td>
+ <td align="left">rgb(126, 126, 126)</td>
+ <td align="left">#7E7E7E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray49</td>
+ <td align="center" style="background-color:rgb(125, 125, 125)">gray49</td>
+ <td align="left">rgb(125, 125, 125)</td>
+ <td align="left">#7D7D7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey49</td>
+ <td align="center" style="background-color:rgb(125, 125, 125)">grey49</td>
+ <td align="left">rgb(125, 125, 125)</td>
+ <td align="left">#7D7D7D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray48</td>
+ <td align="center" style="background-color:rgb(122, 122, 122)">gray48</td>
+ <td align="left">rgb(122, 122, 122)</td>
+ <td align="left">#7A7A7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey48</td>
+ <td align="center" style="background-color:rgb(122, 122, 122)">grey48</td>
+ <td align="left">rgb(122, 122, 122)</td>
+ <td align="left">#7A7A7A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray47</td>
+ <td align="center" style="background-color:rgb(120, 120, 120)">gray47</td>
+ <td align="left">rgb(120, 120, 120)</td>
+ <td align="left">#787878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey47</td>
+ <td align="center" style="background-color:rgb(120, 120, 120)">grey47</td>
+ <td align="left">rgb(120, 120, 120)</td>
+ <td align="left">#787878</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray46</td>
+ <td align="center" style="background-color:rgb(117, 117, 117)">gray46</td>
+ <td align="left">rgb(117, 117, 117)</td>
+ <td align="left">#757575</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey46</td>
+ <td align="center" style="background-color:rgb(117, 117, 117)">grey46</td>
+ <td align="left">rgb(117, 117, 117)</td>
+ <td align="left">#757575</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray45</td>
+ <td align="center" style="background-color:rgb(115, 115, 115)">gray45</td>
+ <td align="left">rgb(115, 115, 115)</td>
+ <td align="left">#737373</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey45</td>
+ <td align="center" style="background-color:rgb(115, 115, 115)">grey45</td>
+ <td align="left">rgb(115, 115, 115)</td>
+ <td align="left">#737373</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray44</td>
+ <td align="center" style="background-color:rgb(112, 112, 112)">gray44</td>
+ <td align="left">rgb(112, 112, 112)</td>
+ <td align="left">#707070</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey44</td>
+ <td align="center" style="background-color:rgb(112, 112, 112)">grey44</td>
+ <td align="left">rgb(112, 112, 112)</td>
+ <td align="left">#707070</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray43</td>
+ <td align="center" style="background-color:rgb(110, 110, 110)">gray43</td>
+ <td align="left">rgb(110, 110, 110)</td>
+ <td align="left">#6E6E6E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey43</td>
+ <td align="center" style="background-color:rgb(110, 110, 110)">grey43</td>
+ <td align="left">rgb(110, 110, 110)</td>
+ <td align="left">#6E6E6E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray42</td>
+ <td align="center" style="background-color:rgb(107, 107, 107)">gray42</td>
+ <td align="left">rgb(107, 107, 107)</td>
+ <td align="left">#6B6B6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey42</td>
+ <td align="center" style="background-color:rgb(107, 107, 107)">grey42</td>
+ <td align="left">rgb(107, 107, 107)</td>
+ <td align="left">#6B6B6B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DimGray</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">DimGray</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">DimGrey</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">DimGrey</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray41</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">gray41</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey41</td>
+ <td align="center" style="background-color:rgb(105, 105, 105)">grey41</td>
+ <td align="left">rgb(105, 105, 105)</td>
+ <td align="left">#696969</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray40</td>
+ <td align="center" style="background-color:rgb(102, 102, 102)">gray40</td>
+ <td align="left">rgb(102, 102, 102)</td>
+ <td align="left">#666666</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey40</td>
+ <td align="center" style="background-color:rgb(102, 102, 102)">grey40</td>
+ <td align="left">rgb(102, 102, 102)</td>
+ <td align="left">#666666</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray39</td>
+ <td align="center" style="background-color:rgb( 99, 99, 99)">gray39</td>
+ <td align="left">rgb( 99, 99, 99)</td>
+ <td align="left">#636363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey39</td>
+ <td align="center" style="background-color:rgb( 99, 99, 99)">grey39</td>
+ <td align="left">rgb( 99, 99, 99)</td>
+ <td align="left">#636363</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray38</td>
+ <td align="center" style="background-color:rgb( 97, 97, 97)">gray38</td>
+ <td align="left">rgb( 97, 97, 97)</td>
+ <td align="left">#616161</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey38</td>
+ <td align="center" style="background-color:rgb( 97, 97, 97)">grey38</td>
+ <td align="left">rgb( 97, 97, 97)</td>
+ <td align="left">#616161</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray37</td>
+ <td align="center" style="background-color:rgb( 94, 94, 94)">gray37</td>
+ <td align="left">rgb( 94, 94, 94)</td>
+ <td align="left">#5E5E5E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey37</td>
+ <td align="center" style="background-color:rgb( 94, 94, 94)">grey37</td>
+ <td align="left">rgb( 94, 94, 94)</td>
+ <td align="left">#5E5E5E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray36</td>
+ <td align="center" style="background-color:rgb( 92, 92, 92)">gray36</td>
+ <td align="left">rgb( 92, 92, 92)</td>
+ <td align="left">#5C5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey36</td>
+ <td align="center" style="background-color:rgb( 92, 92, 92)">grey36</td>
+ <td align="left">rgb( 92, 92, 92)</td>
+ <td align="left">#5C5C5C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray35</td>
+ <td align="center" style="background-color:rgb( 89, 89, 89)">gray35</td>
+ <td align="left">rgb( 89, 89, 89)</td>
+ <td align="left">#595959</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey35</td>
+ <td align="center" style="background-color:rgb( 89, 89, 89)">grey35</td>
+ <td align="left">rgb( 89, 89, 89)</td>
+ <td align="left">#595959</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray34</td>
+ <td align="center" style="background-color:rgb( 87, 87, 87)">gray34</td>
+ <td align="left">rgb( 87, 87, 87)</td>
+ <td align="left">#575757</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey34</td>
+ <td align="center" style="background-color:rgb( 87, 87, 87)">grey34</td>
+ <td align="left">rgb( 87, 87, 87)</td>
+ <td align="left">#575757</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray33</td>
+ <td align="center" style="background-color:rgb( 84, 84, 84)">gray33</td>
+ <td align="left">rgb( 84, 84, 84)</td>
+ <td align="left">#545454</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey33</td>
+ <td align="center" style="background-color:rgb( 84, 84, 84)">grey33</td>
+ <td align="left">rgb( 84, 84, 84)</td>
+ <td align="left">#545454</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray32</td>
+ <td align="center" style="background-color:rgb( 82, 82, 82)">gray32</td>
+ <td align="left">rgb( 82, 82, 82)</td>
+ <td align="left">#525252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey32</td>
+ <td align="center" style="background-color:rgb( 82, 82, 82)">grey32</td>
+ <td align="left">rgb( 82, 82, 82)</td>
+ <td align="left">#525252</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray31</td>
+ <td align="center" style="background-color:rgb( 79, 79, 79)">gray31</td>
+ <td align="left">rgb( 79, 79, 79)</td>
+ <td align="left">#4F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey31</td>
+ <td align="center" style="background-color:rgb( 79, 79, 79)">grey31</td>
+ <td align="left">rgb( 79, 79, 79)</td>
+ <td align="left">#4F4F4F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray30</td>
+ <td align="center" style="background-color:rgb( 77, 77, 77)">gray30</td>
+ <td align="left">rgb( 77, 77, 77)</td>
+ <td align="left">#4D4D4D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey30</td>
+ <td align="center" style="background-color:rgb( 77, 77, 77)">grey30</td>
+ <td align="left">rgb( 77, 77, 77)</td>
+ <td align="left">#4D4D4D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray29</td>
+ <td align="center" style="background-color:rgb( 74, 74, 74)">gray29</td>
+ <td align="left">rgb( 74, 74, 74)</td>
+ <td align="left">#4A4A4A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey29</td>
+ <td align="center" style="background-color:rgb( 74, 74, 74)">grey29</td>
+ <td align="left">rgb( 74, 74, 74)</td>
+ <td align="left">#4A4A4A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray28</td>
+ <td align="center" style="background-color:rgb( 71, 71, 71)">gray28</td>
+ <td align="left">rgb( 71, 71, 71)</td>
+ <td align="left">#474747</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey28</td>
+ <td align="center" style="background-color:rgb( 71, 71, 71)">grey28</td>
+ <td align="left">rgb( 71, 71, 71)</td>
+ <td align="left">#474747</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray27</td>
+ <td align="center" style="background-color:rgb( 69, 69, 69)">gray27</td>
+ <td align="left">rgb( 69, 69, 69)</td>
+ <td align="left">#454545</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey27</td>
+ <td align="center" style="background-color:rgb( 69, 69, 69)">grey27</td>
+ <td align="left">rgb( 69, 69, 69)</td>
+ <td align="left">#454545</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray26</td>
+ <td align="center" style="background-color:rgb( 66, 66, 66)">gray26</td>
+ <td align="left">rgb( 66, 66, 66)</td>
+ <td align="left">#424242</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey26</td>
+ <td align="center" style="background-color:rgb( 66, 66, 66)">grey26</td>
+ <td align="left">rgb( 66, 66, 66)</td>
+ <td align="left">#424242</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray25</td>
+ <td align="center" style="background-color:rgb( 64, 64, 64)">gray25</td>
+ <td align="left">rgb( 64, 64, 64)</td>
+ <td align="left">#404040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey25</td>
+ <td align="center" style="background-color:rgb( 64, 64, 64)">grey25</td>
+ <td align="left">rgb( 64, 64, 64)</td>
+ <td align="left">#404040</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray24</td>
+ <td align="center" style="background-color:rgb( 61, 61, 61)">gray24</td>
+ <td align="left">rgb( 61, 61, 61)</td>
+ <td align="left">#3D3D3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey24</td>
+ <td align="center" style="background-color:rgb( 61, 61, 61)">grey24</td>
+ <td align="left">rgb( 61, 61, 61)</td>
+ <td align="left">#3D3D3D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray23</td>
+ <td align="center" style="background-color:rgb( 59, 59, 59)">gray23</td>
+ <td align="left">rgb( 59, 59, 59)</td>
+ <td align="left">#3B3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey23</td>
+ <td align="center" style="background-color:rgb( 59, 59, 59)">grey23</td>
+ <td align="left">rgb( 59, 59, 59)</td>
+ <td align="left">#3B3B3B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray22</td>
+ <td align="center" style="background-color:rgb( 56, 56, 56)">gray22</td>
+ <td align="left">rgb( 56, 56, 56)</td>
+ <td align="left">#383838</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey22</td>
+ <td align="center" style="background-color:rgb( 56, 56, 56)">grey22</td>
+ <td align="left">rgb( 56, 56, 56)</td>
+ <td align="left">#383838</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray21</td>
+ <td align="center" style="background-color:rgb( 54, 54, 54)">gray21</td>
+ <td align="left">rgb( 54, 54, 54)</td>
+ <td align="left">#363636</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey21</td>
+ <td align="center" style="background-color:rgb( 54, 54, 54)">grey21</td>
+ <td align="left">rgb( 54, 54, 54)</td>
+ <td align="left">#363636</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray20</td>
+ <td align="center" style="background-color:rgb( 51, 51, 51)">gray20</td>
+ <td align="left">rgb( 51, 51, 51)</td>
+ <td align="left">#333333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey20</td>
+ <td align="center" style="background-color:rgb( 51, 51, 51)">grey20</td>
+ <td align="left">rgb( 51, 51, 51)</td>
+ <td align="left">#333333</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray19</td>
+ <td align="center" style="background-color:rgb( 48, 48, 48)">gray19</td>
+ <td align="left">rgb( 48, 48, 48)</td>
+ <td align="left">#303030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey19</td>
+ <td align="center" style="background-color:rgb( 48, 48, 48)">grey19</td>
+ <td align="left">rgb( 48, 48, 48)</td>
+ <td align="left">#303030</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray18</td>
+ <td align="center" style="background-color:rgb( 46, 46, 46)">gray18</td>
+ <td align="left">rgb( 46, 46, 46)</td>
+ <td align="left">#2E2E2E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey18</td>
+ <td align="center" style="background-color:rgb( 46, 46, 46)">grey18</td>
+ <td align="left">rgb( 46, 46, 46)</td>
+ <td align="left">#2E2E2E</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray17</td>
+ <td align="center" style="background-color:rgb( 43, 43, 43)">gray17</td>
+ <td align="left">rgb( 43, 43, 43)</td>
+ <td align="left">#2B2B2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey17</td>
+ <td align="center" style="background-color:rgb( 43, 43, 43)">grey17</td>
+ <td align="left">rgb( 43, 43, 43)</td>
+ <td align="left">#2B2B2B</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray16</td>
+ <td align="center" style="background-color:rgb( 41, 41, 41)">gray16</td>
+ <td align="left">rgb( 41, 41, 41)</td>
+ <td align="left">#292929</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey16</td>
+ <td align="center" style="background-color:rgb( 41, 41, 41)">grey16</td>
+ <td align="left">rgb( 41, 41, 41)</td>
+ <td align="left">#292929</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray15</td>
+ <td align="center" style="background-color:rgb( 38, 38, 38)">gray15</td>
+ <td align="left">rgb( 38, 38, 38)</td>
+ <td align="left">#262626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey15</td>
+ <td align="center" style="background-color:rgb( 38, 38, 38)">grey15</td>
+ <td align="left">rgb( 38, 38, 38)</td>
+ <td align="left">#262626</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray14</td>
+ <td align="center" style="background-color:rgb( 36, 36, 36)">gray14</td>
+ <td align="left">rgb( 36, 36, 36)</td>
+ <td align="left">#242424</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey14</td>
+ <td align="center" style="background-color:rgb( 36, 36, 36)">grey14</td>
+ <td align="left">rgb( 36, 36, 36)</td>
+ <td align="left">#242424</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray13</td>
+ <td align="center" style="background-color:rgb( 33, 33, 33)">gray13</td>
+ <td align="left">rgb( 33, 33, 33)</td>
+ <td align="left">#212121</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey13</td>
+ <td align="center" style="background-color:rgb( 33, 33, 33)">grey13</td>
+ <td align="left">rgb( 33, 33, 33)</td>
+ <td align="left">#212121</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray12</td>
+ <td align="center" style="background-color:rgb( 31, 31, 31)">gray12</td>
+ <td align="left">rgb( 31, 31, 31)</td>
+ <td align="left">#1F1F1F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey12</td>
+ <td align="center" style="background-color:rgb( 31, 31, 31)">grey12</td>
+ <td align="left">rgb( 31, 31, 31)</td>
+ <td align="left">#1F1F1F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray11</td>
+ <td align="center" style="background-color:rgb( 28, 28, 28)">gray11</td>
+ <td align="left">rgb( 28, 28, 28)</td>
+ <td align="left">#1C1C1C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey11</td>
+ <td align="center" style="background-color:rgb( 28, 28, 28)">grey11</td>
+ <td align="left">rgb( 28, 28, 28)</td>
+ <td align="left">#1C1C1C</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray10</td>
+ <td align="center" style="background-color:rgb( 26, 26, 26)">gray10</td>
+ <td align="left">rgb( 26, 26, 26)</td>
+ <td align="left">#1A1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey10</td>
+ <td align="center" style="background-color:rgb( 26, 26, 26)">grey10</td>
+ <td align="left">rgb( 26, 26, 26)</td>
+ <td align="left">#1A1A1A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray9</td>
+ <td align="center" style="background-color:rgb( 23, 23, 23)">gray9</td>
+ <td align="left">rgb( 23, 23, 23)</td>
+ <td align="left">#171717</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey9</td>
+ <td align="center" style="background-color:rgb( 23, 23, 23)">grey9</td>
+ <td align="left">rgb( 23, 23, 23)</td>
+ <td align="left">#171717</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray8</td>
+ <td align="center" style="background-color:rgb( 20, 20, 20)">gray8</td>
+ <td align="left">rgb( 20, 20, 20)</td>
+ <td align="left">#141414</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey8</td>
+ <td align="center" style="background-color:rgb( 20, 20, 20)">grey8</td>
+ <td align="left">rgb( 20, 20, 20)</td>
+ <td align="left">#141414</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray7</td>
+ <td align="center" style="background-color:rgb( 18, 18, 18)">gray7</td>
+ <td align="left">rgb( 18, 18, 18)</td>
+ <td align="left">#121212</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey7</td>
+ <td align="center" style="background-color:rgb( 18, 18, 18)">grey7</td>
+ <td align="left">rgb( 18, 18, 18)</td>
+ <td align="left">#121212</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray6</td>
+ <td align="center" style="background-color:rgb( 15, 15, 15)">gray6</td>
+ <td align="left">rgb( 15, 15, 15)</td>
+ <td align="left">#0F0F0F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey6</td>
+ <td align="center" style="background-color:rgb( 15, 15, 15)">grey6</td>
+ <td align="left">rgb( 15, 15, 15)</td>
+ <td align="left">#0F0F0F</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray5</td>
+ <td align="center" style="background-color:rgb( 13, 13, 13)">gray5</td>
+ <td align="left">rgb( 13, 13, 13)</td>
+ <td align="left">#0D0D0D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey5</td>
+ <td align="center" style="background-color:rgb( 13, 13, 13)">grey5</td>
+ <td align="left">rgb( 13, 13, 13)</td>
+ <td align="left">#0D0D0D</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray4</td>
+ <td align="center" style="background-color:rgb( 10, 10, 10)">gray4</td>
+ <td align="left">rgb( 10, 10, 10)</td>
+ <td align="left">#0A0A0A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey4</td>
+ <td align="center" style="background-color:rgb( 10, 10, 10)">grey4</td>
+ <td align="left">rgb( 10, 10, 10)</td>
+ <td align="left">#0A0A0A</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray3</td>
+ <td align="center" style="background-color:rgb( 8, 8, 8)">gray3</td>
+ <td align="left">rgb( 8, 8, 8)</td>
+ <td align="left">#080808</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey3</td>
+ <td align="center" style="background-color:rgb( 8, 8, 8)">grey3</td>
+ <td align="left">rgb( 8, 8, 8)</td>
+ <td align="left">#080808</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray2</td>
+ <td align="center" style="background-color:rgb( 5, 5, 5)">gray2</td>
+ <td align="left">rgb( 5, 5, 5)</td>
+ <td align="left">#050505</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey2</td>
+ <td align="center" style="background-color:rgb( 5, 5, 5)">grey2</td>
+ <td align="left">rgb( 5, 5, 5)</td>
+ <td align="left">#050505</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray1</td>
+ <td align="center" style="background-color:rgb( 3, 3, 3)">gray1</td>
+ <td align="left">rgb( 3, 3, 3)</td>
+ <td align="left">#030303</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey1</td>
+ <td align="center" style="background-color:rgb( 3, 3, 3)">grey1</td>
+ <td align="left">rgb( 3, 3, 3)</td>
+ <td align="left">#030303</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">black</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">black</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">gray0</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">gray0</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">grey0</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">grey0</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">opaque</td>
+ <td align="center" style="background-color:rgb( 0, 0, 0)">opaque</td>
+ <td align="left">rgb( 0, 0, 0)</td>
+ <td align="left">#000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">none</td>
+ <td align="center" style="background-color:white">none</td>
+ <td align="left">rgba( 0, 0, 0, 0.0)</td>
+ <td align="left">#00000000</td>
+
+ </tr>
+
+ <tr>
+ <td align="right">transparent</td>
+ <td align="center" style="background-color:white">transparent</td>
+ <td align="left">rgba( 0, 0, 0, 0.0)</td>
+ <td align="left">#00000000</td>
+
+ </tr>
+
+ </tbody>
+</table>
+
+</div>
+
+</div>
+
+</body></html>
diff --git a/frontend/imgrid/colors/junk/colorsbest.html b/frontend/imgrid/colors/junk/colorsbest.html
new file mode 100755
index 0000000..047eb6b
--- /dev/null
+++ b/frontend/imgrid/colors/junk/colorsbest.html
@@ -0,0 +1,3606 @@
+<html>
+<head>
+
+<style type='text/css'>
+
+body
+{
+max-width:100%;
+max-height:100%;
+font-family:helvetica;
+font-size:10px;
+}
+
+
+#container div
+{
+display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+min-height: 30px;
+zoom: 1;
+*display: inline;
+cursor:pointer;
+}
+
+#container
+{
+margin:0 auto;
+width:600px;
+padding-top:100px;
+text-align:center;
+}
+
+#colornames
+{
+color:white;
+position:fixed;
+font-size:50px;
+top:50px;
+right:60%;
+width:400px;
+}
+
+#hexswitch
+ {
+ position:fixed;
+ top:20px;
+ right:10%;
+ height:100px;
+ width:300px;
+ font-size:20px
+ border-style: groove;
+ border-width: 4px;
+ background-color:goldenrod;
+ text-align:center;
+ }
+#infoswitch
+ {
+ position:fixed;
+ top: 60px;
+ right:50%;
+ font-size:20px;
+ background-color:magenta;
+ text-align:center;
+ z-index:100;
+ }
+
+#namespace
+ {
+ position:fixed;
+ top:500px;
+ right:20px;
+ }
+
+
+
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{
+height:30px;
+width:10px;
+}
+</style></head><body>
+<div id='container'>
+<div id='d0' class='colors'>
+snow</div>
+<div id='d1' class='colors'>
+snow1</div>
+<div id='d2' class='colors'>
+snow2</div>
+<div id='d3' class='colors'>
+RosyBrown1</div>
+<div id='d4' class='colors'>
+RosyBrown2</div>
+<div id='d5' class='colors'>
+snow3</div>
+<div id='d6' class='colors'>
+LightCoral</div>
+<div id='d7' class='colors'>
+IndianRed1</div>
+<div id='d8' class='colors'>
+RosyBrown3</div>
+<div id='d9' class='colors'>
+IndianRed2</div>
+<div id='d10' class='colors'>
+RosyBrown</div>
+<div id='d11' class='colors'>
+brown1</div>
+<div id='d12' class='colors'>
+firebrick1</div>
+<div id='d13' class='colors'>
+brown2</div>
+<div id='d14' class='colors'>
+IndianRed</div>
+<div id='d15' class='colors'>
+IndianRed3</div>
+<div id='d16' class='colors'>
+firebrick2</div>
+<div id='d17' class='colors'>
+snow4</div>
+<div id='d18' class='colors'>
+brown3</div>
+<div id='d19' class='colors'>
+red</div>
+<div id='d20' class='colors'>
+red1</div>
+<div id='d21' class='colors'>
+RosyBrown4</div>
+<div id='d22' class='colors'>
+firebrick3</div>
+<div id='d23' class='colors'>
+red2</div>
+<div id='d24' class='colors'>
+firebrick</div>
+<div id='d25' class='colors'>
+brown</div>
+<div id='d26' class='colors'>
+red3</div>
+<div id='d27' class='colors'>
+IndianRed4</div>
+<div id='d28' class='colors'>
+brown4</div>
+<div id='d29' class='colors'>
+firebrick4</div>
+<div id='d30' class='colors'>
+DarkRed</div>
+<div id='d31' class='colors'>
+red4</div>
+<div id='d32' class='colors'>
+maroon</div>
+<div id='d33' class='colors'>
+LightPink1</div>
+<div id='d34' class='colors'>
+LightPink3</div>
+<div id='d35' class='colors'>
+LightPink4</div>
+<div id='d36' class='colors'>
+LightPink2</div>
+<div id='d37' class='colors'>
+LightPink</div>
+<div id='d38' class='colors'>
+pink</div>
+<div id='d39' class='colors'>
+crimson</div>
+<div id='d40' class='colors'>
+pink1</div>
+<div id='d41' class='colors'>
+pink2</div>
+<div id='d42' class='colors'>
+pink3</div>
+<div id='d43' class='colors'>
+pink4</div>
+<div id='d44' class='colors'>
+PaleVioletRed4</div>
+<div id='d45' class='colors'>
+PaleVioletRed</div>
+<div id='d46' class='colors'>
+PaleVioletRed2</div>
+<div id='d47' class='colors'>
+PaleVioletRed1</div>
+<div id='d48' class='colors'>
+PaleVioletRed3</div>
+<div id='d49' class='colors'>
+LavenderBlush</div>
+<div id='d50' class='colors'>
+LavenderBlush1</div>
+<div id='d51' class='colors'>
+LavenderBlush3</div>
+<div id='d52' class='colors'>
+LavenderBlush2</div>
+<div id='d53' class='colors'>
+LavenderBlush4</div>
+<div id='d54' class='colors'>
+maroon</div>
+<div id='d55' class='colors'>
+HotPink3</div>
+<div id='d56' class='colors'>
+VioletRed3</div>
+<div id='d57' class='colors'>
+VioletRed1</div>
+<div id='d58' class='colors'>
+VioletRed2</div>
+<div id='d59' class='colors'>
+VioletRed4</div>
+<div id='d60' class='colors'>
+HotPink2</div>
+<div id='d61' class='colors'>
+HotPink1</div>
+<div id='d62' class='colors'>
+HotPink4</div>
+<div id='d63' class='colors'>
+HotPink</div>
+<div id='d64' class='colors'>
+DeepPink</div>
+<div id='d65' class='colors'>
+DeepPink1</div>
+<div id='d66' class='colors'>
+DeepPink2</div>
+<div id='d67' class='colors'>
+DeepPink3</div>
+<div id='d68' class='colors'>
+DeepPink4</div>
+<div id='d69' class='colors'>
+maroon1</div>
+<div id='d70' class='colors'>
+maroon2</div>
+<div id='d71' class='colors'>
+maroon3</div>
+<div id='d72' class='colors'>
+maroon4</div>
+<div id='d73' class='colors'>
+MediumVioletRed</div>
+<div id='d74' class='colors'>
+VioletRed</div>
+<div id='d75' class='colors'>
+orchid2</div>
+<div id='d76' class='colors'>
+orchid</div>
+<div id='d77' class='colors'>
+orchid1</div>
+<div id='d78' class='colors'>
+orchid3</div>
+<div id='d79' class='colors'>
+orchid4</div>
+<div id='d80' class='colors'>
+thistle1</div>
+<div id='d81' class='colors'>
+thistle2</div>
+<div id='d82' class='colors'>
+plum1</div>
+<div id='d83' class='colors'>
+plum2</div>
+<div id='d84' class='colors'>
+thistle</div>
+<div id='d85' class='colors'>
+thistle3</div>
+<div id='d86' class='colors'>
+plum</div>
+<div id='d87' class='colors'>
+violet</div>
+<div id='d88' class='colors'>
+plum3</div>
+<div id='d89' class='colors'>
+thistle4</div>
+<div id='d90' class='colors'>
+fuchsia</div>
+<div id='d91' class='colors'>
+magenta</div>
+<div id='d92' class='colors'>
+magenta1</div>
+<div id='d93' class='colors'>
+plum4</div>
+<div id='d94' class='colors'>
+magenta2</div>
+<div id='d95' class='colors'>
+magenta3</div>
+<div id='d96' class='colors'>
+DarkMagenta</div>
+<div id='d97' class='colors'>
+magenta4</div>
+<div id='d98' class='colors'>
+purple</div>
+<div id='d99' class='colors'>
+MediumOrchid</div>
+<div id='d100' class='colors'>
+MediumOrchid1</div>
+<div id='d101' class='colors'>
+MediumOrchid2</div>
+<div id='d102' class='colors'>
+MediumOrchid3</div>
+<div id='d103' class='colors'>
+MediumOrchid4</div>
+<div id='d104' class='colors'>
+DarkViolet</div>
+<div id='d105' class='colors'>
+DarkOrchid</div>
+<div id='d106' class='colors'>
+DarkOrchid1</div>
+<div id='d107' class='colors'>
+DarkOrchid3</div>
+<div id='d108' class='colors'>
+DarkOrchid2</div>
+<div id='d109' class='colors'>
+DarkOrchid4</div>
+<div id='d110' class='colors'>
+purple</div>
+<div id='d111' class='colors'>
+indigo</div>
+<div id='d112' class='colors'>
+BlueViolet</div>
+<div id='d113' class='colors'>
+purple2</div>
+<div id='d114' class='colors'>
+purple3</div>
+<div id='d115' class='colors'>
+purple4</div>
+<div id='d116' class='colors'>
+purple1</div>
+<div id='d117' class='colors'>
+MediumPurple</div>
+<div id='d118' class='colors'>
+MediumPurple1</div>
+<div id='d119' class='colors'>
+MediumPurple2</div>
+<div id='d120' class='colors'>
+MediumPurple3</div>
+<div id='d121' class='colors'>
+MediumPurple4</div>
+<div id='d122' class='colors'>
+DarkSlateBlue</div>
+<div id='d123' class='colors'>
+LightSlateBlue</div>
+<div id='d124' class='colors'>
+MediumSlateBlue</div>
+<div id='d125' class='colors'>
+SlateBlue</div>
+<div id='d126' class='colors'>
+SlateBlue1</div>
+<div id='d127' class='colors'>
+SlateBlue2</div>
+<div id='d128' class='colors'>
+SlateBlue3</div>
+<div id='d129' class='colors'>
+SlateBlue4</div>
+<div id='d130' class='colors'>
+GhostWhite</div>
+<div id='d131' class='colors'>
+lavender</div>
+<div id='d132' class='colors'>
+blue</div>
+<div id='d133' class='colors'>
+blue1</div>
+<div id='d134' class='colors'>
+blue2</div>
+<div id='d135' class='colors'>
+blue3</div>
+<div id='d136' class='colors'>
+MediumBlue</div>
+<div id='d137' class='colors'>
+blue4</div>
+<div id='d138' class='colors'>
+DarkBlue</div>
+<div id='d139' class='colors'>
+MidnightBlue</div>
+<div id='d140' class='colors'>
+navy</div>
+<div id='d141' class='colors'>
+NavyBlue</div>
+<div id='d142' class='colors'>
+RoyalBlue</div>
+<div id='d143' class='colors'>
+RoyalBlue1</div>
+<div id='d144' class='colors'>
+RoyalBlue2</div>
+<div id='d145' class='colors'>
+RoyalBlue3</div>
+<div id='d146' class='colors'>
+RoyalBlue4</div>
+<div id='d147' class='colors'>
+CornflowerBlue</div>
+<div id='d148' class='colors'>
+LightSteelBlue</div>
+<div id='d149' class='colors'>
+LightSteelBlue1</div>
+<div id='d150' class='colors'>
+LightSteelBlue2</div>
+<div id='d151' class='colors'>
+LightSteelBlue3</div>
+<div id='d152' class='colors'>
+LightSteelBlue4</div>
+<div id='d153' class='colors'>
+SlateGray4</div>
+<div id='d154' class='colors'>
+SlateGray1</div>
+<div id='d155' class='colors'>
+SlateGray2</div>
+<div id='d156' class='colors'>
+SlateGray3</div>
+<div id='d157' class='colors'>
+LightSlateGray</div>
+<div id='d158' class='colors'>
+LightSlateGrey</div>
+<div id='d159' class='colors'>
+SlateGray</div>
+<div id='d160' class='colors'>
+SlateGrey</div>
+<div id='d161' class='colors'>
+DodgerBlue</div>
+<div id='d162' class='colors'>
+DodgerBlue1</div>
+<div id='d163' class='colors'>
+DodgerBlue2</div>
+<div id='d164' class='colors'>
+DodgerBlue4</div>
+<div id='d165' class='colors'>
+DodgerBlue3</div>
+<div id='d166' class='colors'>
+AliceBlue</div>
+<div id='d167' class='colors'>
+SteelBlue4</div>
+<div id='d168' class='colors'>
+SteelBlue</div>
+<div id='d169' class='colors'>
+SteelBlue1</div>
+<div id='d170' class='colors'>
+SteelBlue2</div>
+<div id='d171' class='colors'>
+SteelBlue3</div>
+<div id='d172' class='colors'>
+SkyBlue4</div>
+<div id='d173' class='colors'>
+SkyBlue1</div>
+<div id='d174' class='colors'>
+SkyBlue2</div>
+<div id='d175' class='colors'>
+SkyBlue3</div>
+<div id='d176' class='colors'>
+LightSkyBlue</div>
+<div id='d177' class='colors'>
+LightSkyBlue4</div>
+<div id='d178' class='colors'>
+LightSkyBlue1</div>
+<div id='d179' class='colors'>
+LightSkyBlue2</div>
+<div id='d180' class='colors'>
+LightSkyBlue3</div>
+<div id='d181' class='colors'>
+SkyBlue</div>
+<div id='d182' class='colors'>
+LightBlue3</div>
+<div id='d183' class='colors'>
+DeepSkyBlue</div>
+<div id='d184' class='colors'>
+DeepSkyBlue1</div>
+<div id='d185' class='colors'>
+DeepSkyBlue2</div>
+<div id='d186' class='colors'>
+DeepSkyBlue4</div>
+<div id='d187' class='colors'>
+DeepSkyBlue3</div>
+<div id='d188' class='colors'>
+LightBlue1</div>
+<div id='d189' class='colors'>
+LightBlue2</div>
+<div id='d190' class='colors'>
+LightBlue</div>
+<div id='d191' class='colors'>
+LightBlue4</div>
+<div id='d192' class='colors'>
+PowderBlue</div>
+<div id='d193' class='colors'>
+CadetBlue1</div>
+<div id='d194' class='colors'>
+CadetBlue2</div>
+<div id='d195' class='colors'>
+CadetBlue3</div>
+<div id='d196' class='colors'>
+CadetBlue4</div>
+<div id='d197' class='colors'>
+turquoise1</div>
+<div id='d198' class='colors'>
+turquoise2</div>
+<div id='d199' class='colors'>
+turquoise3</div>
+<div id='d200' class='colors'>
+turquoise4</div>
+<div id='d201' class='colors'>
+cadet blue</div>
+<div id='d202' class='colors'>
+CadetBlue</div>
+<div id='d203' class='colors'>
+DarkTurquoise</div>
+<div id='d204' class='colors'>
+azure</div>
+<div id='d205' class='colors'>
+azure1</div>
+<div id='d206' class='colors'>
+LightCyan</div>
+<div id='d207' class='colors'>
+LightCyan1</div>
+<div id='d208' class='colors'>
+azure2</div>
+<div id='d209' class='colors'>
+LightCyan2</div>
+<div id='d210' class='colors'>
+PaleTurquoise1</div>
+<div id='d211' class='colors'>
+PaleTurquoise</div>
+<div id='d212' class='colors'>
+PaleTurquoise2</div>
+<div id='d213' class='colors'>
+DarkSlateGray1</div>
+<div id='d214' class='colors'>
+azure3</div>
+<div id='d215' class='colors'>
+LightCyan3</div>
+<div id='d216' class='colors'>
+DarkSlateGray2</div>
+<div id='d217' class='colors'>
+PaleTurquoise3</div>
+<div id='d218' class='colors'>
+DarkSlateGray3</div>
+<div id='d219' class='colors'>
+azure4</div>
+<div id='d220' class='colors'>
+LightCyan4</div>
+<div id='d221' class='colors'>
+aqua</div>
+<div id='d222' class='colors'>
+cyan</div>
+<div id='d223' class='colors'>
+cyan1</div>
+<div id='d224' class='colors'>
+PaleTurquoise4</div>
+<div id='d225' class='colors'>
+cyan2</div>
+<div id='d226' class='colors'>
+DarkSlateGray4</div>
+<div id='d227' class='colors'>
+cyan3</div>
+<div id='d228' class='colors'>
+cyan4</div>
+<div id='d229' class='colors'>
+DarkCyan</div>
+<div id='d230' class='colors'>
+teal</div>
+<div id='d231' class='colors'>
+DarkSlateGray</div>
+<div id='d232' class='colors'>
+DarkSlateGrey</div>
+<div id='d233' class='colors'>
+MediumTurquoise</div>
+<div id='d234' class='colors'>
+LightSeaGreen</div>
+<div id='d235' class='colors'>
+turquoise</div>
+<div id='d236' class='colors'>
+aquamarine4</div>
+<div id='d237' class='colors'>
+aquamarine</div>
+<div id='d238' class='colors'>
+aquamarine1</div>
+<div id='d239' class='colors'>
+aquamarine2</div>
+<div id='d240' class='colors'>
+aquamarine3</div>
+<div id='d241' class='colors'>
+MediumAquamarine</div>
+<div id='d242' class='colors'>
+MediumSpringGreen</div>
+<div id='d243' class='colors'>
+MintCream</div>
+<div id='d244' class='colors'>
+SpringGreen</div>
+<div id='d245' class='colors'>
+SpringGreen1</div>
+<div id='d246' class='colors'>
+SpringGreen2</div>
+<div id='d247' class='colors'>
+SpringGreen3</div>
+<div id='d248' class='colors'>
+SpringGreen4</div>
+<div id='d249' class='colors'>
+MediumSeaGreen</div>
+<div id='d250' class='colors'>
+SeaGreen</div>
+<div id='d251' class='colors'>
+SeaGreen3</div>
+<div id='d252' class='colors'>
+SeaGreen1</div>
+<div id='d253' class='colors'>
+SeaGreen4</div>
+<div id='d254' class='colors'>
+SeaGreen2</div>
+<div id='d255' class='colors'>
+MediumForestGreen</div>
+<div id='d256' class='colors'>
+honeydew</div>
+<div id='d257' class='colors'>
+honeydew1</div>
+<div id='d258' class='colors'>
+honeydew2</div>
+<div id='d259' class='colors'>
+DarkSeaGreen1</div>
+<div id='d260' class='colors'>
+DarkSeaGreen2</div>
+<div id='d261' class='colors'>
+PaleGreen1</div>
+<div id='d262' class='colors'>
+PaleGreen</div>
+<div id='d263' class='colors'>
+honeydew3</div>
+<div id='d264' class='colors'>
+LightGreen</div>
+<div id='d265' class='colors'>
+PaleGreen2</div>
+<div id='d266' class='colors'>
+DarkSeaGreen3</div>
+<div id='d267' class='colors'>
+DarkSeaGreen</div>
+<div id='d268' class='colors'>
+PaleGreen3</div>
+<div id='d269' class='colors'>
+honeydew4</div>
+<div id='d270' class='colors'>
+green1</div>
+<div id='d271' class='colors'>
+lime</div>
+<div id='d272' class='colors'>
+LimeGreen</div>
+<div id='d273' class='colors'>
+DarkSeaGreen4</div>
+<div id='d274' class='colors'>
+green2</div>
+<div id='d275' class='colors'>
+PaleGreen4</div>
+<div id='d276' class='colors'>
+green3</div>
+<div id='d277' class='colors'>
+ForestGreen</div>
+<div id='d278' class='colors'>
+green4</div>
+<div id='d279' class='colors'>
+green</div>
+<div id='d280' class='colors'>
+DarkGreen</div>
+<div id='d281' class='colors'>
+LawnGreen</div>
+<div id='d282' class='colors'>
+chartreuse</div>
+<div id='d283' class='colors'>
+chartreuse1</div>
+<div id='d284' class='colors'>
+chartreuse2</div>
+<div id='d285' class='colors'>
+chartreuse3</div>
+<div id='d286' class='colors'>
+chartreuse4</div>
+<div id='d287' class='colors'>
+GreenYellow</div>
+<div id='d288' class='colors'>
+DarkOliveGreen3</div>
+<div id='d289' class='colors'>
+DarkOliveGreen1</div>
+<div id='d290' class='colors'>
+DarkOliveGreen2</div>
+<div id='d291' class='colors'>
+DarkOliveGreen4</div>
+<div id='d292' class='colors'>
+DarkOliveGreen</div>
+<div id='d293' class='colors'>
+OliveDrab</div>
+<div id='d294' class='colors'>
+OliveDrab1</div>
+<div id='d295' class='colors'>
+OliveDrab2</div>
+<div id='d296' class='colors'>
+OliveDrab3</div>
+<div id='d297' class='colors'>
+YellowGreen</div>
+<div id='d298' class='colors'>
+OliveDrab4</div>
+<div id='d299' class='colors'>
+ivory</div>
+<div id='d300' class='colors'>
+ivory1</div>
+<div id='d301' class='colors'>
+LightYellow</div>
+<div id='d302' class='colors'>
+LightYellow1</div>
+<div id='d303' class='colors'>
+beige</div>
+<div id='d304' class='colors'>
+ivory2</div>
+<div id='d305' class='colors'>
+LightGoldenrodYellow</div>
+<div id='d306' class='colors'>
+LightYellow2</div>
+<div id='d307' class='colors'>
+ivory3</div>
+<div id='d308' class='colors'>
+LightYellow3</div>
+<div id='d309' class='colors'>
+ivory4</div>
+<div id='d310' class='colors'>
+LightYellow4</div>
+<div id='d311' class='colors'>
+yellow</div>
+<div id='d312' class='colors'>
+yellow1</div>
+<div id='d313' class='colors'>
+yellow2</div>
+<div id='d314' class='colors'>
+yellow3</div>
+<div id='d315' class='colors'>
+yellow4</div>
+<div id='d316' class='colors'>
+olive</div>
+<div id='d317' class='colors'>
+DarkKhaki</div>
+<div id='d318' class='colors'>
+khaki2</div>
+<div id='d319' class='colors'>
+LemonChiffon4</div>
+<div id='d320' class='colors'>
+khaki1</div>
+<div id='d321' class='colors'>
+khaki3</div>
+<div id='d322' class='colors'>
+khaki4</div>
+<div id='d323' class='colors'>
+PaleGoldenrod</div>
+<div id='d324' class='colors'>
+LemonChiffon</div>
+<div id='d325' class='colors'>
+LemonChiffon1</div>
+<div id='d326' class='colors'>
+khaki</div>
+<div id='d327' class='colors'>
+LemonChiffon3</div>
+<div id='d328' class='colors'>
+LemonChiffon2</div>
+<div id='d329' class='colors'>
+MediumGoldenRod</div>
+<div id='d330' class='colors'>
+cornsilk4</div>
+<div id='d331' class='colors'>
+gold</div>
+<div id='d332' class='colors'>
+gold1</div>
+<div id='d333' class='colors'>
+gold2</div>
+<div id='d334' class='colors'>
+gold3</div>
+<div id='d335' class='colors'>
+gold4</div>
+<div id='d336' class='colors'>
+LightGoldenrod</div>
+<div id='d337' class='colors'>
+LightGoldenrod4</div>
+<div id='d338' class='colors'>
+LightGoldenrod1</div>
+<div id='d339' class='colors'>
+LightGoldenrod3</div>
+<div id='d340' class='colors'>
+LightGoldenrod2</div>
+<div id='d341' class='colors'>
+cornsilk3</div>
+<div id='d342' class='colors'>
+cornsilk2</div>
+<div id='d343' class='colors'>
+cornsilk</div>
+<div id='d344' class='colors'>
+cornsilk1</div>
+<div id='d345' class='colors'>
+goldenrod</div>
+<div id='d346' class='colors'>
+goldenrod1</div>
+<div id='d347' class='colors'>
+goldenrod2</div>
+<div id='d348' class='colors'>
+goldenrod3</div>
+<div id='d349' class='colors'>
+goldenrod4</div>
+<div id='d350' class='colors'>
+DarkGoldenrod</div>
+<div id='d351' class='colors'>
+DarkGoldenrod1</div>
+<div id='d352' class='colors'>
+DarkGoldenrod2</div>
+<div id='d353' class='colors'>
+DarkGoldenrod3</div>
+<div id='d354' class='colors'>
+DarkGoldenrod4</div>
+<div id='d355' class='colors'>
+FloralWhite</div>
+<div id='d356' class='colors'>
+wheat2</div>
+<div id='d357' class='colors'>
+OldLace</div>
+<div id='d358' class='colors'>
+wheat</div>
+<div id='d359' class='colors'>
+wheat1</div>
+<div id='d360' class='colors'>
+wheat3</div>
+<div id='d361' class='colors'>
+orange</div>
+<div id='d362' class='colors'>
+orange1</div>
+<div id='d363' class='colors'>
+orange2</div>
+<div id='d364' class='colors'>
+orange3</div>
+<div id='d365' class='colors'>
+orange4</div>
+<div id='d366' class='colors'>
+wheat4</div>
+<div id='d367' class='colors'>
+moccasin</div>
+<div id='d368' class='colors'>
+PapayaWhip</div>
+<div id='d369' class='colors'>
+NavajoWhite3</div>
+<div id='d370' class='colors'>
+BlanchedAlmond</div>
+<div id='d371' class='colors'>
+NavajoWhite</div>
+<div id='d372' class='colors'>
+NavajoWhite1</div>
+<div id='d373' class='colors'>
+NavajoWhite2</div>
+<div id='d374' class='colors'>
+NavajoWhite4</div>
+<div id='d375' class='colors'>
+AntiqueWhite4</div>
+<div id='d376' class='colors'>
+AntiqueWhite</div>
+<div id='d377' class='colors'>
+tan</div>
+<div id='d378' class='colors'>
+bisque4</div>
+<div id='d379' class='colors'>
+burlywood</div>
+<div id='d380' class='colors'>
+AntiqueWhite2</div>
+<div id='d381' class='colors'>
+burlywood1</div>
+<div id='d382' class='colors'>
+burlywood3</div>
+<div id='d383' class='colors'>
+burlywood2</div>
+<div id='d384' class='colors'>
+AntiqueWhite1</div>
+<div id='d385' class='colors'>
+burlywood4</div>
+<div id='d386' class='colors'>
+AntiqueWhite3</div>
+<div id='d387' class='colors'>
+DarkOrange</div>
+<div id='d388' class='colors'>
+bisque2</div>
+<div id='d389' class='colors'>
+bisque</div>
+<div id='d390' class='colors'>
+bisque1</div>
+<div id='d391' class='colors'>
+bisque3</div>
+<div id='d392' class='colors'>
+DarkOrange1</div>
+<div id='d393' class='colors'>
+linen</div>
+<div id='d394' class='colors'>
+DarkOrange2</div>
+<div id='d395' class='colors'>
+DarkOrange3</div>
+<div id='d396' class='colors'>
+DarkOrange4</div>
+<div id='d397' class='colors'>
+peru</div>
+<div id='d398' class='colors'>
+tan1</div>
+<div id='d399' class='colors'>
+tan2</div>
+<div id='d400' class='colors'>
+tan3</div>
+<div id='d401' class='colors'>
+tan4</div>
+<div id='d402' class='colors'>
+PeachPuff</div>
+<div id='d403' class='colors'>
+PeachPuff1</div>
+<div id='d404' class='colors'>
+PeachPuff4</div>
+<div id='d405' class='colors'>
+PeachPuff2</div>
+<div id='d406' class='colors'>
+PeachPuff3</div>
+<div id='d407' class='colors'>
+SandyBrown</div>
+<div id='d408' class='colors'>
+seashell4</div>
+<div id='d409' class='colors'>
+seashell2</div>
+<div id='d410' class='colors'>
+seashell3</div>
+<div id='d411' class='colors'>
+chocolate</div>
+<div id='d412' class='colors'>
+chocolate1</div>
+<div id='d413' class='colors'>
+chocolate2</div>
+<div id='d414' class='colors'>
+chocolate3</div>
+<div id='d415' class='colors'>
+chocolate4</div>
+<div id='d416' class='colors'>
+SaddleBrown</div>
+<div id='d417' class='colors'>
+seashell</div>
+<div id='d418' class='colors'>
+seashell1</div>
+<div id='d419' class='colors'>
+sienna4</div>
+<div id='d420' class='colors'>
+sienna</div>
+<div id='d421' class='colors'>
+sienna1</div>
+<div id='d422' class='colors'>
+sienna2</div>
+<div id='d423' class='colors'>
+sienna3</div>
+<div id='d424' class='colors'>
+LightSalmon3</div>
+<div id='d425' class='colors'>
+LightSalmon</div>
+<div id='d426' class='colors'>
+LightSalmon1</div>
+<div id='d427' class='colors'>
+LightSalmon4</div>
+<div id='d428' class='colors'>
+LightSalmon2</div>
+<div id='d429' class='colors'>
+coral</div>
+<div id='d430' class='colors'>
+OrangeRed</div>
+<div id='d431' class='colors'>
+OrangeRed1</div>
+<div id='d432' class='colors'>
+OrangeRed2</div>
+<div id='d433' class='colors'>
+OrangeRed3</div>
+<div id='d434' class='colors'>
+OrangeRed4</div>
+<div id='d435' class='colors'>
+DarkSalmon</div>
+<div id='d436' class='colors'>
+salmon1</div>
+<div id='d437' class='colors'>
+salmon2</div>
+<div id='d438' class='colors'>
+salmon3</div>
+<div id='d439' class='colors'>
+salmon4</div>
+<div id='d440' class='colors'>
+coral1</div>
+<div id='d441' class='colors'>
+coral2</div>
+<div id='d442' class='colors'>
+coral3</div>
+<div id='d443' class='colors'>
+coral4</div>
+<div id='d444' class='colors'>
+tomato4</div>
+<div id='d445' class='colors'>
+tomato</div>
+<div id='d446' class='colors'>
+tomato1</div>
+<div id='d447' class='colors'>
+tomato2</div>
+<div id='d448' class='colors'>
+tomato3</div>
+<div id='d449' class='colors'>
+MistyRose4</div>
+<div id='d450' class='colors'>
+MistyRose2</div>
+<div id='d451' class='colors'>
+MistyRose</div>
+<div id='d452' class='colors'>
+MistyRose1</div>
+<div id='d453' class='colors'>
+salmon</div>
+<div id='d454' class='colors'>
+MistyRose3</div>
+<div id='d455' class='colors'>
+white</div>
+<div id='d456' class='colors'>
+gray100</div>
+<div id='d457' class='colors'>
+grey100</div>
+<div id='d458' class='colors'>
+grey100</div>
+<div id='d459' class='colors'>
+gray99</div>
+<div id='d460' class='colors'>
+grey99</div>
+<div id='d461' class='colors'>
+gray98</div>
+<div id='d462' class='colors'>
+grey98</div>
+<div id='d463' class='colors'>
+gray97</div>
+<div id='d464' class='colors'>
+grey97</div>
+<div id='d465' class='colors'>
+gray96</div>
+<div id='d466' class='colors'>
+grey96</div>
+<div id='d467' class='colors'>
+WhiteSmoke</div>
+<div id='d468' class='colors'>
+gray95</div>
+<div id='d469' class='colors'>
+grey95</div>
+<div id='d470' class='colors'>
+gray94</div>
+<div id='d471' class='colors'>
+grey94</div>
+<div id='d472' class='colors'>
+gray93</div>
+<div id='d473' class='colors'>
+grey93</div>
+<div id='d474' class='colors'>
+gray92</div>
+<div id='d475' class='colors'>
+grey92</div>
+<div id='d476' class='colors'>
+gray91</div>
+<div id='d477' class='colors'>
+grey91</div>
+<div id='d478' class='colors'>
+gray90</div>
+<div id='d479' class='colors'>
+grey90</div>
+<div id='d480' class='colors'>
+gray89</div>
+<div id='d481' class='colors'>
+grey89</div>
+<div id='d482' class='colors'>
+gray88</div>
+<div id='d483' class='colors'>
+grey88</div>
+<div id='d484' class='colors'>
+gray87</div>
+<div id='d485' class='colors'>
+grey87</div>
+<div id='d486' class='colors'>
+gainsboro</div>
+<div id='d487' class='colors'>
+gray86</div>
+<div id='d488' class='colors'>
+grey86</div>
+<div id='d489' class='colors'>
+gray85</div>
+<div id='d490' class='colors'>
+grey85</div>
+<div id='d491' class='colors'>
+gray84</div>
+<div id='d492' class='colors'>
+grey84</div>
+<div id='d493' class='colors'>
+gray83</div>
+<div id='d494' class='colors'>
+grey83</div>
+<div id='d495' class='colors'>
+LightGray</div>
+<div id='d496' class='colors'>
+LightGrey</div>
+<div id='d497' class='colors'>
+gray82</div>
+<div id='d498' class='colors'>
+grey82</div>
+<div id='d499' class='colors'>
+gray81</div>
+<div id='d500' class='colors'>
+grey81</div>
+<div id='d501' class='colors'>
+gray80</div>
+<div id='d502' class='colors'>
+grey80</div>
+<div id='d503' class='colors'>
+gray79</div>
+<div id='d504' class='colors'>
+grey79</div>
+<div id='d505' class='colors'>
+gray78</div>
+<div id='d506' class='colors'>
+grey78</div>
+<div id='d507' class='colors'>
+gray77</div>
+<div id='d508' class='colors'>
+grey77</div>
+<div id='d509' class='colors'>
+gray76</div>
+<div id='d510' class='colors'>
+grey76</div>
+<div id='d511' class='colors'>
+silver</div>
+<div id='d512' class='colors'>
+gray75</div>
+<div id='d513' class='colors'>
+grey75</div>
+<div id='d514' class='colors'>
+gray74</div>
+<div id='d515' class='colors'>
+grey74</div>
+<div id='d516' class='colors'>
+gray73</div>
+<div id='d517' class='colors'>
+grey73</div>
+<div id='d518' class='colors'>
+gray72</div>
+<div id='d519' class='colors'>
+grey72</div>
+<div id='d520' class='colors'>
+gray71</div>
+<div id='d521' class='colors'>
+grey71</div>
+<div id='d522' class='colors'>
+gray70</div>
+<div id='d523' class='colors'>
+grey70</div>
+<div id='d524' class='colors'>
+gray69</div>
+<div id='d525' class='colors'>
+grey69</div>
+<div id='d526' class='colors'>
+gray68</div>
+<div id='d527' class='colors'>
+grey68</div>
+<div id='d528' class='colors'>
+gray67</div>
+<div id='d529' class='colors'>
+grey67</div>
+<div id='d530' class='colors'>
+DarkGray</div>
+<div id='d531' class='colors'>
+DarkGrey</div>
+<div id='d532' class='colors'>
+gray66</div>
+<div id='d533' class='colors'>
+grey66</div>
+<div id='d534' class='colors'>
+gray65</div>
+<div id='d535' class='colors'>
+grey65</div>
+<div id='d536' class='colors'>
+gray64</div>
+<div id='d537' class='colors'>
+grey64</div>
+<div id='d538' class='colors'>
+gray63</div>
+<div id='d539' class='colors'>
+grey63</div>
+<div id='d540' class='colors'>
+gray62</div>
+<div id='d541' class='colors'>
+grey62</div>
+<div id='d542' class='colors'>
+gray61</div>
+<div id='d543' class='colors'>
+grey61</div>
+<div id='d544' class='colors'>
+gray60</div>
+<div id='d545' class='colors'>
+grey60</div>
+<div id='d546' class='colors'>
+gray59</div>
+<div id='d547' class='colors'>
+grey59</div>
+<div id='d548' class='colors'>
+gray58</div>
+<div id='d549' class='colors'>
+grey58</div>
+<div id='d550' class='colors'>
+gray57</div>
+<div id='d551' class='colors'>
+grey57</div>
+<div id='d552' class='colors'>
+gray56</div>
+<div id='d553' class='colors'>
+grey56</div>
+<div id='d554' class='colors'>
+gray55</div>
+<div id='d555' class='colors'>
+grey55</div>
+<div id='d556' class='colors'>
+gray54</div>
+<div id='d557' class='colors'>
+grey54</div>
+<div id='d558' class='colors'>
+gray53</div>
+<div id='d559' class='colors'>
+grey53</div>
+<div id='d560' class='colors'>
+gray52</div>
+<div id='d561' class='colors'>
+grey52</div>
+<div id='d562' class='colors'>
+gray51</div>
+<div id='d563' class='colors'>
+grey51</div>
+<div id='d564' class='colors'>
+fractal</div>
+<div id='d565' class='colors'>
+gray50</div>
+<div id='d566' class='colors'>
+grey50</div>
+<div id='d567' class='colors'>
+gray</div>
+<div id='d568' class='colors'>
+gray49</div>
+<div id='d569' class='colors'>
+grey49</div>
+<div id='d570' class='colors'>
+gray48</div>
+<div id='d571' class='colors'>
+grey48</div>
+<div id='d572' class='colors'>
+gray47</div>
+<div id='d573' class='colors'>
+grey47</div>
+<div id='d574' class='colors'>
+gray46</div>
+<div id='d575' class='colors'>
+grey46</div>
+<div id='d576' class='colors'>
+gray45</div>
+<div id='d577' class='colors'>
+grey45</div>
+<div id='d578' class='colors'>
+gray44</div>
+<div id='d579' class='colors'>
+grey44</div>
+<div id='d580' class='colors'>
+gray43</div>
+<div id='d581' class='colors'>
+grey43</div>
+<div id='d582' class='colors'>
+gray42</div>
+<div id='d583' class='colors'>
+grey42</div>
+<div id='d584' class='colors'>
+DimGray</div>
+<div id='d585' class='colors'>
+DimGrey</div>
+<div id='d586' class='colors'>
+gray41</div>
+<div id='d587' class='colors'>
+grey41</div>
+<div id='d588' class='colors'>
+gray40</div>
+<div id='d589' class='colors'>
+grey40</div>
+<div id='d590' class='colors'>
+gray39</div>
+<div id='d591' class='colors'>
+grey39</div>
+<div id='d592' class='colors'>
+gray38</div>
+<div id='d593' class='colors'>
+grey38</div>
+<div id='d594' class='colors'>
+gray37</div>
+<div id='d595' class='colors'>
+grey37</div>
+<div id='d596' class='colors'>
+gray36</div>
+<div id='d597' class='colors'>
+grey36</div>
+<div id='d598' class='colors'>
+gray35</div>
+<div id='d599' class='colors'>
+grey35</div>
+<div id='d600' class='colors'>
+gray34</div>
+<div id='d601' class='colors'>
+grey34</div>
+<div id='d602' class='colors'>
+gray33</div>
+<div id='d603' class='colors'>
+grey33</div>
+<div id='d604' class='colors'>
+gray32</div>
+<div id='d605' class='colors'>
+grey32</div>
+<div id='d606' class='colors'>
+gray31</div>
+<div id='d607' class='colors'>
+grey31</div>
+<div id='d608' class='colors'>
+gray30</div>
+<div id='d609' class='colors'>
+grey30</div>
+<div id='d610' class='colors'>
+gray29</div>
+<div id='d611' class='colors'>
+grey29</div>
+<div id='d612' class='colors'>
+gray28</div>
+<div id='d613' class='colors'>
+grey28</div>
+<div id='d614' class='colors'>
+gray27</div>
+<div id='d615' class='colors'>
+grey27</div>
+<div id='d616' class='colors'>
+gray26</div>
+<div id='d617' class='colors'>
+grey26</div>
+<div id='d618' class='colors'>
+gray25</div>
+<div id='d619' class='colors'>
+grey25</div>
+<div id='d620' class='colors'>
+gray24</div>
+<div id='d621' class='colors'>
+grey24</div>
+<div id='d622' class='colors'>
+gray23</div>
+<div id='d623' class='colors'>
+grey23</div>
+<div id='d624' class='colors'>
+gray22</div>
+<div id='d625' class='colors'>
+grey22</div>
+<div id='d626' class='colors'>
+gray21</div>
+<div id='d627' class='colors'>
+grey21</div>
+<div id='d628' class='colors'>
+gray20</div>
+<div id='d629' class='colors'>
+grey20</div>
+<div id='d630' class='colors'>
+gray19</div>
+<div id='d631' class='colors'>
+grey19</div>
+<div id='d632' class='colors'>
+gray18</div>
+<div id='d633' class='colors'>
+grey18</div>
+<div id='d634' class='colors'>
+gray17</div>
+<div id='d635' class='colors'>
+grey17</div>
+<div id='d636' class='colors'>
+gray16</div>
+<div id='d637' class='colors'>
+grey16</div>
+<div id='d638' class='colors'>
+gray15</div>
+<div id='d639' class='colors'>
+grey15</div>
+<div id='d640' class='colors'>
+gray14</div>
+<div id='d641' class='colors'>
+grey14</div>
+<div id='d642' class='colors'>
+gray13</div>
+<div id='d643' class='colors'>
+grey13</div>
+<div id='d644' class='colors'>
+gray12</div>
+<div id='d645' class='colors'>
+grey12</div>
+<div id='d646' class='colors'>
+gray11</div>
+<div id='d647' class='colors'>
+grey11</div>
+<div id='d648' class='colors'>
+gray10</div>
+<div id='d649' class='colors'>
+grey10</div>
+<div id='d650' class='colors'>
+gray9</div>
+<div id='d651' class='colors'>
+grey9</div>
+<div id='d652' class='colors'>
+gray8</div>
+<div id='d653' class='colors'>
+grey8</div>
+<div id='d654' class='colors'>
+gray7</div>
+<div id='d655' class='colors'>
+grey7</div>
+<div id='d656' class='colors'>
+gray6</div>
+<div id='d657' class='colors'>
+grey6</div>
+<div id='d658' class='colors'>
+gray5</div>
+<div id='d659' class='colors'>
+grey5</div>
+<div id='d660' class='colors'>
+gray4</div>
+<div id='d661' class='colors'>
+grey4</div>
+<div id='d662' class='colors'>
+gray3</div>
+<div id='d663' class='colors'>
+grey3</div>
+<div id='d664' class='colors'>
+gray2</div>
+<div id='d665' class='colors'>
+grey2</div>
+<div id='d666' class='colors'>
+gray1</div>
+<div id='d667' class='colors'>
+grey1</div>
+<div id='d668' class='colors'>
+black</div>
+<div id='d669' class='colors'>
+gray0</div>
+<div id='d670' class='colors'>
+grey0</div>
+<div id='d671' class='colors'>
+opaque</div>
+<div id='d672' class='colors'>
+none</div>
+<div id='d673' class='colors'>
+transparent</div>
+</div>
+
+<div id='colornames'>
+WHERE THE COLORNAMES WILL GO
+</div>
+
+<div id='hexswitch'>CLICK TO SHOW HEXES</div>
+<div id='infoswitch'>CLICK TO SHOW INFO</div>
+<input id='namespace' type='text'></input>
+<script type='text/javascript' src='js/jquery-1.6.4.min.js'></script>
+<script type='text/javascript' src='js/colordict.js'></script>
+
+<script type='text/javascript'>
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newwidth = goldenize(result)
+ widthval = newwidth.toString()+'px'
+ $(idandselectr).css('width', widthval)
+ }
+makegolden('.colors', 'height')
+
+//threewayselector for what goes in the divs
+infostate = 1
+function switchinfo()
+ {
+ if(infostate == 0)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(divtoname[divlist[i]])
+ };
+ infostate = 1
+ }
+ else if(infostate == 1)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html("")
+ };
+ infostate = 2
+ }
+ else if(infostate == 2)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(nametohex[divtoname[divlist[i]]])
+ };
+ infostate = 0
+ }
+ }
+
+$('#infoswitch').click(function(){switchinfo()})
+
+//takes a div name and returns a colorname
+
+function showcolorname(divstr)
+
+ {
+ colorname = divtoname['#'+divstr]
+ hex = nametohex[colorname]
+ imname = hextoname[hex]
+ if (hexes == true)
+ {
+ imname = hex
+ }
+ return imname
+ }
+function bigname(divstr)
+ {
+ colorname = showcolorname(divstr)
+ $('#colornames').html(colorname)
+ }
+function writeit(text)
+ {
+ $('#colornames').append(text)
+ }
+function makebig(divstr)
+ {
+ firstheight = $('#'+divstr).height()
+ newheight = goldenize(goldenize(firstheight))
+ $('#'+divstr).height(newheight)
+ }
+function makesmall(divstr)
+ {
+ oldheight = $('.colors').height()
+ $('#'+divstr).height(oldheight)
+ }
+var choice;
+$('.colors').hover(function() {
+ bigname(this.id);
+// makebig(this.id);
+// makegolden('#'+this.id, 'height')},
+//function(){
+// makesmall(this.id);
+// makegolden('#'+this.id, 'height')
+});
+$('.colors').mouseover(function(){
+ if(this.id != 'd0'){
+ makebig(this.id);
+ makegolden('#'+this.id, 'height')
+ }})
+$('.colors').mouseout(function(){
+ makesmall(this.id);
+ makegolden('#'+this.id,'height');
+ })
+$(".colors").hover(function(){
+$('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+ });
+$('body').css('background-color', 'black')
+$('.colors').css('margin-top', '2px')
+var hexes = false
+function hexswitch()
+ {
+ if(hexes == false)
+ {
+ $('#hexswitch').html('CLICK TO SHOW COLOR NAMES')
+ hexes = true;
+ }
+
+ else
+ {
+ $('#hexswitch').html('CLICK TO SHOW HEX NAMES')
+ hexes = false;
+ }
+ }
+$('#hexswitch').click(function(){hexswitch()})
+
+$('.colors').click(function(){
+ putitin()
+ })
+
+function putitin()
+ {
+ $('#namespace').val($('#colornames').html())
+ }
+
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/junk/divlist.js b/frontend/imgrid/colors/junk/divlist.js
new file mode 100755
index 0000000..49ee990
--- /dev/null
+++ b/frontend/imgrid/colors/junk/divlist.js
@@ -0,0 +1,2 @@
+var divlist = ['#d0', '#d1', '#d2', '#d3', '#d4', '#d5', '#d6', '#d7', '#d8', '#d9', '#d10', '#d11', '#d12', '#d13', '#d14', '#d15', '#d16', '#d17', '#d18', '#d19', '#d20', '#d21', '#d22', '#d23', '#d24', '#d25', '#d26', '#d27', '#d28', '#d29', '#d30', '#d31', '#d32', '#d33', '#d34', '#d35', '#d36', '#d37', '#d38', '#d39', '#d40', '#d41', '#d42', '#d43', '#d44', '#d45', '#d46', '#d47', '#d48', '#d49', '#d50', '#d51', '#d52', '#d53', '#d54', '#d55', '#d56', '#d57', '#d58', '#d59', '#d60', '#d61', '#d62', '#d63', '#d64', '#d65', '#d66', '#d67', '#d68', '#d69', '#d70', '#d71', '#d72', '#d73', '#d74', '#d75', '#d76', '#d77', '#d78', '#d79', '#d80', '#d81', '#d82', '#d83', '#d84', '#d85', '#d86', '#d87', '#d88', '#d89', '#d90', '#d91', '#d92', '#d93', '#d94', '#d95', '#d96', '#d97', '#d98', '#d99', '#d100', '#d101', '#d102', '#d103', '#d104', '#d105', '#d106', '#d107', '#d108', '#d109', '#d110', '#d111', '#d112', '#d113', '#d114', '#d115', '#d116', '#d117', '#d118', '#d119', '#d120', '#d121', '#d122', '#d123', '#d124', '#d125', '#d126', '#d127', '#d128', '#d129', '#d130', '#d131', '#d132', '#d133', '#d134', '#d135', '#d136', '#d137', '#d138', '#d139', '#d140', '#d141', '#d142', '#d143', '#d144', '#d145', '#d146', '#d147', '#d148', '#d149', '#d150', '#d151', '#d152', '#d153', '#d154', '#d155', '#d156', '#d157', '#d158', '#d159', '#d160', '#d161', '#d162', '#d163', '#d164', '#d165', '#d166', '#d167', '#d168', '#d169', '#d170', '#d171', '#d172', '#d173', '#d174', '#d175', '#d176', '#d177', '#d178', '#d179', '#d180', '#d181', '#d182', '#d183', '#d184', '#d185', '#d186', '#d187', '#d188', '#d189', '#d190', '#d191', '#d192', '#d193', '#d194', '#d195', '#d196', '#d197', '#d198', '#d199', '#d200', '#d201', '#d202', '#d203', '#d204', '#d205', '#d206', '#d207', '#d208', '#d209', '#d210', '#d211', '#d212', '#d213', '#d214', '#d215', '#d216', '#d217', '#d218', '#d219', '#d220', '#d221', '#d222', '#d223', '#d224', '#d225', '#d226', '#d227', '#d228', '#d229', '#d230', '#d231', '#d232', '#d233', '#d234', '#d235', '#d236', '#d237', '#d238', '#d239', '#d240', '#d241', '#d242', '#d243', '#d244', '#d245', '#d246', '#d247', '#d248', '#d249', '#d250', '#d251', '#d252', '#d253', '#d254', '#d255', '#d256', '#d257', '#d258', '#d259', '#d260', '#d261', '#d262', '#d263', '#d264', '#d265', '#d266', '#d267', '#d268', '#d269', '#d270', '#d271', '#d272', '#d273', '#d274', '#d275', '#d276', '#d277', '#d278', '#d279', '#d280', '#d281', '#d282', '#d283', '#d284', '#d285', '#d286', '#d287', '#d288', '#d289', '#d290', '#d291', '#d292', '#d293', '#d294', '#d295', '#d296', '#d297', '#d298', '#d299', '#d300', '#d301', '#d302', '#d303', '#d304', '#d305', '#d306', '#d307', '#d308', '#d309', '#d310', '#d311', '#d312', '#d313', '#d314', '#d315', '#d316', '#d317', '#d318', '#d319', '#d320', '#d321', '#d322', '#d323', '#d324', '#d325', '#d326', '#d327', '#d328', '#d329', '#d330', '#d331', '#d332', '#d333', '#d334', '#d335', '#d336', '#d337', '#d338', '#d339', '#d340', '#d341', '#d342', '#d343', '#d344', '#d345', '#d346', '#d347', '#d348', '#d349', '#d350', '#d351', '#d352', '#d353', '#d354', '#d355', '#d356', '#d357', '#d358', '#d359', '#d360', '#d361', '#d362', '#d363', '#d364', '#d365', '#d366', '#d367', '#d368', '#d369', '#d370', '#d371', '#d372', '#d373', '#d374', '#d375', '#d376', '#d377', '#d378', '#d379', '#d380', '#d381', '#d382', '#d383', '#d384', '#d385', '#d386', '#d387', '#d388', '#d389', '#d390', '#d391', '#d392', '#d393', '#d394', '#d395', '#d396', '#d397', '#d398', '#d399', '#d400', '#d401', '#d402', '#d403', '#d404', '#d405', '#d406', '#d407', '#d408', '#d409', '#d410', '#d411', '#d412', '#d413', '#d414', '#d415', '#d416', '#d417', '#d418', '#d419', '#d420', '#d421', '#d422', '#d423', '#d424', '#d425', '#d426', '#d427', '#d428', '#d429', '#d430', '#d431', '#d432', '#d433', '#d434', '#d435', '#d436', '#d437', '#d438', '#d439', '#d440', '#d441', '#d442', '#d443', '#d444', '#d445', '#d446', '#d447', '#d448', '#d449', '#d450', '#d451', '#d452', '#d453', '#d454', '#d455', '#d456', '#d457', '#d458', '#d459', '#d460', '#d461', '#d462', '#d463', '#d464', '#d465', '#d466', '#d467', '#d468', '#d469', '#d470', '#d471', '#d472', '#d473', '#d474', '#d475', '#d476', '#d477', '#d478', '#d479', '#d480', '#d481', '#d482', '#d483', '#d484', '#d485', '#d486', '#d487', '#d488', '#d489', '#d490', '#d491', '#d492', '#d493', '#d494', '#d495', '#d496', '#d497', '#d498', '#d499', '#d500', '#d501', '#d502', '#d503', '#d504', '#d505', '#d506', '#d507', '#d508', '#d509', '#d510', '#d511', '#d512', '#d513', '#d514', '#d515', '#d516', '#d517', '#d518', '#d519', '#d520', '#d521', '#d522', '#d523', '#d524', '#d525', '#d526', '#d527', '#d528', '#d529', '#d530', '#d531', '#d532', '#d533', '#d534', '#d535', '#d536', '#d537', '#d538', '#d539', '#d540', '#d541', '#d542', '#d543', '#d544', '#d545', '#d546', '#d547', '#d548', '#d549', '#d550', '#d551', '#d552', '#d553', '#d554', '#d555', '#d556', '#d557', '#d558', '#d559', '#d560', '#d561', '#d562', '#d563', '#d564', '#d565', '#d566', '#d567', '#d568', '#d569', '#d570', '#d571', '#d572', '#d573', '#d574', '#d575', '#d576', '#d577', '#d578', '#d579', '#d580', '#d581', '#d582', '#d583', '#d584', '#d585', '#d586', '#d587', '#d588', '#d589', '#d590', '#d591', '#d592', '#d593', '#d594', '#d595', '#d596', '#d597', '#d598', '#d599', '#d600', '#d601', '#d602', '#d603', '#d604', '#d605', '#d606', '#d607', '#d608', '#d609', '#d610', '#d611', '#d612', '#d613', '#d614', '#d615', '#d616', '#d617', '#d618', '#d619', '#d620', '#d621', '#d622', '#d623', '#d624', '#d625', '#d626', '#d627', '#d628', '#d629', '#d630', '#d631', '#d632', '#d633', '#d634', '#d635', '#d636', '#d637', '#d638', '#d639', '#d640', '#d641', '#d642', '#d643', '#d644', '#d645', '#d646', '#d647', '#d648', '#d649', '#d650', '#d651', '#d652', '#d653', '#d654', '#d655', '#d656', '#d657', '#d658', '#d659', '#d660', '#d661', '#d662', '#d663', '#d664', '#d665', '#d666', '#d667', '#d668', '#d669', '#d670', '#d671', '#d672', '#d673']
+var divtoname = {'#d322': 'khaki4', '#d600': 'gray34', '#d118': 'MediumPurple1', '#d119': 'MediumPurple2', '#d114': 'purple3', '#d115': 'purple4', '#d116': 'purple1', '#d117': 'MediumPurple', '#d110': 'purple', '#d111': 'indigo', '#d112': 'BlueViolet', '#d113': 'purple2', '#d529': 'grey67', '#d231': 'DarkSlateGray', '#d339': 'LightGoldenrod3', '#d233': 'MediumTurquoise', '#d232': 'DarkSlateGrey', '#d235': 'turquoise', '#d234': 'LightSeaGreen', '#d237': 'aquamarine', '#d236': 'aquamarine4', '#d239': 'aquamarine2', '#d238': 'aquamarine1', '#d332': 'gold1', '#d333': 'gold2', '#d334': 'gold3', '#d335': 'gold4', '#d336': 'LightGoldenrod', '#d337': 'LightGoldenrod4', '#d424': 'LightSalmon3', '#d425': 'LightSalmon', '#d426': 'LightSalmon1', '#d427': 'LightSalmon4', '#d420': 'sienna', '#d421': 'sienna1', '#d422': 'sienna2', '#d423': 'sienna3', '#d587': 'grey41', '#d586': 'gray41', '#d585': 'DimGrey', '#d584': 'DimGray', '#d428': 'LightSalmon2', '#d429': 'coral', '#d581': 'grey43', '#d580': 'gray43', '#d89': 'thistle4', '#d88': 'plum3', '#d349': 'goldenrod4', '#d348': 'goldenrod3', '#d81': 'thistle2', '#d80': 'thistle1', '#d83': 'plum2', '#d82': 'plum1', '#d85': 'thistle3', '#d84': 'thistle', '#d87': 'violet', '#d86': 'plum', '#d601': 'grey34', '#d67': 'DeepPink3', '#d66': 'DeepPink2', '#d65': 'DeepPink1', '#d64': 'DeepPink', '#d63': 'HotPink', '#d62': 'HotPink4', '#d61': 'HotPink1', '#d60': 'HotPink2', '#d69': 'maroon1', '#d68': 'DeepPink4', '#d510': 'grey76', '#d511': 'silver', '#d512': 'gray75', '#d513': 'grey75', '#d514': 'gray74', '#d515': 'grey74', '#d516': 'gray73', '#d517': 'grey73', '#d518': 'gray72', '#d519': 'grey72', '#d150': 'LightSteelBlue2', '#d151': 'LightSteelBlue3', '#d152': 'LightSteelBlue4', '#d153': 'SlateGray4', '#d154': 'SlateGray1', '#d155': 'SlateGray2', '#d156': 'SlateGray3', '#d157': 'LightSlateGray', '#d158': 'LightSlateGrey', '#d159': 'SlateGray', '#d565': 'gray50', '#d564': 'fractal', '#d567': 'gray', '#d566': 'grey50', '#d561': 'grey52', '#d560': 'gray52', '#d563': 'grey51', '#d562': 'gray51', '#d604': 'gray32', '#d605': 'grey32', '#d606': 'gray31', '#d607': 'grey31', '#d569': 'grey49', '#d568': 'gray49', '#d602': 'gray33', '#d603': 'grey33', '#d125': 'SlateBlue', '#d124': 'MediumSlateBlue', '#d127': 'SlateBlue2', '#d126': 'SlateBlue1', '#d121': 'MediumPurple4', '#d120': 'MediumPurple3', '#d123': 'LightSlateBlue', '#d122': 'DarkSlateBlue', '#d359': 'wheat1', '#d129': 'SlateBlue4', '#d128': 'SlateBlue3', '#d301': 'LightYellow', '#d300': 'ivory1', '#d303': 'beige', '#d302': 'LightYellow1', '#d305': 'LightGoldenrodYellow', '#d304': 'ivory2', '#d307': 'ivory3', '#d306': 'LightYellow2', '#d309': 'ivory4', '#d308': 'LightYellow3', '#d462': 'grey98', '#d351': 'DarkGoldenrod1', '#d464': 'grey97', '#d465': 'gray96', '#d466': 'grey96', '#d467': 'WhiteSmoke', '#d463': 'gray97', '#d268': 'PaleGreen3', '#d269': 'honeydew4', '#d266': 'DarkSeaGreen3', '#d267': 'DarkSeaGreen', '#d264': 'LightGreen', '#d265': 'PaleGreen2', '#d262': 'PaleGreen', '#d263': 'honeydew3', '#d260': 'DarkSeaGreen2', '#d261': 'PaleGreen1', '#d598': 'gray35', '#d29': 'firebrick4', '#d28': 'brown4', '#d23': 'red2', '#d22': 'firebrick3', '#d21': 'RosyBrown4', '#d20': 'red1', '#d27': 'IndianRed4', '#d26': 'red3', '#d25': 'brown', '#d24': 'firebrick', '#d599': 'grey35', '#d338': 'LightGoldenrod1', '#d419': 'sienna4', '#d418': 'seashell1', '#d230': 'teal', '#d415': 'chocolate4', '#d414': 'chocolate3', '#d417': 'seashell', '#d416': 'SaddleBrown', '#d411': 'chocolate', '#d410': 'seashell3', '#d413': 'chocolate2', '#d412': 'chocolate1', '#d398': 'tan1', '#d399': 'tan2', '#d392': 'DarkOrange1', '#d393': 'linen', '#d390': 'bisque1', '#d391': 'bisque3', '#d396': 'DarkOrange4', '#d397': 'peru', '#d394': 'DarkOrange2', '#d395': 'DarkOrange3', '#d194': 'CadetBlue2', '#d195': 'CadetBlue3', '#d196': 'CadetBlue4', '#d197': 'turquoise1', '#d190': 'LightBlue', '#d191': 'LightBlue4', '#d192': 'PowderBlue', '#d193': 'CadetBlue1', '#d198': 'turquoise2', '#d199': 'turquoise3', '#d330': 'cornsilk4', '#d331': 'gold', '#d640': 'gray14', '#d641': 'grey14', '#d642': 'gray13', '#d643': 'grey13', '#d644': 'gray12', '#d645': 'grey12', '#d646': 'gray11', '#d647': 'grey11', '#d648': 'gray10', '#d649': 'grey10', '#d668': 'black', '#d486': 'gainsboro', '#d487': 'gray86', '#d484': 'gray87', '#d485': 'grey87', '#d482': 'gray88', '#d483': 'grey88', '#d480': 'gray89', '#d481': 'grey89', '#d521': 'grey71', '#d520': 'gray71', '#d523': 'grey70', '#d522': 'gray70', '#d525': 'grey69', '#d524': 'gray69', '#d488': 'grey86', '#d489': 'gray85', '#d430': 'OrangeRed', '#d660': 'gray4', '#d169': 'SteelBlue1', '#d168': 'SteelBlue', '#d661': 'grey4', '#d161': 'DodgerBlue', '#d160': 'SlateGrey', '#d163': 'DodgerBlue2', '#d162': 'DodgerBlue1', '#d165': 'DodgerBlue3', '#d164': 'DodgerBlue4', '#d167': 'SteelBlue4', '#d166': 'AliceBlue', '#d635': 'grey17', '#d634': 'gray17', '#d637': 'grey16', '#d636': 'gray16', '#d631': 'grey19', '#d630': 'gray19', '#d633': 'grey18', '#d632': 'gray18', '#d639': 'grey15', '#d638': 'gray15', '#d368': 'PapayaWhip', '#d222': 'cyan', '#d223': 'cyan1', '#d220': 'LightCyan4', '#d221': 'aqua', '#d226': 'DarkSlateGray4', '#d227': 'cyan3', '#d224': 'PaleTurquoise4', '#d225': 'cyan2', '#d228': 'cyan4', '#d229': 'DarkCyan', '#d590': 'gray39', '#d538': 'gray63', '#d539': 'grey63', '#d591': 'grey39', '#d451': 'MistyRose', '#d450': 'MistyRose2', '#d453': 'salmon', '#d452': 'MistyRose1', '#d455': 'white', '#d454': 'MistyRose3', '#d457': 'grey100', '#d456': 'gray100', '#d459': 'gray99', '#d458': 'grey100', '#d592': 'gray38', '#d593': 'grey38', '#d594': 'gray37', '#d595': 'grey37', '#d596': 'gray36', '#d597': 'grey36', '#d297': 'YellowGreen', '#d296': 'OliveDrab3', '#d295': 'OliveDrab2', '#d294': 'OliveDrab1', '#d293': 'OliveDrab', '#d292': 'DarkOliveGreen', '#d291': 'DarkOliveGreen4', '#d290': 'DarkOliveGreen2', '#d356': 'wheat2', '#d357': 'OldLace', '#d354': 'DarkGoldenrod4', '#d355': 'FloralWhite', '#d352': 'DarkGoldenrod2', '#d353': 'DarkGoldenrod3', '#d299': 'ivory', '#d298': 'OliveDrab4', '#d468': 'gray95', '#d534': 'gray65', '#d535': 'grey65', '#d52': 'LavenderBlush2', '#d53': 'LavenderBlush4', '#d50': 'LavenderBlush1', '#d51': 'LavenderBlush3', '#d56': 'VioletRed3', '#d57': 'VioletRed1', '#d54': 'maroon', '#d55': 'HotPink3', '#d58': 'VioletRed2', '#d59': 'VioletRed4', '#d469': 'grey95', '#d558': 'gray53', '#d559': 'grey53', '#d576': 'gray45', '#d577': 'grey45', '#d574': 'gray46', '#d575': 'grey46', '#d572': 'gray47', '#d573': 'grey47', '#d570': 'gray48', '#d571': 'grey48', '#d671': 'opaque', '#d670': 'grey0', '#d673': 'transparent', '#d672': 'none', '#d578': 'gray44', '#d579': 'grey44', '#d589': 'grey40', '#d588': 'gray40', '#d4': 'RosyBrown2', '#d5': 'snow3', '#d6': 'LightCoral', '#d7': 'IndianRed1', '#d0': 'snow', '#d1': 'snow1', '#d2': 'snow2', '#d3': 'RosyBrown1', '#d8': 'RosyBrown3', '#d9': 'IndianRed2', '#d136': 'MediumBlue', '#d137': 'blue4', '#d134': 'blue2', '#d135': 'blue3', '#d132': 'blue', '#d133': 'blue1', '#d130': 'GhostWhite', '#d131': 'lavender', '#d583': 'grey42', '#d138': 'DarkBlue', '#d139': 'MidnightBlue', '#d312': 'yellow1', '#d313': 'yellow2', '#d310': 'LightYellow4', '#d311': 'yellow', '#d316': 'olive', '#d317': 'DarkKhaki', '#d314': 'yellow3', '#d315': 'yellow4', '#d318': 'khaki2', '#d319': 'LemonChiffon4', '#d259': 'DarkSeaGreen1', '#d258': 'honeydew2', '#d253': 'SeaGreen4', '#d252': 'SeaGreen1', '#d251': 'SeaGreen3', '#d250': 'SeaGreen', '#d257': 'honeydew1', '#d256': 'honeydew', '#d255': 'MediumForestGreen', '#d254': 'SeaGreen2', '#d345': 'goldenrod', '#d344': 'cornsilk1', '#d612': 'gray28', '#d347': 'goldenrod2', '#d461': 'gray98', '#d346': 'goldenrod1', '#d479': 'grey90', '#d341': 'cornsilk3', '#d478': 'gray90', '#d340': 'LightGoldenrod2', '#d343': 'cornsilk', '#d342': 'cornsilk2', '#d528': 'gray67', '#d408': 'seashell4', '#d409': 'seashell2', '#d406': 'PeachPuff3', '#d407': 'SandyBrown', '#d404': 'PeachPuff4', '#d405': 'PeachPuff2', '#d402': 'PeachPuff', '#d403': 'PeachPuff1', '#d400': 'tan3', '#d401': 'tan4', '#d552': 'gray56', '#d460': 'grey99', '#d16': 'firebrick2', '#d17': 'snow4', '#d14': 'IndianRed', '#d15': 'IndianRed3', '#d12': 'firebrick1', '#d13': 'brown2', '#d10': 'RosyBrown', '#d11': 'brown1', '#d532': 'gray66', '#d533': 'grey66', '#d530': 'DarkGray', '#d531': 'DarkGrey', '#d536': 'gray64', '#d537': 'grey64', '#d18': 'brown3', '#d19': 'red', '#d329': 'MediumGoldenRod', '#d328': 'LemonChiffon2', '#d178': 'LightSkyBlue1', '#d179': 'LightSkyBlue2', '#d172': 'SkyBlue4', '#d173': 'SkyBlue1', '#d170': 'SteelBlue2', '#d171': 'SteelBlue3', '#d176': 'LightSkyBlue', '#d177': 'LightSkyBlue4', '#d174': 'SkyBlue2', '#d175': 'SkyBlue3', '#d626': 'gray21', '#d627': 'grey21', '#d624': 'gray22', '#d625': 'grey22', '#d622': 'gray23', '#d623': 'grey23', '#d620': 'gray24', '#d621': 'grey24', '#d628': 'gray20', '#d629': 'grey20', '#d219': 'azure4', '#d218': 'DarkSlateGray3', '#d217': 'PaleTurquoise3', '#d216': 'DarkSlateGray2', '#d215': 'LightCyan3', '#d214': 'azure3', '#d213': 'DarkSlateGray1', '#d212': 'PaleTurquoise2', '#d211': 'PaleTurquoise', '#d210': 'PaleTurquoise1', '#d669': 'gray0', '#d582': 'gray42', '#d442': 'coral3', '#d443': 'coral4', '#d440': 'coral1', '#d441': 'coral2', '#d446': 'tomato1', '#d447': 'tomato2', '#d444': 'tomato4', '#d445': 'tomato', '#d448': 'tomato3', '#d449': 'MistyRose4', '#d280': 'DarkGreen', '#d281': 'LawnGreen', '#d282': 'chartreuse', '#d283': 'chartreuse1', '#d284': 'chartreuse2', '#d285': 'chartreuse3', '#d286': 'chartreuse4', '#d287': 'GreenYellow', '#d288': 'DarkOliveGreen3', '#d289': 'DarkOliveGreen1', '#d361': 'orange', '#d360': 'wheat3', '#d367': 'moccasin', '#d366': 'wheat4', '#d365': 'orange4', '#d364': 'orange3', '#d49': 'LavenderBlush', '#d48': 'PaleVioletRed3', '#d45': 'PaleVioletRed', '#d44': 'PaleVioletRed4', '#d47': 'PaleVioletRed1', '#d46': 'PaleVioletRed2', '#d41': 'pink2', '#d40': 'pink1', '#d43': 'pink4', '#d42': 'pink3', '#d358': 'wheat', '#d527': 'grey68', '#d526': 'gray68', '#d614': 'gray27', '#d543': 'grey61', '#d542': 'gray61', '#d541': 'grey62', '#d540': 'gray62', '#d547': 'grey59', '#d546': 'gray59', '#d545': 'grey60', '#d544': 'gray60', '#d662': 'gray3', '#d663': 'grey3', '#d549': 'grey58', '#d548': 'gray58', '#d666': 'gray1', '#d667': 'grey1', '#d664': 'gray2', '#d665': 'grey2', '#d103': 'MediumOrchid4', '#d102': 'MediumOrchid3', '#d101': 'MediumOrchid2', '#d100': 'MediumOrchid1', '#d107': 'DarkOrchid3', '#d106': 'DarkOrchid1', '#d105': 'DarkOrchid', '#d104': 'DarkViolet', '#d109': 'DarkOrchid4', '#d108': 'DarkOrchid2', '#d244': 'SpringGreen', '#d245': 'SpringGreen1', '#d246': 'SpringGreen2', '#d247': 'SpringGreen3', '#d240': 'aquamarine3', '#d241': 'MediumAquamarine', '#d242': 'MediumSpringGreen', '#d243': 'MintCream', '#d327': 'LemonChiffon3', '#d326': 'khaki', '#d325': 'LemonChiffon1', '#d324': 'LemonChiffon', '#d248': 'SpringGreen4', '#d249': 'MediumSeaGreen', '#d321': 'khaki3', '#d320': 'khaki1', '#d350': 'DarkGoldenrod', '#d439': 'salmon4', '#d438': 'salmon3', '#d98': 'purple', '#d99': 'MediumOrchid', '#d96': 'DarkMagenta', '#d97': 'magenta4', '#d94': 'magenta2', '#d95': 'magenta3', '#d92': 'magenta1', '#d93': 'plum4', '#d90': 'fuchsia', '#d91': 'magenta', '#d433': 'OrangeRed3', '#d432': 'OrangeRed2', '#d431': 'OrangeRed1', '#d74': 'VioletRed', '#d75': 'orchid2', '#d76': 'orchid', '#d77': 'orchid1', '#d70': 'maroon2', '#d71': 'maroon3', '#d72': 'maroon4', '#d73': 'MediumVioletRed', '#d437': 'salmon2', '#d78': 'orchid3', '#d79': 'orchid4', '#d436': 'salmon1', '#d435': 'DarkSalmon', '#d434': 'OrangeRed4', '#d507': 'gray77', '#d506': 'grey78', '#d505': 'gray78', '#d504': 'grey79', '#d503': 'gray79', '#d502': 'grey80', '#d501': 'gray80', '#d500': 'grey81', '#d509': 'gray76', '#d508': 'grey77', '#d473': 'grey93', '#d369': 'NavajoWhite3', '#d147': 'CornflowerBlue', '#d146': 'RoyalBlue4', '#d145': 'RoyalBlue3', '#d144': 'RoyalBlue2', '#d143': 'RoyalBlue1', '#d142': 'RoyalBlue', '#d141': 'NavyBlue', '#d140': 'navy', '#d149': 'LightSteelBlue1', '#d148': 'LightSteelBlue', '#d472': 'gray93', '#d613': 'grey28', '#d363': 'orange2', '#d611': 'grey29', '#d610': 'gray29', '#d617': 'grey26', '#d616': 'gray26', '#d615': 'grey27', '#d362': 'orange1', '#d619': 'grey25', '#d618': 'gray25', '#d208': 'azure2', '#d209': 'LightCyan2', '#d200': 'turquoise4', '#d201': 'cadet blue', '#d202': 'CadetBlue', '#d203': 'DarkTurquoise', '#d204': 'azure', '#d205': 'azure1', '#d206': 'LightCyan', '#d207': 'LightCyan1', '#d608': 'gray30', '#d609': 'grey30', '#d374': 'NavajoWhite4', '#d375': 'AntiqueWhite4', '#d376': 'AntiqueWhite', '#d377': 'tan', '#d370': 'BlanchedAlmond', '#d371': 'NavajoWhite', '#d372': 'NavajoWhite1', '#d373': 'NavajoWhite2', '#d477': 'grey91', '#d476': 'gray91', '#d475': 'grey92', '#d474': 'gray92', '#d378': 'bisque4', '#d379': 'burlywood', '#d471': 'grey94', '#d470': 'gray94', '#d279': 'green', '#d278': 'green4', '#d275': 'PaleGreen4', '#d274': 'green2', '#d277': 'ForestGreen', '#d276': 'green3', '#d271': 'lime', '#d270': 'green1', '#d273': 'DarkSeaGreen4', '#d272': 'LimeGreen', '#d38': 'pink', '#d39': 'crimson', '#d30': 'DarkRed', '#d31': 'red4', '#d32': 'maroon', '#d33': 'LightPink1', '#d34': 'LightPink3', '#d35': 'LightPink4', '#d36': 'LightPink2', '#d37': 'LightPink', '#d658': 'gray5', '#d389': 'bisque', '#d388': 'bisque2', '#d381': 'burlywood1', '#d380': 'AntiqueWhite2', '#d383': 'burlywood2', '#d382': 'burlywood3', '#d385': 'burlywood4', '#d384': 'AntiqueWhite1', '#d387': 'DarkOrange', '#d386': 'AntiqueWhite3', '#d189': 'LightBlue2', '#d188': 'LightBlue1', '#d183': 'DeepSkyBlue', '#d182': 'LightBlue3', '#d181': 'SkyBlue', '#d180': 'LightSkyBlue3', '#d187': 'DeepSkyBlue3', '#d186': 'DeepSkyBlue4', '#d185': 'DeepSkyBlue2', '#d184': 'DeepSkyBlue1', '#d657': 'grey6', '#d656': 'gray6', '#d655': 'grey7', '#d654': 'gray7', '#d653': 'grey8', '#d652': 'gray8', '#d651': 'grey9', '#d650': 'gray9', '#d550': 'gray57', '#d659': 'grey5', '#d551': 'grey57', '#d495': 'LightGray', '#d494': 'grey83', '#d497': 'gray82', '#d496': 'LightGrey', '#d491': 'gray84', '#d490': 'grey85', '#d493': 'gray83', '#d492': 'grey84', '#d554': 'gray55', '#d555': 'grey55', '#d556': 'gray54', '#d557': 'grey54', '#d499': 'gray81', '#d498': 'grey82', '#d323': 'PaleGoldenrod', '#d553': 'grey56'} \ No newline at end of file
diff --git a/frontend/imgrid/colors/junk/divlistmaker b/frontend/imgrid/colors/junk/divlistmaker
new file mode 100755
index 0000000..b461bc9
--- /dev/null
+++ b/frontend/imgrid/colors/junk/divlistmaker
@@ -0,0 +1,32 @@
+#!/usr/bin/python2.7
+
+
+
+divlist = []
+for x in range(674):
+ divlist.append("#d"+str(x))
+
+print str(divlist)
+
+f = open('colordict.js', 'a')
+
+f.write("var divlist = ")
+f.write(str(divlist))
+f.close()
+
+f = open('colors.html', 'r')
+lines = f.readlines()
+colornames = []
+for line in lines:
+ if 'right' in line and 'td' in line:
+ colornames.append(line[22:-6])
+
+divtoname = {}
+for i in divlist:
+ divtoname[i] = colornames[divlist.index(i)]
+
+print divtoname
+f = open('colordict.js', 'a')
+f.write("\nvar divtoname = ")
+f.write(str(divtoname))
+
diff --git a/frontend/imgrid/colors/junk/mapmaker.html b/frontend/imgrid/colors/junk/mapmaker.html
new file mode 100755
index 0000000..05ca832
--- /dev/null
+++ b/frontend/imgrid/colors/junk/mapmaker.html
@@ -0,0 +1,3586 @@
+<html>
+<head>
+
+<style type='text/css'>
+
+body
+{
+max-width:100%;
+max-height:100%;
+font-family:helvetica;
+font-size:2px;
+}
+
+
+#container div
+{
+display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+height: 4px;
+zoom: 1;
+*display: inline;
+}
+
+#container
+{
+margin:0 auto;
+width:30px;
+padding-top:60px;
+padding-bottom:50px;
+padding-left:10px;
+padding-right:10px;
+text-align:center;
+}
+
+#colornames
+{
+color:white;
+position:fixed;
+font-size:50px;
+top:50px;
+right:60%;
+width:400px;
+}
+
+#hexswitch
+ {
+ position:fixed;
+ top:20px;
+ right:10%;
+ height:100px;
+ width:300px;
+ font-size:20px
+ border-style: groove;
+ border-width: 4px;
+ background-color:goldenrod;
+ text-align:center;
+ }
+#infoswitch
+ {
+ position:fixed;
+ top: 60px;
+ right:5%;
+ font-size:20px
+ background-color:gray;
+ text-align:center;
+ }
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{
+height:30px;
+width:10px;
+}
+</style></head><body>
+<div id='container'>
+<div id='d0' class='colors'>
+snow</div>
+<div id='d1' class='colors'>
+snow1</div>
+<div id='d2' class='colors'>
+snow2</div>
+<div id='d3' class='colors'>
+RosyBrown1</div>
+<div id='d4' class='colors'>
+RosyBrown2</div>
+<div id='d5' class='colors'>
+snow3</div>
+<div id='d6' class='colors'>
+LightCoral</div>
+<div id='d7' class='colors'>
+IndianRed1</div>
+<div id='d8' class='colors'>
+RosyBrown3</div>
+<div id='d9' class='colors'>
+IndianRed2</div>
+<div id='d10' class='colors'>
+RosyBrown</div>
+<div id='d11' class='colors'>
+brown1</div>
+<div id='d12' class='colors'>
+firebrick1</div>
+<div id='d13' class='colors'>
+brown2</div>
+<div id='d14' class='colors'>
+IndianRed</div>
+<div id='d15' class='colors'>
+IndianRed3</div>
+<div id='d16' class='colors'>
+firebrick2</div>
+<div id='d17' class='colors'>
+snow4</div>
+<div id='d18' class='colors'>
+brown3</div>
+<div id='d19' class='colors'>
+red</div>
+<div id='d20' class='colors'>
+red1</div>
+<div id='d21' class='colors'>
+RosyBrown4</div>
+<div id='d22' class='colors'>
+firebrick3</div>
+<div id='d23' class='colors'>
+red2</div>
+<div id='d24' class='colors'>
+firebrick</div>
+<div id='d25' class='colors'>
+brown</div>
+<div id='d26' class='colors'>
+red3</div>
+<div id='d27' class='colors'>
+IndianRed4</div>
+<div id='d28' class='colors'>
+brown4</div>
+<div id='d29' class='colors'>
+firebrick4</div>
+<div id='d30' class='colors'>
+DarkRed</div>
+<div id='d31' class='colors'>
+red4</div>
+<div id='d32' class='colors'>
+maroon</div>
+<div id='d33' class='colors'>
+LightPink1</div>
+<div id='d34' class='colors'>
+LightPink3</div>
+<div id='d35' class='colors'>
+LightPink4</div>
+<div id='d36' class='colors'>
+LightPink2</div>
+<div id='d37' class='colors'>
+LightPink</div>
+<div id='d38' class='colors'>
+pink</div>
+<div id='d39' class='colors'>
+crimson</div>
+<div id='d40' class='colors'>
+pink1</div>
+<div id='d41' class='colors'>
+pink2</div>
+<div id='d42' class='colors'>
+pink3</div>
+<div id='d43' class='colors'>
+pink4</div>
+<div id='d44' class='colors'>
+PaleVioletRed4</div>
+<div id='d45' class='colors'>
+PaleVioletRed</div>
+<div id='d46' class='colors'>
+PaleVioletRed2</div>
+<div id='d47' class='colors'>
+PaleVioletRed1</div>
+<div id='d48' class='colors'>
+PaleVioletRed3</div>
+<div id='d49' class='colors'>
+LavenderBlush</div>
+<div id='d50' class='colors'>
+LavenderBlush1</div>
+<div id='d51' class='colors'>
+LavenderBlush3</div>
+<div id='d52' class='colors'>
+LavenderBlush2</div>
+<div id='d53' class='colors'>
+LavenderBlush4</div>
+<div id='d54' class='colors'>
+maroon</div>
+<div id='d55' class='colors'>
+HotPink3</div>
+<div id='d56' class='colors'>
+VioletRed3</div>
+<div id='d57' class='colors'>
+VioletRed1</div>
+<div id='d58' class='colors'>
+VioletRed2</div>
+<div id='d59' class='colors'>
+VioletRed4</div>
+<div id='d60' class='colors'>
+HotPink2</div>
+<div id='d61' class='colors'>
+HotPink1</div>
+<div id='d62' class='colors'>
+HotPink4</div>
+<div id='d63' class='colors'>
+HotPink</div>
+<div id='d64' class='colors'>
+DeepPink</div>
+<div id='d65' class='colors'>
+DeepPink1</div>
+<div id='d66' class='colors'>
+DeepPink2</div>
+<div id='d67' class='colors'>
+DeepPink3</div>
+<div id='d68' class='colors'>
+DeepPink4</div>
+<div id='d69' class='colors'>
+maroon1</div>
+<div id='d70' class='colors'>
+maroon2</div>
+<div id='d71' class='colors'>
+maroon3</div>
+<div id='d72' class='colors'>
+maroon4</div>
+<div id='d73' class='colors'>
+MediumVioletRed</div>
+<div id='d74' class='colors'>
+VioletRed</div>
+<div id='d75' class='colors'>
+orchid2</div>
+<div id='d76' class='colors'>
+orchid</div>
+<div id='d77' class='colors'>
+orchid1</div>
+<div id='d78' class='colors'>
+orchid3</div>
+<div id='d79' class='colors'>
+orchid4</div>
+<div id='d80' class='colors'>
+thistle1</div>
+<div id='d81' class='colors'>
+thistle2</div>
+<div id='d82' class='colors'>
+plum1</div>
+<div id='d83' class='colors'>
+plum2</div>
+<div id='d84' class='colors'>
+thistle</div>
+<div id='d85' class='colors'>
+thistle3</div>
+<div id='d86' class='colors'>
+plum</div>
+<div id='d87' class='colors'>
+violet</div>
+<div id='d88' class='colors'>
+plum3</div>
+<div id='d89' class='colors'>
+thistle4</div>
+<div id='d90' class='colors'>
+fuchsia</div>
+<div id='d91' class='colors'>
+magenta</div>
+<div id='d92' class='colors'>
+magenta1</div>
+<div id='d93' class='colors'>
+plum4</div>
+<div id='d94' class='colors'>
+magenta2</div>
+<div id='d95' class='colors'>
+magenta3</div>
+<div id='d96' class='colors'>
+DarkMagenta</div>
+<div id='d97' class='colors'>
+magenta4</div>
+<div id='d98' class='colors'>
+purple</div>
+<div id='d99' class='colors'>
+MediumOrchid</div>
+<div id='d100' class='colors'>
+MediumOrchid1</div>
+<div id='d101' class='colors'>
+MediumOrchid2</div>
+<div id='d102' class='colors'>
+MediumOrchid3</div>
+<div id='d103' class='colors'>
+MediumOrchid4</div>
+<div id='d104' class='colors'>
+DarkViolet</div>
+<div id='d105' class='colors'>
+DarkOrchid</div>
+<div id='d106' class='colors'>
+DarkOrchid1</div>
+<div id='d107' class='colors'>
+DarkOrchid3</div>
+<div id='d108' class='colors'>
+DarkOrchid2</div>
+<div id='d109' class='colors'>
+DarkOrchid4</div>
+<div id='d110' class='colors'>
+purple</div>
+<div id='d111' class='colors'>
+indigo</div>
+<div id='d112' class='colors'>
+BlueViolet</div>
+<div id='d113' class='colors'>
+purple2</div>
+<div id='d114' class='colors'>
+purple3</div>
+<div id='d115' class='colors'>
+purple4</div>
+<div id='d116' class='colors'>
+purple1</div>
+<div id='d117' class='colors'>
+MediumPurple</div>
+<div id='d118' class='colors'>
+MediumPurple1</div>
+<div id='d119' class='colors'>
+MediumPurple2</div>
+<div id='d120' class='colors'>
+MediumPurple3</div>
+<div id='d121' class='colors'>
+MediumPurple4</div>
+<div id='d122' class='colors'>
+DarkSlateBlue</div>
+<div id='d123' class='colors'>
+LightSlateBlue</div>
+<div id='d124' class='colors'>
+MediumSlateBlue</div>
+<div id='d125' class='colors'>
+SlateBlue</div>
+<div id='d126' class='colors'>
+SlateBlue1</div>
+<div id='d127' class='colors'>
+SlateBlue2</div>
+<div id='d128' class='colors'>
+SlateBlue3</div>
+<div id='d129' class='colors'>
+SlateBlue4</div>
+<div id='d130' class='colors'>
+GhostWhite</div>
+<div id='d131' class='colors'>
+lavender</div>
+<div id='d132' class='colors'>
+blue</div>
+<div id='d133' class='colors'>
+blue1</div>
+<div id='d134' class='colors'>
+blue2</div>
+<div id='d135' class='colors'>
+blue3</div>
+<div id='d136' class='colors'>
+MediumBlue</div>
+<div id='d137' class='colors'>
+blue4</div>
+<div id='d138' class='colors'>
+DarkBlue</div>
+<div id='d139' class='colors'>
+MidnightBlue</div>
+<div id='d140' class='colors'>
+navy</div>
+<div id='d141' class='colors'>
+NavyBlue</div>
+<div id='d142' class='colors'>
+RoyalBlue</div>
+<div id='d143' class='colors'>
+RoyalBlue1</div>
+<div id='d144' class='colors'>
+RoyalBlue2</div>
+<div id='d145' class='colors'>
+RoyalBlue3</div>
+<div id='d146' class='colors'>
+RoyalBlue4</div>
+<div id='d147' class='colors'>
+CornflowerBlue</div>
+<div id='d148' class='colors'>
+LightSteelBlue</div>
+<div id='d149' class='colors'>
+LightSteelBlue1</div>
+<div id='d150' class='colors'>
+LightSteelBlue2</div>
+<div id='d151' class='colors'>
+LightSteelBlue3</div>
+<div id='d152' class='colors'>
+LightSteelBlue4</div>
+<div id='d153' class='colors'>
+SlateGray4</div>
+<div id='d154' class='colors'>
+SlateGray1</div>
+<div id='d155' class='colors'>
+SlateGray2</div>
+<div id='d156' class='colors'>
+SlateGray3</div>
+<div id='d157' class='colors'>
+LightSlateGray</div>
+<div id='d158' class='colors'>
+LightSlateGrey</div>
+<div id='d159' class='colors'>
+SlateGray</div>
+<div id='d160' class='colors'>
+SlateGrey</div>
+<div id='d161' class='colors'>
+DodgerBlue</div>
+<div id='d162' class='colors'>
+DodgerBlue1</div>
+<div id='d163' class='colors'>
+DodgerBlue2</div>
+<div id='d164' class='colors'>
+DodgerBlue4</div>
+<div id='d165' class='colors'>
+DodgerBlue3</div>
+<div id='d166' class='colors'>
+AliceBlue</div>
+<div id='d167' class='colors'>
+SteelBlue4</div>
+<div id='d168' class='colors'>
+SteelBlue</div>
+<div id='d169' class='colors'>
+SteelBlue1</div>
+<div id='d170' class='colors'>
+SteelBlue2</div>
+<div id='d171' class='colors'>
+SteelBlue3</div>
+<div id='d172' class='colors'>
+SkyBlue4</div>
+<div id='d173' class='colors'>
+SkyBlue1</div>
+<div id='d174' class='colors'>
+SkyBlue2</div>
+<div id='d175' class='colors'>
+SkyBlue3</div>
+<div id='d176' class='colors'>
+LightSkyBlue</div>
+<div id='d177' class='colors'>
+LightSkyBlue4</div>
+<div id='d178' class='colors'>
+LightSkyBlue1</div>
+<div id='d179' class='colors'>
+LightSkyBlue2</div>
+<div id='d180' class='colors'>
+LightSkyBlue3</div>
+<div id='d181' class='colors'>
+SkyBlue</div>
+<div id='d182' class='colors'>
+LightBlue3</div>
+<div id='d183' class='colors'>
+DeepSkyBlue</div>
+<div id='d184' class='colors'>
+DeepSkyBlue1</div>
+<div id='d185' class='colors'>
+DeepSkyBlue2</div>
+<div id='d186' class='colors'>
+DeepSkyBlue4</div>
+<div id='d187' class='colors'>
+DeepSkyBlue3</div>
+<div id='d188' class='colors'>
+LightBlue1</div>
+<div id='d189' class='colors'>
+LightBlue2</div>
+<div id='d190' class='colors'>
+LightBlue</div>
+<div id='d191' class='colors'>
+LightBlue4</div>
+<div id='d192' class='colors'>
+PowderBlue</div>
+<div id='d193' class='colors'>
+CadetBlue1</div>
+<div id='d194' class='colors'>
+CadetBlue2</div>
+<div id='d195' class='colors'>
+CadetBlue3</div>
+<div id='d196' class='colors'>
+CadetBlue4</div>
+<div id='d197' class='colors'>
+turquoise1</div>
+<div id='d198' class='colors'>
+turquoise2</div>
+<div id='d199' class='colors'>
+turquoise3</div>
+<div id='d200' class='colors'>
+turquoise4</div>
+<div id='d201' class='colors'>
+cadet blue</div>
+<div id='d202' class='colors'>
+CadetBlue</div>
+<div id='d203' class='colors'>
+DarkTurquoise</div>
+<div id='d204' class='colors'>
+azure</div>
+<div id='d205' class='colors'>
+azure1</div>
+<div id='d206' class='colors'>
+LightCyan</div>
+<div id='d207' class='colors'>
+LightCyan1</div>
+<div id='d208' class='colors'>
+azure2</div>
+<div id='d209' class='colors'>
+LightCyan2</div>
+<div id='d210' class='colors'>
+PaleTurquoise1</div>
+<div id='d211' class='colors'>
+PaleTurquoise</div>
+<div id='d212' class='colors'>
+PaleTurquoise2</div>
+<div id='d213' class='colors'>
+DarkSlateGray1</div>
+<div id='d214' class='colors'>
+azure3</div>
+<div id='d215' class='colors'>
+LightCyan3</div>
+<div id='d216' class='colors'>
+DarkSlateGray2</div>
+<div id='d217' class='colors'>
+PaleTurquoise3</div>
+<div id='d218' class='colors'>
+DarkSlateGray3</div>
+<div id='d219' class='colors'>
+azure4</div>
+<div id='d220' class='colors'>
+LightCyan4</div>
+<div id='d221' class='colors'>
+aqua</div>
+<div id='d222' class='colors'>
+cyan</div>
+<div id='d223' class='colors'>
+cyan1</div>
+<div id='d224' class='colors'>
+PaleTurquoise4</div>
+<div id='d225' class='colors'>
+cyan2</div>
+<div id='d226' class='colors'>
+DarkSlateGray4</div>
+<div id='d227' class='colors'>
+cyan3</div>
+<div id='d228' class='colors'>
+cyan4</div>
+<div id='d229' class='colors'>
+DarkCyan</div>
+<div id='d230' class='colors'>
+teal</div>
+<div id='d231' class='colors'>
+DarkSlateGray</div>
+<div id='d232' class='colors'>
+DarkSlateGrey</div>
+<div id='d233' class='colors'>
+MediumTurquoise</div>
+<div id='d234' class='colors'>
+LightSeaGreen</div>
+<div id='d235' class='colors'>
+turquoise</div>
+<div id='d236' class='colors'>
+aquamarine4</div>
+<div id='d237' class='colors'>
+aquamarine</div>
+<div id='d238' class='colors'>
+aquamarine1</div>
+<div id='d239' class='colors'>
+aquamarine2</div>
+<div id='d240' class='colors'>
+aquamarine3</div>
+<div id='d241' class='colors'>
+MediumAquamarine</div>
+<div id='d242' class='colors'>
+MediumSpringGreen</div>
+<div id='d243' class='colors'>
+MintCream</div>
+<div id='d244' class='colors'>
+SpringGreen</div>
+<div id='d245' class='colors'>
+SpringGreen1</div>
+<div id='d246' class='colors'>
+SpringGreen2</div>
+<div id='d247' class='colors'>
+SpringGreen3</div>
+<div id='d248' class='colors'>
+SpringGreen4</div>
+<div id='d249' class='colors'>
+MediumSeaGreen</div>
+<div id='d250' class='colors'>
+SeaGreen</div>
+<div id='d251' class='colors'>
+SeaGreen3</div>
+<div id='d252' class='colors'>
+SeaGreen1</div>
+<div id='d253' class='colors'>
+SeaGreen4</div>
+<div id='d254' class='colors'>
+SeaGreen2</div>
+<div id='d255' class='colors'>
+MediumForestGreen</div>
+<div id='d256' class='colors'>
+honeydew</div>
+<div id='d257' class='colors'>
+honeydew1</div>
+<div id='d258' class='colors'>
+honeydew2</div>
+<div id='d259' class='colors'>
+DarkSeaGreen1</div>
+<div id='d260' class='colors'>
+DarkSeaGreen2</div>
+<div id='d261' class='colors'>
+PaleGreen1</div>
+<div id='d262' class='colors'>
+PaleGreen</div>
+<div id='d263' class='colors'>
+honeydew3</div>
+<div id='d264' class='colors'>
+LightGreen</div>
+<div id='d265' class='colors'>
+PaleGreen2</div>
+<div id='d266' class='colors'>
+DarkSeaGreen3</div>
+<div id='d267' class='colors'>
+DarkSeaGreen</div>
+<div id='d268' class='colors'>
+PaleGreen3</div>
+<div id='d269' class='colors'>
+honeydew4</div>
+<div id='d270' class='colors'>
+green1</div>
+<div id='d271' class='colors'>
+lime</div>
+<div id='d272' class='colors'>
+LimeGreen</div>
+<div id='d273' class='colors'>
+DarkSeaGreen4</div>
+<div id='d274' class='colors'>
+green2</div>
+<div id='d275' class='colors'>
+PaleGreen4</div>
+<div id='d276' class='colors'>
+green3</div>
+<div id='d277' class='colors'>
+ForestGreen</div>
+<div id='d278' class='colors'>
+green4</div>
+<div id='d279' class='colors'>
+green</div>
+<div id='d280' class='colors'>
+DarkGreen</div>
+<div id='d281' class='colors'>
+LawnGreen</div>
+<div id='d282' class='colors'>
+chartreuse</div>
+<div id='d283' class='colors'>
+chartreuse1</div>
+<div id='d284' class='colors'>
+chartreuse2</div>
+<div id='d285' class='colors'>
+chartreuse3</div>
+<div id='d286' class='colors'>
+chartreuse4</div>
+<div id='d287' class='colors'>
+GreenYellow</div>
+<div id='d288' class='colors'>
+DarkOliveGreen3</div>
+<div id='d289' class='colors'>
+DarkOliveGreen1</div>
+<div id='d290' class='colors'>
+DarkOliveGreen2</div>
+<div id='d291' class='colors'>
+DarkOliveGreen4</div>
+<div id='d292' class='colors'>
+DarkOliveGreen</div>
+<div id='d293' class='colors'>
+OliveDrab</div>
+<div id='d294' class='colors'>
+OliveDrab1</div>
+<div id='d295' class='colors'>
+OliveDrab2</div>
+<div id='d296' class='colors'>
+OliveDrab3</div>
+<div id='d297' class='colors'>
+YellowGreen</div>
+<div id='d298' class='colors'>
+OliveDrab4</div>
+<div id='d299' class='colors'>
+ivory</div>
+<div id='d300' class='colors'>
+ivory1</div>
+<div id='d301' class='colors'>
+LightYellow</div>
+<div id='d302' class='colors'>
+LightYellow1</div>
+<div id='d303' class='colors'>
+beige</div>
+<div id='d304' class='colors'>
+ivory2</div>
+<div id='d305' class='colors'>
+LightGoldenrodYellow</div>
+<div id='d306' class='colors'>
+LightYellow2</div>
+<div id='d307' class='colors'>
+ivory3</div>
+<div id='d308' class='colors'>
+LightYellow3</div>
+<div id='d309' class='colors'>
+ivory4</div>
+<div id='d310' class='colors'>
+LightYellow4</div>
+<div id='d311' class='colors'>
+yellow</div>
+<div id='d312' class='colors'>
+yellow1</div>
+<div id='d313' class='colors'>
+yellow2</div>
+<div id='d314' class='colors'>
+yellow3</div>
+<div id='d315' class='colors'>
+yellow4</div>
+<div id='d316' class='colors'>
+olive</div>
+<div id='d317' class='colors'>
+DarkKhaki</div>
+<div id='d318' class='colors'>
+khaki2</div>
+<div id='d319' class='colors'>
+LemonChiffon4</div>
+<div id='d320' class='colors'>
+khaki1</div>
+<div id='d321' class='colors'>
+khaki3</div>
+<div id='d322' class='colors'>
+khaki4</div>
+<div id='d323' class='colors'>
+PaleGoldenrod</div>
+<div id='d324' class='colors'>
+LemonChiffon</div>
+<div id='d325' class='colors'>
+LemonChiffon1</div>
+<div id='d326' class='colors'>
+khaki</div>
+<div id='d327' class='colors'>
+LemonChiffon3</div>
+<div id='d328' class='colors'>
+LemonChiffon2</div>
+<div id='d329' class='colors'>
+MediumGoldenRod</div>
+<div id='d330' class='colors'>
+cornsilk4</div>
+<div id='d331' class='colors'>
+gold</div>
+<div id='d332' class='colors'>
+gold1</div>
+<div id='d333' class='colors'>
+gold2</div>
+<div id='d334' class='colors'>
+gold3</div>
+<div id='d335' class='colors'>
+gold4</div>
+<div id='d336' class='colors'>
+LightGoldenrod</div>
+<div id='d337' class='colors'>
+LightGoldenrod4</div>
+<div id='d338' class='colors'>
+LightGoldenrod1</div>
+<div id='d339' class='colors'>
+LightGoldenrod3</div>
+<div id='d340' class='colors'>
+LightGoldenrod2</div>
+<div id='d341' class='colors'>
+cornsilk3</div>
+<div id='d342' class='colors'>
+cornsilk2</div>
+<div id='d343' class='colors'>
+cornsilk</div>
+<div id='d344' class='colors'>
+cornsilk1</div>
+<div id='d345' class='colors'>
+goldenrod</div>
+<div id='d346' class='colors'>
+goldenrod1</div>
+<div id='d347' class='colors'>
+goldenrod2</div>
+<div id='d348' class='colors'>
+goldenrod3</div>
+<div id='d349' class='colors'>
+goldenrod4</div>
+<div id='d350' class='colors'>
+DarkGoldenrod</div>
+<div id='d351' class='colors'>
+DarkGoldenrod1</div>
+<div id='d352' class='colors'>
+DarkGoldenrod2</div>
+<div id='d353' class='colors'>
+DarkGoldenrod3</div>
+<div id='d354' class='colors'>
+DarkGoldenrod4</div>
+<div id='d355' class='colors'>
+FloralWhite</div>
+<div id='d356' class='colors'>
+wheat2</div>
+<div id='d357' class='colors'>
+OldLace</div>
+<div id='d358' class='colors'>
+wheat</div>
+<div id='d359' class='colors'>
+wheat1</div>
+<div id='d360' class='colors'>
+wheat3</div>
+<div id='d361' class='colors'>
+orange</div>
+<div id='d362' class='colors'>
+orange1</div>
+<div id='d363' class='colors'>
+orange2</div>
+<div id='d364' class='colors'>
+orange3</div>
+<div id='d365' class='colors'>
+orange4</div>
+<div id='d366' class='colors'>
+wheat4</div>
+<div id='d367' class='colors'>
+moccasin</div>
+<div id='d368' class='colors'>
+PapayaWhip</div>
+<div id='d369' class='colors'>
+NavajoWhite3</div>
+<div id='d370' class='colors'>
+BlanchedAlmond</div>
+<div id='d371' class='colors'>
+NavajoWhite</div>
+<div id='d372' class='colors'>
+NavajoWhite1</div>
+<div id='d373' class='colors'>
+NavajoWhite2</div>
+<div id='d374' class='colors'>
+NavajoWhite4</div>
+<div id='d375' class='colors'>
+AntiqueWhite4</div>
+<div id='d376' class='colors'>
+AntiqueWhite</div>
+<div id='d377' class='colors'>
+tan</div>
+<div id='d378' class='colors'>
+bisque4</div>
+<div id='d379' class='colors'>
+burlywood</div>
+<div id='d380' class='colors'>
+AntiqueWhite2</div>
+<div id='d381' class='colors'>
+burlywood1</div>
+<div id='d382' class='colors'>
+burlywood3</div>
+<div id='d383' class='colors'>
+burlywood2</div>
+<div id='d384' class='colors'>
+AntiqueWhite1</div>
+<div id='d385' class='colors'>
+burlywood4</div>
+<div id='d386' class='colors'>
+AntiqueWhite3</div>
+<div id='d387' class='colors'>
+DarkOrange</div>
+<div id='d388' class='colors'>
+bisque2</div>
+<div id='d389' class='colors'>
+bisque</div>
+<div id='d390' class='colors'>
+bisque1</div>
+<div id='d391' class='colors'>
+bisque3</div>
+<div id='d392' class='colors'>
+DarkOrange1</div>
+<div id='d393' class='colors'>
+linen</div>
+<div id='d394' class='colors'>
+DarkOrange2</div>
+<div id='d395' class='colors'>
+DarkOrange3</div>
+<div id='d396' class='colors'>
+DarkOrange4</div>
+<div id='d397' class='colors'>
+peru</div>
+<div id='d398' class='colors'>
+tan1</div>
+<div id='d399' class='colors'>
+tan2</div>
+<div id='d400' class='colors'>
+tan3</div>
+<div id='d401' class='colors'>
+tan4</div>
+<div id='d402' class='colors'>
+PeachPuff</div>
+<div id='d403' class='colors'>
+PeachPuff1</div>
+<div id='d404' class='colors'>
+PeachPuff4</div>
+<div id='d405' class='colors'>
+PeachPuff2</div>
+<div id='d406' class='colors'>
+PeachPuff3</div>
+<div id='d407' class='colors'>
+SandyBrown</div>
+<div id='d408' class='colors'>
+seashell4</div>
+<div id='d409' class='colors'>
+seashell2</div>
+<div id='d410' class='colors'>
+seashell3</div>
+<div id='d411' class='colors'>
+chocolate</div>
+<div id='d412' class='colors'>
+chocolate1</div>
+<div id='d413' class='colors'>
+chocolate2</div>
+<div id='d414' class='colors'>
+chocolate3</div>
+<div id='d415' class='colors'>
+chocolate4</div>
+<div id='d416' class='colors'>
+SaddleBrown</div>
+<div id='d417' class='colors'>
+seashell</div>
+<div id='d418' class='colors'>
+seashell1</div>
+<div id='d419' class='colors'>
+sienna4</div>
+<div id='d420' class='colors'>
+sienna</div>
+<div id='d421' class='colors'>
+sienna1</div>
+<div id='d422' class='colors'>
+sienna2</div>
+<div id='d423' class='colors'>
+sienna3</div>
+<div id='d424' class='colors'>
+LightSalmon3</div>
+<div id='d425' class='colors'>
+LightSalmon</div>
+<div id='d426' class='colors'>
+LightSalmon1</div>
+<div id='d427' class='colors'>
+LightSalmon4</div>
+<div id='d428' class='colors'>
+LightSalmon2</div>
+<div id='d429' class='colors'>
+coral</div>
+<div id='d430' class='colors'>
+OrangeRed</div>
+<div id='d431' class='colors'>
+OrangeRed1</div>
+<div id='d432' class='colors'>
+OrangeRed2</div>
+<div id='d433' class='colors'>
+OrangeRed3</div>
+<div id='d434' class='colors'>
+OrangeRed4</div>
+<div id='d435' class='colors'>
+DarkSalmon</div>
+<div id='d436' class='colors'>
+salmon1</div>
+<div id='d437' class='colors'>
+salmon2</div>
+<div id='d438' class='colors'>
+salmon3</div>
+<div id='d439' class='colors'>
+salmon4</div>
+<div id='d440' class='colors'>
+coral1</div>
+<div id='d441' class='colors'>
+coral2</div>
+<div id='d442' class='colors'>
+coral3</div>
+<div id='d443' class='colors'>
+coral4</div>
+<div id='d444' class='colors'>
+tomato4</div>
+<div id='d445' class='colors'>
+tomato</div>
+<div id='d446' class='colors'>
+tomato1</div>
+<div id='d447' class='colors'>
+tomato2</div>
+<div id='d448' class='colors'>
+tomato3</div>
+<div id='d449' class='colors'>
+MistyRose4</div>
+<div id='d450' class='colors'>
+MistyRose2</div>
+<div id='d451' class='colors'>
+MistyRose</div>
+<div id='d452' class='colors'>
+MistyRose1</div>
+<div id='d453' class='colors'>
+salmon</div>
+<div id='d454' class='colors'>
+MistyRose3</div>
+<div id='d455' class='colors'>
+white</div>
+<div id='d456' class='colors'>
+gray100</div>
+<div id='d457' class='colors'>
+grey100</div>
+<div id='d458' class='colors'>
+grey100</div>
+<div id='d459' class='colors'>
+gray99</div>
+<div id='d460' class='colors'>
+grey99</div>
+<div id='d461' class='colors'>
+gray98</div>
+<div id='d462' class='colors'>
+grey98</div>
+<div id='d463' class='colors'>
+gray97</div>
+<div id='d464' class='colors'>
+grey97</div>
+<div id='d465' class='colors'>
+gray96</div>
+<div id='d466' class='colors'>
+grey96</div>
+<div id='d467' class='colors'>
+WhiteSmoke</div>
+<div id='d468' class='colors'>
+gray95</div>
+<div id='d469' class='colors'>
+grey95</div>
+<div id='d470' class='colors'>
+gray94</div>
+<div id='d471' class='colors'>
+grey94</div>
+<div id='d472' class='colors'>
+gray93</div>
+<div id='d473' class='colors'>
+grey93</div>
+<div id='d474' class='colors'>
+gray92</div>
+<div id='d475' class='colors'>
+grey92</div>
+<div id='d476' class='colors'>
+gray91</div>
+<div id='d477' class='colors'>
+grey91</div>
+<div id='d478' class='colors'>
+gray90</div>
+<div id='d479' class='colors'>
+grey90</div>
+<div id='d480' class='colors'>
+gray89</div>
+<div id='d481' class='colors'>
+grey89</div>
+<div id='d482' class='colors'>
+gray88</div>
+<div id='d483' class='colors'>
+grey88</div>
+<div id='d484' class='colors'>
+gray87</div>
+<div id='d485' class='colors'>
+grey87</div>
+<div id='d486' class='colors'>
+gainsboro</div>
+<div id='d487' class='colors'>
+gray86</div>
+<div id='d488' class='colors'>
+grey86</div>
+<div id='d489' class='colors'>
+gray85</div>
+<div id='d490' class='colors'>
+grey85</div>
+<div id='d491' class='colors'>
+gray84</div>
+<div id='d492' class='colors'>
+grey84</div>
+<div id='d493' class='colors'>
+gray83</div>
+<div id='d494' class='colors'>
+grey83</div>
+<div id='d495' class='colors'>
+LightGray</div>
+<div id='d496' class='colors'>
+LightGrey</div>
+<div id='d497' class='colors'>
+gray82</div>
+<div id='d498' class='colors'>
+grey82</div>
+<div id='d499' class='colors'>
+gray81</div>
+<div id='d500' class='colors'>
+grey81</div>
+<div id='d501' class='colors'>
+gray80</div>
+<div id='d502' class='colors'>
+grey80</div>
+<div id='d503' class='colors'>
+gray79</div>
+<div id='d504' class='colors'>
+grey79</div>
+<div id='d505' class='colors'>
+gray78</div>
+<div id='d506' class='colors'>
+grey78</div>
+<div id='d507' class='colors'>
+gray77</div>
+<div id='d508' class='colors'>
+grey77</div>
+<div id='d509' class='colors'>
+gray76</div>
+<div id='d510' class='colors'>
+grey76</div>
+<div id='d511' class='colors'>
+silver</div>
+<div id='d512' class='colors'>
+gray75</div>
+<div id='d513' class='colors'>
+grey75</div>
+<div id='d514' class='colors'>
+gray74</div>
+<div id='d515' class='colors'>
+grey74</div>
+<div id='d516' class='colors'>
+gray73</div>
+<div id='d517' class='colors'>
+grey73</div>
+<div id='d518' class='colors'>
+gray72</div>
+<div id='d519' class='colors'>
+grey72</div>
+<div id='d520' class='colors'>
+gray71</div>
+<div id='d521' class='colors'>
+grey71</div>
+<div id='d522' class='colors'>
+gray70</div>
+<div id='d523' class='colors'>
+grey70</div>
+<div id='d524' class='colors'>
+gray69</div>
+<div id='d525' class='colors'>
+grey69</div>
+<div id='d526' class='colors'>
+gray68</div>
+<div id='d527' class='colors'>
+grey68</div>
+<div id='d528' class='colors'>
+gray67</div>
+<div id='d529' class='colors'>
+grey67</div>
+<div id='d530' class='colors'>
+DarkGray</div>
+<div id='d531' class='colors'>
+DarkGrey</div>
+<div id='d532' class='colors'>
+gray66</div>
+<div id='d533' class='colors'>
+grey66</div>
+<div id='d534' class='colors'>
+gray65</div>
+<div id='d535' class='colors'>
+grey65</div>
+<div id='d536' class='colors'>
+gray64</div>
+<div id='d537' class='colors'>
+grey64</div>
+<div id='d538' class='colors'>
+gray63</div>
+<div id='d539' class='colors'>
+grey63</div>
+<div id='d540' class='colors'>
+gray62</div>
+<div id='d541' class='colors'>
+grey62</div>
+<div id='d542' class='colors'>
+gray61</div>
+<div id='d543' class='colors'>
+grey61</div>
+<div id='d544' class='colors'>
+gray60</div>
+<div id='d545' class='colors'>
+grey60</div>
+<div id='d546' class='colors'>
+gray59</div>
+<div id='d547' class='colors'>
+grey59</div>
+<div id='d548' class='colors'>
+gray58</div>
+<div id='d549' class='colors'>
+grey58</div>
+<div id='d550' class='colors'>
+gray57</div>
+<div id='d551' class='colors'>
+grey57</div>
+<div id='d552' class='colors'>
+gray56</div>
+<div id='d553' class='colors'>
+grey56</div>
+<div id='d554' class='colors'>
+gray55</div>
+<div id='d555' class='colors'>
+grey55</div>
+<div id='d556' class='colors'>
+gray54</div>
+<div id='d557' class='colors'>
+grey54</div>
+<div id='d558' class='colors'>
+gray53</div>
+<div id='d559' class='colors'>
+grey53</div>
+<div id='d560' class='colors'>
+gray52</div>
+<div id='d561' class='colors'>
+grey52</div>
+<div id='d562' class='colors'>
+gray51</div>
+<div id='d563' class='colors'>
+grey51</div>
+<div id='d564' class='colors'>
+fractal</div>
+<div id='d565' class='colors'>
+gray50</div>
+<div id='d566' class='colors'>
+grey50</div>
+<div id='d567' class='colors'>
+gray</div>
+<div id='d568' class='colors'>
+gray49</div>
+<div id='d569' class='colors'>
+grey49</div>
+<div id='d570' class='colors'>
+gray48</div>
+<div id='d571' class='colors'>
+grey48</div>
+<div id='d572' class='colors'>
+gray47</div>
+<div id='d573' class='colors'>
+grey47</div>
+<div id='d574' class='colors'>
+gray46</div>
+<div id='d575' class='colors'>
+grey46</div>
+<div id='d576' class='colors'>
+gray45</div>
+<div id='d577' class='colors'>
+grey45</div>
+<div id='d578' class='colors'>
+gray44</div>
+<div id='d579' class='colors'>
+grey44</div>
+<div id='d580' class='colors'>
+gray43</div>
+<div id='d581' class='colors'>
+grey43</div>
+<div id='d582' class='colors'>
+gray42</div>
+<div id='d583' class='colors'>
+grey42</div>
+<div id='d584' class='colors'>
+DimGray</div>
+<div id='d585' class='colors'>
+DimGrey</div>
+<div id='d586' class='colors'>
+gray41</div>
+<div id='d587' class='colors'>
+grey41</div>
+<div id='d588' class='colors'>
+gray40</div>
+<div id='d589' class='colors'>
+grey40</div>
+<div id='d590' class='colors'>
+gray39</div>
+<div id='d591' class='colors'>
+grey39</div>
+<div id='d592' class='colors'>
+gray38</div>
+<div id='d593' class='colors'>
+grey38</div>
+<div id='d594' class='colors'>
+gray37</div>
+<div id='d595' class='colors'>
+grey37</div>
+<div id='d596' class='colors'>
+gray36</div>
+<div id='d597' class='colors'>
+grey36</div>
+<div id='d598' class='colors'>
+gray35</div>
+<div id='d599' class='colors'>
+grey35</div>
+<div id='d600' class='colors'>
+gray34</div>
+<div id='d601' class='colors'>
+grey34</div>
+<div id='d602' class='colors'>
+gray33</div>
+<div id='d603' class='colors'>
+grey33</div>
+<div id='d604' class='colors'>
+gray32</div>
+<div id='d605' class='colors'>
+grey32</div>
+<div id='d606' class='colors'>
+gray31</div>
+<div id='d607' class='colors'>
+grey31</div>
+<div id='d608' class='colors'>
+gray30</div>
+<div id='d609' class='colors'>
+grey30</div>
+<div id='d610' class='colors'>
+gray29</div>
+<div id='d611' class='colors'>
+grey29</div>
+<div id='d612' class='colors'>
+gray28</div>
+<div id='d613' class='colors'>
+grey28</div>
+<div id='d614' class='colors'>
+gray27</div>
+<div id='d615' class='colors'>
+grey27</div>
+<div id='d616' class='colors'>
+gray26</div>
+<div id='d617' class='colors'>
+grey26</div>
+<div id='d618' class='colors'>
+gray25</div>
+<div id='d619' class='colors'>
+grey25</div>
+<div id='d620' class='colors'>
+gray24</div>
+<div id='d621' class='colors'>
+grey24</div>
+<div id='d622' class='colors'>
+gray23</div>
+<div id='d623' class='colors'>
+grey23</div>
+<div id='d624' class='colors'>
+gray22</div>
+<div id='d625' class='colors'>
+grey22</div>
+<div id='d626' class='colors'>
+gray21</div>
+<div id='d627' class='colors'>
+grey21</div>
+<div id='d628' class='colors'>
+gray20</div>
+<div id='d629' class='colors'>
+grey20</div>
+<div id='d630' class='colors'>
+gray19</div>
+<div id='d631' class='colors'>
+grey19</div>
+<div id='d632' class='colors'>
+gray18</div>
+<div id='d633' class='colors'>
+grey18</div>
+<div id='d634' class='colors'>
+gray17</div>
+<div id='d635' class='colors'>
+grey17</div>
+<div id='d636' class='colors'>
+gray16</div>
+<div id='d637' class='colors'>
+grey16</div>
+<div id='d638' class='colors'>
+gray15</div>
+<div id='d639' class='colors'>
+grey15</div>
+<div id='d640' class='colors'>
+gray14</div>
+<div id='d641' class='colors'>
+grey14</div>
+<div id='d642' class='colors'>
+gray13</div>
+<div id='d643' class='colors'>
+grey13</div>
+<div id='d644' class='colors'>
+gray12</div>
+<div id='d645' class='colors'>
+grey12</div>
+<div id='d646' class='colors'>
+gray11</div>
+<div id='d647' class='colors'>
+grey11</div>
+<div id='d648' class='colors'>
+gray10</div>
+<div id='d649' class='colors'>
+grey10</div>
+<div id='d650' class='colors'>
+gray9</div>
+<div id='d651' class='colors'>
+grey9</div>
+<div id='d652' class='colors'>
+gray8</div>
+<div id='d653' class='colors'>
+grey8</div>
+<div id='d654' class='colors'>
+gray7</div>
+<div id='d655' class='colors'>
+grey7</div>
+<div id='d656' class='colors'>
+gray6</div>
+<div id='d657' class='colors'>
+grey6</div>
+<div id='d658' class='colors'>
+gray5</div>
+<div id='d659' class='colors'>
+grey5</div>
+<div id='d660' class='colors'>
+gray4</div>
+<div id='d661' class='colors'>
+grey4</div>
+<div id='d662' class='colors'>
+gray3</div>
+<div id='d663' class='colors'>
+grey3</div>
+<div id='d664' class='colors'>
+gray2</div>
+<div id='d665' class='colors'>
+grey2</div>
+<div id='d666' class='colors'>
+gray1</div>
+<div id='d667' class='colors'>
+grey1</div>
+<div id='d668' class='colors'>
+black</div>
+<div id='d669' class='colors'>
+gray0</div>
+<div id='d670' class='colors'>
+grey0</div>
+<div id='d671' class='colors'>
+opaque</div>
+<div id='d672' class='colors'>
+none</div>
+<div id='d673' class='colors'>
+transparent</div>
+</div>
+
+<div id='colornames'>
+WHERE THE COLORNAMES WILL GO
+</div>
+
+<div id='hexswitch'>CLICK TO SHOW HEXES</div>
+<div id='infoswitch'>CLICK TO SHOW INFO</div>
+<script type='text/javascript' src='jquery-1.6.4.min.js'></script><script type='text/javascript' src='colordict.js'></script>
+<script type='text/javascript'>
+$('.colors').html("")
+$('body').css('background-color','white')
+
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newwidth = goldenize(result)
+ widthval = newwidth.toString()+'px'
+ $(idandselectr).css('width', widthval)
+ }
+makegolden('.colors', 'height')
+
+
+//remove content this function takes the name out of the divs
+infoswitch = false;
+function removecontent()
+ {
+ if(infoswitch == false)
+ {
+ $('#infoswitch').click(function()
+ {
+ infoswitch = true
+ if(infoswitch == true){
+ $('.colors').html("")
+ }
+ })
+ }
+ if(infoswitch == true)
+ {
+ $('#infoswitch').click(function()
+ {
+ infoswitch = false
+ })
+ }
+ }
+removecontent()
+
+function colorToHex(color)
+{
+ if (color.substr(0, 1) === '#') {
+ return color;
+ }
+ var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color);
+
+ var red = parseInt(digits[2]);
+ var green = parseInt(digits[3]);
+ var blue = parseInt(digits[4]);
+
+ var rgb = blue | (green << 8) | (red << 16);
+ return digits[1] + '#' + rgb.toString(16);
+};
+
+//takes a div name and returns a colorname
+
+function showcolorname(divstr)
+
+ {
+ bgcolor = $('#'+divstr).css('background-color')
+ lowercasehex = colorToHex(bgcolor)
+ hex = lowercasehex.toUpperCase()
+ imname = hextoname[hex]
+ if (hexes == true)
+ {
+ imname = hex
+ }
+ return imname
+ }
+function bigname(divstr)
+ {
+ colorname = showcolorname(divstr)
+ $('#colornames').html(colorname)
+ }
+function writeit(text)
+ {
+ $('#colornames').append(text)
+ }
+function makebig(divstr)
+ {
+ firstheight = $('#'+divstr).height()
+ newheight = goldenize(firstheight)
+ $('#'+divstr).height(newheight)
+ }
+function makesmall(divstr)
+ {
+ oldheight = $('.colors').height()
+ $('#'+divstr).height(oldheight)
+ }
+$('.colors').hover(function() {
+ bigname(this.id);
+ makebig(this.id);
+ makegolden('#'+this.id, 'height')},
+function(){
+ makesmall(this.id);
+ makegolden('#'+this.id, 'height')
+});
+$(".colors").hover(function(){
+$('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+});
+$('body').css('background-color', 'white')
+$('.colors').css('margin-top', '2px')
+var hexes = false
+function hexswitch()
+ {
+ if(hexes == false)
+ {
+ $('#hexswitch').html('CLICK TO SHOW COLOR NAMES')
+ hexes = true;
+ }
+
+ else
+ {
+ $('#hexswitch').html('CLICK TO SHOW HEX NAMES')
+ hexes = false;
+ }
+ }
+$('#hexswitch').click(function(){hexswitch()})
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/junk/picker.js b/frontend/imgrid/colors/junk/picker.js
new file mode 100755
index 0000000..04a49f1
--- /dev/null
+++ b/frontend/imgrid/colors/junk/picker.js
@@ -0,0 +1,15 @@
+var colorpicker = "<div id='main'>"+"<div id='d0' class='colors'>"+"snow</div>"+"<div id='d1' class='colors'>"+"snow1</div>"+"<div id='d2' class='colors'>"+"snow2</div>"+"<div id='d3' class='colors'>"+"RosyBrown1</div>"+"<div id='d4' class='colors'>"+"RosyBrown2</div>"+"<div id='d5' class='colors'>"+"snow3</div>"+"<div id='d6' class='colors'>"+"LightCoral</div>"+"<div id='d7' class='colors'>"+"IndianRed1</div>"+"<div id='d8' class='colors'>"+"RosyBrown3</div>"+"<div id='d9' class='colors'>"+"IndianRed2</div>"+"<div id='d10' class='colors'>"+"RosyBrown</div>"+"<div id='d11' class='colors'>"+"brown1</div>"+"<div id='d12' class='colors'>"+"firebrick1</div>"+"<div id='d13' class='colors'>"+"brown2</div>"+"<div id='d14' class='colors'>"+"IndianRed</div>"+"<div id='d15' class='colors'>"+"IndianRed3</div>"+"<div id='d16' class='colors'>"+"firebrick2</div>"+"<div id='d17' class='colors'>"+"snow4</div>"+"<div id='d18' class='colors'>"+"brown3</div>"+"<div id='d19' class='colors'>"+"red</div>"+"<div id='d20' class='colors'>"+"red1</div>"+"<div id='d21' class='colors'>"+"RosyBrown4</div>"+"<div id='d22' class='colors'>"+"firebrick3</div>"+"<div id='d23' class='colors'>"+"red2</div>"+"<div id='d24' class='colors'>"+"firebrick</div>"+"<div id='d25' class='colors'>"+"brown</div>"+"<div id='d26' class='colors'>"+"red3</div>"+"<div id='d27' class='colors'>"+"IndianRed4</div>"+"<div id='d28' class='colors'>"+"brown4</div>"+"<div id='d29' class='colors'>"+"firebrick4</div>"+"<div id='d30' class='colors'>"+"DarkRed</div>"+"<div id='d31' class='colors'>"+"red4</div>"+"<div id='d32' class='colors'>"+"maroon</div>"+"<div id='d33' class='colors'>"+"LightPink1</div>"+"<div id='d34' class='colors'>"+"LightPink3</div>"+"<div id='d35' class='colors'>"+"LightPink4</div>"+"<div id='d36' class='colors'>"+"LightPink2</div>"+"<div id='d37' class='colors'>"+"LightPink</div>"+"<div id='d38' class='colors'>"+"pink</div>"+"<div id='d39' class='colors'>"+"crimson</div>"+"<div id='d40' class='colors'>"+"pink1</div>"+"<div id='d41' class='colors'>"+"pink2</div>"+"<div id='d42' class='colors'>"+"pink3</div>"+"<div id='d43' class='colors'>"+"pink4</div>"+"<div id='d44' class='colors'>"+"PaleVioletRed4</div>"+"<div id='d45' class='colors'>"+"PaleVioletRed</div>"+"<div id='d46' class='colors'>"+"PaleVioletRed2</div>"+"<div id='d47' class='colors'>"+"PaleVioletRed1</div>"+"<div id='d48' class='colors'>"+"PaleVioletRed3</div>"+"<div id='d49' class='colors'>"+"LavenderBlush</div>"+"<div id='d50' class='colors'>"+"LavenderBlush1</div>"+"<div id='d51' class='colors'>"+"LavenderBlush3</div>"+"<div id='d52' class='colors'>"+"LavenderBlush2</div>"+"<div id='d53' class='colors'>"+"LavenderBlush4</div>"+"<div id='d54' class='colors'>"+"maroon</div>"+"<div id='d55' class='colors'>"+"HotPink3</div>"+"<div id='d56' class='colors'>"+"VioletRed3</div>"+"<div id='d57' class='colors'>"+"VioletRed1</div>"+"<div id='d58' class='colors'>"+"VioletRed2</div>"+"<div id='d59' class='colors'>"+"VioletRed4</div>"+"<div id='d60' class='colors'>"+"HotPink2</div>"+"<div id='d61' class='colors'>"+"HotPink1</div>"+"<div id='d62' class='colors'>"+"HotPink4</div>"+"<div id='d63' class='colors'>"+"HotPink</div>"+"<div id='d64' class='colors'>"+"DeepPink</div>"+"<div id='d65' class='colors'>"+"DeepPink1</div>"+"<div id='d66' class='colors'>"+"DeepPink2</div>"+"<div id='d67' class='colors'>"+"DeepPink3</div>"+"<div id='d68' class='colors'>"+"DeepPink4</div>"+"<div id='d69' class='colors'>"+"maroon1</div>"+"<div id='d70' class='colors'>"+"maroon2</div>"+"<div id='d71' class='colors'>"+"maroon3</div>"+"<div id='d72' class='colors'>"+"maroon4</div>"+"<div id='d73' class='colors'>"+"MediumVioletRed</div>"+"<div id='d74' class='colors'>"+"VioletRed</div>"+"<div id='d75' class='colors'>"+"orchid2</div>"+"<div id='d76' class='colors'>"+"orchid</div>"+"<div id='d77' class='colors'>"+"orchid1</div>"+"<div id='d78' class='colors'>"+"orchid3</div>"+"<div id='d79' class='colors'>"+"orchid4</div>"+"<div id='d80' class='colors'>"+"thistle1</div>"+"<div id='d81' class='colors'>"+"thistle2</div>"+"<div id='d82' class='colors'>"+"plum1</div>"+"<div id='d83' class='colors'>"+"plum2</div>"+"<div id='d84' class='colors'>"+"thistle</div>"+"<div id='d85' class='colors'>"+"thistle3</div>"+"<div id='d86' class='colors'>"+"plum</div>"+"<div id='d87' class='colors'>"+"violet</div>"+"<div id='d88' class='colors'>"+"plum3</div>"+"<div id='d89' class='colors'>"+"thistle4</div>"+"<div id='d90' class='colors'>"+"fuchsia</div>"+"<div id='d91' class='colors'>"+"magenta</div>"+"<div id='d92' class='colors'>"+"magenta1</div>"+"<div id='d93' class='colors'>"+"plum4</div>"+"<div id='d94' class='colors'>"+"magenta2</div>"+"<div id='d95' class='colors'>"+"magenta3</div>"+"<div id='d96' class='colors'>"+"DarkMagenta</div>"+"<div id='d97' class='colors'>"+"magenta4</div>"+"<div id='d98' class='colors'>"+"purple</div>"+"<div id='d99' class='colors'>"+"MediumOrchid</div>"+"<div id='d100' class='colors'>"+"MediumOrchid1</div>"+"<div id='d101' class='colors'>"+"MediumOrchid2</div>"+"<div id='d102' class='colors'>"+"MediumOrchid3</div>"+"<div id='d103' class='colors'>"+"MediumOrchid4</div>"+"<div id='d104' class='colors'>"+"DarkViolet</div>"+"<div id='d105' class='colors'>"+"DarkOrchid</div>"+"<div id='d106' class='colors'>"+"DarkOrchid1</div>"+"<div id='d107' class='colors'>"+"DarkOrchid3</div>"+"<div id='d108' class='colors'>"+"DarkOrchid2</div>"+"<div id='d109' class='colors'>"+"DarkOrchid4</div>"+"<div id='d110' class='colors'>"+"purple</div>"+"<div id='d111' class='colors'>"+"indigo</div>"+"<div id='d112' class='colors'>"+"BlueViolet</div>"+"<div id='d113' class='colors'>"+"purple2</div>"+"<div id='d114' class='colors'>"+"purple3</div>"+"<div id='d115' class='colors'>"+"purple4</div>"+"<div id='d116' class='colors'>"+"purple1</div>"+"<div id='d117' class='colors'>"+"MediumPurple</div>"+"<div id='d118' class='colors'>"+"MediumPurple1</div>"+"<div id='d119' class='colors'>"+"MediumPurple2</div>"+"<div id='d120' class='colors'>"+"MediumPurple3</div>"+"<div id='d121' class='colors'>"+"MediumPurple4</div>"+"<div id='d122' class='colors'>"+"DarkSlateBlue</div>"+"<div id='d123' class='colors'>"+"LightSlateBlue</div>"+"<div id='d124' class='colors'>"+"MediumSlateBlue</div>"+"<div id='d125' class='colors'>"+"SlateBlue</div>"+"<div id='d126' class='colors'>"+"SlateBlue1</div>"+"<div id='d127' class='colors'>"+"SlateBlue2</div>"+"<div id='d128' class='colors'>"+"SlateBlue3</div>"+"<div id='d129' class='colors'>"+"SlateBlue4</div>"+"<div id='d130' class='colors'>"+"GhostWhite</div>"+"<div id='d131' class='colors'>"+"lavender</div>"+"<div id='d132' class='colors'>"+"blue</div>"+"<div id='d133' class='colors'>"+"blue1</div>"+"<div id='d134' class='colors'>"+"blue2</div>"+"<div id='d135' class='colors'>"+"blue3</div>"+"<div id='d136' class='colors'>"+"MediumBlue</div>"+"<div id='d137' class='colors'>"+"blue4</div>"+"<div id='d138' class='colors'>"+"DarkBlue</div>"+"<div id='d139' class='colors'>"+"MidnightBlue</div>"+"<div id='d140' class='colors'>"+"navy</div>"+"<div id='d141' class='colors'>"+"NavyBlue</div>"+"<div id='d142' class='colors'>"+"RoyalBlue</div>"+"<div id='d143' class='colors'>"+"RoyalBlue1</div>"+"<div id='d144' class='colors'>"+"RoyalBlue2</div>"+"<div id='d145' class='colors'>"+"RoyalBlue3</div>"+"<div id='d146' class='colors'>"+"RoyalBlue4</div>"+"<div id='d147' class='colors'>"+"CornflowerBlue</div>"+"<div id='d148' class='colors'>"+"LightSteelBlue</div>"+"<div id='d149' class='colors'>"+"LightSteelBlue1</div>"+"<div id='d150' class='colors'>"+"LightSteelBlue2</div>"+"<div id='d151' class='colors'>"+"LightSteelBlue3</div>"+"<div id='d152' class='colors'>"+"LightSteelBlue4</div>"+"<div id='d153' class='colors'>"+"SlateGray4</div>"+"<div id='d154' class='colors'>"+"SlateGray1</div>"+"<div id='d155' class='colors'>"+"SlateGray2</div>"+"<div id='d156' class='colors'>"+"SlateGray3</div>"+"<div id='d157' class='colors'>"+"LightSlateGray</div>"+"<div id='d158' class='colors'>"+"LightSlateGrey</div>"+"<div id='d159' class='colors'>"+"SlateGray</div>"+"<div id='d160' class='colors'>"+"SlateGrey</div>"+"<div id='d161' class='colors'>"+"DodgerBlue</div>"+"<div id='d162' class='colors'>"+"DodgerBlue1</div>"+"<div id='d163' class='colors'>"+"DodgerBlue2</div>"+"<div id='d164' class='colors'>"+"DodgerBlue4</div>"+"<div id='d165' class='colors'>"+"DodgerBlue3</div>"+"<div id='d166' class='colors'>"+"AliceBlue</div>"+"<div id='d167' class='colors'>"+"SteelBlue4</div>"+"<div id='d168' class='colors'>"+"SteelBlue</div>"+"<div id='d169' class='colors'>"+"SteelBlue1</div>"+"<div id='d170' class='colors'>"+"SteelBlue2</div>"+"<div id='d171' class='colors'>"+"SteelBlue3</div>"+"<div id='d172' class='colors'>"+"SkyBlue4</div>"+"<div id='d173' class='colors'>"+"SkyBlue1</div>"+"<div id='d174' class='colors'>"+"SkyBlue2</div>"+"<div id='d175' class='colors'>"+"SkyBlue3</div>"+"<div id='d176' class='colors'>"+"LightSkyBlue</div>"+"<div id='d177' class='colors'>"+"LightSkyBlue4</div>"+"<div id='d178' class='colors'>"+"LightSkyBlue1</div>"+"<div id='d179' class='colors'>"+"LightSkyBlue2</div>"+"<div id='d180' class='colors'>"+"LightSkyBlue3</div>"+"<div id='d181' class='colors'>"+"SkyBlue</div>"+"<div id='d182' class='colors'>"+"LightBlue3</div>"+"<div id='d183' class='colors'>"+"DeepSkyBlue</div>"+"<div id='d184' class='colors'>"+"DeepSkyBlue1</div>"+"<div id='d185' class='colors'>"+"DeepSkyBlue2</div>"+"<div id='d186' class='colors'>"+"DeepSkyBlue4</div>"+"<div id='d187' class='colors'>"+"DeepSkyBlue3</div>"+"<div id='d188' class='colors'>"+"LightBlue1</div>"+"<div id='d189' class='colors'>"+"LightBlue2</div>"+"<div id='d190' class='colors'>"+"LightBlue</div>"+"<div id='d191' class='colors'>"+"LightBlue4</div>"+"<div id='d192' class='colors'>"+"PowderBlue</div>"+"<div id='d193' class='colors'>"+"CadetBlue1</div>"+"<div id='d194' class='colors'>"+"CadetBlue2</div>"+"<div id='d195' class='colors'>"+"CadetBlue3</div>"+"<div id='d196' class='colors'>"+"CadetBlue4</div>"+"<div id='d197' class='colors'>"+"turquoise1</div>"+"<div id='d198' class='colors'>"+"turquoise2</div>"+"<div id='d199' class='colors'>"+"turquoise3</div>"+"<div id='d200' class='colors'>"+"turquoise4</div>"+"<div id='d201' class='colors'>"+"cadet blue</div>"+"<div id='d202' class='colors'>"+"CadetBlue</div>"+"<div id='d203' class='colors'>"+"DarkTurquoise</div>"+"<div id='d204' class='colors'>"+"azure</div>"+"<div id='d205' class='colors'>"+"azure1</div>"+"<div id='d206' class='colors'>"+"LightCyan</div>"+"<div id='d207' class='colors'>"+"LightCyan1</div>"+"<div id='d208' class='colors'>"+"azure2</div>"+"<div id='d209' class='colors'>"+"LightCyan2</div>"+"<div id='d210' class='colors'>"+"PaleTurquoise1</div>"+"<div id='d211' class='colors'>"+"PaleTurquoise</div>"+"<div id='d212' class='colors'>"+"PaleTurquoise2</div>"+"<div id='d213' class='colors'>"+"DarkSlateGray1</div>"+"<div id='d214' class='colors'>"+"azure3</div>"+"<div id='d215' class='colors'>"+"LightCyan3</div>"+"<div id='d216' class='colors'>"+"DarkSlateGray2</div>"+"<div id='d217' class='colors'>"+"PaleTurquoise3</div>"+"<div id='d218' class='colors'>"+"DarkSlateGray3</div>"+"<div id='d219' class='colors'>"+"azure4</div>"+"<div id='d220' class='colors'>"+"LightCyan4</div>"+"<div id='d221' class='colors'>"+"aqua</div>"+"<div id='d222' class='colors'>"+"cyan</div>"+"<div id='d223' class='colors'>"+"cyan1</div>"+"<div id='d224' class='colors'>"+"PaleTurquoise4</div>"+"<div id='d225' class='colors'>"+"cyan2</div>"+"<div id='d226' class='colors'>"+"DarkSlateGray4</div>"+"<div id='d227' class='colors'>"+"cyan3</div>"+"<div id='d228' class='colors'>"+"cyan4</div>"+"<div id='d229' class='colors'>"+"DarkCyan</div>"+"<div id='d230' class='colors'>"+"teal</div>"+"<div id='d231' class='colors'>"+"DarkSlateGray</div>"+"<div id='d232' class='colors'>"+"DarkSlateGrey</div>"+"<div id='d233' class='colors'>"+"MediumTurquoise</div>"+"<div id='d234' class='colors'>"+"LightSeaGreen</div>"+"<div id='d235' class='colors'>"+"turquoise</div>"+"<div id='d236' class='colors'>"+"aquamarine4</div>"+"<div id='d237' class='colors'>"+"aquamarine</div>"+"<div id='d238' class='colors'>"+"aquamarine1</div>"+"<div id='d239' class='colors'>"+"aquamarine2</div>"+"<div id='d240' class='colors'>"+"aquamarine3</div>"+"<div id='d241' class='colors'>"+"MediumAquamarine</div>"+"<div id='d242' class='colors'>"+"MediumSpringGreen</div>"+"<div id='d243' class='colors'>"+"MintCream</div>"+"<div id='d244' class='colors'>"+"SpringGreen</div>"+"<div id='d245' class='colors'>"+"SpringGreen1</div>"+"<div id='d246' class='colors'>"+"SpringGreen2</div>"+"<div id='d247' class='colors'>"+"SpringGreen3</div>"+"<div id='d248' class='colors'>"+"SpringGreen4</div>"+"<div id='d249' class='colors'>"+"MediumSeaGreen</div>"+"<div id='d250' class='colors'>"+"SeaGreen</div>"+"<div id='d251' class='colors'>"+"SeaGreen3</div>"+"<div id='d252' class='colors'>"+"SeaGreen1</div>"+"<div id='d253' class='colors'>"+"SeaGreen4</div>"+"<div id='d254' class='colors'>"+"SeaGreen2</div>"+"<div id='d255' class='colors'>"+"MediumForestGreen</div>"+"<div id='d256' class='colors'>"+"honeydew</div>"+"<div id='d257' class='colors'>"+"honeydew1</div>"+"<div id='d258' class='colors'>"+"honeydew2</div>"+"<div id='d259' class='colors'>"+"DarkSeaGreen1</div>"+"<div id='d260' class='colors'>"+"DarkSeaGreen2</div>"+"<div id='d261' class='colors'>"+"PaleGreen1</div>"+"<div id='d262' class='colors'>"+"PaleGreen</div>"+"<div id='d263' class='colors'>"+"honeydew3</div>"+"<div id='d264' class='colors'>"+"LightGreen</div>"+"<div id='d265' class='colors'>"+"PaleGreen2</div>"+"<div id='d266' class='colors'>"+"DarkSeaGreen3</div>"+"<div id='d267' class='colors'>"+"DarkSeaGreen</div>"+"<div id='d268' class='colors'>"+"PaleGreen3</div>"+"<div id='d269' class='colors'>"+"honeydew4</div>"+"<div id='d270' class='colors'>"+"green1</div>"+"<div id='d271' class='colors'>"+"lime</div>"+"<div id='d272' class='colors'>"+"LimeGreen</div>"+"<div id='d273' class='colors'>"+"DarkSeaGreen4</div>"+"<div id='d274' class='colors'>"+"green2</div>"+"<div id='d275' class='colors'>"+"PaleGreen4</div>"+"<div id='d276' class='colors'>"+"green3</div>"+"<div id='d277' class='colors'>"+"ForestGreen</div>"+"<div id='d278' class='colors'>"+"green4</div>"+"<div id='d279' class='colors'>"+"green</div>"+"<div id='d280' class='colors'>"+"DarkGreen</div>"+"<div id='d281' class='colors'>"+"LawnGreen</div>"+"<div id='d282' class='colors'>"+"chartreuse</div>"+"<div id='d283' class='colors'>"+"chartreuse1</div>"+"<div id='d284' class='colors'>"+"chartreuse2</div>"+"<div id='d285' class='colors'>"+"chartreuse3</div>"+"<div id='d286' class='colors'>"+"chartreuse4</div>"+"<div id='d287' class='colors'>"+"GreenYellow</div>"+"<div id='d288' class='colors'>"+"DarkOliveGreen3</div>"+"<div id='d289' class='colors'>"+"DarkOliveGreen1</div>"+"<div id='d290' class='colors'>"+"DarkOliveGreen2</div>"+"<div id='d291' class='colors'>"+"DarkOliveGreen4</div>"+"<div id='d292' class='colors'>"+"DarkOliveGreen</div>"+"<div id='d293' class='colors'>"+"OliveDrab</div>"+"<div id='d294' class='colors'>"+"OliveDrab1</div>"+"<div id='d295' class='colors'>"+"OliveDrab2</div>"+"<div id='d296' class='colors'>"+"OliveDrab3</div>"+"<div id='d297' class='colors'>"+"YellowGreen</div>"+"<div id='d298' class='colors'>"+"OliveDrab4</div>"+"<div id='d299' class='colors'>"+"ivory</div>"+"<div id='d300' class='colors'>"+"ivory1</div>"+"<div id='d301' class='colors'>"+"LightYellow</div>"+"<div id='d302' class='colors'>"+"LightYellow1</div>"+"<div id='d303' class='colors'>"+"beige</div>"+"<div id='d304' class='colors'>"+"ivory2</div>"+"<div id='d305' class='colors'>"+"LightGoldenrodYellow</div>"+"<div id='d306' class='colors'>"+"LightYellow2</div>"+"<div id='d307' class='colors'>"+"ivory3</div>"+"<div id='d308' class='colors'>"+"LightYellow3</div>"+"<div id='d309' class='colors'>"+"ivory4</div>"+"<div id='d310' class='colors'>"+"LightYellow4</div>"+"<div id='d311' class='colors'>"+"yellow</div>"+"<div id='d312' class='colors'>"+"yellow1</div>"+"<div id='d313' class='colors'>"+"yellow2</div>"+"<div id='d314' class='colors'>"+"yellow3</div>"+"<div id='d315' class='colors'>"+"yellow4</div>"+"<div id='d316' class='colors'>"+"olive</div>"+"<div id='d317' class='colors'>"+"DarkKhaki</div>"+"<div id='d318' class='colors'>"+"khaki2</div>"+"<div id='d319' class='colors'>"+"LemonChiffon4</div>"+"<div id='d320' class='colors'>"+"khaki1</div>"+"<div id='d321' class='colors'>"+"khaki3</div>"+"<div id='d322' class='colors'>"+"khaki4</div>"+"<div id='d323' class='colors'>"+"PaleGoldenrod</div>"+"<div id='d324' class='colors'>"+"LemonChiffon</div>"+"<div id='d325' class='colors'>"+"LemonChiffon1</div>"+"<div id='d326' class='colors'>"+"khaki</div>"+"<div id='d327' class='colors'>"+"LemonChiffon3</div>"+"<div id='d328' class='colors'>"+"LemonChiffon2</div>"+"<div id='d329' class='colors'>"+"MediumGoldenRod</div>"+"<div id='d330' class='colors'>"+"cornsilk4</div>"+"<div id='d331' class='colors'>"+"gold</div>"+"<div id='d332' class='colors'>"+"gold1</div>"+"<div id='d333' class='colors'>"+"gold2</div>"+"<div id='d334' class='colors'>"+"gold3</div>"+"<div id='d335' class='colors'>"+"gold4</div>"+"<div id='d336' class='colors'>"+"LightGoldenrod</div>"+"<div id='d337' class='colors'>"+"LightGoldenrod4</div>"+"<div id='d338' class='colors'>"+"LightGoldenrod1</div>"+"<div id='d339' class='colors'>"+"LightGoldenrod3</div>"+"<div id='d340' class='colors'>"+"LightGoldenrod2</div>"+"<div id='d341' class='colors'>"+"cornsilk3</div>"+"<div id='d342' class='colors'>"+"cornsilk2</div>"+"<div id='d343' class='colors'>"+"cornsilk</div>"+"<div id='d344' class='colors'>"+"cornsilk1</div>"+"<div id='d345' class='colors'>"+"goldenrod</div>"+"<div id='d346' class='colors'>"+"goldenrod1</div>"+"<div id='d347' class='colors'>"+"goldenrod2</div>"+"<div id='d348' class='colors'>"+"goldenrod3</div>"+"<div id='d349' class='colors'>"+"goldenrod4</div>"+"<div id='d350' class='colors'>"+"DarkGoldenrod</div>"+"<div id='d351' class='colors'>"+"DarkGoldenrod1</div>"+"<div id='d352' class='colors'>"+"DarkGoldenrod2</div>"+"<div id='d353' class='colors'>"+"DarkGoldenrod3</div>"+"<div id='d354' class='colors'>"+"DarkGoldenrod4</div>"+"<div id='d355' class='colors'>"+"FloralWhite</div>"+"<div id='d356' class='colors'>"+"wheat2</div>"+"<div id='d357' class='colors'>"+"OldLace</div>"+"<div id='d358' class='colors'>"+"wheat</div>"+"<div id='d359' class='colors'>"+"wheat1</div>"+"<div id='d360' class='colors'>"+"wheat3</div>"+"<div id='d361' class='colors'>"+"orange</div>"+"<div id='d362' class='colors'>"+"orange1</div>"+"<div id='d363' class='colors'>"+"orange2</div>"+"<div id='d364' class='colors'>"+"orange3</div>"+"<div id='d365' class='colors'>"+"orange4</div>"+"<div id='d366' class='colors'>"+"wheat4</div>"+"<div id='d367' class='colors'>"+"moccasin</div>"+"<div id='d368' class='colors'>"+"PapayaWhip</div>"+"<div id='d369' class='colors'>"+"NavajoWhite3</div>"+"<div id='d370' class='colors'>"+"BlanchedAlmond</div>"+"<div id='d371' class='colors'>"+"NavajoWhite</div>"+"<div id='d372' class='colors'>"+"NavajoWhite1</div>"+"<div id='d373' class='colors'>"+"NavajoWhite2</div>"+"<div id='d374' class='colors'>"+"NavajoWhite4</div>"+"<div id='d375' class='colors'>"+"AntiqueWhite4</div>"+"<div id='d376' class='colors'>"+"AntiqueWhite</div>"+"<div id='d377' class='colors'>"+"tan</div>"+"<div id='d378' class='colors'>"+"bisque4</div>"+"<div id='d379' class='colors'>"+"burlywood</div>"+"<div id='d380' class='colors'>"+"AntiqueWhite2</div>"+"<div id='d381' class='colors'>"+"burlywood1</div>"+"<div id='d382' class='colors'>"+"burlywood3</div>"+"<div id='d383' class='colors'>"+"burlywood2</div>"+"<div id='d384' class='colors'>"+"AntiqueWhite1</div>"+"<div id='d385' class='colors'>"+"burlywood4</div>"+"<div id='d386' class='colors'>"+"AntiqueWhite3</div>"+"<div id='d387' class='colors'>"+"DarkOrange</div>"+"<div id='d388' class='colors'>"+"bisque2</div>"+"<div id='d389' class='colors'>"+"bisque</div>"+"<div id='d390' class='colors'>"+"bisque1</div>"+"<div id='d391' class='colors'>"+"bisque3</div>"+"<div id='d392' class='colors'>"+"DarkOrange1</div>"+"<div id='d393' class='colors'>"+"linen</div>"+"<div id='d394' class='colors'>"+"DarkOrange2</div>"+"<div id='d395' class='colors'>"+"DarkOrange3</div>"+"<div id='d396' class='colors'>"+"DarkOrange4</div>"+"<div id='d397' class='colors'>"+"peru</div>"+"<div id='d398' class='colors'>"+"tan1</div>"+"<div id='d399' class='colors'>"+"tan2</div>"+"<div id='d400' class='colors'>"+"tan3</div>"+"<div id='d401' class='colors'>"+"tan4</div>"+"<div id='d402' class='colors'>"+"PeachPuff</div>"+"<div id='d403' class='colors'>"+"PeachPuff1</div>"+"<div id='d404' class='colors'>"+"PeachPuff4</div>"+"<div id='d405' class='colors'>"+"PeachPuff2</div>"+"<div id='d406' class='colors'>"+"PeachPuff3</div>"+"<div id='d407' class='colors'>"+"SandyBrown</div>"+"<div id='d408' class='colors'>"+"seashell4</div>"+"<div id='d409' class='colors'>"+"seashell2</div>"+"<div id='d410' class='colors'>"+"seashell3</div>"+"<div id='d411' class='colors'>"+"chocolate</div>"+"<div id='d412' class='colors'>"+"chocolate1</div>"+"<div id='d413' class='colors'>"+"chocolate2</div>"+"<div id='d414' class='colors'>"+"chocolate3</div>"+"<div id='d415' class='colors'>"+"chocolate4</div>"+"<div id='d416' class='colors'>"+"SaddleBrown</div>"+"<div id='d417' class='colors'>"+"seashell</div>"+"<div id='d418' class='colors'>"+"seashell1</div>"+"<div id='d419' class='colors'>"+"sienna4</div>"+"<div id='d420' class='colors'>"+"sienna</div>"+"<div id='d421' class='colors'>"+"sienna1</div>"+"<div id='d422' class='colors'>"+"sienna2</div>"+"<div id='d423' class='colors'>"+"sienna3</div>"+"<div id='d424' class='colors'>"+"LightSalmon3</div>"+"<div id='d425' class='colors'>"+"LightSalmon</div>"+"<div id='d426' class='colors'>"+"LightSalmon1</div>"+"<div id='d427' class='colors'>"+"LightSalmon4</div>"+"<div id='d428' class='colors'>"+"LightSalmon2</div>"+"<div id='d429' class='colors'>"+"coral</div>"+"<div id='d430' class='colors'>"+"OrangeRed</div>"+"<div id='d431' class='colors'>"+"OrangeRed1</div>"+"<div id='d432' class='colors'>"+"OrangeRed2</div>"+"<div id='d433' class='colors'>"+"OrangeRed3</div>"+"<div id='d434' class='colors'>"+"OrangeRed4</div>"+"<div id='d435' class='colors'>"+"DarkSalmon</div>"+"<div id='d436' class='colors'>"+"salmon1</div>"+"<div id='d437' class='colors'>"+"salmon2</div>"+"<div id='d438' class='colors'>"+"salmon3</div>"+"<div id='d439' class='colors'>"+"salmon4</div>"+"<div id='d440' class='colors'>"+"coral1</div>"+"<div id='d441' class='colors'>"+"coral2</div>"+"<div id='d442' class='colors'>"+"coral3</div>"+"<div id='d443' class='colors'>"+"coral4</div>"+"<div id='d444' class='colors'>"+"tomato4</div>"+"<div id='d445' class='colors'>"+"tomato</div>"+"<div id='d446' class='colors'>"+"tomato1</div>"+"<div id='d447' class='colors'>"+"tomato2</div>"+"<div id='d448' class='colors'>"+"tomato3</div>"+"<div id='d449' class='colors'>"+"MistyRose4</div>"+"<div id='d450' class='colors'>"+"MistyRose2</div>"+"<div id='d451' class='colors'>"+"MistyRose</div>"+"<div id='d452' class='colors'>"+"MistyRose1</div>"+"<div id='d453' class='colors'>"+"salmon</div>"+"<div id='d454' class='colors'>"+"MistyRose3</div>"+"<div id='d455' class='colors'>"+"white</div>"+"<div id='d456' class='colors'>"+"gray100</div>"+"<div id='d457' class='colors'>"+"grey100</div>"+"<div id='d458' class='colors'>"+"grey100</div>"+"<div id='d459' class='colors'>"+"gray99</div>"+"<div id='d460' class='colors'>"+"grey99</div>"+"<div id='d461' class='colors'>"+"gray98</div>"+"<div id='d462' class='colors'>"+"grey98</div>"+"<div id='d463' class='colors'>"+"gray97</div>"+"<div id='d464' class='colors'>"+"grey97</div>"+"<div id='d465' class='colors'>"+"gray96</div>"+"<div id='d466' class='colors'>"+"grey96</div>"+"<div id='d467' class='colors'>"+"WhiteSmoke</div>"+"<div id='d468' class='colors'>"+"gray95</div>"+"<div id='d469' class='colors'>"+"grey95</div>"+"<div id='d470' class='colors'>"+"gray94</div>"+"<div id='d471' class='colors'>"+"grey94</div>"+"<div id='d472' class='colors'>"+"gray93</div>"+"<div id='d473' class='colors'>"+"grey93</div>"+"<div id='d474' class='colors'>"+"gray92</div>"+"<div id='d475' class='colors'>"+"grey92</div>"+"<div id='d476' class='colors'>"+"gray91</div>"+"<div id='d477' class='colors'>"+"grey91</div>"+"<div id='d478' class='colors'>"+"gray90</div>"+"<div id='d479' class='colors'>"+"grey90</div>"+"<div id='d480' class='colors'>"+"gray89</div>"+"<div id='d481' class='colors'>"+"grey89</div>"+"<div id='d482' class='colors'>"+"gray88</div>"+"<div id='d483' class='colors'>"+"grey88</div>"+"<div id='d484' class='colors'>"+"gray87</div>"+"<div id='d485' class='colors'>"+"grey87</div>"+"<div id='d486' class='colors'>"+"gainsboro</div>"+"<div id='d487' class='colors'>"+"gray86</div>"+"<div id='d488' class='colors'>"+"grey86</div>"+"<div id='d489' class='colors'>"+"gray85</div>"+"<div id='d490' class='colors'>"+"grey85</div>"+"<div id='d491' class='colors'>"+"gray84</div>"+"<div id='d492' class='colors'>"+"grey84</div>"+"<div id='d493' class='colors'>"+"gray83</div>"+"<div id='d494' class='colors'>"+"grey83</div>"+"<div id='d495' class='colors'>"+"LightGray</div>"+"<div id='d496' class='colors'>"+"LightGrey</div>"+"<div id='d497' class='colors'>"+"gray82</div>"+"<div id='d498' class='colors'>"+"grey82</div>"+"<div id='d499' class='colors'>"+"gray81</div>"+"<div id='d500' class='colors'>"+"grey81</div>"+"<div id='d501' class='colors'>"+"gray80</div>"+"<div id='d502' class='colors'>"+"grey80</div>"+"<div id='d503' class='colors'>"+"gray79</div>"+"<div id='d504' class='colors'>"+"grey79</div>"+"<div id='d505' class='colors'>"+"gray78</div>"+"<div id='d506' class='colors'>"+"grey78</div>"+"<div id='d507' class='colors'>"+"gray77</div>"+"<div id='d508' class='colors'>"+"grey77</div>"+"<div id='d509' class='colors'>"+"gray76</div>"+"<div id='d510' class='colors'>"+"grey76</div>"+"<div id='d511' class='colors'>"+"silver</div>"+"<div id='d512' class='colors'>"+"gray75</div>"+"<div id='d513' class='colors'>"+"grey75</div>"+"<div id='d514' class='colors'>"+"gray74</div>"+"<div id='d515' class='colors'>"+"grey74</div>"+"<div id='d516' class='colors'>"+"gray73</div>"+"<div id='d517' class='colors'>"+"grey73</div>"+"<div id='d518' class='colors'>"+"gray72</div>"+"<div id='d519' class='colors'>"+"grey72</div>"+"<div id='d520' class='colors'>"+"gray71</div>"+"<div id='d521' class='colors'>"+"grey71</div>"+"<div id='d522' class='colors'>"+"gray70</div>"+"<div id='d523' class='colors'>"+"grey70</div>"+"<div id='d524' class='colors'>"+"gray69</div>"+"<div id='d525' class='colors'>"+"grey69</div>"+"<div id='d526' class='colors'>"+"gray68</div>"+"<div id='d527' class='colors'>"+"grey68</div>"+"<div id='d528' class='colors'>"+"gray67</div>"+"<div id='d529' class='colors'>"+"grey67</div>"+"<div id='d530' class='colors'>"+"DarkGray</div>"+"<div id='d531' class='colors'>"+"DarkGrey</div>"+"<div id='d532' class='colors'>"+"gray66</div>"+"<div id='d533' class='colors'>"+"grey66</div>"+"<div id='d534' class='colors'>"+"gray65</div>"+"<div id='d535' class='colors'>"+"grey65</div>"+"<div id='d536' class='colors'>"+"gray64</div>"+"<div id='d537' class='colors'>"+"grey64</div>"+"<div id='d538' class='colors'>"+"gray63</div>"+"<div id='d539' class='colors'>"+"grey63</div>"+"<div id='d540' class='colors'>"+"gray62</div>"+"<div id='d541' class='colors'>"+"grey62</div>"+"<div id='d542' class='colors'>"+"gray61</div>"+"<div id='d543' class='colors'>"+"grey61</div>"+"<div id='d544' class='colors'>"+"gray60</div>"+"<div id='d545' class='colors'>"+"grey60</div>"+"<div id='d546' class='colors'>"+"gray59</div>"+"<div id='d547' class='colors'>"+"grey59</div>"+"<div id='d548' class='colors'>"+"gray58</div>"+"<div id='d549' class='colors'>"+"grey58</div>"+"<div id='d550' class='colors'>"+"gray57</div>"+"<div id='d551' class='colors'>"+"grey57</div>"+"<div id='d552' class='colors'>"+"gray56</div>"+"<div id='d553' class='colors'>"+"grey56</div>"+"<div id='d554' class='colors'>"+"gray55</div>"+"<div id='d555' class='colors'>"+"grey55</div>"+"<div id='d556' class='colors'>"+"gray54</div>"+"<div id='d557' class='colors'>"+"grey54</div>"+"<div id='d558' class='colors'>"+"gray53</div>"+"<div id='d559' class='colors'>"+"grey53</div>"+"<div id='d560' class='colors'>"+"gray52</div>"+"<div id='d561' class='colors'>"+"grey52</div>"+"<div id='d562' class='colors'>"+"gray51</div>"+"<div id='d563' class='colors'>"+"grey51</div>"+"<div id='d564' class='colors'>"+"fractal</div>"+"<div id='d565' class='colors'>"+"gray50</div>"+"<div id='d566' class='colors'>"+"grey50</div>"+"<div id='d567' class='colors'>"+"gray</div>"+"<div id='d568' class='colors'>"+"gray49</div>"+"<div id='d569' class='colors'>"+"grey49</div>"+"<div id='d570' class='colors'>"+"gray48</div>"+"<div id='d571' class='colors'>"+"grey48</div>"+"<div id='d572' class='colors'>"+"gray47</div>"+"<div id='d573' class='colors'>"+"grey47</div>"+"<div id='d574' class='colors'>"+"gray46</div>"+"<div id='d575' class='colors'>"+"grey46</div>"+"<div id='d576' class='colors'>"+"gray45</div>"+"<div id='d577' class='colors'>"+"grey45</div>"+"<div id='d578' class='colors'>"+"gray44</div>"+"<div id='d579' class='colors'>"+"grey44</div>"+"<div id='d580' class='colors'>"+"gray43</div>"+"<div id='d581' class='colors'>"+"grey43</div>"+"<div id='d582' class='colors'>"+"gray42</div>"+"<div id='d583' class='colors'>"+"grey42</div>"+"<div id='d584' class='colors'>"+"DimGray</div>"+"<div id='d585' class='colors'>"+"DimGrey</div>"+"<div id='d586' class='colors'>"+"gray41</div>"+"<div id='d587' class='colors'>"+"grey41</div>"+"<div id='d588' class='colors'>"+"gray40</div>"+"<div id='d589' class='colors'>"+"grey40</div>"+"<div id='d590' class='colors'>"+"gray39</div>"+"<div id='d591' class='colors'>"+"grey39</div>"+"<div id='d592' class='colors'>"+"gray38</div>"+"<div id='d593' class='colors'>"+"grey38</div>"+"<div id='d594' class='colors'>"+"gray37</div>"+"<div id='d595' class='colors'>"+"grey37</div>"+"<div id='d596' class='colors'>"+"gray36</div>"+"<div id='d597' class='colors'>"+"grey36</div>"+"<div id='d598' class='colors'>"+"gray35</div>"+"<div id='d599' class='colors'>"+"grey35</div>"+"<div id='d600' class='colors'>"+"gray34</div>"+"<div id='d601' class='colors'>"+"grey34</div>"+"<div id='d602' class='colors'>"+"gray33</div>"+"<div id='d603' class='colors'>"+"grey33</div>"+"<div id='d604' class='colors'>"+"gray32</div>"+"<div id='d605' class='colors'>"+"grey32</div>"+"<div id='d606' class='colors'>"+"gray31</div>"+"<div id='d607' class='colors'>"+"grey31</div>"+"<div id='d608' class='colors'>"+"gray30</div>"+"<div id='d609' class='colors'>"+"grey30</div>"+"<div id='d610' class='colors'>"+"gray29</div>"+"<div id='d611' class='colors'>"+"grey29</div>"+"<div id='d612' class='colors'>"+"gray28</div>"+"<div id='d613' class='colors'>"+"grey28</div>"+"<div id='d614' class='colors'>"+"gray27</div>"+"<div id='d615' class='colors'>"+"grey27</div>"+"<div id='d616' class='colors'>"+"gray26</div>"+"<div id='d617' class='colors'>"+"grey26</div>"+"<div id='d618' class='colors'>"+"gray25</div>"+"<div id='d619' class='colors'>"+"grey25</div>"+"<div id='d620' class='colors'>"+"gray24</div>"+"<div id='d621' class='colors'>"+"grey24</div>"+"<div id='d622' class='colors'>"+"gray23</div>"+"<div id='d623' class='colors'>"+"grey23</div>"+"<div id='d624' class='colors'>"+"gray22</div>"+"<div id='d625' class='colors'>"+"grey22</div>"+"<div id='d626' class='colors'>"+"gray21</div>"+"<div id='d627' class='colors'>"+"grey21</div>"+"<div id='d628' class='colors'>"+"gray20</div>"+"<div id='d629' class='colors'>"+"grey20</div>"+"<div id='d630' class='colors'>"+"gray19</div>"+"<div id='d631' class='colors'>"+"grey19</div>"+"<div id='d632' class='colors'>"+"gray18</div>"+"<div id='d633' class='colors'>"+"grey18</div>"+"<div id='d634' class='colors'>"+"gray17</div>"+"<div id='d635' class='colors'>"+"grey17</div>"+"<div id='d636' class='colors'>"+"gray16</div>"+"<div id='d637' class='colors'>"+"grey16</div>"+"<div id='d638' class='colors'>"+"gray15</div>"+"<div id='d639' class='colors'>"+"grey15</div>"+"<div id='d640' class='colors'>"+"gray14</div>"+"<div id='d641' class='colors'>"+"grey14</div>"+"<div id='d642' class='colors'>"+"gray13</div>"+"<div id='d643' class='colors'>"+"grey13</div>"+"<div id='d644' class='colors'>"+"gray12</div>"+"<div id='d645' class='colors'>"+"grey12</div>"+"<div id='d646' class='colors'>"+"gray11</div>"+"<div id='d647' class='colors'>"+"grey11</div>"+"<div id='d648' class='colors'>"+"gray10</div>"+"<div id='d649' class='colors'>"+"grey10</div>"+"<div id='d650' class='colors'>"+"gray9</div>"+"<div id='d651' class='colors'>"+"grey9</div>"+"<div id='d652' class='colors'>"+"gray8</div>"+"<div id='d653' class='colors'>"+"grey8</div>"+"<div id='d654' class='colors'>"+"gray7</div>"+"<div id='d655' class='colors'>"+"grey7</div>"+"<div id='d656' class='colors'>"+"gray6</div>"+"<div id='d657' class='colors'>"+"grey6</div>"+"<div id='d658' class='colors'>"+"gray5</div>"+"<div id='d659' class='colors'>"+"grey5</div>"+"<div id='d660' class='colors'>"+"gray4</div>"+"<div id='d661' class='colors'>"+"grey4</div>"+"<div id='d662' class='colors'>"+"gray3</div>"+"<div id='d663' class='colors'>"+"grey3</div>"+"<div id='d664' class='colors'>"+"gray2</div>"+"<div id='d665' class='colors'>"+"grey2</div>"+"<div id='d666' class='colors'>"+"gray1</div>"+"<div id='d667' class='colors'>"+"grey1</div>"+"<div id='d668' class='colors'>"+"black</div>"+"<div id='d669' class='colors'>"+"gray0</div>"+"<div id='d670' class='colors'>"+"grey0</div>"+"<div id='d671' class='colors'>"+"opaque</div>"+"<div id='d672' class='colors'>"+"none</div>"+"<div id='d673' class='colors'>"+"transparent</div>"+"</div>"+"<div id='colornames'>WHERE THE COLORNAMES WILL GO</div>"+"<script type='text/javascript' src='colordict.js'></script>"+"<script type='text/javascript' src='colorpixx.js'></script>"
+
+
+function showpicker()
+ {
+ $('#popupContact').html(colorpicker);
+ $('#swingleft').append("whos the dadd addad");
+ $('#popupContact').css('height', '1500px')
+ }
+
+$('#colorlist').click(function(){showpicker()})
+
+
+
+
diff --git a/frontend/imgrid/colors/junk/scrollio.html b/frontend/imgrid/colors/junk/scrollio.html
new file mode 100755
index 0000000..e1443c3
--- /dev/null
+++ b/frontend/imgrid/colors/junk/scrollio.html
@@ -0,0 +1,3850 @@
+<html>
+<head>
+<link rel="stylesheet" type="text/css" href="ScrollEffect.css" />
+<script type="text/javascript" src="ScrollEffect.js"></script>
+
+<style type='text/css'>
+
+body
+{
+margin:0;
+}
+
+#colorpicker
+{
+position:absolute;
+width:100%;
+font-family:helvetica;
+font-size:10px;
+//background-color: gray;
+//background-image: url("http://asdf.us/im/6f/gradient_bgdither_1321255670_pepper.gif");
+background-color: black;
+background-image: url("http://dump.fm/static/img/bg.dither.gif")
+
+}
+
+#container div
+{
+text-align:left;
+display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+min-height: 30px;
+zoom: 1;
+word-wrap: break-word;
+*display: inline;
+cursor:pointer;
+}
+
+#container
+{
+margin:0 auto;
+width:31%;
+padding-bottom:0px;
+padding-right:10px;
+padding-left:10px;
+text-align:center;
+position:absolute;
+height:850px;
+}
+
+#viewarea
+{
+position: relative;
+top: 10%;
+width: 31%;
+height: 820px;
+overflow: hidden;
+margin:0 auto;
+padding-top:10px;
+padding-right:10px;
+padding-left:10px;
+text-align:center;
+border-style:outset;
+border-width:10px;
+}
+
+#colornames
+{
+color:white;
+position:fixed;
+font-size:50px;
+top:50px;
+left:2%;
+width:400px;
+}
+
+#switches
+ {
+ position:fixed;
+ top:20px;
+ right:1%;
+ height:400px;
+ width:300px;
+ font-size:20px;
+ border-style: groove;
+ border-width: 4px;
+ background-color:gray;
+ padding:2px;
+ box-shadow: 10px 10px 5px #141414;
+ }
+
+#infoswitch, #hexswitch, #backgroundswitch
+ {
+ background-image:url(http://asdf.us/im/58/gradient_whitegray80_1321305183_1321305241_pepper.jpg);
+ cursor:pointer;
+ }
+#preview
+ {
+ height:150px;
+ }
+
+
+#holder
+ {
+ float:bottom;
+ }
+
+#transparent
+ {
+ font-size:12px;
+ }
+#namespace
+ {
+ width:inherit;
+ }
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{
+height:30;
+width:10px;
+}
+</style></head><body>
+<div id='colorpicker'>
+<div id='viewarea' class="panorama">
+<div id='container'>
+<div id='d0' class='colors'>
+snow</div>
+<div id='d1' class='colors'>
+snow1</div>
+<div id='d2' class='colors'>
+snow2</div>
+<div id='d3' class='colors'>
+RosyBrown1</div>
+<div id='d4' class='colors'>
+RosyBrown2</div>
+<div id='d5' class='colors'>
+snow3</div>
+<div id='d6' class='colors'>
+LightCoral</div>
+<div id='d7' class='colors'>
+IndianRed1</div>
+<div id='d8' class='colors'>
+RosyBrown3</div>
+<div id='d9' class='colors'>
+IndianRed2</div>
+<div id='d10' class='colors'>
+RosyBrown</div>
+<div id='d11' class='colors'>
+brown1</div>
+<div id='d12' class='colors'>
+firebrick1</div>
+<div id='d13' class='colors'>
+brown2</div>
+<div id='d14' class='colors'>
+IndianRed</div>
+<div id='d15' class='colors'>
+IndianRed3</div>
+<div id='d16' class='colors'>
+firebrick2</div>
+<div id='d17' class='colors'>
+snow4</div>
+<div id='d18' class='colors'>
+brown3</div>
+<div id='d19' class='colors'>
+red</div>
+<div id='d20' class='colors'>
+red1</div>
+<div id='d21' class='colors'>
+RosyBrown4</div>
+<div id='d22' class='colors'>
+firebrick3</div>
+<div id='d23' class='colors'>
+red2</div>
+<div id='d24' class='colors'>
+firebrick</div>
+<div id='d25' class='colors'>
+brown</div>
+<div id='d26' class='colors'>
+red3</div>
+<div id='d27' class='colors'>
+IndianRed4</div>
+<div id='d28' class='colors'>
+brown4</div>
+<div id='d29' class='colors'>
+firebrick4</div>
+<div id='d30' class='colors'>
+DarkRed</div>
+<div id='d31' class='colors'>
+red4</div>
+<div id='d32' class='colors'>
+maroon</div>
+<div id='d33' class='colors'>
+LightPink1</div>
+<div id='d34' class='colors'>
+LightPink3</div>
+<div id='d35' class='colors'>
+LightPink4</div>
+<div id='d36' class='colors'>
+LightPink2</div>
+<div id='d37' class='colors'>
+LightPink</div>
+<div id='d38' class='colors'>
+pink</div>
+<div id='d39' class='colors'>
+crimson</div>
+<div id='d40' class='colors'>
+pink1</div>
+<div id='d41' class='colors'>
+pink2</div>
+<div id='d42' class='colors'>
+pink3</div>
+<div id='d43' class='colors'>
+pink4</div>
+<div id='d44' class='colors'>
+PaleVioletRed4</div>
+<div id='d45' class='colors'>
+PaleVioletRed</div>
+<div id='d46' class='colors'>
+PaleVioletRed2</div>
+<div id='d47' class='colors'>
+PaleVioletRed1</div>
+<div id='d48' class='colors'>
+PaleVioletRed3</div>
+<div id='d49' class='colors'>
+LavenderBlush</div>
+<div id='d50' class='colors'>
+LavenderBlush1</div>
+<div id='d51' class='colors'>
+LavenderBlush3</div>
+<div id='d52' class='colors'>
+LavenderBlush2</div>
+<div id='d53' class='colors'>
+LavenderBlush4</div>
+<div id='d54' class='colors'>
+maroon</div>
+<div id='d55' class='colors'>
+HotPink3</div>
+<div id='d56' class='colors'>
+VioletRed3</div>
+<div id='d57' class='colors'>
+VioletRed1</div>
+<div id='d58' class='colors'>
+VioletRed2</div>
+<div id='d59' class='colors'>
+VioletRed4</div>
+<div id='d60' class='colors'>
+HotPink2</div>
+<div id='d61' class='colors'>
+HotPink1</div>
+<div id='d62' class='colors'>
+HotPink4</div>
+<div id='d63' class='colors'>
+HotPink</div>
+<div id='d64' class='colors'>
+DeepPink</div>
+<div id='d65' class='colors'>
+DeepPink1</div>
+<div id='d66' class='colors'>
+DeepPink2</div>
+<div id='d67' class='colors'>
+DeepPink3</div>
+<div id='d68' class='colors'>
+DeepPink4</div>
+<div id='d69' class='colors'>
+maroon1</div>
+<div id='d70' class='colors'>
+maroon2</div>
+<div id='d71' class='colors'>
+maroon3</div>
+<div id='d72' class='colors'>
+maroon4</div>
+<div id='d73' class='colors'>
+MediumVioletRed</div>
+<div id='d74' class='colors'>
+VioletRed</div>
+<div id='d75' class='colors'>
+orchid2</div>
+<div id='d76' class='colors'>
+orchid</div>
+<div id='d77' class='colors'>
+orchid1</div>
+<div id='d78' class='colors'>
+orchid3</div>
+<div id='d79' class='colors'>
+orchid4</div>
+<div id='d80' class='colors'>
+thistle1</div>
+<div id='d81' class='colors'>
+thistle2</div>
+<div id='d82' class='colors'>
+plum1</div>
+<div id='d83' class='colors'>
+plum2</div>
+<div id='d84' class='colors'>
+thistle</div>
+<div id='d85' class='colors'>
+thistle3</div>
+<div id='d86' class='colors'>
+plum</div>
+<div id='d87' class='colors'>
+violet</div>
+<div id='d88' class='colors'>
+plum3</div>
+<div id='d89' class='colors'>
+thistle4</div>
+<div id='d90' class='colors'>
+fuchsia</div>
+<div id='d91' class='colors'>
+magenta</div>
+<div id='d92' class='colors'>
+magenta1</div>
+<div id='d93' class='colors'>
+plum4</div>
+<div id='d94' class='colors'>
+magenta2</div>
+<div id='d95' class='colors'>
+magenta3</div>
+<div id='d96' class='colors'>
+DarkMagenta</div>
+<div id='d97' class='colors'>
+magenta4</div>
+<div id='d98' class='colors'>
+purple</div>
+<div id='d99' class='colors'>
+MediumOrchid</div>
+<div id='d100' class='colors'>
+MediumOrchid1</div>
+<div id='d101' class='colors'>
+MediumOrchid2</div>
+<div id='d102' class='colors'>
+MediumOrchid3</div>
+<div id='d103' class='colors'>
+MediumOrchid4</div>
+<div id='d104' class='colors'>
+DarkViolet</div>
+<div id='d105' class='colors'>
+DarkOrchid</div>
+<div id='d106' class='colors'>
+DarkOrchid1</div>
+<div id='d107' class='colors'>
+DarkOrchid3</div>
+<div id='d108' class='colors'>
+DarkOrchid2</div>
+<div id='d109' class='colors'>
+DarkOrchid4</div>
+<div id='d110' class='colors'>
+purple</div>
+<div id='d111' class='colors'>
+indigo</div>
+<div id='d112' class='colors'>
+BlueViolet</div>
+<div id='d113' class='colors'>
+purple2</div>
+<div id='d114' class='colors'>
+purple3</div>
+<div id='d115' class='colors'>
+purple4</div>
+<div id='d116' class='colors'>
+purple1</div>
+<div id='d117' class='colors'>
+MediumPurple</div>
+<div id='d118' class='colors'>
+MediumPurple1</div>
+<div id='d119' class='colors'>
+MediumPurple2</div>
+<div id='d120' class='colors'>
+MediumPurple3</div>
+<div id='d121' class='colors'>
+MediumPurple4</div>
+<div id='d122' class='colors'>
+DarkSlateBlue</div>
+<div id='d123' class='colors'>
+LightSlateBlue</div>
+<div id='d124' class='colors'>
+MediumSlateBlue</div>
+<div id='d125' class='colors'>
+SlateBlue</div>
+<div id='d126' class='colors'>
+SlateBlue1</div>
+<div id='d127' class='colors'>
+SlateBlue2</div>
+<div id='d128' class='colors'>
+SlateBlue3</div>
+<div id='d129' class='colors'>
+SlateBlue4</div>
+<div id='d130' class='colors'>
+GhostWhite</div>
+<div id='d131' class='colors'>
+lavender</div>
+<div id='d132' class='colors'>
+blue</div>
+<div id='d133' class='colors'>
+blue1</div>
+<div id='d134' class='colors'>
+blue2</div>
+<div id='d135' class='colors'>
+blue3</div>
+<div id='d136' class='colors'>
+MediumBlue</div>
+<div id='d137' class='colors'>
+blue4</div>
+<div id='d138' class='colors'>
+DarkBlue</div>
+<div id='d139' class='colors'>
+MidnightBlue</div>
+<div id='d140' class='colors'>
+navy</div>
+<div id='d141' class='colors'>
+NavyBlue</div>
+<div id='d142' class='colors'>
+RoyalBlue</div>
+<div id='d143' class='colors'>
+RoyalBlue1</div>
+<div id='d144' class='colors'>
+RoyalBlue2</div>
+<div id='d145' class='colors'>
+RoyalBlue3</div>
+<div id='d146' class='colors'>
+RoyalBlue4</div>
+<div id='d147' class='colors'>
+CornflowerBlue</div>
+<div id='d148' class='colors'>
+LightSteelBlue</div>
+<div id='d149' class='colors'>
+LightSteelBlue1</div>
+<div id='d150' class='colors'>
+LightSteelBlue2</div>
+<div id='d151' class='colors'>
+LightSteelBlue3</div>
+<div id='d152' class='colors'>
+LightSteelBlue4</div>
+<div id='d153' class='colors'>
+SlateGray4</div>
+<div id='d154' class='colors'>
+SlateGray1</div>
+<div id='d155' class='colors'>
+SlateGray2</div>
+<div id='d156' class='colors'>
+SlateGray3</div>
+<div id='d157' class='colors'>
+LightSlateGray</div>
+<div id='d158' class='colors'>
+LightSlateGrey</div>
+<div id='d159' class='colors'>
+SlateGray</div>
+<div id='d160' class='colors'>
+SlateGrey</div>
+<div id='d161' class='colors'>
+DodgerBlue</div>
+<div id='d162' class='colors'>
+DodgerBlue1</div>
+<div id='d163' class='colors'>
+DodgerBlue2</div>
+<div id='d164' class='colors'>
+DodgerBlue4</div>
+<div id='d165' class='colors'>
+DodgerBlue3</div>
+<div id='d166' class='colors'>
+AliceBlue</div>
+<div id='d167' class='colors'>
+SteelBlue4</div>
+<div id='d168' class='colors'>
+SteelBlue</div>
+<div id='d169' class='colors'>
+SteelBlue1</div>
+<div id='d170' class='colors'>
+SteelBlue2</div>
+<div id='d171' class='colors'>
+SteelBlue3</div>
+<div id='d172' class='colors'>
+SkyBlue4</div>
+<div id='d173' class='colors'>
+SkyBlue1</div>
+<div id='d174' class='colors'>
+SkyBlue2</div>
+<div id='d175' class='colors'>
+SkyBlue3</div>
+<div id='d176' class='colors'>
+LightSkyBlue</div>
+<div id='d177' class='colors'>
+LightSkyBlue4</div>
+<div id='d178' class='colors'>
+LightSkyBlue1</div>
+<div id='d179' class='colors'>
+LightSkyBlue2</div>
+<div id='d180' class='colors'>
+LightSkyBlue3</div>
+<div id='d181' class='colors'>
+SkyBlue</div>
+<div id='d182' class='colors'>
+LightBlue3</div>
+<div id='d183' class='colors'>
+DeepSkyBlue</div>
+<div id='d184' class='colors'>
+DeepSkyBlue1</div>
+<div id='d185' class='colors'>
+DeepSkyBlue2</div>
+<div id='d186' class='colors'>
+DeepSkyBlue4</div>
+<div id='d187' class='colors'>
+DeepSkyBlue3</div>
+<div id='d188' class='colors'>
+LightBlue1</div>
+<div id='d189' class='colors'>
+LightBlue2</div>
+<div id='d190' class='colors'>
+LightBlue</div>
+<div id='d191' class='colors'>
+LightBlue4</div>
+<div id='d192' class='colors'>
+PowderBlue</div>
+<div id='d193' class='colors'>
+CadetBlue1</div>
+<div id='d194' class='colors'>
+CadetBlue2</div>
+<div id='d195' class='colors'>
+CadetBlue3</div>
+<div id='d196' class='colors'>
+CadetBlue4</div>
+<div id='d197' class='colors'>
+turquoise1</div>
+<div id='d198' class='colors'>
+turquoise2</div>
+<div id='d199' class='colors'>
+turquoise3</div>
+<div id='d200' class='colors'>
+turquoise4</div>
+<div id='d201' class='colors'>
+cadet blue</div>
+<div id='d202' class='colors'>
+CadetBlue</div>
+<div id='d203' class='colors'>
+DarkTurquoise</div>
+<div id='d204' class='colors'>
+azure</div>
+<div id='d205' class='colors'>
+azure1</div>
+<div id='d206' class='colors'>
+LightCyan</div>
+<div id='d207' class='colors'>
+LightCyan1</div>
+<div id='d208' class='colors'>
+azure2</div>
+<div id='d209' class='colors'>
+LightCyan2</div>
+<div id='d210' class='colors'>
+PaleTurquoise1</div>
+<div id='d211' class='colors'>
+PaleTurquoise</div>
+<div id='d212' class='colors'>
+PaleTurquoise2</div>
+<div id='d213' class='colors'>
+DarkSlateGray1</div>
+<div id='d214' class='colors'>
+azure3</div>
+<div id='d215' class='colors'>
+LightCyan3</div>
+<div id='d216' class='colors'>
+DarkSlateGray2</div>
+<div id='d217' class='colors'>
+PaleTurquoise3</div>
+<div id='d218' class='colors'>
+DarkSlateGray3</div>
+<div id='d219' class='colors'>
+azure4</div>
+<div id='d220' class='colors'>
+LightCyan4</div>
+<div id='d221' class='colors'>
+aqua</div>
+<div id='d222' class='colors'>
+cyan</div>
+<div id='d223' class='colors'>
+cyan1</div>
+<div id='d224' class='colors'>
+PaleTurquoise4</div>
+<div id='d225' class='colors'>
+cyan2</div>
+<div id='d226' class='colors'>
+DarkSlateGray4</div>
+<div id='d227' class='colors'>
+cyan3</div>
+<div id='d228' class='colors'>
+cyan4</div>
+<div id='d229' class='colors'>
+DarkCyan</div>
+<div id='d230' class='colors'>
+teal</div>
+<div id='d231' class='colors'>
+DarkSlateGray</div>
+<div id='d232' class='colors'>
+DarkSlateGrey</div>
+<div id='d233' class='colors'>
+MediumTurquoise</div>
+<div id='d234' class='colors'>
+LightSeaGreen</div>
+<div id='d235' class='colors'>
+turquoise</div>
+<div id='d236' class='colors'>
+aquamarine4</div>
+<div id='d237' class='colors'>
+aquamarine</div>
+<div id='d238' class='colors'>
+aquamarine1</div>
+<div id='d239' class='colors'>
+aquamarine2</div>
+<div id='d240' class='colors'>
+aquamarine3</div>
+<div id='d241' class='colors'>
+MediumAquamarine</div>
+<div id='d242' class='colors'>
+MediumSpringGreen</div>
+<div id='d243' class='colors'>
+MintCream</div>
+<div id='d244' class='colors'>
+SpringGreen</div>
+<div id='d245' class='colors'>
+SpringGreen1</div>
+<div id='d246' class='colors'>
+SpringGreen2</div>
+<div id='d247' class='colors'>
+SpringGreen3</div>
+<div id='d248' class='colors'>
+SpringGreen4</div>
+<div id='d249' class='colors'>
+MediumSeaGreen</div>
+<div id='d250' class='colors'>
+SeaGreen</div>
+<div id='d251' class='colors'>
+SeaGreen3</div>
+<div id='d252' class='colors'>
+SeaGreen1</div>
+<div id='d253' class='colors'>
+SeaGreen4</div>
+<div id='d254' class='colors'>
+SeaGreen2</div>
+<div id='d255' class='colors'>
+MediumForestGreen</div>
+<div id='d256' class='colors'>
+honeydew</div>
+<div id='d257' class='colors'>
+honeydew1</div>
+<div id='d258' class='colors'>
+honeydew2</div>
+<div id='d259' class='colors'>
+DarkSeaGreen1</div>
+<div id='d260' class='colors'>
+DarkSeaGreen2</div>
+<div id='d261' class='colors'>
+PaleGreen1</div>
+<div id='d262' class='colors'>
+PaleGreen</div>
+<div id='d263' class='colors'>
+honeydew3</div>
+<div id='d264' class='colors'>
+LightGreen</div>
+<div id='d265' class='colors'>
+PaleGreen2</div>
+<div id='d266' class='colors'>
+DarkSeaGreen3</div>
+<div id='d267' class='colors'>
+DarkSeaGreen</div>
+<div id='d268' class='colors'>
+PaleGreen3</div>
+<div id='d269' class='colors'>
+honeydew4</div>
+<div id='d270' class='colors'>
+green1</div>
+<div id='d271' class='colors'>
+lime</div>
+<div id='d272' class='colors'>
+LimeGreen</div>
+<div id='d273' class='colors'>
+DarkSeaGreen4</div>
+<div id='d274' class='colors'>
+green2</div>
+<div id='d275' class='colors'>
+PaleGreen4</div>
+<div id='d276' class='colors'>
+green3</div>
+<div id='d277' class='colors'>
+ForestGreen</div>
+<div id='d278' class='colors'>
+green4</div>
+<div id='d279' class='colors'>
+green</div>
+<div id='d280' class='colors'>
+DarkGreen</div>
+<div id='d281' class='colors'>
+LawnGreen</div>
+<div id='d282' class='colors'>
+chartreuse</div>
+<div id='d283' class='colors'>
+chartreuse1</div>
+<div id='d284' class='colors'>
+chartreuse2</div>
+<div id='d285' class='colors'>
+chartreuse3</div>
+<div id='d286' class='colors'>
+chartreuse4</div>
+<div id='d287' class='colors'>
+GreenYellow</div>
+<div id='d288' class='colors'>
+DarkOliveGreen3</div>
+<div id='d289' class='colors'>
+DarkOliveGreen1</div>
+<div id='d290' class='colors'>
+DarkOliveGreen2</div>
+<div id='d291' class='colors'>
+DarkOliveGreen4</div>
+<div id='d292' class='colors'>
+DarkOliveGreen</div>
+<div id='d293' class='colors'>
+OliveDrab</div>
+<div id='d294' class='colors'>
+OliveDrab1</div>
+<div id='d295' class='colors'>
+OliveDrab2</div>
+<div id='d296' class='colors'>
+OliveDrab3</div>
+<div id='d297' class='colors'>
+YellowGreen</div>
+<div id='d298' class='colors'>
+OliveDrab4</div>
+<div id='d299' class='colors'>
+ivory</div>
+<div id='d300' class='colors'>
+ivory1</div>
+<div id='d301' class='colors'>
+LightYellow</div>
+<div id='d302' class='colors'>
+LightYellow1</div>
+<div id='d303' class='colors'>
+beige</div>
+<div id='d304' class='colors'>
+ivory2</div>
+<div id='d305' class='colors'>
+LightGoldenrodYellow</div>
+<div id='d306' class='colors'>
+LightYellow2</div>
+<div id='d307' class='colors'>
+ivory3</div>
+<div id='d308' class='colors'>
+LightYellow3</div>
+<div id='d309' class='colors'>
+ivory4</div>
+<div id='d310' class='colors'>
+LightYellow4</div>
+<div id='d311' class='colors'>
+yellow</div>
+<div id='d312' class='colors'>
+yellow1</div>
+<div id='d313' class='colors'>
+yellow2</div>
+<div id='d314' class='colors'>
+yellow3</div>
+<div id='d315' class='colors'>
+yellow4</div>
+<div id='d316' class='colors'>
+olive</div>
+<div id='d317' class='colors'>
+DarkKhaki</div>
+<div id='d318' class='colors'>
+khaki2</div>
+<div id='d319' class='colors'>
+LemonChiffon4</div>
+<div id='d320' class='colors'>
+khaki1</div>
+<div id='d321' class='colors'>
+khaki3</div>
+<div id='d322' class='colors'>
+khaki4</div>
+<div id='d323' class='colors'>
+PaleGoldenrod</div>
+<div id='d324' class='colors'>
+LemonChiffon</div>
+<div id='d325' class='colors'>
+LemonChiffon1</div>
+<div id='d326' class='colors'>
+khaki</div>
+<div id='d327' class='colors'>
+LemonChiffon3</div>
+<div id='d328' class='colors'>
+LemonChiffon2</div>
+<div id='d329' class='colors'>
+MediumGoldenRod</div>
+<div id='d330' class='colors'>
+cornsilk4</div>
+<div id='d331' class='colors'>
+gold</div>
+<div id='d332' class='colors'>
+gold1</div>
+<div id='d333' class='colors'>
+gold2</div>
+<div id='d334' class='colors'>
+gold3</div>
+<div id='d335' class='colors'>
+gold4</div>
+<div id='d336' class='colors'>
+LightGoldenrod</div>
+<div id='d337' class='colors'>
+LightGoldenrod4</div>
+<div id='d338' class='colors'>
+LightGoldenrod1</div>
+<div id='d339' class='colors'>
+LightGoldenrod3</div>
+<div id='d340' class='colors'>
+LightGoldenrod2</div>
+<div id='d341' class='colors'>
+cornsilk3</div>
+<div id='d342' class='colors'>
+cornsilk2</div>
+<div id='d343' class='colors'>
+cornsilk</div>
+<div id='d344' class='colors'>
+cornsilk1</div>
+<div id='d345' class='colors'>
+goldenrod</div>
+<div id='d346' class='colors'>
+goldenrod1</div>
+<div id='d347' class='colors'>
+goldenrod2</div>
+<div id='d348' class='colors'>
+goldenrod3</div>
+<div id='d349' class='colors'>
+goldenrod4</div>
+<div id='d350' class='colors'>
+DarkGoldenrod</div>
+<div id='d351' class='colors'>
+DarkGoldenrod1</div>
+<div id='d352' class='colors'>
+DarkGoldenrod2</div>
+<div id='d353' class='colors'>
+DarkGoldenrod3</div>
+<div id='d354' class='colors'>
+DarkGoldenrod4</div>
+<div id='d355' class='colors'>
+FloralWhite</div>
+<div id='d356' class='colors'>
+wheat2</div>
+<div id='d357' class='colors'>
+OldLace</div>
+<div id='d358' class='colors'>
+wheat</div>
+<div id='d359' class='colors'>
+wheat1</div>
+<div id='d360' class='colors'>
+wheat3</div>
+<div id='d361' class='colors'>
+orange</div>
+<div id='d362' class='colors'>
+orange1</div>
+<div id='d363' class='colors'>
+orange2</div>
+<div id='d364' class='colors'>
+orange3</div>
+<div id='d365' class='colors'>
+orange4</div>
+<div id='d366' class='colors'>
+wheat4</div>
+<div id='d367' class='colors'>
+moccasin</div>
+<div id='d368' class='colors'>
+PapayaWhip</div>
+<div id='d369' class='colors'>
+NavajoWhite3</div>
+<div id='d370' class='colors'>
+BlanchedAlmond</div>
+<div id='d371' class='colors'>
+NavajoWhite</div>
+<div id='d372' class='colors'>
+NavajoWhite1</div>
+<div id='d373' class='colors'>
+NavajoWhite2</div>
+<div id='d374' class='colors'>
+NavajoWhite4</div>
+<div id='d375' class='colors'>
+AntiqueWhite4</div>
+<div id='d376' class='colors'>
+AntiqueWhite</div>
+<div id='d377' class='colors'>
+tan</div>
+<div id='d378' class='colors'>
+bisque4</div>
+<div id='d379' class='colors'>
+burlywood</div>
+<div id='d380' class='colors'>
+AntiqueWhite2</div>
+<div id='d381' class='colors'>
+burlywood1</div>
+<div id='d382' class='colors'>
+burlywood3</div>
+<div id='d383' class='colors'>
+burlywood2</div>
+<div id='d384' class='colors'>
+AntiqueWhite1</div>
+<div id='d385' class='colors'>
+burlywood4</div>
+<div id='d386' class='colors'>
+AntiqueWhite3</div>
+<div id='d387' class='colors'>
+DarkOrange</div>
+<div id='d388' class='colors'>
+bisque2</div>
+<div id='d389' class='colors'>
+bisque</div>
+<div id='d390' class='colors'>
+bisque1</div>
+<div id='d391' class='colors'>
+bisque3</div>
+<div id='d392' class='colors'>
+DarkOrange1</div>
+<div id='d393' class='colors'>
+linen</div>
+<div id='d394' class='colors'>
+DarkOrange2</div>
+<div id='d395' class='colors'>
+DarkOrange3</div>
+<div id='d396' class='colors'>
+DarkOrange4</div>
+<div id='d397' class='colors'>
+peru</div>
+<div id='d398' class='colors'>
+tan1</div>
+<div id='d399' class='colors'>
+tan2</div>
+<div id='d400' class='colors'>
+tan3</div>
+<div id='d401' class='colors'>
+tan4</div>
+<div id='d402' class='colors'>
+PeachPuff</div>
+<div id='d403' class='colors'>
+PeachPuff1</div>
+<div id='d404' class='colors'>
+PeachPuff4</div>
+<div id='d405' class='colors'>
+PeachPuff2</div>
+<div id='d406' class='colors'>
+PeachPuff3</div>
+<div id='d407' class='colors'>
+SandyBrown</div>
+<div id='d408' class='colors'>
+seashell4</div>
+<div id='d409' class='colors'>
+seashell2</div>
+<div id='d410' class='colors'>
+seashell3</div>
+<div id='d411' class='colors'>
+chocolate</div>
+<div id='d412' class='colors'>
+chocolate1</div>
+<div id='d413' class='colors'>
+chocolate2</div>
+<div id='d414' class='colors'>
+chocolate3</div>
+<div id='d415' class='colors'>
+chocolate4</div>
+<div id='d416' class='colors'>
+SaddleBrown</div>
+<div id='d417' class='colors'>
+seashell</div>
+<div id='d418' class='colors'>
+seashell1</div>
+<div id='d419' class='colors'>
+sienna4</div>
+<div id='d420' class='colors'>
+sienna</div>
+<div id='d421' class='colors'>
+sienna1</div>
+<div id='d422' class='colors'>
+sienna2</div>
+<div id='d423' class='colors'>
+sienna3</div>
+<div id='d424' class='colors'>
+LightSalmon3</div>
+<div id='d425' class='colors'>
+LightSalmon</div>
+<div id='d426' class='colors'>
+LightSalmon1</div>
+<div id='d427' class='colors'>
+LightSalmon4</div>
+<div id='d428' class='colors'>
+LightSalmon2</div>
+<div id='d429' class='colors'>
+coral</div>
+<div id='d430' class='colors'>
+OrangeRed</div>
+<div id='d431' class='colors'>
+OrangeRed1</div>
+<div id='d432' class='colors'>
+OrangeRed2</div>
+<div id='d433' class='colors'>
+OrangeRed3</div>
+<div id='d434' class='colors'>
+OrangeRed4</div>
+<div id='d435' class='colors'>
+DarkSalmon</div>
+<div id='d436' class='colors'>
+salmon1</div>
+<div id='d437' class='colors'>
+salmon2</div>
+<div id='d438' class='colors'>
+salmon3</div>
+<div id='d439' class='colors'>
+salmon4</div>
+<div id='d440' class='colors'>
+coral1</div>
+<div id='d441' class='colors'>
+coral2</div>
+<div id='d442' class='colors'>
+coral3</div>
+<div id='d443' class='colors'>
+coral4</div>
+<div id='d444' class='colors'>
+tomato4</div>
+<div id='d445' class='colors'>
+tomato</div>
+<div id='d446' class='colors'>
+tomato1</div>
+<div id='d447' class='colors'>
+tomato2</div>
+<div id='d448' class='colors'>
+tomato3</div>
+<div id='d449' class='colors'>
+MistyRose4</div>
+<div id='d450' class='colors'>
+MistyRose2</div>
+<div id='d451' class='colors'>
+MistyRose</div>
+<div id='d452' class='colors'>
+MistyRose1</div>
+<div id='d453' class='colors'>
+salmon</div>
+<div id='d454' class='colors'>
+MistyRose3</div>
+<div id='d455' class='colors'>
+white</div>
+<div id='d456' class='colors'>
+gray100</div>
+<div id='d457' class='colors'>
+grey100</div>
+<div id='d458' class='colors'>
+grey100</div>
+<div id='d459' class='colors'>
+gray99</div>
+<div id='d460' class='colors'>
+grey99</div>
+<div id='d461' class='colors'>
+gray98</div>
+<div id='d462' class='colors'>
+grey98</div>
+<div id='d463' class='colors'>
+gray97</div>
+<div id='d464' class='colors'>
+grey97</div>
+<div id='d465' class='colors'>
+gray96</div>
+<div id='d466' class='colors'>
+grey96</div>
+<div id='d467' class='colors'>
+WhiteSmoke</div>
+<div id='d468' class='colors'>
+gray95</div>
+<div id='d469' class='colors'>
+grey95</div>
+<div id='d470' class='colors'>
+gray94</div>
+<div id='d471' class='colors'>
+grey94</div>
+<div id='d472' class='colors'>
+gray93</div>
+<div id='d473' class='colors'>
+grey93</div>
+<div id='d474' class='colors'>
+gray92</div>
+<div id='d475' class='colors'>
+grey92</div>
+<div id='d476' class='colors'>
+gray91</div>
+<div id='d477' class='colors'>
+grey91</div>
+<div id='d478' class='colors'>
+gray90</div>
+<div id='d479' class='colors'>
+grey90</div>
+<div id='d480' class='colors'>
+gray89</div>
+<div id='d481' class='colors'>
+grey89</div>
+<div id='d482' class='colors'>
+gray88</div>
+<div id='d483' class='colors'>
+grey88</div>
+<div id='d484' class='colors'>
+gray87</div>
+<div id='d485' class='colors'>
+grey87</div>
+<div id='d486' class='colors'>
+gainsboro</div>
+<div id='d487' class='colors'>
+gray86</div>
+<div id='d488' class='colors'>
+grey86</div>
+<div id='d489' class='colors'>
+gray85</div>
+<div id='d490' class='colors'>
+grey85</div>
+<div id='d491' class='colors'>
+gray84</div>
+<div id='d492' class='colors'>
+grey84</div>
+<div id='d493' class='colors'>
+gray83</div>
+<div id='d494' class='colors'>
+grey83</div>
+<div id='d495' class='colors'>
+LightGray</div>
+<div id='d496' class='colors'>
+LightGrey</div>
+<div id='d497' class='colors'>
+gray82</div>
+<div id='d498' class='colors'>
+grey82</div>
+<div id='d499' class='colors'>
+gray81</div>
+<div id='d500' class='colors'>
+grey81</div>
+<div id='d501' class='colors'>
+gray80</div>
+<div id='d502' class='colors'>
+grey80</div>
+<div id='d503' class='colors'>
+gray79</div>
+<div id='d504' class='colors'>
+grey79</div>
+<div id='d505' class='colors'>
+gray78</div>
+<div id='d506' class='colors'>
+grey78</div>
+<div id='d507' class='colors'>
+gray77</div>
+<div id='d508' class='colors'>
+grey77</div>
+<div id='d509' class='colors'>
+gray76</div>
+<div id='d510' class='colors'>
+grey76</div>
+<div id='d511' class='colors'>
+silver</div>
+<div id='d512' class='colors'>
+gray75</div>
+<div id='d513' class='colors'>
+grey75</div>
+<div id='d514' class='colors'>
+gray74</div>
+<div id='d515' class='colors'>
+grey74</div>
+<div id='d516' class='colors'>
+gray73</div>
+<div id='d517' class='colors'>
+grey73</div>
+<div id='d518' class='colors'>
+gray72</div>
+<div id='d519' class='colors'>
+grey72</div>
+<div id='d520' class='colors'>
+gray71</div>
+<div id='d521' class='colors'>
+grey71</div>
+<div id='d522' class='colors'>
+gray70</div>
+<div id='d523' class='colors'>
+grey70</div>
+<div id='d524' class='colors'>
+gray69</div>
+<div id='d525' class='colors'>
+grey69</div>
+<div id='d526' class='colors'>
+gray68</div>
+<div id='d527' class='colors'>
+grey68</div>
+<div id='d528' class='colors'>
+gray67</div>
+<div id='d529' class='colors'>
+grey67</div>
+<div id='d530' class='colors'>
+DarkGray</div>
+<div id='d531' class='colors'>
+DarkGrey</div>
+<div id='d532' class='colors'>
+gray66</div>
+<div id='d533' class='colors'>
+grey66</div>
+<div id='d534' class='colors'>
+gray65</div>
+<div id='d535' class='colors'>
+grey65</div>
+<div id='d536' class='colors'>
+gray64</div>
+<div id='d537' class='colors'>
+grey64</div>
+<div id='d538' class='colors'>
+gray63</div>
+<div id='d539' class='colors'>
+grey63</div>
+<div id='d540' class='colors'>
+gray62</div>
+<div id='d541' class='colors'>
+grey62</div>
+<div id='d542' class='colors'>
+gray61</div>
+<div id='d543' class='colors'>
+grey61</div>
+<div id='d544' class='colors'>
+gray60</div>
+<div id='d545' class='colors'>
+grey60</div>
+<div id='d546' class='colors'>
+gray59</div>
+<div id='d547' class='colors'>
+grey59</div>
+<div id='d548' class='colors'>
+gray58</div>
+<div id='d549' class='colors'>
+grey58</div>
+<div id='d550' class='colors'>
+gray57</div>
+<div id='d551' class='colors'>
+grey57</div>
+<div id='d552' class='colors'>
+gray56</div>
+<div id='d553' class='colors'>
+grey56</div>
+<div id='d554' class='colors'>
+gray55</div>
+<div id='d555' class='colors'>
+grey55</div>
+<div id='d556' class='colors'>
+gray54</div>
+<div id='d557' class='colors'>
+grey54</div>
+<div id='d558' class='colors'>
+gray53</div>
+<div id='d559' class='colors'>
+grey53</div>
+<div id='d560' class='colors'>
+gray52</div>
+<div id='d561' class='colors'>
+grey52</div>
+<div id='d562' class='colors'>
+gray51</div>
+<div id='d563' class='colors'>
+grey51</div>
+<div id='d564' class='colors'>
+fractal</div>
+<div id='d565' class='colors'>
+gray50</div>
+<div id='d566' class='colors'>
+grey50</div>
+<div id='d567' class='colors'>
+gray</div>
+<div id='d568' class='colors'>
+gray49</div>
+<div id='d569' class='colors'>
+grey49</div>
+<div id='d570' class='colors'>
+gray48</div>
+<div id='d571' class='colors'>
+grey48</div>
+<div id='d572' class='colors'>
+gray47</div>
+<div id='d573' class='colors'>
+grey47</div>
+<div id='d574' class='colors'>
+gray46</div>
+<div id='d575' class='colors'>
+grey46</div>
+<div id='d576' class='colors'>
+gray45</div>
+<div id='d577' class='colors'>
+grey45</div>
+<div id='d578' class='colors'>
+gray44</div>
+<div id='d579' class='colors'>
+grey44</div>
+<div id='d580' class='colors'>
+gray43</div>
+<div id='d581' class='colors'>
+grey43</div>
+<div id='d582' class='colors'>
+gray42</div>
+<div id='d583' class='colors'>
+grey42</div>
+<div id='d584' class='colors'>
+DimGray</div>
+<div id='d585' class='colors'>
+DimGrey</div>
+<div id='d586' class='colors'>
+gray41</div>
+<div id='d587' class='colors'>
+grey41</div>
+<div id='d588' class='colors'>
+gray40</div>
+<div id='d589' class='colors'>
+grey40</div>
+<div id='d590' class='colors'>
+gray39</div>
+<div id='d591' class='colors'>
+grey39</div>
+<div id='d592' class='colors'>
+gray38</div>
+<div id='d593' class='colors'>
+grey38</div>
+<div id='d594' class='colors'>
+gray37</div>
+<div id='d595' class='colors'>
+grey37</div>
+<div id='d596' class='colors'>
+gray36</div>
+<div id='d597' class='colors'>
+grey36</div>
+<div id='d598' class='colors'>
+gray35</div>
+<div id='d599' class='colors'>
+grey35</div>
+<div id='d600' class='colors'>
+gray34</div>
+<div id='d601' class='colors'>
+grey34</div>
+<div id='d602' class='colors'>
+gray33</div>
+<div id='d603' class='colors'>
+grey33</div>
+<div id='d604' class='colors'>
+gray32</div>
+<div id='d605' class='colors'>
+grey32</div>
+<div id='d606' class='colors'>
+gray31</div>
+<div id='d607' class='colors'>
+grey31</div>
+<div id='d608' class='colors'>
+gray30</div>
+<div id='d609' class='colors'>
+grey30</div>
+<div id='d610' class='colors'>
+gray29</div>
+<div id='d611' class='colors'>
+grey29</div>
+<div id='d612' class='colors'>
+gray28</div>
+<div id='d613' class='colors'>
+grey28</div>
+<div id='d614' class='colors'>
+gray27</div>
+<div id='d615' class='colors'>
+grey27</div>
+<div id='d616' class='colors'>
+gray26</div>
+<div id='d617' class='colors'>
+grey26</div>
+<div id='d618' class='colors'>
+gray25</div>
+<div id='d619' class='colors'>
+grey25</div>
+<div id='d620' class='colors'>
+gray24</div>
+<div id='d621' class='colors'>
+grey24</div>
+<div id='d622' class='colors'>
+gray23</div>
+<div id='d623' class='colors'>
+grey23</div>
+<div id='d624' class='colors'>
+gray22</div>
+<div id='d625' class='colors'>
+grey22</div>
+<div id='d626' class='colors'>
+gray21</div>
+<div id='d627' class='colors'>
+grey21</div>
+<div id='d628' class='colors'>
+gray20</div>
+<div id='d629' class='colors'>
+grey20</div>
+<div id='d630' class='colors'>
+gray19</div>
+<div id='d631' class='colors'>
+grey19</div>
+<div id='d632' class='colors'>
+gray18</div>
+<div id='d633' class='colors'>
+grey18</div>
+<div id='d634' class='colors'>
+gray17</div>
+<div id='d635' class='colors'>
+grey17</div>
+<div id='d636' class='colors'>
+gray16</div>
+<div id='d637' class='colors'>
+grey16</div>
+<div id='d638' class='colors'>
+gray15</div>
+<div id='d639' class='colors'>
+grey15</div>
+<div id='d640' class='colors'>
+gray14</div>
+<div id='d641' class='colors'>
+grey14</div>
+<div id='d642' class='colors'>
+gray13</div>
+<div id='d643' class='colors'>
+grey13</div>
+<div id='d644' class='colors'>
+gray12</div>
+<div id='d645' class='colors'>
+grey12</div>
+<div id='d646' class='colors'>
+gray11</div>
+<div id='d647' class='colors'>
+grey11</div>
+<div id='d648' class='colors'>
+gray10</div>
+<div id='d649' class='colors'>
+grey10</div>
+<div id='d650' class='colors'>
+gray9</div>
+<div id='d651' class='colors'>
+grey9</div>
+<div id='d652' class='colors'>
+gray8</div>
+<div id='d653' class='colors'>
+grey8</div>
+<div id='d654' class='colors'>
+gray7</div>
+<div id='d655' class='colors'>
+grey7</div>
+<div id='d656' class='colors'>
+gray6</div>
+<div id='d657' class='colors'>
+grey6</div>
+<div id='d658' class='colors'>
+gray5</div>
+<div id='d659' class='colors'>
+grey5</div>
+<div id='d660' class='colors'>
+gray4</div>
+<div id='d661' class='colors'>
+grey4</div>
+<div id='d662' class='colors'>
+gray3</div>
+<div id='d663' class='colors'>
+grey3</div>
+<div id='d664' class='colors'>
+gray2</div>
+<div id='d665' class='colors'>
+grey2</div>
+<div id='d666' class='colors'>
+gray1</div>
+<div id='d667' class='colors'>
+grey1</div>
+<div id='d668' class='colors'>
+black</div>
+<div id='d669' class='colors'>
+gray0</div>
+<div id='d670' class='colors'>
+grey0</div>
+<div id='d671' class='colors'>
+opaque</div>
+<div id='d672' class='colors'>
+none</div>
+<div id='d673' class='colors'>
+transparent</div>
+</div>
+</div>
+
+<div id='colornames'>
+CLICK TO CHOOSE THE COLOR
+</div>
+
+<div id='switches'>
+
+<span id='title'>OPTIONS</span>
+<div id='hexswitch' class='theswitches'>CLICK TO USE HEX KEYS</div>
+<br>
+<div id='infoswitch' class='theswitches'>CLICK TO TOGGLE PALATE INFO<span id='infospace'></span></div>
+<br>
+<div id='backgroundswitch' class='theswitches'>CLICK TO TOGGLE BACKGROUNDS</div>
+<br>
+<div id='preview'></div>
+<div id='nameholder'>YOU WILL CHOOSE:<input id='namespace' type='text'></input></div>
+<br>
+<span id='transparent'>to choose transparent as a color, click <span id='transbutton'>HERE</span></span>
+</div>
+</div>
+<script type='text/javascript' src='jquery-1.6.4.min.js'></script>
+<script type='text/javascript' src='colordict.js'></script>
+
+<script type='text/javascript'>
+
+
+//setup dimensions
+//////////////////
+
+function regolden(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num/ratio)
+ return newnum
+ }
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newval = goldenize(result)
+ propval = newval.toString()+'px'
+ if(propertystr == 'height'){
+ $(idandselectr).css('width', propval)
+ }
+ else if(propertystr == 'width'){
+ $(idandselectr).css('height', propval)
+ }
+ }
+function shrinkwidth(arg){
+ for(var i=0; i < 5; i++){
+ arg = regolden(arg)
+ }
+ division = Math.round(arg)
+ return division
+}
+
+function makecolorswidth(){
+ colorswidth = shrinkwidth(window.innerWidth)
+ $('.colors').css('width', colorswidth.toString()+'px')
+}
+function makecolorsheight(){
+ result = getproperty('.colors', 'width')
+ newval = regolden(result)
+ propval = newval.toString()+'px'
+ $('.colors').css('height', propval)
+}
+//the following function sets up the font sizes
+//inrelation to the size of the hexswitch font
+function setupfonts(){
+ var firstfont = getproperty('#hexswitch', 'font-size')
+ var finalfont = goldenize(firstfont)
+ $('#namespace').css('font-size', finalfont+'px')
+ $('#namespace').css('width', $('#switches').css('width'))
+ var secondfont = getproperty('#namespace', 'font-size')
+ var finalfont = goldenize(secondfont)
+ $('#colornames').css('font-size', finalfont+'px')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ var transfont = regolden(firstfont)
+ $('#transparent').css('font-size', transfont+'px')
+}
+function getcontainerwidth(){
+ basis = $('.colors').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ secondbasis = '2px'
+ secondbasis = parseInt(secondbasis.slice(0,-2))
+ widthval = (secondbasis*8)+(basis*4)+(goldenize(basis)-basis)
+ widthval = widthval.toString()+'px'
+ return widthval
+}
+
+function makecontainerwidth(){
+ var containerwidth = getcontainerwidth()
+ $('#container').css('width',containerwidth)
+ $('#viewarea').css('width',containerwidth)
+}
+
+
+function setupsides()
+ {
+ var basis = $('#container').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ remainder = (100-basis)/2
+ widths = regolden(basis)
+ widths = widths.toString()+'px'
+ lateralbasis = regolden(remainder)
+ leftside = toString(lateralbasis)+'%'
+ rightside = toString(100-lateralbasis)+'%'
+ $('#colornames').css('left', leftside)
+ $('#switches').css({'width': widths, 'left': rightside})
+ }
+function previewdimensions(){
+ first = $('#switches').css('width')
+ first = parseInt(first.slice(0,-2))
+ width = regolden(first)
+ height = regolden(width)
+ width = width.toString()+'px'
+ height = height.toString()+'px'
+ $('#preview').css({'width':width, 'height':height})
+}
+function setupdimensions(){
+makecolorswidth()
+setupfonts()
+makecolorsheight()
+makecontainerwidth()
+setupsides()
+makegolden('#switches','width')
+previewdimensions()
+}
+setupdimensions()
+$(window).resize(function(){setupdimensions()})
+//$(window).resize()(function(){setupdimensions()})
+
+//BEGIN STYLINGS//
+//////////////////
+
+
+var old = {};
+function hovercss(sel, uno){
+
+ var chng = {};
+ chng['color'] = 'white';
+ chng['text-shadow'] = 'black 1px 2px';
+ chng['background-image'] = 'url(http://asdf.us/im/19/gradient_whitegray80_1321305183_1321305241_pepper_1321333403_pepper.jpg)';
+ if(uno == 'over'){
+ for(var key in chng){
+ old[key] = $('#'+sel).css(key)
+ }
+ for(var key in chng){
+ $('#'+sel).css(key, chng[key])
+ }
+ }
+ if(uno == 'out'){
+ for(var key in old){
+ $('#'+sel).css(key, old[key])
+ }
+ }
+}
+$('.theswitches').hover(function(){hovercss(this.id, 'over')}, function(){hovercss(this.id, 'out')})
+
+var transcss = {
+ 'color':'#141414','box-shadow':'10px 10px 5px #141414',
+ 'background-color':'#D1D1D1','color':'#141414',
+ 'border-width':'2px','border-style':'outset','cursor':'pointer'}
+$('#transbutton').css(transcss)
+var hovertrans = {
+ 'background-color':'DarkGrey','color':'#383838','box-shadow':'5px 5px 2px #141414'
+}
+$('#transbutton').hover(function(){$('#transbutton').css(hovertrans)},function(){$('#transbutton').css(transcss)})
+//threewayselector for what goes in the divs
+infostate = 1
+function switchinfo()
+ {
+ if(infostate == 0)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(divtoname[divlist[i]])
+ };
+ infostate = 1
+ $('#infospace').html('(NAMES)');
+ }
+ else if(infostate == 1)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html("")
+ };
+ infostate = 2
+ $('#infospace').html('(NONE)');
+ }
+ else if(infostate == 2)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(nametohex[divtoname[divlist[i]]])
+ };
+ infostate = 0
+ $('#infospace').html('(HEXES)');
+ }
+ }
+$('#infoswitch').hover(function(){$('#infospace').show()}, function(){$('#infospace').hide('slow')} )
+$('#infoswitch').click(function(){switchinfo()})
+
+
+backgroundstate = 2;
+function switchbackground()
+ {
+ if(backgroundstate == 1)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image','url(http://dump.fm/static/img/bg.dither.gif)')
+ backgroundstate = 2;
+ $('#colornames').css('color', 'white')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ }
+ else if(backgroundstate == 2)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image', 'none')
+ backgroundstate = 0
+ }
+ else if(backgroundstate == 0)
+ {
+ $('#colorpicker').css('background-color', 'white')
+ $('#colorpicker').css('background-image', 'none')
+ $('#colornames').css('color', 'grey')
+ backgroundstate = 1
+ }
+ }
+
+$('#backgroundswitch').click(function(){switchbackground()})
+
+//takes a div name and returns a colorname
+
+function showcolorname(divstr)
+
+ {
+ colorname = divtoname['#'+divstr]
+ hex = nametohex[colorname]
+ imname = hextoname[hex]
+ if (hexes == true)
+ {
+ imname = hex
+ }
+
+ return imname
+ }
+function bigname(divstr)
+ {
+ colorname = showcolorname(divstr)
+ $('#colornames').html(colorname)
+
+ }
+function writeit(text)
+ {
+ $('#colornames').append(text)
+ }
+function makebig(divstr)
+ {
+ firstheight = $('#'+divstr).height()
+ newheight = goldenize(firstheight)
+ $('#'+divstr).height(newheight)
+ }
+function makesmall(divstr)
+ {
+ oldheight = $('.colors').height()
+ $('#'+divstr).height(oldheight)
+ }
+var choice;
+$('.colors').hover(function() {
+ bigname(this.id);
+// makebig(this.id);
+// makegolden('#'+this.id, 'height')},
+//function(){
+// makesmall(this.id);
+// makegolden('#'+this.id, 'height')
+});
+$('.colors').mouseover(function(){
+ if(this.id != 'd0'){
+ makebig(this.id);
+ makegolden('#'+this.id, 'height')
+ }})
+$('.colors').mouseout(function(){
+ makesmall(this.id);
+ makegolden('#'+this.id,'height');
+ })
+$(".colors").hover(function(){
+$('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+ });
+$('.colors').css('margin-top', '2px')
+var hexes = false
+function hexswitch()
+ {
+ if(hexes == false)
+ {
+ $('#hexswitch').html('CLICK TO USE COLOR NAMES')
+ hexes = true;
+ var nameval = $('#namespace').val()
+ $('#namespace').val(nametohex[nameval])
+ }
+
+ else
+ {
+ $('#hexswitch').html('CLICK TO USE HEX KEYS')
+ hexes = false;
+ var nameval = $('#namespace').val()
+ $('#namespace').val(hextoname[nameval])
+ }
+ }
+$('#hexswitch').click(function(){hexswitch()})
+
+$('.colors').click(function(){
+ putitin()
+ })
+
+function putitin()
+ {
+ thecolor = $('#colornames').html()
+ $('#namespace').val(thecolor)
+ if(hexes == false){
+ $('#preview').css({'background-color': nametohex[thecolor], 'border-style':'none'})
+ }
+ else{
+ $('#preview').css('background-color', thecolor)
+ }
+
+ }
+function transparent()
+ {
+ $('#namespace').val('transparent');
+ $('#preview').css({'background-color':'transparent','border-style':'dashed','border-width':'2px'})
+ }
+$('#transbutton').click(function(){transparent()})
+
+//$('#switches').bind('mousemove',function(e){
+// $("#colornames").html(" e.pageY: " + e.pageY);
+//});
+vt.start("viewarea", "container");
+
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/junk/separate b/frontend/imgrid/colors/junk/separate
new file mode 100755
index 0000000..b32bc49
--- /dev/null
+++ b/frontend/imgrid/colors/junk/separate
@@ -0,0 +1,126 @@
+#!/usr/bin/python2.7
+
+
+f = open('colors.html', 'r')
+lines = f.readlines()
+colornames = []
+hexes = []
+for line in lines:
+ if 'right' in line and 'td' in line:
+ colornames.append(line[22:-6])
+ if '#' in line:
+ hexes.append(line[21:28])
+ if line == lines[len(lines)-1]:
+ break
+print len(hexes)
+print len(colornames)
+###making a dictionary
+hextoname = {}
+nametohex = {}
+for i in hexes:
+ hextoname[i] = colornames[hexes.index(i)]
+for i in colornames:
+ nametohex[i] = hexes[colornames.index(i)]
+w = open('colordict.js', 'w')
+w.write("var hextoname = "+str(hextoname)+"\n")
+w.write("var nametohex = "+str(nametohex)+"\n")
+w.close()
+ds = []
+for x in range(674):
+ ds.append('d'+str(x))
+
+#print hexes
+#note last two hex values in lists are wrong for they correspond to none and transparent
+w = open('colorsnew.html', 'w')
+w.write("""<html>\n<head>\n
+<style type='text/css'>\n
+body\n{max-width:100%;\nmax-height:100%; \nfont-family:helvetica; \nfont-size:10px; \nword-wrap: break-word;}\n
+div\n{display: -moz-inline-stack;\ndisplay:inline-block;\nvertical-align:top;\nmin-height: 30px;\nzoom: 1;\n*display: inline;}\n}\n
+#main{width:600px;}\n""")
+w.write("#colornames\n{position:fixed;\nfont-size:50px;\ntop:50px;\nright:50%;}")
+for x in range(674):
+ w.write("\n#"+ds[x]+"\n{background-color:"+str(hexes[x])+"}\n")
+w.write(".colors\n{height:30px;\nwidth:10px;}\n")
+w.write("</style></head>")
+w.write("<body>\n<div id='main'>\n")
+for x in range(674):
+ w.write("<div id='"+ds[x]+"' class='colors'>\n"+colornames[x]+"</div>\n")
+w.write("</div>\n")
+w.write("<div id='colornames'>WHERE THE COLORNAMES WILL GO</div>")
+w.write("<script type='text/javascript' src='jquery-1.6.4.min.js'></script>")
+w.write("<script type='text/javascript' src='colordict.js'></script>\n")
+w.write("\n<script type='text/javascript'>")
+w.write("""\nfunction goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idstr, propertystr)
+ {
+ grab = $('.'+idstr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idstr, propertystr)
+ {
+ result = getproperty(idstr, propertystr)
+ newwidth = goldenize(result)
+ widthval = newwidth.toString()+'px'
+ $('.'+idstr).css('width', widthval)
+ }
+makegolden('colors', 'height')
+""")
+w.write("""\n
+//remove content this function takes the name out of the divs
+
+function removecontent()
+ {
+ $('.colors').html("")
+ }
+removecontent()""")
+w.write("""
+
+function colorToHex(color) {
+ if (color.substr(0, 1) === '#') {
+ return color;
+ }
+ var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color);
+
+ var red = parseInt(digits[2]);
+ var green = parseInt(digits[3]);
+ var blue = parseInt(digits[4]);
+
+ var rgb = blue | (green << 8) | (red << 16);
+ return digits[1] + '#' + rgb.toString(16);
+};
+
+//takes a div name and returns a colorname\n
+function showcolorname(divstr)\n
+ {\n
+ bgcolor = $('#'+divstr).css('background-color')
+ lowercasehex = colorToHex(bgcolor)
+ hex = lowercasehex.toUpperCase()
+ imname = hextoname[hex]
+/* if ($('#hexortext:checked').length == 1)
+ {
+ imname = hex
+ }*/
+ return imname
+ }
+function bigname(divstr)
+ {
+ bebop = showcolorname(toString(divstr))
+ $('#colornames').html(bebop)
+ }
+$('.colors').mouseover(function() {
+ bigname(this.id);
+});
+
+
+
+""")
+w.write("</script>")
+w.write("\n</body>\n</html>")
diff --git a/frontend/imgrid/colors/junk/todo.txt b/frontend/imgrid/colors/junk/todo.txt
new file mode 100755
index 0000000..ff9ae66
--- /dev/null
+++ b/frontend/imgrid/colors/junk/todo.txt
@@ -0,0 +1,135 @@
+manyprettygradients:
+finish formatting tumblr
+put on autoscroll
+think about font (minoan) THIS IS WHY WE NEED TEXT BLASTER
+turn it to a bot
+ pre-step: delete everything on there
+ step 1: gradientscrape longerlogfile
+ step 2: post those
+ step 3: make gradientscrape call itself every 30 minutes
+ step 5: swipe???
+ step 4: import the write function from main.py
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ python 2.6 == /opt/python2.6/bin/python
+
+
+ JUANITA = True
+ #JUANITA = False
+
+
+
+from main.py, import * (follow_followers, reblog_posts, post_images)
+process_followers()
+reblog_posts()
+post_images()
+
+def now ():
+ return int(time.mktime(time.localtime()))
+
+def save_seen (ids):
+ out = open (DUMP_SEEN+".tmp", "w")
+ for id in ids.keys():
+ out.write(id+"\n")
+ out.close()
+ system(["/bin/mv", DUMP_SEEN+".tmp", DUMP_SEEN])
+
+def slurp (file):
+ input = open (file, "r")
+ lines = input.readlines()
+ input.close()
+ return lines
+
+def new_dump (dumps, seen):
+ id = random.choice(dumps.keys())
+ while id in seen:
+ id = random.choice(dumps.keys())
+ thedump = dumps[id]
+ seen[id] = True
+ save_seen(seen)
+ if JUANITA:
+ print thedump
+ else:
+ dump.say(thedump)
+ wait = random.randint(2,28)*30 + random.randint(1,55)
+ print "sleeping for", str(wait/60) + "m" + str(wait % 60) + "s..."
+ print
+ time.sleep(wait)
+
+def main ():
+ score_lines = slurp(DUMP_LIST)
+ dumps = {}
+ scored = {}
+ # first pass to work out the top score for each dump
+ for line in score_lines:
+ # 0 id 1 score 2 favers 3 urls
+ partz = line.split("\t")
+#skipping over really old stuff
+ if int(partz[0]) < 3618853:
+ continue
+
+ urls = partz[3].split(" ")
+ skip = False
+ for url in urls:
+ if "http" not in url:
+ skip = True
+ if skip:
+ continue
+ # dictionary: urls => (id, score)
+ if partz[3] in scored and int(partz[1]) > scored[partz[3]][1]:
+ scored[partz[3]] = (partz[0], int(partz[1]))
+ else:
+ scored[partz[3]] = (partz[0], int(partz[1]))
+
+ except KeyError:
+ continue
+ except ValueError:
+ continue
+
+ # second pass to weed out dumps with scores too high/low
+ for urls in scored.keys():
+ if scored[urls][1] > 0 and scored[urls][1] < 6:
+ # dictionary: id => urls
+ dumps[scored[urls][0]] = urls.strip()
+
+ seen_lines = slurp(DUMP_SEEN)
+ seen = {}
+ for line in seen_lines:
+ l = line.strip()
+ if len(l):
+ seen[l] = True
+
+ print len(dumps), "dumps in queue"
+ print len(seen_lines), "dumped already"
+
+ if JUANITA:
+ for i in xrange(10):
+ new_dump (dumps, seen)
+ else:
+ while (1):
+ new_dump (dumps, seen)
+ else:
+ print "TURNED OFF, sleeping for half an hour..."
+ time.sleep (30*60)
+
+main ()
+
diff --git a/frontend/imgrid/colors/junk/withscroller.html b/frontend/imgrid/colors/junk/withscroller.html
new file mode 100755
index 0000000..e1443c3
--- /dev/null
+++ b/frontend/imgrid/colors/junk/withscroller.html
@@ -0,0 +1,3850 @@
+<html>
+<head>
+<link rel="stylesheet" type="text/css" href="ScrollEffect.css" />
+<script type="text/javascript" src="ScrollEffect.js"></script>
+
+<style type='text/css'>
+
+body
+{
+margin:0;
+}
+
+#colorpicker
+{
+position:absolute;
+width:100%;
+font-family:helvetica;
+font-size:10px;
+//background-color: gray;
+//background-image: url("http://asdf.us/im/6f/gradient_bgdither_1321255670_pepper.gif");
+background-color: black;
+background-image: url("http://dump.fm/static/img/bg.dither.gif")
+
+}
+
+#container div
+{
+text-align:left;
+display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+min-height: 30px;
+zoom: 1;
+word-wrap: break-word;
+*display: inline;
+cursor:pointer;
+}
+
+#container
+{
+margin:0 auto;
+width:31%;
+padding-bottom:0px;
+padding-right:10px;
+padding-left:10px;
+text-align:center;
+position:absolute;
+height:850px;
+}
+
+#viewarea
+{
+position: relative;
+top: 10%;
+width: 31%;
+height: 820px;
+overflow: hidden;
+margin:0 auto;
+padding-top:10px;
+padding-right:10px;
+padding-left:10px;
+text-align:center;
+border-style:outset;
+border-width:10px;
+}
+
+#colornames
+{
+color:white;
+position:fixed;
+font-size:50px;
+top:50px;
+left:2%;
+width:400px;
+}
+
+#switches
+ {
+ position:fixed;
+ top:20px;
+ right:1%;
+ height:400px;
+ width:300px;
+ font-size:20px;
+ border-style: groove;
+ border-width: 4px;
+ background-color:gray;
+ padding:2px;
+ box-shadow: 10px 10px 5px #141414;
+ }
+
+#infoswitch, #hexswitch, #backgroundswitch
+ {
+ background-image:url(http://asdf.us/im/58/gradient_whitegray80_1321305183_1321305241_pepper.jpg);
+ cursor:pointer;
+ }
+#preview
+ {
+ height:150px;
+ }
+
+
+#holder
+ {
+ float:bottom;
+ }
+
+#transparent
+ {
+ font-size:12px;
+ }
+#namespace
+ {
+ width:inherit;
+ }
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{
+height:30;
+width:10px;
+}
+</style></head><body>
+<div id='colorpicker'>
+<div id='viewarea' class="panorama">
+<div id='container'>
+<div id='d0' class='colors'>
+snow</div>
+<div id='d1' class='colors'>
+snow1</div>
+<div id='d2' class='colors'>
+snow2</div>
+<div id='d3' class='colors'>
+RosyBrown1</div>
+<div id='d4' class='colors'>
+RosyBrown2</div>
+<div id='d5' class='colors'>
+snow3</div>
+<div id='d6' class='colors'>
+LightCoral</div>
+<div id='d7' class='colors'>
+IndianRed1</div>
+<div id='d8' class='colors'>
+RosyBrown3</div>
+<div id='d9' class='colors'>
+IndianRed2</div>
+<div id='d10' class='colors'>
+RosyBrown</div>
+<div id='d11' class='colors'>
+brown1</div>
+<div id='d12' class='colors'>
+firebrick1</div>
+<div id='d13' class='colors'>
+brown2</div>
+<div id='d14' class='colors'>
+IndianRed</div>
+<div id='d15' class='colors'>
+IndianRed3</div>
+<div id='d16' class='colors'>
+firebrick2</div>
+<div id='d17' class='colors'>
+snow4</div>
+<div id='d18' class='colors'>
+brown3</div>
+<div id='d19' class='colors'>
+red</div>
+<div id='d20' class='colors'>
+red1</div>
+<div id='d21' class='colors'>
+RosyBrown4</div>
+<div id='d22' class='colors'>
+firebrick3</div>
+<div id='d23' class='colors'>
+red2</div>
+<div id='d24' class='colors'>
+firebrick</div>
+<div id='d25' class='colors'>
+brown</div>
+<div id='d26' class='colors'>
+red3</div>
+<div id='d27' class='colors'>
+IndianRed4</div>
+<div id='d28' class='colors'>
+brown4</div>
+<div id='d29' class='colors'>
+firebrick4</div>
+<div id='d30' class='colors'>
+DarkRed</div>
+<div id='d31' class='colors'>
+red4</div>
+<div id='d32' class='colors'>
+maroon</div>
+<div id='d33' class='colors'>
+LightPink1</div>
+<div id='d34' class='colors'>
+LightPink3</div>
+<div id='d35' class='colors'>
+LightPink4</div>
+<div id='d36' class='colors'>
+LightPink2</div>
+<div id='d37' class='colors'>
+LightPink</div>
+<div id='d38' class='colors'>
+pink</div>
+<div id='d39' class='colors'>
+crimson</div>
+<div id='d40' class='colors'>
+pink1</div>
+<div id='d41' class='colors'>
+pink2</div>
+<div id='d42' class='colors'>
+pink3</div>
+<div id='d43' class='colors'>
+pink4</div>
+<div id='d44' class='colors'>
+PaleVioletRed4</div>
+<div id='d45' class='colors'>
+PaleVioletRed</div>
+<div id='d46' class='colors'>
+PaleVioletRed2</div>
+<div id='d47' class='colors'>
+PaleVioletRed1</div>
+<div id='d48' class='colors'>
+PaleVioletRed3</div>
+<div id='d49' class='colors'>
+LavenderBlush</div>
+<div id='d50' class='colors'>
+LavenderBlush1</div>
+<div id='d51' class='colors'>
+LavenderBlush3</div>
+<div id='d52' class='colors'>
+LavenderBlush2</div>
+<div id='d53' class='colors'>
+LavenderBlush4</div>
+<div id='d54' class='colors'>
+maroon</div>
+<div id='d55' class='colors'>
+HotPink3</div>
+<div id='d56' class='colors'>
+VioletRed3</div>
+<div id='d57' class='colors'>
+VioletRed1</div>
+<div id='d58' class='colors'>
+VioletRed2</div>
+<div id='d59' class='colors'>
+VioletRed4</div>
+<div id='d60' class='colors'>
+HotPink2</div>
+<div id='d61' class='colors'>
+HotPink1</div>
+<div id='d62' class='colors'>
+HotPink4</div>
+<div id='d63' class='colors'>
+HotPink</div>
+<div id='d64' class='colors'>
+DeepPink</div>
+<div id='d65' class='colors'>
+DeepPink1</div>
+<div id='d66' class='colors'>
+DeepPink2</div>
+<div id='d67' class='colors'>
+DeepPink3</div>
+<div id='d68' class='colors'>
+DeepPink4</div>
+<div id='d69' class='colors'>
+maroon1</div>
+<div id='d70' class='colors'>
+maroon2</div>
+<div id='d71' class='colors'>
+maroon3</div>
+<div id='d72' class='colors'>
+maroon4</div>
+<div id='d73' class='colors'>
+MediumVioletRed</div>
+<div id='d74' class='colors'>
+VioletRed</div>
+<div id='d75' class='colors'>
+orchid2</div>
+<div id='d76' class='colors'>
+orchid</div>
+<div id='d77' class='colors'>
+orchid1</div>
+<div id='d78' class='colors'>
+orchid3</div>
+<div id='d79' class='colors'>
+orchid4</div>
+<div id='d80' class='colors'>
+thistle1</div>
+<div id='d81' class='colors'>
+thistle2</div>
+<div id='d82' class='colors'>
+plum1</div>
+<div id='d83' class='colors'>
+plum2</div>
+<div id='d84' class='colors'>
+thistle</div>
+<div id='d85' class='colors'>
+thistle3</div>
+<div id='d86' class='colors'>
+plum</div>
+<div id='d87' class='colors'>
+violet</div>
+<div id='d88' class='colors'>
+plum3</div>
+<div id='d89' class='colors'>
+thistle4</div>
+<div id='d90' class='colors'>
+fuchsia</div>
+<div id='d91' class='colors'>
+magenta</div>
+<div id='d92' class='colors'>
+magenta1</div>
+<div id='d93' class='colors'>
+plum4</div>
+<div id='d94' class='colors'>
+magenta2</div>
+<div id='d95' class='colors'>
+magenta3</div>
+<div id='d96' class='colors'>
+DarkMagenta</div>
+<div id='d97' class='colors'>
+magenta4</div>
+<div id='d98' class='colors'>
+purple</div>
+<div id='d99' class='colors'>
+MediumOrchid</div>
+<div id='d100' class='colors'>
+MediumOrchid1</div>
+<div id='d101' class='colors'>
+MediumOrchid2</div>
+<div id='d102' class='colors'>
+MediumOrchid3</div>
+<div id='d103' class='colors'>
+MediumOrchid4</div>
+<div id='d104' class='colors'>
+DarkViolet</div>
+<div id='d105' class='colors'>
+DarkOrchid</div>
+<div id='d106' class='colors'>
+DarkOrchid1</div>
+<div id='d107' class='colors'>
+DarkOrchid3</div>
+<div id='d108' class='colors'>
+DarkOrchid2</div>
+<div id='d109' class='colors'>
+DarkOrchid4</div>
+<div id='d110' class='colors'>
+purple</div>
+<div id='d111' class='colors'>
+indigo</div>
+<div id='d112' class='colors'>
+BlueViolet</div>
+<div id='d113' class='colors'>
+purple2</div>
+<div id='d114' class='colors'>
+purple3</div>
+<div id='d115' class='colors'>
+purple4</div>
+<div id='d116' class='colors'>
+purple1</div>
+<div id='d117' class='colors'>
+MediumPurple</div>
+<div id='d118' class='colors'>
+MediumPurple1</div>
+<div id='d119' class='colors'>
+MediumPurple2</div>
+<div id='d120' class='colors'>
+MediumPurple3</div>
+<div id='d121' class='colors'>
+MediumPurple4</div>
+<div id='d122' class='colors'>
+DarkSlateBlue</div>
+<div id='d123' class='colors'>
+LightSlateBlue</div>
+<div id='d124' class='colors'>
+MediumSlateBlue</div>
+<div id='d125' class='colors'>
+SlateBlue</div>
+<div id='d126' class='colors'>
+SlateBlue1</div>
+<div id='d127' class='colors'>
+SlateBlue2</div>
+<div id='d128' class='colors'>
+SlateBlue3</div>
+<div id='d129' class='colors'>
+SlateBlue4</div>
+<div id='d130' class='colors'>
+GhostWhite</div>
+<div id='d131' class='colors'>
+lavender</div>
+<div id='d132' class='colors'>
+blue</div>
+<div id='d133' class='colors'>
+blue1</div>
+<div id='d134' class='colors'>
+blue2</div>
+<div id='d135' class='colors'>
+blue3</div>
+<div id='d136' class='colors'>
+MediumBlue</div>
+<div id='d137' class='colors'>
+blue4</div>
+<div id='d138' class='colors'>
+DarkBlue</div>
+<div id='d139' class='colors'>
+MidnightBlue</div>
+<div id='d140' class='colors'>
+navy</div>
+<div id='d141' class='colors'>
+NavyBlue</div>
+<div id='d142' class='colors'>
+RoyalBlue</div>
+<div id='d143' class='colors'>
+RoyalBlue1</div>
+<div id='d144' class='colors'>
+RoyalBlue2</div>
+<div id='d145' class='colors'>
+RoyalBlue3</div>
+<div id='d146' class='colors'>
+RoyalBlue4</div>
+<div id='d147' class='colors'>
+CornflowerBlue</div>
+<div id='d148' class='colors'>
+LightSteelBlue</div>
+<div id='d149' class='colors'>
+LightSteelBlue1</div>
+<div id='d150' class='colors'>
+LightSteelBlue2</div>
+<div id='d151' class='colors'>
+LightSteelBlue3</div>
+<div id='d152' class='colors'>
+LightSteelBlue4</div>
+<div id='d153' class='colors'>
+SlateGray4</div>
+<div id='d154' class='colors'>
+SlateGray1</div>
+<div id='d155' class='colors'>
+SlateGray2</div>
+<div id='d156' class='colors'>
+SlateGray3</div>
+<div id='d157' class='colors'>
+LightSlateGray</div>
+<div id='d158' class='colors'>
+LightSlateGrey</div>
+<div id='d159' class='colors'>
+SlateGray</div>
+<div id='d160' class='colors'>
+SlateGrey</div>
+<div id='d161' class='colors'>
+DodgerBlue</div>
+<div id='d162' class='colors'>
+DodgerBlue1</div>
+<div id='d163' class='colors'>
+DodgerBlue2</div>
+<div id='d164' class='colors'>
+DodgerBlue4</div>
+<div id='d165' class='colors'>
+DodgerBlue3</div>
+<div id='d166' class='colors'>
+AliceBlue</div>
+<div id='d167' class='colors'>
+SteelBlue4</div>
+<div id='d168' class='colors'>
+SteelBlue</div>
+<div id='d169' class='colors'>
+SteelBlue1</div>
+<div id='d170' class='colors'>
+SteelBlue2</div>
+<div id='d171' class='colors'>
+SteelBlue3</div>
+<div id='d172' class='colors'>
+SkyBlue4</div>
+<div id='d173' class='colors'>
+SkyBlue1</div>
+<div id='d174' class='colors'>
+SkyBlue2</div>
+<div id='d175' class='colors'>
+SkyBlue3</div>
+<div id='d176' class='colors'>
+LightSkyBlue</div>
+<div id='d177' class='colors'>
+LightSkyBlue4</div>
+<div id='d178' class='colors'>
+LightSkyBlue1</div>
+<div id='d179' class='colors'>
+LightSkyBlue2</div>
+<div id='d180' class='colors'>
+LightSkyBlue3</div>
+<div id='d181' class='colors'>
+SkyBlue</div>
+<div id='d182' class='colors'>
+LightBlue3</div>
+<div id='d183' class='colors'>
+DeepSkyBlue</div>
+<div id='d184' class='colors'>
+DeepSkyBlue1</div>
+<div id='d185' class='colors'>
+DeepSkyBlue2</div>
+<div id='d186' class='colors'>
+DeepSkyBlue4</div>
+<div id='d187' class='colors'>
+DeepSkyBlue3</div>
+<div id='d188' class='colors'>
+LightBlue1</div>
+<div id='d189' class='colors'>
+LightBlue2</div>
+<div id='d190' class='colors'>
+LightBlue</div>
+<div id='d191' class='colors'>
+LightBlue4</div>
+<div id='d192' class='colors'>
+PowderBlue</div>
+<div id='d193' class='colors'>
+CadetBlue1</div>
+<div id='d194' class='colors'>
+CadetBlue2</div>
+<div id='d195' class='colors'>
+CadetBlue3</div>
+<div id='d196' class='colors'>
+CadetBlue4</div>
+<div id='d197' class='colors'>
+turquoise1</div>
+<div id='d198' class='colors'>
+turquoise2</div>
+<div id='d199' class='colors'>
+turquoise3</div>
+<div id='d200' class='colors'>
+turquoise4</div>
+<div id='d201' class='colors'>
+cadet blue</div>
+<div id='d202' class='colors'>
+CadetBlue</div>
+<div id='d203' class='colors'>
+DarkTurquoise</div>
+<div id='d204' class='colors'>
+azure</div>
+<div id='d205' class='colors'>
+azure1</div>
+<div id='d206' class='colors'>
+LightCyan</div>
+<div id='d207' class='colors'>
+LightCyan1</div>
+<div id='d208' class='colors'>
+azure2</div>
+<div id='d209' class='colors'>
+LightCyan2</div>
+<div id='d210' class='colors'>
+PaleTurquoise1</div>
+<div id='d211' class='colors'>
+PaleTurquoise</div>
+<div id='d212' class='colors'>
+PaleTurquoise2</div>
+<div id='d213' class='colors'>
+DarkSlateGray1</div>
+<div id='d214' class='colors'>
+azure3</div>
+<div id='d215' class='colors'>
+LightCyan3</div>
+<div id='d216' class='colors'>
+DarkSlateGray2</div>
+<div id='d217' class='colors'>
+PaleTurquoise3</div>
+<div id='d218' class='colors'>
+DarkSlateGray3</div>
+<div id='d219' class='colors'>
+azure4</div>
+<div id='d220' class='colors'>
+LightCyan4</div>
+<div id='d221' class='colors'>
+aqua</div>
+<div id='d222' class='colors'>
+cyan</div>
+<div id='d223' class='colors'>
+cyan1</div>
+<div id='d224' class='colors'>
+PaleTurquoise4</div>
+<div id='d225' class='colors'>
+cyan2</div>
+<div id='d226' class='colors'>
+DarkSlateGray4</div>
+<div id='d227' class='colors'>
+cyan3</div>
+<div id='d228' class='colors'>
+cyan4</div>
+<div id='d229' class='colors'>
+DarkCyan</div>
+<div id='d230' class='colors'>
+teal</div>
+<div id='d231' class='colors'>
+DarkSlateGray</div>
+<div id='d232' class='colors'>
+DarkSlateGrey</div>
+<div id='d233' class='colors'>
+MediumTurquoise</div>
+<div id='d234' class='colors'>
+LightSeaGreen</div>
+<div id='d235' class='colors'>
+turquoise</div>
+<div id='d236' class='colors'>
+aquamarine4</div>
+<div id='d237' class='colors'>
+aquamarine</div>
+<div id='d238' class='colors'>
+aquamarine1</div>
+<div id='d239' class='colors'>
+aquamarine2</div>
+<div id='d240' class='colors'>
+aquamarine3</div>
+<div id='d241' class='colors'>
+MediumAquamarine</div>
+<div id='d242' class='colors'>
+MediumSpringGreen</div>
+<div id='d243' class='colors'>
+MintCream</div>
+<div id='d244' class='colors'>
+SpringGreen</div>
+<div id='d245' class='colors'>
+SpringGreen1</div>
+<div id='d246' class='colors'>
+SpringGreen2</div>
+<div id='d247' class='colors'>
+SpringGreen3</div>
+<div id='d248' class='colors'>
+SpringGreen4</div>
+<div id='d249' class='colors'>
+MediumSeaGreen</div>
+<div id='d250' class='colors'>
+SeaGreen</div>
+<div id='d251' class='colors'>
+SeaGreen3</div>
+<div id='d252' class='colors'>
+SeaGreen1</div>
+<div id='d253' class='colors'>
+SeaGreen4</div>
+<div id='d254' class='colors'>
+SeaGreen2</div>
+<div id='d255' class='colors'>
+MediumForestGreen</div>
+<div id='d256' class='colors'>
+honeydew</div>
+<div id='d257' class='colors'>
+honeydew1</div>
+<div id='d258' class='colors'>
+honeydew2</div>
+<div id='d259' class='colors'>
+DarkSeaGreen1</div>
+<div id='d260' class='colors'>
+DarkSeaGreen2</div>
+<div id='d261' class='colors'>
+PaleGreen1</div>
+<div id='d262' class='colors'>
+PaleGreen</div>
+<div id='d263' class='colors'>
+honeydew3</div>
+<div id='d264' class='colors'>
+LightGreen</div>
+<div id='d265' class='colors'>
+PaleGreen2</div>
+<div id='d266' class='colors'>
+DarkSeaGreen3</div>
+<div id='d267' class='colors'>
+DarkSeaGreen</div>
+<div id='d268' class='colors'>
+PaleGreen3</div>
+<div id='d269' class='colors'>
+honeydew4</div>
+<div id='d270' class='colors'>
+green1</div>
+<div id='d271' class='colors'>
+lime</div>
+<div id='d272' class='colors'>
+LimeGreen</div>
+<div id='d273' class='colors'>
+DarkSeaGreen4</div>
+<div id='d274' class='colors'>
+green2</div>
+<div id='d275' class='colors'>
+PaleGreen4</div>
+<div id='d276' class='colors'>
+green3</div>
+<div id='d277' class='colors'>
+ForestGreen</div>
+<div id='d278' class='colors'>
+green4</div>
+<div id='d279' class='colors'>
+green</div>
+<div id='d280' class='colors'>
+DarkGreen</div>
+<div id='d281' class='colors'>
+LawnGreen</div>
+<div id='d282' class='colors'>
+chartreuse</div>
+<div id='d283' class='colors'>
+chartreuse1</div>
+<div id='d284' class='colors'>
+chartreuse2</div>
+<div id='d285' class='colors'>
+chartreuse3</div>
+<div id='d286' class='colors'>
+chartreuse4</div>
+<div id='d287' class='colors'>
+GreenYellow</div>
+<div id='d288' class='colors'>
+DarkOliveGreen3</div>
+<div id='d289' class='colors'>
+DarkOliveGreen1</div>
+<div id='d290' class='colors'>
+DarkOliveGreen2</div>
+<div id='d291' class='colors'>
+DarkOliveGreen4</div>
+<div id='d292' class='colors'>
+DarkOliveGreen</div>
+<div id='d293' class='colors'>
+OliveDrab</div>
+<div id='d294' class='colors'>
+OliveDrab1</div>
+<div id='d295' class='colors'>
+OliveDrab2</div>
+<div id='d296' class='colors'>
+OliveDrab3</div>
+<div id='d297' class='colors'>
+YellowGreen</div>
+<div id='d298' class='colors'>
+OliveDrab4</div>
+<div id='d299' class='colors'>
+ivory</div>
+<div id='d300' class='colors'>
+ivory1</div>
+<div id='d301' class='colors'>
+LightYellow</div>
+<div id='d302' class='colors'>
+LightYellow1</div>
+<div id='d303' class='colors'>
+beige</div>
+<div id='d304' class='colors'>
+ivory2</div>
+<div id='d305' class='colors'>
+LightGoldenrodYellow</div>
+<div id='d306' class='colors'>
+LightYellow2</div>
+<div id='d307' class='colors'>
+ivory3</div>
+<div id='d308' class='colors'>
+LightYellow3</div>
+<div id='d309' class='colors'>
+ivory4</div>
+<div id='d310' class='colors'>
+LightYellow4</div>
+<div id='d311' class='colors'>
+yellow</div>
+<div id='d312' class='colors'>
+yellow1</div>
+<div id='d313' class='colors'>
+yellow2</div>
+<div id='d314' class='colors'>
+yellow3</div>
+<div id='d315' class='colors'>
+yellow4</div>
+<div id='d316' class='colors'>
+olive</div>
+<div id='d317' class='colors'>
+DarkKhaki</div>
+<div id='d318' class='colors'>
+khaki2</div>
+<div id='d319' class='colors'>
+LemonChiffon4</div>
+<div id='d320' class='colors'>
+khaki1</div>
+<div id='d321' class='colors'>
+khaki3</div>
+<div id='d322' class='colors'>
+khaki4</div>
+<div id='d323' class='colors'>
+PaleGoldenrod</div>
+<div id='d324' class='colors'>
+LemonChiffon</div>
+<div id='d325' class='colors'>
+LemonChiffon1</div>
+<div id='d326' class='colors'>
+khaki</div>
+<div id='d327' class='colors'>
+LemonChiffon3</div>
+<div id='d328' class='colors'>
+LemonChiffon2</div>
+<div id='d329' class='colors'>
+MediumGoldenRod</div>
+<div id='d330' class='colors'>
+cornsilk4</div>
+<div id='d331' class='colors'>
+gold</div>
+<div id='d332' class='colors'>
+gold1</div>
+<div id='d333' class='colors'>
+gold2</div>
+<div id='d334' class='colors'>
+gold3</div>
+<div id='d335' class='colors'>
+gold4</div>
+<div id='d336' class='colors'>
+LightGoldenrod</div>
+<div id='d337' class='colors'>
+LightGoldenrod4</div>
+<div id='d338' class='colors'>
+LightGoldenrod1</div>
+<div id='d339' class='colors'>
+LightGoldenrod3</div>
+<div id='d340' class='colors'>
+LightGoldenrod2</div>
+<div id='d341' class='colors'>
+cornsilk3</div>
+<div id='d342' class='colors'>
+cornsilk2</div>
+<div id='d343' class='colors'>
+cornsilk</div>
+<div id='d344' class='colors'>
+cornsilk1</div>
+<div id='d345' class='colors'>
+goldenrod</div>
+<div id='d346' class='colors'>
+goldenrod1</div>
+<div id='d347' class='colors'>
+goldenrod2</div>
+<div id='d348' class='colors'>
+goldenrod3</div>
+<div id='d349' class='colors'>
+goldenrod4</div>
+<div id='d350' class='colors'>
+DarkGoldenrod</div>
+<div id='d351' class='colors'>
+DarkGoldenrod1</div>
+<div id='d352' class='colors'>
+DarkGoldenrod2</div>
+<div id='d353' class='colors'>
+DarkGoldenrod3</div>
+<div id='d354' class='colors'>
+DarkGoldenrod4</div>
+<div id='d355' class='colors'>
+FloralWhite</div>
+<div id='d356' class='colors'>
+wheat2</div>
+<div id='d357' class='colors'>
+OldLace</div>
+<div id='d358' class='colors'>
+wheat</div>
+<div id='d359' class='colors'>
+wheat1</div>
+<div id='d360' class='colors'>
+wheat3</div>
+<div id='d361' class='colors'>
+orange</div>
+<div id='d362' class='colors'>
+orange1</div>
+<div id='d363' class='colors'>
+orange2</div>
+<div id='d364' class='colors'>
+orange3</div>
+<div id='d365' class='colors'>
+orange4</div>
+<div id='d366' class='colors'>
+wheat4</div>
+<div id='d367' class='colors'>
+moccasin</div>
+<div id='d368' class='colors'>
+PapayaWhip</div>
+<div id='d369' class='colors'>
+NavajoWhite3</div>
+<div id='d370' class='colors'>
+BlanchedAlmond</div>
+<div id='d371' class='colors'>
+NavajoWhite</div>
+<div id='d372' class='colors'>
+NavajoWhite1</div>
+<div id='d373' class='colors'>
+NavajoWhite2</div>
+<div id='d374' class='colors'>
+NavajoWhite4</div>
+<div id='d375' class='colors'>
+AntiqueWhite4</div>
+<div id='d376' class='colors'>
+AntiqueWhite</div>
+<div id='d377' class='colors'>
+tan</div>
+<div id='d378' class='colors'>
+bisque4</div>
+<div id='d379' class='colors'>
+burlywood</div>
+<div id='d380' class='colors'>
+AntiqueWhite2</div>
+<div id='d381' class='colors'>
+burlywood1</div>
+<div id='d382' class='colors'>
+burlywood3</div>
+<div id='d383' class='colors'>
+burlywood2</div>
+<div id='d384' class='colors'>
+AntiqueWhite1</div>
+<div id='d385' class='colors'>
+burlywood4</div>
+<div id='d386' class='colors'>
+AntiqueWhite3</div>
+<div id='d387' class='colors'>
+DarkOrange</div>
+<div id='d388' class='colors'>
+bisque2</div>
+<div id='d389' class='colors'>
+bisque</div>
+<div id='d390' class='colors'>
+bisque1</div>
+<div id='d391' class='colors'>
+bisque3</div>
+<div id='d392' class='colors'>
+DarkOrange1</div>
+<div id='d393' class='colors'>
+linen</div>
+<div id='d394' class='colors'>
+DarkOrange2</div>
+<div id='d395' class='colors'>
+DarkOrange3</div>
+<div id='d396' class='colors'>
+DarkOrange4</div>
+<div id='d397' class='colors'>
+peru</div>
+<div id='d398' class='colors'>
+tan1</div>
+<div id='d399' class='colors'>
+tan2</div>
+<div id='d400' class='colors'>
+tan3</div>
+<div id='d401' class='colors'>
+tan4</div>
+<div id='d402' class='colors'>
+PeachPuff</div>
+<div id='d403' class='colors'>
+PeachPuff1</div>
+<div id='d404' class='colors'>
+PeachPuff4</div>
+<div id='d405' class='colors'>
+PeachPuff2</div>
+<div id='d406' class='colors'>
+PeachPuff3</div>
+<div id='d407' class='colors'>
+SandyBrown</div>
+<div id='d408' class='colors'>
+seashell4</div>
+<div id='d409' class='colors'>
+seashell2</div>
+<div id='d410' class='colors'>
+seashell3</div>
+<div id='d411' class='colors'>
+chocolate</div>
+<div id='d412' class='colors'>
+chocolate1</div>
+<div id='d413' class='colors'>
+chocolate2</div>
+<div id='d414' class='colors'>
+chocolate3</div>
+<div id='d415' class='colors'>
+chocolate4</div>
+<div id='d416' class='colors'>
+SaddleBrown</div>
+<div id='d417' class='colors'>
+seashell</div>
+<div id='d418' class='colors'>
+seashell1</div>
+<div id='d419' class='colors'>
+sienna4</div>
+<div id='d420' class='colors'>
+sienna</div>
+<div id='d421' class='colors'>
+sienna1</div>
+<div id='d422' class='colors'>
+sienna2</div>
+<div id='d423' class='colors'>
+sienna3</div>
+<div id='d424' class='colors'>
+LightSalmon3</div>
+<div id='d425' class='colors'>
+LightSalmon</div>
+<div id='d426' class='colors'>
+LightSalmon1</div>
+<div id='d427' class='colors'>
+LightSalmon4</div>
+<div id='d428' class='colors'>
+LightSalmon2</div>
+<div id='d429' class='colors'>
+coral</div>
+<div id='d430' class='colors'>
+OrangeRed</div>
+<div id='d431' class='colors'>
+OrangeRed1</div>
+<div id='d432' class='colors'>
+OrangeRed2</div>
+<div id='d433' class='colors'>
+OrangeRed3</div>
+<div id='d434' class='colors'>
+OrangeRed4</div>
+<div id='d435' class='colors'>
+DarkSalmon</div>
+<div id='d436' class='colors'>
+salmon1</div>
+<div id='d437' class='colors'>
+salmon2</div>
+<div id='d438' class='colors'>
+salmon3</div>
+<div id='d439' class='colors'>
+salmon4</div>
+<div id='d440' class='colors'>
+coral1</div>
+<div id='d441' class='colors'>
+coral2</div>
+<div id='d442' class='colors'>
+coral3</div>
+<div id='d443' class='colors'>
+coral4</div>
+<div id='d444' class='colors'>
+tomato4</div>
+<div id='d445' class='colors'>
+tomato</div>
+<div id='d446' class='colors'>
+tomato1</div>
+<div id='d447' class='colors'>
+tomato2</div>
+<div id='d448' class='colors'>
+tomato3</div>
+<div id='d449' class='colors'>
+MistyRose4</div>
+<div id='d450' class='colors'>
+MistyRose2</div>
+<div id='d451' class='colors'>
+MistyRose</div>
+<div id='d452' class='colors'>
+MistyRose1</div>
+<div id='d453' class='colors'>
+salmon</div>
+<div id='d454' class='colors'>
+MistyRose3</div>
+<div id='d455' class='colors'>
+white</div>
+<div id='d456' class='colors'>
+gray100</div>
+<div id='d457' class='colors'>
+grey100</div>
+<div id='d458' class='colors'>
+grey100</div>
+<div id='d459' class='colors'>
+gray99</div>
+<div id='d460' class='colors'>
+grey99</div>
+<div id='d461' class='colors'>
+gray98</div>
+<div id='d462' class='colors'>
+grey98</div>
+<div id='d463' class='colors'>
+gray97</div>
+<div id='d464' class='colors'>
+grey97</div>
+<div id='d465' class='colors'>
+gray96</div>
+<div id='d466' class='colors'>
+grey96</div>
+<div id='d467' class='colors'>
+WhiteSmoke</div>
+<div id='d468' class='colors'>
+gray95</div>
+<div id='d469' class='colors'>
+grey95</div>
+<div id='d470' class='colors'>
+gray94</div>
+<div id='d471' class='colors'>
+grey94</div>
+<div id='d472' class='colors'>
+gray93</div>
+<div id='d473' class='colors'>
+grey93</div>
+<div id='d474' class='colors'>
+gray92</div>
+<div id='d475' class='colors'>
+grey92</div>
+<div id='d476' class='colors'>
+gray91</div>
+<div id='d477' class='colors'>
+grey91</div>
+<div id='d478' class='colors'>
+gray90</div>
+<div id='d479' class='colors'>
+grey90</div>
+<div id='d480' class='colors'>
+gray89</div>
+<div id='d481' class='colors'>
+grey89</div>
+<div id='d482' class='colors'>
+gray88</div>
+<div id='d483' class='colors'>
+grey88</div>
+<div id='d484' class='colors'>
+gray87</div>
+<div id='d485' class='colors'>
+grey87</div>
+<div id='d486' class='colors'>
+gainsboro</div>
+<div id='d487' class='colors'>
+gray86</div>
+<div id='d488' class='colors'>
+grey86</div>
+<div id='d489' class='colors'>
+gray85</div>
+<div id='d490' class='colors'>
+grey85</div>
+<div id='d491' class='colors'>
+gray84</div>
+<div id='d492' class='colors'>
+grey84</div>
+<div id='d493' class='colors'>
+gray83</div>
+<div id='d494' class='colors'>
+grey83</div>
+<div id='d495' class='colors'>
+LightGray</div>
+<div id='d496' class='colors'>
+LightGrey</div>
+<div id='d497' class='colors'>
+gray82</div>
+<div id='d498' class='colors'>
+grey82</div>
+<div id='d499' class='colors'>
+gray81</div>
+<div id='d500' class='colors'>
+grey81</div>
+<div id='d501' class='colors'>
+gray80</div>
+<div id='d502' class='colors'>
+grey80</div>
+<div id='d503' class='colors'>
+gray79</div>
+<div id='d504' class='colors'>
+grey79</div>
+<div id='d505' class='colors'>
+gray78</div>
+<div id='d506' class='colors'>
+grey78</div>
+<div id='d507' class='colors'>
+gray77</div>
+<div id='d508' class='colors'>
+grey77</div>
+<div id='d509' class='colors'>
+gray76</div>
+<div id='d510' class='colors'>
+grey76</div>
+<div id='d511' class='colors'>
+silver</div>
+<div id='d512' class='colors'>
+gray75</div>
+<div id='d513' class='colors'>
+grey75</div>
+<div id='d514' class='colors'>
+gray74</div>
+<div id='d515' class='colors'>
+grey74</div>
+<div id='d516' class='colors'>
+gray73</div>
+<div id='d517' class='colors'>
+grey73</div>
+<div id='d518' class='colors'>
+gray72</div>
+<div id='d519' class='colors'>
+grey72</div>
+<div id='d520' class='colors'>
+gray71</div>
+<div id='d521' class='colors'>
+grey71</div>
+<div id='d522' class='colors'>
+gray70</div>
+<div id='d523' class='colors'>
+grey70</div>
+<div id='d524' class='colors'>
+gray69</div>
+<div id='d525' class='colors'>
+grey69</div>
+<div id='d526' class='colors'>
+gray68</div>
+<div id='d527' class='colors'>
+grey68</div>
+<div id='d528' class='colors'>
+gray67</div>
+<div id='d529' class='colors'>
+grey67</div>
+<div id='d530' class='colors'>
+DarkGray</div>
+<div id='d531' class='colors'>
+DarkGrey</div>
+<div id='d532' class='colors'>
+gray66</div>
+<div id='d533' class='colors'>
+grey66</div>
+<div id='d534' class='colors'>
+gray65</div>
+<div id='d535' class='colors'>
+grey65</div>
+<div id='d536' class='colors'>
+gray64</div>
+<div id='d537' class='colors'>
+grey64</div>
+<div id='d538' class='colors'>
+gray63</div>
+<div id='d539' class='colors'>
+grey63</div>
+<div id='d540' class='colors'>
+gray62</div>
+<div id='d541' class='colors'>
+grey62</div>
+<div id='d542' class='colors'>
+gray61</div>
+<div id='d543' class='colors'>
+grey61</div>
+<div id='d544' class='colors'>
+gray60</div>
+<div id='d545' class='colors'>
+grey60</div>
+<div id='d546' class='colors'>
+gray59</div>
+<div id='d547' class='colors'>
+grey59</div>
+<div id='d548' class='colors'>
+gray58</div>
+<div id='d549' class='colors'>
+grey58</div>
+<div id='d550' class='colors'>
+gray57</div>
+<div id='d551' class='colors'>
+grey57</div>
+<div id='d552' class='colors'>
+gray56</div>
+<div id='d553' class='colors'>
+grey56</div>
+<div id='d554' class='colors'>
+gray55</div>
+<div id='d555' class='colors'>
+grey55</div>
+<div id='d556' class='colors'>
+gray54</div>
+<div id='d557' class='colors'>
+grey54</div>
+<div id='d558' class='colors'>
+gray53</div>
+<div id='d559' class='colors'>
+grey53</div>
+<div id='d560' class='colors'>
+gray52</div>
+<div id='d561' class='colors'>
+grey52</div>
+<div id='d562' class='colors'>
+gray51</div>
+<div id='d563' class='colors'>
+grey51</div>
+<div id='d564' class='colors'>
+fractal</div>
+<div id='d565' class='colors'>
+gray50</div>
+<div id='d566' class='colors'>
+grey50</div>
+<div id='d567' class='colors'>
+gray</div>
+<div id='d568' class='colors'>
+gray49</div>
+<div id='d569' class='colors'>
+grey49</div>
+<div id='d570' class='colors'>
+gray48</div>
+<div id='d571' class='colors'>
+grey48</div>
+<div id='d572' class='colors'>
+gray47</div>
+<div id='d573' class='colors'>
+grey47</div>
+<div id='d574' class='colors'>
+gray46</div>
+<div id='d575' class='colors'>
+grey46</div>
+<div id='d576' class='colors'>
+gray45</div>
+<div id='d577' class='colors'>
+grey45</div>
+<div id='d578' class='colors'>
+gray44</div>
+<div id='d579' class='colors'>
+grey44</div>
+<div id='d580' class='colors'>
+gray43</div>
+<div id='d581' class='colors'>
+grey43</div>
+<div id='d582' class='colors'>
+gray42</div>
+<div id='d583' class='colors'>
+grey42</div>
+<div id='d584' class='colors'>
+DimGray</div>
+<div id='d585' class='colors'>
+DimGrey</div>
+<div id='d586' class='colors'>
+gray41</div>
+<div id='d587' class='colors'>
+grey41</div>
+<div id='d588' class='colors'>
+gray40</div>
+<div id='d589' class='colors'>
+grey40</div>
+<div id='d590' class='colors'>
+gray39</div>
+<div id='d591' class='colors'>
+grey39</div>
+<div id='d592' class='colors'>
+gray38</div>
+<div id='d593' class='colors'>
+grey38</div>
+<div id='d594' class='colors'>
+gray37</div>
+<div id='d595' class='colors'>
+grey37</div>
+<div id='d596' class='colors'>
+gray36</div>
+<div id='d597' class='colors'>
+grey36</div>
+<div id='d598' class='colors'>
+gray35</div>
+<div id='d599' class='colors'>
+grey35</div>
+<div id='d600' class='colors'>
+gray34</div>
+<div id='d601' class='colors'>
+grey34</div>
+<div id='d602' class='colors'>
+gray33</div>
+<div id='d603' class='colors'>
+grey33</div>
+<div id='d604' class='colors'>
+gray32</div>
+<div id='d605' class='colors'>
+grey32</div>
+<div id='d606' class='colors'>
+gray31</div>
+<div id='d607' class='colors'>
+grey31</div>
+<div id='d608' class='colors'>
+gray30</div>
+<div id='d609' class='colors'>
+grey30</div>
+<div id='d610' class='colors'>
+gray29</div>
+<div id='d611' class='colors'>
+grey29</div>
+<div id='d612' class='colors'>
+gray28</div>
+<div id='d613' class='colors'>
+grey28</div>
+<div id='d614' class='colors'>
+gray27</div>
+<div id='d615' class='colors'>
+grey27</div>
+<div id='d616' class='colors'>
+gray26</div>
+<div id='d617' class='colors'>
+grey26</div>
+<div id='d618' class='colors'>
+gray25</div>
+<div id='d619' class='colors'>
+grey25</div>
+<div id='d620' class='colors'>
+gray24</div>
+<div id='d621' class='colors'>
+grey24</div>
+<div id='d622' class='colors'>
+gray23</div>
+<div id='d623' class='colors'>
+grey23</div>
+<div id='d624' class='colors'>
+gray22</div>
+<div id='d625' class='colors'>
+grey22</div>
+<div id='d626' class='colors'>
+gray21</div>
+<div id='d627' class='colors'>
+grey21</div>
+<div id='d628' class='colors'>
+gray20</div>
+<div id='d629' class='colors'>
+grey20</div>
+<div id='d630' class='colors'>
+gray19</div>
+<div id='d631' class='colors'>
+grey19</div>
+<div id='d632' class='colors'>
+gray18</div>
+<div id='d633' class='colors'>
+grey18</div>
+<div id='d634' class='colors'>
+gray17</div>
+<div id='d635' class='colors'>
+grey17</div>
+<div id='d636' class='colors'>
+gray16</div>
+<div id='d637' class='colors'>
+grey16</div>
+<div id='d638' class='colors'>
+gray15</div>
+<div id='d639' class='colors'>
+grey15</div>
+<div id='d640' class='colors'>
+gray14</div>
+<div id='d641' class='colors'>
+grey14</div>
+<div id='d642' class='colors'>
+gray13</div>
+<div id='d643' class='colors'>
+grey13</div>
+<div id='d644' class='colors'>
+gray12</div>
+<div id='d645' class='colors'>
+grey12</div>
+<div id='d646' class='colors'>
+gray11</div>
+<div id='d647' class='colors'>
+grey11</div>
+<div id='d648' class='colors'>
+gray10</div>
+<div id='d649' class='colors'>
+grey10</div>
+<div id='d650' class='colors'>
+gray9</div>
+<div id='d651' class='colors'>
+grey9</div>
+<div id='d652' class='colors'>
+gray8</div>
+<div id='d653' class='colors'>
+grey8</div>
+<div id='d654' class='colors'>
+gray7</div>
+<div id='d655' class='colors'>
+grey7</div>
+<div id='d656' class='colors'>
+gray6</div>
+<div id='d657' class='colors'>
+grey6</div>
+<div id='d658' class='colors'>
+gray5</div>
+<div id='d659' class='colors'>
+grey5</div>
+<div id='d660' class='colors'>
+gray4</div>
+<div id='d661' class='colors'>
+grey4</div>
+<div id='d662' class='colors'>
+gray3</div>
+<div id='d663' class='colors'>
+grey3</div>
+<div id='d664' class='colors'>
+gray2</div>
+<div id='d665' class='colors'>
+grey2</div>
+<div id='d666' class='colors'>
+gray1</div>
+<div id='d667' class='colors'>
+grey1</div>
+<div id='d668' class='colors'>
+black</div>
+<div id='d669' class='colors'>
+gray0</div>
+<div id='d670' class='colors'>
+grey0</div>
+<div id='d671' class='colors'>
+opaque</div>
+<div id='d672' class='colors'>
+none</div>
+<div id='d673' class='colors'>
+transparent</div>
+</div>
+</div>
+
+<div id='colornames'>
+CLICK TO CHOOSE THE COLOR
+</div>
+
+<div id='switches'>
+
+<span id='title'>OPTIONS</span>
+<div id='hexswitch' class='theswitches'>CLICK TO USE HEX KEYS</div>
+<br>
+<div id='infoswitch' class='theswitches'>CLICK TO TOGGLE PALATE INFO<span id='infospace'></span></div>
+<br>
+<div id='backgroundswitch' class='theswitches'>CLICK TO TOGGLE BACKGROUNDS</div>
+<br>
+<div id='preview'></div>
+<div id='nameholder'>YOU WILL CHOOSE:<input id='namespace' type='text'></input></div>
+<br>
+<span id='transparent'>to choose transparent as a color, click <span id='transbutton'>HERE</span></span>
+</div>
+</div>
+<script type='text/javascript' src='jquery-1.6.4.min.js'></script>
+<script type='text/javascript' src='colordict.js'></script>
+
+<script type='text/javascript'>
+
+
+//setup dimensions
+//////////////////
+
+function regolden(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num/ratio)
+ return newnum
+ }
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newval = goldenize(result)
+ propval = newval.toString()+'px'
+ if(propertystr == 'height'){
+ $(idandselectr).css('width', propval)
+ }
+ else if(propertystr == 'width'){
+ $(idandselectr).css('height', propval)
+ }
+ }
+function shrinkwidth(arg){
+ for(var i=0; i < 5; i++){
+ arg = regolden(arg)
+ }
+ division = Math.round(arg)
+ return division
+}
+
+function makecolorswidth(){
+ colorswidth = shrinkwidth(window.innerWidth)
+ $('.colors').css('width', colorswidth.toString()+'px')
+}
+function makecolorsheight(){
+ result = getproperty('.colors', 'width')
+ newval = regolden(result)
+ propval = newval.toString()+'px'
+ $('.colors').css('height', propval)
+}
+//the following function sets up the font sizes
+//inrelation to the size of the hexswitch font
+function setupfonts(){
+ var firstfont = getproperty('#hexswitch', 'font-size')
+ var finalfont = goldenize(firstfont)
+ $('#namespace').css('font-size', finalfont+'px')
+ $('#namespace').css('width', $('#switches').css('width'))
+ var secondfont = getproperty('#namespace', 'font-size')
+ var finalfont = goldenize(secondfont)
+ $('#colornames').css('font-size', finalfont+'px')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ var transfont = regolden(firstfont)
+ $('#transparent').css('font-size', transfont+'px')
+}
+function getcontainerwidth(){
+ basis = $('.colors').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ secondbasis = '2px'
+ secondbasis = parseInt(secondbasis.slice(0,-2))
+ widthval = (secondbasis*8)+(basis*4)+(goldenize(basis)-basis)
+ widthval = widthval.toString()+'px'
+ return widthval
+}
+
+function makecontainerwidth(){
+ var containerwidth = getcontainerwidth()
+ $('#container').css('width',containerwidth)
+ $('#viewarea').css('width',containerwidth)
+}
+
+
+function setupsides()
+ {
+ var basis = $('#container').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ remainder = (100-basis)/2
+ widths = regolden(basis)
+ widths = widths.toString()+'px'
+ lateralbasis = regolden(remainder)
+ leftside = toString(lateralbasis)+'%'
+ rightside = toString(100-lateralbasis)+'%'
+ $('#colornames').css('left', leftside)
+ $('#switches').css({'width': widths, 'left': rightside})
+ }
+function previewdimensions(){
+ first = $('#switches').css('width')
+ first = parseInt(first.slice(0,-2))
+ width = regolden(first)
+ height = regolden(width)
+ width = width.toString()+'px'
+ height = height.toString()+'px'
+ $('#preview').css({'width':width, 'height':height})
+}
+function setupdimensions(){
+makecolorswidth()
+setupfonts()
+makecolorsheight()
+makecontainerwidth()
+setupsides()
+makegolden('#switches','width')
+previewdimensions()
+}
+setupdimensions()
+$(window).resize(function(){setupdimensions()})
+//$(window).resize()(function(){setupdimensions()})
+
+//BEGIN STYLINGS//
+//////////////////
+
+
+var old = {};
+function hovercss(sel, uno){
+
+ var chng = {};
+ chng['color'] = 'white';
+ chng['text-shadow'] = 'black 1px 2px';
+ chng['background-image'] = 'url(http://asdf.us/im/19/gradient_whitegray80_1321305183_1321305241_pepper_1321333403_pepper.jpg)';
+ if(uno == 'over'){
+ for(var key in chng){
+ old[key] = $('#'+sel).css(key)
+ }
+ for(var key in chng){
+ $('#'+sel).css(key, chng[key])
+ }
+ }
+ if(uno == 'out'){
+ for(var key in old){
+ $('#'+sel).css(key, old[key])
+ }
+ }
+}
+$('.theswitches').hover(function(){hovercss(this.id, 'over')}, function(){hovercss(this.id, 'out')})
+
+var transcss = {
+ 'color':'#141414','box-shadow':'10px 10px 5px #141414',
+ 'background-color':'#D1D1D1','color':'#141414',
+ 'border-width':'2px','border-style':'outset','cursor':'pointer'}
+$('#transbutton').css(transcss)
+var hovertrans = {
+ 'background-color':'DarkGrey','color':'#383838','box-shadow':'5px 5px 2px #141414'
+}
+$('#transbutton').hover(function(){$('#transbutton').css(hovertrans)},function(){$('#transbutton').css(transcss)})
+//threewayselector for what goes in the divs
+infostate = 1
+function switchinfo()
+ {
+ if(infostate == 0)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(divtoname[divlist[i]])
+ };
+ infostate = 1
+ $('#infospace').html('(NAMES)');
+ }
+ else if(infostate == 1)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html("")
+ };
+ infostate = 2
+ $('#infospace').html('(NONE)');
+ }
+ else if(infostate == 2)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(nametohex[divtoname[divlist[i]]])
+ };
+ infostate = 0
+ $('#infospace').html('(HEXES)');
+ }
+ }
+$('#infoswitch').hover(function(){$('#infospace').show()}, function(){$('#infospace').hide('slow')} )
+$('#infoswitch').click(function(){switchinfo()})
+
+
+backgroundstate = 2;
+function switchbackground()
+ {
+ if(backgroundstate == 1)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image','url(http://dump.fm/static/img/bg.dither.gif)')
+ backgroundstate = 2;
+ $('#colornames').css('color', 'white')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ }
+ else if(backgroundstate == 2)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image', 'none')
+ backgroundstate = 0
+ }
+ else if(backgroundstate == 0)
+ {
+ $('#colorpicker').css('background-color', 'white')
+ $('#colorpicker').css('background-image', 'none')
+ $('#colornames').css('color', 'grey')
+ backgroundstate = 1
+ }
+ }
+
+$('#backgroundswitch').click(function(){switchbackground()})
+
+//takes a div name and returns a colorname
+
+function showcolorname(divstr)
+
+ {
+ colorname = divtoname['#'+divstr]
+ hex = nametohex[colorname]
+ imname = hextoname[hex]
+ if (hexes == true)
+ {
+ imname = hex
+ }
+
+ return imname
+ }
+function bigname(divstr)
+ {
+ colorname = showcolorname(divstr)
+ $('#colornames').html(colorname)
+
+ }
+function writeit(text)
+ {
+ $('#colornames').append(text)
+ }
+function makebig(divstr)
+ {
+ firstheight = $('#'+divstr).height()
+ newheight = goldenize(firstheight)
+ $('#'+divstr).height(newheight)
+ }
+function makesmall(divstr)
+ {
+ oldheight = $('.colors').height()
+ $('#'+divstr).height(oldheight)
+ }
+var choice;
+$('.colors').hover(function() {
+ bigname(this.id);
+// makebig(this.id);
+// makegolden('#'+this.id, 'height')},
+//function(){
+// makesmall(this.id);
+// makegolden('#'+this.id, 'height')
+});
+$('.colors').mouseover(function(){
+ if(this.id != 'd0'){
+ makebig(this.id);
+ makegolden('#'+this.id, 'height')
+ }})
+$('.colors').mouseout(function(){
+ makesmall(this.id);
+ makegolden('#'+this.id,'height');
+ })
+$(".colors").hover(function(){
+$('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+ });
+$('.colors').css('margin-top', '2px')
+var hexes = false
+function hexswitch()
+ {
+ if(hexes == false)
+ {
+ $('#hexswitch').html('CLICK TO USE COLOR NAMES')
+ hexes = true;
+ var nameval = $('#namespace').val()
+ $('#namespace').val(nametohex[nameval])
+ }
+
+ else
+ {
+ $('#hexswitch').html('CLICK TO USE HEX KEYS')
+ hexes = false;
+ var nameval = $('#namespace').val()
+ $('#namespace').val(hextoname[nameval])
+ }
+ }
+$('#hexswitch').click(function(){hexswitch()})
+
+$('.colors').click(function(){
+ putitin()
+ })
+
+function putitin()
+ {
+ thecolor = $('#colornames').html()
+ $('#namespace').val(thecolor)
+ if(hexes == false){
+ $('#preview').css({'background-color': nametohex[thecolor], 'border-style':'none'})
+ }
+ else{
+ $('#preview').css('background-color', thecolor)
+ }
+
+ }
+function transparent()
+ {
+ $('#namespace').val('transparent');
+ $('#preview').css({'background-color':'transparent','border-style':'dashed','border-width':'2px'})
+ }
+$('#transbutton').click(function(){transparent()})
+
+//$('#switches').bind('mousemove',function(e){
+// $("#colornames").html(" e.pageY: " + e.pageY);
+//});
+vt.start("viewarea", "container");
+
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/minimap.html b/frontend/imgrid/colors/minimap.html
new file mode 100755
index 0000000..5a5291e
--- /dev/null
+++ b/frontend/imgrid/colors/minimap.html
@@ -0,0 +1,3891 @@
+<html>
+<head>
+
+<style type='text/css'>
+
+body
+{
+margin:0;
+}
+
+#colorpicker
+{
+
+width:100%;
+font-family:helvetica;
+font-size:10px;
+//background-color: gray;
+//background-image: url("http://asdf.us/im/6f/gradient_bgdither_1321255670_pepper.gif");
+background-color: black;
+background-image: url("http://dump.fm/static/img/bg.dither.gif")
+
+}
+
+#container div
+{
+text-align:left;
+display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+min-height: 30px;
+zoom: 1;
+word-wrap: break-word;
+*display: inline;
+cursor:pointer;
+}
+
+#container
+{
+margin:0 auto;
+width:31%;
+padding-top:100px;
+padding-right:10px;
+padding-left:10px;
+text-align:center;
+overflow:auto;
+height:1000px;
+}
+
+#colornames
+{
+color:white;
+position:fixed;
+font-size:50px;
+top:50px;
+left:2%;
+width:400px;
+}
+
+#switches
+ {
+ position:fixed;
+ top:20px;
+ right:1%;
+ height:400px;
+ width:300px;
+ font-size:20px;
+ border-style: groove;
+ border-width: 4px;
+ background-color:gray;
+ padding:2px;
+ box-shadow: 10px 10px 5px #141414;
+ }
+
+#infoswitch, #hexswitch, #backgroundswitch
+ {
+ background-image:url(http://asdf.us/im/58/gradient_whitegray80_1321305183_1321305241_pepper.jpg);
+ cursor:pointer;
+ }
+#preview
+ {
+ height:150px;
+ }
+
+
+#holder
+ {
+ float:bottom;
+ }
+
+#transparent
+ {
+ font-size:12px;
+ }
+#namespace
+ {
+ width:inherit;
+ }
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{
+height:30;
+width:10px;
+}
+</style></head><body>
+<div id='colorpicker'>
+<div id='container'>
+<div id='d0' class='colors'>
+snow</div>
+<div id='d1' class='colors'>
+snow1</div>
+<div id='d2' class='colors'>
+snow2</div>
+<div id='d3' class='colors'>
+RosyBrown1</div>
+<div id='d4' class='colors'>
+RosyBrown2</div>
+<div id='d5' class='colors'>
+snow3</div>
+<div id='d6' class='colors'>
+LightCoral</div>
+<div id='d7' class='colors'>
+IndianRed1</div>
+<div id='d8' class='colors'>
+RosyBrown3</div>
+<div id='d9' class='colors'>
+IndianRed2</div>
+<div id='d10' class='colors'>
+RosyBrown</div>
+<div id='d11' class='colors'>
+brown1</div>
+<div id='d12' class='colors'>
+firebrick1</div>
+<div id='d13' class='colors'>
+brown2</div>
+<div id='d14' class='colors'>
+IndianRed</div>
+<div id='d15' class='colors'>
+IndianRed3</div>
+<div id='d16' class='colors'>
+firebrick2</div>
+<div id='d17' class='colors'>
+snow4</div>
+<div id='d18' class='colors'>
+brown3</div>
+<div id='d19' class='colors'>
+red</div>
+<div id='d20' class='colors'>
+red1</div>
+<div id='d21' class='colors'>
+RosyBrown4</div>
+<div id='d22' class='colors'>
+firebrick3</div>
+<div id='d23' class='colors'>
+red2</div>
+<div id='d24' class='colors'>
+firebrick</div>
+<div id='d25' class='colors'>
+brown</div>
+<div id='d26' class='colors'>
+red3</div>
+<div id='d27' class='colors'>
+IndianRed4</div>
+<div id='d28' class='colors'>
+brown4</div>
+<div id='d29' class='colors'>
+firebrick4</div>
+<div id='d30' class='colors'>
+DarkRed</div>
+<div id='d31' class='colors'>
+red4</div>
+<div id='d32' class='colors'>
+maroon</div>
+<div id='d33' class='colors'>
+LightPink1</div>
+<div id='d34' class='colors'>
+LightPink3</div>
+<div id='d35' class='colors'>
+LightPink4</div>
+<div id='d36' class='colors'>
+LightPink2</div>
+<div id='d37' class='colors'>
+LightPink</div>
+<div id='d38' class='colors'>
+pink</div>
+<div id='d39' class='colors'>
+crimson</div>
+<div id='d40' class='colors'>
+pink1</div>
+<div id='d41' class='colors'>
+pink2</div>
+<div id='d42' class='colors'>
+pink3</div>
+<div id='d43' class='colors'>
+pink4</div>
+<div id='d44' class='colors'>
+PaleVioletRed4</div>
+<div id='d45' class='colors'>
+PaleVioletRed</div>
+<div id='d46' class='colors'>
+PaleVioletRed2</div>
+<div id='d47' class='colors'>
+PaleVioletRed1</div>
+<div id='d48' class='colors'>
+PaleVioletRed3</div>
+<div id='d49' class='colors'>
+LavenderBlush</div>
+<div id='d50' class='colors'>
+LavenderBlush1</div>
+<div id='d51' class='colors'>
+LavenderBlush3</div>
+<div id='d52' class='colors'>
+LavenderBlush2</div>
+<div id='d53' class='colors'>
+LavenderBlush4</div>
+<div id='d54' class='colors'>
+maroon</div>
+<div id='d55' class='colors'>
+HotPink3</div>
+<div id='d56' class='colors'>
+VioletRed3</div>
+<div id='d57' class='colors'>
+VioletRed1</div>
+<div id='d58' class='colors'>
+VioletRed2</div>
+<div id='d59' class='colors'>
+VioletRed4</div>
+<div id='d60' class='colors'>
+HotPink2</div>
+<div id='d61' class='colors'>
+HotPink1</div>
+<div id='d62' class='colors'>
+HotPink4</div>
+<div id='d63' class='colors'>
+HotPink</div>
+<div id='d64' class='colors'>
+DeepPink</div>
+<div id='d65' class='colors'>
+DeepPink1</div>
+<div id='d66' class='colors'>
+DeepPink2</div>
+<div id='d67' class='colors'>
+DeepPink3</div>
+<div id='d68' class='colors'>
+DeepPink4</div>
+<div id='d69' class='colors'>
+maroon1</div>
+<div id='d70' class='colors'>
+maroon2</div>
+<div id='d71' class='colors'>
+maroon3</div>
+<div id='d72' class='colors'>
+maroon4</div>
+<div id='d73' class='colors'>
+MediumVioletRed</div>
+<div id='d74' class='colors'>
+VioletRed</div>
+<div id='d75' class='colors'>
+orchid2</div>
+<div id='d76' class='colors'>
+orchid</div>
+<div id='d77' class='colors'>
+orchid1</div>
+<div id='d78' class='colors'>
+orchid3</div>
+<div id='d79' class='colors'>
+orchid4</div>
+<div id='d80' class='colors'>
+thistle1</div>
+<div id='d81' class='colors'>
+thistle2</div>
+<div id='d82' class='colors'>
+plum1</div>
+<div id='d83' class='colors'>
+plum2</div>
+<div id='d84' class='colors'>
+thistle</div>
+<div id='d85' class='colors'>
+thistle3</div>
+<div id='d86' class='colors'>
+plum</div>
+<div id='d87' class='colors'>
+violet</div>
+<div id='d88' class='colors'>
+plum3</div>
+<div id='d89' class='colors'>
+thistle4</div>
+<div id='d90' class='colors'>
+fuchsia</div>
+<div id='d91' class='colors'>
+magenta</div>
+<div id='d92' class='colors'>
+magenta1</div>
+<div id='d93' class='colors'>
+plum4</div>
+<div id='d94' class='colors'>
+magenta2</div>
+<div id='d95' class='colors'>
+magenta3</div>
+<div id='d96' class='colors'>
+DarkMagenta</div>
+<div id='d97' class='colors'>
+magenta4</div>
+<div id='d98' class='colors'>
+purple</div>
+<div id='d99' class='colors'>
+MediumOrchid</div>
+<div id='d100' class='colors'>
+MediumOrchid1</div>
+<div id='d101' class='colors'>
+MediumOrchid2</div>
+<div id='d102' class='colors'>
+MediumOrchid3</div>
+<div id='d103' class='colors'>
+MediumOrchid4</div>
+<div id='d104' class='colors'>
+DarkViolet</div>
+<div id='d105' class='colors'>
+DarkOrchid</div>
+<div id='d106' class='colors'>
+DarkOrchid1</div>
+<div id='d107' class='colors'>
+DarkOrchid3</div>
+<div id='d108' class='colors'>
+DarkOrchid2</div>
+<div id='d109' class='colors'>
+DarkOrchid4</div>
+<div id='d110' class='colors'>
+purple</div>
+<div id='d111' class='colors'>
+indigo</div>
+<div id='d112' class='colors'>
+BlueViolet</div>
+<div id='d113' class='colors'>
+purple2</div>
+<div id='d114' class='colors'>
+purple3</div>
+<div id='d115' class='colors'>
+purple4</div>
+<div id='d116' class='colors'>
+purple1</div>
+<div id='d117' class='colors'>
+MediumPurple</div>
+<div id='d118' class='colors'>
+MediumPurple1</div>
+<div id='d119' class='colors'>
+MediumPurple2</div>
+<div id='d120' class='colors'>
+MediumPurple3</div>
+<div id='d121' class='colors'>
+MediumPurple4</div>
+<div id='d122' class='colors'>
+DarkSlateBlue</div>
+<div id='d123' class='colors'>
+LightSlateBlue</div>
+<div id='d124' class='colors'>
+MediumSlateBlue</div>
+<div id='d125' class='colors'>
+SlateBlue</div>
+<div id='d126' class='colors'>
+SlateBlue1</div>
+<div id='d127' class='colors'>
+SlateBlue2</div>
+<div id='d128' class='colors'>
+SlateBlue3</div>
+<div id='d129' class='colors'>
+SlateBlue4</div>
+<div id='d130' class='colors'>
+GhostWhite</div>
+<div id='d131' class='colors'>
+lavender</div>
+<div id='d132' class='colors'>
+blue</div>
+<div id='d133' class='colors'>
+blue1</div>
+<div id='d134' class='colors'>
+blue2</div>
+<div id='d135' class='colors'>
+blue3</div>
+<div id='d136' class='colors'>
+MediumBlue</div>
+<div id='d137' class='colors'>
+blue4</div>
+<div id='d138' class='colors'>
+DarkBlue</div>
+<div id='d139' class='colors'>
+MidnightBlue</div>
+<div id='d140' class='colors'>
+navy</div>
+<div id='d141' class='colors'>
+NavyBlue</div>
+<div id='d142' class='colors'>
+RoyalBlue</div>
+<div id='d143' class='colors'>
+RoyalBlue1</div>
+<div id='d144' class='colors'>
+RoyalBlue2</div>
+<div id='d145' class='colors'>
+RoyalBlue3</div>
+<div id='d146' class='colors'>
+RoyalBlue4</div>
+<div id='d147' class='colors'>
+CornflowerBlue</div>
+<div id='d148' class='colors'>
+LightSteelBlue</div>
+<div id='d149' class='colors'>
+LightSteelBlue1</div>
+<div id='d150' class='colors'>
+LightSteelBlue2</div>
+<div id='d151' class='colors'>
+LightSteelBlue3</div>
+<div id='d152' class='colors'>
+LightSteelBlue4</div>
+<div id='d153' class='colors'>
+SlateGray4</div>
+<div id='d154' class='colors'>
+SlateGray1</div>
+<div id='d155' class='colors'>
+SlateGray2</div>
+<div id='d156' class='colors'>
+SlateGray3</div>
+<div id='d157' class='colors'>
+LightSlateGray</div>
+<div id='d158' class='colors'>
+LightSlateGrey</div>
+<div id='d159' class='colors'>
+SlateGray</div>
+<div id='d160' class='colors'>
+SlateGrey</div>
+<div id='d161' class='colors'>
+DodgerBlue</div>
+<div id='d162' class='colors'>
+DodgerBlue1</div>
+<div id='d163' class='colors'>
+DodgerBlue2</div>
+<div id='d164' class='colors'>
+DodgerBlue4</div>
+<div id='d165' class='colors'>
+DodgerBlue3</div>
+<div id='d166' class='colors'>
+AliceBlue</div>
+<div id='d167' class='colors'>
+SteelBlue4</div>
+<div id='d168' class='colors'>
+SteelBlue</div>
+<div id='d169' class='colors'>
+SteelBlue1</div>
+<div id='d170' class='colors'>
+SteelBlue2</div>
+<div id='d171' class='colors'>
+SteelBlue3</div>
+<div id='d172' class='colors'>
+SkyBlue4</div>
+<div id='d173' class='colors'>
+SkyBlue1</div>
+<div id='d174' class='colors'>
+SkyBlue2</div>
+<div id='d175' class='colors'>
+SkyBlue3</div>
+<div id='d176' class='colors'>
+LightSkyBlue</div>
+<div id='d177' class='colors'>
+LightSkyBlue4</div>
+<div id='d178' class='colors'>
+LightSkyBlue1</div>
+<div id='d179' class='colors'>
+LightSkyBlue2</div>
+<div id='d180' class='colors'>
+LightSkyBlue3</div>
+<div id='d181' class='colors'>
+SkyBlue</div>
+<div id='d182' class='colors'>
+LightBlue3</div>
+<div id='d183' class='colors'>
+DeepSkyBlue</div>
+<div id='d184' class='colors'>
+DeepSkyBlue1</div>
+<div id='d185' class='colors'>
+DeepSkyBlue2</div>
+<div id='d186' class='colors'>
+DeepSkyBlue4</div>
+<div id='d187' class='colors'>
+DeepSkyBlue3</div>
+<div id='d188' class='colors'>
+LightBlue1</div>
+<div id='d189' class='colors'>
+LightBlue2</div>
+<div id='d190' class='colors'>
+LightBlue</div>
+<div id='d191' class='colors'>
+LightBlue4</div>
+<div id='d192' class='colors'>
+PowderBlue</div>
+<div id='d193' class='colors'>
+CadetBlue1</div>
+<div id='d194' class='colors'>
+CadetBlue2</div>
+<div id='d195' class='colors'>
+CadetBlue3</div>
+<div id='d196' class='colors'>
+CadetBlue4</div>
+<div id='d197' class='colors'>
+turquoise1</div>
+<div id='d198' class='colors'>
+turquoise2</div>
+<div id='d199' class='colors'>
+turquoise3</div>
+<div id='d200' class='colors'>
+turquoise4</div>
+<div id='d201' class='colors'>
+cadet blue</div>
+<div id='d202' class='colors'>
+CadetBlue</div>
+<div id='d203' class='colors'>
+DarkTurquoise</div>
+<div id='d204' class='colors'>
+azure</div>
+<div id='d205' class='colors'>
+azure1</div>
+<div id='d206' class='colors'>
+LightCyan</div>
+<div id='d207' class='colors'>
+LightCyan1</div>
+<div id='d208' class='colors'>
+azure2</div>
+<div id='d209' class='colors'>
+LightCyan2</div>
+<div id='d210' class='colors'>
+PaleTurquoise1</div>
+<div id='d211' class='colors'>
+PaleTurquoise</div>
+<div id='d212' class='colors'>
+PaleTurquoise2</div>
+<div id='d213' class='colors'>
+DarkSlateGray1</div>
+<div id='d214' class='colors'>
+azure3</div>
+<div id='d215' class='colors'>
+LightCyan3</div>
+<div id='d216' class='colors'>
+DarkSlateGray2</div>
+<div id='d217' class='colors'>
+PaleTurquoise3</div>
+<div id='d218' class='colors'>
+DarkSlateGray3</div>
+<div id='d219' class='colors'>
+azure4</div>
+<div id='d220' class='colors'>
+LightCyan4</div>
+<div id='d221' class='colors'>
+aqua</div>
+<div id='d222' class='colors'>
+cyan</div>
+<div id='d223' class='colors'>
+cyan1</div>
+<div id='d224' class='colors'>
+PaleTurquoise4</div>
+<div id='d225' class='colors'>
+cyan2</div>
+<div id='d226' class='colors'>
+DarkSlateGray4</div>
+<div id='d227' class='colors'>
+cyan3</div>
+<div id='d228' class='colors'>
+cyan4</div>
+<div id='d229' class='colors'>
+DarkCyan</div>
+<div id='d230' class='colors'>
+teal</div>
+<div id='d231' class='colors'>
+DarkSlateGray</div>
+<div id='d232' class='colors'>
+DarkSlateGrey</div>
+<div id='d233' class='colors'>
+MediumTurquoise</div>
+<div id='d234' class='colors'>
+LightSeaGreen</div>
+<div id='d235' class='colors'>
+turquoise</div>
+<div id='d236' class='colors'>
+aquamarine4</div>
+<div id='d237' class='colors'>
+aquamarine</div>
+<div id='d238' class='colors'>
+aquamarine1</div>
+<div id='d239' class='colors'>
+aquamarine2</div>
+<div id='d240' class='colors'>
+aquamarine3</div>
+<div id='d241' class='colors'>
+MediumAquamarine</div>
+<div id='d242' class='colors'>
+MediumSpringGreen</div>
+<div id='d243' class='colors'>
+MintCream</div>
+<div id='d244' class='colors'>
+SpringGreen</div>
+<div id='d245' class='colors'>
+SpringGreen1</div>
+<div id='d246' class='colors'>
+SpringGreen2</div>
+<div id='d247' class='colors'>
+SpringGreen3</div>
+<div id='d248' class='colors'>
+SpringGreen4</div>
+<div id='d249' class='colors'>
+MediumSeaGreen</div>
+<div id='d250' class='colors'>
+SeaGreen</div>
+<div id='d251' class='colors'>
+SeaGreen3</div>
+<div id='d252' class='colors'>
+SeaGreen1</div>
+<div id='d253' class='colors'>
+SeaGreen4</div>
+<div id='d254' class='colors'>
+SeaGreen2</div>
+<div id='d255' class='colors'>
+MediumForestGreen</div>
+<div id='d256' class='colors'>
+honeydew</div>
+<div id='d257' class='colors'>
+honeydew1</div>
+<div id='d258' class='colors'>
+honeydew2</div>
+<div id='d259' class='colors'>
+DarkSeaGreen1</div>
+<div id='d260' class='colors'>
+DarkSeaGreen2</div>
+<div id='d261' class='colors'>
+PaleGreen1</div>
+<div id='d262' class='colors'>
+PaleGreen</div>
+<div id='d263' class='colors'>
+honeydew3</div>
+<div id='d264' class='colors'>
+LightGreen</div>
+<div id='d265' class='colors'>
+PaleGreen2</div>
+<div id='d266' class='colors'>
+DarkSeaGreen3</div>
+<div id='d267' class='colors'>
+DarkSeaGreen</div>
+<div id='d268' class='colors'>
+PaleGreen3</div>
+<div id='d269' class='colors'>
+honeydew4</div>
+<div id='d270' class='colors'>
+green1</div>
+<div id='d271' class='colors'>
+lime</div>
+<div id='d272' class='colors'>
+LimeGreen</div>
+<div id='d273' class='colors'>
+DarkSeaGreen4</div>
+<div id='d274' class='colors'>
+green2</div>
+<div id='d275' class='colors'>
+PaleGreen4</div>
+<div id='d276' class='colors'>
+green3</div>
+<div id='d277' class='colors'>
+ForestGreen</div>
+<div id='d278' class='colors'>
+green4</div>
+<div id='d279' class='colors'>
+green</div>
+<div id='d280' class='colors'>
+DarkGreen</div>
+<div id='d281' class='colors'>
+LawnGreen</div>
+<div id='d282' class='colors'>
+chartreuse</div>
+<div id='d283' class='colors'>
+chartreuse1</div>
+<div id='d284' class='colors'>
+chartreuse2</div>
+<div id='d285' class='colors'>
+chartreuse3</div>
+<div id='d286' class='colors'>
+chartreuse4</div>
+<div id='d287' class='colors'>
+GreenYellow</div>
+<div id='d288' class='colors'>
+DarkOliveGreen3</div>
+<div id='d289' class='colors'>
+DarkOliveGreen1</div>
+<div id='d290' class='colors'>
+DarkOliveGreen2</div>
+<div id='d291' class='colors'>
+DarkOliveGreen4</div>
+<div id='d292' class='colors'>
+DarkOliveGreen</div>
+<div id='d293' class='colors'>
+OliveDrab</div>
+<div id='d294' class='colors'>
+OliveDrab1</div>
+<div id='d295' class='colors'>
+OliveDrab2</div>
+<div id='d296' class='colors'>
+OliveDrab3</div>
+<div id='d297' class='colors'>
+YellowGreen</div>
+<div id='d298' class='colors'>
+OliveDrab4</div>
+<div id='d299' class='colors'>
+ivory</div>
+<div id='d300' class='colors'>
+ivory1</div>
+<div id='d301' class='colors'>
+LightYellow</div>
+<div id='d302' class='colors'>
+LightYellow1</div>
+<div id='d303' class='colors'>
+beige</div>
+<div id='d304' class='colors'>
+ivory2</div>
+<div id='d305' class='colors'>
+LightGoldenrodYellow</div>
+<div id='d306' class='colors'>
+LightYellow2</div>
+<div id='d307' class='colors'>
+ivory3</div>
+<div id='d308' class='colors'>
+LightYellow3</div>
+<div id='d309' class='colors'>
+ivory4</div>
+<div id='d310' class='colors'>
+LightYellow4</div>
+<div id='d311' class='colors'>
+yellow</div>
+<div id='d312' class='colors'>
+yellow1</div>
+<div id='d313' class='colors'>
+yellow2</div>
+<div id='d314' class='colors'>
+yellow3</div>
+<div id='d315' class='colors'>
+yellow4</div>
+<div id='d316' class='colors'>
+olive</div>
+<div id='d317' class='colors'>
+DarkKhaki</div>
+<div id='d318' class='colors'>
+khaki2</div>
+<div id='d319' class='colors'>
+LemonChiffon4</div>
+<div id='d320' class='colors'>
+khaki1</div>
+<div id='d321' class='colors'>
+khaki3</div>
+<div id='d322' class='colors'>
+khaki4</div>
+<div id='d323' class='colors'>
+PaleGoldenrod</div>
+<div id='d324' class='colors'>
+LemonChiffon</div>
+<div id='d325' class='colors'>
+LemonChiffon1</div>
+<div id='d326' class='colors'>
+khaki</div>
+<div id='d327' class='colors'>
+LemonChiffon3</div>
+<div id='d328' class='colors'>
+LemonChiffon2</div>
+<div id='d329' class='colors'>
+MediumGoldenRod</div>
+<div id='d330' class='colors'>
+cornsilk4</div>
+<div id='d331' class='colors'>
+gold</div>
+<div id='d332' class='colors'>
+gold1</div>
+<div id='d333' class='colors'>
+gold2</div>
+<div id='d334' class='colors'>
+gold3</div>
+<div id='d335' class='colors'>
+gold4</div>
+<div id='d336' class='colors'>
+LightGoldenrod</div>
+<div id='d337' class='colors'>
+LightGoldenrod4</div>
+<div id='d338' class='colors'>
+LightGoldenrod1</div>
+<div id='d339' class='colors'>
+LightGoldenrod3</div>
+<div id='d340' class='colors'>
+LightGoldenrod2</div>
+<div id='d341' class='colors'>
+cornsilk3</div>
+<div id='d342' class='colors'>
+cornsilk2</div>
+<div id='d343' class='colors'>
+cornsilk</div>
+<div id='d344' class='colors'>
+cornsilk1</div>
+<div id='d345' class='colors'>
+goldenrod</div>
+<div id='d346' class='colors'>
+goldenrod1</div>
+<div id='d347' class='colors'>
+goldenrod2</div>
+<div id='d348' class='colors'>
+goldenrod3</div>
+<div id='d349' class='colors'>
+goldenrod4</div>
+<div id='d350' class='colors'>
+DarkGoldenrod</div>
+<div id='d351' class='colors'>
+DarkGoldenrod1</div>
+<div id='d352' class='colors'>
+DarkGoldenrod2</div>
+<div id='d353' class='colors'>
+DarkGoldenrod3</div>
+<div id='d354' class='colors'>
+DarkGoldenrod4</div>
+<div id='d355' class='colors'>
+FloralWhite</div>
+<div id='d356' class='colors'>
+wheat2</div>
+<div id='d357' class='colors'>
+OldLace</div>
+<div id='d358' class='colors'>
+wheat</div>
+<div id='d359' class='colors'>
+wheat1</div>
+<div id='d360' class='colors'>
+wheat3</div>
+<div id='d361' class='colors'>
+orange</div>
+<div id='d362' class='colors'>
+orange1</div>
+<div id='d363' class='colors'>
+orange2</div>
+<div id='d364' class='colors'>
+orange3</div>
+<div id='d365' class='colors'>
+orange4</div>
+<div id='d366' class='colors'>
+wheat4</div>
+<div id='d367' class='colors'>
+moccasin</div>
+<div id='d368' class='colors'>
+PapayaWhip</div>
+<div id='d369' class='colors'>
+NavajoWhite3</div>
+<div id='d370' class='colors'>
+BlanchedAlmond</div>
+<div id='d371' class='colors'>
+NavajoWhite</div>
+<div id='d372' class='colors'>
+NavajoWhite1</div>
+<div id='d373' class='colors'>
+NavajoWhite2</div>
+<div id='d374' class='colors'>
+NavajoWhite4</div>
+<div id='d375' class='colors'>
+AntiqueWhite4</div>
+<div id='d376' class='colors'>
+AntiqueWhite</div>
+<div id='d377' class='colors'>
+tan</div>
+<div id='d378' class='colors'>
+bisque4</div>
+<div id='d379' class='colors'>
+burlywood</div>
+<div id='d380' class='colors'>
+AntiqueWhite2</div>
+<div id='d381' class='colors'>
+burlywood1</div>
+<div id='d382' class='colors'>
+burlywood3</div>
+<div id='d383' class='colors'>
+burlywood2</div>
+<div id='d384' class='colors'>
+AntiqueWhite1</div>
+<div id='d385' class='colors'>
+burlywood4</div>
+<div id='d386' class='colors'>
+AntiqueWhite3</div>
+<div id='d387' class='colors'>
+DarkOrange</div>
+<div id='d388' class='colors'>
+bisque2</div>
+<div id='d389' class='colors'>
+bisque</div>
+<div id='d390' class='colors'>
+bisque1</div>
+<div id='d391' class='colors'>
+bisque3</div>
+<div id='d392' class='colors'>
+DarkOrange1</div>
+<div id='d393' class='colors'>
+linen</div>
+<div id='d394' class='colors'>
+DarkOrange2</div>
+<div id='d395' class='colors'>
+DarkOrange3</div>
+<div id='d396' class='colors'>
+DarkOrange4</div>
+<div id='d397' class='colors'>
+peru</div>
+<div id='d398' class='colors'>
+tan1</div>
+<div id='d399' class='colors'>
+tan2</div>
+<div id='d400' class='colors'>
+tan3</div>
+<div id='d401' class='colors'>
+tan4</div>
+<div id='d402' class='colors'>
+PeachPuff</div>
+<div id='d403' class='colors'>
+PeachPuff1</div>
+<div id='d404' class='colors'>
+PeachPuff4</div>
+<div id='d405' class='colors'>
+PeachPuff2</div>
+<div id='d406' class='colors'>
+PeachPuff3</div>
+<div id='d407' class='colors'>
+SandyBrown</div>
+<div id='d408' class='colors'>
+seashell4</div>
+<div id='d409' class='colors'>
+seashell2</div>
+<div id='d410' class='colors'>
+seashell3</div>
+<div id='d411' class='colors'>
+chocolate</div>
+<div id='d412' class='colors'>
+chocolate1</div>
+<div id='d413' class='colors'>
+chocolate2</div>
+<div id='d414' class='colors'>
+chocolate3</div>
+<div id='d415' class='colors'>
+chocolate4</div>
+<div id='d416' class='colors'>
+SaddleBrown</div>
+<div id='d417' class='colors'>
+seashell</div>
+<div id='d418' class='colors'>
+seashell1</div>
+<div id='d419' class='colors'>
+sienna4</div>
+<div id='d420' class='colors'>
+sienna</div>
+<div id='d421' class='colors'>
+sienna1</div>
+<div id='d422' class='colors'>
+sienna2</div>
+<div id='d423' class='colors'>
+sienna3</div>
+<div id='d424' class='colors'>
+LightSalmon3</div>
+<div id='d425' class='colors'>
+LightSalmon</div>
+<div id='d426' class='colors'>
+LightSalmon1</div>
+<div id='d427' class='colors'>
+LightSalmon4</div>
+<div id='d428' class='colors'>
+LightSalmon2</div>
+<div id='d429' class='colors'>
+coral</div>
+<div id='d430' class='colors'>
+OrangeRed</div>
+<div id='d431' class='colors'>
+OrangeRed1</div>
+<div id='d432' class='colors'>
+OrangeRed2</div>
+<div id='d433' class='colors'>
+OrangeRed3</div>
+<div id='d434' class='colors'>
+OrangeRed4</div>
+<div id='d435' class='colors'>
+DarkSalmon</div>
+<div id='d436' class='colors'>
+salmon1</div>
+<div id='d437' class='colors'>
+salmon2</div>
+<div id='d438' class='colors'>
+salmon3</div>
+<div id='d439' class='colors'>
+salmon4</div>
+<div id='d440' class='colors'>
+coral1</div>
+<div id='d441' class='colors'>
+coral2</div>
+<div id='d442' class='colors'>
+coral3</div>
+<div id='d443' class='colors'>
+coral4</div>
+<div id='d444' class='colors'>
+tomato4</div>
+<div id='d445' class='colors'>
+tomato</div>
+<div id='d446' class='colors'>
+tomato1</div>
+<div id='d447' class='colors'>
+tomato2</div>
+<div id='d448' class='colors'>
+tomato3</div>
+<div id='d449' class='colors'>
+MistyRose4</div>
+<div id='d450' class='colors'>
+MistyRose2</div>
+<div id='d451' class='colors'>
+MistyRose</div>
+<div id='d452' class='colors'>
+MistyRose1</div>
+<div id='d453' class='colors'>
+salmon</div>
+<div id='d454' class='colors'>
+MistyRose3</div>
+<div id='d455' class='colors'>
+white</div>
+<div id='d456' class='colors'>
+gray100</div>
+<div id='d457' class='colors'>
+grey100</div>
+<div id='d458' class='colors'>
+grey100</div>
+<div id='d459' class='colors'>
+gray99</div>
+<div id='d460' class='colors'>
+grey99</div>
+<div id='d461' class='colors'>
+gray98</div>
+<div id='d462' class='colors'>
+grey98</div>
+<div id='d463' class='colors'>
+gray97</div>
+<div id='d464' class='colors'>
+grey97</div>
+<div id='d465' class='colors'>
+gray96</div>
+<div id='d466' class='colors'>
+grey96</div>
+<div id='d467' class='colors'>
+WhiteSmoke</div>
+<div id='d468' class='colors'>
+gray95</div>
+<div id='d469' class='colors'>
+grey95</div>
+<div id='d470' class='colors'>
+gray94</div>
+<div id='d471' class='colors'>
+grey94</div>
+<div id='d472' class='colors'>
+gray93</div>
+<div id='d473' class='colors'>
+grey93</div>
+<div id='d474' class='colors'>
+gray92</div>
+<div id='d475' class='colors'>
+grey92</div>
+<div id='d476' class='colors'>
+gray91</div>
+<div id='d477' class='colors'>
+grey91</div>
+<div id='d478' class='colors'>
+gray90</div>
+<div id='d479' class='colors'>
+grey90</div>
+<div id='d480' class='colors'>
+gray89</div>
+<div id='d481' class='colors'>
+grey89</div>
+<div id='d482' class='colors'>
+gray88</div>
+<div id='d483' class='colors'>
+grey88</div>
+<div id='d484' class='colors'>
+gray87</div>
+<div id='d485' class='colors'>
+grey87</div>
+<div id='d486' class='colors'>
+gainsboro</div>
+<div id='d487' class='colors'>
+gray86</div>
+<div id='d488' class='colors'>
+grey86</div>
+<div id='d489' class='colors'>
+gray85</div>
+<div id='d490' class='colors'>
+grey85</div>
+<div id='d491' class='colors'>
+gray84</div>
+<div id='d492' class='colors'>
+grey84</div>
+<div id='d493' class='colors'>
+gray83</div>
+<div id='d494' class='colors'>
+grey83</div>
+<div id='d495' class='colors'>
+LightGray</div>
+<div id='d496' class='colors'>
+LightGrey</div>
+<div id='d497' class='colors'>
+gray82</div>
+<div id='d498' class='colors'>
+grey82</div>
+<div id='d499' class='colors'>
+gray81</div>
+<div id='d500' class='colors'>
+grey81</div>
+<div id='d501' class='colors'>
+gray80</div>
+<div id='d502' class='colors'>
+grey80</div>
+<div id='d503' class='colors'>
+gray79</div>
+<div id='d504' class='colors'>
+grey79</div>
+<div id='d505' class='colors'>
+gray78</div>
+<div id='d506' class='colors'>
+grey78</div>
+<div id='d507' class='colors'>
+gray77</div>
+<div id='d508' class='colors'>
+grey77</div>
+<div id='d509' class='colors'>
+gray76</div>
+<div id='d510' class='colors'>
+grey76</div>
+<div id='d511' class='colors'>
+silver</div>
+<div id='d512' class='colors'>
+gray75</div>
+<div id='d513' class='colors'>
+grey75</div>
+<div id='d514' class='colors'>
+gray74</div>
+<div id='d515' class='colors'>
+grey74</div>
+<div id='d516' class='colors'>
+gray73</div>
+<div id='d517' class='colors'>
+grey73</div>
+<div id='d518' class='colors'>
+gray72</div>
+<div id='d519' class='colors'>
+grey72</div>
+<div id='d520' class='colors'>
+gray71</div>
+<div id='d521' class='colors'>
+grey71</div>
+<div id='d522' class='colors'>
+gray70</div>
+<div id='d523' class='colors'>
+grey70</div>
+<div id='d524' class='colors'>
+gray69</div>
+<div id='d525' class='colors'>
+grey69</div>
+<div id='d526' class='colors'>
+gray68</div>
+<div id='d527' class='colors'>
+grey68</div>
+<div id='d528' class='colors'>
+gray67</div>
+<div id='d529' class='colors'>
+grey67</div>
+<div id='d530' class='colors'>
+DarkGray</div>
+<div id='d531' class='colors'>
+DarkGrey</div>
+<div id='d532' class='colors'>
+gray66</div>
+<div id='d533' class='colors'>
+grey66</div>
+<div id='d534' class='colors'>
+gray65</div>
+<div id='d535' class='colors'>
+grey65</div>
+<div id='d536' class='colors'>
+gray64</div>
+<div id='d537' class='colors'>
+grey64</div>
+<div id='d538' class='colors'>
+gray63</div>
+<div id='d539' class='colors'>
+grey63</div>
+<div id='d540' class='colors'>
+gray62</div>
+<div id='d541' class='colors'>
+grey62</div>
+<div id='d542' class='colors'>
+gray61</div>
+<div id='d543' class='colors'>
+grey61</div>
+<div id='d544' class='colors'>
+gray60</div>
+<div id='d545' class='colors'>
+grey60</div>
+<div id='d546' class='colors'>
+gray59</div>
+<div id='d547' class='colors'>
+grey59</div>
+<div id='d548' class='colors'>
+gray58</div>
+<div id='d549' class='colors'>
+grey58</div>
+<div id='d550' class='colors'>
+gray57</div>
+<div id='d551' class='colors'>
+grey57</div>
+<div id='d552' class='colors'>
+gray56</div>
+<div id='d553' class='colors'>
+grey56</div>
+<div id='d554' class='colors'>
+gray55</div>
+<div id='d555' class='colors'>
+grey55</div>
+<div id='d556' class='colors'>
+gray54</div>
+<div id='d557' class='colors'>
+grey54</div>
+<div id='d558' class='colors'>
+gray53</div>
+<div id='d559' class='colors'>
+grey53</div>
+<div id='d560' class='colors'>
+gray52</div>
+<div id='d561' class='colors'>
+grey52</div>
+<div id='d562' class='colors'>
+gray51</div>
+<div id='d563' class='colors'>
+grey51</div>
+<div id='d564' class='colors'>
+fractal</div>
+<div id='d565' class='colors'>
+gray50</div>
+<div id='d566' class='colors'>
+grey50</div>
+<div id='d567' class='colors'>
+gray</div>
+<div id='d568' class='colors'>
+gray49</div>
+<div id='d569' class='colors'>
+grey49</div>
+<div id='d570' class='colors'>
+gray48</div>
+<div id='d571' class='colors'>
+grey48</div>
+<div id='d572' class='colors'>
+gray47</div>
+<div id='d573' class='colors'>
+grey47</div>
+<div id='d574' class='colors'>
+gray46</div>
+<div id='d575' class='colors'>
+grey46</div>
+<div id='d576' class='colors'>
+gray45</div>
+<div id='d577' class='colors'>
+grey45</div>
+<div id='d578' class='colors'>
+gray44</div>
+<div id='d579' class='colors'>
+grey44</div>
+<div id='d580' class='colors'>
+gray43</div>
+<div id='d581' class='colors'>
+grey43</div>
+<div id='d582' class='colors'>
+gray42</div>
+<div id='d583' class='colors'>
+grey42</div>
+<div id='d584' class='colors'>
+DimGray</div>
+<div id='d585' class='colors'>
+DimGrey</div>
+<div id='d586' class='colors'>
+gray41</div>
+<div id='d587' class='colors'>
+grey41</div>
+<div id='d588' class='colors'>
+gray40</div>
+<div id='d589' class='colors'>
+grey40</div>
+<div id='d590' class='colors'>
+gray39</div>
+<div id='d591' class='colors'>
+grey39</div>
+<div id='d592' class='colors'>
+gray38</div>
+<div id='d593' class='colors'>
+grey38</div>
+<div id='d594' class='colors'>
+gray37</div>
+<div id='d595' class='colors'>
+grey37</div>
+<div id='d596' class='colors'>
+gray36</div>
+<div id='d597' class='colors'>
+grey36</div>
+<div id='d598' class='colors'>
+gray35</div>
+<div id='d599' class='colors'>
+grey35</div>
+<div id='d600' class='colors'>
+gray34</div>
+<div id='d601' class='colors'>
+grey34</div>
+<div id='d602' class='colors'>
+gray33</div>
+<div id='d603' class='colors'>
+grey33</div>
+<div id='d604' class='colors'>
+gray32</div>
+<div id='d605' class='colors'>
+grey32</div>
+<div id='d606' class='colors'>
+gray31</div>
+<div id='d607' class='colors'>
+grey31</div>
+<div id='d608' class='colors'>
+gray30</div>
+<div id='d609' class='colors'>
+grey30</div>
+<div id='d610' class='colors'>
+gray29</div>
+<div id='d611' class='colors'>
+grey29</div>
+<div id='d612' class='colors'>
+gray28</div>
+<div id='d613' class='colors'>
+grey28</div>
+<div id='d614' class='colors'>
+gray27</div>
+<div id='d615' class='colors'>
+grey27</div>
+<div id='d616' class='colors'>
+gray26</div>
+<div id='d617' class='colors'>
+grey26</div>
+<div id='d618' class='colors'>
+gray25</div>
+<div id='d619' class='colors'>
+grey25</div>
+<div id='d620' class='colors'>
+gray24</div>
+<div id='d621' class='colors'>
+grey24</div>
+<div id='d622' class='colors'>
+gray23</div>
+<div id='d623' class='colors'>
+grey23</div>
+<div id='d624' class='colors'>
+gray22</div>
+<div id='d625' class='colors'>
+grey22</div>
+<div id='d626' class='colors'>
+gray21</div>
+<div id='d627' class='colors'>
+grey21</div>
+<div id='d628' class='colors'>
+gray20</div>
+<div id='d629' class='colors'>
+grey20</div>
+<div id='d630' class='colors'>
+gray19</div>
+<div id='d631' class='colors'>
+grey19</div>
+<div id='d632' class='colors'>
+gray18</div>
+<div id='d633' class='colors'>
+grey18</div>
+<div id='d634' class='colors'>
+gray17</div>
+<div id='d635' class='colors'>
+grey17</div>
+<div id='d636' class='colors'>
+gray16</div>
+<div id='d637' class='colors'>
+grey16</div>
+<div id='d638' class='colors'>
+gray15</div>
+<div id='d639' class='colors'>
+grey15</div>
+<div id='d640' class='colors'>
+gray14</div>
+<div id='d641' class='colors'>
+grey14</div>
+<div id='d642' class='colors'>
+gray13</div>
+<div id='d643' class='colors'>
+grey13</div>
+<div id='d644' class='colors'>
+gray12</div>
+<div id='d645' class='colors'>
+grey12</div>
+<div id='d646' class='colors'>
+gray11</div>
+<div id='d647' class='colors'>
+grey11</div>
+<div id='d648' class='colors'>
+gray10</div>
+<div id='d649' class='colors'>
+grey10</div>
+<div id='d650' class='colors'>
+gray9</div>
+<div id='d651' class='colors'>
+grey9</div>
+<div id='d652' class='colors'>
+gray8</div>
+<div id='d653' class='colors'>
+grey8</div>
+<div id='d654' class='colors'>
+gray7</div>
+<div id='d655' class='colors'>
+grey7</div>
+<div id='d656' class='colors'>
+gray6</div>
+<div id='d657' class='colors'>
+grey6</div>
+<div id='d658' class='colors'>
+gray5</div>
+<div id='d659' class='colors'>
+grey5</div>
+<div id='d660' class='colors'>
+gray4</div>
+<div id='d661' class='colors'>
+grey4</div>
+<div id='d662' class='colors'>
+gray3</div>
+<div id='d663' class='colors'>
+grey3</div>
+<div id='d664' class='colors'>
+gray2</div>
+<div id='d665' class='colors'>
+grey2</div>
+<div id='d666' class='colors'>
+gray1</div>
+<div id='d667' class='colors'>
+grey1</div>
+<div id='d668' class='colors'>
+black</div>
+<div id='d669' class='colors'>
+gray0</div>
+<div id='d670' class='colors'>
+grey0</div>
+<div id='d671' class='colors'>
+opaque</div>
+<div id='d672' class='colors'>
+none</div>
+<div id='d673' class='colors'>
+transparent</div>
+</div>
+
+<div id='colornames'>
+CLICK TO CHOOSE THE COLOR
+</div>
+
+<div id='switches'>
+
+<span id='title'>OPTIONS</span>
+<div id='hexswitch' class='theswitches'>CLICK TO USE HEX KEYS</div>
+<br>
+<div id='infoswitch' class='theswitches'>CLICK TO TOGGLE PALATE INFO<span id='infospace'></span></div>
+<br>
+<div id='backgroundswitch' class='theswitches'>CLICK TO TOGGLE BACKGROUNDS</div>
+<br>
+<div id='preview'></div>
+<div id='nameholder'>YOU WILL CHOOSE:<br><input id='namespace' style='width:inherit' type='text'></input></div>
+<br>
+<span id='transparent'>to choose transparent as a color, click <span id='transbutton'>HERE</span></span>
+</div>
+</div>
+<script type='text/javascript' src='js/jquery-1.6.4.min.js'></script>
+<script type='text/javascript' src='js/colordict.js'></script>
+
+<script type='text/javascript'>
+
+
+//setup dimensions
+//////////////////
+
+
+function regolden(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num/ratio)
+ return newnum
+ }
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newval = goldenize(result)
+ propval = newval.toString()+'px'
+ if(propertystr == 'height'){
+ $(idandselectr).css('width', propval)
+ }
+ else if(propertystr == 'width'){
+ $(idandselectr).css('height', propval)
+ }
+ }
+function shrinkwidth(arg){
+ for(var i=0; i < 5; i++){
+ arg = regolden(arg)
+ }
+ division = Math.round(arg)
+ return division
+}
+
+function makecolorswidth(){
+ colorswidth = shrinkwidth(window.innerWidth)
+ $('.colors').css('width', colorswidth.toString()+'px')
+}
+function makecolorsheight(){
+ result = getproperty('.colors', 'width')
+ newval = regolden(result)
+ propval = newval.toString()+'px'
+ $('.colors').css('height', propval)
+}
+//the following function sets up the font sizes
+//inrelation to the size of the hexswitch font
+function setupfonts(){
+ var firstfont = getproperty('#hexswitch', 'font-size')
+ var finalfont = goldenize(firstfont)
+ $('#namespace').css('font-size', finalfont+'px')
+ $('#namespace').css('width', $('#switches').css('width'))
+ var secondfont = getproperty('#namespace', 'font-size')
+ var finalfont = goldenize(secondfont)
+ $('#colornames').css('font-size', finalfont+'px')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ var transfont = regolden(firstfont)
+ $('#transparent').css('font-size', transfont+'px')
+}
+function getcontainerwidth(){
+ basis = $('.colors').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ secondbasis = '2px'
+ secondbasis = parseInt(secondbasis.slice(0,-2))
+ widthval = (secondbasis*8)+(basis*4)+(goldenize(basis)-basis)
+ widthval = widthval.toString()+'px'
+ return widthval
+}
+
+function makecontainerwidth(){
+ var containerwidth = getcontainerwidth()
+ $('#container').css('width',containerwidth)
+}
+
+
+function setupsides()
+ {
+ var basis = $('#container').css('width')
+ basis = parseInt(basis.slice(0,-2))
+ remainder = (100-basis)/2
+ widths = regolden(basis)
+ widths = widths.toString()+'px'
+ lateralbasis = regolden(remainder)
+ leftside = toString(lateralbasis)+'%'
+ rightside = toString(100-lateralbasis)+'%'
+ $('#colornames').css('left', leftside)
+ $('#switches').css({'width': widths, 'left': rightside, 'overflow':'auto'})
+ }
+function previewdimensions(){
+ first = $('#switches').css('width')
+ first = parseInt(first.slice(0,-2))
+ width = regolden(first)
+ height = regolden(width)
+ width = width.toString()+'px'
+ height = height.toString()+'px'
+ $('#preview').css({'width':width, 'height':height})
+}
+function setupdimensions(){
+makecolorswidth()
+setupfonts()
+makecolorsheight()
+makecontainerwidth()
+setupsides()
+makegolden('#switches','width')
+previewdimensions()
+$('#namespace').css('width', 'inherit')
+$('#nameholder').css('width', 'inherit')
+$('#transparent').css({'float':'bottom','width':'inherit'})
+}
+setupdimensions()
+$(window).resize(function(){setupdimensions()})
+
+//BEGIN STYLINGS//
+//////////////////
+
+
+var old = {};
+function hovercss(sel, uno){
+
+ var chng = {};
+ chng['color'] = 'white';
+ chng['text-shadow'] = 'black 1px 2px';
+ chng['background-image'] = 'url(http://asdf.us/im/19/gradient_whitegray80_1321305183_1321305241_pepper_1321333403_pepper.jpg)';
+ if(uno == 'over'){
+ for(var key in chng){
+ old[key] = $('#'+sel).css(key)
+ }
+ for(var key in chng){
+ $('#'+sel).css(key, chng[key])
+ }
+ }
+ if(uno == 'out'){
+ for(var key in old){
+ $('#'+sel).css(key, old[key])
+ }
+ }
+}
+$('.theswitches').hover(function(){hovercss(this.id, 'over')}, function(){hovercss(this.id, 'out')})
+
+var transcss = {
+ 'color':'#141414','box-shadow':'10px 10px 5px #141414',
+ 'background-color':'#D1D1D1','color':'#141414',
+ 'border-width':'2px','border-style':'outset','cursor':'pointer'}
+$('#transbutton').css(transcss)
+var hovertrans = {
+ 'background-color':'DarkGrey','color':'#383838','box-shadow':'5px 5px 2px #141414'
+}
+$('#transbutton').hover(function(){$('#transbutton').css(hovertrans)},function(){$('#transbutton').css(transcss)})
+//threewayselector for what goes in the divs
+var infostate = 1
+function switchinfo()
+ {
+ if(infostate == 0)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(divtoname[divlist[i]])
+ };
+ infostate = 1
+ $('#infospace').html('(NAMES)');
+ }
+ else if(infostate == 1)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html("")
+ };
+ infostate = 2
+ $('#infospace').html('(NONE)');
+ }
+ else if(infostate == 2)
+ {
+ for(var i=0; i < divlist.length; i++)
+ {
+ $(divlist[i]).html(nametohex[divtoname[divlist[i]]])
+ };
+ infostate = 0
+ $('#infospace').html('(HEXES)');
+ }
+ }
+$('#infoswitch').hover(function(){$('#infospace').show()}, function(){$('#infospace').hide('slow')} )
+$('#infoswitch').click(function(){switchinfo()})
+
+
+backgroundstate = 2;
+function switchbackground()
+ {
+ if(backgroundstate == 1)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image','url(http://dump.fm/static/img/bg.dither.gif)')
+ backgroundstate = 2;
+ $('#colornames').css('color', 'white')
+ $('#colornames').css('text-shadow', 'black 1px 2px')
+ }
+ else if(backgroundstate == 2)
+ {
+ $('#colorpicker').css('background-color','black')
+ $('#colorpicker').css('background-image', 'none')
+ backgroundstate = 0
+ }
+ else if(backgroundstate == 0)
+ {
+ $('#colorpicker').css('background-color', 'white')
+ $('#colorpicker').css('background-image', 'none')
+ $('#colornames').css('color', 'grey')
+ backgroundstate = 1
+ }
+ }
+
+$('#backgroundswitch').click(function(){switchbackground()})
+
+//takes a div name and returns a colorname
+
+function showcolorname(divstr)
+
+ {
+ colorname = divtoname['#'+divstr]
+ hex = nametohex[colorname]
+ imname = hextoname[hex]
+ if (hexes == true)
+ {
+ imname = hex
+ }
+
+ return imname
+ }
+function bigname(divstr)
+ {
+ colorname = showcolorname(divstr)
+ $('#colornames').html(colorname)
+
+ }
+function writeit(text)
+ {
+ $('#colornames').append(text)
+ }
+function makebig(divstr)
+ {
+ firstheight = $('#'+divstr).height()
+ newheight = goldenize(firstheight)
+ $('#'+divstr).height(newheight)
+ }
+function makesmall(divstr)
+ {
+ oldheight = $('.colors').height()
+ $('#'+divstr).height(oldheight)
+ }
+var choice;
+$('.colors').hover(function() {
+ bigname(this.id);
+// makebig(this.id);
+// makegolden('#'+this.id, 'height')},
+//function(){
+// makesmall(this.id);
+// makegolden('#'+this.id, 'height')
+});
+$('.colors').mouseover(function(){
+ if(this.id != 'd0'){
+ makebig(this.id);
+ makegolden('#'+this.id, 'height')
+ }})
+$('.colors').mouseout(function(){
+ makesmall(this.id);
+ makegolden('#'+this.id,'height');
+ })
+$(".colors").hover(function(){
+$('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+ });
+$('.colors').css('margin-top', '2px')
+var hexes = false
+function hexswitch()
+ {
+ if(hexes == false)
+ {
+ $('#hexswitch').html('CLICK TO USE COLOR NAMES')
+ hexes = true;
+ var nameval = $('#namespace').val()
+ $('#namespace').val(nametohex[nameval])
+ }
+
+ else
+ {
+ $('#hexswitch').html('CLICK TO USE HEX KEYS')
+ hexes = false;
+ var nameval = $('#namespace').val()
+ $('#namespace').val(hextoname[nameval])
+ }
+ }
+$('#hexswitch').click(function(){hexswitch()})
+
+$('.colors').click(function(){
+ putitin()
+ })
+
+function putitin()
+ {
+ thecolor = $('#colornames').html()
+ $('#namespace').val(thecolor)
+ if(hexes == false){
+ $('#preview').css({'background-color': nametohex[thecolor], 'border-style':'none'})
+ }
+ else{
+ $('#preview').css('background-color', thecolor)
+ }
+
+ }
+function transparent()
+ {
+ $('#namespace').val('transparent');
+ $('#preview').css({'background-color':'transparent','border-style':'dashed','border-width':'2px'})
+ }
+$('#transbutton').click(function(){transparent()})
+
+
+function bakecookie()
+ {
+ var colormemory = $('#preview').css('background-color')
+ var preferences = {}
+ preferences['infostate'] = infostate;
+ preferences['hexes'] = hexes;
+ preferences['backgroundstate'] = backgroundstate;
+ preferences['colormemory'] = colormemory;
+ document.cookie = "preferences=infostate_"+infostate+"_hexes_"+hexes+"_backgroundstate_"+backgroundstate+";path=/;domain=.asdf.us;max-age=1086400";
+ }
+
+bakecookie()
+function eatcookie()
+ {
+ if (document.cookie)
+ {
+ var cookies = document.cookie.split(";")
+ for(i in cookies){
+ $('#preview').append(cookies[i])
+ }
+ /* for (i in cookies)
+ {
+ var cookie = cookies[i].split("=")
+ $('#preview').append(cookie)
+ }
+
+ //infostate = parseInt(preferences['infostate'])
+ //hexes = preferences['hexes']
+ //backgroundstate = preferences['backgroundstate']}
+ if (cookie[0].indexOf("imname") !== -1|cookie[0].indexOf("imname") !== -2)
+ {
+ $('#preview').append(cookie[0].indexOf('imname'))
+ if (cookie[1] !== 'false' && cookie[1] !== 'undefined' && cookie[1].length)
+ {
+ return cookie[1]
+ $('#preview').append('what the hell????')
+ }
+ }
+ else if(cookie[0].indexOf('username') !== -1)
+ {
+ $('#preview').append('what the fuck')
+ }
+ else{$('#preview').append('this was the index'+cookie[0].indexOf('imname').toString())}
+ }
+ //return ""
+ }
+ }*/
+
+ }
+ }
+$(document).ready(function(){eatcookie();switchinfo()})
+
+
+
+
+
+
+
+
+
+
+
+
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/minoan.gif b/frontend/imgrid/colors/minoan.gif
new file mode 100755
index 0000000..4ceb804
--- /dev/null
+++ b/frontend/imgrid/colors/minoan.gif
Binary files differ
diff --git a/frontend/imgrid/colors/savior.html b/frontend/imgrid/colors/savior.html
new file mode 100755
index 0000000..72395fd
--- /dev/null
+++ b/frontend/imgrid/colors/savior.html
@@ -0,0 +1,3582 @@
+<html>
+<head>
+
+<style type='text/css'>
+
+body
+{
+max-width:100%;
+max-height:100%;
+font-family:helvetica;
+font-size:2px;
+}
+
+
+#container div
+{
+display: -moz-inline-stack;
+display:inline-block;
+vertical-align:bottom;
+height: 15px;
+zoom: 1;
+*display: inline;
+}
+
+#container
+{
+margin:0 auto;
+width:500px;
+padding-top:100px;
+text-align:center;
+}
+
+#colornames
+{
+color:white;
+position:fixed;
+font-size:50px;
+top:50px;
+right:60%;
+width:400px;
+}
+
+#hexswitch
+ {
+ position:fixed;
+ top:20px;
+ right:10%;
+ height:100px;
+ width:300px;
+ font-size:20px
+ border-style: groove;
+ border-width: 4px;
+ background-color:goldenrod;
+ text-align:center;
+ }
+#infoswitch
+ {
+ position:fixed;
+ top: 60px;
+ right:5%;
+ font-size:20px
+ background-color:gray;
+ text-align:center;
+ }
+#d0
+{background-color:#FFFAFA}
+
+#d1
+{background-color:#FFFAFA}
+
+#d2
+{background-color:#EEE9E9}
+
+#d3
+{background-color:#FFC1C1}
+
+#d4
+{background-color:#EEB4B4}
+
+#d5
+{background-color:#CDC9C9}
+
+#d6
+{background-color:#F08080}
+
+#d7
+{background-color:#FF6A6A}
+
+#d8
+{background-color:#CD9B9B}
+
+#d9
+{background-color:#EE6363}
+
+#d10
+{background-color:#BC8F8F}
+
+#d11
+{background-color:#FF4040}
+
+#d12
+{background-color:#FF3030}
+
+#d13
+{background-color:#EE3B3B}
+
+#d14
+{background-color:#CD5C5C}
+
+#d15
+{background-color:#CD5555}
+
+#d16
+{background-color:#EE2C2C}
+
+#d17
+{background-color:#8B8989}
+
+#d18
+{background-color:#CD3333}
+
+#d19
+{background-color:#FF0000}
+
+#d20
+{background-color:#FF0000}
+
+#d21
+{background-color:#8B6969}
+
+#d22
+{background-color:#CD2626}
+
+#d23
+{background-color:#EE0000}
+
+#d24
+{background-color:#B22222}
+
+#d25
+{background-color:#A52A2A}
+
+#d26
+{background-color:#CD0000}
+
+#d27
+{background-color:#8B3A3A}
+
+#d28
+{background-color:#8B2323}
+
+#d29
+{background-color:#8B1A1A}
+
+#d30
+{background-color:#8B0000}
+
+#d31
+{background-color:#8B0000}
+
+#d32
+{background-color:#800000}
+
+#d33
+{background-color:#FFAEB9}
+
+#d34
+{background-color:#CD8C95}
+
+#d35
+{background-color:#8B5F65}
+
+#d36
+{background-color:#EEA2AD}
+
+#d37
+{background-color:#FFB6C1}
+
+#d38
+{background-color:#FFC0CB}
+
+#d39
+{background-color:#DC143C}
+
+#d40
+{background-color:#FFB5C5}
+
+#d41
+{background-color:#EEA9B8}
+
+#d42
+{background-color:#CD919E}
+
+#d43
+{background-color:#8B636C}
+
+#d44
+{background-color:#8B475D}
+
+#d45
+{background-color:#DB7093}
+
+#d46
+{background-color:#EE799F}
+
+#d47
+{background-color:#FF82AB}
+
+#d48
+{background-color:#CD6889}
+
+#d49
+{background-color:#FFF0F5}
+
+#d50
+{background-color:#FFF0F5}
+
+#d51
+{background-color:#CDC1C5}
+
+#d52
+{background-color:#EEE0E5}
+
+#d53
+{background-color:#8B8386}
+
+#d54
+{background-color:#B03060}
+
+#d55
+{background-color:#CD6090}
+
+#d56
+{background-color:#CD3278}
+
+#d57
+{background-color:#FF3E96}
+
+#d58
+{background-color:#EE3A8C}
+
+#d59
+{background-color:#8B2252}
+
+#d60
+{background-color:#EE6AA7}
+
+#d61
+{background-color:#FF6EB4}
+
+#d62
+{background-color:#8B3A62}
+
+#d63
+{background-color:#FF69B4}
+
+#d64
+{background-color:#FF1493}
+
+#d65
+{background-color:#FF1493}
+
+#d66
+{background-color:#EE1289}
+
+#d67
+{background-color:#CD1076}
+
+#d68
+{background-color:#8B0A50}
+
+#d69
+{background-color:#FF34B3}
+
+#d70
+{background-color:#EE30A7}
+
+#d71
+{background-color:#CD2990}
+
+#d72
+{background-color:#8B1C62}
+
+#d73
+{background-color:#C71585}
+
+#d74
+{background-color:#D02090}
+
+#d75
+{background-color:#EE7AE9}
+
+#d76
+{background-color:#DA70D6}
+
+#d77
+{background-color:#FF83FA}
+
+#d78
+{background-color:#CD69C9}
+
+#d79
+{background-color:#8B4789}
+
+#d80
+{background-color:#FFE1FF}
+
+#d81
+{background-color:#EED2EE}
+
+#d82
+{background-color:#FFBBFF}
+
+#d83
+{background-color:#EEAEEE}
+
+#d84
+{background-color:#D8BFD8}
+
+#d85
+{background-color:#CDB5CD}
+
+#d86
+{background-color:#DDA0DD}
+
+#d87
+{background-color:#EE82EE}
+
+#d88
+{background-color:#CD96CD}
+
+#d89
+{background-color:#8B7B8B}
+
+#d90
+{background-color:#FF00FF}
+
+#d91
+{background-color:#FF00FF}
+
+#d92
+{background-color:#FF00FF}
+
+#d93
+{background-color:#8B668B}
+
+#d94
+{background-color:#EE00EE}
+
+#d95
+{background-color:#CD00CD}
+
+#d96
+{background-color:#8B008B}
+
+#d97
+{background-color:#8B008B}
+
+#d98
+{background-color:#800080}
+
+#d99
+{background-color:#BA55D3}
+
+#d100
+{background-color:#E066FF}
+
+#d101
+{background-color:#D15FEE}
+
+#d102
+{background-color:#B452CD}
+
+#d103
+{background-color:#7A378B}
+
+#d104
+{background-color:#9400D3}
+
+#d105
+{background-color:#9932CC}
+
+#d106
+{background-color:#BF3EFF}
+
+#d107
+{background-color:#9A32CD}
+
+#d108
+{background-color:#B23AEE}
+
+#d109
+{background-color:#68228B}
+
+#d110
+{background-color:#A020F0}
+
+#d111
+{background-color:#4B0082}
+
+#d112
+{background-color:#8A2BE2}
+
+#d113
+{background-color:#912CEE}
+
+#d114
+{background-color:#7D26CD}
+
+#d115
+{background-color:#551A8B}
+
+#d116
+{background-color:#9B30FF}
+
+#d117
+{background-color:#9370DB}
+
+#d118
+{background-color:#AB82FF}
+
+#d119
+{background-color:#9F79EE}
+
+#d120
+{background-color:#8968CD}
+
+#d121
+{background-color:#5D478B}
+
+#d122
+{background-color:#483D8B}
+
+#d123
+{background-color:#8470FF}
+
+#d124
+{background-color:#7B68EE}
+
+#d125
+{background-color:#6A5ACD}
+
+#d126
+{background-color:#836FFF}
+
+#d127
+{background-color:#7A67EE}
+
+#d128
+{background-color:#6959CD}
+
+#d129
+{background-color:#473C8B}
+
+#d130
+{background-color:#F8F8FF}
+
+#d131
+{background-color:#E6E6FA}
+
+#d132
+{background-color:#0000FF}
+
+#d133
+{background-color:#0000FF}
+
+#d134
+{background-color:#0000EE}
+
+#d135
+{background-color:#0000CD}
+
+#d136
+{background-color:#0000CD}
+
+#d137
+{background-color:#00008B}
+
+#d138
+{background-color:#00008B}
+
+#d139
+{background-color:#191970}
+
+#d140
+{background-color:#000080}
+
+#d141
+{background-color:#000080}
+
+#d142
+{background-color:#4169E1}
+
+#d143
+{background-color:#4876FF}
+
+#d144
+{background-color:#436EEE}
+
+#d145
+{background-color:#3A5FCD}
+
+#d146
+{background-color:#27408B}
+
+#d147
+{background-color:#6495ED}
+
+#d148
+{background-color:#B0C4DE}
+
+#d149
+{background-color:#CAE1FF}
+
+#d150
+{background-color:#BCD2EE}
+
+#d151
+{background-color:#A2B5CD}
+
+#d152
+{background-color:#6E7B8B}
+
+#d153
+{background-color:#6C7B8B}
+
+#d154
+{background-color:#C6E2FF}
+
+#d155
+{background-color:#B9D3EE}
+
+#d156
+{background-color:#9FB6CD}
+
+#d157
+{background-color:#778899}
+
+#d158
+{background-color:#778899}
+
+#d159
+{background-color:#708090}
+
+#d160
+{background-color:#708090}
+
+#d161
+{background-color:#1E90FF}
+
+#d162
+{background-color:#1E90FF}
+
+#d163
+{background-color:#1C86EE}
+
+#d164
+{background-color:#104E8B}
+
+#d165
+{background-color:#1874CD}
+
+#d166
+{background-color:#F0F8FF}
+
+#d167
+{background-color:#36648B}
+
+#d168
+{background-color:#4682B4}
+
+#d169
+{background-color:#63B8FF}
+
+#d170
+{background-color:#5CACEE}
+
+#d171
+{background-color:#4F94CD}
+
+#d172
+{background-color:#4A708B}
+
+#d173
+{background-color:#87CEFF}
+
+#d174
+{background-color:#7EC0EE}
+
+#d175
+{background-color:#6CA6CD}
+
+#d176
+{background-color:#87CEFA}
+
+#d177
+{background-color:#607B8B}
+
+#d178
+{background-color:#B0E2FF}
+
+#d179
+{background-color:#A4D3EE}
+
+#d180
+{background-color:#8DB6CD}
+
+#d181
+{background-color:#87CEEB}
+
+#d182
+{background-color:#9AC0CD}
+
+#d183
+{background-color:#00BFFF}
+
+#d184
+{background-color:#00BFFF}
+
+#d185
+{background-color:#00B2EE}
+
+#d186
+{background-color:#00688B}
+
+#d187
+{background-color:#009ACD}
+
+#d188
+{background-color:#BFEFFF}
+
+#d189
+{background-color:#B2DFEE}
+
+#d190
+{background-color:#ADD8E6}
+
+#d191
+{background-color:#68838B}
+
+#d192
+{background-color:#B0E0E6}
+
+#d193
+{background-color:#98F5FF}
+
+#d194
+{background-color:#8EE5EE}
+
+#d195
+{background-color:#7AC5CD}
+
+#d196
+{background-color:#53868B}
+
+#d197
+{background-color:#00F5FF}
+
+#d198
+{background-color:#00E5EE}
+
+#d199
+{background-color:#00C5CD}
+
+#d200
+{background-color:#00868B}
+
+#d201
+{background-color:#5F9EA0}
+
+#d202
+{background-color:#5F9EA0}
+
+#d203
+{background-color:#00CED1}
+
+#d204
+{background-color:#F0FFFF}
+
+#d205
+{background-color:#F0FFFF}
+
+#d206
+{background-color:#E0FFFF}
+
+#d207
+{background-color:#E0FFFF}
+
+#d208
+{background-color:#E0EEEE}
+
+#d209
+{background-color:#D1EEEE}
+
+#d210
+{background-color:#BBFFFF}
+
+#d211
+{background-color:#AFEEEE}
+
+#d212
+{background-color:#AEEEEE}
+
+#d213
+{background-color:#97FFFF}
+
+#d214
+{background-color:#C1CDCD}
+
+#d215
+{background-color:#B4CDCD}
+
+#d216
+{background-color:#8DEEEE}
+
+#d217
+{background-color:#96CDCD}
+
+#d218
+{background-color:#79CDCD}
+
+#d219
+{background-color:#838B8B}
+
+#d220
+{background-color:#7A8B8B}
+
+#d221
+{background-color:#00FFFF}
+
+#d222
+{background-color:#00FFFF}
+
+#d223
+{background-color:#00FFFF}
+
+#d224
+{background-color:#668B8B}
+
+#d225
+{background-color:#00EEEE}
+
+#d226
+{background-color:#528B8B}
+
+#d227
+{background-color:#00CDCD}
+
+#d228
+{background-color:#008B8B}
+
+#d229
+{background-color:#008B8B}
+
+#d230
+{background-color:#008080}
+
+#d231
+{background-color:#2F4F4F}
+
+#d232
+{background-color:#2F4F4F}
+
+#d233
+{background-color:#48D1CC}
+
+#d234
+{background-color:#20B2AA}
+
+#d235
+{background-color:#40E0D0}
+
+#d236
+{background-color:#458B74}
+
+#d237
+{background-color:#7FFFD4}
+
+#d238
+{background-color:#7FFFD4}
+
+#d239
+{background-color:#76EEC6}
+
+#d240
+{background-color:#66CDAA}
+
+#d241
+{background-color:#66CDAA}
+
+#d242
+{background-color:#00FA9A}
+
+#d243
+{background-color:#F5FFFA}
+
+#d244
+{background-color:#00FF7F}
+
+#d245
+{background-color:#00FF7F}
+
+#d246
+{background-color:#00EE76}
+
+#d247
+{background-color:#00CD66}
+
+#d248
+{background-color:#008B45}
+
+#d249
+{background-color:#3CB371}
+
+#d250
+{background-color:#2E8B57}
+
+#d251
+{background-color:#43CD80}
+
+#d252
+{background-color:#54FF9F}
+
+#d253
+{background-color:#2E8B57}
+
+#d254
+{background-color:#4EEE94}
+
+#d255
+{background-color:#32814B}
+
+#d256
+{background-color:#F0FFF0}
+
+#d257
+{background-color:#F0FFF0}
+
+#d258
+{background-color:#E0EEE0}
+
+#d259
+{background-color:#C1FFC1}
+
+#d260
+{background-color:#B4EEB4}
+
+#d261
+{background-color:#9AFF9A}
+
+#d262
+{background-color:#98FB98}
+
+#d263
+{background-color:#C1CDC1}
+
+#d264
+{background-color:#90EE90}
+
+#d265
+{background-color:#90EE90}
+
+#d266
+{background-color:#9BCD9B}
+
+#d267
+{background-color:#8FBC8F}
+
+#d268
+{background-color:#7CCD7C}
+
+#d269
+{background-color:#838B83}
+
+#d270
+{background-color:#00FF00}
+
+#d271
+{background-color:#00FF00}
+
+#d272
+{background-color:#32CD32}
+
+#d273
+{background-color:#698B69}
+
+#d274
+{background-color:#00EE00}
+
+#d275
+{background-color:#548B54}
+
+#d276
+{background-color:#00CD00}
+
+#d277
+{background-color:#228B22}
+
+#d278
+{background-color:#008B00}
+
+#d279
+{background-color:#008000}
+
+#d280
+{background-color:#006400}
+
+#d281
+{background-color:#7CFC00}
+
+#d282
+{background-color:#7FFF00}
+
+#d283
+{background-color:#7FFF00}
+
+#d284
+{background-color:#76EE00}
+
+#d285
+{background-color:#66CD00}
+
+#d286
+{background-color:#458B00}
+
+#d287
+{background-color:#ADFF2F}
+
+#d288
+{background-color:#A2CD5A}
+
+#d289
+{background-color:#CAFF70}
+
+#d290
+{background-color:#BCEE68}
+
+#d291
+{background-color:#6E8B3D}
+
+#d292
+{background-color:#556B2F}
+
+#d293
+{background-color:#6B8E23}
+
+#d294
+{background-color:#C0FF3E}
+
+#d295
+{background-color:#B3EE3A}
+
+#d296
+{background-color:#9ACD32}
+
+#d297
+{background-color:#9ACD32}
+
+#d298
+{background-color:#698B22}
+
+#d299
+{background-color:#FFFFF0}
+
+#d300
+{background-color:#FFFFF0}
+
+#d301
+{background-color:#FFFFE0}
+
+#d302
+{background-color:#FFFFE0}
+
+#d303
+{background-color:#F5F5DC}
+
+#d304
+{background-color:#EEEEE0}
+
+#d305
+{background-color:#FAFAD2}
+
+#d306
+{background-color:#EEEED1}
+
+#d307
+{background-color:#CDCDC1}
+
+#d308
+{background-color:#CDCDB4}
+
+#d309
+{background-color:#8B8B83}
+
+#d310
+{background-color:#8B8B7A}
+
+#d311
+{background-color:#FFFF00}
+
+#d312
+{background-color:#FFFF00}
+
+#d313
+{background-color:#EEEE00}
+
+#d314
+{background-color:#CDCD00}
+
+#d315
+{background-color:#8B8B00}
+
+#d316
+{background-color:#808000}
+
+#d317
+{background-color:#BDB76B}
+
+#d318
+{background-color:#EEE685}
+
+#d319
+{background-color:#8B8970}
+
+#d320
+{background-color:#FFF68F}
+
+#d321
+{background-color:#CDC673}
+
+#d322
+{background-color:#8B864E}
+
+#d323
+{background-color:#EEE8AA}
+
+#d324
+{background-color:#FFFACD}
+
+#d325
+{background-color:#FFFACD}
+
+#d326
+{background-color:#F0E68C}
+
+#d327
+{background-color:#CDC9A5}
+
+#d328
+{background-color:#EEE9BF}
+
+#d329
+{background-color:#D1C166}
+
+#d330
+{background-color:#8B8878}
+
+#d331
+{background-color:#FFD700}
+
+#d332
+{background-color:#FFD700}
+
+#d333
+{background-color:#EEC900}
+
+#d334
+{background-color:#CDAD00}
+
+#d335
+{background-color:#8B7500}
+
+#d336
+{background-color:#EEDD82}
+
+#d337
+{background-color:#8B814C}
+
+#d338
+{background-color:#FFEC8B}
+
+#d339
+{background-color:#CDBE70}
+
+#d340
+{background-color:#EEDC82}
+
+#d341
+{background-color:#CDC8B1}
+
+#d342
+{background-color:#EEE8CD}
+
+#d343
+{background-color:#FFF8DC}
+
+#d344
+{background-color:#FFF8DC}
+
+#d345
+{background-color:#DAA520}
+
+#d346
+{background-color:#FFC125}
+
+#d347
+{background-color:#EEB422}
+
+#d348
+{background-color:#CD9B1D}
+
+#d349
+{background-color:#8B6914}
+
+#d350
+{background-color:#B8860B}
+
+#d351
+{background-color:#FFB90F}
+
+#d352
+{background-color:#EEAD0E}
+
+#d353
+{background-color:#CD950C}
+
+#d354
+{background-color:#8B6508}
+
+#d355
+{background-color:#FFFAF0}
+
+#d356
+{background-color:#EED8AE}
+
+#d357
+{background-color:#FDF5E6}
+
+#d358
+{background-color:#F5DEB3}
+
+#d359
+{background-color:#FFE7BA}
+
+#d360
+{background-color:#CDBA96}
+
+#d361
+{background-color:#FFA500}
+
+#d362
+{background-color:#FFA500}
+
+#d363
+{background-color:#EE9A00}
+
+#d364
+{background-color:#CD8500}
+
+#d365
+{background-color:#8B5A00}
+
+#d366
+{background-color:#8B7E66}
+
+#d367
+{background-color:#FFE4B5}
+
+#d368
+{background-color:#FFEFD5}
+
+#d369
+{background-color:#CDB38B}
+
+#d370
+{background-color:#FFEBCD}
+
+#d371
+{background-color:#FFDEAD}
+
+#d372
+{background-color:#FFDEAD}
+
+#d373
+{background-color:#EECFA1}
+
+#d374
+{background-color:#8B795E}
+
+#d375
+{background-color:#8B8378}
+
+#d376
+{background-color:#FAEBD7}
+
+#d377
+{background-color:#D2B48C}
+
+#d378
+{background-color:#8B7D6B}
+
+#d379
+{background-color:#DEB887}
+
+#d380
+{background-color:#EEDFCC}
+
+#d381
+{background-color:#FFD39B}
+
+#d382
+{background-color:#CDAA7D}
+
+#d383
+{background-color:#EEC591}
+
+#d384
+{background-color:#FFEFDB}
+
+#d385
+{background-color:#8B7355}
+
+#d386
+{background-color:#CDC0B0}
+
+#d387
+{background-color:#FF8C00}
+
+#d388
+{background-color:#EED5B7}
+
+#d389
+{background-color:#FFE4C4}
+
+#d390
+{background-color:#FFE4C4}
+
+#d391
+{background-color:#CDB79E}
+
+#d392
+{background-color:#FF7F00}
+
+#d393
+{background-color:#FAF0E6}
+
+#d394
+{background-color:#EE7600}
+
+#d395
+{background-color:#CD6600}
+
+#d396
+{background-color:#8B4500}
+
+#d397
+{background-color:#CD853F}
+
+#d398
+{background-color:#FFA54F}
+
+#d399
+{background-color:#EE9A49}
+
+#d400
+{background-color:#CD853F}
+
+#d401
+{background-color:#8B5A2B}
+
+#d402
+{background-color:#FFDAB9}
+
+#d403
+{background-color:#FFDAB9}
+
+#d404
+{background-color:#8B7765}
+
+#d405
+{background-color:#EECBAD}
+
+#d406
+{background-color:#CDAF95}
+
+#d407
+{background-color:#F4A460}
+
+#d408
+{background-color:#8B8682}
+
+#d409
+{background-color:#EEE5DE}
+
+#d410
+{background-color:#CDC5BF}
+
+#d411
+{background-color:#D2691E}
+
+#d412
+{background-color:#FF7F24}
+
+#d413
+{background-color:#EE7621}
+
+#d414
+{background-color:#CD661D}
+
+#d415
+{background-color:#8B4513}
+
+#d416
+{background-color:#8B4513}
+
+#d417
+{background-color:#FFF5EE}
+
+#d418
+{background-color:#FFF5EE}
+
+#d419
+{background-color:#8B4726}
+
+#d420
+{background-color:#A0522D}
+
+#d421
+{background-color:#FF8247}
+
+#d422
+{background-color:#EE7942}
+
+#d423
+{background-color:#CD6839}
+
+#d424
+{background-color:#CD8162}
+
+#d425
+{background-color:#FFA07A}
+
+#d426
+{background-color:#FFA07A}
+
+#d427
+{background-color:#8B5742}
+
+#d428
+{background-color:#EE9572}
+
+#d429
+{background-color:#FF7F50}
+
+#d430
+{background-color:#FF4500}
+
+#d431
+{background-color:#FF4500}
+
+#d432
+{background-color:#EE4000}
+
+#d433
+{background-color:#CD3700}
+
+#d434
+{background-color:#8B2500}
+
+#d435
+{background-color:#E9967A}
+
+#d436
+{background-color:#FF8C69}
+
+#d437
+{background-color:#EE8262}
+
+#d438
+{background-color:#CD7054}
+
+#d439
+{background-color:#8B4C39}
+
+#d440
+{background-color:#FF7256}
+
+#d441
+{background-color:#EE6A50}
+
+#d442
+{background-color:#CD5B45}
+
+#d443
+{background-color:#8B3E2F}
+
+#d444
+{background-color:#8B3626}
+
+#d445
+{background-color:#FF6347}
+
+#d446
+{background-color:#FF6347}
+
+#d447
+{background-color:#EE5C42}
+
+#d448
+{background-color:#CD4F39}
+
+#d449
+{background-color:#8B7D7B}
+
+#d450
+{background-color:#EED5D2}
+
+#d451
+{background-color:#FFE4E1}
+
+#d452
+{background-color:#FFE4E1}
+
+#d453
+{background-color:#FA8072}
+
+#d454
+{background-color:#CDB7B5}
+
+#d455
+{background-color:#FFFFFF}
+
+#d456
+{background-color:#FFFFFF}
+
+#d457
+{background-color:#FFFFFF}
+
+#d458
+{background-color:#FFFFFF}
+
+#d459
+{background-color:#FCFCFC}
+
+#d460
+{background-color:#FCFCFC}
+
+#d461
+{background-color:#FAFAFA}
+
+#d462
+{background-color:#FAFAFA}
+
+#d463
+{background-color:#F7F7F7}
+
+#d464
+{background-color:#F7F7F7}
+
+#d465
+{background-color:#F5F5F5}
+
+#d466
+{background-color:#F5F5F5}
+
+#d467
+{background-color:#F5F5F5}
+
+#d468
+{background-color:#F2F2F2}
+
+#d469
+{background-color:#F2F2F2}
+
+#d470
+{background-color:#F0F0F0}
+
+#d471
+{background-color:#F0F0F0}
+
+#d472
+{background-color:#EDEDED}
+
+#d473
+{background-color:#EDEDED}
+
+#d474
+{background-color:#EBEBEB}
+
+#d475
+{background-color:#EBEBEB}
+
+#d476
+{background-color:#E8E8E8}
+
+#d477
+{background-color:#E8E8E8}
+
+#d478
+{background-color:#E5E5E5}
+
+#d479
+{background-color:#E5E5E5}
+
+#d480
+{background-color:#E3E3E3}
+
+#d481
+{background-color:#E3E3E3}
+
+#d482
+{background-color:#E0E0E0}
+
+#d483
+{background-color:#E0E0E0}
+
+#d484
+{background-color:#DEDEDE}
+
+#d485
+{background-color:#DEDEDE}
+
+#d486
+{background-color:#DCDCDC}
+
+#d487
+{background-color:#DBDBDB}
+
+#d488
+{background-color:#DBDBDB}
+
+#d489
+{background-color:#D9D9D9}
+
+#d490
+{background-color:#D9D9D9}
+
+#d491
+{background-color:#D6D6D6}
+
+#d492
+{background-color:#D6D6D6}
+
+#d493
+{background-color:#D4D4D4}
+
+#d494
+{background-color:#D4D4D4}
+
+#d495
+{background-color:#D3D3D3}
+
+#d496
+{background-color:#D3D3D3}
+
+#d497
+{background-color:#D1D1D1}
+
+#d498
+{background-color:#D1D1D1}
+
+#d499
+{background-color:#CFCFCF}
+
+#d500
+{background-color:#CFCFCF}
+
+#d501
+{background-color:#CCCCCC}
+
+#d502
+{background-color:#CCCCCC}
+
+#d503
+{background-color:#C9C9C9}
+
+#d504
+{background-color:#C9C9C9}
+
+#d505
+{background-color:#C7C7C7}
+
+#d506
+{background-color:#C7C7C7}
+
+#d507
+{background-color:#C4C4C4}
+
+#d508
+{background-color:#C4C4C4}
+
+#d509
+{background-color:#C2C2C2}
+
+#d510
+{background-color:#C2C2C2}
+
+#d511
+{background-color:#C0C0C0}
+
+#d512
+{background-color:#BFBFBF}
+
+#d513
+{background-color:#BFBFBF}
+
+#d514
+{background-color:#BDBDBD}
+
+#d515
+{background-color:#BDBDBD}
+
+#d516
+{background-color:#BABABA}
+
+#d517
+{background-color:#BABABA}
+
+#d518
+{background-color:#B8B8B8}
+
+#d519
+{background-color:#B8B8B8}
+
+#d520
+{background-color:#B5B5B5}
+
+#d521
+{background-color:#B5B5B5}
+
+#d522
+{background-color:#B3B3B3}
+
+#d523
+{background-color:#B3B3B3}
+
+#d524
+{background-color:#B0B0B0}
+
+#d525
+{background-color:#B0B0B0}
+
+#d526
+{background-color:#ADADAD}
+
+#d527
+{background-color:#ADADAD}
+
+#d528
+{background-color:#ABABAB}
+
+#d529
+{background-color:#ABABAB}
+
+#d530
+{background-color:#A9A9A9}
+
+#d531
+{background-color:#A9A9A9}
+
+#d532
+{background-color:#A8A8A8}
+
+#d533
+{background-color:#A8A8A8}
+
+#d534
+{background-color:#A6A6A6}
+
+#d535
+{background-color:#A6A6A6}
+
+#d536
+{background-color:#A3A3A3}
+
+#d537
+{background-color:#A3A3A3}
+
+#d538
+{background-color:#A1A1A1}
+
+#d539
+{background-color:#A1A1A1}
+
+#d540
+{background-color:#9E9E9E}
+
+#d541
+{background-color:#9E9E9E}
+
+#d542
+{background-color:#9C9C9C}
+
+#d543
+{background-color:#9C9C9C}
+
+#d544
+{background-color:#999999}
+
+#d545
+{background-color:#999999}
+
+#d546
+{background-color:#969696}
+
+#d547
+{background-color:#969696}
+
+#d548
+{background-color:#949494}
+
+#d549
+{background-color:#949494}
+
+#d550
+{background-color:#919191}
+
+#d551
+{background-color:#919191}
+
+#d552
+{background-color:#8F8F8F}
+
+#d553
+{background-color:#8F8F8F}
+
+#d554
+{background-color:#8C8C8C}
+
+#d555
+{background-color:#8C8C8C}
+
+#d556
+{background-color:#8A8A8A}
+
+#d557
+{background-color:#8A8A8A}
+
+#d558
+{background-color:#878787}
+
+#d559
+{background-color:#878787}
+
+#d560
+{background-color:#858585}
+
+#d561
+{background-color:#858585}
+
+#d562
+{background-color:#828282}
+
+#d563
+{background-color:#828282}
+
+#d564
+{background-color:#808080}
+
+#d565
+{background-color:#7F7F7F}
+
+#d566
+{background-color:#7F7F7F}
+
+#d567
+{background-color:#7E7E7E}
+
+#d568
+{background-color:#7D7D7D}
+
+#d569
+{background-color:#7D7D7D}
+
+#d570
+{background-color:#7A7A7A}
+
+#d571
+{background-color:#7A7A7A}
+
+#d572
+{background-color:#787878}
+
+#d573
+{background-color:#787878}
+
+#d574
+{background-color:#757575}
+
+#d575
+{background-color:#757575}
+
+#d576
+{background-color:#737373}
+
+#d577
+{background-color:#737373}
+
+#d578
+{background-color:#707070}
+
+#d579
+{background-color:#707070}
+
+#d580
+{background-color:#6E6E6E}
+
+#d581
+{background-color:#6E6E6E}
+
+#d582
+{background-color:#6B6B6B}
+
+#d583
+{background-color:#6B6B6B}
+
+#d584
+{background-color:#696969}
+
+#d585
+{background-color:#696969}
+
+#d586
+{background-color:#696969}
+
+#d587
+{background-color:#696969}
+
+#d588
+{background-color:#666666}
+
+#d589
+{background-color:#666666}
+
+#d590
+{background-color:#636363}
+
+#d591
+{background-color:#636363}
+
+#d592
+{background-color:#616161}
+
+#d593
+{background-color:#616161}
+
+#d594
+{background-color:#5E5E5E}
+
+#d595
+{background-color:#5E5E5E}
+
+#d596
+{background-color:#5C5C5C}
+
+#d597
+{background-color:#5C5C5C}
+
+#d598
+{background-color:#595959}
+
+#d599
+{background-color:#595959}
+
+#d600
+{background-color:#575757}
+
+#d601
+{background-color:#575757}
+
+#d602
+{background-color:#545454}
+
+#d603
+{background-color:#545454}
+
+#d604
+{background-color:#525252}
+
+#d605
+{background-color:#525252}
+
+#d606
+{background-color:#4F4F4F}
+
+#d607
+{background-color:#4F4F4F}
+
+#d608
+{background-color:#4D4D4D}
+
+#d609
+{background-color:#4D4D4D}
+
+#d610
+{background-color:#4A4A4A}
+
+#d611
+{background-color:#4A4A4A}
+
+#d612
+{background-color:#474747}
+
+#d613
+{background-color:#474747}
+
+#d614
+{background-color:#454545}
+
+#d615
+{background-color:#454545}
+
+#d616
+{background-color:#424242}
+
+#d617
+{background-color:#424242}
+
+#d618
+{background-color:#404040}
+
+#d619
+{background-color:#404040}
+
+#d620
+{background-color:#3D3D3D}
+
+#d621
+{background-color:#3D3D3D}
+
+#d622
+{background-color:#3B3B3B}
+
+#d623
+{background-color:#3B3B3B}
+
+#d624
+{background-color:#383838}
+
+#d625
+{background-color:#383838}
+
+#d626
+{background-color:#363636}
+
+#d627
+{background-color:#363636}
+
+#d628
+{background-color:#333333}
+
+#d629
+{background-color:#333333}
+
+#d630
+{background-color:#303030}
+
+#d631
+{background-color:#303030}
+
+#d632
+{background-color:#2E2E2E}
+
+#d633
+{background-color:#2E2E2E}
+
+#d634
+{background-color:#2B2B2B}
+
+#d635
+{background-color:#2B2B2B}
+
+#d636
+{background-color:#292929}
+
+#d637
+{background-color:#292929}
+
+#d638
+{background-color:#262626}
+
+#d639
+{background-color:#262626}
+
+#d640
+{background-color:#242424}
+
+#d641
+{background-color:#242424}
+
+#d642
+{background-color:#212121}
+
+#d643
+{background-color:#212121}
+
+#d644
+{background-color:#1F1F1F}
+
+#d645
+{background-color:#1F1F1F}
+
+#d646
+{background-color:#1C1C1C}
+
+#d647
+{background-color:#1C1C1C}
+
+#d648
+{background-color:#1A1A1A}
+
+#d649
+{background-color:#1A1A1A}
+
+#d650
+{background-color:#171717}
+
+#d651
+{background-color:#171717}
+
+#d652
+{background-color:#141414}
+
+#d653
+{background-color:#141414}
+
+#d654
+{background-color:#121212}
+
+#d655
+{background-color:#121212}
+
+#d656
+{background-color:#0F0F0F}
+
+#d657
+{background-color:#0F0F0F}
+
+#d658
+{background-color:#0D0D0D}
+
+#d659
+{background-color:#0D0D0D}
+
+#d660
+{background-color:#0A0A0A}
+
+#d661
+{background-color:#0A0A0A}
+
+#d662
+{background-color:#080808}
+
+#d663
+{background-color:#080808}
+
+#d664
+{background-color:#050505}
+
+#d665
+{background-color:#050505}
+
+#d666
+{background-color:#030303}
+
+#d667
+{background-color:#030303}
+
+#d668
+{background-color:#000000}
+
+#d669
+{background-color:#000000}
+
+#d670
+{background-color:#000000}
+
+#d671
+{background-color:#000000}
+
+#d672
+{background-color:#000000}
+
+#d673
+{background-color:#000000}
+.colors
+{
+height:30px;
+width:10px;
+}
+</style></head><body>
+<div id='container'>
+<div id='d0' class='colors'>
+snow</div>
+<div id='d1' class='colors'>
+snow1</div>
+<div id='d2' class='colors'>
+snow2</div>
+<div id='d3' class='colors'>
+RosyBrown1</div>
+<div id='d4' class='colors'>
+RosyBrown2</div>
+<div id='d5' class='colors'>
+snow3</div>
+<div id='d6' class='colors'>
+LightCoral</div>
+<div id='d7' class='colors'>
+IndianRed1</div>
+<div id='d8' class='colors'>
+RosyBrown3</div>
+<div id='d9' class='colors'>
+IndianRed2</div>
+<div id='d10' class='colors'>
+RosyBrown</div>
+<div id='d11' class='colors'>
+brown1</div>
+<div id='d12' class='colors'>
+firebrick1</div>
+<div id='d13' class='colors'>
+brown2</div>
+<div id='d14' class='colors'>
+IndianRed</div>
+<div id='d15' class='colors'>
+IndianRed3</div>
+<div id='d16' class='colors'>
+firebrick2</div>
+<div id='d17' class='colors'>
+snow4</div>
+<div id='d18' class='colors'>
+brown3</div>
+<div id='d19' class='colors'>
+red</div>
+<div id='d20' class='colors'>
+red1</div>
+<div id='d21' class='colors'>
+RosyBrown4</div>
+<div id='d22' class='colors'>
+firebrick3</div>
+<div id='d23' class='colors'>
+red2</div>
+<div id='d24' class='colors'>
+firebrick</div>
+<div id='d25' class='colors'>
+brown</div>
+<div id='d26' class='colors'>
+red3</div>
+<div id='d27' class='colors'>
+IndianRed4</div>
+<div id='d28' class='colors'>
+brown4</div>
+<div id='d29' class='colors'>
+firebrick4</div>
+<div id='d30' class='colors'>
+DarkRed</div>
+<div id='d31' class='colors'>
+red4</div>
+<div id='d32' class='colors'>
+maroon</div>
+<div id='d33' class='colors'>
+LightPink1</div>
+<div id='d34' class='colors'>
+LightPink3</div>
+<div id='d35' class='colors'>
+LightPink4</div>
+<div id='d36' class='colors'>
+LightPink2</div>
+<div id='d37' class='colors'>
+LightPink</div>
+<div id='d38' class='colors'>
+pink</div>
+<div id='d39' class='colors'>
+crimson</div>
+<div id='d40' class='colors'>
+pink1</div>
+<div id='d41' class='colors'>
+pink2</div>
+<div id='d42' class='colors'>
+pink3</div>
+<div id='d43' class='colors'>
+pink4</div>
+<div id='d44' class='colors'>
+PaleVioletRed4</div>
+<div id='d45' class='colors'>
+PaleVioletRed</div>
+<div id='d46' class='colors'>
+PaleVioletRed2</div>
+<div id='d47' class='colors'>
+PaleVioletRed1</div>
+<div id='d48' class='colors'>
+PaleVioletRed3</div>
+<div id='d49' class='colors'>
+LavenderBlush</div>
+<div id='d50' class='colors'>
+LavenderBlush1</div>
+<div id='d51' class='colors'>
+LavenderBlush3</div>
+<div id='d52' class='colors'>
+LavenderBlush2</div>
+<div id='d53' class='colors'>
+LavenderBlush4</div>
+<div id='d54' class='colors'>
+maroon</div>
+<div id='d55' class='colors'>
+HotPink3</div>
+<div id='d56' class='colors'>
+VioletRed3</div>
+<div id='d57' class='colors'>
+VioletRed1</div>
+<div id='d58' class='colors'>
+VioletRed2</div>
+<div id='d59' class='colors'>
+VioletRed4</div>
+<div id='d60' class='colors'>
+HotPink2</div>
+<div id='d61' class='colors'>
+HotPink1</div>
+<div id='d62' class='colors'>
+HotPink4</div>
+<div id='d63' class='colors'>
+HotPink</div>
+<div id='d64' class='colors'>
+DeepPink</div>
+<div id='d65' class='colors'>
+DeepPink1</div>
+<div id='d66' class='colors'>
+DeepPink2</div>
+<div id='d67' class='colors'>
+DeepPink3</div>
+<div id='d68' class='colors'>
+DeepPink4</div>
+<div id='d69' class='colors'>
+maroon1</div>
+<div id='d70' class='colors'>
+maroon2</div>
+<div id='d71' class='colors'>
+maroon3</div>
+<div id='d72' class='colors'>
+maroon4</div>
+<div id='d73' class='colors'>
+MediumVioletRed</div>
+<div id='d74' class='colors'>
+VioletRed</div>
+<div id='d75' class='colors'>
+orchid2</div>
+<div id='d76' class='colors'>
+orchid</div>
+<div id='d77' class='colors'>
+orchid1</div>
+<div id='d78' class='colors'>
+orchid3</div>
+<div id='d79' class='colors'>
+orchid4</div>
+<div id='d80' class='colors'>
+thistle1</div>
+<div id='d81' class='colors'>
+thistle2</div>
+<div id='d82' class='colors'>
+plum1</div>
+<div id='d83' class='colors'>
+plum2</div>
+<div id='d84' class='colors'>
+thistle</div>
+<div id='d85' class='colors'>
+thistle3</div>
+<div id='d86' class='colors'>
+plum</div>
+<div id='d87' class='colors'>
+violet</div>
+<div id='d88' class='colors'>
+plum3</div>
+<div id='d89' class='colors'>
+thistle4</div>
+<div id='d90' class='colors'>
+fuchsia</div>
+<div id='d91' class='colors'>
+magenta</div>
+<div id='d92' class='colors'>
+magenta1</div>
+<div id='d93' class='colors'>
+plum4</div>
+<div id='d94' class='colors'>
+magenta2</div>
+<div id='d95' class='colors'>
+magenta3</div>
+<div id='d96' class='colors'>
+DarkMagenta</div>
+<div id='d97' class='colors'>
+magenta4</div>
+<div id='d98' class='colors'>
+purple</div>
+<div id='d99' class='colors'>
+MediumOrchid</div>
+<div id='d100' class='colors'>
+MediumOrchid1</div>
+<div id='d101' class='colors'>
+MediumOrchid2</div>
+<div id='d102' class='colors'>
+MediumOrchid3</div>
+<div id='d103' class='colors'>
+MediumOrchid4</div>
+<div id='d104' class='colors'>
+DarkViolet</div>
+<div id='d105' class='colors'>
+DarkOrchid</div>
+<div id='d106' class='colors'>
+DarkOrchid1</div>
+<div id='d107' class='colors'>
+DarkOrchid3</div>
+<div id='d108' class='colors'>
+DarkOrchid2</div>
+<div id='d109' class='colors'>
+DarkOrchid4</div>
+<div id='d110' class='colors'>
+purple</div>
+<div id='d111' class='colors'>
+indigo</div>
+<div id='d112' class='colors'>
+BlueViolet</div>
+<div id='d113' class='colors'>
+purple2</div>
+<div id='d114' class='colors'>
+purple3</div>
+<div id='d115' class='colors'>
+purple4</div>
+<div id='d116' class='colors'>
+purple1</div>
+<div id='d117' class='colors'>
+MediumPurple</div>
+<div id='d118' class='colors'>
+MediumPurple1</div>
+<div id='d119' class='colors'>
+MediumPurple2</div>
+<div id='d120' class='colors'>
+MediumPurple3</div>
+<div id='d121' class='colors'>
+MediumPurple4</div>
+<div id='d122' class='colors'>
+DarkSlateBlue</div>
+<div id='d123' class='colors'>
+LightSlateBlue</div>
+<div id='d124' class='colors'>
+MediumSlateBlue</div>
+<div id='d125' class='colors'>
+SlateBlue</div>
+<div id='d126' class='colors'>
+SlateBlue1</div>
+<div id='d127' class='colors'>
+SlateBlue2</div>
+<div id='d128' class='colors'>
+SlateBlue3</div>
+<div id='d129' class='colors'>
+SlateBlue4</div>
+<div id='d130' class='colors'>
+GhostWhite</div>
+<div id='d131' class='colors'>
+lavender</div>
+<div id='d132' class='colors'>
+blue</div>
+<div id='d133' class='colors'>
+blue1</div>
+<div id='d134' class='colors'>
+blue2</div>
+<div id='d135' class='colors'>
+blue3</div>
+<div id='d136' class='colors'>
+MediumBlue</div>
+<div id='d137' class='colors'>
+blue4</div>
+<div id='d138' class='colors'>
+DarkBlue</div>
+<div id='d139' class='colors'>
+MidnightBlue</div>
+<div id='d140' class='colors'>
+navy</div>
+<div id='d141' class='colors'>
+NavyBlue</div>
+<div id='d142' class='colors'>
+RoyalBlue</div>
+<div id='d143' class='colors'>
+RoyalBlue1</div>
+<div id='d144' class='colors'>
+RoyalBlue2</div>
+<div id='d145' class='colors'>
+RoyalBlue3</div>
+<div id='d146' class='colors'>
+RoyalBlue4</div>
+<div id='d147' class='colors'>
+CornflowerBlue</div>
+<div id='d148' class='colors'>
+LightSteelBlue</div>
+<div id='d149' class='colors'>
+LightSteelBlue1</div>
+<div id='d150' class='colors'>
+LightSteelBlue2</div>
+<div id='d151' class='colors'>
+LightSteelBlue3</div>
+<div id='d152' class='colors'>
+LightSteelBlue4</div>
+<div id='d153' class='colors'>
+SlateGray4</div>
+<div id='d154' class='colors'>
+SlateGray1</div>
+<div id='d155' class='colors'>
+SlateGray2</div>
+<div id='d156' class='colors'>
+SlateGray3</div>
+<div id='d157' class='colors'>
+LightSlateGray</div>
+<div id='d158' class='colors'>
+LightSlateGrey</div>
+<div id='d159' class='colors'>
+SlateGray</div>
+<div id='d160' class='colors'>
+SlateGrey</div>
+<div id='d161' class='colors'>
+DodgerBlue</div>
+<div id='d162' class='colors'>
+DodgerBlue1</div>
+<div id='d163' class='colors'>
+DodgerBlue2</div>
+<div id='d164' class='colors'>
+DodgerBlue4</div>
+<div id='d165' class='colors'>
+DodgerBlue3</div>
+<div id='d166' class='colors'>
+AliceBlue</div>
+<div id='d167' class='colors'>
+SteelBlue4</div>
+<div id='d168' class='colors'>
+SteelBlue</div>
+<div id='d169' class='colors'>
+SteelBlue1</div>
+<div id='d170' class='colors'>
+SteelBlue2</div>
+<div id='d171' class='colors'>
+SteelBlue3</div>
+<div id='d172' class='colors'>
+SkyBlue4</div>
+<div id='d173' class='colors'>
+SkyBlue1</div>
+<div id='d174' class='colors'>
+SkyBlue2</div>
+<div id='d175' class='colors'>
+SkyBlue3</div>
+<div id='d176' class='colors'>
+LightSkyBlue</div>
+<div id='d177' class='colors'>
+LightSkyBlue4</div>
+<div id='d178' class='colors'>
+LightSkyBlue1</div>
+<div id='d179' class='colors'>
+LightSkyBlue2</div>
+<div id='d180' class='colors'>
+LightSkyBlue3</div>
+<div id='d181' class='colors'>
+SkyBlue</div>
+<div id='d182' class='colors'>
+LightBlue3</div>
+<div id='d183' class='colors'>
+DeepSkyBlue</div>
+<div id='d184' class='colors'>
+DeepSkyBlue1</div>
+<div id='d185' class='colors'>
+DeepSkyBlue2</div>
+<div id='d186' class='colors'>
+DeepSkyBlue4</div>
+<div id='d187' class='colors'>
+DeepSkyBlue3</div>
+<div id='d188' class='colors'>
+LightBlue1</div>
+<div id='d189' class='colors'>
+LightBlue2</div>
+<div id='d190' class='colors'>
+LightBlue</div>
+<div id='d191' class='colors'>
+LightBlue4</div>
+<div id='d192' class='colors'>
+PowderBlue</div>
+<div id='d193' class='colors'>
+CadetBlue1</div>
+<div id='d194' class='colors'>
+CadetBlue2</div>
+<div id='d195' class='colors'>
+CadetBlue3</div>
+<div id='d196' class='colors'>
+CadetBlue4</div>
+<div id='d197' class='colors'>
+turquoise1</div>
+<div id='d198' class='colors'>
+turquoise2</div>
+<div id='d199' class='colors'>
+turquoise3</div>
+<div id='d200' class='colors'>
+turquoise4</div>
+<div id='d201' class='colors'>
+cadet blue</div>
+<div id='d202' class='colors'>
+CadetBlue</div>
+<div id='d203' class='colors'>
+DarkTurquoise</div>
+<div id='d204' class='colors'>
+azure</div>
+<div id='d205' class='colors'>
+azure1</div>
+<div id='d206' class='colors'>
+LightCyan</div>
+<div id='d207' class='colors'>
+LightCyan1</div>
+<div id='d208' class='colors'>
+azure2</div>
+<div id='d209' class='colors'>
+LightCyan2</div>
+<div id='d210' class='colors'>
+PaleTurquoise1</div>
+<div id='d211' class='colors'>
+PaleTurquoise</div>
+<div id='d212' class='colors'>
+PaleTurquoise2</div>
+<div id='d213' class='colors'>
+DarkSlateGray1</div>
+<div id='d214' class='colors'>
+azure3</div>
+<div id='d215' class='colors'>
+LightCyan3</div>
+<div id='d216' class='colors'>
+DarkSlateGray2</div>
+<div id='d217' class='colors'>
+PaleTurquoise3</div>
+<div id='d218' class='colors'>
+DarkSlateGray3</div>
+<div id='d219' class='colors'>
+azure4</div>
+<div id='d220' class='colors'>
+LightCyan4</div>
+<div id='d221' class='colors'>
+aqua</div>
+<div id='d222' class='colors'>
+cyan</div>
+<div id='d223' class='colors'>
+cyan1</div>
+<div id='d224' class='colors'>
+PaleTurquoise4</div>
+<div id='d225' class='colors'>
+cyan2</div>
+<div id='d226' class='colors'>
+DarkSlateGray4</div>
+<div id='d227' class='colors'>
+cyan3</div>
+<div id='d228' class='colors'>
+cyan4</div>
+<div id='d229' class='colors'>
+DarkCyan</div>
+<div id='d230' class='colors'>
+teal</div>
+<div id='d231' class='colors'>
+DarkSlateGray</div>
+<div id='d232' class='colors'>
+DarkSlateGrey</div>
+<div id='d233' class='colors'>
+MediumTurquoise</div>
+<div id='d234' class='colors'>
+LightSeaGreen</div>
+<div id='d235' class='colors'>
+turquoise</div>
+<div id='d236' class='colors'>
+aquamarine4</div>
+<div id='d237' class='colors'>
+aquamarine</div>
+<div id='d238' class='colors'>
+aquamarine1</div>
+<div id='d239' class='colors'>
+aquamarine2</div>
+<div id='d240' class='colors'>
+aquamarine3</div>
+<div id='d241' class='colors'>
+MediumAquamarine</div>
+<div id='d242' class='colors'>
+MediumSpringGreen</div>
+<div id='d243' class='colors'>
+MintCream</div>
+<div id='d244' class='colors'>
+SpringGreen</div>
+<div id='d245' class='colors'>
+SpringGreen1</div>
+<div id='d246' class='colors'>
+SpringGreen2</div>
+<div id='d247' class='colors'>
+SpringGreen3</div>
+<div id='d248' class='colors'>
+SpringGreen4</div>
+<div id='d249' class='colors'>
+MediumSeaGreen</div>
+<div id='d250' class='colors'>
+SeaGreen</div>
+<div id='d251' class='colors'>
+SeaGreen3</div>
+<div id='d252' class='colors'>
+SeaGreen1</div>
+<div id='d253' class='colors'>
+SeaGreen4</div>
+<div id='d254' class='colors'>
+SeaGreen2</div>
+<div id='d255' class='colors'>
+MediumForestGreen</div>
+<div id='d256' class='colors'>
+honeydew</div>
+<div id='d257' class='colors'>
+honeydew1</div>
+<div id='d258' class='colors'>
+honeydew2</div>
+<div id='d259' class='colors'>
+DarkSeaGreen1</div>
+<div id='d260' class='colors'>
+DarkSeaGreen2</div>
+<div id='d261' class='colors'>
+PaleGreen1</div>
+<div id='d262' class='colors'>
+PaleGreen</div>
+<div id='d263' class='colors'>
+honeydew3</div>
+<div id='d264' class='colors'>
+LightGreen</div>
+<div id='d265' class='colors'>
+PaleGreen2</div>
+<div id='d266' class='colors'>
+DarkSeaGreen3</div>
+<div id='d267' class='colors'>
+DarkSeaGreen</div>
+<div id='d268' class='colors'>
+PaleGreen3</div>
+<div id='d269' class='colors'>
+honeydew4</div>
+<div id='d270' class='colors'>
+green1</div>
+<div id='d271' class='colors'>
+lime</div>
+<div id='d272' class='colors'>
+LimeGreen</div>
+<div id='d273' class='colors'>
+DarkSeaGreen4</div>
+<div id='d274' class='colors'>
+green2</div>
+<div id='d275' class='colors'>
+PaleGreen4</div>
+<div id='d276' class='colors'>
+green3</div>
+<div id='d277' class='colors'>
+ForestGreen</div>
+<div id='d278' class='colors'>
+green4</div>
+<div id='d279' class='colors'>
+green</div>
+<div id='d280' class='colors'>
+DarkGreen</div>
+<div id='d281' class='colors'>
+LawnGreen</div>
+<div id='d282' class='colors'>
+chartreuse</div>
+<div id='d283' class='colors'>
+chartreuse1</div>
+<div id='d284' class='colors'>
+chartreuse2</div>
+<div id='d285' class='colors'>
+chartreuse3</div>
+<div id='d286' class='colors'>
+chartreuse4</div>
+<div id='d287' class='colors'>
+GreenYellow</div>
+<div id='d288' class='colors'>
+DarkOliveGreen3</div>
+<div id='d289' class='colors'>
+DarkOliveGreen1</div>
+<div id='d290' class='colors'>
+DarkOliveGreen2</div>
+<div id='d291' class='colors'>
+DarkOliveGreen4</div>
+<div id='d292' class='colors'>
+DarkOliveGreen</div>
+<div id='d293' class='colors'>
+OliveDrab</div>
+<div id='d294' class='colors'>
+OliveDrab1</div>
+<div id='d295' class='colors'>
+OliveDrab2</div>
+<div id='d296' class='colors'>
+OliveDrab3</div>
+<div id='d297' class='colors'>
+YellowGreen</div>
+<div id='d298' class='colors'>
+OliveDrab4</div>
+<div id='d299' class='colors'>
+ivory</div>
+<div id='d300' class='colors'>
+ivory1</div>
+<div id='d301' class='colors'>
+LightYellow</div>
+<div id='d302' class='colors'>
+LightYellow1</div>
+<div id='d303' class='colors'>
+beige</div>
+<div id='d304' class='colors'>
+ivory2</div>
+<div id='d305' class='colors'>
+LightGoldenrodYellow</div>
+<div id='d306' class='colors'>
+LightYellow2</div>
+<div id='d307' class='colors'>
+ivory3</div>
+<div id='d308' class='colors'>
+LightYellow3</div>
+<div id='d309' class='colors'>
+ivory4</div>
+<div id='d310' class='colors'>
+LightYellow4</div>
+<div id='d311' class='colors'>
+yellow</div>
+<div id='d312' class='colors'>
+yellow1</div>
+<div id='d313' class='colors'>
+yellow2</div>
+<div id='d314' class='colors'>
+yellow3</div>
+<div id='d315' class='colors'>
+yellow4</div>
+<div id='d316' class='colors'>
+olive</div>
+<div id='d317' class='colors'>
+DarkKhaki</div>
+<div id='d318' class='colors'>
+khaki2</div>
+<div id='d319' class='colors'>
+LemonChiffon4</div>
+<div id='d320' class='colors'>
+khaki1</div>
+<div id='d321' class='colors'>
+khaki3</div>
+<div id='d322' class='colors'>
+khaki4</div>
+<div id='d323' class='colors'>
+PaleGoldenrod</div>
+<div id='d324' class='colors'>
+LemonChiffon</div>
+<div id='d325' class='colors'>
+LemonChiffon1</div>
+<div id='d326' class='colors'>
+khaki</div>
+<div id='d327' class='colors'>
+LemonChiffon3</div>
+<div id='d328' class='colors'>
+LemonChiffon2</div>
+<div id='d329' class='colors'>
+MediumGoldenRod</div>
+<div id='d330' class='colors'>
+cornsilk4</div>
+<div id='d331' class='colors'>
+gold</div>
+<div id='d332' class='colors'>
+gold1</div>
+<div id='d333' class='colors'>
+gold2</div>
+<div id='d334' class='colors'>
+gold3</div>
+<div id='d335' class='colors'>
+gold4</div>
+<div id='d336' class='colors'>
+LightGoldenrod</div>
+<div id='d337' class='colors'>
+LightGoldenrod4</div>
+<div id='d338' class='colors'>
+LightGoldenrod1</div>
+<div id='d339' class='colors'>
+LightGoldenrod3</div>
+<div id='d340' class='colors'>
+LightGoldenrod2</div>
+<div id='d341' class='colors'>
+cornsilk3</div>
+<div id='d342' class='colors'>
+cornsilk2</div>
+<div id='d343' class='colors'>
+cornsilk</div>
+<div id='d344' class='colors'>
+cornsilk1</div>
+<div id='d345' class='colors'>
+goldenrod</div>
+<div id='d346' class='colors'>
+goldenrod1</div>
+<div id='d347' class='colors'>
+goldenrod2</div>
+<div id='d348' class='colors'>
+goldenrod3</div>
+<div id='d349' class='colors'>
+goldenrod4</div>
+<div id='d350' class='colors'>
+DarkGoldenrod</div>
+<div id='d351' class='colors'>
+DarkGoldenrod1</div>
+<div id='d352' class='colors'>
+DarkGoldenrod2</div>
+<div id='d353' class='colors'>
+DarkGoldenrod3</div>
+<div id='d354' class='colors'>
+DarkGoldenrod4</div>
+<div id='d355' class='colors'>
+FloralWhite</div>
+<div id='d356' class='colors'>
+wheat2</div>
+<div id='d357' class='colors'>
+OldLace</div>
+<div id='d358' class='colors'>
+wheat</div>
+<div id='d359' class='colors'>
+wheat1</div>
+<div id='d360' class='colors'>
+wheat3</div>
+<div id='d361' class='colors'>
+orange</div>
+<div id='d362' class='colors'>
+orange1</div>
+<div id='d363' class='colors'>
+orange2</div>
+<div id='d364' class='colors'>
+orange3</div>
+<div id='d365' class='colors'>
+orange4</div>
+<div id='d366' class='colors'>
+wheat4</div>
+<div id='d367' class='colors'>
+moccasin</div>
+<div id='d368' class='colors'>
+PapayaWhip</div>
+<div id='d369' class='colors'>
+NavajoWhite3</div>
+<div id='d370' class='colors'>
+BlanchedAlmond</div>
+<div id='d371' class='colors'>
+NavajoWhite</div>
+<div id='d372' class='colors'>
+NavajoWhite1</div>
+<div id='d373' class='colors'>
+NavajoWhite2</div>
+<div id='d374' class='colors'>
+NavajoWhite4</div>
+<div id='d375' class='colors'>
+AntiqueWhite4</div>
+<div id='d376' class='colors'>
+AntiqueWhite</div>
+<div id='d377' class='colors'>
+tan</div>
+<div id='d378' class='colors'>
+bisque4</div>
+<div id='d379' class='colors'>
+burlywood</div>
+<div id='d380' class='colors'>
+AntiqueWhite2</div>
+<div id='d381' class='colors'>
+burlywood1</div>
+<div id='d382' class='colors'>
+burlywood3</div>
+<div id='d383' class='colors'>
+burlywood2</div>
+<div id='d384' class='colors'>
+AntiqueWhite1</div>
+<div id='d385' class='colors'>
+burlywood4</div>
+<div id='d386' class='colors'>
+AntiqueWhite3</div>
+<div id='d387' class='colors'>
+DarkOrange</div>
+<div id='d388' class='colors'>
+bisque2</div>
+<div id='d389' class='colors'>
+bisque</div>
+<div id='d390' class='colors'>
+bisque1</div>
+<div id='d391' class='colors'>
+bisque3</div>
+<div id='d392' class='colors'>
+DarkOrange1</div>
+<div id='d393' class='colors'>
+linen</div>
+<div id='d394' class='colors'>
+DarkOrange2</div>
+<div id='d395' class='colors'>
+DarkOrange3</div>
+<div id='d396' class='colors'>
+DarkOrange4</div>
+<div id='d397' class='colors'>
+peru</div>
+<div id='d398' class='colors'>
+tan1</div>
+<div id='d399' class='colors'>
+tan2</div>
+<div id='d400' class='colors'>
+tan3</div>
+<div id='d401' class='colors'>
+tan4</div>
+<div id='d402' class='colors'>
+PeachPuff</div>
+<div id='d403' class='colors'>
+PeachPuff1</div>
+<div id='d404' class='colors'>
+PeachPuff4</div>
+<div id='d405' class='colors'>
+PeachPuff2</div>
+<div id='d406' class='colors'>
+PeachPuff3</div>
+<div id='d407' class='colors'>
+SandyBrown</div>
+<div id='d408' class='colors'>
+seashell4</div>
+<div id='d409' class='colors'>
+seashell2</div>
+<div id='d410' class='colors'>
+seashell3</div>
+<div id='d411' class='colors'>
+chocolate</div>
+<div id='d412' class='colors'>
+chocolate1</div>
+<div id='d413' class='colors'>
+chocolate2</div>
+<div id='d414' class='colors'>
+chocolate3</div>
+<div id='d415' class='colors'>
+chocolate4</div>
+<div id='d416' class='colors'>
+SaddleBrown</div>
+<div id='d417' class='colors'>
+seashell</div>
+<div id='d418' class='colors'>
+seashell1</div>
+<div id='d419' class='colors'>
+sienna4</div>
+<div id='d420' class='colors'>
+sienna</div>
+<div id='d421' class='colors'>
+sienna1</div>
+<div id='d422' class='colors'>
+sienna2</div>
+<div id='d423' class='colors'>
+sienna3</div>
+<div id='d424' class='colors'>
+LightSalmon3</div>
+<div id='d425' class='colors'>
+LightSalmon</div>
+<div id='d426' class='colors'>
+LightSalmon1</div>
+<div id='d427' class='colors'>
+LightSalmon4</div>
+<div id='d428' class='colors'>
+LightSalmon2</div>
+<div id='d429' class='colors'>
+coral</div>
+<div id='d430' class='colors'>
+OrangeRed</div>
+<div id='d431' class='colors'>
+OrangeRed1</div>
+<div id='d432' class='colors'>
+OrangeRed2</div>
+<div id='d433' class='colors'>
+OrangeRed3</div>
+<div id='d434' class='colors'>
+OrangeRed4</div>
+<div id='d435' class='colors'>
+DarkSalmon</div>
+<div id='d436' class='colors'>
+salmon1</div>
+<div id='d437' class='colors'>
+salmon2</div>
+<div id='d438' class='colors'>
+salmon3</div>
+<div id='d439' class='colors'>
+salmon4</div>
+<div id='d440' class='colors'>
+coral1</div>
+<div id='d441' class='colors'>
+coral2</div>
+<div id='d442' class='colors'>
+coral3</div>
+<div id='d443' class='colors'>
+coral4</div>
+<div id='d444' class='colors'>
+tomato4</div>
+<div id='d445' class='colors'>
+tomato</div>
+<div id='d446' class='colors'>
+tomato1</div>
+<div id='d447' class='colors'>
+tomato2</div>
+<div id='d448' class='colors'>
+tomato3</div>
+<div id='d449' class='colors'>
+MistyRose4</div>
+<div id='d450' class='colors'>
+MistyRose2</div>
+<div id='d451' class='colors'>
+MistyRose</div>
+<div id='d452' class='colors'>
+MistyRose1</div>
+<div id='d453' class='colors'>
+salmon</div>
+<div id='d454' class='colors'>
+MistyRose3</div>
+<div id='d455' class='colors'>
+white</div>
+<div id='d456' class='colors'>
+gray100</div>
+<div id='d457' class='colors'>
+grey100</div>
+<div id='d458' class='colors'>
+grey100</div>
+<div id='d459' class='colors'>
+gray99</div>
+<div id='d460' class='colors'>
+grey99</div>
+<div id='d461' class='colors'>
+gray98</div>
+<div id='d462' class='colors'>
+grey98</div>
+<div id='d463' class='colors'>
+gray97</div>
+<div id='d464' class='colors'>
+grey97</div>
+<div id='d465' class='colors'>
+gray96</div>
+<div id='d466' class='colors'>
+grey96</div>
+<div id='d467' class='colors'>
+WhiteSmoke</div>
+<div id='d468' class='colors'>
+gray95</div>
+<div id='d469' class='colors'>
+grey95</div>
+<div id='d470' class='colors'>
+gray94</div>
+<div id='d471' class='colors'>
+grey94</div>
+<div id='d472' class='colors'>
+gray93</div>
+<div id='d473' class='colors'>
+grey93</div>
+<div id='d474' class='colors'>
+gray92</div>
+<div id='d475' class='colors'>
+grey92</div>
+<div id='d476' class='colors'>
+gray91</div>
+<div id='d477' class='colors'>
+grey91</div>
+<div id='d478' class='colors'>
+gray90</div>
+<div id='d479' class='colors'>
+grey90</div>
+<div id='d480' class='colors'>
+gray89</div>
+<div id='d481' class='colors'>
+grey89</div>
+<div id='d482' class='colors'>
+gray88</div>
+<div id='d483' class='colors'>
+grey88</div>
+<div id='d484' class='colors'>
+gray87</div>
+<div id='d485' class='colors'>
+grey87</div>
+<div id='d486' class='colors'>
+gainsboro</div>
+<div id='d487' class='colors'>
+gray86</div>
+<div id='d488' class='colors'>
+grey86</div>
+<div id='d489' class='colors'>
+gray85</div>
+<div id='d490' class='colors'>
+grey85</div>
+<div id='d491' class='colors'>
+gray84</div>
+<div id='d492' class='colors'>
+grey84</div>
+<div id='d493' class='colors'>
+gray83</div>
+<div id='d494' class='colors'>
+grey83</div>
+<div id='d495' class='colors'>
+LightGray</div>
+<div id='d496' class='colors'>
+LightGrey</div>
+<div id='d497' class='colors'>
+gray82</div>
+<div id='d498' class='colors'>
+grey82</div>
+<div id='d499' class='colors'>
+gray81</div>
+<div id='d500' class='colors'>
+grey81</div>
+<div id='d501' class='colors'>
+gray80</div>
+<div id='d502' class='colors'>
+grey80</div>
+<div id='d503' class='colors'>
+gray79</div>
+<div id='d504' class='colors'>
+grey79</div>
+<div id='d505' class='colors'>
+gray78</div>
+<div id='d506' class='colors'>
+grey78</div>
+<div id='d507' class='colors'>
+gray77</div>
+<div id='d508' class='colors'>
+grey77</div>
+<div id='d509' class='colors'>
+gray76</div>
+<div id='d510' class='colors'>
+grey76</div>
+<div id='d511' class='colors'>
+silver</div>
+<div id='d512' class='colors'>
+gray75</div>
+<div id='d513' class='colors'>
+grey75</div>
+<div id='d514' class='colors'>
+gray74</div>
+<div id='d515' class='colors'>
+grey74</div>
+<div id='d516' class='colors'>
+gray73</div>
+<div id='d517' class='colors'>
+grey73</div>
+<div id='d518' class='colors'>
+gray72</div>
+<div id='d519' class='colors'>
+grey72</div>
+<div id='d520' class='colors'>
+gray71</div>
+<div id='d521' class='colors'>
+grey71</div>
+<div id='d522' class='colors'>
+gray70</div>
+<div id='d523' class='colors'>
+grey70</div>
+<div id='d524' class='colors'>
+gray69</div>
+<div id='d525' class='colors'>
+grey69</div>
+<div id='d526' class='colors'>
+gray68</div>
+<div id='d527' class='colors'>
+grey68</div>
+<div id='d528' class='colors'>
+gray67</div>
+<div id='d529' class='colors'>
+grey67</div>
+<div id='d530' class='colors'>
+DarkGray</div>
+<div id='d531' class='colors'>
+DarkGrey</div>
+<div id='d532' class='colors'>
+gray66</div>
+<div id='d533' class='colors'>
+grey66</div>
+<div id='d534' class='colors'>
+gray65</div>
+<div id='d535' class='colors'>
+grey65</div>
+<div id='d536' class='colors'>
+gray64</div>
+<div id='d537' class='colors'>
+grey64</div>
+<div id='d538' class='colors'>
+gray63</div>
+<div id='d539' class='colors'>
+grey63</div>
+<div id='d540' class='colors'>
+gray62</div>
+<div id='d541' class='colors'>
+grey62</div>
+<div id='d542' class='colors'>
+gray61</div>
+<div id='d543' class='colors'>
+grey61</div>
+<div id='d544' class='colors'>
+gray60</div>
+<div id='d545' class='colors'>
+grey60</div>
+<div id='d546' class='colors'>
+gray59</div>
+<div id='d547' class='colors'>
+grey59</div>
+<div id='d548' class='colors'>
+gray58</div>
+<div id='d549' class='colors'>
+grey58</div>
+<div id='d550' class='colors'>
+gray57</div>
+<div id='d551' class='colors'>
+grey57</div>
+<div id='d552' class='colors'>
+gray56</div>
+<div id='d553' class='colors'>
+grey56</div>
+<div id='d554' class='colors'>
+gray55</div>
+<div id='d555' class='colors'>
+grey55</div>
+<div id='d556' class='colors'>
+gray54</div>
+<div id='d557' class='colors'>
+grey54</div>
+<div id='d558' class='colors'>
+gray53</div>
+<div id='d559' class='colors'>
+grey53</div>
+<div id='d560' class='colors'>
+gray52</div>
+<div id='d561' class='colors'>
+grey52</div>
+<div id='d562' class='colors'>
+gray51</div>
+<div id='d563' class='colors'>
+grey51</div>
+<div id='d564' class='colors'>
+fractal</div>
+<div id='d565' class='colors'>
+gray50</div>
+<div id='d566' class='colors'>
+grey50</div>
+<div id='d567' class='colors'>
+gray</div>
+<div id='d568' class='colors'>
+gray49</div>
+<div id='d569' class='colors'>
+grey49</div>
+<div id='d570' class='colors'>
+gray48</div>
+<div id='d571' class='colors'>
+grey48</div>
+<div id='d572' class='colors'>
+gray47</div>
+<div id='d573' class='colors'>
+grey47</div>
+<div id='d574' class='colors'>
+gray46</div>
+<div id='d575' class='colors'>
+grey46</div>
+<div id='d576' class='colors'>
+gray45</div>
+<div id='d577' class='colors'>
+grey45</div>
+<div id='d578' class='colors'>
+gray44</div>
+<div id='d579' class='colors'>
+grey44</div>
+<div id='d580' class='colors'>
+gray43</div>
+<div id='d581' class='colors'>
+grey43</div>
+<div id='d582' class='colors'>
+gray42</div>
+<div id='d583' class='colors'>
+grey42</div>
+<div id='d584' class='colors'>
+DimGray</div>
+<div id='d585' class='colors'>
+DimGrey</div>
+<div id='d586' class='colors'>
+gray41</div>
+<div id='d587' class='colors'>
+grey41</div>
+<div id='d588' class='colors'>
+gray40</div>
+<div id='d589' class='colors'>
+grey40</div>
+<div id='d590' class='colors'>
+gray39</div>
+<div id='d591' class='colors'>
+grey39</div>
+<div id='d592' class='colors'>
+gray38</div>
+<div id='d593' class='colors'>
+grey38</div>
+<div id='d594' class='colors'>
+gray37</div>
+<div id='d595' class='colors'>
+grey37</div>
+<div id='d596' class='colors'>
+gray36</div>
+<div id='d597' class='colors'>
+grey36</div>
+<div id='d598' class='colors'>
+gray35</div>
+<div id='d599' class='colors'>
+grey35</div>
+<div id='d600' class='colors'>
+gray34</div>
+<div id='d601' class='colors'>
+grey34</div>
+<div id='d602' class='colors'>
+gray33</div>
+<div id='d603' class='colors'>
+grey33</div>
+<div id='d604' class='colors'>
+gray32</div>
+<div id='d605' class='colors'>
+grey32</div>
+<div id='d606' class='colors'>
+gray31</div>
+<div id='d607' class='colors'>
+grey31</div>
+<div id='d608' class='colors'>
+gray30</div>
+<div id='d609' class='colors'>
+grey30</div>
+<div id='d610' class='colors'>
+gray29</div>
+<div id='d611' class='colors'>
+grey29</div>
+<div id='d612' class='colors'>
+gray28</div>
+<div id='d613' class='colors'>
+grey28</div>
+<div id='d614' class='colors'>
+gray27</div>
+<div id='d615' class='colors'>
+grey27</div>
+<div id='d616' class='colors'>
+gray26</div>
+<div id='d617' class='colors'>
+grey26</div>
+<div id='d618' class='colors'>
+gray25</div>
+<div id='d619' class='colors'>
+grey25</div>
+<div id='d620' class='colors'>
+gray24</div>
+<div id='d621' class='colors'>
+grey24</div>
+<div id='d622' class='colors'>
+gray23</div>
+<div id='d623' class='colors'>
+grey23</div>
+<div id='d624' class='colors'>
+gray22</div>
+<div id='d625' class='colors'>
+grey22</div>
+<div id='d626' class='colors'>
+gray21</div>
+<div id='d627' class='colors'>
+grey21</div>
+<div id='d628' class='colors'>
+gray20</div>
+<div id='d629' class='colors'>
+grey20</div>
+<div id='d630' class='colors'>
+gray19</div>
+<div id='d631' class='colors'>
+grey19</div>
+<div id='d632' class='colors'>
+gray18</div>
+<div id='d633' class='colors'>
+grey18</div>
+<div id='d634' class='colors'>
+gray17</div>
+<div id='d635' class='colors'>
+grey17</div>
+<div id='d636' class='colors'>
+gray16</div>
+<div id='d637' class='colors'>
+grey16</div>
+<div id='d638' class='colors'>
+gray15</div>
+<div id='d639' class='colors'>
+grey15</div>
+<div id='d640' class='colors'>
+gray14</div>
+<div id='d641' class='colors'>
+grey14</div>
+<div id='d642' class='colors'>
+gray13</div>
+<div id='d643' class='colors'>
+grey13</div>
+<div id='d644' class='colors'>
+gray12</div>
+<div id='d645' class='colors'>
+grey12</div>
+<div id='d646' class='colors'>
+gray11</div>
+<div id='d647' class='colors'>
+grey11</div>
+<div id='d648' class='colors'>
+gray10</div>
+<div id='d649' class='colors'>
+grey10</div>
+<div id='d650' class='colors'>
+gray9</div>
+<div id='d651' class='colors'>
+grey9</div>
+<div id='d652' class='colors'>
+gray8</div>
+<div id='d653' class='colors'>
+grey8</div>
+<div id='d654' class='colors'>
+gray7</div>
+<div id='d655' class='colors'>
+grey7</div>
+<div id='d656' class='colors'>
+gray6</div>
+<div id='d657' class='colors'>
+grey6</div>
+<div id='d658' class='colors'>
+gray5</div>
+<div id='d659' class='colors'>
+grey5</div>
+<div id='d660' class='colors'>
+gray4</div>
+<div id='d661' class='colors'>
+grey4</div>
+<div id='d662' class='colors'>
+gray3</div>
+<div id='d663' class='colors'>
+grey3</div>
+<div id='d664' class='colors'>
+gray2</div>
+<div id='d665' class='colors'>
+grey2</div>
+<div id='d666' class='colors'>
+gray1</div>
+<div id='d667' class='colors'>
+grey1</div>
+<div id='d668' class='colors'>
+black</div>
+<div id='d669' class='colors'>
+gray0</div>
+<div id='d670' class='colors'>
+grey0</div>
+<div id='d671' class='colors'>
+opaque</div>
+<div id='d672' class='colors'>
+none</div>
+<div id='d673' class='colors'>
+transparent</div>
+</div>
+
+<div id='colornames'>
+WHERE THE COLORNAMES WILL GO
+</div>
+
+<div id='hexswitch'>CLICK TO SHOW HEXES</div>
+<div id='infoswitch'>CLICK TO SHOW INFO</div>
+<script type='text/javascript' src='js/jquery-1.6.4.min.js'></script>
+<script type='text/javascript' src='js/colordict.js'></script>
+
+<script type='text/javascript'>
+function goldenize(num)
+ {
+ ratio = (1+Math.sqrt(5))/2
+ newnum = Math.round(num*ratio)
+ return newnum
+ }
+//turns css property width or height into an integer value
+function getproperty(idandselectr, propertystr)
+ {
+ grab = $(idandselectr).css(propertystr)
+ grab = grab.slice(0,-2)
+ numval = parseInt(grab)
+ return numval
+ }
+function makegolden(idandselectr, propertystr)
+ {
+ result = getproperty(idandselectr, propertystr)
+ newwidth = goldenize(result)
+ widthval = newwidth.toString()+'px'
+ $(idandselectr).css('width', widthval)
+ }
+makegolden('.colors', 'height')
+
+
+//remove content this function takes the name out of the divs
+infoswitch = false;
+function removecontent()
+ {
+ if(infoswitch == false)
+ {
+ $('#infoswitch').click(function()
+ {
+ infoswitch = true
+ if(infoswitch == true){
+ $('.colors').html("")
+ }
+ })
+ }
+ if(infoswitch == true)
+ {
+ $('#infoswitch').click(function()
+ {
+ infoswitch = false
+ })
+ }
+ }
+removecontent()
+
+function colorToHex(color)
+{
+ if (color.substr(0, 1) === '#') {
+ return color;
+ }
+ var digits = /(.*?)rgb\((\d+), (\d+), (\d+)\)/.exec(color);
+
+ var red = parseInt(digits[2]);
+ var green = parseInt(digits[3]);
+ var blue = parseInt(digits[4]);
+
+ var rgb = blue | (green << 8) | (red << 16);
+ return digits[1] + '#' + rgb.toString(16);
+};
+
+//takes a div name and returns a colorname
+
+function showcolorname(divstr)
+
+ {
+ bgcolor = $('#'+divstr).css('background-color')
+ lowercasehex = colorToHex(bgcolor)
+ hex = lowercasehex.toUpperCase()
+ imname = hextoname[hex]
+ if (hexes == true)
+ {
+ imname = hex
+ }
+ return imname
+ }
+function bigname(divstr)
+ {
+ colorname = showcolorname(divstr)
+ $('#colornames').html(colorname)
+ }
+function writeit(text)
+ {
+ $('#colornames').append(text)
+ }
+function makebig(divstr)
+ {
+ firstheight = $('#'+divstr).height()
+ newheight = goldenize(firstheight)
+ $('#'+divstr).height(newheight)
+ }
+function makesmall(divstr)
+ {
+ oldheight = $('.colors').height()
+ $('#'+divstr).height(oldheight)
+ }
+$('.colors').hover(function() {
+ bigname(this.id);
+ makebig(this.id);
+ makegolden('#'+this.id, 'height')},
+function(){
+ makesmall(this.id);
+ makegolden('#'+this.id, 'height')
+});
+$(".colors").hover(function(){
+$('#colornames').fadeOut(100);$('#colornames').fadeIn(500);
+});
+$('body').css('background-color', 'black')
+$('.colors').css('margin-top', '2px')
+var hexes = false
+function hexswitch()
+ {
+ if(hexes == false)
+ {
+ $('#hexswitch').html('CLICK TO SHOW COLOR NAMES')
+ hexes = true;
+ }
+
+ else
+ {
+ $('#hexswitch').html('CLICK TO SHOW HEX NAMES')
+ hexes = false;
+ }
+ }
+$('#hexswitch').click(function(){hexswitch()})
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/test.html b/frontend/imgrid/colors/test.html
new file mode 100755
index 0000000..1912ebf
--- /dev/null
+++ b/frontend/imgrid/colors/test.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<!--<link rel="stylesheet" href="css/normalize.css">-->
+<head>
+ <style type='text/css'>
+ #master
+ {
+ width:400px;
+ font-size:0;
+ }
+ .slaves
+ {
+ width:100px;
+ background-color:gray;
+ height:40px;
+ display:inline-block;
+ }
+ </style>
+
+
+</head>
+<body>
+
+<div id='master'>
+
+<div class='slaves' style='background-color:pink'></div>
+<div class='slaves' style='background-color:blue'></div>
+<div class='slaves' style='background-color:dodgerblue'></div>
+<div class='slaves' style='background-color:red'></div>
+
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+<div class='slaves'></div>
+</div>
+<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
+<!--<script type='text/javascript' src='jquery.js'></script>-->
+<script type='text/javascript'>
+$('.slaves').mouseover(function()
+ {
+ $(this).css('width','120px')
+ $('#master').css('width','420')
+ }).mouseout(function()
+ {
+ $(this).css({'width':'100px'})
+ $('#master').css('width','420')
+
+ });
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/colors/vase.gif b/frontend/imgrid/colors/vase.gif
new file mode 100755
index 0000000..dc1c104
--- /dev/null
+++ b/frontend/imgrid/colors/vase.gif
Binary files differ
diff --git a/frontend/imgrid/colors/vase.png b/frontend/imgrid/colors/vase.png
new file mode 100755
index 0000000..153e72b
--- /dev/null
+++ b/frontend/imgrid/colors/vase.png
Binary files differ
diff --git a/frontend/imgrid/colors/vaseshim.png b/frontend/imgrid/colors/vaseshim.png
new file mode 100755
index 0000000..7dbd352
--- /dev/null
+++ b/frontend/imgrid/colors/vaseshim.png
Binary files differ
diff --git a/frontend/imgrid/colors/whiteshim.png b/frontend/imgrid/colors/whiteshim.png
new file mode 100755
index 0000000..6b58334
--- /dev/null
+++ b/frontend/imgrid/colors/whiteshim.png
Binary files differ
diff --git a/frontend/imgrid/css/cssreset.css b/frontend/imgrid/css/cssreset.css
new file mode 100755
index 0000000..9329580
--- /dev/null
+++ b/frontend/imgrid/css/cssreset.css
@@ -0,0 +1,7 @@
+html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
+ border: 0pt none;
+ font: inherit;
+ margin: 0pt;
+ padding: 0pt;
+ vertical-align: baseline;
+} \ No newline at end of file
diff --git a/frontend/imgrid/css/general.css b/frontend/imgrid/css/general.css
new file mode 100755
index 0000000..dc1296a
--- /dev/null
+++ b/frontend/imgrid/css/general.css
@@ -0,0 +1,91 @@
+
+dy, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em,
+font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody,
+tfoot, thead, tr, th, td {
+border:0pt none;
+font-family:inherit;
+font-size:100%;
+font-style:inherit;
+font-weight:inherit;
+margin:0pt;
+padding:0pt;
+vertical-align:baseline;
+}
+body{
+background:#fff none repeat scroll 0%;
+line-height:1;
+font-size: 12px;
+font-family:arial,sans-serif;
+margin:0pt;
+height:100%;
+}
+br.both{
+clear:both;
+}
+table {
+border-collapse:separate;
+border-spacing:0pt;
+}
+caption, th, td {
+font-weight:normal;
+text-align:left;
+}
+blockquote:before, blockquote:after, q:before, q:after {
+content:"";
+}
+blockquote, q {
+quotes:"" "";
+}
+a{
+cursor: pointer;
+text-decoration:none;
+}
+
+#backgroundPopup{
+display:none;
+position:fixed;
+_position:absolute; /* hack for internet explorer 6*/
+height:100%;
+width:100%;
+top:0;
+left:0;
+background:#000000;
+border:1px solid #cecece;
+z-index:1;
+}
+#popupContact{
+display:none;
+position:fixed;
+_position:absolute; /* hack for internet explorer 6*/
+height:800px;
+width:800px;
+background:#FFFFFF;
+border:2px solid #cecece;
+z-index:2;
+padding:12px;
+font-size:13px;
+}
+#popupContact h1{
+text-align:left;
+color:#6FA5FD;
+font-size:22px;
+font-weight:700;
+border-bottom:1px dotted #D3D3D3;
+padding-bottom:2px;
+margin-bottom:20px;
+}
+#popupContactClose{
+font-size:14px;
+line-height:14px;
+right:6px;
+top:4px;
+position:absolute;
+color:#6fa5fd;
+font-weight:700;
+display:block;
+}
+#button{
+text-align:center;
+margin:100px;
+}
+
diff --git a/frontend/imgrid/css/jquery-ui-1.8.16.custom.css b/frontend/imgrid/css/jquery-ui-1.8.16.custom.css
new file mode 100755
index 0000000..9e3cc66
--- /dev/null
+++ b/frontend/imgrid/css/jquery-ui-1.8.16.custom.css
@@ -0,0 +1,313 @@
+/*
+ * jQuery UI CSS Framework 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=1px&bgColorHeader=cccccc&bgTextureHeader=07_diagonals_medium.png&bgImgOpacityHeader=75&borderColorHeader=ffffff&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=16_diagonal_maze.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=06_inset_hard.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=05_inset_soft.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=12_gloss_wave.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=12_gloss_wave.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=20px&offsetTopShadow=-90px&offsetLeftShadow=-30px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #aaaaaa; color: #DCDCDC; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #ffffff; background: #cccccc url(images/ui-bg_diagonals-medium_75_cccccc_40x40.png) 50% 50% repeat; color: #DCDCDC; font-weight: bold; }
+.ui-widget-header a { color: #DCDCDC; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_inset-hard_55_fbf9ee_1x100.png) 50% bottom repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_inset-soft_95_fef1ec_1x100.png) 50% bottom repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 1px; -webkit-border-top-left-radius: 1px; -khtml-border-top-left-radius: 1px; border-top-left-radius: 1px; }
+.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 1px; -webkit-border-top-right-radius: 1px; -khtml-border-top-right-radius: 1px; border-top-right-radius: 1px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 1px; -webkit-border-bottom-left-radius: 1px; -khtml-border-bottom-left-radius: 1px; border-bottom-left-radius: 1px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 1px; -webkit-border-bottom-right-radius: 1px; -khtml-border-bottom-right-radius: 1px; border-bottom-right-radius: 1px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_gloss-wave_0_aaaaaa_500x100.png) 50% top repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -90px 0 0 -30px; padding: 20px; background: #aaaaaa url(images/ui-bg_gloss-wave_0_aaaaaa_500x100.png) 50% top repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Slider 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }
diff --git a/frontend/imgrid/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/frontend/imgrid/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100755
index 0000000..5b5dab2
--- /dev/null
+++ b/frontend/imgrid/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
Binary files differ
diff --git a/frontend/imgrid/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/frontend/imgrid/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
new file mode 100755
index 0000000..ac8b229
--- /dev/null
+++ b/frontend/imgrid/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
Binary files differ
diff --git a/frontend/imgrid/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/frontend/imgrid/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
new file mode 100755
index 0000000..ad3d634
--- /dev/null
+++ b/frontend/imgrid/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
Binary files differ
diff --git a/frontend/imgrid/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/frontend/imgrid/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100755
index 0000000..42ccba2
--- /dev/null
+++ b/frontend/imgrid/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
Binary files differ
diff --git a/frontend/imgrid/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/frontend/imgrid/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png
new file mode 100755
index 0000000..1d43b47
--- /dev/null
+++ b/frontend/imgrid/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png
Binary files differ
diff --git a/frontend/imgrid/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/frontend/imgrid/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100755
index 0000000..86c2baa
--- /dev/null
+++ b/frontend/imgrid/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
Binary files differ
diff --git a/frontend/imgrid/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png b/frontend/imgrid/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100755
index 0000000..4443fdc
--- /dev/null
+++ b/frontend/imgrid/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
Binary files differ
diff --git a/frontend/imgrid/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/frontend/imgrid/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
new file mode 100755
index 0000000..7c9fa6c
--- /dev/null
+++ b/frontend/imgrid/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
Binary files differ
diff --git a/frontend/imgrid/css/smoothness/images/ui-icons_222222_256x240.png b/frontend/imgrid/css/smoothness/images/ui-icons_222222_256x240.png
new file mode 100755
index 0000000..b273ff1
--- /dev/null
+++ b/frontend/imgrid/css/smoothness/images/ui-icons_222222_256x240.png
Binary files differ
diff --git a/frontend/imgrid/css/smoothness/images/ui-icons_2e83ff_256x240.png b/frontend/imgrid/css/smoothness/images/ui-icons_2e83ff_256x240.png
new file mode 100755
index 0000000..09d1cdc
--- /dev/null
+++ b/frontend/imgrid/css/smoothness/images/ui-icons_2e83ff_256x240.png
Binary files differ
diff --git a/frontend/imgrid/css/smoothness/images/ui-icons_454545_256x240.png b/frontend/imgrid/css/smoothness/images/ui-icons_454545_256x240.png
new file mode 100755
index 0000000..59bd45b
--- /dev/null
+++ b/frontend/imgrid/css/smoothness/images/ui-icons_454545_256x240.png
Binary files differ
diff --git a/frontend/imgrid/css/smoothness/images/ui-icons_888888_256x240.png b/frontend/imgrid/css/smoothness/images/ui-icons_888888_256x240.png
new file mode 100755
index 0000000..6d02426
--- /dev/null
+++ b/frontend/imgrid/css/smoothness/images/ui-icons_888888_256x240.png
Binary files differ
diff --git a/frontend/imgrid/css/smoothness/images/ui-icons_cd0a0a_256x240.png b/frontend/imgrid/css/smoothness/images/ui-icons_cd0a0a_256x240.png
new file mode 100755
index 0000000..2ab019b
--- /dev/null
+++ b/frontend/imgrid/css/smoothness/images/ui-icons_cd0a0a_256x240.png
Binary files differ
diff --git a/frontend/imgrid/css/smoothness/jquery-ui-1.8.16.custom.css b/frontend/imgrid/css/smoothness/jquery-ui-1.8.16.custom.css
new file mode 100755
index 0000000..73951cc
--- /dev/null
+++ b/frontend/imgrid/css/smoothness/jquery-ui-1.8.16.custom.css
@@ -0,0 +1,313 @@
+/*
+ * jQuery UI CSS Framework 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
+.ui-widget-header a { color: #222222; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; font-weight: normal; color: #555555; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Slider 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }
diff --git a/frontend/imgrid/dist/3dmap.jar b/frontend/imgrid/dist/3dmap.jar
new file mode 100755
index 0000000..0424a46
--- /dev/null
+++ b/frontend/imgrid/dist/3dmap.jar
Binary files differ
diff --git a/frontend/imgrid/dist/3dmap.jnlp b/frontend/imgrid/dist/3dmap.jnlp
new file mode 100755
index 0000000..7c2108c
--- /dev/null
+++ b/frontend/imgrid/dist/3dmap.jnlp
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp href="3dmap.jnlp">
+ <information>
+ <title>3D Map</title>
+ <vendor>ScannerJammer</vendor>
+ <homepage href="http://scannerjammer.com/"/>
+ <description>3D Map Viewer</description>
+ <description kind="short">JOGL Applet that can generate a 3D landscape based on 2 images: texture and heightmap.</description>
+ <offline-allowed/>
+ </information>
+
+ <resources>
+ <j2se href="http://java.sun.com/products/autodl/j2se" version="1.4+"/>
+ <property name="sun.java2d.noddraw" value="true"/>
+ <jar href="3dmap.jar" main="true"/>
+ <jar href="http/commons-codec-1.4.jar"/>
+ <jar href="http/commons-logging-1.1.1.jar"/>
+ <jar href="http/httpclient-4.1.2.jar"/>
+ <jar href="http/httpclient-cache-4.1.2.jar"/>
+ <jar href="http/httpcore-4.1.2.jar"/>
+ <jar href="http/httpmime-4.1.2.jar"/>
+ <jar href="http/plugin.jar"/>
+ <extension name="newt-all-awt" href="deployment/v1/jogl-awt.jnlp" />
+ </resources>
+
+ <applet-desc
+ name="3D Map"
+ main-class="com.scannerjammer.applet.heightmap.applet.Simple3DLandscapeApplet"
+ width="800"
+ height="600">
+ <param name="texture" value="http://www.chadvernon.com/blog/wp-content/uploads/2007/07/texture.jpg"/>
+ <param name="heightmap" value="http://www.chadvernon.com/blog/wp-content/uploads/2007/07/heightmap.jpg"/>
+ <param name="uploadCGI" value="http://asdf.us/cgi-bin/im/imgrid/upload.cgi"/>
+ <param name="bgColorRedChannel" value="50"/>
+ <param name="bgColorGreenChannel" value="50"/>
+ <param name="bgColorBlueChannel" value="50"/>
+ </applet-desc>
+</jnlp>
diff --git a/frontend/imgrid/dist/deployment/v1/gluegen-rt.jnlp b/frontend/imgrid/dist/deployment/v1/gluegen-rt.jnlp
new file mode 100755
index 0000000..032fdb6
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/gluegen-rt.jnlp
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp href="gluegen-rt.jnlp">
+ <information>
+ <title>GlueGen Runtime v2</title>
+ <vendor>JogAmp Community</vendor>
+ <homepage href="http://jogamp.org/"/>
+ <description>GlueGen Runtime Library</description>
+ <description kind="short">Run-time support classes and native code for applications and libraries built using the GlueGen tool.</description>
+ <offline-allowed/>
+ </information>
+ <update check="background" policy="always"/>
+ <security>
+ <all-permissions/>
+ </security>
+ <resources>
+ <jar href="jar/gluegen-rt.jar" />
+ </resources>
+
+ <resources os="Windows" arch="x86">
+ <nativelib href = "jar/gluegen-rt-natives-windows-i586.jar" />
+ </resources>
+ <resources os="Windows" arch="amd64">
+ <nativelib href = "jar/gluegen-rt-natives-windows-amd64.jar" />
+ </resources>
+ <resources os="Windows" arch="x86_64">
+ <nativelib href = "jar/gluegen-rt-natives-windows-amd64.jar" />
+ </resources>
+ <resources os="SunOS" arch="sparc">
+ <nativelib href = "jar/gluegen-rt-natives-solaris-sparc.jar" />
+ </resources>
+ <resources os="SunOS" arch="sparcv9">
+ <nativelib href = "jar/gluegen-rt-natives-solaris-sparcv9.jar" />
+ </resources>
+ <resources os="SunOS" arch="x86">
+ <nativelib href = "jar/gluegen-rt-natives-solaris-i586.jar" />
+ </resources>
+ <resources os="SunOS" arch="amd64">
+ <nativelib href = "jar/gluegen-rt-natives-solaris-amd64.jar" />
+ </resources>
+ <resources os="SunOS" arch="x86_64">
+ <nativelib href = "jar/gluegen-rt-natives-solaris-amd64.jar" />
+ </resources>
+ <resources os="Linux" arch="i386">
+ <nativelib href = "jar/gluegen-rt-natives-linux-i586.jar" />
+ </resources>
+ <resources os="Linux" arch="x86">
+ <nativelib href = "jar/gluegen-rt-natives-linux-i586.jar" />
+ </resources>
+ <resources os="Linux" arch="amd64">
+ <nativelib href = "jar/gluegen-rt-natives-linux-amd64.jar" />
+ </resources>
+ <resources os="Linux" arch="x86_64">
+ <nativelib href = "jar/gluegen-rt-natives-linux-amd64.jar" />
+ </resources>
+ <resources os="Mac OS X" arch="i386">
+ <nativelib href = "jar/gluegen-rt-natives-macosx-universal.jar" />
+ </resources>
+ <resources os="Mac OS X" arch="x86_64">
+ <nativelib href = "jar/gluegen-rt-natives-macosx-universal.jar" />
+ </resources>
+
+ <component-desc />
+</jnlp>
diff --git a/frontend/imgrid/dist/deployment/v1/jar/applet-launcher.jar b/frontend/imgrid/dist/deployment/v1/jar/applet-launcher.jar
new file mode 100755
index 0000000..53e0742
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/applet-launcher.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-linux-amd64.jar b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-linux-amd64.jar
new file mode 100755
index 0000000..eaf6bad
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-linux-amd64.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-linux-i586.jar b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-linux-i586.jar
new file mode 100755
index 0000000..6c21412
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-linux-i586.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-macosx-ppc.jar b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-macosx-ppc.jar
new file mode 100755
index 0000000..2144ebf
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-macosx-ppc.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-macosx-universal.jar b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-macosx-universal.jar
new file mode 100755
index 0000000..8a5efb4
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-macosx-universal.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-amd64.jar b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-amd64.jar
new file mode 100755
index 0000000..1ad7faa
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-amd64.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-i586.jar b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-i586.jar
new file mode 100755
index 0000000..dbadb72
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-i586.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-sparc.jar b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-sparc.jar
new file mode 100755
index 0000000..02367c7
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-sparc.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-sparcv9.jar b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-sparcv9.jar
new file mode 100755
index 0000000..da0ff3a
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-solaris-sparcv9.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-windows-amd64.jar b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-windows-amd64.jar
new file mode 100755
index 0000000..e9a3ffe
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-windows-amd64.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-windows-i586.jar b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-windows-i586.jar
new file mode 100755
index 0000000..bb00056
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt-natives-windows-i586.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt.jar b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt.jar
new file mode 100755
index 0000000..c995b22
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/gluegen-rt.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-linux-amd64.jar b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-linux-amd64.jar
new file mode 100755
index 0000000..64d95a0
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-linux-amd64.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-linux-i586.jar b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-linux-i586.jar
new file mode 100755
index 0000000..9370828
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-linux-i586.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-macosx-ppc.jar b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-macosx-ppc.jar
new file mode 100755
index 0000000..9495e36
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-macosx-ppc.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-macosx-universal.jar b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-macosx-universal.jar
new file mode 100755
index 0000000..f2186cb
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-macosx-universal.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-amd64.jar b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-amd64.jar
new file mode 100755
index 0000000..cd617f9
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-amd64.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-i586.jar b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-i586.jar
new file mode 100755
index 0000000..4209a9d
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-i586.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-sparc.jar b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-sparc.jar
new file mode 100755
index 0000000..b25fdcd
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-sparc.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-sparcv9.jar b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-sparcv9.jar
new file mode 100755
index 0000000..b60e31f
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-solaris-sparcv9.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-windows-amd64.jar b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-windows-amd64.jar
new file mode 100755
index 0000000..af8b5f9
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-windows-amd64.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-windows-i586.jar b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-windows-i586.jar
new file mode 100755
index 0000000..81c1cdf
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/jogl-natives-windows-i586.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/jogl.jar b/frontend/imgrid/dist/deployment/v1/jar/jogl.jar
new file mode 100755
index 0000000..ef96967
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/jogl.jar
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jar/testKeys b/frontend/imgrid/dist/deployment/v1/jar/testKeys
new file mode 100755
index 0000000..7eb9ceb
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jar/testKeys
Binary files differ
diff --git a/frontend/imgrid/dist/deployment/v1/jogl-awt.jnlp b/frontend/imgrid/dist/deployment/v1/jogl-awt.jnlp
new file mode 100755
index 0000000..8c86404
--- /dev/null
+++ b/frontend/imgrid/dist/deployment/v1/jogl-awt.jnlp
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp href="jogl-awt.jnlp">
+ <information>
+ <title>Java(tm) Binding to the OpenGL(r) API (ALL.AWT)</title>
+ <vendor>JogAmp Community</vendor>
+ <homepage href="http://jogamp.org/"/>
+ <description>Java Binding to the OpenGL API - 2.0.0 - ALL.AWT</description>
+ <description kind="short">Java programming language binding for the OpenGL 3D graphics API - ALL.AWT</description>
+ <offline-allowed/>
+ </information>
+ <update check="background" policy="always"/>
+ <security>
+ <all-permissions/>
+ </security>
+ <resources>
+ <jar href="jar/jogl.jar" />
+
+ <extension name="gluegen-rt" href="gluegen-rt.jnlp" />
+ </resources>
+
+ <resources os="Windows" arch="x86">
+ <nativelib href = "jar/jogl-natives-windows-i586.jar" />
+ </resources>
+ <resources os="Windows" arch="amd64">
+ <nativelib href = "jar/jogl-natives-windows-amd64.jar" />
+ </resources>
+ <resources os="Windows" arch="x86_64">
+ <nativelib href = "jar/jogl-natives-windows-amd64.jar" />
+ </resources>
+ <resources os="SunOS" arch="sparc">
+ <nativelib href = "jar/jogl-natives-solaris-sparc.jar" />
+ </resources>
+ <resources os="SunOS" arch="sparcv9">
+ <nativelib href = "jar/jogl-natives-solaris-sparcv9.jar" />
+ </resources>
+ <resources os="SunOS" arch="x86">
+ <nativelib href = "jar/jogl-natives-solaris-i586.jar" />
+ </resources>
+ <resources os="SunOS" arch="amd64">
+ <nativelib href = "jar/jogl-natives-solaris-amd64.jar" />
+ </resources>
+ <resources os="SunOS" arch="x86_64">
+ <nativelib href = "jar/jogl-natives-solaris-amd64.jar" />
+ </resources>
+ <resources os="Linux" arch="i386">
+ <nativelib href = "jar/jogl-natives-linux-i586.jar" />
+ </resources>
+ <resources os="Linux" arch="x86">
+ <nativelib href = "jar/jogl-natives-linux-i586.jar" />
+ </resources>
+ <resources os="Linux" arch="amd64">
+ <nativelib href = "jar/jogl-natives-linux-amd64.jar" />
+ </resources>
+ <resources os="Linux" arch="x86_64">
+ <nativelib href = "jar/jogl-natives-linux-amd64.jar" />
+ </resources>
+ <resources os="Linux" arch="arm">
+ <nativelib href = "jar/jogl-natives-linux-armv7.jar" />
+ </resources>
+ <resources os="Linux" arch="armv7">
+ <nativelib href = "jar/jogl-natives-linux-armv7.jar" />
+ </resources>
+ <resources os="Mac OS X" arch="i386">
+ <nativelib href = "jar/jogl-natives-macosx-universal.jar" />
+ </resources>
+ <resources os="Mac OS X" arch="x86_64">
+ <nativelib href = "jar/jogl-natives-macosx-universal.jar" />
+ </resources>
+
+ <component-desc />
+</jnlp>
diff --git a/frontend/imgrid/dist/http/commons-codec-1.4.jar b/frontend/imgrid/dist/http/commons-codec-1.4.jar
new file mode 100755
index 0000000..16cd33a
--- /dev/null
+++ b/frontend/imgrid/dist/http/commons-codec-1.4.jar
Binary files differ
diff --git a/frontend/imgrid/dist/http/commons-logging-1.1.1.jar b/frontend/imgrid/dist/http/commons-logging-1.1.1.jar
new file mode 100755
index 0000000..1fe7176
--- /dev/null
+++ b/frontend/imgrid/dist/http/commons-logging-1.1.1.jar
Binary files differ
diff --git a/frontend/imgrid/dist/http/httpclient-4.1.2.jar b/frontend/imgrid/dist/http/httpclient-4.1.2.jar
new file mode 100755
index 0000000..6a61ea2
--- /dev/null
+++ b/frontend/imgrid/dist/http/httpclient-4.1.2.jar
Binary files differ
diff --git a/frontend/imgrid/dist/http/httpclient-cache-4.1.2.jar b/frontend/imgrid/dist/http/httpclient-cache-4.1.2.jar
new file mode 100755
index 0000000..713decb
--- /dev/null
+++ b/frontend/imgrid/dist/http/httpclient-cache-4.1.2.jar
Binary files differ
diff --git a/frontend/imgrid/dist/http/httpcore-4.1.2.jar b/frontend/imgrid/dist/http/httpcore-4.1.2.jar
new file mode 100755
index 0000000..343e174
--- /dev/null
+++ b/frontend/imgrid/dist/http/httpcore-4.1.2.jar
Binary files differ
diff --git a/frontend/imgrid/dist/http/httpmime-4.1.2.jar b/frontend/imgrid/dist/http/httpmime-4.1.2.jar
new file mode 100755
index 0000000..cce60ef
--- /dev/null
+++ b/frontend/imgrid/dist/http/httpmime-4.1.2.jar
Binary files differ
diff --git a/frontend/imgrid/dist/http/plugin.jar b/frontend/imgrid/dist/http/plugin.jar
new file mode 100755
index 0000000..ee4792a
--- /dev/null
+++ b/frontend/imgrid/dist/http/plugin.jar
Binary files differ
diff --git a/frontend/imgrid/dist/index.html b/frontend/imgrid/dist/index.html
new file mode 100755
index 0000000..76ed3ab
--- /dev/null
+++ b/frontend/imgrid/dist/index.html
@@ -0,0 +1,24 @@
+<html>
+<head>
+</head>
+<body>
+<applet code="org.jdesktop.applet.util.JNLPAppletLauncher"
+ width=800
+ height=600
+ archive="deployment/v1/jar/applet-launcher.jar,
+ deployment/v1/jar/gluegen-rt.jar,
+ deployment/v1/jar/jogl.all.jar,
+ 3dmap.jar">
+ <param name="codebase_lookup" value="false">
+ <param name="subapplet.classname" value="com.scannerjammer.applet.heightmap.applet.Simple3DLandscapeApplet">
+ <param name="subapplet.displayname" value="3D Map">
+ <param name="noddraw.check" value="true">
+ <param name="progressbar" value="true">
+ <param name="jnlpNumExtensions" value="1">
+ <param name="jnlpExtension1"
+ value="deployment/v1/jogl-awt.jnlp">
+ <param name="java_arguments" value="-Dsun.java2d.noddraw=true">
+ <param name="jnlp_href" value="3dmap.jnlp">
+</applet>
+</body>
+</html> \ No newline at end of file
diff --git a/frontend/imgrid/dist/temp/HeightMap.jpg b/frontend/imgrid/dist/temp/HeightMap.jpg
new file mode 100755
index 0000000..ccee392
--- /dev/null
+++ b/frontend/imgrid/dist/temp/HeightMap.jpg
Binary files differ
diff --git a/frontend/imgrid/dist/temp/Texture.jpg b/frontend/imgrid/dist/temp/Texture.jpg
new file mode 100755
index 0000000..eef3866
--- /dev/null
+++ b/frontend/imgrid/dist/temp/Texture.jpg
Binary files differ
diff --git a/frontend/imgrid/dist/testKeys b/frontend/imgrid/dist/testKeys
new file mode 100755
index 0000000..7eb9ceb
--- /dev/null
+++ b/frontend/imgrid/dist/testKeys
Binary files differ
diff --git a/frontend/imgrid/dist_embedded/3DMapAllWin.jar b/frontend/imgrid/dist_embedded/3DMapAllWin.jar
new file mode 100755
index 0000000..7ee9c3d
--- /dev/null
+++ b/frontend/imgrid/dist_embedded/3DMapAllWin.jar
Binary files differ
diff --git a/frontend/imgrid/dist_embedded/index.html b/frontend/imgrid/dist_embedded/index.html
new file mode 100755
index 0000000..828945e
--- /dev/null
+++ b/frontend/imgrid/dist_embedded/index.html
@@ -0,0 +1,16 @@
+<html>
+ <body bgcolor="#E6E6FA">
+ <applet code="com.scannerjammer.applet.heightmap.applet.Embedded3DLandscapeApplet.class"
+ archive="3DMapAllWin.jar"
+ name="3D Landscape"
+ width="800"
+ height="600">
+ <param name="bgColorRedChannel" value="255">
+ <param name="texture" value="http://www.chadvernon.com/blog/wp-content/uploads/2007/07/texture.jpg">
+ <param name="bgColorBlueChannel" value="255">
+ <param name="bgColorGreenChannel" value="255">
+ <param name="heightmap" value="http://www.chadvernon.com/blog/wp-content/uploads/2007/07/heightmap.jpg">
+ <param name="uploadCGI" value="http://localhost/cgi-bin/upload.cgi">
+ </applet>
+ </body>
+</html>
diff --git a/frontend/imgrid/favicon.ico b/frontend/imgrid/favicon.ico
new file mode 100755
index 0000000..59b9680
--- /dev/null
+++ b/frontend/imgrid/favicon.ico
Binary files differ
diff --git a/frontend/imgrid/greatgrids/blackplant.png b/frontend/imgrid/greatgrids/blackplant.png
new file mode 100755
index 0000000..e78b547
--- /dev/null
+++ b/frontend/imgrid/greatgrids/blackplant.png
Binary files differ
diff --git a/frontend/imgrid/greatgrids/copy.html b/frontend/imgrid/greatgrids/copy.html
new file mode 100755
index 0000000..9607758
--- /dev/null
+++ b/frontend/imgrid/greatgrids/copy.html
@@ -0,0 +1,327 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<title>the difference - interactive DHTML</title>
+<meta http-equiv="imagetoolbar" content="no">
+<link href='http://fonts.googleapis.com/css?family=Tienne:400,700' rel='stylesheet' type='text/css'>
+<style type="text/css">
+ html {
+ overflow: hidden;
+ }
+ body {
+ margin: 0px;
+ padding: 0px;
+ background: aqua;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ }
+ #screen {
+ position:absolute;
+ left: 00%;
+ top: 0%;
+ width: 100%;
+ height: 100%;
+ background: aqua;
+ overflow: hidden;
+ }
+ #screen img {
+ position: absolute;
+ cursor: pointer;
+ left: -4000px;
+ filter: fliph flipv;
+ -ms-interpolation-mode:nearest-neighbor;
+ }
+ #screen canvas {
+ position: absolute;
+ cursor: pointer;
+ width: 0px;
+ border-style:outset;
+ border-width:8px;
+ border-color:black;
+ }
+ #b1
+ {
+ position:absolute;
+ width:100%;
+ height:10%;
+ background-color:red;
+ background-image:url(http://ghghgh.us/timb/pepper3.gif);
+ }
+ #b2
+ {
+ position:absolute;
+ top:100px;
+ width:100%;
+ font-family: 'Tienne', serif;
+ color:#8B8B7A;
+ text-shadow: 0px -15px 0 bisque;
+ text-shadow: 20px 30px 11px #CDC5BF;
+ font-size:40px;
+ padding-top:20px;
+ padding-bottom:20px;
+ text-align:center;
+ height:100px;
+ background-color:whitesmoke;
+ bottom:0px;
+ }
+ #b3
+ {
+ position:fixed:
+ top:1000px;
+ height:1000px;
+ width:100%;
+ text-align:center;
+ font-style:georgia;
+ font-size:20px;
+ color:black;
+ text-transform:uppercase;
+ background-color:azure;
+ background-image:url(http://ghghgh.us/timb/pepper2.gif);
+ }
+ img
+ {
+ background-color:whitesmoke;
+ }
+ a {text-decoration: none;color:#333;}
+ a:hover {text-decoration: none;background:#ff8000;color:#fff;}
+ a:visited {text-decoration: none;color:#333;}
+ a:visited:hover {text-decoration: none;background:#ff8000;color:#fff;}
+</style>
+<!--special thanks to Gerard Ferrandez at http://www.dhteumeuleu.com for his image rolodex script-->
+
+<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
+<script type="text/javascript">
+var car = {
+ scr : 0,
+ img : 0,
+ xm : 0,
+ ym : 0,
+ xmb : 0,
+ ymb : 0,
+ drag : false,
+ cosY : 0,
+ cosX : 0,
+ sinY : 0,
+ sinX : 0,
+ xd : 0,
+ yd : -10,
+// arr : [],
+ run : function () {
+ /* ==== rotation speed ==== */
+ var Ay = car.xd / (car.scr.offsetWidth * .2);
+ var Ax = car.yd / (car.scr.offsetHeight * .2);
+ /* ==== vertical / horizontal friction ==== */
+ if(!car.drag){
+ if(Math.abs(car.xd) > Math.abs(car.yd)){
+ car.xd *= .99;
+ car.yd *= .95;
+ } else {
+ car.xd *= .95;
+ car.yd *= .99;
+ }
+ }
+ /* ==== rotation angles ==== */
+ car.cosY = Math.cos(Ay);
+ car.cosX = Math.cos(Ax);
+ car.sinY = Math.sin(Ay);
+ car.sinX = Math.sin(Ax);
+ /* ==== animate images ==== */
+ for(var i = 0; i < 8; i++)
+ {
+ car.img[i].rotate()
+ };
+ /* ==== loop ==== */
+ setTimeout(car.run, 16);
+ },
+
+ /* ==== mouse mov ==== */
+ mouse : function (e) {
+ this.xm = e.clientX;
+ this.ym = -e.clientY;
+ if(this.drag){
+ var homeboy = this.img
+ this.xd = this.xm - this.xmb;
+ this.yd = this.ym - this.ymb;
+ }
+ this.xmb = this.xm;
+ this.ymb = this.ym;
+ },
+
+ /* ==== dim screen ==== */
+ resize : function () {
+ car.nw = car.scr.offsetWidth;
+ car.nh = car.scr.offsetHeight;
+ },
+
+ /* ==== init script ==== */
+ init : function () {
+ /* ==== window mousemove event ==== */
+ document.onmousemove = function (e) {
+ if (window.event) e = window.event;
+ car.mouse(e);
+ // $('#error').append('x');
+ }
+ /* ==== window onresize event ==== */
+ onresize = car.resize;
+ /* ==== init images ==== */
+ this.scr = document.getElementById('screen');
+ var img = this.scr.getElementsByClassName('images');
+ this.img = [];
+ car.resize();
+ var k = 0;
+
+ for(var xi = -1; xi <= 1; xi+=2) {
+ for(var yi = -1; yi <= 1; yi+=2) {
+ for(var zi = -1; zi <= 1; zi+=2) {
+ var o = img[k++]
+ /* ==== replace images by canvas ==== */
+ if (document.createElement("canvas").getContext) {
+ var src = o;
+ o = document.createElement("canvas");
+ if (k<=8){
+ o.id = img[k-1].getAttribute('src')}
+ o.canvas = true;
+ /* ==== flip function ==== */
+ o.flip = function (fx, fy) {
+ var context = this.getContext("2d");
+ context.translate(fx<0?this.w:0, fy<0?this.h:0);
+ context.scale(fx, fy);
+ context.drawImage(this.img, 0, 0, this.w, this.h);
+ }
+ o.img = src;
+ this.scr.appendChild(o);
+ }
+ /* ==== HTML Objects ==== */
+ this.img.push(o);
+ o.css = o.style;
+ o.x3d = xi;
+ o.y3d = yi;
+ o.z3d = zi;
+ o.py = 0;
+ o.px = 0;
+ o.onselectstart = function () { return false; }
+ o.ondrag = function () { return false; }
+ o.onmousedown = function () {
+ car.drag = true;
+ car.xd = 0;
+ car.yd = 0;
+ this.css.cursor = "move";
+ // if(reference)
+ // {
+ // $('#'+reference.toString()).css('border-color','purple');
+ // }
+ $('canvas').css('border-color','black')
+ document.getElementById('error').innerHTML = this.getAttribute('id').toString()
+ $(this).css('border-color','red');
+ //reference = this.getAttribute('id').toString();
+ //$('#error').append(reference);
+ // car.arr.push(reference)
+ // var thelast = car.arr[car.arr.length-2]
+ if (thelast)
+ {
+ $('#error').append('#'+thelast)
+ }
+ // $('#'+thelast).css('border-color','purple')
+ $('#error').click(function(){$('#error').html("<img src='"+reference.toString()+"'></img>")});
+// $('#error').click(function(){$('#b2').append("<img src='"+reference+"'></img>")});
+ return false;
+
+ }
+ o.onmouseout = function () {car.drag = false; this.css.cursor = "pointer"; return false; }
+ o.onmouseup = function () {car.drag = false; this.css.cursor = "pointer"; return false; }
+ o.rotate = function () {
+ /* ==== trigo ==== */
+ var tz = this.z3d * car.cosY - this.x3d * car.sinY;
+ this.x3d = this.z3d * car.sinY + this.x3d * car.cosY;
+ this.z3d = this.y3d * car.sinX + tz * car.cosX;
+ this.y3d = this.y3d * car.cosX - tz * car.sinX;
+ var zf = 1 / (this.z3d / 10 + 1);
+ var x2d = this.x3d * zf * car.nw * .2;
+ var y2d = this.y3d * zf * car.nh * .2;
+ var w2d = Math.abs(x2d * 1.6);
+ var h2d = Math.abs(y2d * 1.6);
+ if (this.loaded) {
+ /* ==== HTML animation ==== */
+ this.css.left = Math.round(car.nw * .5 - x2d - w2d * .5) + 'px';
+ this.css.top = Math.round(car.nh * .5 - y2d - h2d * .5) + 'px';
+ this.css.width = Math.round(w2d) + 'px';
+ this.css.height = Math.round(h2d) + 'px';
+ this.css.zIndex = Math.round(zf * 100);
+ /* $('body').click(function()
+ {
+ // $(this).attr('img');
+ bill = 'howdy'
+ $('#error').html(bill);
+ });*/
+ // $('#error').append(this.img);
+ /* ==== flipv ==== */
+ if ((y2d < 0) != this.py) {
+ this.py = (y2d < 0);
+ if (this.canvas)
+ this.flip(1, -1);
+ else if (this.filters)
+ this.filters[1].enabled = (y2d < 0) ? "true" : "false";
+ }
+ /* ==== fliph ==== */
+ if ((x2d < 0) != this.px) {
+ this.px = (x2d < 0);
+ if (this.canvas)
+ this.flip(-1, 1);
+ else if (this.filters)
+ this.filters[0].enabled = (x2d < 0) ? "true" : "false";
+ }
+ } else {
+ /* ==== load image ==== */
+ if ((this.canvas && this.img.complete) || this.complete) {
+ this.loaded = true;
+ if (this.canvas) {
+ this.w = this.img.width;
+ this.h = this.img.height;
+ this.width = this.w;
+ this.height = this.h;
+ var context = this.getContext("2d");
+ context.drawImage(this.img, 0, 0, this.w, this.h);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ this.run();
+ }
+}
+</script>
+</head>
+
+<body>
+
+<div id="screen">
+ <div id="b1"></div>
+ <div id="b2">WELCOME TO THE PHOTOBLASTER GREAT GRIDS GALLERY...THESE ARE RECENT GRIDS CREATED BY PEOPLE USING HTTP://ASDF.US/IMGRID</div>
+ <div id="b3">
+ <br>
+ </div>
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg1.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg2.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg3.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg4.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg5.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg6.png">
+ <img class='images' alt="by Pepper" src="images/gg7.png">
+ <img class='images' alt="" src="images/gg6.png">
+</div>
+<div id='error' style='border-style:solid; border-width:10px; border-color:green; background-color:red; height:100px;width100px;position:fixed;left:100px; top:20px;'>hello</div>
+<script type="text/javascript">
+ /* ==== start ==== */
+ setTimeout(function() {
+ car.init();
+ }, 1000);
+</script>
+
+<script type='text/javascript'>
+</script>
+</body>
+</html>
+
diff --git a/frontend/imgrid/greatgrids/facebookimage.jpg b/frontend/imgrid/greatgrids/facebookimage.jpg
new file mode 100755
index 0000000..175f825
--- /dev/null
+++ b/frontend/imgrid/greatgrids/facebookimage.jpg
Binary files differ
diff --git a/frontend/imgrid/greatgrids/facebookimage.png b/frontend/imgrid/greatgrids/facebookimage.png
new file mode 100755
index 0000000..4d75bc0
--- /dev/null
+++ b/frontend/imgrid/greatgrids/facebookimage.png
Binary files differ
diff --git a/frontend/imgrid/greatgrids/gallery.html b/frontend/imgrid/greatgrids/gallery.html
new file mode 100755
index 0000000..4489a99
--- /dev/null
+++ b/frontend/imgrid/greatgrids/gallery.html
@@ -0,0 +1,404 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<title>the difference - interactive DHTML</title>
+<meta http-equiv="imagetoolbar" content="no">
+<link href='http://fonts.googleapis.com/css?family=Tienne:400,700' rel='stylesheet' type='text/css'>
+<style type="text/css">
+ html {
+ overflow: hidden;
+ }
+ body {
+ margin: 0px;
+ padding: 0px;
+ background: aqua;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ }
+ #curtain{
+ position:fixed;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ background-color:rgba(255,255,255,0.8);
+ z-index:1500;
+ display:none;
+ }
+ #details
+ {
+ position:absolute;
+ width:800px;
+ height:60%;
+ border-style:solid;
+ border-width:1px;
+ background-color:white;
+ margin:0 auto;
+ border-color:black;
+ top:0;
+ left:0;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+ -moz-opacity: 1.0;
+ -khtml-opacity: 1.0;
+ opacity:1;
+
+ }
+ #imagedetail
+ {
+ position:absolute;
+ margin:0 auto;
+ border-style:outset;
+ border-color:black;
+ border-width:0px;
+ display:block;
+ max-height:900px;
+ max-width:900px;
+ opacity:1;
+ }
+ #info
+ {
+ font-size:40px;
+ font-family:helvetica;
+ text-transform:uppercase;
+ display:block;
+ padding:5%;
+ }
+ #screen {
+ position:absolute;
+ left: 00%;
+ top: 0%;
+ width: 100%;
+ height: 100%;
+ background: aqua;
+ overflow: hidden;
+ }
+ #screen img {
+ position: absolute;
+ cursor: pointer;
+ left: -4000px;
+ filter: fliph flipv;
+ -ms-interpolation-mode:nearest-neighbor;
+ }
+ #screen canvas {
+ position: absolute;
+ cursor: pointer;
+ width: 0px;
+ border-style:outset;
+ border-width:8px;
+ border-color:black;
+ }
+ #b1
+ {
+ position:absolute;
+ width:100%;
+ height:10%;
+ background-color:red;
+ background-image:url(http://ghghgh.us/timb/pepper3.gif);
+ }
+ #b2
+ {
+ position:absolute;
+ top:100px;
+ width:100%;
+ font-family: 'Tienne', serif;
+ color:#8B8B7A;
+ text-shadow: 0px -15px 0 bisque;
+ text-shadow: 20px 30px 11px #CDC5BF;
+ font-size:40px;
+ padding-top:20px;
+ padding-bottom:20px;
+ text-align:center;
+ height:100px;
+ background-color:whitesmoke;
+ bottom:0px;
+ }
+ #b3
+ {
+ position:fixed:
+ top:1000px;
+ height:1000px;
+ width:100%;
+ text-align:center;
+ font-style:georgia;
+ font-size:20px;
+ color:black;
+ text-transform:uppercase;
+ background-color:azure;
+ background-image:url(http://ghghgh.us/timb/pepper2.gif);
+ }
+ a {text-decoration: none;color:#333;}
+ a:hover {text-decoration: none;background:#ff8000;color:#fff;}
+ a:visited {text-decoration: none;color:#333;}
+ a:visited:hover {text-decoration: none;background:#ff8000;color:#fff;}
+</style>
+<!--special thanks to Gerard Ferrandez at http://www.dhteumeuleu.com for his image rolodex script-->
+
+<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
+<script type="text/javascript">
+var car = {
+ scr : 0,
+ img : 0,
+ xm : 0,
+ ym : 0,
+ xmb : 0,
+ ymb : 0,
+ drag : false,
+ cosY : 0,
+ cosX : 0,
+ sinY : 0,
+ sinX : 0,
+ xd : 0,
+ yd : -10,
+ ref : "",
+ run : function () {
+ /* ==== rotation speed ==== */
+ var Ay = car.xd / (car.scr.offsetWidth * .2);
+ var Ax = car.yd / (car.scr.offsetHeight * .2);
+ /* ==== vertical / horizontal friction ==== */
+ if(!car.drag){
+ if(Math.abs(car.xd) > Math.abs(car.yd)){
+ car.xd *= .99;
+ car.yd *= .95;
+ } else {
+ car.xd *= .95;
+ car.yd *= .99;
+ }
+ }
+ /* ==== rotation angles ==== */
+ car.cosY = Math.cos(Ay);
+ car.cosX = Math.cos(Ax);
+ car.sinY = Math.sin(Ay);
+ car.sinX = Math.sin(Ax);
+ /* ==== animate images ==== */
+ for(var i = 0; i < 8; i++)
+ {
+ car.img[i].rotate()
+ };
+ /* ==== loop ==== */
+ setTimeout(car.run, 16);
+ },
+
+ /* ==== mouse mov ==== */
+ mouse : function (e) {
+ this.xm = e.clientX;
+ this.ym = -e.clientY;
+ if(this.drag){
+ var homeboy = this.img
+ this.xd = this.xm - this.xmb;
+ this.yd = this.ym - this.ymb;
+ }
+ this.xmb = this.xm;
+ this.ymb = this.ym;
+ },
+
+ /* ==== dim screen ==== */
+ resize : function () {
+ car.nw = car.scr.offsetWidth;
+ car.nh = car.scr.offsetHeight;
+ },
+
+ /* ==== init script ==== */
+ init : function () {
+ /* ==== window mousemove event ==== */
+ document.onmousemove = function (e) {
+ if (window.event) e = window.event;
+ car.mouse(e);
+ }
+ /* ==== window onresize event ==== */
+ onresize = car.resize;
+ /* ==== init images ==== */
+ this.scr = document.getElementById('screen');
+ var img = this.scr.getElementsByClassName('images');
+ this.img = [];
+ car.resize();
+ var k = 0;
+
+ for(var xi = -1; xi <= 1; xi+=2) {
+ for(var yi = -1; yi <= 1; yi+=2) {
+ for(var zi = -1; zi <= 1; zi+=2) {
+ var o = img[k++]
+ /* ==== replace images by canvas ==== */
+ if (document.createElement("canvas").getContext) {
+ var src = o;
+ o = document.createElement("canvas");
+ if (k<=8){
+ o.id = img[k-1].getAttribute('src')}
+ o.canvas = true;
+ /* ==== flip function ==== */
+ o.flip = function (fx, fy) {
+ var context = this.getContext("2d");
+ context.translate(fx<0?this.w:0, fy<0?this.h:0);
+ context.scale(fx, fy);
+ context.drawImage(this.img, 0, 0, this.w, this.h);
+ }
+ o.img = src;
+ this.scr.appendChild(o);
+ }
+ /* ==== HTML Objects ==== */
+ this.img.push(o);
+ o.css = o.style;
+ o.x3d = xi;
+ o.y3d = yi;
+ o.z3d = zi;
+ o.py = 0;
+ o.px = 0;
+ o.onselectstart = function () { return false; }
+ o.ondrag = function () { return false; }
+ o.onmousedown = function () {
+ car.drag = true;
+ car.xd = 0;
+ car.yd = 0;
+ this.css.cursor = "move";
+ $('canvas').css('border-color','black')
+ // document.getElementById('error').innerHTML = this.getAttribute('id').toString()
+ car.ref = this.getAttribute('id').toString()
+ $(this).css('border-color','red');
+ return false;
+
+ }
+ o.onmouseout = function () {car.drag = false; this.css.cursor = "pointer"; return false; }
+ o.onmouseup = function () {car.drag = false; this.css.cursor = "pointer"; return false; }
+ o.rotate = function () {
+ /* ==== trigo ==== */
+ var tz = this.z3d * car.cosY - this.x3d * car.sinY;
+ this.x3d = this.z3d * car.sinY + this.x3d * car.cosY;
+ this.z3d = this.y3d * car.sinX + tz * car.cosX;
+ this.y3d = this.y3d * car.cosX - tz * car.sinX;
+ var zf = 1 / (this.z3d / 10 + 1);
+ var x2d = this.x3d * zf * car.nw * .2;
+ var y2d = this.y3d * zf * car.nh * .2;
+ var w2d = Math.abs(x2d * 1.6);
+ var h2d = Math.abs(y2d * 1.6);
+ if (this.loaded) {
+ /* ==== HTML animation ==== */
+ this.css.left = Math.round(car.nw * .5 - x2d - w2d * .5) + 'px';
+ this.css.top = Math.round(car.nh * .5 - y2d - h2d * .5) + 'px';
+ this.css.width = Math.round(w2d) + 'px';
+ this.css.height = Math.round(h2d) + 'px';
+ this.css.zIndex = Math.round(zf * 100);
+ /* ==== flipv ==== */
+ if ((y2d < 0) != this.py) {
+ this.py = (y2d < 0);
+ if (this.canvas)
+ this.flip(1, -1);
+ else if (this.filters)
+ this.filters[1].enabled = (y2d < 0) ? "true" : "false";
+ }
+ /* ==== fliph ==== */
+ if ((x2d < 0) != this.px) {
+ this.px = (x2d < 0);
+ if (this.canvas)
+ this.flip(-1, 1);
+ else if (this.filters)
+ this.filters[0].enabled = (x2d < 0) ? "true" : "false";
+ }
+ } else {
+ /* ==== load image ==== */
+ if ((this.canvas && this.img.complete) || this.complete) {
+ this.loaded = true;
+ if (this.canvas) {
+ this.w = this.img.width;
+ this.h = this.img.height;
+ this.width = this.w;
+ this.height = this.h;
+ var context = this.getContext("2d");
+ context.drawImage(this.img, 0, 0, this.w, this.h);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ this.run();
+ }
+}
+</script>
+</head>
+
+<body>
+
+ <div id='curtain'>
+ <div id='details'>
+<span id="info">BLAH BLAH BLAH</span>
+<div id="detailwrapper"><img id='imagedetail'></img></div>
+ </div>
+</div>
+<div id="screen">
+ <div id="b1"></div>
+ <div id="b2">WELCOME TO THE PHOTOBLASTER GREAT GRIDS GALLERY...THESE ARE RECENT GRIDS CREATED USING <a href='http://asdf.us/imgrid'>HTTP://ASDF.US/IMGRID</a></div>
+ <div id="b3">
+ <br>
+ </div>
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg1.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg2.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg3.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg4.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg5.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg6.png">
+ <img class='images' alt="by Pepper" src="images/gg7.png">
+ <img class='images' alt="" src="images/gg6.png">
+</div>
+<div id='error' style= 'color:red; font-size:40px; height:100px;width100px;position:fixed;left:100px; top:20px;'>CLICK TO ENLARGE</div>
+<script type="text/javascript">
+ /* ==== start ==== */
+ setTimeout(function() {
+ car.init();
+ }, 1000);
+</script>
+
+<script type='text/javascript'>
+var imagedict = {
+ "images/gg1.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg2.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg3.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg4.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg5.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg6.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg7.png":"By Pepper"
+ }
+function centerimage()
+ {
+ $('#imagedetail').load(function()
+ {
+ refpoint = $('#imagedetail').attr('src')
+ newrefpoint = imagedict[refpoint]
+ $('#info').html(newrefpoint)
+ $('#info').append("<img src='blackplant.png' style='position:fixed; z-index:2000; top:300px; left:50px; height:200px;'></img>")
+ detailwidth = $('#imagedetail').width()
+ detailheight = $('#imagedetail').height()
+ theborder = 2
+ centerpointone = parseFloat(detailwidth)/2
+ centerpointtwo = parseFloat(detailheight)/2
+ leftpos = window.innerWidth/2-centerpointone-theborder
+ toppos = window.innerHeight/2-centerpointtwo-theborder
+ wrapperposT = (toppos-20).toString()+'px'
+ wrapperposL = (leftpos-20).toString()+'px'
+ wrapperheight = detailheight+40
+ wrapperwidth = detailwidth+40
+ toppos = toppos.toString()+'px'
+ leftpos = leftpos.toString()+'px'
+ $('#imagedetail').css({top:20,left:20})
+ $('#detailwrapper').css({'position':'absolute','z-index':'1499','width':wrapperwidth,'height':wrapperheight,'top':wrapperposT,'left':wrapperposL,'background-color':'white','border-style':'solid','border-color':'black','border-width':'1px'});
+ // $('#info').append(wrapperposT+'wrapperposT');
+
+ })
+ }
+function curtainfunction()
+ {
+ centerimage()
+ $('#curtain').toggle();
+ $('#imagedetail').attr('src',car.ref);
+ }
+$('#curtain').click(function(){$('#curtain').toggle("slow")})
+
+$('#error').click(function()
+ {
+ curtainfunction()
+ })
+$('canvas').dblclick(function(){curtainfunction()})
+</script>
+</body>
+</html>
+
diff --git a/frontend/imgrid/greatgrids/greatgrids.ico b/frontend/imgrid/greatgrids/greatgrids.ico
new file mode 100755
index 0000000..02b95bb
--- /dev/null
+++ b/frontend/imgrid/greatgrids/greatgrids.ico
Binary files differ
diff --git a/frontend/imgrid/greatgrids/grids.ico b/frontend/imgrid/greatgrids/grids.ico
new file mode 100755
index 0000000..e84f586
--- /dev/null
+++ b/frontend/imgrid/greatgrids/grids.ico
Binary files differ
diff --git a/frontend/imgrid/greatgrids/grids.png b/frontend/imgrid/greatgrids/grids.png
new file mode 100755
index 0000000..7295042
--- /dev/null
+++ b/frontend/imgrid/greatgrids/grids.png
Binary files differ
diff --git a/frontend/imgrid/greatgrids/hey.html b/frontend/imgrid/greatgrids/hey.html
new file mode 100755
index 0000000..8de70fb
--- /dev/null
+++ b/frontend/imgrid/greatgrids/hey.html
@@ -0,0 +1,300 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<title>the difference - interactive DHTML</title>
+<meta http-equiv="imagetoolbar" content="no">
+<link href='http://fonts.googleapis.com/css?family=Tienne:400,700' rel='stylesheet' type='text/css'>
+<style type="text/css">
+ html {
+ overflow: hidden;
+ }
+ body {
+ margin: 0px;
+ padding: 0px;
+ background: aqua;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ }
+ #screen {
+ position:absolute;
+ left: 00%;
+ top: 0%;
+ width: 100%;
+ height: 100%;
+ background: aqua;
+ overflow: hidden;
+ }
+ #screen img {
+ position: absolute;
+ cursor: pointer;
+ left: -4000px;
+ filter: fliph flipv;
+ -ms-interpolation-mode:nearest-neighbor;
+ }
+ #screen canvas {
+ position: absolute;
+ cursor: pointer;
+ width: 0px;
+ border-style:outset;
+ border-width:8px;
+ border-color:black;
+ }
+ #b1
+ {
+ position:absolute;
+ width:100%;
+ height:10%;
+ background-color:red;
+ background-image:url(http://ghghgh.us/timb/pepper3.gif);
+ }
+ #b2
+ {
+ position:absolute;
+ top:100px;
+ width:100%;
+ font-family: 'Tienne', serif;
+ color:#8B8B7A;
+ text-shadow: 0px -15px 0 bisque;
+ text-shadow: 20px 30px 11px #CDC5BF;
+ font-size:40px;
+ padding-top:20px;
+ padding-bottom:20px;
+ text-align:center;
+ height:100px;
+ background-color:whitesmoke;
+ bottom:0px;
+ }
+ #b3
+ {
+ position:fixed:
+ top:1000px;
+ height:1000px;
+ width:100%;
+ text-align:center;
+ font-style:georgia;
+ font-size:20px;
+ color:black;
+ text-transform:uppercase;
+ background-color:azure;
+ background-image:url(http://ghghgh.us/timb/pepper2.gif);
+ }
+ img
+ {
+ background-color:whitesmoke;
+ }
+ a {text-decoration: none;color:#333;}
+ a:hover {text-decoration: none;background:#ff8000;color:#fff;}
+ a:visited {text-decoration: none;color:#333;}
+ a:visited:hover {text-decoration: none;background:#ff8000;color:#fff;}
+</style>
+<!--special thanks to Gerard Ferrandez at http://www.dhteumeuleu.com for his image rolodex script-->
+
+<script type="text/javascript">
+
+var car = {
+ scr : 0,
+ img : 0,
+ xm : 0,
+ ym : 0,
+ xmb : 0,
+ ymb : 0,
+ drag : false,
+ cosY : 0,
+ cosX : 0,
+ sinY : 0,
+ sinX : 0,
+ xd : 0,
+ yd : -10,
+
+ run : function () {
+ /* ==== rotation speed ==== */
+ var Ay = car.xd / (car.scr.offsetWidth * .2);
+ var Ax = car.yd / (car.scr.offsetHeight * .2);
+ /* ==== vertical / horizontal friction ==== */
+ if(!car.drag){
+ if(Math.abs(car.xd) > Math.abs(car.yd)){
+ car.xd *= .99;
+ car.yd *= .95;
+ } else {
+ car.xd *= .95;
+ car.yd *= .99;
+ }
+ }
+ /* ==== rotation angles ==== */
+ car.cosY = Math.cos(Ay);
+ car.cosX = Math.cos(Ax);
+ car.sinY = Math.sin(Ay);
+ car.sinX = Math.sin(Ax);
+ /* ==== animate images ==== */
+ for(var i = 0; i < 8; i++) car.img[i].rotate();
+ /* ==== loop ==== */
+ setTimeout(car.run, 16);
+ },
+
+ /* ==== mouse mov ==== */
+ mouse : function (e) {
+ this.xm = e.clientX;
+ this.ym = -e.clientY;
+ if(this.drag){
+ this.xd = this.xm - this.xmb;
+ this.yd = this.ym - this.ymb;
+ }
+ this.xmb = this.xm;
+ this.ymb = this.ym;
+ },
+
+ /* ==== dim screen ==== */
+ resize : function () {
+ car.nw = car.scr.offsetWidth;
+ car.nh = car.scr.offsetHeight;
+ },
+
+ /* ==== init script ==== */
+ init : function () {
+ /* ==== window mousemove event ==== */
+ document.onmousemove = function (e) {
+ if (window.event) e = window.event;
+ car.mouse(e);
+ }
+ /* ==== window onresize event ==== */
+ onresize = car.resize;
+ /* ==== init images ==== */
+ this.scr = document.getElementById('screen');
+ var img = this.scr.getElementsByTagName('img');
+ this.img = [];
+ car.resize();
+ var k = 0;
+ for(var xi = -1; xi <= 1; xi+=2) {
+ for(var yi = -1; yi <= 1; yi+=2) {
+ for(var zi = -1; zi <= 1; zi+=2) {
+ var o = img[k++];
+ /* ==== replace images by canvas ==== */
+ if (document.createElement("canvas").getContext) {
+ var src = o;
+ o = document.createElement("canvas");
+ o.canvas = true;
+ /* ==== flip function ==== */
+ o.flip = function (fx, fy) {
+ var context = this.getContext("2d");
+ context.translate(fx<0?this.w:0, fy<0?this.h:0);
+ context.scale(fx, fy);
+ context.drawImage(this.img, 0, 0, this.w, this.h);
+ }
+ o.img = src;
+ this.scr.appendChild(o);
+ }
+ /* ==== HTML Objects ==== */
+ this.img.push(o);
+ o.css = o.style;
+ o.x3d = xi;
+ o.y3d = yi;
+ o.z3d = zi;
+ o.py = 0;
+ o.px = 0;
+ o.onselectstart = function () { return false; }
+ o.ondrag = function () { return false; }
+ o.onmousedown = function () {
+ car.drag = true;
+ car.xd = 0;
+ car.yd = 0;
+ this.css.cursor = "move";
+ return false;
+ }
+ o.onmouseout = function () {car.drag = false; this.css.cursor = "pointer"; return false; }
+ o.onmouseup = function () {car.drag = false; this.css.cursor = "pointer"; return false; }
+ o.rotate = function () {
+ /* ==== trigo ==== */
+ var tz = this.z3d * car.cosY - this.x3d * car.sinY;
+ this.x3d = this.z3d * car.sinY + this.x3d * car.cosY;
+ this.z3d = this.y3d * car.sinX + tz * car.cosX;
+ this.y3d = this.y3d * car.cosX - tz * car.sinX;
+ var zf = 1 / (this.z3d / 10 + 1);
+ var x2d = this.x3d * zf * car.nw * .2;
+ var y2d = this.y3d * zf * car.nh * .2;
+ var w2d = Math.abs(x2d * 1.6);
+ var h2d = Math.abs(y2d * 1.6);
+ if (this.loaded) {
+ /* ==== HTML animation ==== */
+ this.css.left = Math.round(car.nw * .5 - x2d - w2d * .5) + 'px';
+ this.css.top = Math.round(car.nh * .5 - y2d - h2d * .5) + 'px';
+ this.css.width = Math.round(w2d) + 'px';
+ this.css.height = Math.round(h2d) + 'px';
+ this.css.zIndex = Math.round(zf * 100);
+ /* ==== flipv ==== */
+ if ((y2d < 0) != this.py) {
+ this.py = (y2d < 0);
+ if (this.canvas)
+ this.flip(1, -1);
+ else if (this.filters)
+ this.filters[1].enabled = (y2d < 0) ? "true" : "false";
+ }
+ /* ==== fliph ==== */
+ if ((x2d < 0) != this.px) {
+ this.px = (x2d < 0);
+ if (this.canvas)
+ this.flip(-1, 1);
+ else if (this.filters)
+ this.filters[0].enabled = (x2d < 0) ? "true" : "false";
+ }
+ } else {
+ /* ==== load image ==== */
+ if ((this.canvas && this.img.complete) || this.complete) {
+ this.loaded = true;
+ if (this.canvas) {
+ this.w = this.img.width;
+ this.h = this.img.height;
+ this.width = this.w;
+ this.height = this.h;
+ var context = this.getContext("2d");
+ context.drawImage(this.img, 0, 0, this.w, this.h);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ this.run();
+ }
+}
+
+</script>
+</head>
+
+<body>
+
+<div id="screen">
+ <div id="b1"></div>
+ <div id="b2">WELCOME TO THE PHOTOBLASTER GREAT GRIDS GALLERY...THESE ARE RECENT GRIDS CREATED BY PEOPLE USING HTTP://ASDF.US/IMGRID</div>
+ <div id="b3">
+ <br>
+ </div>
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg1.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg2.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg3.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg4.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg5.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg6.png">
+ <img class='images' alt="by Pepper" src="images/gg7.png">
+ <img class='images' alt="" src="images/gg6.png">
+</div>
+
+<script type="text/javascript">
+ /* ==== start ==== */
+ setTimeout(function() {
+ car.init();
+ }, 1000);
+</script>
+<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
+
+<script type='text/javascript'>
+$(canvas).click(function()
+ {
+ // value = $(this).attr('alt');
+ $('#b2').html('hey guys');
+ });
+</script>
+</body>
+</html>
+
diff --git a/frontend/imgrid/greatgrids/images/LaL1S.jpg b/frontend/imgrid/greatgrids/images/LaL1S.jpg
new file mode 100755
index 0000000..2eec5e3
--- /dev/null
+++ b/frontend/imgrid/greatgrids/images/LaL1S.jpg
Binary files differ
diff --git a/frontend/imgrid/greatgrids/images/gg1.png b/frontend/imgrid/greatgrids/images/gg1.png
new file mode 100755
index 0000000..9d290b6
--- /dev/null
+++ b/frontend/imgrid/greatgrids/images/gg1.png
Binary files differ
diff --git a/frontend/imgrid/greatgrids/images/gg2.png b/frontend/imgrid/greatgrids/images/gg2.png
new file mode 100755
index 0000000..92bf7b9
--- /dev/null
+++ b/frontend/imgrid/greatgrids/images/gg2.png
Binary files differ
diff --git a/frontend/imgrid/greatgrids/images/gg3.png b/frontend/imgrid/greatgrids/images/gg3.png
new file mode 100755
index 0000000..37c3a14
--- /dev/null
+++ b/frontend/imgrid/greatgrids/images/gg3.png
Binary files differ
diff --git a/frontend/imgrid/greatgrids/images/gg4.png b/frontend/imgrid/greatgrids/images/gg4.png
new file mode 100755
index 0000000..dedae31
--- /dev/null
+++ b/frontend/imgrid/greatgrids/images/gg4.png
Binary files differ
diff --git a/frontend/imgrid/greatgrids/images/gg5.png b/frontend/imgrid/greatgrids/images/gg5.png
new file mode 100755
index 0000000..1579292
--- /dev/null
+++ b/frontend/imgrid/greatgrids/images/gg5.png
Binary files differ
diff --git a/frontend/imgrid/greatgrids/images/gg6.png b/frontend/imgrid/greatgrids/images/gg6.png
new file mode 100755
index 0000000..77e69f3
--- /dev/null
+++ b/frontend/imgrid/greatgrids/images/gg6.png
Binary files differ
diff --git a/frontend/imgrid/greatgrids/images/gg7.png b/frontend/imgrid/greatgrids/images/gg7.png
new file mode 100755
index 0000000..788b182
--- /dev/null
+++ b/frontend/imgrid/greatgrids/images/gg7.png
Binary files differ
diff --git a/frontend/imgrid/greatgrids/images/gg8.jpg b/frontend/imgrid/greatgrids/images/gg8.jpg
new file mode 100755
index 0000000..2eec5e3
--- /dev/null
+++ b/frontend/imgrid/greatgrids/images/gg8.jpg
Binary files differ
diff --git a/frontend/imgrid/greatgrids/images/gg8.png b/frontend/imgrid/greatgrids/images/gg8.png
new file mode 100755
index 0000000..df486e0
--- /dev/null
+++ b/frontend/imgrid/greatgrids/images/gg8.png
Binary files differ
diff --git a/frontend/imgrid/greatgrids/index.html b/frontend/imgrid/greatgrids/index.html
new file mode 100755
index 0000000..cb55d1e
--- /dev/null
+++ b/frontend/imgrid/greatgrids/index.html
@@ -0,0 +1,430 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<title>GREAT GRIDS GALLERY</title>
+<meta http-equiv="imagetoolbar" content="no">
+<meta property="og:image" content="http://asdf.us/imgrid/greatgrids/facebookimage.jpg"/>
+ <link rel="shortcut icon" href="http://asdf.us/imgrid/greatgrids/grids.ico">
+
+<link href='http://fonts.googleapis.com/css?family=Tienne:400,700' rel='stylesheet' type='text/css'>
+<style type="text/css">
+ html {
+ overflow: hidden;
+ }
+ body {
+ margin: 0px;
+ padding: 0px;
+ background: aqua;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ }
+ #curtain{
+ position:fixed;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ background-color:rgba(255,255,255,0.8);
+ z-index:1500;
+ display:none;
+ overflow:auto;
+ }
+ #details
+ {
+ position:absolute;
+ width:800px;
+ height:60%;
+ border-style:solid;
+ border-width:1px;
+ background-color:white;
+ margin:0 auto;
+ border-color:black;
+ top:0;
+ left:0;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+ -moz-opacity: 1.0;
+ -khtml-opacity: 1.0;
+ opacity:1;
+
+ }
+ #imagedetail
+ {
+ position:absolute;
+ margin:0 auto;
+ border-style:outset;
+ border-color:black;
+ border-width:0px;
+ display:block;
+ opacity:1;
+ }
+ #info
+ {
+ font-size:200%;
+ font-family:helvetica;
+ text-transform:uppercase;
+ display:block;
+ padding:5%;
+ overflow:auto;
+ }
+ #screen {
+ position:absolute;
+ left: 00%;
+ top: 7%;
+ width: 100%;
+ height: 100%;
+ background: aqua;
+// overflow: hidden;
+ }
+ #screen img {
+ position: absolute;
+ cursor: pointer;
+ left: -4000px;
+ filter: fliph flipv;
+ -ms-interpolation-mode:nearest-neighbor;
+ }
+ #screen canvas {
+ position: absolute;
+ cursor: pointer;
+ width: 0px;
+ border-style:outset;
+ border-width:8px;
+ border-color:black;
+ }
+ #b1
+ {
+ position:fixed;
+ top:0;
+ width:100%;
+ height:10%;
+ background-color:red;
+ background-image:url(tinybackground.gif);
+ }
+ #b2
+ {
+ position:absolute;
+ top:100px;
+ width:100%;
+ font-family: 'Tienne', serif;
+ color:#8B8B7A;
+ text-shadow: 0px -15px 0 bisque;
+ text-shadow: 20px 30px 11px #CDC5BF;
+ font-size:250%;
+ padding-top:20px;
+ padding-bottom:20px;
+ text-align:center;
+ height:100px;
+ background-color:whitesmoke;
+ bottom:0px;
+ }
+ #b3
+ {
+ position:fixed:
+ top:1000px;
+ height:1000px;
+ width:100%;
+ text-align:center;
+ font-style:georgia;
+ font-size:20px;
+ color:black;
+ text-transform:uppercase;
+ background-color:azure;
+ background-image:url(tinybackground2.gif);
+ }
+ a {text-decoration: none;color:#333;}
+ a:hover {text-decoration: none;background:#ff8000;color:#fff;}
+ a:visited {text-decoration: none;color:#333;}
+ a:visited:hover {text-decoration: none;background:#ff8000;color:#fff;}
+ #error
+ {
+ display:none;
+ }
+</style>
+<!--special thanks to Gerard Ferrandez at http://www.dhteumeuleu.com for his image rolodex script-->
+
+<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
+<script type="text/javascript">
+window.requestAnimFrame = (function(){
+ return window.requestAnimationFrame ||
+ window.webkitRequestAnimationFrame ||
+ window.mozRequestAnimationFrame ||
+ window.oRequestAnimationFrame ||
+ window.msRequestAnimationFrame ||
+ function( callback ){
+ window.setTimeout(callback, 1000 / 60);
+ };
+})();
+var car = {
+ scr : 0,
+ img : 0,
+ xm : 0,
+ ym : 0,
+ xmb : 0,
+ ymb : 0,
+ drag : false,
+ cosY : 0,
+ cosX : 0,
+ sinY : 0,
+ sinX : 0,
+ xd : 0,
+ yd : -10,
+ ref : "",
+ run : function () {
+ /* ==== rotation speed ==== */
+ var Ay = car.xd / (car.scr.offsetWidth * .2);
+ var Ax = car.yd / (car.scr.offsetHeight * .2);
+ /* ==== vertical / horizontal friction ==== */
+ if(!car.drag){
+ if(Math.abs(car.xd) > Math.abs(car.yd)){
+ car.xd *= .99;
+ car.yd *= .95;
+ } else {
+ car.xd *= .95;
+ car.yd *= .99;
+ }
+ }
+ /* ==== rotation angles ==== */
+ car.cosY = Math.cos(Ay);
+ car.cosX = Math.cos(Ax);
+ car.sinY = Math.sin(Ay);
+ car.sinX = Math.sin(Ax);
+ /* ==== animate images ==== */
+ for(var i = 0; i < 8; i++)
+ {
+ car.img[i].rotate()
+ };
+ /* ==== loop ==== */
+
+ //setTimeout(car.run, 16);
+ },
+
+ /* ==== mouse mov ==== */
+ mouse : function (e) {
+ this.xm = e.clientX;
+ this.ym = -e.clientY;
+ if(this.drag){
+ var homeboy = this.img
+ this.xd = this.xm - this.xmb;
+ this.yd = this.ym - this.ymb;
+ }
+ this.xmb = this.xm;
+ this.ymb = this.ym;
+ },
+
+ /* ==== dim screen ==== */
+ resize : function () {
+ car.nw = car.scr.offsetWidth;
+ car.nh = car.scr.offsetHeight;
+ },
+
+ /* ==== init script ==== */
+ init : function () {
+ /* ==== window mousemove event ==== */
+ document.onmousemove = function (e) {
+ if (window.event) e = window.event;
+ car.mouse(e);
+ }
+ /* ==== window onresize event ==== */
+ onresize = car.resize;
+ /* ==== init images ==== */
+ this.scr = document.getElementById('screen');
+ var img = this.scr.getElementsByClassName('images');
+ this.img = [];
+ car.resize();
+ var k = 0;
+
+ for(var xi = -1; xi <= 1; xi+=2) {
+ for(var yi = -1; yi <= 1; yi+=2) {
+ for(var zi = -1; zi <= 1; zi+=2) {
+ var o = img[k++]
+ /* ==== replace images by canvas ==== */
+ if (document.createElement("canvas").getContext) {
+ var src = o;
+ o = document.createElement("canvas");
+ if (k<=8){
+ o.id = img[k-1].getAttribute('src')}
+ o.canvas = true;
+ /* ==== flip function ==== */
+ o.flip = function (fx, fy) {
+ var context = this.getContext("2d");
+ context.translate(fx<0?this.w:0, fy<0?this.h:0);
+ context.scale(fx, fy);
+ context.drawImage(this.img, 0, 0, this.w, this.h);
+ }
+ o.img = src;
+ this.scr.appendChild(o);
+ }
+ /* ==== HTML Objects ==== */
+ this.img.push(o);
+ o.css = o.style;
+ o.x3d = xi;
+ o.y3d = yi;
+ o.z3d = zi;
+ o.py = 0;
+ o.px = 0;
+ o.onselectstart = function () { return false; }
+ o.ondrag = function () { return false; }
+ o.onmousedown = function () {
+ car.drag = true;
+ car.xd = 0;
+ car.yd = 0;
+ this.css.cursor = "move";
+ $('canvas').css('border-color','black')
+ // document.getElementById('error').innerHTML = this.getAttribute('id').toString()
+ car.ref = this.getAttribute('id').toString()
+ $(this).css('border-color','red');
+ $('#error').show("fast");
+ return false;
+
+ }
+ o.onmouseout = function () {car.drag = false; this.css.cursor = "pointer"; return false; }
+ o.onmouseup = function () {car.drag = false; this.css.cursor = "pointer"; return false; }
+ o.rotate = function () {
+ /* ==== trigo ==== */
+ var tz = this.z3d * car.cosY - this.x3d * car.sinY;
+ this.x3d = this.z3d * car.sinY + this.x3d * car.cosY;
+ this.z3d = this.y3d * car.sinX + tz * car.cosX;
+ this.y3d = this.y3d * car.cosX - tz * car.sinX;
+ var zf = 1 / (this.z3d / 10 + 1);
+ var x2d = this.x3d * zf * car.nw * .2;
+ var y2d = this.y3d * zf * car.nh * .2;
+ var w2d = Math.abs(x2d * 1.6);
+ var h2d = Math.abs(y2d * 1.6);
+ if (this.loaded) {
+ /* ==== HTML animation ==== */
+ this.css.left = Math.round(car.nw * .5 - x2d - w2d * .5) + 'px';
+ this.css.top = Math.round(car.nh * .5 - y2d - h2d * .5) + 'px';
+ this.css.width = Math.round(w2d) + 'px';
+ this.css.height = Math.round(h2d) + 'px';
+ this.css.zIndex = Math.round(zf * 100);
+ /* ==== flipv ==== */
+ if ((y2d < 0) != this.py) {
+ this.py = (y2d < 0);
+ if (this.canvas)
+ this.flip(1, -1);
+ else if (this.filters)
+ this.filters[1].enabled = (y2d < 0) ? "true" : "false";
+ }
+ /* ==== fliph ==== */
+ if ((x2d < 0) != this.px) {
+ this.px = (x2d < 0);
+ if (this.canvas)
+ this.flip(-1, 1);
+ else if (this.filters)
+ this.filters[0].enabled = (x2d < 0) ? "true" : "false";
+ }
+ } else {
+ /* ==== load image ==== */
+ if ((this.canvas && this.img.complete) || this.complete) {
+ this.loaded = true;
+ if (this.canvas) {
+ this.w = this.img.width;
+ this.h = this.img.height;
+ this.width = this.w;
+ this.height = this.h;
+ var context = this.getContext("2d");
+ context.drawImage(this.img, 0, 0, this.w, this.h);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ (function animloop(){
+ requestAnimFrame(animloop);
+ car.run();
+})();
+ //this.run();
+ }
+}
+</script>
+</head>
+
+<body>
+
+ <div id='curtain'>
+ <div id='details'>
+<span id="info"></span>
+<a href='http://asdf.us/imgrid/index.html'><img src='blackplant.png' style='position:fixed; z-index:2000; top:300px; left:50px; height:25%;'></img></a>
+<div id="detailwrapper"><img id='imagedetail'></img></div>
+ </div>
+</div>
+<div id="screen">
+ <div id="b1"></div>
+ <div id="b2">WELCOME TO THE PHOTOBLASTER GREAT GRIDS GALLERY...THESE ARE RECENT GRIDS CREATED USING <a href='http://asdf.us/imgrid'>HTTP://ASDF.US/IMGRID</a></div>
+ <div id="b3">
+ <br>
+ </div>
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg1.png"/>
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg2.png"/>
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg3.png"/>
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg4.png"/>
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg5.png"/>
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg6.png"/>
+ <img class='images' alt="by Pepper" src="images/gg7.png"/>
+ <img class='images' alt="by Calla Donofrio" src="images/gg8.png"/>
+</div>
+<div id='error' style= 'height:6%;position:fixed;left:50px; top:20px;cursor:pointer;opacity:0.8'><img src="http://asdf.us/im/e2/blackkplant_1324724811_pepper_1324724920_pepper.gif" style='height:300%; z-index:100;position:absolute;left:-40px;top:-20px;'></img><img src="http://i.imgur.com/xVHpN.gif" style='height:90%;z-index:104;position:absolute;'></img></div>
+<script type="text/javascript">
+ /* ==== start ==== */
+ setTimeout(function() {
+ car.init();
+ }, 1000);
+</script>
+
+<script type='text/javascript'>
+var imagedict = {
+ "images/gg1.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg2.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg3.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg4.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg5.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg6.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg7.png":"By Pepper",
+ "images/gg8.png":"By <a href='http://www.facebook.com/CallaDonofrio'>Calla<br>Donofrio</a><br><br><span style='font-size:50%'><a href='http://calladonofrio.tumblr.com'>more by her...</a>"}
+function centerimage()
+ {
+ $('#imagedetail').load(function()
+ {
+ detailwidth = $('#imagedetail').width()
+ detailheight = $('#imagedetail').height()
+ theborder = 2
+ centerpointone = parseFloat(detailwidth)/2
+ centerpointtwo = parseFloat(detailheight)/2
+ leftpos = window.innerWidth/2-centerpointone-theborder
+ toppos = window.innerHeight/2-centerpointtwo-theborder
+ wrapperposT = (toppos-20).toString()+'px'
+ wrapperposL = (leftpos-20).toString()+'px'
+ wrapperheight = detailheight+40
+ wrapperwidth = detailwidth+40
+ $('#imagedetail').css({top:20,left:20})
+ $('#detailwrapper').css({'position':'absolute','z-index':'1499','width':wrapperwidth,'height':wrapperheight,'top':wrapperposT,'left':wrapperposL,'background-color':'white','border-style':'solid','border-color':'black','border-width':'1px'});
+ refpoint = $('#imagedetail').attr('src')
+ newrefpoint = imagedict[refpoint]
+ $('#info').html(newrefpoint)
+
+ thefont = (leftpos-20)/9
+ if (thefont > 38) {thefont = 38}
+ $('#info').css('font-size',thefont.toString()+'px')
+
+
+ })
+ }
+function curtainfunction()
+ {
+ centerimage()
+ $('#curtain').toggle();
+ $('#imagedetail').attr('src',car.ref);
+ }
+$('#curtain').click(function(){$('#curtain').toggle("slow")})
+
+$('#error').click(function()
+ {
+ curtainfunction()
+ })
+$('canvas').dblclick(function(){curtainfunction()})
+</script>
+</body>
+</html>
+
diff --git a/frontend/imgrid/greatgrids/plain.html b/frontend/imgrid/greatgrids/plain.html
new file mode 100755
index 0000000..829b45e
--- /dev/null
+++ b/frontend/imgrid/greatgrids/plain.html
@@ -0,0 +1,28 @@
+<html>
+<head>
+<title>GREAT GRIDS GALLERY</title>
+<style type="text/css"></style>
+</head>
+<body>
+<canvas id="example" width="200" height="200">
+This text is displayed if your browser does not support HTML5 Canvas.
+</canvas>
+<div id='error'> booji boy</div>
+<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
+<script type="text/javascript">
+
+var example = document.getElementById('example');
+var context = example.getContext('2d');
+context.fillStyle = "rgb(255,0,0)";
+context.fillRect(30, 30, 50, 50);
+
+$('canvas').hover(function()
+ {
+ var wonka = $(this).attr('id')
+ $('#error').html(wonka)
+ });
+</script>
+
+
+</body>
+</html>
diff --git a/frontend/imgrid/greatgrids/screen.html b/frontend/imgrid/greatgrids/screen.html
new file mode 100755
index 0000000..b75f78f
--- /dev/null
+++ b/frontend/imgrid/greatgrids/screen.html
@@ -0,0 +1,400 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<title>the difference - interactive DHTML</title>
+<meta http-equiv="imagetoolbar" content="no">
+<link href='http://fonts.googleapis.com/css?family=Tienne:400,700' rel='stylesheet' type='text/css'>
+<style type="text/css">
+ html {
+ overflow: hidden;
+ }
+ body {
+ margin: 0px;
+ padding: 0px;
+ background: aqua;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ }
+ #curtain{
+ position:fixed;
+ top:0;
+ left:0;
+ height:100%;
+ width:100%;
+ background-color:rgba(69,69,69,0.8);
+ z-index:1500;
+ display:none;
+ }
+ #details
+ {
+ position:absolute;
+ width:800px;
+ height:60%;
+ border-style:outset;
+ background-color:SlateGray;
+ margin:0 auto;
+ top:0;
+ left:0;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+ -moz-opacity: 1.0;
+ -khtml-opacity: 1.0;
+ opacity:1;
+
+ }
+ #imagedetail
+ {
+ position:absolute;
+ left:0px;
+ margin:0 auto;
+ left:80px;
+ top:5px;
+ border-style:outset;
+ border-color:#FFFAF0;
+ border-width:100px;
+ display:block;
+ max-height:900px;
+ max-width:900px;
+ opacity:1;
+ }
+ #info
+ {
+ font-size:40px;
+ font-family:helvetica;
+ text-transform:uppercase;
+ display:block;
+ padding:5%;
+ }
+ #screen {
+ position:absolute;
+ left: 00%;
+ top: 0%;
+ width: 100%;
+ height: 100%;
+ background: aqua;
+ overflow: hidden;
+ }
+ #screen img {
+ position: absolute;
+ cursor: pointer;
+ left: -4000px;
+ filter: fliph flipv;
+ -ms-interpolation-mode:nearest-neighbor;
+ }
+ #screen canvas {
+ position: absolute;
+ cursor: pointer;
+ width: 0px;
+ border-style:outset;
+ border-width:8px;
+ border-color:black;
+ }
+ #b1
+ {
+ position:absolute;
+ width:100%;
+ height:10%;
+ background-color:red;
+ background-image:url(http://ghghgh.us/timb/pepper3.gif);
+ }
+ #b2
+ {
+ position:absolute;
+ top:100px;
+ width:100%;
+ font-family: 'Tienne', serif;
+ color:#8B8B7A;
+ text-shadow: 0px -15px 0 bisque;
+ text-shadow: 20px 30px 11px #CDC5BF;
+ font-size:40px;
+ padding-top:20px;
+ padding-bottom:20px;
+ text-align:center;
+ height:100px;
+ background-color:whitesmoke;
+ bottom:0px;
+ }
+ #b3
+ {
+ position:fixed:
+ top:1000px;
+ height:1000px;
+ width:100%;
+ text-align:center;
+ font-style:georgia;
+ font-size:20px;
+ color:black;
+ text-transform:uppercase;
+ background-color:azure;
+ background-image:url(http://ghghgh.us/timb/pepper2.gif);
+ }
+ img
+ {
+ background-color:whitesmoke;
+ }
+ a {text-decoration: none;color:#333;}
+ a:hover {text-decoration: none;background:#ff8000;color:#fff;}
+ a:visited {text-decoration: none;color:#333;}
+ a:visited:hover {text-decoration: none;background:#ff8000;color:#fff;}
+</style>
+<!--special thanks to Gerard Ferrandez at http://www.dhteumeuleu.com for his image rolodex script-->
+
+<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>
+<script type="text/javascript">
+var car = {
+ scr : 0,
+ img : 0,
+ xm : 0,
+ ym : 0,
+ xmb : 0,
+ ymb : 0,
+ drag : false,
+ cosY : 0,
+ cosX : 0,
+ sinY : 0,
+ sinX : 0,
+ xd : 0,
+ yd : -10,
+ ref : "",
+ run : function () {
+ /* ==== rotation speed ==== */
+ var Ay = car.xd / (car.scr.offsetWidth * .2);
+ var Ax = car.yd / (car.scr.offsetHeight * .2);
+ /* ==== vertical / horizontal friction ==== */
+ if(!car.drag){
+ if(Math.abs(car.xd) > Math.abs(car.yd)){
+ car.xd *= .99;
+ car.yd *= .95;
+ } else {
+ car.xd *= .95;
+ car.yd *= .99;
+ }
+ }
+ /* ==== rotation angles ==== */
+ car.cosY = Math.cos(Ay);
+ car.cosX = Math.cos(Ax);
+ car.sinY = Math.sin(Ay);
+ car.sinX = Math.sin(Ax);
+ /* ==== animate images ==== */
+ for(var i = 0; i < 8; i++)
+ {
+ car.img[i].rotate()
+ };
+ /* ==== loop ==== */
+ setTimeout(car.run, 16);
+ },
+
+ /* ==== mouse mov ==== */
+ mouse : function (e) {
+ this.xm = e.clientX;
+ this.ym = -e.clientY;
+ if(this.drag){
+ var homeboy = this.img
+ this.xd = this.xm - this.xmb;
+ this.yd = this.ym - this.ymb;
+ }
+ this.xmb = this.xm;
+ this.ymb = this.ym;
+ },
+
+ /* ==== dim screen ==== */
+ resize : function () {
+ car.nw = car.scr.offsetWidth;
+ car.nh = car.scr.offsetHeight;
+ },
+
+ /* ==== init script ==== */
+ init : function () {
+ /* ==== window mousemove event ==== */
+ document.onmousemove = function (e) {
+ if (window.event) e = window.event;
+ car.mouse(e);
+ }
+ /* ==== window onresize event ==== */
+ onresize = car.resize;
+ /* ==== init images ==== */
+ this.scr = document.getElementById('screen');
+ var img = this.scr.getElementsByClassName('images');
+ this.img = [];
+ car.resize();
+ var k = 0;
+
+ for(var xi = -1; xi <= 1; xi+=2) {
+ for(var yi = -1; yi <= 1; yi+=2) {
+ for(var zi = -1; zi <= 1; zi+=2) {
+ var o = img[k++]
+ /* ==== replace images by canvas ==== */
+ if (document.createElement("canvas").getContext) {
+ var src = o;
+ o = document.createElement("canvas");
+ if (k<=8){
+ o.id = img[k-1].getAttribute('src')}
+ o.canvas = true;
+ /* ==== flip function ==== */
+ o.flip = function (fx, fy) {
+ var context = this.getContext("2d");
+ context.translate(fx<0?this.w:0, fy<0?this.h:0);
+ context.scale(fx, fy);
+ context.drawImage(this.img, 0, 0, this.w, this.h);
+ }
+ o.img = src;
+ this.scr.appendChild(o);
+ }
+ /* ==== HTML Objects ==== */
+ this.img.push(o);
+ o.css = o.style;
+ o.x3d = xi;
+ o.y3d = yi;
+ o.z3d = zi;
+ o.py = 0;
+ o.px = 0;
+ o.onselectstart = function () { return false; }
+ o.ondrag = function () { return false; }
+ o.onmousedown = function () {
+ car.drag = true;
+ car.xd = 0;
+ car.yd = 0;
+ this.css.cursor = "move";
+ $('canvas').css('border-color','black')
+ // document.getElementById('error').innerHTML = this.getAttribute('id').toString()
+ car.ref = this.getAttribute('id').toString()
+ $(this).css('border-color','red');
+ return false;
+
+ }
+ o.onmouseout = function () {car.drag = false; this.css.cursor = "pointer"; return false; }
+ o.onmouseup = function () {car.drag = false; this.css.cursor = "pointer"; return false; }
+ o.rotate = function () {
+ /* ==== trigo ==== */
+ var tz = this.z3d * car.cosY - this.x3d * car.sinY;
+ this.x3d = this.z3d * car.sinY + this.x3d * car.cosY;
+ this.z3d = this.y3d * car.sinX + tz * car.cosX;
+ this.y3d = this.y3d * car.cosX - tz * car.sinX;
+ var zf = 1 / (this.z3d / 10 + 1);
+ var x2d = this.x3d * zf * car.nw * .2;
+ var y2d = this.y3d * zf * car.nh * .2;
+ var w2d = Math.abs(x2d * 1.6);
+ var h2d = Math.abs(y2d * 1.6);
+ if (this.loaded) {
+ /* ==== HTML animation ==== */
+ this.css.left = Math.round(car.nw * .5 - x2d - w2d * .5) + 'px';
+ this.css.top = Math.round(car.nh * .5 - y2d - h2d * .5) + 'px';
+ this.css.width = Math.round(w2d) + 'px';
+ this.css.height = Math.round(h2d) + 'px';
+ this.css.zIndex = Math.round(zf * 100);
+ /* ==== flipv ==== */
+ if ((y2d < 0) != this.py) {
+ this.py = (y2d < 0);
+ if (this.canvas)
+ this.flip(1, -1);
+ else if (this.filters)
+ this.filters[1].enabled = (y2d < 0) ? "true" : "false";
+ }
+ /* ==== fliph ==== */
+ if ((x2d < 0) != this.px) {
+ this.px = (x2d < 0);
+ if (this.canvas)
+ this.flip(-1, 1);
+ else if (this.filters)
+ this.filters[0].enabled = (x2d < 0) ? "true" : "false";
+ }
+ } else {
+ /* ==== load image ==== */
+ if ((this.canvas && this.img.complete) || this.complete) {
+ this.loaded = true;
+ if (this.canvas) {
+ this.w = this.img.width;
+ this.h = this.img.height;
+ this.width = this.w;
+ this.height = this.h;
+ var context = this.getContext("2d");
+ context.drawImage(this.img, 0, 0, this.w, this.h);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ this.run();
+ }
+}
+</script>
+</head>
+
+<body>
+
+ <div id='curtain'>
+ <div id='details'>
+<span id="info">BLAH BLAH BLAH</span>
+<img id='imagedetail'></img>
+ </div>
+</div>
+<div id="screen">
+ <div id="b1"></div>
+ <div id="b2">WELCOME TO THE PHOTOBLASTER GREAT GRIDS GALLERY...THESE ARE RECENT GRIDS CREATED BY USING <a href='http://asdf.us/imgrid'>HTTP://ASDF.US/IMGRID</a></div>
+ <div id="b3">
+ <br>
+ </div>
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg1.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg2.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg3.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg4.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg5.png">
+ <img class='images' alt="by Jeremy Matthew Daly" src="images/gg6.png">
+ <img class='images' alt="by Pepper" src="images/gg7.png">
+ <img class='images' alt="" src="images/gg6.png">
+</div>
+<div id='error' style= 'color:red; font-size:40px; height:100px;width100px;position:fixed;left:100px; top:20px;'>CLICK TO ENLARGE</div>
+<script type="text/javascript">
+ /* ==== start ==== */
+ setTimeout(function() {
+ car.init();
+ }, 1000);
+</script>
+
+<script type='text/javascript'>
+var imagedict = {
+ "images/gg1.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg2.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg3.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg4.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg5.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg6.png":"By Jeremy<br>Matthew<br>Daly",
+ "images/gg7.png":"By Pepper"
+ }
+function centerimage()
+ {
+ $('#imagedetail').load(function()
+ {
+ refpoint = $('#imagedetail').attr('src')
+ newrefpoint = imagedict[refpoint]
+ $('#info').html(newrefpoint)
+ detailwidth = $('#imagedetail').width()
+ detailheight = $('#imagedetail').height()
+// theborder = $('#imagedetail').css('border-width')
+ theborder = 100
+ centerpointone = parseFloat(detailwidth)/2
+ centerpointtwo = parseFloat(detailheight)/2
+ leftpos = (window.innerWidth/2-centerpointone-theborder).toString()+'px'
+ toppos = (window.innerHeight/2-centerpointtwo-theborder).toString()+'px'
+ $('#imagedetail').css({top:toppos,left:leftpos})
+ })
+ }
+function curtainfunction()
+ {
+ centerimage()
+ $('#curtain').toggle();
+ $('#imagedetail').attr('src',car.ref);
+ }
+$('#curtain').click(function(){$('#curtain').toggle("slow")})
+
+$('#error').click(function()
+ {
+ curtainfunction()
+ })
+$('canvas').dblclick(function(){curtainfunction()})
+</script>
+</body>
+</html>
+
diff --git a/frontend/imgrid/greatgrids/tinybackground.gif b/frontend/imgrid/greatgrids/tinybackground.gif
new file mode 100755
index 0000000..15c7347
--- /dev/null
+++ b/frontend/imgrid/greatgrids/tinybackground.gif
Binary files differ
diff --git a/frontend/imgrid/greatgrids/tinybackground2.gif b/frontend/imgrid/greatgrids/tinybackground2.gif
new file mode 100755
index 0000000..7004d5d
--- /dev/null
+++ b/frontend/imgrid/greatgrids/tinybackground2.gif
Binary files differ
diff --git a/frontend/imgrid/img/athenafinal.gif b/frontend/imgrid/img/athenafinal.gif
new file mode 100755
index 0000000..19e0d58
--- /dev/null
+++ b/frontend/imgrid/img/athenafinal.gif
Binary files differ
diff --git a/frontend/imgrid/img/background.gif b/frontend/imgrid/img/background.gif
new file mode 100755
index 0000000..ac28d8d
--- /dev/null
+++ b/frontend/imgrid/img/background.gif
Binary files differ
diff --git a/frontend/imgrid/img/blackplant.png b/frontend/imgrid/img/blackplant.png
new file mode 100755
index 0000000..e78b547
--- /dev/null
+++ b/frontend/imgrid/img/blackplant.png
Binary files differ
diff --git a/frontend/imgrid/img/blackplant2.png b/frontend/imgrid/img/blackplant2.png
new file mode 100755
index 0000000..e4f8096
--- /dev/null
+++ b/frontend/imgrid/img/blackplant2.png
Binary files differ
diff --git a/frontend/imgrid/img/blackplant3.png b/frontend/imgrid/img/blackplant3.png
new file mode 100755
index 0000000..4052e9d
--- /dev/null
+++ b/frontend/imgrid/img/blackplant3.png
Binary files differ
diff --git a/frontend/imgrid/img/bros.png b/frontend/imgrid/img/bros.png
new file mode 100755
index 0000000..30f48fb
--- /dev/null
+++ b/frontend/imgrid/img/bros.png
Binary files differ
diff --git a/frontend/imgrid/img/facebookimage.png b/frontend/imgrid/img/facebookimage.png
new file mode 100755
index 0000000..9ba4068
--- /dev/null
+++ b/frontend/imgrid/img/facebookimage.png
Binary files differ
diff --git a/frontend/imgrid/img/generating.gif b/frontend/imgrid/img/generating.gif
new file mode 100755
index 0000000..441abe7
--- /dev/null
+++ b/frontend/imgrid/img/generating.gif
Binary files differ
diff --git a/frontend/imgrid/img/harrisbros.png b/frontend/imgrid/img/harrisbros.png
new file mode 100755
index 0000000..47366e1
--- /dev/null
+++ b/frontend/imgrid/img/harrisbros.png
Binary files differ
diff --git a/frontend/imgrid/img/imgrid.png b/frontend/imgrid/img/imgrid.png
new file mode 100755
index 0000000..cfdae05
--- /dev/null
+++ b/frontend/imgrid/img/imgrid.png
Binary files differ
diff --git a/frontend/imgrid/img/oldathena.gif b/frontend/imgrid/img/oldathena.gif
new file mode 100755
index 0000000..b05605c
--- /dev/null
+++ b/frontend/imgrid/img/oldathena.gif
Binary files differ
diff --git a/frontend/imgrid/img/test.gif b/frontend/imgrid/img/test.gif
new file mode 100755
index 0000000..ebfbdeb
--- /dev/null
+++ b/frontend/imgrid/img/test.gif
Binary files differ
diff --git a/frontend/imgrid/img/thatbackground.gif b/frontend/imgrid/img/thatbackground.gif
new file mode 100755
index 0000000..e52cfdc
--- /dev/null
+++ b/frontend/imgrid/img/thatbackground.gif
Binary files differ
diff --git a/frontend/imgrid/index.html b/frontend/imgrid/index.html
new file mode 100755
index 0000000..0507e4f
--- /dev/null
+++ b/frontend/imgrid/index.html
@@ -0,0 +1,484 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
+<html>
+<!--
+ * pepper *
+ *** and ***
+ **** JMD ****
+ * ****** internet CHAMPIONS ****** *
+ * *************************************** *
+ ** * ______*______ * **
+ ***** * ______*______ * *****
+ ******* ______*______ *******
+ *** **** * **** ***
+ ****** *oo******* *** *******oo* ******
+ * *o********* *********o* *
+ * * * *
+ * * _ _ * *
+ * * -_ _- * *
+ * * -_ _- * *
+ * * -___- * *
+ * *
+ *********************
+ * ** ** *
+ * ** ** *
+ * _-----_ *
+ *********
+
+-->
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta name="description" content="IMGRID - stretch images from the web in 3 dimensions, draw lines and make drop shadows" >
+ <meta name="keywords" content="photoblaster, 3D" >
+ <meta name=Author content="Pepper - 2011 www.facebook.com/AAAFFF">
+ <link rel="shortcut icon" href="http://asdf.us/imgrid/greatgrids/grids.ico">
+ <link rel="image_src" href="http://asdf.us/imgrid/greatgrids/images/gg7.png" >
+ <html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">
+ <meta property="og:title" content="imgrid" />
+ <meta property="og:type" content="website" />
+ <meta property="og:site_name" content="IMGRID - stretch images from the web in 3 dimensions, draw lines and make drop shadows" />
+ <meta property="og:image" content="http://asdf.us/imgrid/img/facebookimage.png"/>
+ <meta property="fb:admins" content="100001923956223,1709246"/>
+ <title>IMGRID - stretch images from the web in 3 dimensions, draw lines and make drop shadows</title>
+
+ <link rel="stylesheet" href="css/general.css" type="text/css" media="screen" />
+ <link href='css/jquery-ui-1.8.16.custom.css' rel='stylesheet' type='text/css' />
+ <link href='css/cssreset.css' rel='stylesheet' type='text/css'/>
+ <link href='http://fonts.googleapis.com/css?family=Varela+Round' rel='stylesheet' type='text/css'>
+ <style type='text/css'>
+ body
+ {
+ font-family: 'Varela Round', sans-serif;
+ font-size:10pt;
+ }
+ h1
+ {
+ font-size:18px;
+ width:50%;
+ margin:10px;
+ padding:10px;
+ }
+ #flatcontrols
+ {
+ width:40%;
+ margin:10px;
+ padding:10px;
+ }
+ .gridadj,.background,.dimensions,.links
+ {
+ display:none;
+ }
+ #thegrid,#thedimensions,#thebackground,#links
+ {
+ background-color:whitesmoke;
+ margin-left:20px;
+ -moz-box-shadow: 0px 0px 9px 3px #8B7D7B;
+ -webkit-box-shadow: 0px 0px 9px 3px #8B7D7B;
+ box-shadow: 0px 0px 9px 3px #8B7D7B;
+ }
+ #links
+ {
+ line-height:2;
+ padding:10px;
+ }
+ .results
+ {
+ display:none;
+ position:relative;
+ }
+ #result
+ {
+ position:fixed;
+ left:50%;
+ top:20px;
+ padding-right:15px;
+ }
+ #output-img img
+ {
+ max-height:70%;
+ max-width:100%;
+ }
+ #output-url
+ {
+ width:100%;
+ }
+ .slider
+ {
+ background-color:#eee5de;
+ display:inline-block;
+ width:50%;
+ }
+ #opacity-slider, #spacing-slider
+ {
+ width:100%;
+ display:inline-block;
+ margin-right:0;
+ margin-left:0;
+ }
+ input
+ {
+ width:70px;
+ }
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default
+ {
+ background-color:#555;
+ }
+ .urlinput
+ {
+ width:60%;
+ }
+ a
+ {
+ background-color:white;
+ max-width:100px;
+ }
+ a:link
+ {
+ color: black;
+ }
+ a:visited
+ {
+ COLOR: black;
+ }
+ a:hover
+ {
+ COLOR: black;
+ }
+ a:active
+ {
+ COLOR: black;
+ }
+ table td
+ {
+ padding:4px;
+ }
+ table tr
+ {
+// border: solid 2px;
+ }
+ .gridmore, .backgroundmore, .dimensionsmore, .linksmore
+ {
+ cursor:pointer;
+ }
+ #gridplug,#backgroundplug,#dimensionsplug,#linksplug
+ {
+ font-size:20px;
+ text-align:center;
+ }
+button {
+ background: white;
+ cursor:pointer;
+ color: #000000;
+ font-size: 18px;
+ font-family: Georgia, serif;
+ text-decoration: none;
+ vertical-align: middle;
+ }
+.button:hover {
+ cursor:pointer;
+ border-top-color: #78e072;
+ background: #78e072;
+ color: #000000;
+ }
+table
+ {
+ empty-cells:show;
+ }
+.generate
+ {
+ position:absolute;
+ left:320px;
+ top:240px;
+ -moz-box-shadow: 0px 0px 9px 3px pink;
+ -webkit-box-shadow: 0px 0px 9px 3px pink;
+ box-shadow: 0px 0px 9px 3px pink;
+ }
+ </style>
+</head>
+<body>
+ <div id='intro' style='position:absolute;top:0px;left:0px;width:100%;height:100%;background-image:url(background.gif);'><div style="background-image:url(background.gif); z-index:1000; height:inherit; width:inherit; position:fixed; left:50%; top:20px">
+ <img src="img/athenafinal.gif"></img>
+ </div></div>
+
+<a href="http://asdf.us/imgrid/index.html" style:'cursor:pointer'><img src='img/bros.png' style='position:fixed; top:-200px; z-index:-100;'></img>
+<div style='font-size:30px;'><img style="width:500px" src="img/imgrid.png"></img></div></a>
+<div style="font-size:12px;margin-left:20px;margin-bottom:20px;">IMGRID - stretch images from the web in 3 dimensions, draw lines and make drop shadows
+<br>
+hit enter or click GENERATE to get your perspective-plane
+
+<span id='genbutton'><button id='generate'>GENERATE</button></span>
+</div>
+
+<form id='theform'>
+ <div id="flatcontrols">
+<table>
+<tr><td class='dimensionsmore'>DIMENSIONS</td>
+
+ <td> <div id='dimensionsplug' class='dimensionsmore'>+</div></td></tr>
+ </table>
+ <div id='thedimensions'>
+ <table class='dimensions'>
+ <tr><td>HEIGHT</td>
+ <td> <input id='img-height' type='text' value='500'><span style="font-size:12px">PX</span></input></td></td>
+ <tr><td>WIDTH</td>
+ <td><input id='img-width' type='text' value='700'><span style="font-size:12px">PX</span></input></td></td>
+ <tr style="line-height:10px"><td>&nbsp</tr><td>
+ </table>
+<table style="width:100%" class="dimensions">
+ <tr><td>SWING&nbsp<input id='swing' type='text' value='0'></input></td></tr>
+ <tr id="swingslider" class="slider"></tr>
+ <tr><td>TILT&nbsp<input id='tilt' type='text' value='0'></input></td></tr>
+ <tr id="tiltslider" class="slider"></tr>
+ <tr><td>ROLL&nbsp<input id='roll' type='text' value='0'></input></td></tr>
+ <tr id="rollslider" class="slider"></tr>
+ <tr><td>ZOOM&nbsp (in/out) &nbsp<input id='zoom' type='text' value='0'></input></td></tr>
+ <tr id="zoomslider" class="slider" value='0'></tr>
+
+</table>
+<table class="dimensions">
+ <tr><td>&nbsp</td></tr>
+ <tr><td>CROP WHITESPACE</td><td><input type="checkbox" id="trim" value="false"></input></td></tr>
+ <tr><td>&nbsp</td></tr>
+ </table>
+<table class='dimensions'>
+ <tr><td>IMAGE FORMAT</td><td>
+ <select id='format'>
+ <option selected='selected' value=''></option>
+ <option value='png'>PNG</option>
+ <option value='gif'>GIF</option>
+ <option value='jpg'>JPG</option>
+ </select></td></tr></table>
+ </div>
+<table>
+<tr><td class='gridmore'>GRID AND IMAGE</td>
+
+ <td> <div id='gridplug' class='gridmore'>+</div></td></tr>
+ </table>
+
+ <div id='thegrid'>
+<table class='gridadj'>
+ <tr><td>USE IMAGE INSTEAD OF GRID</td>
+ <td><input type="text" class="urlinput" type="text" id="imageinstead" value="">IMG URL eg:http://ww...</input></td>
+ </tr></table>
+ <table class='gridadj'>
+ <tr><td>GRID THICKNESS:</td>
+ <td><input id='line-thickness' type='text' value='1'></input></td><td>PX</td>
+ <td style="width:140px; height: .8em; margin:0; padding:0;" class="slider" style="margin:0;padding:0;" id="line-thickness-slider"></td>
+ </tr>
+
+ <tr class='gridadj'><td>GRID COLOR:</td>
+ <td><input id='line-color' type='text' class="color_input line-color" value='MISTYROSE4'></input></td>
+ <td><a href="http://asdf.us/im/colors" class="color_input line-color" target="_blank">COLOR LIST</a></td>
+ </tr>
+
+ </table>
+ <table>
+ <tr class='gridadj'>
+ <td>GRID OPACITY: </td>
+ <td><input id='line-opacity' type='text' value='1'></input></td>
+ <td style="width:140px; height: .8em; margin:0; padding:0;" class="slider" style="margin:0;padding:0;"id="opacity-slider"></td>
+ </tr>
+
+ <tr class='gridadj'>
+ <td>GRID SPACING: </td>
+ <td><input id='line-spacing' type='text' value='0'></input></td>
+ <td class="slider" style="margin:0;padding:0;" id="spacing-slider"></td></tr>
+
+ <tr class='gridadj'><td>USE ONLY VERTICAL LINES</td><td><input type="checkbox" id="v-lines" value="false"></input></td></tr>
+
+ <tr class='gridadj'><td>USE ONLY HORIZONTAL LINES</td><td><input type="checkbox" id="h-lines" value="false" ></input></td></tr>
+ </table>
+<table class='gridadj'><td>GRID BACKGROUND COLOR <input type="text" class="color_input bg-color" id="bg-color" value="transparent"></td>
+ <td><a href="http://asdf.us/im/colors" class="color_input bg-color" target="_blank">COLOR LIST</a></input></td>
+
+ </table>
+ <table class='gridadj'>
+ <tr><td>OR GRID BACKGROUND IMAGE</td>
+ <td><input class="urlinput" type="text" id="bg-image" value="">IMG URL eg:http://ww...</input></td></tr>
+ </table>
+
+<table class='gridadj'>
+ <tr><td>GRID-TRANSITION</td>
+ <td><select id="transition">
+ <option selected="selected" value='background'>none</option>
+ <option value="dither">dithered</option>
+ <option value="random">noise</option>
+ <option value="tile">infinite</option>
+ <option value="edge">extended-edge</option>
+ </select></td></tr>
+
+</table>
+ <table class='gridadj'>
+ <tr><td>DROP SHADOW</td><td><input type='checkbox' id='shadow' value='false'</input></td></tr>
+
+
+</table>
+</div>
+
+
+ <table style='width:150px;'>
+ <tr><td class="backgroundmore">BACKGROUND</td>
+ <td><div id="backgroundplug" class="backgroundmore">+</div></td>
+ </tr>
+ </table>
+<div id='thebackground'>
+ <table class='background'><td>BACKGROUND COLOR</td><td><input type="text" value="transparent" class="color_input planebgcolor" id="planebgcolor"></input></td>
+ <td><a href="http://asdf.us/im/colors" class="color_input planebgcolor" target="_blank">COLOR LIST</a></td> </table>
+ <table class="background">
+
+ <tr><td>OR BACKGROUND IMAGE</td><td><input class='urlinput' type="text" value="" id="planebgimage">IMG URL eg:http://ww...</input></td></tr>
+ </table>
+
+ <table class='background'><tr><td>SKYCOLOR</td><td><input type="text" class="color_input skycolor" value="none" id="skycolor">for the area above the horizon-line</input></td>
+ <td><a href="http://asdf.us/im/colors" class="color_input skycolor" target="_blank">COLOR LIST</a></td>
+ </tr>
+</table>
+
+</div>
+<table>
+ <tr><td>&nbsp</td></tr>
+ <tr><td>USERNAME</td><td><input type=text value="" id='username'></input></td><td><div class='linksmore' id='linksplug'>+</div></td>
+<td> <div id='links' class='links'>
+ <a class='links' href="http://asdf.us/im/gallery">PHOTOBLASTER GALLERY</a><br>
+ <a class='links' href="http://asdf.us/imgrid/greatgrids/">THE GREAT GRIDS GALLERY</a><br>
+ <a class='links' href="http://asdf.us/im">MAIN PHOTOBLASTER EDITOR</a></br>
+<div id="fb-root" style="position:fixed; bottom:10px; right:10px;background-color: transparent;"></div><script src="http://connect.facebook.net/en_US/all.js#appId=236917449658413&amp;xfbml=1"></script><fb:like href="http://asdf.us/im/" send="false" width="347" show_faces="false" colorscheme="light" font="" style="background-color: transparent;"></fb:like>
+
+ </div>
+
+</td></tr></table>
+
+<br>
+
+
+</div>
+
+</div>
+
+</form>
+<div id='result'>
+ <span id="output-cmd" class='results'>
+</span>
+ <span id="output-img" class='results'></span>
+ <input id="output-url" class='results'></input>
+ <div id="output-info" class='results'></div>
+</div>
+
+
+
+
+<span class='copyright' style="position:fixed; bottom:10px; left:10px;">COPYRIGHT 2011 PEPPER</span><a href='http://asdf.us/imgrid/greatgrids/index.html'><img class='copyright' style='display:inline; position:fixed; bottom:10px; left:290px; width:100px' src="img/blackplant.png"></img></a>
+<script type="text/javascript" src="js/jquery-1.6.4.min.js"></script>
+<script type="text/javascript" src="js/jquery-ui-1.8.16.custom.min.js"></script>
+<script type="text/javascript" src="/im/colors/js/jquery.remember-state.js"></script>
+<script type="text/javascript" src="/im/colors/js/jquery.fancybox.js?v=2.1.5"></script>
+<link rel="stylesheet" type="text/css" href="/im/colors/css/jquery.fancybox.css?v=2.1.5" media="screen" />
+<script type="text/javascript" src="js/colors_iframe.js"></script>
+<script type='text/javascript'>
+$(document).ready(function()
+ {
+ $('#intro').fadeOut(1000,function()
+ {
+ $('#intro').remove()
+ })
+ });
+</script>
+<script type="text/javascript" src="js/sliders.js"></script>
+<script type="text/javascript" src="js/imgrid-main.js"></script>
+<script type='text/javascript'>
+ linksclicked = 'false';
+ $('#linksplug').click(function(){
+ $('.links').toggle('300')
+
+ if(linksclicked === 'false'){
+ $('#linksplug').html('-')
+ $('.links').css({'min-width':'275px','word-space':'nowrap','min-height':'100px'})
+ linksclicked = 'true'
+ }
+ else{
+ $('#linksplug').html('+')
+ $('#links').css('padding','0px');
+ linksclicked = 'false'
+ }
+ $('.copyright').hide()
+ $("body,html").scrollTop(5000);
+ })
+
+ gridmoreclicked = 'false';
+ $('.gridmore').click(function(){
+ $('.gridadj').toggle('300')
+
+ if(gridmoreclicked === 'false'){
+ $('#gridplug').html('-')
+ $('#thegrid').css('padding','5px');
+ gridmoreclicked = 'true'
+ $("html,body").scrollTop(1000);
+ }
+ else{
+ $('#gridplug').html('+')
+ $('#thegrid').css('padding','0px');
+ gridmoreclicked = 'false'
+ }
+ $('.copyright').hide()
+ })
+
+
+
+ backgroundmoreclicked = 'false';
+ $('#backgroundplug').html('+');
+ $('.backgroundmore').click(function(){
+ $('.background').toggle('300')
+ if(backgroundmoreclicked === 'false'){
+ $('#thebackground').css('padding','5px');
+ $('#backgroundplug').html('-')
+ $("html,body").scrollTop(1000);
+ backgroundmoreclicked = 'true'
+ }
+ else{
+ $('#backgroundplug').html('+')
+ $('#thebackground').css('padding','0px');
+ backgroundmoreclicked = 'false'
+ }
+ $('.copyright').hide()
+ });
+
+
+ dimensionsmoreclicked = 'false';
+ $('#dimensionsplug').html('+');
+ $('.dimensionsmore').click(function(){
+ $('.dimensions').toggle('300')
+ if(dimensionsmoreclicked === 'false'){
+ $('#dimensionsplug').html('-')
+ $('#thedimensions').css('padding','5px');
+ $("html,body").scrollTop(1000);
+ dimensionsmoreclicked = 'true'
+ }
+ else{
+ $('#dimensionsplug').html('+')
+ $('#thedimensions').css('padding','0px');
+ dimensionsmoreclicked = 'false'
+ }
+ $('.copyright').hide()
+ });
+
+
+ $('#bg-color').click(function(){
+ nonecheck = $('#bg-color').val()
+ if(nonecheck === 'none')
+ {
+ $('#bg-color').val('')
+ }
+ });
+ function clearbg()
+ {
+ $('#planebgcolor').val("");
+ }
+ $('#planebgimage, #planebgcolor').click(function(){clearbg()});
+ $('#planebgcolor').click(function(){clearbg});
+$('#line-color, #bg-color, #skycolor').click(function(){
+ $(this).val("");
+})
+</script>
+<script type="text/javascript" src="http://asdf.us/js/pbembed.js"></script>
+</body>
+</html>
diff --git a/frontend/imgrid/indexOLD.html b/frontend/imgrid/indexOLD.html
new file mode 100755
index 0000000..0e72d37
--- /dev/null
+++ b/frontend/imgrid/indexOLD.html
@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
+<html>
+<!--
+ __ __ __ __ __ __ __
+/_/\/\ /_/\/\ /_/\/\ /_/\/\ /_/\/\ /_/\/\ /_/\/\
+\_\ / \_\ / \_\ / \_\ / \_\ / \_\ / \_\ /
+/_/ \ /_/ \ /_/ \ /_/ \ /_/ \ /_/ \ /_/ \
+\_\/\ \ \_\/\ \ \_\/\ \ \_\/\ \ \_\/\ \ \_\/\ \ \_\/\ \
+ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/
+-->
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta name="description" content="IMGRID A 3D GRID-PLANE GENERATOR" >
+ <meta name="keywords" content="photoblaster, 3D" >
+ <meta name=Author content="Pepper Dreamteamer - 2011 www.facebook.com/AAAFFF">
+ <link rel="shortcut icon" href="http://asdf.us/imgrid/favicon.ico">
+ <link rel="image_src" href="http://vfile.com/public/img/1.png" >
+ <!--<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">-->
+ <meta property="og:title" content="imgrid" />
+ <meta property="og:type" content="website" />
+ <meta property="og:url" content="http://asdf.us/imgrid" />
+ <meta property="og:site_name" content="IMGRID - A 3D-GRID-PLANE GENERATOR" />
+ <title>IMGRID - a 3D GRID-PLANE GENERATOR</title>
+
+ <link rel="stylesheet" href="general.css" type="text/css" media="screen" />
+ <link href="colorpixx.css" rel="stylesheet" type="text/css" />
+ <link href='main2.css' rel='stylesheet' type='text/css' />
+ <link href='jquery-ui-1.8.16.custom.css' rel='stylesheet' type='text/css' />
+ <link href='http://fonts.googleapis.com/css?family=Quicksand' rel='stylesheet' type='text/css'>
+ <link href='http://fonts.googleapis.com/css?family=Ubuntu+Condensed' rel='stylesheet' type='text/css'>
+ <link href='http://fonts.googleapis.com/css?family=Terminal+Dosis' rel='stylesheet' type='text/css'>
+
+</head>
+<body>
+<!--popupcode-->
+ <div id="popupContact">
+ <a id="popupContactClose">x</a>
+ <applet code="org.jdesktop.applet.util.JNLPAppletLauncher"
+ width=800
+ height=600
+ archive="dist/deployment/v1/jar/applet-launcher.jar,
+ dist/deployment/v1/jar/gluegen-rt.jar,
+ dist/deployment/v1/jar/jogl.all.jar,
+ dist/3dmap.jar">
+ <param name="codebase_lookup" value="false">
+ <param name="subapplet.classname" value="com.scannerjammer.applet.heightmap.applet.Simple3DLandscapeApplet">
+ <param name="subapplet.displayname" value="3D Map">
+ <param name="noddraw.check" value="true">
+ <param name="progressbar" value="true">
+ <param name="jnlpNumExtensions" value="1">
+ <param name="jnlpExtension1"
+ value="dist/deployment/v1/jogl-awt.jnlp">
+ <param name="java_arguments" value="-Dsun.java2d.noddraw=true">
+ <param name="jnlp_href" value="dist/3dmap.jnlp">
+</applet>
+ </div>
+ <div id="backgroundPopup"></div>
+<!--endpopup code-->
+
+
+<h1>IMGRID: A 3D-GRID-PLANE GENERATOR FROM PHOTOBLASTER</h1>
+<h2 id="use">USE:</h2>
+<div id="controls">
+<h2>I. THE FLAT PLANE
+<span id="swingleft" >II. THE 3D PLANE<br> CLICK TO OPEN JAVA APPLET</span></h2>
+<div id="flatcontrols">
+<h3>CHOOSE AN IMAGE SIZE: HEIGHT<input id='img-height' type='text' value='400'><span style="font-size:12px">PX</span></input>WIDTH<input id='img-width' type='text' value='400'><span style="font-size:12px">PX</span></input></h3>
+<h3>CHOOSE THE LINE THICKNESS:<input id='line-thickness' type='text' value='1'><span style="font-size:12px">PX</span></input></h3>
+<h3>CHOOSE A LINE COLOR:<input id='line-color' type='text' value='BLACK'><span style="font-size:12px">PX</span></input></h3>
+
+<h3>ADJUST LINE OPACITY: <input id='line-opacity' type='text' value='1'></input>
+<div class="slider" id="opacity-slider"></div></h3>
+<h3>ADJUST SPACING: <input id='line-spacing' type='text' value='0'><span style='font-size:12px'>PX</span></input>
+<div class="slider" id="spacing-slider"></div></h3>
+<h4>USE ONLY VERTICAL LINES<input type="checkbox" id="v-lines" value="false"></input></h4>
+<h4>USE ONLY HORIZONTAL LINES<input type="checkbox" id="h-lines" value="false" ></input></h4>
+<h4>ADD A SHADOW<input type='checkbox' id='shadow' value='false'</input></h4>
+<h3>CHOOSE BACKGROUND OF GRID:</h3>
+<h4>TRANSPARENT? (THE DEFAULT)<input type="checkbox" id="bgtransparent" value="true" checked="checked"></input></h4>
+<h4>USE AN IMAGE?<input class="urlinput" type="text" id="bg-image" value="">IMG URL eg:http://ww...</input></h4>
+<h4>USE A COLOR?<input type="text" id="bg-color" value=""><a href="http://asdf.us/im/colors.html" target="_blank">SEE COLOR LIST</a></input></h4>
+<h3>ADJUST WITHIN THE 3D PLANE:</h3>
+<h4>USE IMAGE INSTEAD OF GRID<input type="text" class="urlinput" type="text" id="imageinstead" value="">IMG URL eg:http://ww...</input></h4>
+<h4>CHOOSE A BACKGROUND COLOR<input type="text" value="transparent" id="planebgcolor"><a href="http://asdf.us/im/colors.html" target="_blank">SEE COLOR LIST</a></input></h4>
+<h4>OR USE A BACKGROUND IMAGE</h4><input type="text" value="" id="planebgimage">IMG URL eg:http://ww...</input></h4>
+<h4>CHOOSE A SKYCOLOR</h4><input type="text" value="none" id="skycolor">for the area above the horizon-line</input></h4>
+<h4>ADD A DITHERED-TRANSITION</h4><input type="checkbox" id="dither"></input></h4>
+<h3>SWING<input id='swing' type='text' value='0'></input>
+<div id="swingslider" class="slider"></div></h3>
+<h3>TILT<input id='tilt' type='text' value='0'></input>
+<div id="tiltslider" class="slider"></div></h3>
+<h3>ROLL<input id='roll' type='text' value='0'></input>
+<div id="rollslider" class="slider"></div></h3>
+<h3>ZOOM<input id='zoom' type='text' value='0'></input>
+<div id="zoomslider" class="slider" value='0'></div></h3>
+<h3>TRIM IT<input type="checkbox" id="trim" value="false"></input></h3>
+<h4>ADJUST THE IMAGE FORMAT<select id='format'>
+ <option selected='selected' value='png'>PNG</option>
+ <option value='gif'>GIF</option>
+ <option value='jpg'>JPG</option>
+</select></h4>
+<h3><input type=text value="" id='username'>&larr; ENTER YOUR NAME if you want </input></h4>
+<button id="generate">GENERATE</button>
+<input type="reset" value="Reset Form">
+</div>
+</div>
+<span id="output-cmd" style="background-color:pink; position:absolute; right:70px; top:50px;">click generate or hit enter to get your 2D plane</span>
+<span id="output-img" style="background-color:pink; position:absolute; right:300px; top:70px;"></span>
+<div id="output-url" style="background-color:pink; position:absolute; right:300px; top:90px;"></div>
+<div id="result" style="background-color:pink; position:absolute; right:300px; top:130px;"></div>
+<div id="colorlist" style="background-color:red; height:600px; width:300px; position:fixed; top:20px; right:10%; z-index:20px;"></div>
+<h5>COPYRIGHT 2011 PEPPER DREAMTEAMER</h5>
+
+
+<div id="intro" style="background-color:white">
+<!--<div id="bg">
+ <div><table cellspacing=0 cellpadding=0><tr><td>
+ <img src="background.gif" />
+ </td></tr></table></div>
+</div>-->
+<div id="athena"><img src="athenafinal.gif"></img></div>
+</div>
+<script type="text/javascript" src="jquery-1.6.4.min.js"></script>
+<script type="text/javascript" src="jquery-ui-1.8.16.custom.min.js"></script>
+<script type="text/javascript" src="sliders.js"></script>
+<script type="text/javascript">$('#intro').remove();</script>
+<!--<script type="text/javascript" src="intro.js">-->
+<script type="text/javascript" src="main.js"></script>
+<script src="popup.js" type="text/javascript"></script>
+<script type="text/javascript" src="picker.js"></script>
+
+
+
+
+
+
+
+</body>
+</html>
diff --git a/frontend/imgrid/indexnewold.html b/frontend/imgrid/indexnewold.html
new file mode 100755
index 0000000..bcb5cd3
--- /dev/null
+++ b/frontend/imgrid/indexnewold.html
@@ -0,0 +1,336 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
+<html>
+<!--
+ * CHICAGO *
+ *** BULLS ***
+ **** NBA ****
+ * ****** CHAMPIONS ****** *
+ * *************************************** *
+ ** * ______*______ * **
+ ***** * ______*______ * *****
+ ******* ______*______ *******
+ *** **** * **** ***
+ ****** *oo******* *** *******oo* ******
+ * *o********* *********o* *
+ * * * *
+ * * _ _ * *
+ * * -_ _- * *
+ * * -_ _- * *
+ * * -___- * *
+ * *
+ *********************
+ * ** ** *
+ * ** ** *
+ * _-----_ *
+ *********
+
+-->
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta name="description" content="IMGRID A 3D GRID-PLANE GENERATOR" >
+ <meta name="keywords" content="photoblaster, 3D" >
+ <meta name=Author content="Pepper Dreamteamer - 2011 www.facebook.com/AAAFFF">
+ <link rel="shortcut icon" href="http://asdf.us/imgrid/favicon.ico">
+ <link rel="image_src" href="http://vfile.com/public/img/1.png" >
+ <!--FACEBOOK<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">-->
+ <meta property="og:title" content="imgrid" />
+ <meta property="og:type" content="website" />
+ <meta property="og:url" content="http://asdf.us/imgrid" />
+ <meta property="og:site_name" content="IMGRID - A 3D-GRID-PLANE GENERATOR" />
+ <title>IMGRID - a 3D GRID-PLANE GENERATOR</title>
+
+ <link rel="stylesheet" href="general.css" type="text/css" media="screen" />
+ <link href="colorpixx.css" rel="stylesheet" type="text/css" />
+ <link href='main2.css' rel='stylesheet' type='text/css' />
+ <link href='jquery-ui-1.8.16.custom.css' rel='stylesheet' type='text/css' />
+ <link href='cssreset.css' rel='stylesheet' type='text/css'/>
+ <style type='text/css'>
+ body
+ {
+ font-family:georgia, Arial;
+ font-size:10pt;
+ }
+ h1
+ {
+ font-size:18px;
+ // font-weight:bold;
+ width:50%;
+ margin:10px;
+ padding:10px;
+// box-shadow: 0px 0px 9px 4px #8B7D7B;
+ }
+ #flatcontrols
+ {
+ // background-color:whitesmoke;
+ // box-shadow: 0px 0px 9px 3px #00EEEE;
+ width:40%;
+ margin:10px;
+ padding:10px;
+ }
+ .lineadj{display:none;}
+ .threedadj{display:none;}
+ .gridbgadj{display:none;}
+ .imageoptions{display:none;}
+ .results
+ {
+ display:none;
+ position:relative;
+ z-index:100;
+ }
+ .slider
+ {
+ background-color:#eee5de;
+ display:inline-block;
+ width:50%;
+ }
+ #opacity-slider
+ {
+ width:100%;
+ display:inline-block;
+ margin-right:0;
+ margin-left:0;
+ }
+ input
+ {
+ width:70px;
+ }
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default
+ {
+ background-color:#555;
+ }
+ #result
+ {
+ position:absolute;
+ right:20px;
+ top:10px;
+ }
+ #output-url
+ {
+ width:100%;
+ }
+ .urlinput
+ {
+ width:60%;
+ }
+ a
+ {
+ background-color:#8B8B83;
+ max-width:100px;
+ border-style:solid;
+ border-width:1px;
+ }
+ a:link
+ {
+ color: gold;
+ }
+ a:visited
+ {
+ COLOR: mediumspringgreen;
+ }
+ a:hover
+ {
+ COLOR: #FF0000;
+ }
+ a:active
+ {
+ COLOR: #00FF00;
+ }
+ table td
+ {
+ padding:4px;
+// border:solid 2px;
+ }
+ table tr
+ {
+// border: solid 2px;
+ }
+ </style>
+</head>
+<body>
+<!--popupcode-->
+<!-- <div id="popupContact">
+ <a id="popupContactClose">x</a>
+ <applet code="org.jdesktop.applet.util.JNLPAppletLauncher"
+ width=800
+ height=600
+ archive="dist/deployment/v1/jar/applet-launcher.jar,
+ dist/deployment/v1/jar/gluegen-rt.jar,
+ dist/deployment/v1/jar/jogl.all.jar,
+ dist/3dmap.jar">
+ <param name="codebase_lookup" value="false">
+ <param name="subapplet.classname" value="com.scannerjammer.applet.heightmap.applet.Simple3DLandscapeApplet">
+ <param name="subapplet.displayname" value="3D Map">
+ <param name="noddraw.check" value="true">
+ <param name="progressbar" value="true">
+ <param name="jnlpNumExtensions" value="1">
+ <param name="jnlpExtension1"
+ value="dist/deployment/v1/jogl-awt.jnlp">
+ <param name="java_arguments" value="-Dsun.java2d.noddraw=true">
+ <param name="jnlp_href" value="dist/3dmap.jnlp">
+</applet>
+ </div>
+ <div id="backgroundPopup"></div>
+endpopup code-->
+
+
+<h1>IMGRID </h1>
+<h2 style="font-size:16px;margin:10px;padding:10px;">A 3D-GRID-PLANE GENERATOR FROM PHOTOBLASTER</h2>
+
+<!--<h2 id="use">USE:</h2>
+ <div id="controls">
+ <h2>I. THE FLAT PLANE
+ <span id="swingleft" >II. THE 3D PLANE (forthcoming)
+ <br> CLICK TO OPEN JAVA APPLET</span></h2>-->
+
+ <div id="flatcontrols">
+<table style="width:100%">
+ <tr><td>SWING<input id='swing' type='text' value='0'></input></td></tr>
+ <tr id="swingslider" class="slider"></tr>
+ <tr><td>TILT<input id='tilt' type='text' value='0'></input></td></tr>
+ <tr id="tiltslider" class="slider"></tr>
+ <tr><td>ROLL<input id='roll' type='text' value='0'></input></td></tr>
+ <tr id="rollslider" class="slider"></tr>
+ <tr><td>ZOOM<input id='zoom' type='text' value='0'></input></td></tr>
+ <tr id="zoomslider" class="slider" value='0'></tr></table><table>
+
+</table>
+<br>
+
+<table>
+<tr><td>3D PLANE</td>
+
+ <td> <button id='threedmore'>OPTIONS</button></td></tr>
+ </table>
+ <table>
+
+ <tr class='threedadj'><td>GRID THICKNESS:</td>
+ <td><input id='line-thickness' type='text' value='1'><span style="font-size:12px">PX</span></input></td></tr>
+
+ <tr class='threedadj'><td>GRID COLOR:</td>
+ <td><input id='line-color' type='text' value='BLACK'></input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">SEE COLOR LIST</a></td>
+ </tr>
+
+
+ <tr class='threedadj'>
+ <td>GRID OPACITY: </td>
+ <td><input id='line-opacity' type='text' value='1'></input></td>
+ <td class="slider" style="margin:0;padding:0;"id="opacity-slider"></td>
+ </tr>
+
+ <tr class='threedadj'>
+ <td>GRID SPACING: </td>
+ <td><input id='line-spacing' type='text' value='0'><span style='font-size:12px'>PX</span></input></td>
+ <td class="slider" style="margin:0;padding:0;" id="spacing-slider"></td></tr>
+
+ <tr class='threedadj'><td>USE ONLY VERTICAL LINES</td><td><input type="checkbox" id="v-lines" value="false"></input></td></tr>
+
+ <tr class='threedadj'><td>USE ONLY HORIZONTAL LINES</td><td><input type="checkbox" id="h-lines" value="false" ></input></td></tr>
+ </table>
+
+
+<table>
+ <tr class='threedadj'><td>USE IMAGE INSTEAD OF GRID</td>
+ <td><input type="text" class="urlinput" type="text" id="imageinstead" value="">IMG URL eg:http://ww...</input></td>
+ </tr></table>
+ <table>
+ <tr class='threedadj'><td>DROP SHADOW</td><td><input type='checkbox' id='shadow' value='false'</input></td></tr>
+
+
+</table>
+ <table>
+<tr><td>GRID BACKGROUND:</td>
+
+<td> <button id='gridbgmore'>OPTIONS</button></td></tr>
+ <tr class='gridbgadj'><td>TRANSPARENT? (THE DEFAULT)</td><td><input type="checkbox" id="bgtransparent" value="true" checked="checked"></input></td></tr>
+ <tr class='gridbgadj'><td>USE AN IMAGE?</td>
+ <td><input class="urlinput" type="text" id="bg-image" value="">IMG URL eg:http://ww...</input></td></tr>
+ </table><table class='gridbgadj'><td>USE A COLOR?<input type="text" id="bg-color" value=""></td><td><a href="http://asdf.us/im/colors.html" target="_blank">SEE COLOR LIST</a></input></td>
+
+ </table>
+
+
+<table>
+ <tr class='threedadj'><td>DITHERED-TRANSITION</td>
+ <td><select id="transition">
+ <option selected="selected" value='background'>none</option>
+ <option value="dither">dithered</option>
+ <option value="tile">infinite</option>
+ </select></td></tr>
+
+</table>
+ <table>
+ <tr><td>IMAGE:</td>
+ <td><button id="imageoptionsmore">OPTIONS</button></td>
+ </tr>
+ </table>
+ <table class='imageoptions'><td>BACKGROUND COLOR</td><td><input type="text" value="transparent" id="planebgcolor"></input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">SEE COLOR LIST</a></td> </table>
+ <table>
+
+ <tr class='imageoptions'><td>OR BACKGROUND IMAGE</td><td><input class='urlinput' type="text" value="" id="planebgimage">IMG URL eg:http://ww...</input></td></tr>
+ </table>
+
+ <table><tr class='imageoptions'><td>SKYCOLOR</td><td><input type="text" value="none" id="skycolor">for the area above the horizon-line</input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">SEE COLOR LIST</a></td>
+ </tr>
+ <tr class="imageoptions"><td>HEIGHT</td>
+ <td> <input id='img-height' type='text' value='300'><span style="font-size:12px">PX</span></input></td></td>
+
+ <tr class="imageoptions"><td>WIDTH</td>
+ <td><input id='img-width' type='text' value='400'><span style="font-size:12px">PX</span></input></td></td></table>
+<table>
+ <tr class="imageoptions"><td>TRIM WHITESPACE</td><td><input type="checkbox" id="trim" value="false"></input></td></tr>
+ <tr class="imageoptions"><td>IMAGE FORMAT</td><td>
+ <select id='format'>
+ <option selected='selected' value='png'>PNG</option>
+ <option value='gif'>GIF</option>
+ <option value='jpg'>JPG</option>
+ </select></td></tr></table>
+
+<table>
+
+ <tr><input type=text value="" id='username'>&larr; ENTER YOUR NAME if you want </input></tr>
+</table>
+<table>
+<button id="generate">GENERATE</button>
+
+<!--<input type="reset" value="Reset Form">-->
+
+</div>
+
+</div>
+
+<div id='result'>
+ <span id="output-cmd" class='results'>click generate or hit enter to get your 2D plane</span>
+ <span id="output-img" class='results'></span>
+ <input id="output-url" class='results'></input>
+ <div id="output-info" class='results'></div>
+</div>
+
+<h5 style="position:fixed; bottom:10px; left:10px;">COPYRIGHT 2011 PEPPER DREAMTEAMER</h5>
+<div id="intro" style="background-color:white">
+<!--<div id="bg">
+ <div><table cellspacing=0 cellpadding=0><tr><td>
+ <img src="background.gif" />
+ </td></tr></table></div>
+</div>-->
+<div id="athena"><img src="athenafinal.gif"></img></div>
+</div>
+<script type="text/javascript" src="jquery-1.6.4.min.js"></script>
+<script type="text/javascript" src="jquery-ui-1.8.16.custom.min.js"></script>
+<script type="text/javascript" src="sliders.js"></script>
+<script type="text/javascript">$('#intro').remove();</script>
+<!--<script type="text/javascript" src="intro.js">-->
+<script type="text/javascript" src="main.js"></script>
+<!--<script src="popup.js" type="text/javascript"></script>-->
+<!--<script type="text/javascript" src="picker.js"></script>-->
+<script type='text/javascript'>
+ $('#linemore').click(function(){$('.lineadj').toggle('300')})
+ $('#threedmore').click(function(){$('.threedadj').toggle('300')})
+ $('#gridbgmore').click(function(){$('.gridbgadj').toggle('300')})
+ $('#imageoptionsmore').click(function(){$('.imageoptions').toggle('300')});
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/indexold.html b/frontend/imgrid/indexold.html
new file mode 100755
index 0000000..5c1e27e
--- /dev/null
+++ b/frontend/imgrid/indexold.html
@@ -0,0 +1,322 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
+<html>
+<!--
+ * CHICAGO *
+ *** BULLS ***
+ **** NBA ****
+ * ****** CHAMPIONS ****** *
+ * *************************************** *
+ ** * ______*______ * **
+ ***** * ______*______ * *****
+ ******* ______*______ *******
+ *** **** * **** ***
+ ****** *oo******* *** *******oo* ******
+ * *o********* *********o* *
+ * * * *
+ * * _ _ * *
+ * * -_ _- * *
+ * * -_ _- * *
+ * * -___- * *
+ * *
+ *********************
+ * ** ** *
+ * ** ** *
+ * _-----_ *
+ *********
+
+-->
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta name="description" content="IMGRID A 3D GRID-PLANE GENERATOR" >
+ <meta name="keywords" content="photoblaster, 3D" >
+ <meta name=Author content="Pepper Dreamteamer - 2011 www.facebook.com/AAAFFF">
+ <link rel="shortcut icon" href="http://asdf.us/imgrid/favicon.ico">
+ <link rel="image_src" href="http://vfile.com/public/img/1.png" >
+ <!--FACEBOOK<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">-->
+ <meta property="og:title" content="imgrid" />
+ <meta property="og:type" content="website" />
+ <meta property="og:url" content="http://asdf.us/imgrid" />
+ <meta property="og:site_name" content="IMGRID - A 3D-GRID-PLANE GENERATOR" />
+ <title>IMGRID - a 3D GRID-PLANE GENERATOR</title>
+
+ <link rel="stylesheet" href="general.css" type="text/css" media="screen" />
+ <link href="colorpixx.css" rel="stylesheet" type="text/css" />
+ <link href='main2.css' rel='stylesheet' type='text/css' />
+ <link href='jquery-ui-1.8.16.custom.css' rel='stylesheet' type='text/css' />
+ <link href='cssreset.css' rel='stylesheet' type='text/css'/>
+ <style type='text/css'>
+ body
+ {
+ font-family:georgia, Arial;
+ font-size:10pt;
+ }
+ h1
+ {
+ font-size:18px;
+ width:50%;
+ margin:10px;
+ padding:10px;
+// box-shadow: 0px 0px 9px 4px #8B7D7B;
+ }
+ #flatcontrols
+ {
+ // background-color:whitesmoke;
+ // box-shadow: 0px 0px 9px 3px #00EEEE;
+ width:40%;
+ margin:10px;
+ padding:10px;
+ }
+ .lineadj{display:none;}
+ .threedadj{display:none;}
+ .gridbgadj{display:none;}
+ .imageoptions{display:none;}
+ .results
+ {
+ display:none;
+ position:relative;
+ z-index:100;
+ }
+ .slider
+ {
+ background-color:#eee5de;
+ display:inline-block;
+ width:50%;
+ }
+ #opacity-slider
+ {
+ width:100%;
+ display:inline-block;
+ margin-right:0;
+ margin-left:0;
+ }
+ input
+ {
+ width:70px;
+ }
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default
+ {
+ background-color:#555;
+ }
+ #result
+ {
+ position:absolute;
+ right:20px;
+ top:10px;
+ }
+ #output-url
+ {
+ width:100%;
+ }
+ .urlinput
+ {
+ width:60%;
+ }
+ a
+ {
+ background-color:#8B8B83;
+ max-width:100px;
+ border-style:solid;
+ border-width:1px;
+ }
+ a:link
+ {
+ color: gold;
+ }
+ a:visited
+ {
+ COLOR: mediumspringgreen;
+ }
+ a:hover
+ {
+ COLOR: #FF0000;
+ }
+ a:active
+ {
+ COLOR: #00FF00;
+ }
+ table td
+ {
+ padding:4px;
+// border:solid 2px;
+ }
+ table tr
+ {
+// border: solid 2px;
+ }
+ </style>
+</head>
+<body>
+<!--popupcode-->
+<!-- <div id="popupContact">
+ <a id="popupContactClose">x</a>
+ <applet code="org.jdesktop.applet.util.JNLPAppletLauncher"
+ width=800
+ height=600
+ archive="dist/deployment/v1/jar/applet-launcher.jar,
+ dist/deployment/v1/jar/gluegen-rt.jar,
+ dist/deployment/v1/jar/jogl.all.jar,
+ dist/3dmap.jar">
+ <param name="codebase_lookup" value="false">
+ <param name="subapplet.classname" value="com.scannerjammer.applet.heightmap.applet.Simple3DLandscapeApplet">
+ <param name="subapplet.displayname" value="3D Map">
+ <param name="noddraw.check" value="true">
+ <param name="progressbar" value="true">
+ <param name="jnlpNumExtensions" value="1">
+ <param name="jnlpExtension1"
+ value="dist/deployment/v1/jogl-awt.jnlp">
+ <param name="java_arguments" value="-Dsun.java2d.noddraw=true">
+ <param name="jnlp_href" value="dist/3dmap.jnlp">
+</applet>
+ </div>
+ <div id="backgroundPopup"></div>
+endpopup code-->
+
+
+<h1>IMGRID </h1>
+<h2 style="font-size:16px;margin:10px;padding:10px;">A 3D-GRID-PLANE GENERATOR FROM PHOTOBLASTER</h2>
+
+<!--<h2 id="use">USE:</h2>
+ <div id="controls">
+ <h2>I. THE FLAT PLANE
+ <span id="swingleft" >II. THE 3D PLANE (forthcoming)
+ <br> CLICK TO OPEN JAVA APPLET</span></h2>-->
+
+ <div id="flatcontrols">
+<table style="width:100%">
+ <tr><td>HEIGHT<input id='img-height' type='text' value='300'><span style="font-size:12px">PX</span></input></td>
+
+ <td>WIDTH&nbsp&nbsp<input id='img-width' type='text' value='400'><span style="font-size:12px">PX</span></input></tr>
+ <tr><td>SWING&nbsp&nbsp<input id='swing' type='text' value='0'></input></td></tr>
+ <tr id="swingslider" class="slider"></tr>
+ <tr><td>TILT&nbsp&nbsp<input id='tilt' type='text' value='0'></input></td></tr>
+ <tr id="tiltslider" class="slider"></tr>
+ <tr><td>ROLL&nbsp&nbsp<input id='roll' type='text' value='0'></input></td></tr>
+ <tr id="rollslider" class="slider"></tr>
+ <tr><td>ZOOM&nbsp&nbsp<input id='zoom' type='text' value='0'></input></td></tr>
+ <tr id="zoomslider" class="slider" value='0'></tr></table><table>
+ <tr><td>TRIM WHITESPACE</td><td><input type="checkbox" id="trim" value="false"></input></td></tr>
+
+</table>
+<br>
+
+<table>
+<tr><td>3D PLANE</td>
+
+ <td> <button id='threedmore'>OPTIONS</button></td></tr>
+</table>
+ <table class='threedadj'><td>PLANE BACKGROUND COLOR</td><td><input type="text" value="transparent" id="planebgcolor"></input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">SEE COLOR LIST</a></td> </table>
+ <table>
+
+ <tr class='threedadj'><td>OR USE A BACKGROUND IMAGE</td><td><input class='urlinput' type="text" value="" id="planebgimage">IMG URL eg:http://ww...</input></td></tr>
+ </table>
+<table>
+ <tr class='threedadj'><td>DITHERED-TRANSITION</td>
+ <td><select id="transition">
+ <option selected="selected" value='background'>none</option>
+ <option value="dither">dithered</option>
+ <option value="tile">infinite</option>
+ </select></td></tr>
+
+</table>
+ <table>
+ <tr class='threedadj'><td>DROP SHADOW</td><td><input type='checkbox' id='shadow' value='false'</input></td></tr>
+ <tr class='threedadj'><td>SKYCOLOR</td><td><input type="text" value="none" id="skycolor">for the area above the horizon-line</input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">SEE COLOR LIST</a></td>
+ </tr></table>
+ <table>
+ <tr><td>LINE:</td>
+ <td><button id='linemore'>OPTIONS</button></td>
+
+
+ <tr class='lineadj'><td>LINE THICKNESS:</td>
+ <td><input id='line-thickness' type='text' value='1'><span style="font-size:12px">PX</span></input></td></tr>
+
+ <tr class='lineadj'><td>LINE COLOR:</td>
+ <td><input id='line-color' type='text' value='BLACK'></input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">SEE COLOR LIST</a></td>
+ </tr>
+
+
+ <tr class='lineadj'>
+ <td>LINE OPACITY: </td>
+ <td><input id='line-opacity' type='text' value='1'></input></td>
+ <td class="slider" style="margin:0;padding:0;"id="opacity-slider"></td>
+ </tr>
+
+ <tr class='lineadj'>
+ <td>LINE SPACING: </td>
+ <td><input id='line-spacing' type='text' value='0'><span style='font-size:12px'>PX</span></input></td>
+ <td class="slider" style="margin:0;padding:0;" id="spacing-slider"></td></tr>
+
+ <tr class='lineadj'><td>USE ONLY VERTICAL LINES</td><td><input type="checkbox" id="v-lines" value="false"></input></td></tr>
+
+ <tr class='lineadj'><td>USE ONLY HORIZONTAL LINES</td><td><input type="checkbox" id="h-lines" value="false" ></input></td></tr>
+ </table>
+<table class="lineadj">
+ <tr><td>USE IMAGE INSTEAD OF GRID</td>
+ <td><input type="text" class="urlinput" type="text" id="imageinstead" value="">IMG URL eg:http://ww...</input></td>
+ </tr></table>
+
+ <table>
+ </table>
+ <table>
+<tr><td>GRID BACKGROUND:</td>
+
+<td> <button id='gridbgmore'>OPTIONS</button></td></tr>
+ <tr class='gridbgadj'><td>TRANSPARENT? (THE DEFAULT)</td><td><input type="checkbox" id="bgtransparent" value="true" checked="checked"></input></td></tr>
+ <tr class='gridbgadj'><td>USE AN IMAGE?</td>
+ <td><input class="urlinput" type="text" id="bg-image" value="">IMG URL eg:http://ww...</input></td></tr>
+ </table><table class='gridbgadj'><td>USE A COLOR?<input type="text" id="bg-color" value=""></td><td><a href="http://asdf.us/im/colors.html" target="_blank">SEE COLOR LIST</a></input></td>
+
+ </table>
+
+
+<table>
+ <tr><td>IMAGE FORMAT</td><td>
+ <select id='format'>
+ <option selected='selected' value='png'>PNG</option>
+ <option value='gif'>GIF</option>
+ <option value='jpg'>JPG</option>
+ </select></td></tr></table>
+
+<table>
+
+ <tr><input type=text value="" id='username'>&larr; ENTER YOUR NAME if you want </input></tr>
+</table>
+<table>
+<button id="generate">GENERATE</button>
+
+
+</div>
+
+</div>
+
+<div id='result'>
+ <span id="output-cmd" class='results'>click generate or hit enter to get your 2D plane</span>
+ <span id="output-img" class='results'></span>
+ <input id="output-url" class='results'></input>
+ <div id="output-info" class='results'></div>
+</div>
+
+<h5 style="position:fixed; bottom:10px; left:10px;">COPYRIGHT 2011 PEPPER DREAMTEAMER</h5>
+<div id="intro" style="background-color:white">
+<div id="athena"><img src="athenafinal.gif"></img></div>
+</div>
+<script type="text/javascript" src="jquery-1.6.4.min.js"></script>
+<script type="text/javascript" src="jquery-ui-1.8.16.custom.min.js"></script>
+<script type="text/javascript" src="sliders.js"></script>
+<script type="text/javascript">$('#intro').remove();</script>
+<!--<script type="text/javascript" src="intro.js">-->
+<script type="text/javascript" src="main.js"></script>
+<!--<script src="popup.js" type="text/javascript"></script>-->
+<!--<script type="text/javascript" src="picker.js"></script>-->
+<script type='text/javascript'>
+ $('#linemore').click(function(){$('.lineadj').toggle('300')})
+ $('#threedmore').click(function(){$('.threedadj').toggle('300')})
+ $('#gridbgmore').click(function(){$('.gridbgadj').toggle('300')})
+ $('#imageoptionsmore').click(function(){$('.imageoptions').toggle('300')});
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/intro.html b/frontend/imgrid/intro.html
new file mode 100755
index 0000000..5c14969
--- /dev/null
+++ b/frontend/imgrid/intro.html
@@ -0,0 +1,106 @@
+<html>
+<head>
+ <meta charset="utf-8" />
+ <meta name="description" content="IMGRID A 3D GRID-PLANE GENERATOR" >
+ <meta name="keywords" content="photoblaster, 3D" >
+ <link rel="shortcut icon" href="http://asdf.us/imgrid/favicon.ico">
+ <link rel="image_src" href="http://vfile.com/public/img/1.png" >
+ <!--<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">-->
+ <meta property="og:title" content="imgrid" />
+ <meta property="og:type" content="website" />
+ <meta property="og:url" content="http://asdf.us/imgrid" />
+ <meta property="og:site_name" content="IMGRID - A 3D-GRID-PLANE GENERATOR" />
+ <title>IMGRID - a 3D GRID-PLANE GENERATOR</title>
+ <style type="text/css">
+html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
+ border: 0pt none;
+ font: inherit;
+ margin: 0pt;
+ padding: 0pt;
+ vertical-align: baseline;
+ }
+body
+ {
+// background-attachment: fixed;
+// background-image: url(background.gif);
+// text-transform: uppercase;
+// background-position: center center;
+ color: black;
+ }
+.vlarge
+ {
+ font-size:22px;
+ }
+.small
+ {
+ font-size:14px;
+ }
+.large
+ {
+ font-size:18px;
+ }
+#bg
+ {
+ postion:absolute;
+ z-index:-1;
+ }
+#athena
+ {
+ position:absolute;
+ z-index:1;
+ top: 20px;
+ left: 20px;
+ }
+ </style>
+<link href='http://fonts.googleapis.com/css?family=Gentium+Book+Basic' rel='stylesheet' type='text/css'>
+</head>
+
+<body>
+<div id="bg">
+ <div><table cellspacing=0 cellpadding=0><tr><td>
+ <img src="background.gif" />
+ </td></tr></table></div>
+</div>
+<div id="athena"><img src="athenafinal.gif"></img></div>
+
+</body>
+<script type="text/javascript" src="/js/jquery.js"></script>
+<script type="text/javascript">
+var intro =
+ {
+ step: 0,
+ steps: 100,
+ delta: 0.02,
+ opacity: 0,
+ spin: function ()
+ {
+ document.getElementById("bg").style.opacity = intro.opacity + intro.delta*intro.step
+ if (intro.step < 10)
+ intro.step += 0.2
+ else
+ intro.step += 3
+ if (intro.step < intro.steps)
+ setTimeout(intro.spin,100)
+ }
+ }
+var newintro =
+ {
+ step: 0,
+ steps: 100,
+ delta: 0.02,
+ opacity: 0,
+ spin: function ()
+ {
+ document.getElementById("athena").style.opacity = newintro.opacity + newintro.delta*newintro.step
+ if (newintro.step < 10)
+ newintro.step += 0.5
+ else
+ newintro.step += 3
+ if (newintro.step < newintro.steps)
+ setTimeout(newintro.spin,100)
+ }
+ }
+intro.spin()
+newintro.spin()
+</script>
+</html> \ No newline at end of file
diff --git a/frontend/imgrid/jeremy.html b/frontend/imgrid/jeremy.html
new file mode 100755
index 0000000..608056d
--- /dev/null
+++ b/frontend/imgrid/jeremy.html
@@ -0,0 +1,398 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
+<html>
+<!--
+ * pepper *
+ *** and ***
+ **** JMD ****
+ * ****** internet CHAMPIONS ****** *
+ * *************************************** *
+ ** * ______*______ * **
+ ***** * ______*______ * *****
+ ******* ______*______ *******
+ *** **** * **** ***
+ ****** *oo******* *** *******oo* ******
+ * *o********* *********o* *
+ * * * *
+ * * _ _ * *
+ * * -_ _- * *
+ * * -_ _- * *
+ * * -___- * *
+ * *
+ *********************
+ * ** ** *
+ * ** ** *
+ * _-----_ *
+ *********
+
+-->
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta name="description" content="IMGRID A 3D GRID-PLANE GENERATOR" >
+ <meta name="keywords" content="photoblaster, 3D" >
+ <meta name=Author content="Pepper Dreamteamer - 2011 www.facebook.com/AAAFFF">
+ <link rel="shortcut icon" href="http://asdf.us/imgrid/favicon.ico">
+ <link rel="image_src" href="http://vfile.com/public/img/1.png" >
+ <!--FACEBOOK<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">-->
+ <meta property="og:title" content="imgrid" />
+ <meta property="og:type" content="website" />
+ <meta property="og:url" content="http://asdf.us/imgrid" />
+ <meta property="og:site_name" content="IMGRID - A 3D-GRID-PLANE GENERATOR" />
+ <title>IMGRID - a 3D GRID-PLANE GENERATOR</title>
+
+ <link rel="stylesheet" href="general.css" type="text/css" media="screen" />
+ <link href="colorpixx.css" rel="stylesheet" type="text/css" />
+ <link href='main2.css' rel='stylesheet' type='text/css' />
+ <link href='jquery-ui-1.8.16.custom.css' rel='stylesheet' type='text/css' />
+ <link href='cssreset.css' rel='stylesheet' type='text/css'/>
+ <style type='text/css'>
+ body
+ {
+ font-family:georgia, Arial;
+ font-size:10pt;
+ }
+ h1
+ {
+ font-size:18px;
+ // font-weight:bold;
+ width:50%;
+ margin:10px;
+ padding:10px;
+// box-shadow: 0px 0px 9px 4px #8B7D7B;
+ }
+ #flatcontrols
+ {
+ // background-color:#CDC5BF;
+ // box-shadow: 0px 0px 9px 3px #00EEEE;
+ width:40%;
+ margin:10px;
+ padding:10px;
+ }
+ .lineadj{display:none;}
+ .threedadj{display:none;}
+ .gridbgadj{display:none;}
+ .imageoptions{display:none;}
+ .results
+ {
+ display:none;
+ position:relative;
+ z-index:-100;
+ }
+ #output-url
+ {
+ z-index:100;
+ width:500px;
+ }
+ .slider
+ {
+ background-color:#eee5de;
+ display:inline-block;
+ width:50%;
+ }
+ #opacity-slider
+ {
+ width:100%;
+ display:inline-block;
+ margin-right:0;
+ margin-left:0;
+ }
+ input
+ {
+ width:70px;
+ }
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default
+ {
+ background-color:#555;
+ }
+ #result
+ {
+ position:fixed;
+ right:20%;
+ top:20px;
+ }
+ #output-url
+ {
+ width:100%;
+ }
+ .urlinput
+ {
+ width:60%;
+ }
+ a
+ {
+ background-color:white;
+ max-width:100px;
+ }
+ a:link
+ {
+ color: black;
+ }
+ a:visited
+ {
+ COLOR: black;
+ }
+ a:hover
+ {
+ COLOR: black;
+ }
+ a:active
+ {
+ COLOR: black;
+ }
+ table td
+ {
+ padding:4px;
+// border:solid 2px;
+ }
+ table tr
+ {
+// border: solid 2px;
+ }
+ #threedmore, #imageoptionsmore
+ {
+ background-color:white;
+ cursor:pointer;
+ font-size:20px;
+ text-align:center;
+ }
+button {
+ background: white;
+ color: #000000;
+ font-size: 18px;
+ font-family: Georgia, serif;
+ text-decoration: none;
+ vertical-align: middle;
+ }
+.button:hover {
+ border-top-color: #78e072;
+ background: #78e072;
+ color: #000000;
+ }
+ </style>
+</head>
+<body>
+<!--popupcode-->
+<!-- <div id="popupContact">
+ <a id="popupContactClose">x</a>
+ <applet code="org.jdesktop.applet.util.JNLPAppletLauncher"
+ width=800
+ height=600
+ archive="dist/deployment/v1/jar/applet-launcher.jar,
+ dist/deployment/v1/jar/gluegen-rt.jar,
+ dist/deployment/v1/jar/jogl.all.jar,
+ dist/3dmap.jar">
+ <param name="codebase_lookup" value="false">
+ <param name="subapplet.classname" value="com.scannerjammer.applet.heightmap.applet.Simple3DLandscapeApplet">
+ <param name="subapplet.displayname" value="3D Map">
+ <param name="noddraw.check" value="true">
+ <param name="progressbar" value="true">
+ <param name="jnlpNumExtensions" value="1">
+ <param name="jnlpExtension1"
+ value="dist/deployment/v1/jogl-awt.jnlp">
+ <param name="java_arguments" value="-Dsun.java2d.noddraw=true">
+ <param name="jnlp_href" value="dist/3dmap.jnlp">
+</applet>
+ </div>
+ <div id="backgroundPopup"></div>
+endpopup code-->
+
+<img src='http://asdf.us/im/8d/imgrid_1324285217_imgrid_1324210455_imgrid_1324210353_gradient_darkseagreencyan_1317343959___.png' style='position:fixed; top:-200px; z-index:-100;'></img>
+<div style='font-size:30px; margin-top:20px;margin-left:20px;'>IMGRID</div>
+<div style="font-size:12px;margin-left:20px;margin-bottom:20px;">3D-GRID-PLANE GENERATOR</div>
+
+<!--<h2 id="use">USE:</h2>
+ <div id="controls">
+ <h2>I. THE FLAT PLANE
+ <span id="swingleft" >II. THE 3D PLANE (forthcoming)
+ <br> CLICK TO OPEN JAVA APPLET</span></h2>-->
+
+ <div id="flatcontrols">
+<table><tr><td style="background-color:white">3D OPTIONS</td></tr></table>
+<br>
+<table style="width:100%">
+ <tr><td>SWING&nbsp<input id='swing' type='text' value='0'></input></td></tr>
+ <tr id="swingslider" class="slider"></tr>
+ <tr><td>TILT&nbsp<input id='tilt' type='text' value='0'></input></td></tr>
+ <tr id="tiltslider" class="slider"></tr>
+ <tr><td>ROLL&nbsp<input id='roll' type='text' value='0'></input></td></tr>
+ <tr id="rollslider" class="slider"></tr>
+ <tr><td>ZOOM&nbsp<input id='zoom' type='text' value='0'></input></td></tr>
+ <tr id="zoomslider" class="slider" value='0'></tr></table><table>
+
+</table>
+<br>
+<br>
+<table>
+<tr style="background-color:white"><td>GRAPHIC OPTIONS</td>
+
+ <td> <div id='threedmore'>+</div></td></tr>
+ </table>
+ <table>
+
+ <tr class='threedadj'><td>GRID THICKNESS:</td>
+ <td><input id='line-thickness' type='text' value='1'></td><td><span style="font-size:12px">PX&nbsp&nbsp</span></input></td></tr>
+
+ <tr class='threedadj'><td>GRID COLOR:</td>
+ <td><input id='line-color' type='text' value='BLACK'></input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></td>
+ </tr>
+
+
+ <tr class='threedadj'>
+ <td>GRID OPACITY: </td>
+ <td><input id='line-opacity' type='text' value='1'></input></td>
+ <td class="slider" style="margin:0;padding:0;"id="opacity-slider"></td>
+ </tr>
+
+ <tr class='threedadj'>
+ <td>GRID SPACING: </td>
+ <td><input id='line-spacing' type='text' value='0'></input></td>
+ <td class="slider" style="margin:0;padding:0;" id="spacing-slider"></td></tr>
+
+ <tr class='threedadj'><td>USE ONLY VERTICAL LINES</td><td><input type="checkbox" id="v-lines" value="false"></input></td></tr>
+
+ <tr class='threedadj'><td>USE ONLY HORIZONTAL LINES</td><td><input type="checkbox" id="h-lines" value="false" ></input></td></tr>
+ </table>
+
+
+<table>
+ <tr class='threedadj'><td>USE IMAGE INSTEAD OF GRID</td>
+ <td><input type="text" class="urlinput" type="text" id="imageinstead" value="">IMG URL eg:http://ww...</input></td>
+ </tr></table>
+<table class='threedadj'><td>GRID BACKGROUND COLOR <input type="text" id="bg-color" value="none"></td><td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></input></td>
+
+ </table>
+ <table>
+ <tr class='threedadj'><td>OR GRID BACKGROUND IMAGE</td>
+ <td><input class="urlinput" type="text" id="bg-image" value="">IMG URL eg:http://ww...</input></td></tr>
+ </table>
+
+<table>
+ <tr class='threedadj'><td>GRID-TRANSITION</td>
+ <td><select id="transition">
+ <option selected="selected" value='background'>none</option>
+ <option value="dither">dithered</option>
+ <option value="tile">infinite</option>
+ </select></td></tr>
+
+</table>
+ <table>
+ <tr class='threedadj'><td>DROP SHADOW</td><td><input type='checkbox' id='shadow' value='false'</input></td></tr>
+
+
+</table>
+
+
+<br>
+
+ <table>
+ <tr style="background-color:white"><td>IMAGE OPTIONS</td>
+ <td><div id="imageoptionsmore">+</div></td>
+ </tr>
+ </table>
+ <table class='imageoptions'><td>BACKGROUND COLOR</td><td><input type="text" value="transparent" id="planebgcolor"></input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></td> </table>
+ <table>
+
+ <tr class='imageoptions'><td>OR BACKGROUND IMAGE</td><td><input class='urlinput' type="text" value="" id="planebgimage">IMG URL eg:http://ww...</input></td></tr>
+ </table>
+
+ <table><tr class='imageoptions'><td>SKYCOLOR</td><td><input type="text" value="none" id="skycolor">for the area above the horizon-line</input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></td>
+ </tr>
+ <tr class="imageoptions"><td>HEIGHT</td>
+ <td> <input id='img-height' type='text' value='500'><span style="font-size:12px">PX</span></input></td></td>
+
+ <tr class="imageoptions"><td>WIDTH</td>
+ <td><input id='img-width' type='text' value='700'><span style="font-size:12px">PX</span></input></td></td></table>
+<table>
+ <tr class="imageoptions"><td>CROP WHITESPACE</td><td><input type="checkbox" id="trim" value="false"></input></td></tr>
+ <tr class="imageoptions"><td>IMAGE FORMAT</td><td>
+ <select id='format'>
+ <option selected='selected' value='png'>PNG</option>
+ <option value='gif'>GIF</option>
+ <option value='jpg'>JPG</option>
+ </select></td></tr></table>
+ <br>
+<table>
+
+ <tr><td>USERNAME</td><td><input type=text value="" id='username'></input></td></tr>
+</table>
+<br>
+<table>
+<button id="generate">GENERATE</button>
+
+<!--<input type="reset" value="Reset Form">-->
+
+</div>
+
+</div>
+
+<div id='result'>
+ <span id="output-cmd" class='results'>click generate or hit enter to get your 2D plane</span>
+ <span id="output-img" class='results'></span>
+ <input id="output-url" class='results'></input>
+ <div id="output-info" class='results'></div>
+</div>
+<div id="likebutton">
+<br>
+<!--<div id="fb-root" style="position:fixed; bottom:10px; right:10px;background-color: transparent;"></div><script src="http://connect.facebook.net/en_US/all.js#appId=236917449658413&amp;xfbml=1"></script><fb:like href="http://asdf.us/im/" send="false" width="347" show_faces="false" colorscheme="light" font="" style="background-color: transparent;"></fb:like>
+-->
+
+
+
+<h5 style="position:fixed; bottom:10px; left:10px;">COPYRIGHT 2011 PEPPER DREAMTEAMER</h5>
+<div id="intro" style="background-color:white">
+<!--<div id="bg">
+ <div><table cellspacing=0 cellpadding=0><tr><td>
+ <img src="background.gif" />
+ </td></tr></table></div>
+</div>-->
+<div id="athena"><img src="athenafinal.gif"></img></div>
+</div>
+<script type="text/javascript" src="jquery-1.6.4.min.js"></script>
+<script type="text/javascript" src="jquery-ui-1.8.16.custom.min.js"></script>
+<script type="text/javascript" src="sliders.js"></script>
+<script type="text/javascript">$('#intro').remove();</script>
+<!--<script type="text/javascript" src="intro.js">-->
+<script type="text/javascript" src="main.js"></script>
+<!--<script src="popup.js" type="text/javascript"></script>-->
+<!--<script type="text/javascript" src="picker.js"></script>-->
+<script type='text/javascript'>
+ threedmoreclicked = 'false';
+ $('#threedmore').click(function(){
+ $('.threedadj').toggle('300')
+
+ if(threedmoreclicked === 'false'){
+ $('#threedmore').html('-')
+ threedmoreclicked = 'true'
+ }
+ else{
+ $('#threedmore').html('+')
+ threedmoreclicked = 'false'
+ }
+ })
+ imageoptionsmoreclicked = 'false';
+ $('#imageoptionsmore').html('+');
+ $('#imageoptionsmore').click(function(){
+ $('.imageoptions').toggle('300')
+ if(imageoptionsmoreclicked === 'false'){
+ $('#imageoptionsmore').html('-')
+ imageoptionsmoreclicked = 'true'
+ }
+ else{
+ $('#imageoptionsmore').html('+')
+ imageoptionsmoreclicked = 'false'
+ }
+
+ });
+ $('#bg-color').click(function(){
+ nonecheck = $('#bg-color').val()
+ if(nonecheck === 'none')
+ {
+ $('#bg-color').val('')
+ }
+ });
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/jmd.html b/frontend/imgrid/jmd.html
new file mode 100755
index 0000000..7816e65
--- /dev/null
+++ b/frontend/imgrid/jmd.html
@@ -0,0 +1,346 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
+<html>
+<!--JMD DOT HTML -->
+<!--
+ * pepper *
+ *** and ***
+ **** JMD ****
+ * ****** internet CHAMPIONS ****** *
+ * *************************************** *
+ ** * ______*______ * **
+ ***** * ______*______ * *****
+ ******* ______*______ *******
+ *** **** * **** ***
+ ****** *oo******* *** *******oo* ******
+ * *o********* *********o* *
+ * * * *
+ * * _ _ * *
+ * * -_ _- * *
+ * * -_ _- * *
+ * * -___- * *
+ * *
+ *********************
+ * ** ** *
+ * ** ** *
+ * _-----_ *
+ *********
+
+-->
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta name="description" content="IMGRID A 3D GRID-PLANE GENERATOR" >
+ <meta name="keywords" content="photoblaster, 3D" >
+ <meta name=Author content="Pepper Dreamteamer - 2011 www.facebook.com/AAAFFF">
+ <link rel="shortcut icon" href="http://asdf.us/imgrid/favicon.ico">
+ <link rel="image_src" href="http://vfile.com/public/img/1.png" >
+ <meta property="og:title" content="imgrid" />
+ <meta property="og:type" content="website" />
+ <meta property="og:url" content="http://asdf.us/imgrid" />
+ <meta property="og:site_name" content="IMGRID - A 3D-GRID-PLANE GENERATOR" />
+ <title>IMGRID - a 3D GRID-PLANE GENERATOR</title>
+
+ <link rel="stylesheet" href="general.css" type="text/css" media="screen" />
+ <link href="colorpixx.css" rel="stylesheet" type="text/css" />
+ <link href='main2.css' rel='stylesheet' type='text/css' />
+ <link href='jquery-ui-1.8.16.custom.css' rel='stylesheet' type='text/css' />
+ <link href='cssreset.css' rel='stylesheet' type='text/css'/>
+ <style type='text/css'>
+ body
+ {
+ font-family:georgia, Arial;
+ font-size:10pt;
+ }
+ h1
+ {
+ font-size:18px;
+ width:50%;
+ margin:10px;
+ padding:10px;
+ }
+ #flatcontrols
+ {
+ width:40%;
+ margin:10px;
+ padding:10px;
+ }
+ .lineadj{display:none;}
+ .threedadj{display:none;}
+ .gridbgadj{display:none;}
+ .imageoptions{display:none;}
+ .results
+ {
+ display:none;
+ position:relative;
+ z-index:-100;
+ }
+ #output-url
+ {
+ z-index:100;
+ width:500px;
+ }
+ .slider
+ {
+ background-color:#eee5de;
+ display:inline-block;
+ width:50%;
+ }
+ #opacity-slider
+ {
+ width:100%;
+ display:inline-block;
+ margin-right:0;
+ margin-left:0;
+ }
+ input
+ {
+ width:70px;
+ }
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default
+ {
+ background-color:#555;
+ }
+ #result
+ {
+ position:fixed;
+ left:50%;
+ top:20px;
+ }
+ #output-url
+ {
+ width:100%;
+ }
+ .urlinput
+ {
+ width:60%;
+ }
+ a
+ {
+ background-color:white;
+ max-width:100px;
+ }
+ a:link
+ {
+ color: black;
+ }
+ a:visited
+ {
+ COLOR: black;
+ }
+ a:hover
+ {
+ COLOR: black;
+ }
+ a:active
+ {
+ COLOR: black;
+ }
+ #threedplug, #imageoptionsplug
+ {
+ font-size:20px;
+ text-align:center;
+ }
+ .threedmore, .imageoptionsmore
+ {
+ cursor:pointer;
+ }
+ table
+ {
+ empty-cells: show;
+ }
+button {
+ background: white;
+ color: #000000;
+ font-size: 18px;
+ font-family: Georgia, serif;
+ text-decoration: none;
+ vertical-align: middle;
+ }
+.button:hover {
+ border-top-color: #78e072;
+ background: #78e072;
+ color: #000000;
+ }
+ </style>
+</head>
+<body>
+<img src='http://asdf.us/im/8d/imgrid_1324285217_imgrid_1324210455_imgrid_1324210353_gradient_darkseagreencyan_1317343959___.png' style='position:fixed; top:-200px; z-index:-100;'></img>
+<div style='font-size:30px; margin-top:20px;margin-left:20px;'>IMGRID</div>
+<div style="font-size:12px;margin-left:20px;margin-bottom:20px;">3D-GRID-PLANE GENERATOR</div>
+
+ <div id="flatcontrols">
+<table><tr><td>3D OPTIONS</td></tr></table>
+<br>
+<table style="width:100%">
+ <tr><td>SWING&nbsp<input id='swing' type='text' value='0'></input></td></tr>
+ <tr id="swingslider" class="slider"></tr>
+ <tr><td>TILT&nbsp<input id='tilt' type='text' value='0'></input></td></tr>
+ <tr id="tiltslider" class="slider"></tr>
+ <tr><td>ROLL&nbsp<input id='roll' type='text' value='0'></input></td></tr>
+ <tr id="rollslider" class="slider"></tr>
+ <tr><td>ZOOM&nbsp<input id='zoom' type='text' value='0'></input></td></tr>
+ <tr id="zoomslider" class="slider" value='0'></tr></table><table>
+ <tr><td>&nbsp</td></tr>
+ <tr><td>CROP WHITESPACE</td><td><input type="checkbox" id="trim" value="false"></input></td></tr>
+
+</table>
+<br>
+<br>
+<table>
+<tr><td class='threedmore'>GRAPHIC OPTIONS&nbsp&nbsp</td>
+ <td> <div id='threedplug' class='threedmore'>+</div></td></tr>
+ </table>
+ <table>
+ <tr><td>&nbsp</td></tr>
+
+ <tr class='threedadj'><td>GRID THICKNESS:</td>
+ <td><input id='line-thickness' type='text' value='1'></td><td><span style="font-size:12px">PX&nbsp&nbsp</span></input></td></tr>
+
+ <tr class='threedadj'><td>GRID COLOR:</td>
+ <td><input id='line-color' type='text' value='BLACK'></input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></td>
+ </tr>
+
+
+ <tr class='threedadj'>
+ <td>GRID OPACITY: </td>
+ <td><input id='line-opacity' type='text' value='1'></input></td>
+ <td class="slider" style="margin:0;padding:0;"id="opacity-slider"></td>
+ </tr>
+
+ <tr class='threedadj'>
+ <td>GRID SPACING: </td>
+ <td><input id='line-spacing' type='text' value='0'></input></td>
+ <td class="slider" style="margin:0;padding:0;" id="spacing-slider"></td></tr>
+
+ <tr class='threedadj'><td>USE ONLY VERTICAL LINES</td><td><input type="checkbox" id="v-lines" value="false"></input></td></tr>
+
+ <tr class='threedadj'><td>USE ONLY HORIZONTAL LINES</td><td><input type="checkbox" id="h-lines" value="false" ></input></td></tr>
+ </table>
+
+
+<table>
+ <tr class='threedadj'><td>USE IMAGE INSTEAD OF GRID</td>
+ <td><input type="text" class="urlinput" type="text" id="imageinstead" value="">IMG URL eg:http://ww...</input></td>
+ </tr></table>
+<table class='threedadj'><td>GRID BACKGROUND COLOR <input type="text" id="bg-color" value="none"></td><td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></input></td>
+
+ </table>
+ <table>
+ <tr class='threedadj'><td>OR GRID BACKGROUND IMAGE</td>
+ <td><input class="urlinput" type="text" id="bg-image" value="">IMG URL eg:http://ww...</input></td></tr>
+ </table>
+
+<table>
+ <tr class='threedadj'><td>GRID-TRANSITION</td>
+ <td><select id="transition">
+ <option selected="selected" value='background'>none</option>
+ <option value="dither">dithered</option>
+ <option value="noise">noise</option>
+ <option value="tile">infinite</option>
+ </select></td></tr>
+
+</table>
+ <table>
+ <tr class='threedadj'><td>DROP SHADOW</td><td><input type='checkbox' id='shadow' value='false'</input></td></tr>
+
+
+</table>
+
+
+<br>
+
+ <table>
+ <tr><td class="imageoptionsmore">IMAGE OPTIONS&nbsp&nbsp</td>
+ <td><div id="imageoptionsplug" class="imageoptionsmore">+</div></td>
+ </tr>
+ </table>
+ <tr><td>&nbsp</td></tr>
+ <table class='imageoptions'><td>BACKGROUND COLOR&nbsp&nbsp</td><td><input type="text" value="transparent" id="planebgcolor"></input></td>
+ <td>&nbsp&nbsp<a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></td> </table>
+ <table>
+
+ <tr class='imageoptions'><td>OR BACKGROUND IMAGE&nbsp&nbsp</td><td><input class='urlinput' type="text" value="" id="planebgimage">IMG URL eg:http://ww...</input></td></tr>
+ </table>
+
+ <table><tr class='imageoptions'><td>SKYCOLOR&nbsp&nbsp</td><td><input type="text" value="none" id="skycolor">&nbsp;&nbsp;for the area above the horizon-line</input>&nbsp&nbsp</td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></td>
+ </tr>
+ <tr class="imageoptions"><td>HEIGHT</td>
+ <td> <input id='img-height' type='text' value='500'><span style="font-size:12px">PX</span></input></td></td>
+
+ <tr class="imageoptions"><td>WIDTH</td>
+ <td><input id='img-width' type='text' value='700'><span style="font-size:12px">PX</span></input></td></td></table>
+<table>
+ <tr class="imageoptions"><td>IMAGE FORMAT</td><td>
+ <select id='format'>
+ <option selected='selected' value='png'>PNG</option>
+ <option value='gif'>GIF</option>
+ <option value='jpg'>JPG</option>
+ </select></td></tr></table>
+ <br>
+<table>
+
+ <tr><td>USERNAME &nbsp&nbsp</td><td><input type=text value="" id='username'></input></td></tr>
+</table>
+<br>
+<table>
+<button id="generate">GENERATE</button>
+
+</div>
+
+<div id='result'>
+ <span id="output-cmd" class='results'>click generate or hit enter to get your 2D plane</span>
+ <span id="output-img" class='results'></span>
+ <input id="output-url" class='results'></input>
+ <div id="output-info" class='results'></div>
+</div>
+<div id="likebutton">
+<br>
+
+
+
+<h5 style="position:fixed; bottom:10px; left:10px;" id='copyright'>COPYRIGHT 2011 PEPPER DREAMTEAMER</h5>
+<script type="text/javascript" src="jquery-1.6.4.min.js"></script>
+<script type="text/javascript" src="jquery-ui-1.8.16.custom.min.js"></script>
+<script type="text/javascript" src="sliders.js"></script>
+<script type="text/javascript" src="main.js"></script>
+<script type='text/javascript'>
+ threedmoreclicked = 'false';
+ $('.threedmore').click(function(){
+ $('.threedadj').toggle('300')
+
+ if(threedmoreclicked === 'false'){
+ $('#threedplug').html('-')
+ threedmoreclicked = 'true'
+ }
+ else{
+ $('#threedplug').html('+')
+ threedmoreclicked = 'false'
+ }
+ $('#copyright').hide();
+ })
+ imageoptionsmoreclicked = 'false';
+ $('#imageoptionsplug').html('+');
+ $('.imageoptionsmore').click(function(){
+ $('.imageoptions').toggle('300')
+ if(imageoptionsmoreclicked === 'false'){
+ $('#imageoptionsplug').html('-')
+ imageoptionsmoreclicked = 'true'
+ }
+ else{
+ $('#imageoptionsplug').html('+')
+ imageoptionsmoreclicked = 'false'
+ }
+ $('#copyright').hide();
+ });
+ $('#bg-color').click(function(){
+ nonecheck = $('#bg-color').val()
+ if(nonecheck === 'none')
+ {
+ $('#bg-color').val('')
+ }
+ });
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/js/colordictbackup.js b/frontend/imgrid/js/colordictbackup.js
new file mode 100755
index 0000000..62f914a
--- /dev/null
+++ b/frontend/imgrid/js/colordictbackup.js
@@ -0,0 +1,4 @@
+var hextoname = {'#EE1289': 'DeepPink2', '#EE8262': 'salmon2', '#C4C4C4': 'gray77', '#556B2F': 'DarkOliveGreen', '#FF8C00': 'DarkOrange', '#8B7B8B': 'thistle4', '#0000EE': 'blue2', '#EED5D2': 'MistyRose2', '#BA55D3': 'MediumOrchid', '#FFF5EE': 'seashell', '#912CEE': 'purple2', '#2F4F4F': 'DarkSlateGray', '#32814B': 'MediumForestGreen', '#D15FEE': 'MediumOrchid2', '#F0FFF0': 'honeydew', '#B23AEE': 'DarkOrchid2', '#8B7765': 'PeachPuff4', '#3D3D3D': 'gray24', '#54FF9F': 'SeaGreen1', '#636363': 'gray39', '#8B8386': 'LavenderBlush4', '#FF4040': 'brown1', '#EEA9B8': 'pink2', '#C2C2C2': 'gray76', '#800080': 'purple', '#545454': 'gray33', '#EE3A8C': 'VioletRed2', '#8A8A8A': 'gray54', '#FF00FF': 'fuchsia', '#436EEE': 'RoyalBlue2', '#8B864E': 'khaki4', '#0A0A0A': 'gray4', '#808000': 'olive', '#E3E3E3': 'gray89', '#1874CD': 'DodgerBlue3', '#BCD2EE': 'LightSteelBlue2', '#A9A9A9': 'DarkGray', '#F4A460': 'SandyBrown', '#FF3030': 'firebrick1', '#FFEBCD': 'BlanchedAlmond', '#B0C4DE': 'LightSteelBlue', '#00CDCD': 'cyan3', '#C0FF3E': 'OliveDrab1', '#FFD700': 'gold', '#242424': 'gray14', '#8B2252': 'VioletRed4', '#4EEE94': 'SeaGreen2', '#CD3278': 'VioletRed3', '#00E5EE': 'turquoise2', '#CD853F': 'peru', '#ADD8E6': 'LightBlue', '#C7C7C7': 'gray78', '#CD2990': 'maroon3', '#EEE5DE': 'seashell2', '#66CD00': 'chartreuse3', '#878787': 'gray53', '#FFA54F': 'tan1', '#A2B5CD': 'LightSteelBlue3', '#BC8F8F': 'RosyBrown', '#C9C9C9': 'gray79', '#D1C166': 'MediumGoldenRod', '#8B2323': 'brown4', '#B3EE3A': 'OliveDrab2', '#EEEED1': 'LightYellow2', '#AEEEEE': 'PaleTurquoise2', '#BDBDBD': 'gray74', '#FF7F00': 'DarkOrange1', '#FFC0CB': 'pink', '#EE3B3B': 'brown2', '#CDC8B1': 'cornsilk3', '#CDB38B': 'NavajoWhite3', '#CDBA96': 'wheat3', '#B4EEB4': 'DarkSeaGreen2', '#40E0D0': 'turquoise', '#8B795E': 'NavajoWhite4', '#27408B': 'RoyalBlue4', '#424242': 'gray26', '#CDB7B5': 'MistyRose3', '#CAE1FF': 'LightSteelBlue1', '#F0FFFF': 'azure', '#2E8B57': 'SeaGreen', '#87CEEB': 'SkyBlue', '#CD00CD': 'magenta3', '#CDAA7D': 'burlywood3', '#836FFF': 'SlateBlue1', '#ABABAB': 'gray67', '#EEB4B4': 'RosyBrown2', '#8B7355': 'burlywood4', '#F0E68C': 'khaki', '#CDCDB4': 'LightYellow3', '#4D4D4D': 'gray30', '#B8B8B8': 'gray72', '#B4CDCD': 'LightCyan3', '#008B8B': 'cyan4', '#828282': 'gray51', '#00EEEE': 'cyan2', '#708090': 'SlateGray', '#9AFF9A': 'PaleGreen1', '#FFA07A': 'LightSalmon', '#EBEBEB': 'gray92', '#FFB5C5': 'pink1', '#00688B': 'DeepSkyBlue4', '#DBDBDB': 'gray86', '#191970': 'MidnightBlue', '#FF83FA': 'orchid1', '#A1A1A1': 'gray63', '#838B8B': 'azure4', '#FFA500': 'orange', '#00FF7F': 'SpringGreen', '#EEAD0E': 'DarkGoldenrod2', '#B03060': 'maroon', '#96CDCD': 'PaleTurquoise3', '#CD3333': 'brown3', '#CDBE70': 'LightGoldenrod3', '#7CCD7C': 'PaleGreen3', '#97FFFF': 'DarkSlateGray1', '#DAA520': 'goldenrod', '#8B3A3A': 'IndianRed4', '#6B6B6B': 'gray42', '#FFFAF0': 'FloralWhite', '#757575': 'gray46', '#BFBFBF': 'gray75', '#00EE76': 'SpringGreen2', '#FFFAFA': 'snow', '#6E8B3D': 'DarkOliveGreen4', '#EEE685': 'khaki2', '#FF3E96': 'VioletRed1', '#EE0000': 'red2', '#FDF5E6': 'OldLace', '#E066FF': 'MediumOrchid1', '#8DB6CD': 'LightSkyBlue3', '#FF7256': 'coral1', '#7CFC00': 'LawnGreen', '#838B83': 'honeydew4', '#BF3EFF': 'DarkOrchid1', '#8B6914': 'goldenrod4', '#00CD66': 'SpringGreen3', '#525252': 'gray32', '#A4D3EE': 'LightSkyBlue2', '#00868B': 'turquoise4', '#8DEEEE': 'DarkSlateGray2', '#787878': 'gray47', '#8B1C62': 'maroon4', '#616161': 'gray38', '#4876FF': 'RoyalBlue1', '#9F79EE': 'MediumPurple2', '#212121': 'gray13', '#C1CDC1': 'honeydew3', '#CD69C9': 'orchid3', '#E0EEEE': 'azure2', '#8B7E66': 'wheat4', '#8A2BE2': 'BlueViolet', '#CDCD00': 'yellow3', '#EE5C42': 'tomato2', '#6E6E6E': 'gray43', '#EEAEEE': 'plum2', '#DC143C': 'crimson', '#CD919E': 'pink3', '#528B8B': 'DarkSlateGray4', '#AFEEEE': 'PaleTurquoise', '#CD6889': 'PaleVioletRed3', '#E6E6FA': 'lavender', '#EE00EE': 'magenta2', '#999999': 'gray60', '#F0F8FF': 'AliceBlue', '#595959': 'gray35', '#FF7F50': 'coral', '#A6A6A6': 'gray65', '#DEDEDE': 'gray87', '#262626': 'gray15', '#6CA6CD': 'SkyBlue3', '#8B8B83': 'ivory4', '#474747': 'gray28', '#F7F7F7': 'gray97', '#548B54': 'PaleGreen4', '#48D1CC': 'MediumTurquoise', '#C1CDCD': 'azure3', '#E0EEE0': 'honeydew2', '#FFB90F': 'DarkGoldenrod1', '#FFD39B': 'burlywood1', '#8B5A2B': 'tan4', '#EEE9BF': 'LemonChiffon2', '#BCEE68': 'DarkOliveGreen2', '#8470FF': 'LightSlateBlue', '#8B0A50': 'DeepPink4', '#FFF68F': 'khaki1', '#EEA2AD': 'LightPink2', '#CD5B45': 'coral3', '#7FFF00': 'chartreuse', '#8B8378': 'AntiqueWhite4', '#9BCD9B': 'DarkSeaGreen3', '#454545': 'gray27', '#D1D1D1': 'gray82', '#EEE8AA': 'PaleGoldenrod', '#668B8B': 'PaleTurquoise4', '#EE30A7': 'maroon2', '#FFC125': 'goldenrod1', '#8B475D': 'PaleVioletRed4', '#D8BFD8': 'thistle', '#404040': 'gray25', '#EEEE00': 'yellow2', '#CDB5CD': 'thistle3', '#00C5CD': 'turquoise3', '#00CED1': 'DarkTurquoise', '#CFCFCF': 'gray81', '#008B00': 'green4', '#7A7A7A': 'gray48', '#B8860B': 'DarkGoldenrod', '#1C86EE': 'DodgerBlue2', '#8B5742': 'LightSalmon4', '#1A1A1A': 'gray10', '#8B008B': 'DarkMagenta', '#0F0F0F': 'gray6', '#CD3700': 'OrangeRed3', '#7F7F7F': 'gray50', '#FF6EB4': 'HotPink1', '#6959CD': 'SlateBlue3', '#90EE90': 'LightGreen', '#8B4789': 'orchid4', '#EE7AE9': 'orchid2', '#8968CD': 'MediumPurple3', '#080808': 'gray3', '#CDC9C9': 'snow3', '#BDB76B': 'DarkKhaki', '#9370DB': 'MediumPurple', '#EEDC82': 'LightGoldenrod2', '#3CB371': 'MediumSeaGreen', '#F5FFFA': 'MintCream', '#303030': 'gray19', '#B9D3EE': 'SlateGray2', '#575757': 'gray34', '#F5F5DC': 'beige', '#BABABA': 'gray73', '#0000CD': 'blue3', '#FF8247': 'sienna1', '#F2F2F2': 'gray95', '#EED5B7': 'bisque2', '#FFEC8B': 'LightGoldenrod1', '#EE7600': 'DarkOrange2', '#8B636C': 'pink4', '#8B814C': 'LightGoldenrod4', '#FFE4B5': 'moccasin', '#4F94CD': 'SteelBlue3', '#CDAD00': 'gold3', '#CD5555': 'IndianRed3', '#8B7500': 'gold4', '#473C8B': 'SlateBlue4', '#B0E0E6': 'PowderBlue', '#FFFF00': 'yellow', '#CD96CD': 'plum3', '#006400': 'DarkGreen', '#FAFAFA': 'gray98', '#53868B': 'CadetBlue4', '#8B4513': 'chocolate4', '#98FB98': 'PaleGreen', '#63B8FF': 'SteelBlue1', '#FFAEB9': 'LightPink1', '#EE6A50': 'coral2', '#87CEFF': 'SkyBlue1', '#87CEFA': 'LightSkyBlue', '#ADFF2F': 'GreenYellow', '#008B45': 'SpringGreen4', '#EE4000': 'OrangeRed2', '#8B6969': 'RosyBrown4', '#00008B': 'blue4', '#DB7093': 'PaleVioletRed', '#7EC0EE': 'SkyBlue2', '#3B3B3B': 'gray23', '#8C8C8C': 'gray55', '#5F9EA0': 'cadet blue', '#EE799F': 'PaleVioletRed2', '#CD6090': 'HotPink3', '#8B8682': 'seashell4', '#458B74': 'aquamarine4', '#EECFA1': 'NavajoWhite2', '#76EE00': 'chartreuse2', '#000080': 'navy', '#228B22': 'ForestGreen', '#8B8B00': 'yellow4', '#B5B5B5': 'gray71', '#CD950C': 'DarkGoldenrod3', '#EE82EE': 'violet', '#EDEDED': 'gray93', '#F5DEB3': 'wheat', '#3A5FCD': 'RoyalBlue3', '#00FA9A': 'MediumSpringGreen', '#F0F0F0': 'gray94', '#D1EEEE': 'LightCyan2', '#2E2E2E': 'gray18', '#EEC591': 'burlywood2', '#8B3E2F': 'coral4', '#CD8162': 'LightSalmon3', '#9AC0CD': 'LightBlue3', '#8B8989': 'snow4', '#EED8AE': 'wheat2', '#551A8B': 'purple4', '#919191': 'gray57', '#949494': 'gray58', '#778899': 'LightSlateGray', '#FFFACD': 'LemonChiffon', '#458B00': 'chartreuse4', '#008000': 'green', '#FFFFF0': 'ivory', '#E0E0E0': 'gray88', '#EEB422': 'goldenrod2', '#A020F0': 'purple', '#5CACEE': 'SteelBlue2', '#CD4F39': 'tomato3', '#CDC0B0': 'AntiqueWhite3', '#6E7B8B': 'LightSteelBlue4', '#9E9E9E': 'gray62', '#CDC673': 'khaki3', '#104E8B': 'DodgerBlue4', '#E0FFFF': 'LightCyan', '#FFFFFF': 'white', '#6C7B8B': 'SlateGray4', '#FFC1C1': 'RosyBrown1', '#D6D6D6': 'gray84', '#8B4726': 'sienna4', '#CD9B1D': 'goldenrod3', '#FF6347': 'tomato', '#FF34B3': 'maroon1', '#7D7D7D': 'gray49', '#121212': 'gray7', '#B0E2FF': 'LightSkyBlue1', '#8B3A62': 'HotPink4', '#CD5C5C': 'IndianRed', '#4A4A4A': 'gray29', '#B0B0B0': 'gray69', '#D9D9D9': 'gray85', '#A2CD5A': 'DarkOliveGreen3', '#8B0000': 'DarkRed', '#FF6A6A': 'IndianRed1', '#CD6600': 'DarkOrange3', '#FFEFDB': 'AntiqueWhite1', '#E9967A': 'DarkSalmon', '#EEE9E9': 'snow2', '#D4D4D4': 'gray83', '#383838': 'gray22', '#7A67EE': 'SlateBlue2', '#4169E1': 'RoyalBlue', '#5E5E5E': 'gray37', '#00F5FF': 'turquoise1', '#FFEFD5': 'PapayaWhip', '#CDAF95': 'PeachPuff3', '#CCCCCC': 'gray80', '#00BFFF': 'DeepSkyBlue', '#CDB79E': 'bisque3', '#969696': 'gray59', '#4F4F4F': 'gray31', '#1E90FF': 'DodgerBlue', '#FCFCFC': 'gray99', '#EE2C2C': 'firebrick2', '#8B6508': 'DarkGoldenrod4', '#696969': 'DimGray', '#FF7F24': 'chocolate1', '#8FBC8F': 'DarkSeaGreen', '#66CDAA': 'aquamarine3', '#6495ED': 'CornflowerBlue', '#0D0D0D': 'gray5', '#EEE0E5': 'LavenderBlush2', '#666666': 'gray40', '#B2DFEE': 'LightBlue2', '#B22222': 'firebrick', '#4B0082': 'indigo', '#FF82AB': 'PaleVioletRed1', '#AB82FF': 'MediumPurple1', '#79CDCD': 'DarkSlateGray3', '#FFE4C4': 'bisque', '#DEB887': 'burlywood', '#5D478B': 'MediumPurple4', '#8B3626': 'tomato4', '#FFFFE0': 'LightYellow', '#FFE4E1': 'MistyRose', '#171717': 'gray9', '#EEDFCC': 'AntiqueWhite2', '#9400D3': 'DarkViolet', '#BFEFFF': 'LightBlue1', '#8B7D6B': 'bisque4', '#FF8C69': 'salmon1', '#C6E2FF': 'SlateGray1', '#1C1C1C': 'gray11', '#FF4500': 'OrangeRed', '#FFE7BA': 'wheat1', '#808080': 'fractal', '#EE9572': 'LightSalmon2', '#CD8500': 'orange3', '#8B5A00': 'orange4', '#9932CC': 'DarkOrchid', '#EECBAD': 'PeachPuff2', '#CD8C95': 'LightPink3', '#292929': 'gray16', '#CD1076': 'DeepPink3', '#7A378B': 'MediumOrchid4', '#FF0000': 'red', '#698B22': 'OliveDrab4', '#ADADAD': 'gray68', '#EEE8CD': 'cornsilk2', '#DDA0DD': 'plum', '#7D26CD': 'purple3', '#DA70D6': 'orchid', '#DCDCDC': 'gainsboro', '#68228B': 'DarkOrchid4', '#7B68EE': 'MediumSlateBlue', '#000000': 'black', '#6B8E23': 'OliveDrab', '#FF69B4': 'HotPink', '#800000': 'maroon', '#8B668B': 'plum4', '#363636': 'gray21', '#8B4500': 'DarkOrange4', '#D3D3D3': 'LightGray', '#607B8B': 'LightSkyBlue4', '#F08080': 'LightCoral', '#CD9B9B': 'RosyBrown3', '#76EEC6': 'aquamarine2', '#FAEBD7': 'AntiqueWhite', '#68838B': 'LightBlue4', '#7FFFD4': 'aquamarine', '#C0C0C0': 'silver', '#EEDD82': 'LightGoldenrod', '#EE9A49': 'tan2', '#4A708B': 'SkyBlue4', '#008080': 'teal', '#7AC5CD': 'CadetBlue3', '#98F5FF': 'CadetBlue1', '#8B2500': 'OrangeRed4', '#8F8F8F': 'gray56', '#FFF0F5': 'LavenderBlush', '#8B8970': 'LemonChiffon4', '#8B8878': 'cornsilk4', '#6A5ACD': 'SlateBlue', '#4682B4': 'SteelBlue', '#EEEEE0': 'ivory2', '#B3B3B3': 'gray70', '#00FF00': 'green1', '#FFDEAD': 'NavajoWhite', '#CD2626': 'firebrick3', '#8B4C39': 'salmon4', '#9B30FF': 'purple1', '#E5E5E5': 'gray90', '#36648B': 'SteelBlue4', '#9C9C9C': 'gray61', '#F8F8FF': 'GhostWhite', '#333333': 'gray20', '#5C5C5C': 'gray36', '#737373': 'gray45', '#EEC900': 'gold2', '#FFE1FF': 'thistle1', '#C1FFC1': 'DarkSeaGreen1', '#CDC5BF': 'seashell3', '#A0522D': 'sienna', '#8B5F65': 'LightPink4', '#CDC1C5': 'LavenderBlush3', '#EE7621': 'chocolate2', '#FFBBFF': 'plum1', '#CD6839': 'sienna3', '#698B69': 'DarkSeaGreen4', '#050505': 'gray2', '#CD661D': 'chocolate3', '#FAFAD2': 'LightGoldenrodYellow', '#CDCDC1': 'ivory3', '#FFF8DC': 'cornsilk', '#A8A8A8': 'gray66', '#B452CD': 'MediumOrchid3', '#D2B48C': 'tan', '#8EE5EE': 'CadetBlue2', '#483D8B': 'DarkSlateBlue', '#BBFFFF': 'PaleTurquoise1', '#0000FF': 'blue', '#EE6AA7': 'HotPink2', '#EE7942': 'sienna2', '#00CD00': 'green3', '#141414': 'gray8', '#9ACD32': 'OliveDrab3', '#C71585': 'MediumVioletRed', '#EE9A00': 'orange2', '#CAFF70': 'DarkOliveGreen1', '#F5F5F5': 'gray96', '#32CD32': 'LimeGreen', '#00EE00': 'green2', '#FFB6C1': 'LightPink', '#8B1A1A': 'firebrick4', '#00B2EE': 'DeepSkyBlue2', '#20B2AA': 'LightSeaGreen', '#707070': 'gray44', '#009ACD': 'DeepSkyBlue3', '#A52A2A': 'brown', '#EE6363': 'IndianRed2', '#FAF0E6': 'linen', '#8B7D7B': 'MistyRose4', '#9A32CD': 'DarkOrchid3', '#1F1F1F': 'gray12', '#E8E8E8': 'gray91', '#7E7E7E': 'gray', '#7A8B8B': 'LightCyan4', '#CD7054': 'salmon3', '#9FB6CD': 'SlateGray3', '#CDC9A5': 'LemonChiffon3', '#D02090': 'VioletRed', '#00FFFF': 'aqua', '#2B2B2B': 'gray17', '#858585': 'gray52', '#A3A3A3': 'gray64', '#CD0000': 'red3', '#43CD80': 'SeaGreen3', '#FA8072': 'salmon', '#FFDAB9': 'PeachPuff', '#D2691E': 'chocolate', '#FF1493': 'DeepPink', '#EED2EE': 'thistle2', '#030303': 'gray1', '#8B8B7A': 'LightYellow4'}
+var nametohex = {'grey21': '#363636', 'yellow': '#FFFF00', 'grey61': '#9C9C9C', 'HotPink3': '#CD6090', 'grey63': '#A1A1A1', 'grey62': '#9E9E9E', 'grey65': '#A6A6A6', 'AliceBlue': '#F0F8FF', 'grey67': '#ABABAB', 'grey66': '#A8A8A8', 'LightCyan1': '#E0FFFF', 'grey68': '#ADADAD', 'LightCyan3': '#B4CDCD', 'LightCyan2': '#D1EEEE', 'LightCyan4': '#7A8B8B', 'gray32': '#525252', 'gray33': '#545454', 'DarkTurquoise': '#00CED1', 'gray31': '#4F4F4F', 'gray36': '#5C5C5C', 'gray37': '#5E5E5E', 'gray34': '#575757', 'gray35': '#595959', 'aquamarine4': '#458B74', 'gray38': '#616161', 'gray39': '#636363', 'aquamarine1': '#7FFFD4', 'aquamarine3': '#66CDAA', 'aquamarine2': '#76EEC6', 'CadetBlue4': '#53868B', 'CadetBlue3': '#7AC5CD', 'CadetBlue2': '#8EE5EE', 'CadetBlue1': '#98F5FF', 'crimson': '#DC143C', 'VioletRed1': '#FF3E96', 'VioletRed2': '#EE3A8C', 'VioletRed3': '#CD3278', 'VioletRed4': '#8B2252', 'brown': '#A52A2A', 'DarkGoldenrod': '#B8860B', 'gray8': '#141414', 'SlateGrey': '#708090', 'NavajoWhite2': '#EECFA1', 'gray2': '#050505', 'cyan': '#00FFFF', 'gray0': '#000000', 'gray1': '#030303', 'fractal': '#808080', 'gray7': '#121212', 'gray4': '#0A0A0A', 'gray5': '#0D0D0D', 'grey60': '#999999', 'DarkBlue': '#00008B', 'gray98': '#FAFAFA', 'DarkKhaki': '#BDB76B', 'gray99': '#FCFCFC', 'teal': '#008080', 'grey11': '#1C1C1C', 'coral4': '#8B3E2F', 'grey12': '#1F1F1F', 'grey64': '#A3A3A3', 'PaleGreen1': '#9AFF9A', 'PaleGreen3': '#7CCD7C', 'PaleGreen2': '#90EE90', 'PaleGreen4': '#548B54', 'grey14': '#242424', 'lavender': '#E6E6FA', 'grey15': '#262626', 'chartreuse3': '#66CD00', 'chartreuse2': '#76EE00', 'chartreuse1': '#7FFF00', 'chartreuse4': '#458B00', 'RosyBrown': '#BC8F8F', 'blue': '#0000FF', 'NavajoWhite': '#FFDEAD', 'opaque': '#000000', 'maroon4': '#8B1C62', 'maroon3': '#CD2990', 'maroon2': '#EE30A7', 'maroon1': '#FF34B3', 'gold3': '#CDAD00', 'gold2': '#EEC900', 'gold1': '#FFD700', 'gold4': '#8B7500', 'LightSlateGrey': '#778899', 'gray30': '#4D4D4D', 'DarkGreen': '#006400', 'SkyBlue': '#87CEEB', 'GhostWhite': '#F8F8FF', 'LavenderBlush': '#FFF0F5', 'SeaGreen': '#2E8B57', 'BlanchedAlmond': '#FFEBCD', 'gray60': '#999999', 'DarkOliveGreen': '#556B2F', 'firebrick2': '#EE2C2C', 'firebrick1': '#FF3030', 'firebrick4': '#8B1A1A', 'sienna': '#A0522D', 'blue1': '#0000FF', 'lime': '#00FF00', 'gray55': '#8C8C8C', 'blue2': '#0000EE', 'DarkViolet': '#9400D3', 'blue4': '#00008B', 'peru': '#CD853F', 'DarkMagenta': '#8B008B', 'LightBlue2': '#B2DFEE', 'red2': '#EE0000', 'red1': '#FF0000', 'LightBlue1': '#BFEFFF', 'LightBlue4': '#68838B', 'red4': '#8B0000', 'MediumSpringGreen': '#00FA9A', 'chocolate': '#D2691E', 'ForestGreen': '#228B22', 'DarkRed': '#8B0000', 'olive': '#808000', 'HotPink2': '#EE6AA7', 'HotPink1': '#FF6EB4', 'HotPink4': '#8B3A62', 'grey18': '#2E2E2E', 'grey19': '#303030', 'none': '#000000', 'PeachPuff': '#FFDAB9', 'MediumGoldenRod': '#D1C166', 'moccasin': '#FFE4B5', 'grey10': '#1A1A1A', 'chocolate1': '#FF7F24', 'chocolate2': '#EE7621', 'chocolate3': '#CD661D', 'chocolate4': '#8B4513', 'wheat2': '#EED8AE', 'grey16': '#292929', 'grey17': '#2B2B2B', 'gray69': '#B0B0B0', 'gray68': '#ADADAD', 'gray65': '#A6A6A6', 'gray64': '#A3A3A3', 'gray67': '#ABABAB', 'gray66': '#A8A8A8', 'gray61': '#9C9C9C', 'coral': '#FF7F50', 'gray63': '#A1A1A1', 'gray62': '#9E9E9E', 'LightGoldenrod': '#EEDD82', 'turquoise4': '#00868B', 'seashell2': '#EEE5DE', 'seashell3': '#CDC5BF', 'magenta': '#FF00FF', 'seashell1': '#FFF5EE', 'tan': '#D2B48C', 'seashell4': '#8B8682', 'pink': '#FFC0CB', 'LightSlateBlue': '#8470FF', 'SteelBlue1': '#63B8FF', 'SteelBlue3': '#4F94CD', 'SteelBlue2': '#5CACEE', 'SteelBlue4': '#36648B', 'grey89': '#E3E3E3', 'grey88': '#E0E0E0', 'grey87': '#DEDEDE', 'grey86': '#DBDBDB', 'grey85': '#D9D9D9', 'grey84': '#D6D6D6', 'grey83': '#D4D4D4', 'grey82': '#D1D1D1', 'grey81': '#CFCFCF', 'grey80': '#CCCCCC', 'ivory2': '#EEEEE0', 'khaki4': '#8B864E', 'khaki1': '#FFF68F', 'khaki2': '#EEE685', 'khaki3': '#CDC673', 'salmon1': '#FF8C69', 'salmon3': '#CD7054', 'salmon2': '#EE8262', 'salmon4': '#8B4C39', 'LightPink': '#FFB6C1', 'gray9': '#171717', 'green': '#008000', 'brown2': '#EE3B3B', 'brown3': '#CD3333', 'brown1': '#FF4040', 'brown4': '#8B2323', 'cadet blue': '#5F9EA0', 'orange4': '#8B5A00', 'orange1': '#FFA500', 'orange3': '#CD8500', 'orange2': '#EE9A00', 'gray3': '#080808', 'gray6': '#0F0F0F', 'yellow4': '#8B8B00', 'yellow3': '#CDCD00', 'yellow2': '#EEEE00', 'yellow1': '#FFFF00', 'PapayaWhip': '#FFEFD5', 'bisque2': '#EED5B7', 'OliveDrab4': '#698B22', 'bisque3': '#CDB79E', 'OliveDrab1': '#C0FF3E', 'OliveDrab2': '#B3EE3A', 'OliveDrab3': '#9ACD32', 'SkyBlue4': '#4A708B', 'SkyBlue1': '#87CEFF', 'SkyBlue3': '#6CA6CD', 'SkyBlue2': '#7EC0EE', 'grey58': '#949494', 'grey59': '#969696', 'grey54': '#8A8A8A', 'grey55': '#8C8C8C', 'grey56': '#8F8F8F', 'grey57': '#919191', 'grey50': '#7F7F7F', 'silver': '#C0C0C0', 'grey52': '#858585', 'grey53': '#878787', 'cyan2': '#00EEEE', 'cyan3': '#00CDCD', 'gray23': '#3B3B3B', 'RosyBrown4': '#8B6969', 'gray25': '#404040', 'CornflowerBlue': '#6495ED', 'cyan4': '#008B8B', 'gray26': '#424242', 'gray29': '#4A4A4A', 'LimeGreen': '#32CD32', 'MistyRose': '#FFE4E1', 'navy': '#000080', 'gray94': '#F0F0F0', 'gray95': '#F2F2F2', 'gray96': '#F5F5F5', 'gray97': '#F7F7F7', 'gray90': '#E5E5E5', 'gray91': '#E8E8E8', 'gray92': '#EBEBEB', 'gray93': '#EDEDED', 'MediumPurple': '#9370DB', 'MidnightBlue': '#191970', 'cornsilk': '#FFF8DC', 'red': '#FF0000', 'grey69': '#B0B0B0', 'DarkOrchid4': '#68228B', 'blue3': '#0000CD', 'LightSteelBlue': '#B0C4DE', 'DarkOrchid1': '#BF3EFF', 'DarkOrchid2': '#B23AEE', 'DarkOrchid3': '#9A32CD', 'grey72': '#B8B8B8', 'FloralWhite': '#FFFAF0', 'grey70': '#B3B3B3', 'DarkSeaGreen': '#8FBC8F', 'grey71': '#B5B5B5', 'gray17': '#2B2B2B', 'grey77': '#C4C4C4', 'tomato4': '#8B3626', 'tomato1': '#FF6347', 'tomato3': '#CD4F39', 'tomato2': '#EE5C42', 'DarkSlateGray1': '#97FFFF', 'DarkSlateGray2': '#8DEEEE', 'DarkSlateGray3': '#79CDCD', 'DarkSlateGray4': '#528B8B', 'SteelBlue': '#4682B4', 'MediumSlateBlue': '#7B68EE', 'OrangeRed': '#FF4500', 'grey79': '#C9C9C9', 'MediumVioletRed': '#C71585', 'burlywood': '#DEB887', 'white': '#FFFFFF', 'tomato': '#FF6347', 'DodgerBlue': '#1E90FF', 'RoyalBlue4': '#27408B', 'RoyalBlue1': '#4876FF', 'RoyalBlue3': '#3A5FCD', 'RoyalBlue2': '#436EEE', 'MistyRose1': '#FFE4E1', 'MistyRose3': '#CDB7B5', 'MistyRose2': '#EED5D2', 'MistyRose4': '#8B7D7B', 'LightGray': '#D3D3D3', 'LightYellow': '#FFFFE0', 'DarkOrange': '#FF8C00', 'DarkGray': '#A9A9A9', 'SlateGray': '#708090', 'turquoise3': '#00C5CD', 'turquoise2': '#00E5EE', 'turquoise1': '#00F5FF', 'burlywood2': '#EEC591', 'burlywood4': '#8B7355', 'DarkSlateGray': '#2F4F4F', 'linen': '#FAF0E6', 'grey47': '#787878', 'snow': '#FFFAFA', 'grey46': '#757575', 'gray58': '#949494', 'gray59': '#969696', 'IndianRed4': '#8B3A3A', 'purple4': '#551A8B', 'gray52': '#858585', 'gray53': '#878787', 'purple1': '#9B30FF', 'IndianRed1': '#FF6A6A', 'purple3': '#7D26CD', 'purple2': '#912CEE', 'thistle3': '#CDB5CD', 'thistle2': '#EED2EE', 'SpringGreen2': '#00EE76', 'SpringGreen3': '#00CD66', 'SpringGreen4': '#008B45', 'thistle4': '#8B7B8B', 'LightPink2': '#EEA2AD', 'LightPink3': '#CD8C95', 'LightPink1': '#FFAEB9', 'LightPink4': '#8B5F65', 'MediumPurple1': '#AB82FF', 'MediumPurple2': '#9F79EE', 'MediumPurple3': '#8968CD', 'MediumPurple4': '#5D478B', 'MediumTurquoise': '#48D1CC', 'DimGray': '#696969', 'gray14': '#242424', 'grey100': '#FFFFFF', 'OrangeRed3': '#CD3700', 'OrangeRed2': '#EE4000', 'OrangeRed1': '#FF4500', 'LightSeaGreen': '#20B2AA', 'gold': '#FFD700', 'OrangeRed4': '#8B2500', 'NavajoWhite4': '#8B795E', 'NavajoWhite1': '#FFDEAD', 'LawnGreen': '#7CFC00', 'NavajoWhite3': '#CDB38B', 'LightGoldenrod4': '#8B814C', 'LightGoldenrod1': '#FFEC8B', 'LightGoldenrod3': '#CDBE70', 'LightGoldenrod2': '#EEDC82', 'gray21': '#363636', 'PaleGreen': '#98FB98', 'green4': '#008B00', 'green1': '#00FF00', 'green3': '#00CD00', 'green2': '#00EE00', 'MediumOrchid': '#BA55D3', 'black': '#000000', 'gray20': '#333333', 'orchid4': '#8B4789', 'DodgerBlue1': '#1E90FF', 'DodgerBlue2': '#1C86EE', 'DodgerBlue3': '#1874CD', 'DodgerBlue4': '#104E8B', 'orchid1': '#FF83FA', 'orchid2': '#EE7AE9', 'orchid3': '#CD69C9', 'DarkSeaGreen4': '#698B69', 'DarkSeaGreen3': '#9BCD9B', 'DarkSeaGreen2': '#B4EEB4', 'DarkSeaGreen1': '#C1FFC1', 'gray100': '#FFFFFF', 'BlueViolet': '#8A2BE2', 'bisque4': '#8B7D6B', 'MediumOrchid4': '#7A378B', 'MintCream': '#F5FFFA', 'MediumOrchid1': '#E066FF', 'bisque1': '#FFE4C4', 'MediumOrchid3': '#B452CD', 'MediumOrchid2': '#D15FEE', 'gray': '#7E7E7E', 'DeepSkyBlue': '#00BFFF', 'LightGrey': '#D3D3D3', 'grey78': '#C7C7C7', 'gray22': '#383838', 'plum4': '#8B668B', 'plum3': '#CD96CD', 'plum2': '#EEAEEE', 'plum1': '#FFBBFF', 'DarkSlateGrey': '#2F4F4F', 'DarkOrchid': '#9932CC', 'OliveDrab': '#6B8E23', 'gray83': '#D4D4D4', 'grey49': '#7D7D7D', 'grey48': '#7A7A7A', 'thistle': '#D8BFD8', 'violet': '#EE82EE', 'grey43': '#6E6E6E', 'grey42': '#6B6B6B', 'LightSalmon4': '#8B5742', 'grey40': '#666666', 'LightSalmon2': '#EE9572', 'LightSalmon3': '#CD8162', 'grey45': '#737373', 'LightSalmon1': '#FFA07A', 'honeydew': '#F0FFF0', 'gray18': '#2E2E2E', 'gray19': '#303030', 'LightCyan': '#E0FFFF', 'gray15': '#262626', 'gray16': '#292929', 'gray82': '#D1D1D1', 'gray10': '#1A1A1A', 'gray11': '#1C1C1C', 'gray12': '#1F1F1F', 'gray13': '#212121', 'grey93': '#EDEDED', 'PaleGoldenrod': '#EEE8AA', 'gainsboro': '#DCDCDC', 'AntiqueWhite3': '#CDC0B0', 'AntiqueWhite2': '#EEDFCC', 'AntiqueWhite1': '#FFEFDB', 'gray27': '#454545', 'SlateBlue': '#6A5ACD', 'AntiqueWhite4': '#8B8378', 'DimGrey': '#696969', 'VioletRed': '#D02090', 'WhiteSmoke': '#F5F5F5', 'grey38': '#616161', 'grey39': '#636363', 'grey36': '#5C5C5C', 'grey37': '#5E5E5E', 'grey34': '#575757', 'grey35': '#595959', 'aqua': '#00FFFF', 'grey33': '#545454', 'grey30': '#4D4D4D', 'grey31': '#4F4F4F', 'NavyBlue': '#000080', 'sienna4': '#8B4726', 'gray81': '#CFCFCF', 'gray80': '#CCCCCC', 'sienna1': '#FF8247', 'gray86': '#DBDBDB', 'sienna3': '#CD6839', 'sienna2': '#EE7942', 'gray89': '#E3E3E3', 'gray88': '#E0E0E0', 'SlateBlue4': '#473C8B', 'gray87': '#DEDEDE', 'LightSteelBlue1': '#CAE1FF', 'magenta3': '#CD00CD', 'IndianRed': '#CD5C5C', 'SlateBlue2': '#7A67EE', 'SlateBlue1': '#836FFF', 'LightBlue': '#ADD8E6', 'PeachPuff4': '#8B7765', 'seashell': '#FFF5EE', 'SaddleBrown': '#8B4513', 'PeachPuff1': '#FFDAB9', 'PeachPuff2': '#EECBAD', 'PeachPuff3': '#CDAF95', 'aquamarine': '#7FFFD4', 'LemonChiffon2': '#EEE9BF', 'LemonChiffon1': '#FFFACD', 'tan4': '#8B5A2B', 'tan3': '#CD853F', 'tan2': '#EE9A49', 'tan1': '#FFA54F', 'LemonChiffon4': '#8B8970', 'orange': '#FFA500', 'OldLace': '#FDF5E6', 'PowderBlue': '#B0E0E6', 'RosyBrown3': '#CD9B9B', 'RoyalBlue': '#4169E1', 'LightSkyBlue4': '#607B8B', 'LightSkyBlue1': '#B0E2FF', 'LightSkyBlue2': '#A4D3EE', 'LightSkyBlue3': '#8DB6CD', 'LightYellow1': '#FFFFE0', 'LightYellow2': '#EEEED1', 'LightYellow3': '#CDCDB4', 'LightYellow4': '#8B8B7A', 'goldenrod4': '#8B6914', 'goldenrod1': '#FFC125', 'goldenrod2': '#EEB422', 'goldenrod3': '#CD9B1D', 'grey32': '#525252', 'LemonChiffon': '#FFFACD', 'burlywood1': '#FFD39B', 'YellowGreen': '#9ACD32', 'LightCoral': '#F08080', 'burlywood3': '#CDAA7D', 'ivory3': '#CDCDC1', 'firebrick3': '#CD2626', 'ivory1': '#FFFFF0', 'grey8': '#141414', 'ivory4': '#8B8B83', 'grey9': '#171717', 'DarkSalmon': '#E9967A', 'SlateGray1': '#C6E2FF', 'SlateGray2': '#B9D3EE', 'SlateGray3': '#9FB6CD', 'SlateGray4': '#6C7B8B', 'RosyBrown2': '#EEB4B4', 'RosyBrown1': '#FFC1C1', 'gray85': '#D9D9D9', 'gray84': '#D6D6D6', 'LightGreen': '#90EE90', 'LavenderBlush1': '#FFF0F5', 'grey73': '#BABABA', 'LavenderBlush3': '#CDC1C5', 'LavenderBlush2': '#EEE0E5', 'grey76': '#C2C2C2', 'LavenderBlush4': '#8B8386', 'grey74': '#BDBDBD', 'grey75': '#BFBFBF', 'pink1': '#FFB5C5', 'pink3': '#CD919E', 'pink2': '#EEA9B8', 'pink4': '#8B636C', 'gray47': '#787878', 'gray46': '#757575', 'gray45': '#737373', 'gray44': '#707070', 'gray43': '#6E6E6E', 'gray42': '#6B6B6B', 'gray41': '#696969', 'gray40': '#666666', 'gray49': '#7D7D7D', 'gray48': '#7A7A7A', 'MediumAquamarine': '#66CDAA', 'MediumForestGreen': '#32814B', 'azure1': '#F0FFFF', 'azure3': '#C1CDCD', 'azure2': '#E0EEEE', 'indigo': '#4B0082', 'azure4': '#838B8B', 'firebrick': '#B22222', 'DarkGrey': '#A9A9A9', 'magenta4': '#8B008B', 'SlateBlue3': '#6959CD', 'magenta2': '#EE00EE', 'magenta1': '#FF00FF', 'grey51': '#828282', 'chartreuse': '#7FFF00', 'grey41': '#696969', 'DarkOliveGreen4': '#6E8B3D', 'turquoise': '#40E0D0', 'DarkOliveGreen1': '#CAFF70', 'DarkOliveGreen3': '#A2CD5A', 'DarkOliveGreen2': '#BCEE68', 'grey6': '#0F0F0F', 'grey7': '#121212', 'grey4': '#0A0A0A', 'grey5': '#0D0D0D', 'grey2': '#050505', 'grey3': '#080808', 'grey0': '#000000', 'grey1': '#030303', 'gray50': '#7F7F7F', 'cyan1': '#00FFFF', 'gray51': '#828282', 'gray24': '#3D3D3D', 'HotPink': '#FF69B4', 'DarkGoldenrod4': '#8B6508', 'gray54': '#8A8A8A', 'DarkGoldenrod1': '#FFB90F', 'DarkGoldenrod2': '#EEAD0E', 'DarkGoldenrod3': '#CD950C', 'IndianRed2': '#EE6363', 'DeepPink': '#FF1493', 'gray28': '#474747', 'IndianRed3': '#CD5555', 'DarkCyan': '#008B8B', 'GreenYellow': '#ADFF2F', 'LightSalmon': '#FFA07A', 'DarkOrange4': '#8B4500', 'DarkOrange1': '#FF7F00', 'transparent': '#000000', 'DarkOrange3': '#CD6600', 'orchid': '#DA70D6', 'purple': '#800080', 'wheat4': '#8B7E66', 'wheat1': '#FFE7BA', 'wheat3': '#CDBA96', 'SpringGreen1': '#00FF7F', 'coral3': '#CD5B45', 'coral2': '#EE6A50', 'coral1': '#FF7256', 'thistle1': '#FFE1FF', 'PaleTurquoise': '#AFEEEE', 'bisque': '#FFE4C4', 'DeepPink3': '#CD1076', 'DeepPink2': '#EE1289', 'DeepPink1': '#FF1493', 'khaki': '#F0E68C', 'wheat': '#F5DEB3', 'MediumSeaGreen': '#3CB371', 'DeepPink4': '#8B0A50', 'salmon': '#FA8072', 'grey44': '#707070', 'DarkSlateBlue': '#483D8B', 'PaleVioletRed4': '#8B475D', 'PaleVioletRed1': '#FF82AB', 'PaleVioletRed2': '#EE799F', 'PaleVioletRed3': '#CD6889', 'AntiqueWhite': '#FAEBD7', 'PaleTurquoise4': '#668B8B', 'PaleTurquoise3': '#96CDCD', 'PaleTurquoise2': '#AEEEEE', 'PaleTurquoise1': '#BBFFFF', 'gray56': '#8F8F8F', 'plum': '#DDA0DD', 'beige': '#F5F5DC', 'SpringGreen': '#00FF7F', 'azure': '#F0FFFF', 'honeydew1': '#F0FFF0', 'honeydew2': '#E0EEE0', 'honeydew3': '#C1CDC1', 'honeydew4': '#838B83', 'gray57': '#919191', 'snow4': '#8B8989', 'snow2': '#EEE9E9', 'snow3': '#CDC9C9', 'snow1': '#FFFAFA', 'SandyBrown': '#F4A460', 'grey13': '#212121', 'SeaGreen4': '#2E8B57', 'SeaGreen3': '#43CD80', 'SeaGreen2': '#4EEE94', 'SeaGreen1': '#54FF9F', 'grey29': '#4A4A4A', 'grey28': '#474747', 'grey25': '#404040', 'grey24': '#3D3D3D', 'grey27': '#454545', 'grey26': '#424242', 'fuchsia': '#FF00FF', 'grey20': '#333333', 'grey23': '#3B3B3B', 'grey22': '#383838', 'gray78': '#C7C7C7', 'gray79': '#C9C9C9', 'gray76': '#C2C2C2', 'gray77': '#C4C4C4', 'gray74': '#BDBDBD', 'gray75': '#BFBFBF', 'gray72': '#B8B8B8', 'gray73': '#BABABA', 'gray70': '#B3B3B3', 'gray71': '#B5B5B5', 'ivory': '#FFFFF0', 'LemonChiffon3': '#CDC9A5', 'DeepSkyBlue4': '#00688B', 'DeepSkyBlue3': '#009ACD', 'DeepSkyBlue2': '#00B2EE', 'DeepSkyBlue1': '#00BFFF', 'cornsilk4': '#8B8878', 'cornsilk2': '#EEE8CD', 'cornsilk3': '#CDC8B1', 'CadetBlue': '#5F9EA0', 'cornsilk1': '#FFF8DC', 'grey90': '#E5E5E5', 'grey91': '#E8E8E8', 'grey92': '#EBEBEB', 'goldenrod': '#DAA520', 'grey94': '#F0F0F0', 'grey95': '#F2F2F2', 'grey96': '#F5F5F5', 'grey97': '#F7F7F7', 'grey98': '#FAFAFA', 'grey99': '#FCFCFC', 'red3': '#CD0000', 'LightSteelBlue2': '#BCD2EE', 'LightSteelBlue3': '#A2B5CD', 'LightSteelBlue4': '#6E7B8B', 'LightBlue3': '#9AC0CD', 'maroon': '#800000', 'LightSkyBlue': '#87CEFA', 'LightGoldenrodYellow': '#FAFAD2', 'MediumBlue': '#0000CD', 'LightSlateGray': '#778899', 'DarkOrange2': '#EE7600', 'PaleVioletRed': '#DB7093'}
+var divlist = ['#d0', '#d1', '#d2', '#d3', '#d4', '#d5', '#d6', '#d7', '#d8', '#d9', '#d10', '#d11', '#d12', '#d13', '#d14', '#d15', '#d16', '#d17', '#d18', '#d19', '#d20', '#d21', '#d22', '#d23', '#d24', '#d25', '#d26', '#d27', '#d28', '#d29', '#d30', '#d31', '#d32', '#d33', '#d34', '#d35', '#d36', '#d37', '#d38', '#d39', '#d40', '#d41', '#d42', '#d43', '#d44', '#d45', '#d46', '#d47', '#d48', '#d49', '#d50', '#d51', '#d52', '#d53', '#d54', '#d55', '#d56', '#d57', '#d58', '#d59', '#d60', '#d61', '#d62', '#d63', '#d64', '#d65', '#d66', '#d67', '#d68', '#d69', '#d70', '#d71', '#d72', '#d73', '#d74', '#d75', '#d76', '#d77', '#d78', '#d79', '#d80', '#d81', '#d82', '#d83', '#d84', '#d85', '#d86', '#d87', '#d88', '#d89', '#d90', '#d91', '#d92', '#d93', '#d94', '#d95', '#d96', '#d97', '#d98', '#d99', '#d100', '#d101', '#d102', '#d103', '#d104', '#d105', '#d106', '#d107', '#d108', '#d109', '#d110', '#d111', '#d112', '#d113', '#d114', '#d115', '#d116', '#d117', '#d118', '#d119', '#d120', '#d121', '#d122', '#d123', '#d124', '#d125', '#d126', '#d127', '#d128', '#d129', '#d130', '#d131', '#d132', '#d133', '#d134', '#d135', '#d136', '#d137', '#d138', '#d139', '#d140', '#d141', '#d142', '#d143', '#d144', '#d145', '#d146', '#d147', '#d148', '#d149', '#d150', '#d151', '#d152', '#d153', '#d154', '#d155', '#d156', '#d157', '#d158', '#d159', '#d160', '#d161', '#d162', '#d163', '#d164', '#d165', '#d166', '#d167', '#d168', '#d169', '#d170', '#d171', '#d172', '#d173', '#d174', '#d175', '#d176', '#d177', '#d178', '#d179', '#d180', '#d181', '#d182', '#d183', '#d184', '#d185', '#d186', '#d187', '#d188', '#d189', '#d190', '#d191', '#d192', '#d193', '#d194', '#d195', '#d196', '#d197', '#d198', '#d199', '#d200', '#d201', '#d202', '#d203', '#d204', '#d205', '#d206', '#d207', '#d208', '#d209', '#d210', '#d211', '#d212', '#d213', '#d214', '#d215', '#d216', '#d217', '#d218', '#d219', '#d220', '#d221', '#d222', '#d223', '#d224', '#d225', '#d226', '#d227', '#d228', '#d229', '#d230', '#d231', '#d232', '#d233', '#d234', '#d235', '#d236', '#d237', '#d238', '#d239', '#d240', '#d241', '#d242', '#d243', '#d244', '#d245', '#d246', '#d247', '#d248', '#d249', '#d250', '#d251', '#d252', '#d253', '#d254', '#d255', '#d256', '#d257', '#d258', '#d259', '#d260', '#d261', '#d262', '#d263', '#d264', '#d265', '#d266', '#d267', '#d268', '#d269', '#d270', '#d271', '#d272', '#d273', '#d274', '#d275', '#d276', '#d277', '#d278', '#d279', '#d280', '#d281', '#d282', '#d283', '#d284', '#d285', '#d286', '#d287', '#d288', '#d289', '#d290', '#d291', '#d292', '#d293', '#d294', '#d295', '#d296', '#d297', '#d298', '#d299', '#d300', '#d301', '#d302', '#d303', '#d304', '#d305', '#d306', '#d307', '#d308', '#d309', '#d310', '#d311', '#d312', '#d313', '#d314', '#d315', '#d316', '#d317', '#d318', '#d319', '#d320', '#d321', '#d322', '#d323', '#d324', '#d325', '#d326', '#d327', '#d328', '#d329', '#d330', '#d331', '#d332', '#d333', '#d334', '#d335', '#d336', '#d337', '#d338', '#d339', '#d340', '#d341', '#d342', '#d343', '#d344', '#d345', '#d346', '#d347', '#d348', '#d349', '#d350', '#d351', '#d352', '#d353', '#d354', '#d355', '#d356', '#d357', '#d358', '#d359', '#d360', '#d361', '#d362', '#d363', '#d364', '#d365', '#d366', '#d367', '#d368', '#d369', '#d370', '#d371', '#d372', '#d373', '#d374', '#d375', '#d376', '#d377', '#d378', '#d379', '#d380', '#d381', '#d382', '#d383', '#d384', '#d385', '#d386', '#d387', '#d388', '#d389', '#d390', '#d391', '#d392', '#d393', '#d394', '#d395', '#d396', '#d397', '#d398', '#d399', '#d400', '#d401', '#d402', '#d403', '#d404', '#d405', '#d406', '#d407', '#d408', '#d409', '#d410', '#d411', '#d412', '#d413', '#d414', '#d415', '#d416', '#d417', '#d418', '#d419', '#d420', '#d421', '#d422', '#d423', '#d424', '#d425', '#d426', '#d427', '#d428', '#d429', '#d430', '#d431', '#d432', '#d433', '#d434', '#d435', '#d436', '#d437', '#d438', '#d439', '#d440', '#d441', '#d442', '#d443', '#d444', '#d445', '#d446', '#d447', '#d448', '#d449', '#d450', '#d451', '#d452', '#d453', '#d454', '#d455', '#d456', '#d457', '#d458', '#d459', '#d460', '#d461', '#d462', '#d463', '#d464', '#d465', '#d466', '#d467', '#d468', '#d469', '#d470', '#d471', '#d472', '#d473', '#d474', '#d475', '#d476', '#d477', '#d478', '#d479', '#d480', '#d481', '#d482', '#d483', '#d484', '#d485', '#d486', '#d487', '#d488', '#d489', '#d490', '#d491', '#d492', '#d493', '#d494', '#d495', '#d496', '#d497', '#d498', '#d499', '#d500', '#d501', '#d502', '#d503', '#d504', '#d505', '#d506', '#d507', '#d508', '#d509', '#d510', '#d511', '#d512', '#d513', '#d514', '#d515', '#d516', '#d517', '#d518', '#d519', '#d520', '#d521', '#d522', '#d523', '#d524', '#d525', '#d526', '#d527', '#d528', '#d529', '#d530', '#d531', '#d532', '#d533', '#d534', '#d535', '#d536', '#d537', '#d538', '#d539', '#d540', '#d541', '#d542', '#d543', '#d544', '#d545', '#d546', '#d547', '#d548', '#d549', '#d550', '#d551', '#d552', '#d553', '#d554', '#d555', '#d556', '#d557', '#d558', '#d559', '#d560', '#d561', '#d562', '#d563', '#d564', '#d565', '#d566', '#d567', '#d568', '#d569', '#d570', '#d571', '#d572', '#d573', '#d574', '#d575', '#d576', '#d577', '#d578', '#d579', '#d580', '#d581', '#d582', '#d583', '#d584', '#d585', '#d586', '#d587', '#d588', '#d589', '#d590', '#d591', '#d592', '#d593', '#d594', '#d595', '#d596', '#d597', '#d598', '#d599', '#d600', '#d601', '#d602', '#d603', '#d604', '#d605', '#d606', '#d607', '#d608', '#d609', '#d610', '#d611', '#d612', '#d613', '#d614', '#d615', '#d616', '#d617', '#d618', '#d619', '#d620', '#d621', '#d622', '#d623', '#d624', '#d625', '#d626', '#d627', '#d628', '#d629', '#d630', '#d631', '#d632', '#d633', '#d634', '#d635', '#d636', '#d637', '#d638', '#d639', '#d640', '#d641', '#d642', '#d643', '#d644', '#d645', '#d646', '#d647', '#d648', '#d649', '#d650', '#d651', '#d652', '#d653', '#d654', '#d655', '#d656', '#d657', '#d658', '#d659', '#d660', '#d661', '#d662', '#d663', '#d664', '#d665', '#d666', '#d667', '#d668', '#d669', '#d670', '#d671', '#d672', '#d673']
+var divtoname = {'#d322': 'khaki4', '#d600': 'gray34', '#d118': 'MediumPurple1', '#d119': 'MediumPurple2', '#d114': 'purple3', '#d115': 'purple4', '#d116': 'purple1', '#d117': 'MediumPurple', '#d110': 'purple', '#d111': 'indigo', '#d112': 'BlueViolet', '#d113': 'purple2', '#d529': 'grey67', '#d231': 'DarkSlateGray', '#d339': 'LightGoldenrod3', '#d233': 'MediumTurquoise', '#d232': 'DarkSlateGrey', '#d235': 'turquoise', '#d234': 'LightSeaGreen', '#d237': 'aquamarine', '#d236': 'aquamarine4', '#d239': 'aquamarine2', '#d238': 'aquamarine1', '#d332': 'gold1', '#d333': 'gold2', '#d334': 'gold3', '#d335': 'gold4', '#d336': 'LightGoldenrod', '#d337': 'LightGoldenrod4', '#d424': 'LightSalmon3', '#d425': 'LightSalmon', '#d426': 'LightSalmon1', '#d427': 'LightSalmon4', '#d420': 'sienna', '#d421': 'sienna1', '#d422': 'sienna2', '#d423': 'sienna3', '#d587': 'grey41', '#d586': 'gray41', '#d585': 'DimGrey', '#d584': 'DimGray', '#d428': 'LightSalmon2', '#d429': 'coral', '#d581': 'grey43', '#d580': 'gray43', '#d89': 'thistle4', '#d88': 'plum3', '#d349': 'goldenrod4', '#d348': 'goldenrod3', '#d81': 'thistle2', '#d80': 'thistle1', '#d83': 'plum2', '#d82': 'plum1', '#d85': 'thistle3', '#d84': 'thistle', '#d87': 'violet', '#d86': 'plum', '#d601': 'grey34', '#d67': 'DeepPink3', '#d66': 'DeepPink2', '#d65': 'DeepPink1', '#d64': 'DeepPink', '#d63': 'HotPink', '#d62': 'HotPink4', '#d61': 'HotPink1', '#d60': 'HotPink2', '#d69': 'maroon1', '#d68': 'DeepPink4', '#d510': 'grey76', '#d511': 'silver', '#d512': 'gray75', '#d513': 'grey75', '#d514': 'gray74', '#d515': 'grey74', '#d516': 'gray73', '#d517': 'grey73', '#d518': 'gray72', '#d519': 'grey72', '#d150': 'LightSteelBlue2', '#d151': 'LightSteelBlue3', '#d152': 'LightSteelBlue4', '#d153': 'SlateGray4', '#d154': 'SlateGray1', '#d155': 'SlateGray2', '#d156': 'SlateGray3', '#d157': 'LightSlateGray', '#d158': 'LightSlateGrey', '#d159': 'SlateGray', '#d565': 'gray50', '#d564': 'fractal', '#d567': 'gray', '#d566': 'grey50', '#d561': 'grey52', '#d560': 'gray52', '#d563': 'grey51', '#d562': 'gray51', '#d604': 'gray32', '#d605': 'grey32', '#d606': 'gray31', '#d607': 'grey31', '#d569': 'grey49', '#d568': 'gray49', '#d602': 'gray33', '#d603': 'grey33', '#d125': 'SlateBlue', '#d124': 'MediumSlateBlue', '#d127': 'SlateBlue2', '#d126': 'SlateBlue1', '#d121': 'MediumPurple4', '#d120': 'MediumPurple3', '#d123': 'LightSlateBlue', '#d122': 'DarkSlateBlue', '#d359': 'wheat1', '#d129': 'SlateBlue4', '#d128': 'SlateBlue3', '#d301': 'LightYellow', '#d300': 'ivory1', '#d303': 'beige', '#d302': 'LightYellow1', '#d305': 'LightGoldenrodYellow', '#d304': 'ivory2', '#d307': 'ivory3', '#d306': 'LightYellow2', '#d309': 'ivory4', '#d308': 'LightYellow3', '#d462': 'grey98', '#d351': 'DarkGoldenrod1', '#d464': 'grey97', '#d465': 'gray96', '#d466': 'grey96', '#d467': 'WhiteSmoke', '#d463': 'gray97', '#d268': 'PaleGreen3', '#d269': 'honeydew4', '#d266': 'DarkSeaGreen3', '#d267': 'DarkSeaGreen', '#d264': 'LightGreen', '#d265': 'PaleGreen2', '#d262': 'PaleGreen', '#d263': 'honeydew3', '#d260': 'DarkSeaGreen2', '#d261': 'PaleGreen1', '#d598': 'gray35', '#d29': 'firebrick4', '#d28': 'brown4', '#d23': 'red2', '#d22': 'firebrick3', '#d21': 'RosyBrown4', '#d20': 'red1', '#d27': 'IndianRed4', '#d26': 'red3', '#d25': 'brown', '#d24': 'firebrick', '#d599': 'grey35', '#d338': 'LightGoldenrod1', '#d419': 'sienna4', '#d418': 'seashell1', '#d230': 'teal', '#d415': 'chocolate4', '#d414': 'chocolate3', '#d417': 'seashell', '#d416': 'SaddleBrown', '#d411': 'chocolate', '#d410': 'seashell3', '#d413': 'chocolate2', '#d412': 'chocolate1', '#d398': 'tan1', '#d399': 'tan2', '#d392': 'DarkOrange1', '#d393': 'linen', '#d390': 'bisque1', '#d391': 'bisque3', '#d396': 'DarkOrange4', '#d397': 'peru', '#d394': 'DarkOrange2', '#d395': 'DarkOrange3', '#d194': 'CadetBlue2', '#d195': 'CadetBlue3', '#d196': 'CadetBlue4', '#d197': 'turquoise1', '#d190': 'LightBlue', '#d191': 'LightBlue4', '#d192': 'PowderBlue', '#d193': 'CadetBlue1', '#d198': 'turquoise2', '#d199': 'turquoise3', '#d330': 'cornsilk4', '#d331': 'gold', '#d640': 'gray14', '#d641': 'grey14', '#d642': 'gray13', '#d643': 'grey13', '#d644': 'gray12', '#d645': 'grey12', '#d646': 'gray11', '#d647': 'grey11', '#d648': 'gray10', '#d649': 'grey10', '#d668': 'black', '#d486': 'gainsboro', '#d487': 'gray86', '#d484': 'gray87', '#d485': 'grey87', '#d482': 'gray88', '#d483': 'grey88', '#d480': 'gray89', '#d481': 'grey89', '#d521': 'grey71', '#d520': 'gray71', '#d523': 'grey70', '#d522': 'gray70', '#d525': 'grey69', '#d524': 'gray69', '#d488': 'grey86', '#d489': 'gray85', '#d430': 'OrangeRed', '#d660': 'gray4', '#d169': 'SteelBlue1', '#d168': 'SteelBlue', '#d661': 'grey4', '#d161': 'DodgerBlue', '#d160': 'SlateGrey', '#d163': 'DodgerBlue2', '#d162': 'DodgerBlue1', '#d165': 'DodgerBlue3', '#d164': 'DodgerBlue4', '#d167': 'SteelBlue4', '#d166': 'AliceBlue', '#d635': 'grey17', '#d634': 'gray17', '#d637': 'grey16', '#d636': 'gray16', '#d631': 'grey19', '#d630': 'gray19', '#d633': 'grey18', '#d632': 'gray18', '#d639': 'grey15', '#d638': 'gray15', '#d368': 'PapayaWhip', '#d222': 'cyan', '#d223': 'cyan1', '#d220': 'LightCyan4', '#d221': 'aqua', '#d226': 'DarkSlateGray4', '#d227': 'cyan3', '#d224': 'PaleTurquoise4', '#d225': 'cyan2', '#d228': 'cyan4', '#d229': 'DarkCyan', '#d590': 'gray39', '#d538': 'gray63', '#d539': 'grey63', '#d591': 'grey39', '#d451': 'MistyRose', '#d450': 'MistyRose2', '#d453': 'salmon', '#d452': 'MistyRose1', '#d455': 'white', '#d454': 'MistyRose3', '#d457': 'grey100', '#d456': 'gray100', '#d459': 'gray99', '#d458': 'grey100', '#d592': 'gray38', '#d593': 'grey38', '#d594': 'gray37', '#d595': 'grey37', '#d596': 'gray36', '#d597': 'grey36', '#d297': 'YellowGreen', '#d296': 'OliveDrab3', '#d295': 'OliveDrab2', '#d294': 'OliveDrab1', '#d293': 'OliveDrab', '#d292': 'DarkOliveGreen', '#d291': 'DarkOliveGreen4', '#d290': 'DarkOliveGreen2', '#d356': 'wheat2', '#d357': 'OldLace', '#d354': 'DarkGoldenrod4', '#d355': 'FloralWhite', '#d352': 'DarkGoldenrod2', '#d353': 'DarkGoldenrod3', '#d299': 'ivory', '#d298': 'OliveDrab4', '#d468': 'gray95', '#d534': 'gray65', '#d535': 'grey65', '#d52': 'LavenderBlush2', '#d53': 'LavenderBlush4', '#d50': 'LavenderBlush1', '#d51': 'LavenderBlush3', '#d56': 'VioletRed3', '#d57': 'VioletRed1', '#d54': 'maroon', '#d55': 'HotPink3', '#d58': 'VioletRed2', '#d59': 'VioletRed4', '#d469': 'grey95', '#d558': 'gray53', '#d559': 'grey53', '#d576': 'gray45', '#d577': 'grey45', '#d574': 'gray46', '#d575': 'grey46', '#d572': 'gray47', '#d573': 'grey47', '#d570': 'gray48', '#d571': 'grey48', '#d671': 'opaque', '#d670': 'grey0', '#d673': 'transparent', '#d672': 'none', '#d578': 'gray44', '#d579': 'grey44', '#d589': 'grey40', '#d588': 'gray40', '#d4': 'RosyBrown2', '#d5': 'snow3', '#d6': 'LightCoral', '#d7': 'IndianRed1', '#d0': 'snow', '#d1': 'snow1', '#d2': 'snow2', '#d3': 'RosyBrown1', '#d8': 'RosyBrown3', '#d9': 'IndianRed2', '#d136': 'MediumBlue', '#d137': 'blue4', '#d134': 'blue2', '#d135': 'blue3', '#d132': 'blue', '#d133': 'blue1', '#d130': 'GhostWhite', '#d131': 'lavender', '#d583': 'grey42', '#d138': 'DarkBlue', '#d139': 'MidnightBlue', '#d312': 'yellow1', '#d313': 'yellow2', '#d310': 'LightYellow4', '#d311': 'yellow', '#d316': 'olive', '#d317': 'DarkKhaki', '#d314': 'yellow3', '#d315': 'yellow4', '#d318': 'khaki2', '#d319': 'LemonChiffon4', '#d259': 'DarkSeaGreen1', '#d258': 'honeydew2', '#d253': 'SeaGreen4', '#d252': 'SeaGreen1', '#d251': 'SeaGreen3', '#d250': 'SeaGreen', '#d257': 'honeydew1', '#d256': 'honeydew', '#d255': 'MediumForestGreen', '#d254': 'SeaGreen2', '#d345': 'goldenrod', '#d344': 'cornsilk1', '#d612': 'gray28', '#d347': 'goldenrod2', '#d461': 'gray98', '#d346': 'goldenrod1', '#d479': 'grey90', '#d341': 'cornsilk3', '#d478': 'gray90', '#d340': 'LightGoldenrod2', '#d343': 'cornsilk', '#d342': 'cornsilk2', '#d528': 'gray67', '#d408': 'seashell4', '#d409': 'seashell2', '#d406': 'PeachPuff3', '#d407': 'SandyBrown', '#d404': 'PeachPuff4', '#d405': 'PeachPuff2', '#d402': 'PeachPuff', '#d403': 'PeachPuff1', '#d400': 'tan3', '#d401': 'tan4', '#d552': 'gray56', '#d460': 'grey99', '#d16': 'firebrick2', '#d17': 'snow4', '#d14': 'IndianRed', '#d15': 'IndianRed3', '#d12': 'firebrick1', '#d13': 'brown2', '#d10': 'RosyBrown', '#d11': 'brown1', '#d532': 'gray66', '#d533': 'grey66', '#d530': 'DarkGray', '#d531': 'DarkGrey', '#d536': 'gray64', '#d537': 'grey64', '#d18': 'brown3', '#d19': 'red', '#d329': 'MediumGoldenRod', '#d328': 'LemonChiffon2', '#d178': 'LightSkyBlue1', '#d179': 'LightSkyBlue2', '#d172': 'SkyBlue4', '#d173': 'SkyBlue1', '#d170': 'SteelBlue2', '#d171': 'SteelBlue3', '#d176': 'LightSkyBlue', '#d177': 'LightSkyBlue4', '#d174': 'SkyBlue2', '#d175': 'SkyBlue3', '#d626': 'gray21', '#d627': 'grey21', '#d624': 'gray22', '#d625': 'grey22', '#d622': 'gray23', '#d623': 'grey23', '#d620': 'gray24', '#d621': 'grey24', '#d628': 'gray20', '#d629': 'grey20', '#d219': 'azure4', '#d218': 'DarkSlateGray3', '#d217': 'PaleTurquoise3', '#d216': 'DarkSlateGray2', '#d215': 'LightCyan3', '#d214': 'azure3', '#d213': 'DarkSlateGray1', '#d212': 'PaleTurquoise2', '#d211': 'PaleTurquoise', '#d210': 'PaleTurquoise1', '#d669': 'gray0', '#d582': 'gray42', '#d442': 'coral3', '#d443': 'coral4', '#d440': 'coral1', '#d441': 'coral2', '#d446': 'tomato1', '#d447': 'tomato2', '#d444': 'tomato4', '#d445': 'tomato', '#d448': 'tomato3', '#d449': 'MistyRose4', '#d280': 'DarkGreen', '#d281': 'LawnGreen', '#d282': 'chartreuse', '#d283': 'chartreuse1', '#d284': 'chartreuse2', '#d285': 'chartreuse3', '#d286': 'chartreuse4', '#d287': 'GreenYellow', '#d288': 'DarkOliveGreen3', '#d289': 'DarkOliveGreen1', '#d361': 'orange', '#d360': 'wheat3', '#d367': 'moccasin', '#d366': 'wheat4', '#d365': 'orange4', '#d364': 'orange3', '#d49': 'LavenderBlush', '#d48': 'PaleVioletRed3', '#d45': 'PaleVioletRed', '#d44': 'PaleVioletRed4', '#d47': 'PaleVioletRed1', '#d46': 'PaleVioletRed2', '#d41': 'pink2', '#d40': 'pink1', '#d43': 'pink4', '#d42': 'pink3', '#d358': 'wheat', '#d527': 'grey68', '#d526': 'gray68', '#d614': 'gray27', '#d543': 'grey61', '#d542': 'gray61', '#d541': 'grey62', '#d540': 'gray62', '#d547': 'grey59', '#d546': 'gray59', '#d545': 'grey60', '#d544': 'gray60', '#d662': 'gray3', '#d663': 'grey3', '#d549': 'grey58', '#d548': 'gray58', '#d666': 'gray1', '#d667': 'grey1', '#d664': 'gray2', '#d665': 'grey2', '#d103': 'MediumOrchid4', '#d102': 'MediumOrchid3', '#d101': 'MediumOrchid2', '#d100': 'MediumOrchid1', '#d107': 'DarkOrchid3', '#d106': 'DarkOrchid1', '#d105': 'DarkOrchid', '#d104': 'DarkViolet', '#d109': 'DarkOrchid4', '#d108': 'DarkOrchid2', '#d244': 'SpringGreen', '#d245': 'SpringGreen1', '#d246': 'SpringGreen2', '#d247': 'SpringGreen3', '#d240': 'aquamarine3', '#d241': 'MediumAquamarine', '#d242': 'MediumSpringGreen', '#d243': 'MintCream', '#d327': 'LemonChiffon3', '#d326': 'khaki', '#d325': 'LemonChiffon1', '#d324': 'LemonChiffon', '#d248': 'SpringGreen4', '#d249': 'MediumSeaGreen', '#d321': 'khaki3', '#d320': 'khaki1', '#d350': 'DarkGoldenrod', '#d439': 'salmon4', '#d438': 'salmon3', '#d98': 'purple', '#d99': 'MediumOrchid', '#d96': 'DarkMagenta', '#d97': 'magenta4', '#d94': 'magenta2', '#d95': 'magenta3', '#d92': 'magenta1', '#d93': 'plum4', '#d90': 'fuchsia', '#d91': 'magenta', '#d433': 'OrangeRed3', '#d432': 'OrangeRed2', '#d431': 'OrangeRed1', '#d74': 'VioletRed', '#d75': 'orchid2', '#d76': 'orchid', '#d77': 'orchid1', '#d70': 'maroon2', '#d71': 'maroon3', '#d72': 'maroon4', '#d73': 'MediumVioletRed', '#d437': 'salmon2', '#d78': 'orchid3', '#d79': 'orchid4', '#d436': 'salmon1', '#d435': 'DarkSalmon', '#d434': 'OrangeRed4', '#d507': 'gray77', '#d506': 'grey78', '#d505': 'gray78', '#d504': 'grey79', '#d503': 'gray79', '#d502': 'grey80', '#d501': 'gray80', '#d500': 'grey81', '#d509': 'gray76', '#d508': 'grey77', '#d473': 'grey93', '#d369': 'NavajoWhite3', '#d147': 'CornflowerBlue', '#d146': 'RoyalBlue4', '#d145': 'RoyalBlue3', '#d144': 'RoyalBlue2', '#d143': 'RoyalBlue1', '#d142': 'RoyalBlue', '#d141': 'NavyBlue', '#d140': 'navy', '#d149': 'LightSteelBlue1', '#d148': 'LightSteelBlue', '#d472': 'gray93', '#d613': 'grey28', '#d363': 'orange2', '#d611': 'grey29', '#d610': 'gray29', '#d617': 'grey26', '#d616': 'gray26', '#d615': 'grey27', '#d362': 'orange1', '#d619': 'grey25', '#d618': 'gray25', '#d208': 'azure2', '#d209': 'LightCyan2', '#d200': 'turquoise4', '#d201': 'cadet blue', '#d202': 'CadetBlue', '#d203': 'DarkTurquoise', '#d204': 'azure', '#d205': 'azure1', '#d206': 'LightCyan', '#d207': 'LightCyan1', '#d608': 'gray30', '#d609': 'grey30', '#d374': 'NavajoWhite4', '#d375': 'AntiqueWhite4', '#d376': 'AntiqueWhite', '#d377': 'tan', '#d370': 'BlanchedAlmond', '#d371': 'NavajoWhite', '#d372': 'NavajoWhite1', '#d373': 'NavajoWhite2', '#d477': 'grey91', '#d476': 'gray91', '#d475': 'grey92', '#d474': 'gray92', '#d378': 'bisque4', '#d379': 'burlywood', '#d471': 'grey94', '#d470': 'gray94', '#d279': 'green', '#d278': 'green4', '#d275': 'PaleGreen4', '#d274': 'green2', '#d277': 'ForestGreen', '#d276': 'green3', '#d271': 'lime', '#d270': 'green1', '#d273': 'DarkSeaGreen4', '#d272': 'LimeGreen', '#d38': 'pink', '#d39': 'crimson', '#d30': 'DarkRed', '#d31': 'red4', '#d32': 'maroon', '#d33': 'LightPink1', '#d34': 'LightPink3', '#d35': 'LightPink4', '#d36': 'LightPink2', '#d37': 'LightPink', '#d658': 'gray5', '#d389': 'bisque', '#d388': 'bisque2', '#d381': 'burlywood1', '#d380': 'AntiqueWhite2', '#d383': 'burlywood2', '#d382': 'burlywood3', '#d385': 'burlywood4', '#d384': 'AntiqueWhite1', '#d387': 'DarkOrange', '#d386': 'AntiqueWhite3', '#d189': 'LightBlue2', '#d188': 'LightBlue1', '#d183': 'DeepSkyBlue', '#d182': 'LightBlue3', '#d181': 'SkyBlue', '#d180': 'LightSkyBlue3', '#d187': 'DeepSkyBlue3', '#d186': 'DeepSkyBlue4', '#d185': 'DeepSkyBlue2', '#d184': 'DeepSkyBlue1', '#d657': 'grey6', '#d656': 'gray6', '#d655': 'grey7', '#d654': 'gray7', '#d653': 'grey8', '#d652': 'gray8', '#d651': 'grey9', '#d650': 'gray9', '#d550': 'gray57', '#d659': 'grey5', '#d551': 'grey57', '#d495': 'LightGray', '#d494': 'grey83', '#d497': 'gray82', '#d496': 'LightGrey', '#d491': 'gray84', '#d490': 'grey85', '#d493': 'gray83', '#d492': 'grey84', '#d554': 'gray55', '#d555': 'grey55', '#d556': 'gray54', '#d557': 'grey54', '#d499': 'gray81', '#d498': 'grey82', '#d323': 'PaleGoldenrod', '#d553': 'grey56'} \ No newline at end of file
diff --git a/frontend/imgrid/js/colors_iframe.js b/frontend/imgrid/js/colors_iframe.js
new file mode 100644
index 0000000..5e6d5b2
--- /dev/null
+++ b/frontend/imgrid/js/colors_iframe.js
@@ -0,0 +1,45 @@
+
+
+
+
+function launch_iframe(input_target){
+ $.fancybox.open({
+ href : '/im/colors/index.html',
+ width : 1100, // set the width
+ height : 710,
+ fitToView : true,
+ autoDimensions:false,
+ autoSize:false,
+ type : 'iframe',
+ closeBtn : false,
+ padding : 5,
+ beforeShow : function(){
+ $('.fancybox-iframe').contents().find('#submitvalue').click(function(){
+ $('.fancybox-iframe').contents().find('form').submit();
+ $.fancybox.close();
+ });
+ },
+ beforeClose : function(){
+ x = $('.fancybox-iframe').contents().find('#namespace').val();
+ },
+ afterClose: function(){
+ $(input_target).val(x);
+ }
+ });
+}
+$(document).ready(function(){
+ if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
+ return;
+ }
+ var element_list = [".bg-color", ".line-color", ".planebgcolor", ".skycolor"]
+ element_list.forEach(
+ function(l){
+ console.log("a"+l)
+ $("a"+l).click(function(event){
+ event.preventDefault();
+ launch_iframe("input"+l)
+ });
+ }
+ )
+
+})
diff --git a/frontend/imgrid/js/imgrid-main.js b/frontend/imgrid/js/imgrid-main.js
new file mode 100755
index 0000000..f88e235
--- /dev/null
+++ b/frontend/imgrid/js/imgrid-main.js
@@ -0,0 +1,121 @@
+var Main =
+ {
+ API_HEADER: "#@imgrid",
+ generating: false,
+ enter: function (e)
+ {
+ if (Main.generating)
+ return
+ if (e.keyCode === 13)
+ Main.go()
+ },
+ go: function ()
+ {
+ if (Main.generating)
+ return
+ Main.generating = true
+ var theloader = '<span style="width:100%;margin-right:40%"><img style="width:140px;height:120px;display:inline;" src="generating.gif"></img></span>'
+ $("#output-cmd").html(theloader).show()
+ if($('#transition :selected').val() === 'tile'||$('#transition :selected').val()=== 'random')
+ {
+ $('#output-cmd').append("<br><span style='color:red'>WARNING: THIS REQUEST MIGHT TAKE A WHILE</span>")
+ }
+ $('.results').show()
+ $("#output-img").show()
+ $("#output-url").show()
+ $("#result").show()
+ var data =
+ {
+ width: $("#img-width").val(),
+ height: $("#img-height").val(),
+ linethickness: $("#line-thickness").val(),
+ opacity: $("#line-opacity").val(),
+ linecolor: $("#line-color").val(),
+ spacing: $("#line-spacing").val(),
+ vlines: $('#v-lines:checked').val() !== undefined ? "true" : "false",
+ hlines: $('#h-lines:checked').val() !== undefined ? "true" : "false",
+ shadow: $('#shadow:checked').val() !== undefined ? "true" : "false",
+ bgimage: $("#bg-image").val(),
+ bgcolor: $("#bg-color").val(),
+ imageinstead: $("#imageinstead").val(),
+ planebgcolor: $("#planebgcolor").val(),
+ skycolor: $("#skycolor").val(),
+ planebgimage: $("#planebgimage").val(),
+ transition: $('#transition :selected').val(),
+ swing: $("#swing").val(),
+ tilt: $("#tilt").val(),
+ roll: $("#roll").val(),
+ zoom: $("#zoom").val(),
+ trim: $("#trim:checked").val() !== undefined ? "true" : "false",
+ format: $('#format :selected').val(),
+ username: $('#username').val()
+ }
+ if (data.transition == 'infinite'){
+ $('#genbutton').append("<span style='color:red'>WARNING:This might take a while</span>")}
+ if (data.username.length > 0)
+ document.cookie = "imname="+data.username+";path=/;domain=.asdf.us;max-age=1086400"
+ $.post("/im/api/imgrid", data, Main.callback)
+ },
+ error: function (s)
+ {
+ $("#output-cmd").html("<span class='error'>ERROR: " + s + "</span>").show()
+ $("#output-url").hide()
+ $("#output-img").hide()
+ },
+ filesize: function (size)
+ {
+ if (size < 1024)
+ return size.toString() + " bytes"
+ if (size < 1024 * 1024)
+ return Math.floor (size/1024).toString() + " KB"
+ else
+ return Math.floor (size/(1024*1024)).toString() + " MB"
+ },
+ callback: function (data)
+ {
+ data = JSON.parse(data)
+ $("#output-cmd").html('')
+ $("#output-img").html("<a target=_blank href='"+data.url+"'>"+"<img src='"+data.url+"'></img><br>"+"</a>");
+ $("#output-url").val(data.url)
+ $("#output-info").html('-ACTUAL SIZE-<br>'+Main.filesize(data.size)+'<br>'+data.width+'<br>'+data.height+'<br><br>'+'<span style="float:right">see more at &rarr;<a href="http://asdf.us/im/gallery">photoblaster gallery</a></span>'+'<br>')
+ Main.generating = false
+ },
+ cookie: function ()
+ {
+ if (document.cookie)
+ {
+ var cookies = document.cookie.split(";")
+ for (i in cookies)
+ {
+ var cookie = cookies[i].split("=")
+ if (cookie[0].indexOf("imname") !== -1)
+ {
+ if (cookie[1] !== 'false' && cookie[1] !== 'undefined' && cookie[1].length)
+ {
+ return cookie[1]
+ }
+ }
+ }
+ }
+ return ""
+ },
+ init: function ()
+ {
+ var name = Main.cookie ()
+ $("#username").val(name)
+ if (name)
+ {
+// $("#userlink").show()
+ // $("#userlink a").attr("href", "/im/gallery/?name="+name).html(name+"'s photoblasts")
+ }
+ $("#generate").bind("click", Main.go)
+ $(document).bind("keydown", Main.enter)
+ }
+ }
+$('#theform').each(function(){
+ this.reset();
+ });
+
+
+
+Main.init ()
diff --git a/frontend/imgrid/js/jquery-1.6.4.min.js b/frontend/imgrid/js/jquery-1.6.4.min.js
new file mode 100755
index 0000000..628ed9b
--- /dev/null
+++ b/frontend/imgrid/js/jquery-1.6.4.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */
+(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bA.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bW(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bP,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bW(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bW(a,c,d,e,"*",g));return l}function bV(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bL),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function by(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bt:bu;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bf(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function V(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(Q.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(w,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.4",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(!b)return-1;if(I)return I.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g+"With"](this===b?d:this,[h])}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u,v;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete
+t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,M(a.origType,a.selector),f.extend({},a,{handler:L,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,M(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?D:C):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=D;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=D;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=D,this.stopPropagation()},isDefaultPrevented:C,isPropagationStopped:C,isImmediatePropagationStopped:C};var E=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},F=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?F:E,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?F:E)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="submit"||c==="image")&&f(b).closest("form").length&&J("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")||f.nodeName(b,"button")?b.type:"";(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&J("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var G,H=function(a){var b=f.nodeName(a,"input")?a.type:"",c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=H(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",H(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in G)f.event.add(this,c+".specialChange",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var K={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||C,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=w.exec(h),k="",j&&(k=j[0],h=h.replace(w,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,K[h]?(a.push(K[h]+k),h=h+k):h=(K[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+M(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+M(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var N=/Until$/,O=/^(?:parents|prevUntil|prevAll)/,P=/,/,Q=/^.[^:#\[\.,]*$/,R=Array.prototype.slice,S=f.expr.match.POS,T={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(V(this,a,!1),"not",a)},filter:function(a){return this.pushStack(V(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=S.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!T[a]?f.unique(e):e,(this.length>1||P.test(d))&&O.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|object|embed|option|style)/i,bb=/checked\s*(?:[^=]|=\s*.checked.)/i,bc=/\/(java|ecma)script/i,bd=/^\s*<!(?:\[CDATA\[|\-\-)/,be={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!be[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bb.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bf(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bl)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!ba.test(a[0])&&(f.support.checkClone||!bb.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean
+(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]&&bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bk(k[i]);else bk(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bc.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bm=/alpha\([^)]*\)/i,bn=/opacity=([^)]*)/,bo=/([A-Z]|^ms)/g,bp=/^-?\d+(?:px)?$/i,bq=/^-?\d/,br=/^([\-+])=([\-+.\de]+)/,bs={position:"absolute",visibility:"hidden",display:"block"},bt=["Left","Right"],bu=["Top","Bottom"],bv,bw,bx;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bv(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=br.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bv)return bv(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return by(a,b,d);f.swap(a,bs,function(){e=by(a,b,d)});return e}},set:function(a,b){if(!bp.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bm,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bv(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bw=function(a,c){var d,e,g;c=c.replace(bo,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bx=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bp.test(d)&&bq.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bv=bw||bx,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\[\]$/,bB=/\r?\n/g,bC=/#.*$/,bD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\/\//,bI=/\?/,bJ=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bK=/^(?:select|textarea)/i,bL=/\s+/,bM=/([?&])_=[^&]*/,bN=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=["*/"]+["*"];try{bR=e.href}catch(bU){bR=c.createElement("a"),bR.href="",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bJ,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,"\r\n")}}):{name:b.name,value:c.replace(bB,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=b$(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bC,"").replace(bH,bS[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bL),d.crossDomain==null&&(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]&&r[2]==bS[2]&&(r[3]||(r[1]==="http:"?80:443))==(bS[3]||(bS[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bI.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,"$1_="+x);d.url=y+(y===d.url?(bI.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bT+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bz,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cr(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cq("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cq("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cr(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cq("show",1),slideUp:cq("hide",1),slideToggle:cq("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return d.step(a)}var d=this,e=f.fx;this.startTime=cn||co(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&f.timers.push(g)&&!cl&&(cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||co(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cs=/^t(?:able|d|h)$/i,ct=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cu(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cs.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!ct.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file
diff --git a/frontend/imgrid/js/jquery-ui-1.8.16.custom.min.js b/frontend/imgrid/js/jquery-ui-1.8.16.custom.min.js
new file mode 100755
index 0000000..3042d0b
--- /dev/null
+++ b/frontend/imgrid/js/jquery-ui-1.8.16.custom.min.js
@@ -0,0 +1,84 @@
+/*!
+ * jQuery UI 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.16",
+keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({propAttr:c.fn.prop||c.fn.attr,_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=
+this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,
+"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":
+"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,
+outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,
+"tabindex"),d=isNaN(b);return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&
+a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&
+c.ui.isOverAxis(b,e,i)}})}})(jQuery);
+;/*!
+ * jQuery UI Widget 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)try{b(d).triggerHandler("remove")}catch(e){}k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(d){}});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=
+function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):
+d;if(e&&d.charAt(0)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=
+b.extend(true,{},this.options,this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+
+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",
+c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
+;/*!
+ * jQuery UI Mouse 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ * jquery.ui.widget.js
+ */
+(function(b){var d=false;b(document).mouseup(function(){d=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(c){return a._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(true===b.data(c.target,a.widgetName+".preventClickEvent")){b.removeData(c.target,a.widgetName+".preventClickEvent");c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
+this.widgetName)},_mouseDown:function(a){if(!d){this._mouseStarted&&this._mouseUp(a);this._mouseDownEvent=a;var c=this,f=a.which==1,g=typeof this.options.cancel=="string"&&a.target.nodeName?b(a.target).closest(this.options.cancel).length:false;if(!f||g||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=
+this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();return true}}true===b.data(a.target,this.widgetName+".preventClickEvent")&&b.removeData(a.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(e){return c._mouseMove(e)};this._mouseUpDelegate=function(e){return c._mouseUp(e)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return d=true}},_mouseMove:function(a){if(b.browser.msie&&
+!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=
+false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+;/*
+ * jQuery UI Slider 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.mouse.js
+ * jquery.ui.widget.js
+ */
+(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var a=this,b=this.options,c=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f=b.values&&b.values.length||1,e=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+
+this.orientation+" ui-widget ui-widget-content ui-corner-all"+(b.disabled?" ui-slider-disabled ui-disabled":""));this.range=d([]);if(b.range){if(b.range===true){if(!b.values)b.values=[this._valueMin(),this._valueMin()];if(b.values.length&&b.values.length!==2)b.values=[b.values[0],b.values[0]]}this.range=d("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(b.range==="min"||b.range==="max"?" ui-slider-range-"+b.range:""))}for(var j=c.length;j<f;j+=1)e.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
+this.handles=c.add(d(e.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(g){g.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(g){d(this).data("index.ui-slider-handle",
+g)});this.handles.keydown(function(g){var k=true,l=d(this).data("index.ui-slider-handle"),i,h,m;if(!a.options.disabled){switch(g.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:k=false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");i=a._start(g,l);if(i===false)return}break}m=a.options.step;i=a.options.values&&a.options.values.length?
+(h=a.values(l)):(h=a.value());switch(g.keyCode){case d.ui.keyCode.HOME:h=a._valueMin();break;case d.ui.keyCode.END:h=a._valueMax();break;case d.ui.keyCode.PAGE_UP:h=a._trimAlignValue(i+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(i-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(i===a._valueMax())return;h=a._trimAlignValue(i+m);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(i===a._valueMin())return;h=a._trimAlignValue(i-
+m);break}a._slide(g,l,h);return k}}).keyup(function(g){var k=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(g,k);a._change(g,k);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();
+return this},_mouseCapture:function(a){var b=this.options,c,f,e,j,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});f=this._valueMax()-this._valueMin()+1;j=this;this.handles.each(function(k){var l=Math.abs(c-j.values(k));if(f>l){f=l;e=d(this);g=k}});if(b.range===true&&this.values(1)===b.min){g+=1;e=d(this.handles[g])}if(this._start(a,g)===false)return false;
+this._mouseSliding=true;j._handleIndex=g;e.addClass("ui-state-active").focus();b=e.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-e.width()/2,top:a.pageY-b.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b=
+this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b=
+this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);
+c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var f;if(this.options.values&&this.options.values.length){f=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>f||b===1&&c<f))c=f;if(c!==this.values(b)){f=this.values();f[b]=c;a=this._trigger("slide",a,{handle:this.handles[b],value:c,values:f});this.values(b?0:1);a!==false&&this.values(b,c,true)}}else if(c!==this.value()){a=this._trigger("slide",a,{handle:this.handles[b],value:c});
+a!==false&&this.value(c)}},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("change",a,c)}},value:function(a){if(arguments.length){this.options.value=
+this._trimAlignValue(a);this._refreshValue();this._change(null,0)}else return this._value()},values:function(a,b){var c,f,e;if(arguments.length>1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e<c.length;e+=1){c[e]=this._trimAlignValue(f[e]);this._change(null,e)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(a):
+this.value();else return this._values()},_setOption:function(a,b){var c,f=0;if(d.isArray(this.options.values))f=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(a){case "disabled":if(b){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.propAttr("disabled",true);this.element.addClass("ui-disabled")}else{this.handles.propAttr("disabled",false);this.element.removeClass("ui-disabled")}break;case "orientation":this._detectOrientation();
+this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(c=0;c<f;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var a=this.options.value;return a=this._trimAlignValue(a)},_values:function(a){var b,c;if(arguments.length){b=this.options.values[a];
+return b=this._trimAlignValue(b)}else{b=this.options.values.slice();for(c=0;c<b.length;c+=1)b[c]=this._trimAlignValue(b[c]);return b}},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a=
+this.options.range,b=this.options,c=this,f=!this._animateOff?b.animate:false,e,j={},g,k,l,i;if(this.options.values&&this.options.values.length)this.handles.each(function(h){e=(c.values(h)-c._valueMin())/(c._valueMax()-c._valueMin())*100;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";d(this).stop(1,1)[f?"animate":"css"](j,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(h===0)c.range.stop(1,1)[f?"animate":"css"]({left:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({width:e-
+g+"%"},{queue:false,duration:b.animate})}else{if(h===0)c.range.stop(1,1)[f?"animate":"css"]({bottom:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({height:e-g+"%"},{queue:false,duration:b.animate})}g=e});else{k=this.value();l=this._valueMin();i=this._valueMax();e=i!==l?(k-l)/(i-l)*100:0;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[f?"animate":"css"](j,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[f?"animate":"css"]({width:e+"%"},
+b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[f?"animate":"css"]({width:100-e+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[f?"animate":"css"]({height:e+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[f?"animate":"css"]({height:100-e+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.16"})})(jQuery);
+; \ No newline at end of file
diff --git a/frontend/imgrid/js/maincopy.js b/frontend/imgrid/js/maincopy.js
new file mode 100755
index 0000000..b7f474b
--- /dev/null
+++ b/frontend/imgrid/js/maincopy.js
@@ -0,0 +1,109 @@
+var Main =
+ {
+ API_HEADER: "#@imgrid",
+ generating: false,
+ enter: function (e)
+ {
+ if (Main.generating)
+ return
+ if (e.keyCode === 13)
+ Main.go()
+ },
+ go: function ()
+ {
+ if (Main.generating)
+ return
+ Main.generating = true
+ $("#output-cmd").html('generating...').show()
+ $("#output-img").show()
+ $("#output-url").show()
+ $("#result").show()
+ var data =
+ {
+ width: $("#img-width").val(),
+ height: $("#img-height").val(),
+ linethickness: $("#line-thickness").val(),
+ opacity: $("#line-opacity").val(),
+ linecolor: $("#line-color").val(),
+ spacing: $("#line-spacing").val(),
+ vlines: $('#v-lines:checked').val() !== undefined ? "true" : "false",
+ hlines: $('#h-lines:checked').val() !== undefined ? "true" : "false",
+ shadow: $('#shadow:checked').val() !== undefined ? "true" : "false",
+ bgtransparent: $('#bgtransparent:checked').val() !== undefined ? "true" : "false",
+ bgimage: $("#bg-image").val(),
+ bgcolor: $("#bg-color").val(),
+ imageinstead: $("#imageinstead").val(),
+ planebgcolor: $("#planebgcolor").val(),
+ skycolor: $("#skycolor").val(),
+ planebgimage: $("#planebgimage").val(),
+ dither: $('#dither:checked').val() !== undefined ? "true" : "false",
+ swing: $("#swing").val(),
+ tilt: $("#tilt").val(),
+ roll: $("#roll").val(),
+ zoom: $("#zoom").val(),
+ trim: $("#trim:checked").val() !== undefined ? "true" : "false",
+ format: $('#format :selected').val(),
+ name: $('#username').val()
+ }
+ if (data.name.length > 0)
+ document.cookie = "imname="+data.name+";path=/;domain=.asdf.us;max-age=1086400"
+ $.post("/cgi-bin/im/imgrid/gridmaker", data, Main.callback)
+ },
+ error: function (s)
+ {
+ $("#output-cmd").html("<span class='error'>ERROR: " + s + "</span>").show()
+ $("#output-url").hide()
+ $("#output-img").hide()
+ },
+ callback: function (raw)
+ {
+ $("#output-cmd").html('your result...')
+ lines = raw.split('\n')
+ lines = lines.reverse()
+ $("#output-img").html("<img class='results' src='"+lines[1]+"'></img>");
+ Main.generating = false
+ },
+ filesize: function (size)
+ {
+ if (size < 1024)
+ return size + " bytes"
+ if (size < 1024 * 1024)
+ return Math.floor (size/1024) + " KB"
+ else
+ return Math.floor (size/(1024*1024)) + " MB"
+ },
+ cookie: function ()
+ {
+ if (document.cookie)
+ {
+ var cookies = document.cookie.split(";")
+ for (i in cookies)
+ {
+ var cookie = cookies[i].split("=")
+ if (cookie[0].indexOf("imname") !== -1)
+ {
+ if (cookie[1] !== 'false' && cookie[1] !== 'undefined' && cookie[1].length)
+ {
+ return cookie[1]
+ }
+ }
+ }
+ }
+ return ""
+ },
+ init: function ()
+ {
+ var name = Main.cookie ()
+ $("#username").val(name)
+/* if (name)
+ {
+ $("#userlink").show()
+ $("#userlink a").attr("href", "/im/gallery/?name="+name).html(name+"'s photoblasts")
+ } */
+ // $("#likebutton,#controls").fadeIn(0)
+ $("#generate").bind("click", Main.go)
+ $("div input[type=text]").bind("keydown", Main.enter)
+ }
+ }
+//document.getElementById('imform').reset();
+Main.init ()
diff --git a/frontend/imgrid/js/popup.js b/frontend/imgrid/js/popup.js
new file mode 100755
index 0000000..bf138d0
--- /dev/null
+++ b/frontend/imgrid/js/popup.js
@@ -0,0 +1,69 @@
+//SETTING UP OUR POPUP
+//0 means disabled; 1 means enabled;
+ var popupStatus = 0;
+
+//loading popup with jQuery magic!
+ function loadPopup(){
+//loads popup only if it is disabled
+ if(popupStatus==0){
+ $("#backgroundPopup").css({
+ "opacity": "0.7"
+ });
+ $("#backgroundPopup").fadeIn("slow");
+ $("#popupContact").fadeIn("slow");
+ popupStatus = 1;
+ }
+ }
+//centering popup
+ function centerPopup(){
+//request data for centering
+ var windowWidth = document.documentElement.clientWidth;
+ var windowHeight = document.documentElement.clientHeight;
+ var popupHeight = $("#popupContact").height();
+ var popupWidth = $("#popupContact").width();
+ //centering
+ $("#popupContact").css({
+ "position": "absolute",
+ "top": windowHeight/2-popupHeight/2,
+ "left": windowWidth/2-popupWidth/2
+ });
+//only need force for IE6
+
+ $("#backgroundPopup").css({
+ "height": windowHeight
+ });
+
+ }
+//disabling popup with jQuery magic!
+ function disablePopup(){
+//disables popup only if it is enabled
+ if(popupStatus==1){
+ $("#backgroundPopup").fadeOut("slow");
+ $("#popupContact").fadeOut("slow");
+ popupStatus = 0;
+ }
+ }
+
+ $(document).ready(function(){
+//following code will be here
+ });
+
+//LOADING POPUP
+//Click the button event!
+ $("#swingleft").click(function(){
+//centering with css
+ centerPopup();
+//load popup
+ loadPopup();
+ });
+
+//CLOSING POPUP
+//Click the x event!
+ $("#popupContactClose").click(function(){
+ disablePopup();
+ });
+//Click out event!
+ $("#backgroundPopup").click(function(){
+ disablePopup();
+ });
+ \ No newline at end of file
diff --git a/frontend/imgrid/js/sliders.js b/frontend/imgrid/js/sliders.js
new file mode 100755
index 0000000..ef76b03
--- /dev/null
+++ b/frontend/imgrid/js/sliders.js
@@ -0,0 +1,83 @@
+ $(function() {
+ $( "#line-thickness-slider" ).slider({
+ value:1,
+ min: 0,
+ max: 300,
+ step: 1,
+ slide: function( event, ui ) {
+ $( "#line-thickness" ).val(ui.value);
+ }
+ });
+ $( "#line-thickness" ).val( $( "#line-thickness-slider" ).slider( "value" ) );
+ $( "#opacity-slider" ).slider({
+ value:1,
+ min: 0,
+ max: 1,
+ step: .1,
+ slide: function( event, ui ) {
+ $( "#line-opacity" ).val(ui.value);
+ }
+ });
+ $( "#line-opacity" ).val( $( "#opacity-slider" ).slider( "value" ) );
+ $( "#spacing-slider" ).slider({
+ value:10,
+ min: 1,
+ max: 400,
+ step: 1,
+ slide: function( event, ui ) {
+ $( "#line-spacing" ).val(ui.value);
+ }
+ });
+ $( "#line-spacing" ).val( $( "#spacing-slider" ).slider( "value" ) );
+
+ $( "#swingslider" ).slider({
+ value:0,
+ min: -180,
+ max: 180,
+ step: 1,
+ slide: function( event, ui ) {
+ $( "#swing" ).val(ui.value);
+ }
+ });
+ $( "#swing" ).val( $( "#swingslider" ).slider( "value" ) );
+
+ $( "#tiltslider" ).slider({
+ value:0,
+ min: -180,
+ max: 180,
+ step: 1,
+ slide: function( event, ui ) {
+ $( "#tilt" ).val(ui.value);
+ }
+ });
+ $( "#tilt" ).val( $( "#tiltslider" ).slider( "value" ) );
+
+ $( "#rollslider" ).slider({
+ value:0,
+ min: -180,
+ max: 180,
+ step: 1,
+ slide: function( event, ui ) {
+ $( "#roll" ).val(ui.value);
+ }
+ });
+ $( "#roll" ).val($( "#rollslider" ).slider( "value" ) );
+
+ $( "#zoomslider" ).slider({
+ value: 0,
+ min: -50,
+ max: 50,
+ step: .05,
+ slide: function( event, ui ) {
+ thevalue = (ui.value/4).toFixed(2);
+ if (thevalue <= 1 && thevalue >= -1)
+ {
+ thevalue = 0;
+ }
+ $( "#zoom" ).val(thevalue);
+ }
+ });
+ $( "#zoom" ).val($( "#zoomslider" ).slider( "value" ) );
+ });
+//end sliders jquery
+
diff --git a/frontend/imgrid/old.html b/frontend/imgrid/old.html
new file mode 100755
index 0000000..46e4a34
--- /dev/null
+++ b/frontend/imgrid/old.html
@@ -0,0 +1,461 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
+<html>
+<!--
+ * pepper *
+ *** and ***
+ **** JMD ****
+ * ****** internet CHAMPIONS ****** *
+ * *************************************** *
+ ** * ______*______ * **
+ ***** * ______*______ * *****
+ ******* ______*______ *******
+ *** **** * **** ***
+ ****** *oo******* *** *******oo* ******
+ * *o********* *********o* *
+ * * * *
+ * * _ _ * *
+ * * -_ _- * *
+ * * -_ _- * *
+ * * -___- * *
+ * *
+ *********************
+ * ** ** *
+ * ** ** *
+ * _-----_ *
+ *********
+
+-->
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta name="description" content="IMGRID A 3D GRID-PLANE GENERATOR" >
+ <meta name="keywords" content="photoblaster, 3D" >
+ <meta name=Author content="Pepper Dreamteamer - 2011 www.facebook.com/AAAFFF">
+ <link rel="shortcut icon" href="http://asdf.us/imgrid/favicon.ico">
+ <link rel="image_src" href="http://vfile.com/public/img/1.png" >
+ <!--FACEBOOK<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">-->
+ <meta property="og:title" content="imgrid" />
+ <meta property="og:type" content="website" />
+ <meta property="og:url" content="http://asdf.us/imgrid" />
+ <meta property="og:site_name" content="IMGRID - A 3D-GRID-PLANE GENERATOR" />
+ <title>IMGRID - a 3D GRID-PLANE GENERATOR</title>
+
+ <link rel="stylesheet" href="general.css" type="text/css" media="screen" />
+ <link href='jquery-ui-1.8.16.custom.css' rel='stylesheet' type='text/css' />
+ <link href='cssreset.css' rel='stylesheet' type='text/css'/>
+ <link href='http://fonts.googleapis.com/css?family=Varela+Round' rel='stylesheet' type='text/css'>
+ <style type='text/css'>
+ body
+ {
+ font-family: 'Varela Round', sans-serif;
+ font-size:10pt;
+ }
+ h1
+ {
+ font-size:18px;
+ width:50%;
+ margin:10px;
+ padding:10px;
+ }
+ #flatcontrols
+ {
+ width:40%;
+ margin:10px;
+ padding:10px;
+ }
+ .gridadj,.background,.dimensions
+ {
+ display:none;
+ }
+ #thegrid,#thedimensions,#thebackground
+ {
+ background-color:whitesmoke;
+ margin-left:20px;
+ -moz-box-shadow: 0px 0px 9px 3px aqua;
+ -webkit-box-shadow: 0px 0px 9px 3px aqua;
+ box-shadow: 0px 0px 9px 3px aqua
+ }
+ .results
+ {
+ display:none;
+ position:relative;
+ }
+ #output-url
+ {
+ z-index:100;
+ width:500px;
+ }
+ #result
+ {
+ position:fixed;
+ left:50%;
+ top:20px;
+ }
+ #output-img img
+ {
+ max-height:70%;
+ max-width:100%;
+ }
+ #output-url
+ {
+ width:100%;
+ }
+ .slider
+ {
+ background-color:#eee5de;
+ display:inline-block;
+ width:50%;
+ }
+ #opacity-slider, #spacing-slider
+ {
+ width:100%;
+ display:inline-block;
+ margin-right:0;
+ margin-left:0;
+ }
+ input
+ {
+ width:70px;
+ }
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default
+ {
+ background-color:#555;
+ }
+ .urlinput
+ {
+ width:60%;
+ }
+ a
+ {
+ background-color:white;
+ max-width:100px;
+ }
+ a:link
+ {
+ color: black;
+ }
+ a:visited
+ {
+ COLOR: black;
+ }
+ a:hover
+ {
+ COLOR: black;
+ }
+ a:active
+ {
+ COLOR: black;
+ }
+ table td
+ {
+ padding:4px;
+ }
+ table tr
+ {
+// border: solid 2px;
+ }
+ .gridmore, .backgroundmore, .dimensionsmore, .linksmore
+ {
+ cursor:pointer;
+ }
+ #gridplug,#backgroundplug,#dimensionsplug,#linksplug
+ {
+ font-size:20px;
+ text-align:center;
+ }
+button {
+ background: white;
+ color: #000000;
+ font-size: 18px;
+ font-family: Georgia, serif;
+ text-decoration: none;
+ vertical-align: middle;
+ }
+.button:hover {
+ border-top-color: #78e072;
+ background: #78e072;
+ color: #000000;
+ }
+table
+ {
+ empty-cells:show;
+ }
+#generate
+ {
+ position:absolute;
+ left:320px;
+ top:55px;
+ }
+ </style>
+</head>
+<body>
+<!-- <div id="popupContact">
+ <a id="popupContactClose">x</a>
+ <applet code="org.jdesktop.applet.util.JNLPAppletLauncher"
+ width=800
+ height=600
+ archive="dist/deployment/v1/jar/applet-launcher.jar,
+ dist/deployment/v1/jar/gluegen-rt.jar,
+ dist/deployment/v1/jar/jogl.all.jar,
+ dist/3dmap.jar">
+ <param name="codebase_lookup" value="false">
+ <param name="subapplet.classname" value="com.scannerjammer.applet.heightmap.applet.Simple3DLandscapeApplet">
+ <param name="subapplet.displayname" value="3D Map">
+ <param name="noddraw.check" value="true">
+ <param name="progressbar" value="true">
+ <param name="jnlpNumExtensions" value="1">
+ <param name="jnlpExtension1"
+ value="dist/deployment/v1/jogl-awt.jnlp">
+ <param name="java_arguments" value="-Dsun.java2d.noddraw=true">
+ <param name="jnlp_href" value="dist/3dmap.jnlp">
+</applet>
+ </div>
+ <div id="backgroundPopup"></div>
+endpopup code-->
+ <div id="intro" style="background-image:url(background.gif); z-index:1000; height:inherit; width:inherit; position:fixed; left:50%; top:20px">
+ <img src="athenafinal.gif"></img>
+ </div>
+
+<img src='http://asdf.us/im/8d/imgrid_1324285217_imgrid_1324210455_imgrid_1324210353_gradient_darkseagreencyan_1317343959___.png' style='position:fixed; top:-200px; z-index:-100;'></img>
+<div style='font-size:30px; margin-top:20px;margin-left:20px;'>IMGRID</div>
+<div style="font-size:12px;margin-left:20px;margin-bottom:20px;">3D-GRID-PLANE GENERATOR
+<br>
+hit enter or click GENERATE to get your 2D plane
+
+<button id="generate">GENERATE</button>
+</div>
+
+<form id='theform'>
+ <div id="flatcontrols">
+<table>
+<tr><td class='dimensionsmore'>DIMENSIONS</td>
+
+ <td> <div id='dimensionsplug' class='dimensionsmore'>+</div></td></tr>
+ </table>
+ <div id='thedimensions'>
+ <table class='dimensions'>
+ <tr><td>HEIGHT</td>
+ <td> <input id='img-height' type='text' value='500'><span style="font-size:12px">PX</span></input></td></td>
+ <tr><td>WIDTH</td>
+ <td><input id='img-width' type='text' value='700'><span style="font-size:12px">PX</span></input></td></td>
+ <tr style="line-height:10px"><td>&nbsp</tr><td>
+ </table>
+<table style="width:100%" class="dimensions">
+ <tr><td>SWING&nbsp<input id='swing' type='text' value='0'></input></td></tr>
+ <tr id="swingslider" class="slider"></tr>
+ <tr><td>TILT&nbsp<input id='tilt' type='text' value='0'></input></td></tr>
+ <tr id="tiltslider" class="slider"></tr>
+ <tr><td>ROLL&nbsp<input id='roll' type='text' value='0'></input></td></tr>
+ <tr id="rollslider" class="slider"></tr>
+ <tr><td>ZOOM&nbsp (in/out) &nbsp<input id='zoom' type='text' value='0'></input></td></tr>
+ <tr id="zoomslider" class="slider" value='0'></tr>
+
+</table>
+<table class="dimensions">
+ <tr><td>&nbsp</td></tr>
+ <tr><td>CROP WHITESPACE</td><td><input type="checkbox" id="trim" value="false"></input></td></tr>
+ <tr><td>&nbsp</td></tr>
+ </table>
+<table class='dimensions'>
+ <tr><td>IMAGE FORMAT</td><td>
+ <select id='format'>
+ <option selected='selected' value='png'>PNG</option>
+ <option value='gif'>GIF</option>
+ <option value='jpg'>JPG</option>
+ </select></td></tr></table>
+ </div>
+<table>
+<tr><td class='gridmore'>GRID AND IMAGE</td>
+
+ <td> <div id='gridplug' class='gridmore'>+</div></td></tr>
+ </table>
+
+ <div id='thegrid'>
+<table class='gridadj'>
+ <tr><td>USE IMAGE INSTEAD OF GRID</td>
+ <td><input type="text" class="urlinput" type="text" id="imageinstead" value="">IMG URL eg:http://ww...</input></td>
+ </tr></table>
+ <table class='gridadj'>
+ <tr><td>GRID THICKNESS:</td>
+ <td><input id='line-thickness' type='text' value='1'></td><td><span style="font-size:12px">PX&nbsp&nbsp</span></input></td></tr>
+
+ <tr class='gridadj'><td>GRID COLOR:</td>
+ <td><input id='line-color' type='text' value='BLACK'></input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></td>
+ </tr>
+
+ </table>
+ <table>
+ <tr class='gridadj'>
+ <td>GRID OPACITY: </td>
+ <td><input id='line-opacity' type='text' value='1'></input></td>
+ <td style="width:140px; height: .8em; margin:0; padding:0;" class="slider" style="margin:0;padding:0;"id="opacity-slider"></td>
+ </tr>
+
+ <tr class='gridadj'>
+ <td>GRID SPACING: </td>
+ <td><input id='line-spacing' type='text' value='0'></input></td>
+ <td class="slider" style="margin:0;padding:0;" id="spacing-slider"></td></tr>
+
+ <tr class='gridadj'><td>USE ONLY VERTICAL LINES</td><td><input type="checkbox" id="v-lines" value="false"></input></td></tr>
+
+ <tr class='gridadj'><td>USE ONLY HORIZONTAL LINES</td><td><input type="checkbox" id="h-lines" value="false" ></input></td></tr>
+ </table>
+<table class='gridadj'><td>GRID BACKGROUND COLOR <input type="text" id="bg-color" value="transparent"></td><td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></input></td>
+
+ </table>
+ <table class='gridadj'>
+ <tr><td>OR GRID BACKGROUND IMAGE</td>
+ <td><input class="urlinput" type="text" id="bg-image" value="">IMG URL eg:http://ww...</input></td></tr>
+ </table>
+
+<table class='gridadj'>
+ <tr><td>GRID-TRANSITION</td>
+ <td><select id="transition">
+ <option selected="selected" value='background'>none</option>
+ <option value="dither">dithered</option>
+ <option value="random">noise</option>
+ <option value="tile">infinite</option>
+ <option value="edge">extended-edge</option>
+ </select></td></tr>
+
+</table>
+ <table class='gridadj'>
+ <tr><td>DROP SHADOW</td><td><input type='checkbox' id='shadow' value='false'</input></td></tr>
+
+
+</table>
+</div>
+
+
+ <table>
+ <tr><td class="backgroundmore">BACKGROUND</td>
+ <td><div id="backgroundplug" class="backgroundmore">+</div></td>
+ </tr>
+ </table>
+<div id='thebackground'>
+ <table class='background'><td>BACKGROUND COLOR</td><td><input type="text" value="transparent" id="planebgcolor"></input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></td> </table>
+ <table class="background">
+
+ <tr><td>OR BACKGROUND IMAGE</td><td><input class='urlinput' type="text" value="" id="planebgimage">IMG URL eg:http://ww...</input></td></tr>
+ </table>
+
+ <table class='background'><tr><td>SKYCOLOR</td><td><input type="text" value="none" id="skycolor">for the area above the horizon-line</input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></td>
+ </tr>
+</table>
+
+</div>
+<table>
+ <tr><td>&nbsp</td></tr>
+ <tr><td>USERNAME</td><td><input type=text value="" id='username'></input></td><td><div class='linksmore' id='linksplug'>+</div></td></tr>
+</table>
+ <div id='links'>
+ <a class='links' href="http://asdf.us/im/gallery">PHOTOBLASTER GALLERY</a><br>
+ <a class='links' href="http://asdf.us/imgrid/greatgrids/">GREAT GRIDS GALLERY</a><br>
+ <a class='links' href="http://asdf.us/im">MAIN PHOTOBLASTER EDITOR</a></br>
+<div id="fb-root" style="position:fixed; bottom:10px; right:10px;background-color: transparent;"></div><script src="http://connect.facebook.net/en_US/all.js#appId=236917449658413&amp;xfbml=1"></script><fb:like href="http://asdf.us/im/" send="false" width="347" show_faces="false" colorscheme="light" font="" style="background-color: transparent;"></fb:like>
+
+ </div>
+<br>
+
+
+</div>
+
+</div>
+
+</form>
+<div id='result'>
+ <span id="output-cmd" class='results'>
+</span>
+ <span id="output-img" class='results'></span>
+ <input id="output-url" class='results'></input>
+ <div id="output-info" class='results'></div>
+</div>
+
+
+
+
+<h5 id='copyright' style="position:fixed; bottom:10px; left:10px;">COPYRIGHT 2011 PEPPER DREAMTEAMER</h5>
+<script type="text/javascript" src="jquery-1.6.4.min.js"></script>
+<script type="text/javascript" src="jquery-ui-1.8.16.custom.min.js"></script>
+<script type='text/javascript'>
+$(document).ready(function()
+ {
+ $('#intro').fadeOut(1000,function()
+ {
+ $('#intro').remove()
+ })
+ });
+</script>
+<script type="text/javascript" src="sliders.js"></script>
+<script type="text/javascript" src="main.js"></script>
+<!--<script src="popup.js" type="text/javascript"></script>-->
+<!--<script type="text/javascript" src="picker.js"></script>-->
+<script type='text/javascript'>
+ gridmoreclicked = 'false';
+ $('.gridmore').click(function(){
+ $('.gridadj').toggle('300')
+
+ if(gridmoreclicked === 'false'){
+ $('#gridplug').html('-')
+ $('#thegrid').css('padding','5px');
+ gridmoreclicked = 'true'
+ }
+ else{
+ $('#gridplug').html('+')
+ $('#thegrid').css('padding','0px');
+ gridmoreclicked = 'false'
+ }
+ $('#copyright').hide()
+ })
+
+
+
+ backgroundmoreclicked = 'false';
+ $('#backgroundplug').html('+');
+ $('.backgroundmore').click(function(){
+ $('.background').toggle('300')
+ if(backgroundmoreclicked === 'false'){
+ $('#thebackground').css('padding','5px');
+ $('#backgroundplug').html('-')
+ backgroundmoreclicked = 'true'
+ }
+ else{
+ $('#backgroundplug').html('+')
+ $('#thebackground').css('padding','0px');
+ backgroundmoreclicked = 'false'
+ }
+ $('#copyright').hide()
+ });
+
+
+ dimensionsmoreclicked = 'false';
+ $('#dimensionsplug').html('+');
+ $('.dimensionsmore').click(function(){
+ $('.dimensions').toggle('300')
+ if(dimensionsmoreclicked === 'false'){
+ $('#dimensionsplug').html('-')
+ $('#thedimensions').css('padding','5px');
+ dimensionsmoreclicked = 'true'
+ }
+ else{
+ $('#dimensionsplug').html('+')
+ $('#thedimensions').css('padding','0px');
+ dimensionsmoreclicked = 'false'
+ }
+ $('#copyright').hide()
+ });
+
+
+ $('#bg-color').click(function(){
+ nonecheck = $('#bg-color').val()
+ if(nonecheck === 'none')
+ {
+ $('#bg-color').val('')
+ }
+ });
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/oldindex.html b/frontend/imgrid/oldindex.html
new file mode 100755
index 0000000..106fabf
--- /dev/null
+++ b/frontend/imgrid/oldindex.html
@@ -0,0 +1,307 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
+<html>
+<!--
+ __ __ __ __ __ __ __
+/_/\/\ /_/\/\ /_/\/\ /_/\/\ /_/\/\ /_/\/\ /_/\/\
+\_\ / \_\ / \_\ / \_\ / \_\ / \_\ / \_\ /
+/_/ \ /_/ \ /_/ \ /_/ \ /_/ \ /_/ \ /_/ \
+\_\/\ \ \_\/\ \ \_\/\ \ \_\/\ \ \_\/\ \ \_\/\ \ \_\/\ \
+ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/
+-->
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta name="description" content="IMGRID A 3D GRID-PLANE GENERATOR" >
+ <meta name="keywords" content="photoblaster, 3D" >
+ <meta name=Author content="Pepper Dreamteamer - 2011 www.facebook.com/AAAFFF">
+ <link rel="shortcut icon" href="http://asdf.us/imgrid/favicon.ico">
+ <link rel="image_src" href="http://vfile.com/public/img/1.png" >
+ <!--FACEBOOK<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">-->
+ <meta property="og:title" content="imgrid" />
+ <meta property="og:type" content="website" />
+ <meta property="og:url" content="http://asdf.us/imgrid" />
+ <meta property="og:site_name" content="IMGRID - A 3D-GRID-PLANE GENERATOR" />
+ <title>IMGRID - a 3D GRID-PLANE GENERATOR</title>
+
+ <link rel="stylesheet" href="general.css" type="text/css" media="screen" />
+ <link href="colorpixx.css" rel="stylesheet" type="text/css" />
+ <link href='main2.css' rel='stylesheet' type='text/css' />
+ <link href='jquery-ui-1.8.16.custom.css' rel='stylesheet' type='text/css' />
+ <link href='cssreset.css' rel='stylesheet' type='text/css'/>
+ <style type='text/css'>
+ body
+ {
+ font-family:georgia, Arial;
+ font-size:10pt;
+ }
+ h1
+ {
+ font-size:18px;
+ // font-weight:bold;
+ width:50%;
+ margin:10px;
+ padding:10px;
+// box-shadow: 0px 0px 9px 4px #8B7D7B;
+ }
+ #flatcontrols
+ {
+ // background-color:whitesmoke;
+ // box-shadow: 0px 0px 9px 3px #00EEEE;
+ width:40%;
+ margin:10px;
+ padding:10px;
+ }
+ .lineadj{display:none;}
+ .threedadj{display:none;}
+ .gridbgadj{display:none;}
+ .results
+ {
+ display:none;
+ position:relative;
+ z-index:100;
+ }
+ .slider
+ {
+ background-color:#eee5de;
+ display:inline-block;
+ width:100%;
+ }
+ #opacity-slider
+ {
+ width:100%;
+ display:inline-block;
+ margin-right:0;
+ margin-left:0;
+ }
+ input
+ {
+ width:70px;
+ }
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default
+ {
+ background-color:#555;
+ }
+ #result
+ {
+ position:absolute;
+ right:20px;
+ top:10px;
+ }
+ #output-url
+ {
+ width:100%;
+ }
+ .urlinput
+ {
+ width:60%;
+ }
+ a
+ {
+ background-color:#8B8B83;
+ max-width:100px;
+ border-style:solid;
+ border-width:1px;
+ }
+ a:link
+ {
+ color: gold;
+ }
+ a:visited
+ {
+ COLOR: mediumspringgreen;
+ }
+ a:hover
+ {
+ COLOR: #FF0000;
+ }
+ a:active
+ {
+ COLOR: #00FF00;
+ }
+ table td
+ {
+ padding:4px;
+// border:solid 2px;
+ }
+ table tr
+ {
+// border: solid 2px;
+ }
+ </style>
+</head>
+<body>
+<!--popupcode-->
+<!-- <div id="popupContact">
+ <a id="popupContactClose">x</a>
+ <applet code="org.jdesktop.applet.util.JNLPAppletLauncher"
+ width=800
+ height=600
+ archive="dist/deployment/v1/jar/applet-launcher.jar,
+ dist/deployment/v1/jar/gluegen-rt.jar,
+ dist/deployment/v1/jar/jogl.all.jar,
+ dist/3dmap.jar">
+ <param name="codebase_lookup" value="false">
+ <param name="subapplet.classname" value="com.scannerjammer.applet.heightmap.applet.Simple3DLandscapeApplet">
+ <param name="subapplet.displayname" value="3D Map">
+ <param name="noddraw.check" value="true">
+ <param name="progressbar" value="true">
+ <param name="jnlpNumExtensions" value="1">
+ <param name="jnlpExtension1"
+ value="dist/deployment/v1/jogl-awt.jnlp">
+ <param name="java_arguments" value="-Dsun.java2d.noddraw=true">
+ <param name="jnlp_href" value="dist/3dmap.jnlp">
+</applet>
+ </div>
+ <div id="backgroundPopup"></div>
+endpopup code-->
+
+
+<h1>IMGRID </h1>
+<h2 style="font-size:16px;margin:10px;">A 3D-GRID-PLANE GENERATOR FROM PHOTOBLASTER</h2>
+
+<!--<h2 id="use">USE:</h2>
+ <div id="controls">
+ <h2>I. THE FLAT PLANE
+ <span id="swingleft" >II. THE 3D PLANE (forthcoming)
+ <br> CLICK TO OPEN JAVA APPLET</span></h2>-->
+
+ <div id="flatcontrols">
+<table style="width:100%">
+ <tr><td>SWING<input id='swing' type='text' value='0'></input></td></tr>
+ <tr id="swingslider" class="slider"></tr>
+ <tr><td>TILT<input id='tilt' type='text' value='0'></input></td></tr>
+ <tr id="tiltslider" class="slider"></tr>
+ <tr><td>ROLL<input id='roll' type='text' value='0'></input></td></tr>
+ <tr id="rollslider" class="slider"></tr>
+ <tr><td>ZOOM<input id='zoom' type='text' value='0'></input></td></tr>
+ <tr id="zoomslider" class="slider" value='0'></tr></table><table>
+
+</table>
+<table>
+<tr><td>THE 3D PLANE...</td>
+
+ <td> <button id='threedmore'>OPTIONS</button></td></tr>
+ <tr class='threedadj'><td>USE IMAGE INSTEAD OF GRID</td>
+ <td><input type="text" class="urlinput" type="text" id="imageinstead" value="">IMG URL eg:http://ww...</input></td>
+ </tr></table>
+ <table class='threedadj'><td>PLANE BACKGROUND COLOR</td><td><input type="text" value="transparent" id="planebgcolor"></input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">SEE COLOR LIST</a></td> </table>
+ <table>
+
+ <tr class='threedadj'><td>OR USE A BACKGROUND IMAGE</td><td><input class='urlinput' type="text" value="" id="planebgimage">IMG URL eg:http://ww...</input></td></tr>
+ </table>
+ <table>
+ <tr class='threedadj'><td>DROP SHADOW</td><td><input type='checkbox' id='shadow' value='false'</input></td></tr>
+ <tr class='threedadj'><td>SKYCOLOR</td><td><input type="text" value="none" id="skycolor">for the area above the horizon-line</input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">SEE COLOR LIST</a></td>
+ </tr></table>
+ <table>
+ <tr><td>ADJUST LINE:</td>
+ <td><button id='linemore'>OPTIONS</button></td>
+
+
+ <tr class='lineadj'><td>LINE THICKNESS:</td>
+ <td><input id='line-thickness' type='text' value='1'><span style="font-size:12px">PX</span></input></td></tr>
+
+ <tr class='lineadj'><td>LINE COLOR:</td>
+ <td><input id='line-color' type='text' value='BLACK'></input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">SEE COLOR LIST</a></td>
+ </tr>
+
+
+ <tr class='lineadj'>
+ <td>LINE OPACITY: </td>
+ <td><input id='line-opacity' type='text' value='1'></input></td>
+ <td class="slider" style="margin:0;padding:0;"id="opacity-slider"></td>
+ </tr>
+
+ <tr class='lineadj'>
+ <td>LINE SPACING: </td>
+ <td><input id='line-spacing' type='text' value='0'><span style='font-size:12px'>PX</span></input></td>
+ <td class="slider" style="margin:0;padding:0;" id="spacing-slider"></td></tr>
+
+ <tr class='lineadj'><td>USE ONLY VERTICAL LINES</td><td><input type="checkbox" id="v-lines" value="false"></input></td></tr>
+
+ <tr class='lineadj'><td>USE ONLY HORIZONTAL LINES</td><td><input type="checkbox" id="h-lines" value="false" ></input></td></tr>
+ </table>
+
+ <table>
+ </table>
+ <table>
+<tr><td>GRID BACKGROUND:</td>
+
+<td> <button id='gridbgmore'>OPTIONS</button></td></tr>
+ <tr class='gridbgadj'><td>TRANSPARENT? (THE DEFAULT)</td><td><input type="checkbox" id="bgtransparent" value="true" checked="checked"></input></td></tr>
+ <tr class='gridbgadj'><td>USE AN IMAGE?</td>
+ <td><input class="urlinput" type="text" id="bg-image" value="">IMG URL eg:http://ww...</input></td></tr>
+ </table><table class='gridbgadj'><td>USE A COLOR?<input type="text" id="bg-color" value=""></td><td><a href="http://asdf.us/im/colors.html" target="_blank">SEE COLOR LIST</a></input></td>
+
+ </table>
+
+
+<table>
+ <tr class='threedadj'><td>DITHERED-TRANSITION</td>
+ <td><select id="transition">
+ <option selected="selected" value='background'>none</option>
+ <option value="dither">dithered</option>
+ <option value="tile">infinite</option>
+ </select></td></tr>
+
+</table>
+ <table>
+ <tr><td>IMAGE SIZE:</td></tr>
+ <tr><td>HEIGHT</td>
+ <td> <input id='img-height' type='text' value='300'><span style="font-size:12px">PX</span></input></td></td>
+
+ <tr><td>WIDTH</td>
+ <td><input id='img-width' type='text' value='400'><span style="font-size:12px">PX</span></input></td></td></table>
+<table>
+ <tr><td>TRIM WHITESPACE</td><td><input type="checkbox" id="trim" value="false"></input></td></tr>
+ <tr>IMAGE FORMAT<select id='format'>
+ <option selected='selected' value='png'>PNG</option>
+ <option value='gif'>GIF</option>
+ <option value='jpg'>JPG</option>
+ </select></tr></table><table>
+
+ <tr><input type=text value="" id='username'>&larr; ENTER YOUR NAME if you want </input></tr>
+</table>
+<table>
+<button id="generate">GENERATE</button>
+
+<!--<input type="reset" value="Reset Form">-->
+
+</div>
+
+</div>
+
+<div id='result'>
+ <span id="output-cmd" class='results'>click generate or hit enter to get your 2D plane</span>
+ <span id="output-img" class='results'></span>
+ <input id="output-url" class='results'></input>
+ <div id="output-info" class='results'></div>
+</div>
+
+<h5 style="position:fixed; bottom:10px; left:10px;">COPYRIGHT 2011 PEPPER DREAMTEAMER</h5>
+<div id="intro" style="background-color:white">
+<!--<div id="bg">
+ <div><table cellspacing=0 cellpadding=0><tr><td>
+ <img src="background.gif" />
+ </td></tr></table></div>
+</div>-->
+<div id="athena"><img src="athenafinal.gif"></img></div>
+</div>
+<script type="text/javascript" src="jquery-1.6.4.min.js"></script>
+<script type="text/javascript" src="jquery-ui-1.8.16.custom.min.js"></script>
+<script type="text/javascript" src="sliders.js"></script>
+<script type="text/javascript">$('#intro').remove();</script>
+<!--<script type="text/javascript" src="intro.js">-->
+<script type="text/javascript" src="main.js"></script>
+<!--<script src="popup.js" type="text/javascript"></script>-->
+<!--<script type="text/javascript" src="picker.js"></script>-->
+<script type='text/javascript'>
+ $('#linemore').click(function(){$('.lineadj').toggle('300')})
+ $('#threedmore').click(function(){$('.threedadj').toggle('300')})
+ $('#gridbgmore').click(function(){$('.gridbgadj').toggle('300')})
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/safety.html b/frontend/imgrid/safety.html
new file mode 100755
index 0000000..79bc91a
--- /dev/null
+++ b/frontend/imgrid/safety.html
@@ -0,0 +1,488 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
+<html>
+<!--
+ * pepper *
+ *** and ***
+ **** JMD ****
+ * ****** internet CHAMPIONS ****** *
+ * *************************************** *
+ ** * ______*______ * **
+ ***** * ______*______ * *****
+ ******* ______*______ *******
+ *** **** * **** ***
+ ****** *oo******* *** *******oo* ******
+ * *o********* *********o* *
+ * * * *
+ * * _ _ * *
+ * * -_ _- * *
+ * * -_ _- * *
+ * * -___- * *
+ * *
+ *********************
+ * ** ** *
+ * ** ** *
+ * _-----_ *
+ *********
+
+-->
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <meta name="description" content="IMGRID A 3D GRID-PLANE GENERATOR" >
+ <meta name="keywords" content="photoblaster, 3D" >
+ <meta name=Author content="Pepper Dreamteamer - 2011 www.facebook.com/AAAFFF">
+ <link rel="shortcut icon" href="http://asdf.us/imgrid/favicon.ico">
+ <link rel="image_src" href="http://vfile.com/public/img/1.png" >
+ <!--FACEBOOK<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">-->
+ <meta property="og:title" content="imgrid" />
+ <meta property="og:type" content="website" />
+ <meta property="og:url" content="http://asdf.us/imgrid" />
+ <meta property="og:site_name" content="IMGRID - A 3D-GRID-PLANE GENERATOR" />
+ <title>IMGRID - a 3D GRID-PLANE GENERATOR</title>
+
+ <link rel="stylesheet" href="general.css" type="text/css" media="screen" />
+ <link href='jquery-ui-1.8.16.custom.css' rel='stylesheet' type='text/css' />
+ <link href='cssreset.css' rel='stylesheet' type='text/css'/>
+ <link href='http://fonts.googleapis.com/css?family=Varela+Round' rel='stylesheet' type='text/css'>
+ <style type='text/css'>
+ body
+ {
+ font-family: 'Varela Round', sans-serif;
+ font-size:10pt;
+ }
+ h1
+ {
+ font-size:18px;
+ width:50%;
+ margin:10px;
+ padding:10px;
+ }
+ #flatcontrols
+ {
+ width:40%;
+ margin:10px;
+ padding:10px;
+ }
+ .gridadj,.background,.dimensions,.links
+ {
+ display:none;
+ }
+ #thegrid,#thedimensions,#thebackground,#links
+ {
+ background-color:whitesmoke;
+ margin-left:20px;
+ -moz-box-shadow: 0px 0px 9px 3px #8B7D7B;
+ -webkit-box-shadow: 0px 0px 9px 3px #8B7D7B;
+ box-shadow: 0px 0px 9px 3px #8B7D7B;
+ }
+ #links
+ {
+ line-height:2;
+ padding:10px;
+ }
+ .results
+ {
+ display:none;
+ position:relative;
+ }
+ #result
+ {
+ position:fixed;
+ left:50%;
+ top:20px;
+ padding-right:15px;
+ }
+ #output-img img
+ {
+ max-height:70%;
+ max-width:100%;
+ }
+ #output-url
+ {
+ width:100%;
+ }
+ .slider
+ {
+ background-color:#eee5de;
+ display:inline-block;
+ width:50%;
+ }
+ #opacity-slider, #spacing-slider
+ {
+ width:100%;
+ display:inline-block;
+ margin-right:0;
+ margin-left:0;
+ }
+ input
+ {
+ width:70px;
+ }
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default
+ {
+ background-color:#555;
+ }
+ .urlinput
+ {
+ width:60%;
+ }
+ a
+ {
+ background-color:white;
+ max-width:100px;
+ }
+ a:link
+ {
+ color: black;
+ }
+ a:visited
+ {
+ COLOR: black;
+ }
+ a:hover
+ {
+ COLOR: black;
+ }
+ a:active
+ {
+ COLOR: black;
+ }
+ table td
+ {
+ padding:4px;
+ }
+ table tr
+ {
+// border: solid 2px;
+ }
+ .gridmore, .backgroundmore, .dimensionsmore, .linksmore
+ {
+ cursor:pointer;
+ }
+ #gridplug,#backgroundplug,#dimensionsplug,#linksplug
+ {
+ font-size:20px;
+ text-align:center;
+ }
+button {
+ background: white;
+ color: #000000;
+ font-size: 18px;
+ font-family: Georgia, serif;
+ text-decoration: none;
+ vertical-align: middle;
+ }
+.button:hover {
+ border-top-color: #78e072;
+ background: #78e072;
+ color: #000000;
+ }
+table
+ {
+ empty-cells:show;
+ }
+.generate
+ {
+ position:absolute;
+ left:320px;
+ top:240px;
+ -moz-box-shadow: 0px 0px 9px 3px pink;
+ -webkit-box-shadow: 0px 0px 9px 3px pink;
+ box-shadow: 0px 0px 9px 3px pink;
+ }
+ </style>
+</head>
+<body>
+<!-- <div id="popupContact">
+ <a id="popupContactClose">x</a>
+ <applet code="org.jdesktop.applet.util.JNLPAppletLauncher"
+ width=800
+ height=600
+ archive="dist/deployment/v1/jar/applet-launcher.jar,
+ dist/deployment/v1/jar/gluegen-rt.jar,
+ dist/deployment/v1/jar/jogl.all.jar,
+ dist/3dmap.jar">
+ <param name="codebase_lookup" value="false">
+ <param name="subapplet.classname" value="com.scannerjammer.applet.heightmap.applet.Simple3DLandscapeApplet">
+ <param name="subapplet.displayname" value="3D Map">
+ <param name="noddraw.check" value="true">
+ <param name="progressbar" value="true">
+ <param name="jnlpNumExtensions" value="1">
+ <param name="jnlpExtension1"
+ value="dist/deployment/v1/jogl-awt.jnlp">
+ <param name="java_arguments" value="-Dsun.java2d.noddraw=true">
+ <param name="jnlp_href" value="dist/3dmap.jnlp">
+</applet>
+ </div>
+ <div id="backgroundPopup"></div>
+endpopup code-->
+ <div id='intro' style='position:absolute;top:0px;left:0px;width:100%;height:100%;background-image:url(background.gif);'><div style="background-image:url(background.gif); z-index:1000; height:inherit; width:inherit; position:fixed; left:50%; top:20px">
+ <img src="athenafinal.gif"></img>
+ </div></div>
+
+<a href="http://asdf.us/imgrid/index.html" style:'cursor:pointer'><img src='http://asdf.us/im/8d/imgrid_1324285217_imgrid_1324210455_imgrid_1324210353_gradient_darkseagreencyan_1317343959___.png' style='position:fixed; top:-200px; z-index:-100;'></img>
+<div style='font-size:30px;'><img style="width:500px" src="http://asdf.us/im/42/imgrid_1324542588_.png"></img></div></a>
+<div style="font-size:12px;margin-left:20px;margin-bottom:20px;">3D-GRID-PLANE GENERATOR
+<br>
+hit enter or click GENERATE to get your 2D plane
+
+<span id='genbutton'><button id='generate'>GENERATE</button></span>
+</div>
+
+<form id='theform'>
+ <div id="flatcontrols">
+<table>
+<tr><td class='dimensionsmore'>DIMENSIONS</td>
+
+ <td> <div id='dimensionsplug' class='dimensionsmore'>+</div></td></tr>
+ </table>
+ <div id='thedimensions'>
+ <table class='dimensions'>
+ <tr><td>HEIGHT</td>
+ <td> <input id='img-height' type='text' value='500'><span style="font-size:12px">PX</span></input></td></td>
+ <tr><td>WIDTH</td>
+ <td><input id='img-width' type='text' value='700'><span style="font-size:12px">PX</span></input></td></td>
+ <tr style="line-height:10px"><td>&nbsp</tr><td>
+ </table>
+<table style="width:100%" class="dimensions">
+ <tr><td>SWING&nbsp<input id='swing' type='text' value='0'></input></td></tr>
+ <tr id="swingslider" class="slider"></tr>
+ <tr><td>TILT&nbsp<input id='tilt' type='text' value='0'></input></td></tr>
+ <tr id="tiltslider" class="slider"></tr>
+ <tr><td>ROLL&nbsp<input id='roll' type='text' value='0'></input></td></tr>
+ <tr id="rollslider" class="slider"></tr>
+ <tr><td>ZOOM&nbsp (in/out) &nbsp<input id='zoom' type='text' value='0'></input></td></tr>
+ <tr id="zoomslider" class="slider" value='0'></tr>
+
+</table>
+<table class="dimensions">
+ <tr><td>&nbsp</td></tr>
+ <tr><td>CROP WHITESPACE</td><td><input type="checkbox" id="trim" value="false"></input></td></tr>
+ <tr><td>&nbsp</td></tr>
+ </table>
+<table class='dimensions'>
+ <tr><td>IMAGE FORMAT</td><td>
+ <select id='format'>
+ <option selected='selected' value='png'>PNG</option>
+ <option value='gif'>GIF</option>
+ <option value='jpg'>JPG</option>
+ </select></td></tr></table>
+ </div>
+<table>
+<tr><td class='gridmore'>GRID AND IMAGE</td>
+
+ <td> <div id='gridplug' class='gridmore'>+</div></td></tr>
+ </table>
+
+ <div id='thegrid'>
+<table class='gridadj'>
+ <tr><td>USE IMAGE INSTEAD OF GRID</td>
+ <td><input type="text" class="urlinput" type="text" id="imageinstead" value="">IMG URL eg:http://ww...</input></td>
+ </tr></table>
+ <table class='gridadj'>
+ <tr><td>GRID THICKNESS:</td>
+ <td><input id='line-thickness' type='text' value='1'></td><td><span style="font-size:12px">PX&nbsp&nbsp</span></input></td></tr>
+
+ <tr class='gridadj'><td>GRID COLOR:</td>
+ <td><input id='line-color' type='text' value='BLACK'></input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></td>
+ </tr>
+
+ </table>
+ <table>
+ <tr class='gridadj'>
+ <td>GRID OPACITY: </td>
+ <td><input id='line-opacity' type='text' value='1'></input></td>
+ <td style="width:140px; height: .8em; margin:0; padding:0;" class="slider" style="margin:0;padding:0;"id="opacity-slider"></td>
+ </tr>
+
+ <tr class='gridadj'>
+ <td>GRID SPACING: </td>
+ <td><input id='line-spacing' type='text' value='0'></input></td>
+ <td class="slider" style="margin:0;padding:0;" id="spacing-slider"></td></tr>
+
+ <tr class='gridadj'><td>USE ONLY VERTICAL LINES</td><td><input type="checkbox" id="v-lines" value="false"></input></td></tr>
+
+ <tr class='gridadj'><td>USE ONLY HORIZONTAL LINES</td><td><input type="checkbox" id="h-lines" value="false" ></input></td></tr>
+ </table>
+<table class='gridadj'><td>GRID BACKGROUND COLOR <input type="text" id="bg-color" value="transparent"></td><td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></input></td>
+
+ </table>
+ <table class='gridadj'>
+ <tr><td>OR GRID BACKGROUND IMAGE</td>
+ <td><input class="urlinput" type="text" id="bg-image" value="">IMG URL eg:http://ww...</input></td></tr>
+ </table>
+
+<table class='gridadj'>
+ <tr><td>GRID-TRANSITION</td>
+ <td><select id="transition">
+ <option selected="selected" value='background'>none</option>
+ <option value="dither">dithered</option>
+ <option value="random">noise</option>
+ <option value="tile">infinite</option>
+ <option value="edge">extended-edge</option>
+ </select></td></tr>
+
+</table>
+ <table class='gridadj'>
+ <tr><td>DROP SHADOW</td><td><input type='checkbox' id='shadow' value='false'</input></td></tr>
+
+
+</table>
+</div>
+
+
+ <table style='width:150px;'>
+ <tr><td class="backgroundmore">BACKGROUND</td>
+ <td><div id="backgroundplug" class="backgroundmore">+</div></td>
+ </tr>
+ </table>
+<div id='thebackground'>
+ <table class='background'><td>BACKGROUND COLOR</td><td><input type="text" value="transparent" id="planebgcolor"></input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></td> </table>
+ <table class="background">
+
+ <tr><td>OR BACKGROUND IMAGE</td><td><input class='urlinput' type="text" value="" id="planebgimage">IMG URL eg:http://ww...</input></td></tr>
+ </table>
+
+ <table class='background'><tr><td>SKYCOLOR</td><td><input type="text" value="none" id="skycolor">for the area above the horizon-line</input></td>
+ <td><a href="http://asdf.us/im/colors.html" target="_blank">COLOR LIST</a></td>
+ </tr>
+</table>
+
+</div>
+<table>
+ <tr><td>&nbsp</td></tr>
+ <tr><td>USERNAME</td><td><input type=text value="" id='username'></input></td><td><div class='linksmore' id='linksplug'>+</div></td>
+<td> <div id='links' class='links'>
+ <a class='links' href="http://asdf.us/im/gallery">PHOTOBLASTER GALLERY</a><br>
+ <a class='links' href="http://asdf.us/imgrid/greatgrids/">THE GREAT GRIDS GALLERY</a><br>
+ <a class='links' href="http://asdf.us/im">MAIN PHOTOBLASTER EDITOR</a></br>
+<div id="fb-root" style="position:fixed; bottom:10px; right:10px;background-color: transparent;"></div><script src="http://connect.facebook.net/en_US/all.js#appId=236917449658413&amp;xfbml=1"></script><fb:like href="http://asdf.us/im/" send="false" width="347" show_faces="false" colorscheme="light" font="" style="background-color: transparent;"></fb:like>
+
+ </div>
+
+</td></tr></table>
+
+<br>
+
+
+</div>
+
+</div>
+
+</form>
+<div id='result'>
+ <span id="output-cmd" class='results'>
+</span>
+ <span id="output-img" class='results'></span>
+ <input id="output-url" class='results'></input>
+ <div id="output-info" class='results'></div>
+</div>
+
+
+
+
+<span class='copyright' style="position:fixed; bottom:10px; left:10px;">COPYRIGHT 2011 PEPPER DREAMTEAMER</span><a href='http://asdf.us/imgrid/greatgrids/index.html'><img class='copyright' style='display:inline; position:fixed; bottom:10px; left:290px; width:100px' src="blackplant.png"></img></a>
+<script type="text/javascript" src="jquery-1.6.4.min.js"></script>
+<script type="text/javascript" src="jquery-ui-1.8.16.custom.min.js"></script>
+<script type='text/javascript'>
+$(document).ready(function()
+ {
+ $('#intro').fadeOut(1000,function()
+ {
+ $('#intro').remove()
+ })
+ });
+</script>
+<script type="text/javascript" src="sliders.js"></script>
+<script type="text/javascript" src="main.js"></script>
+<!--<script src="popup.js" type="text/javascript"></script>-->
+<!--<script type="text/javascript" src="picker.js"></script>-->
+<script type='text/javascript'>
+ linksclicked = 'false';
+ $('#linksplug').click(function(){
+ $('.links').toggle('300')
+
+ if(linksclicked === 'false'){
+ $('#linksplug').html('-')
+ $('.links').css({'min-width':'275px','word-space':'nowrap','min-height':'100px'})
+ linksclicked = 'true'
+ }
+ else{
+ $('#linksplug').html('+')
+ $('#links').css('padding','0px');
+ linksclicked = 'false'
+ }
+ $('.copyright').hide()
+ $("body,html").scrollTop(5000);
+ })
+
+ gridmoreclicked = 'false';
+ $('.gridmore').click(function(){
+ $('.gridadj').toggle('300')
+
+ if(gridmoreclicked === 'false'){
+ $('#gridplug').html('-')
+ $('#thegrid').css('padding','5px');
+ gridmoreclicked = 'true'
+ $("html,body").scrollTop(1000);
+ }
+ else{
+ $('#gridplug').html('+')
+ $('#thegrid').css('padding','0px');
+ gridmoreclicked = 'false'
+ }
+ $('.copyright').hide()
+ })
+
+
+
+ backgroundmoreclicked = 'false';
+ $('#backgroundplug').html('+');
+ $('.backgroundmore').click(function(){
+ $('.background').toggle('300')
+ if(backgroundmoreclicked === 'false'){
+ $('#thebackground').css('padding','5px');
+ $('#backgroundplug').html('-')
+ $("html,body").scrollTop(1000);
+ backgroundmoreclicked = 'true'
+ }
+ else{
+ $('#backgroundplug').html('+')
+ $('#thebackground').css('padding','0px');
+ backgroundmoreclicked = 'false'
+ }
+ $('.copyright').hide()
+ });
+
+
+ dimensionsmoreclicked = 'false';
+ $('#dimensionsplug').html('+');
+ $('.dimensionsmore').click(function(){
+ $('.dimensions').toggle('300')
+ if(dimensionsmoreclicked === 'false'){
+ $('#dimensionsplug').html('-')
+ $('#thedimensions').css('padding','5px');
+ $("html,body").scrollTop(1000);
+ dimensionsmoreclicked = 'true'
+ }
+ else{
+ $('#dimensionsplug').html('+')
+ $('#thedimensions').css('padding','0px');
+ dimensionsmoreclicked = 'false'
+ }
+ $('.copyright').hide()
+ });
+
+
+ $('#bg-color').click(function(){
+ nonecheck = $('#bg-color').val()
+ if(nonecheck === 'none')
+ {
+ $('#bg-color').val('')
+ }
+ });
+</script>
+</body>
+</html>
diff --git a/frontend/imgrid/sj6v1.zip b/frontend/imgrid/sj6v1.zip
new file mode 100755
index 0000000..b5c1592
--- /dev/null
+++ b/frontend/imgrid/sj6v1.zip
Binary files differ
diff --git a/frontend/imlandscape/README.md b/frontend/imlandscape/README.md
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/frontend/imlandscape/README.md
diff --git a/frontend/imlandscape/img/Heightmap.jpg b/frontend/imlandscape/img/Heightmap.jpg
new file mode 100644
index 0000000..ccee392
--- /dev/null
+++ b/frontend/imlandscape/img/Heightmap.jpg
Binary files differ
diff --git a/frontend/imlandscape/img/Texture.jpg b/frontend/imlandscape/img/Texture.jpg
new file mode 100644
index 0000000..eef3866
--- /dev/null
+++ b/frontend/imlandscape/img/Texture.jpg
Binary files differ
diff --git a/frontend/imlandscape/img/generating_background.gif b/frontend/imlandscape/img/generating_background.gif
new file mode 100644
index 0000000..b228123
--- /dev/null
+++ b/frontend/imlandscape/img/generating_background.gif
Binary files differ
diff --git a/frontend/imlandscape/index.html b/frontend/imlandscape/index.html
new file mode 100644
index 0000000..fb9e251
--- /dev/null
+++ b/frontend/imlandscape/index.html
@@ -0,0 +1,113 @@
+<!doctype html>
+<html lang="en">
+<head>
+<title>IMLandscape</title>
+<!--
+ WEBSITE BY PEPPER
+-->
+<meta charset="utf-8">
+<meta name="viewport"
+ content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
+<style>
+body {
+ color: black;
+ font-family: Monospace;
+ font-size: 13px;
+ text-align: left;
+ background-color: whitesmoke;
+ margin: 0px;
+ overflow: hidden;
+}
+
+#title {
+ font-size: 25px;
+}
+
+#params {
+ font-size: 16px;
+}
+
+#info {
+ font-size: 12px;
+ border: 1px solid black;
+ padding: 5px;
+}
+
+#container {
+ position: absolute;
+ top: 150px;
+ width: 100%;
+ height: 100%;
+ padding: 5px;
+ background-color: #FFFFFF;
+}
+
+</style>
+</head>
+<body>
+ <script src="js/generating.js"></script>
+ <script src="js/jquery.min.js"></script>
+ <script src="js/Three.js"></script>
+ <script src="js/Detector.js"></script>
+ <script src="js/RequestAnimationFrame.js"></script>
+ <script src="js/3D_Landscape.js"></script>
+ <script src="js/keypress.js"></script>
+ <script src="js/pb.js"></script>
+ <script src="js/username.js"></script>
+ <table border="0" cellpadding="10">
+ <tr>
+ <td>
+ <div id="title">
+ DUMB 3D Landscape
+ </div>
+ <div id="info">
+ Move Up/Down/Left/Right: Arrow Keys<br/>
+ Rotate Up/Down/Left/Right: Shift+Arrow Keys<br/>
+ Zoom In/Zoom Out: Fn+Up Arrow/Fn+Down Arrow or Page Up/Page Down<br/>
+ Toggle Wireframe: Space<br/>
+ Restore original position: Delete<br/>
+ </div>
+ </td>
+
+ <td>
+ <div id="input">
+ <form name="input" action="" method="post">
+ <table id="form_table" border="0">
+ <tr>
+ <td>Texture URL:</td>
+ <td colspan="2"><input type="text" id="texture" size="35" value="http://someurl.biz/someimage.jpg" /></td>
+ </tr>
+ <tr>
+ <td>Heightmap URL:</td>
+ <td colspan="2"><input type="text" id="heightmap" size="35" value="http://someurl.biz/someimage.jpg" /><br /></td>
+ </tr>
+ <tr>
+ <td><input type="button" value="Save as Image" id="save" onClick="saveScene()" /></td>
+ <td><input type="button" value="Load New" id="change" onClick="loadNew()" /></td>
+ </tr>
+ <tr>
+ <td class="url_result" style="display:none;" colspan="2">rendered image:<a class="url_result" href="" target="_blank"></a>(semi-transparent)</td>
+ </tr>
+ </tr>
+ </table>
+ </form>
+ </div>
+ </td>
+ <td>
+ <div id="new_thing">
+ <table id="username_etc" border=0>
+ <tr>
+ <td colspan="2">Username:&nbsp<input type="text" size="10" id="username" value="" /></td>
+ </tr>
+ <tr>
+ <td id="gallery_link" colspan="2">&rarr;<a href="http://asdf.us/im/gallery" target="_blank" >pb gallery</a></td>
+ </tr>
+ </table>
+ </div>
+ </td>
+ </tr>
+ </table>
+ <div id="container">
+ </div>
+</body>
+</html>
diff --git a/frontend/imlandscape/js/3D_Landscape.js b/frontend/imlandscape/js/3D_Landscape.js
new file mode 100644
index 0000000..411bfe7
--- /dev/null
+++ b/frontend/imlandscape/js/3D_Landscape.js
@@ -0,0 +1,248 @@
+var container, stats;
+var camera, controls, scene, renderer;
+var mesh, texture, material;
+//FIXME experiment with these fixed params
+var worldWidth = 256, worldDepth = 256, worldHalfWidth = worldWidth / 2, worldHalfDepth = worldDepth / 2;
+var textureFile = 'img/Texture.jpg';
+var heightmapFile = 'img/Heightmap.jpg';
+var pos_x, pos_y, pos_z, rot_x, rot_y, rot_z;
+var wf = false;
+
+
+function runWebGLSimulation(){
+ //Detect WebGL
+ if (!Detector.webgl) {
+ Detector.addGetWebGLMessage();
+ document.getElementById('container').innerHTML = "";
+ }
+
+ //Start Graphics
+ initGraphics(textureFile, heightmapFile, function(){ animate() });
+ //Start Scene Animation
+}
+
+function initGraphics(textureFile, heightmapFile, cb) {
+
+ container = document.getElementById('container');
+ //Set camera
+ camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 20000);
+ //Set scene
+ scene = new THREE.Scene();
+
+ //Get heightmap data
+ //Generates the heightmap data from the heightmap image
+ var size = worldWidth * worldDepth, data = new Float32Array(size);
+
+ var canvas = document.createElement('canvas');
+ canvas.width = worldWidth;
+ canvas.height = worldDepth;
+ context = canvas.getContext('2d');
+ context.fillStyle = '#000';
+ context.fillRect(0, 0, worldWidth, worldDepth);
+
+ var img = new Image();
+ img.src = heightmapFile;
+ img.onerror = function() {
+ alert("The following url did not work: \n"+heightmapFile.slice(15));
+ is_generating = false;
+ toggle_background();
+ };
+
+ img.onload = function(){
+ context.drawImage(img, 0, 0);
+ image = context.getImageData(0, 0, worldWidth, worldDepth);
+ var imageData = image.data;
+ var pixels = size;
+ for (var i=0; i<pixels; i++){
+ // Get RGB
+ red = imageData[4 * i + 0];
+ green = imageData[4 * i + 1];
+ blue = imageData[4 * i + 2];
+ // Get grayscale
+ gray = (red + green + blue) / 3;
+ // Put heightmap value
+ data[i] = gray;
+ }
+
+ //Set camera position
+ camera.position.y = data[worldHalfWidth + worldHalfDepth * worldWidth] + 500;
+ scene.add(camera);
+
+ //Create geometry data used for mesh
+ var geometry = new THREE.PlaneGeometry(7500, 7500, worldWidth - 1, worldDepth - 1);
+ for ( var i = 0, l = geometry.vertices.length; i < l; i++) {
+ geometry.vertices[i].position.z = data[i] * 3;
+ }
+
+ //Load texture
+ texture = THREE.ImageUtils.loadTexture(textureFile, {}, function() {
+ renderer.render(scene, camera);
+ });
+ texture.needsUpdate = true;
+
+ //Create mesh from heightmap and texture
+ material = new THREE.MeshBasicMaterial({
+ map : texture,
+ wireframe: wf
+ });
+ mesh = new THREE.Mesh(geometry, material);
+ mesh.rotation.x = -90 * Math.PI / 180;
+ scene.add(mesh);
+
+ //Create renderer
+ renderer = new THREE.WebGLRenderer({
+ preserveDrawingBuffer : true // required to support .toDataURL()
+ });
+ renderer.setSize(window.innerWidth, window.innerHeight - 150); //FIXME, add height of the controls
+ container.innerHTML = "";
+ container.appendChild(renderer.domElement);
+
+ //Get default values
+ pos_x = mesh.position.x;
+ pos_y = mesh.position.y;
+ pos_z = mesh.position.z;
+ rot_x = mesh.rotation.x;
+ rot_y = mesh.rotation.y;
+ rot_z = mesh.rotation.z;
+ is_generating = false;
+ toggle_background();
+ cb();
+ };
+}
+
+var requestId;
+function loop() {
+ render();
+ requestId = window.requestAnimationFrame(loop);
+}
+function animate() {
+ if (!requestId) {
+ loop();
+ }
+}
+function stop_animating() {
+ if (requestId) {
+ window.cancelAnimationFrame(requestId);
+ requestId = undefined;
+ }
+}
+
+
+function render() {
+ renderer.render(scene, camera);
+}
+
+function init_controls(){
+ var listener = new window.keypress.Listener();
+ var my_scope = this;
+ var my_combos = listener.register_many([
+ {
+ "keys" : "up",
+ "is_solitary" : true,
+ "on_keydown" : function() {
+ mesh.position.y += 150;
+ },
+ "this" : my_scope
+ },
+ {
+ "keys" : "down",
+ "is_solitary" : true,
+ "on_keydown" : function() {
+ mesh.position.y -= 150;
+ },
+ "this" : my_scope
+ },
+ {
+ "keys" : "right",
+ "is_solitary" : true,
+ "on_keydown" : function() {
+ mesh.position.x += 150;
+ },
+ "this" : my_scope
+ },
+ {
+ "keys" : "left",
+ "is_solitary" : true,
+ "on_keydown" : function() {
+ mesh.position.x -= 150;
+ },
+ "this" : my_scope
+ },
+ {
+ "keys" : "shift up",
+ "is_exclusive" : true,
+ "on_keydown" : function() {
+ mesh.rotation.x += 0.1;
+ },
+ "this" : my_scope
+ },
+ {
+ "keys" : "shift down",
+ "is_exclusive" : true,
+ "on_keydown" : function() {
+ mesh.rotation.x -= 0.1;
+ },
+ "this" : my_scope
+ },
+ {
+ "keys" : "shift right",
+ "is_exclusive" : true,
+ "on_keydown" : function() {
+ mesh.rotation.z -= 0.1;
+ },
+ "this" : my_scope
+ },
+ {
+ "keys" : "shift left",
+ "is_exclusive" : true,
+ "on_keydown" : function() {
+ mesh.rotation.z += 0.1;
+ },
+ "this" : my_scope
+ },
+ {
+ "keys" : "delete",
+ "is_exclusive" : true,
+ "on_keydown" : function() {
+ mesh.position.x = pos_x;
+ mesh.position.y = pos_y;
+ mesh.position.z = pos_z;
+ mesh.rotation.x = rot_x;
+ mesh.rotation.y = rot_y;
+ mesh.rotation.z = rot_z;
+ },
+ "this" : my_scope
+ },
+ {
+ "keys" : "pageup",
+ "is_exclusive" : true,
+ "on_keydown" : function() {
+ mesh.position.z += 150;
+ },
+ "this" : my_scope
+ },
+ {
+ "keys" : "pagedown",
+ "is_exclusive" : true,
+ "on_keydown" : function() {
+ mesh.position.z -= 150;
+ },
+ "this" : my_scope
+ },
+ {
+ "keys" : "space",
+ "is_exclusive" : true,
+ "on_keydown" : function() {
+ wf = !wf;
+ material.wireframe = wf;
+ },
+ "this" : my_scope
+ },
+ ]);
+}
+
+
+window.onload= function(e){
+ runWebGLSimulation();
+ init_controls();
+}
diff --git a/frontend/imlandscape/js/Detector.js b/frontend/imlandscape/js/Detector.js
new file mode 100644
index 0000000..0c0c632
--- /dev/null
+++ b/frontend/imlandscape/js/Detector.js
@@ -0,0 +1,52 @@
+Detector = {
+
+ canvas : !! window.CanvasRenderingContext2D,
+ webgl : ( function () { try { return !! window.WebGLRenderingContext && !! document.createElement( 'canvas' ).getContext( 'experimental-webgl' ); } catch( e ) { return false; } } )(),
+ workers : !! window.Worker,
+ fileapi : window.File && window.FileReader && window.FileList && window.Blob,
+
+ getWebGLErrorMessage : function () {
+
+ var domElement = document.createElement( 'div' );
+
+ domElement.style.fontFamily = 'monospace';
+ domElement.style.fontSize = '13px';
+ domElement.style.textAlign = 'center';
+ domElement.style.background = '#eee';
+ domElement.style.color = '#000';
+ domElement.style.width = '100%';
+ domElement.style.height = '50px';
+
+ if ( ! this.webgl ) {
+
+ domElement.innerHTML = window.WebGLRenderingContext ? [
+ 'Your graphics card does not seem to support <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation">WebGL</a>.<br />',
+ 'Find out how to get it <a href="http://get.webgl.org/">here</a>.'
+ ].join( '\n' ) : [
+ 'Your browser does not seem to support <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation">WebGL</a>.<br/>',
+ 'Find out how to get it <a href="http://get.webgl.org/">here</a>.'
+ ].join( '\n' );
+
+ }
+
+ return domElement;
+
+ },
+
+ addGetWebGLMessage : function ( parameters ) {
+
+ var parent, id, domElement;
+
+ parameters = parameters || {};
+
+ parent = parameters.parent !== undefined ? parameters.parent : document.body;
+ id = parameters.id !== undefined ? parameters.id : 'container';
+
+ domElement = Detector.getWebGLErrorMessage();
+ domElement.id = id;
+
+ parent.appendChild( domElement );
+
+ }
+
+};
diff --git a/frontend/imlandscape/js/RequestAnimationFrame.js b/frontend/imlandscape/js/RequestAnimationFrame.js
new file mode 100644
index 0000000..b1940ae
--- /dev/null
+++ b/frontend/imlandscape/js/RequestAnimationFrame.js
@@ -0,0 +1,24 @@
+(function() {
+ var lastTime = 0;
+ var vendors = ['webkit', 'moz'];
+ for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
+ window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
+ window.cancelAnimationFrame =
+ window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame'];
+ }
+
+ if (!window.requestAnimationFrame)
+ window.requestAnimationFrame = function(callback, element) {
+ var currTime = new Date().getTime();
+ var timeToCall = Math.max(0, 16 - (currTime - lastTime));
+ var id = window.setTimeout(function() { callback(currTime + timeToCall); },
+ timeToCall);
+ lastTime = currTime + timeToCall;
+ return id;
+ };
+
+ if (!window.cancelAnimationFrame)
+ window.cancelAnimationFrame = function(id) {
+ clearTimeout(id);
+ };
+}());
diff --git a/frontend/imlandscape/js/Three.js b/frontend/imlandscape/js/Three.js
new file mode 100644
index 0000000..c274a8d
--- /dev/null
+++ b/frontend/imlandscape/js/Three.js
@@ -0,0 +1,708 @@
+// Three.js r45 - http://github.com/mrdoob/three.js
+var THREE=THREE||{};if(!self.Int32Array)self.Int32Array=Array,self.Float32Array=Array;THREE.Color=function(b){b!==void 0&&this.setHex(b);return this};
+THREE.Color.prototype={constructor:THREE.Color,r:1,g:1,b:1,copy:function(b){this.r=b.r;this.g=b.g;this.b=b.b;return this},setRGB:function(b,c,e){this.r=b;this.g=c;this.b=e;return this},setHSV:function(b,c,e){var f,h,k;if(e==0)this.r=this.g=this.b=0;else switch(f=Math.floor(b*6),h=b*6-f,b=e*(1-c),k=e*(1-c*h),c=e*(1-c*(1-h)),f){case 1:this.r=k;this.g=e;this.b=b;break;case 2:this.r=b;this.g=e;this.b=c;break;case 3:this.r=b;this.g=k;this.b=e;break;case 4:this.r=c;this.g=b;this.b=e;break;case 5:this.r=
+e;this.g=b;this.b=k;break;case 6:case 0:this.r=e,this.g=c,this.b=b}return this},setHex:function(b){b=Math.floor(b);this.r=(b>>16&255)/255;this.g=(b>>8&255)/255;this.b=(b&255)/255;return this},getHex:function(){return~~(this.r*255)<<16^~~(this.g*255)<<8^~~(this.b*255)},getContextStyle:function(){return"rgb("+Math.floor(this.r*255)+","+Math.floor(this.g*255)+","+Math.floor(this.b*255)+")"},clone:function(){return(new THREE.Color).setRGB(this.r,this.g,this.b)}};
+THREE.Vector2=function(b,c){this.x=b||0;this.y=c||0};
+THREE.Vector2.prototype={constructor:THREE.Vector2,set:function(b,c){this.x=b;this.y=c;return this},copy:function(b){this.x=b.x;this.y=b.y;return this},clone:function(){return new THREE.Vector2(this.x,this.y)},add:function(b,c){this.x=b.x+c.x;this.y=b.y+c.y;return this},addSelf:function(b){this.x+=b.x;this.y+=b.y;return this},sub:function(b,c){this.x=b.x-c.x;this.y=b.y-c.y;return this},subSelf:function(b){this.x-=b.x;this.y-=b.y;return this},multiplyScalar:function(b){this.x*=b;this.y*=b;return this},
+divideScalar:function(b){b?(this.x/=b,this.y/=b):this.set(0,0);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(b){return this.x*b.x+this.y*b.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.lengthSq())},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(b){return Math.sqrt(this.distanceToSquared(b))},distanceToSquared:function(b){var c=this.x-b.x,b=this.y-b.y;return c*c+b*b},setLength:function(b){return this.normalize().multiplyScalar(b)},
+equals:function(b){return b.x==this.x&&b.y==this.y}};THREE.Vector3=function(b,c,e){this.x=b||0;this.y=c||0;this.z=e||0};
+THREE.Vector3.prototype={constructor:THREE.Vector3,set:function(b,c,e){this.x=b;this.y=c;this.z=e;return this},setX:function(b){this.x=b;return this},setY:function(b){this.y=b;return this},setZ:function(b){this.z=b;return this},copy:function(b){this.x=b.x;this.y=b.y;this.z=b.z;return this},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)},add:function(b,c){this.x=b.x+c.x;this.y=b.y+c.y;this.z=b.z+c.z;return this},addSelf:function(b){this.x+=b.x;this.y+=b.y;this.z+=b.z;return this},
+addScalar:function(b){this.x+=b;this.y+=b;this.z+=b;return this},sub:function(b,c){this.x=b.x-c.x;this.y=b.y-c.y;this.z=b.z-c.z;return this},subSelf:function(b){this.x-=b.x;this.y-=b.y;this.z-=b.z;return this},multiply:function(b,c){this.x=b.x*c.x;this.y=b.y*c.y;this.z=b.z*c.z;return this},multiplySelf:function(b){this.x*=b.x;this.y*=b.y;this.z*=b.z;return this},multiplyScalar:function(b){this.x*=b;this.y*=b;this.z*=b;return this},divideSelf:function(b){this.x/=b.x;this.y/=b.y;this.z/=b.z;return this},
+divideScalar:function(b){b?(this.x/=b,this.y/=b,this.z/=b):this.set(0,0,0);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(b){return this.x*b.x+this.y*b.y+this.z*b.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.lengthSq())},lengthManhattan:function(){return this.x+this.y+this.z},normalize:function(){return this.divideScalar(this.length())},setLength:function(b){return this.normalize().multiplyScalar(b)},
+cross:function(b,c){this.x=b.y*c.z-b.z*c.y;this.y=b.z*c.x-b.x*c.z;this.z=b.x*c.y-b.y*c.x;return this},crossSelf:function(b){return this.set(this.y*b.z-this.z*b.y,this.z*b.x-this.x*b.z,this.x*b.y-this.y*b.x)},distanceTo:function(b){return Math.sqrt(this.distanceToSquared(b))},distanceToSquared:function(b){return(new THREE.Vector3).sub(this,b).lengthSq()},setPositionFromMatrix:function(b){this.x=b.n14;this.y=b.n24;this.z=b.n34},setRotationFromMatrix:function(b){var c=Math.cos(this.y);this.y=Math.asin(b.n13);
+Math.abs(c)>1.0E-5?(this.x=Math.atan2(-b.n23/c,b.n33/c),this.z=Math.atan2(-b.n12/c,b.n11/c)):(this.x=0,this.z=Math.atan2(b.n21,b.n22))},isZero:function(){return this.lengthSq()<1.0E-4}};THREE.Vector4=function(b,c,e,f){this.x=b||0;this.y=c||0;this.z=e||0;this.w=f!==void 0?f:1};
+THREE.Vector4.prototype={constructor:THREE.Vector4,set:function(b,c,e,f){this.x=b;this.y=c;this.z=e;this.w=f;return this},copy:function(b){this.x=b.x;this.y=b.y;this.z=b.z;this.w=b.w!==void 0?b.w:1},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},add:function(b,c){this.x=b.x+c.x;this.y=b.y+c.y;this.z=b.z+c.z;this.w=b.w+c.w;return this},addSelf:function(b){this.x+=b.x;this.y+=b.y;this.z+=b.z;this.w+=b.w;return this},sub:function(b,c){this.x=b.x-c.x;this.y=b.y-c.y;this.z=b.z-
+c.z;this.w=b.w-c.w;return this},subSelf:function(b){this.x-=b.x;this.y-=b.y;this.z-=b.z;this.w-=b.w;return this},multiplyScalar:function(b){this.x*=b;this.y*=b;this.z*=b;this.w*=b;return this},divideScalar:function(b){b?(this.x/=b,this.y/=b,this.z/=b,this.w/=b):(this.z=this.y=this.x=0,this.w=1);return this},negate:function(){return this.multiplyScalar(-1)},dot:function(b){return this.x*b.x+this.y*b.y+this.z*b.z+this.w*b.w},lengthSq:function(){return this.dot(this)},length:function(){return Math.sqrt(this.lengthSq())},
+normalize:function(){return this.divideScalar(this.length())},setLength:function(b){return this.normalize().multiplyScalar(b)},lerpSelf:function(b,c){this.x+=(b.x-this.x)*c;this.y+=(b.y-this.y)*c;this.z+=(b.z-this.z)*c;this.w+=(b.w-this.w)*c;return this}};THREE.Ray=function(b,c){this.origin=b||new THREE.Vector3;this.direction=c||new THREE.Vector3};
+THREE.Ray.prototype={constructor:THREE.Ray,intersectScene:function(b){return this.intersectObjects(b.objects)},intersectObjects:function(b){var c,e,f=[];c=0;for(e=b.length;c<e;c++)Array.prototype.push.apply(f,this.intersectObject(b[c]));f.sort(function(b,c){return b.distance-c.distance});return f},intersectObject:function(b){function c(b,c,e){var f;f=e.clone().subSelf(b).dot(c);if(f<=0)return null;b=b.clone().addSelf(c.clone().multiplyScalar(f));return e.distanceTo(b)}function e(b,c,e,f){var f=f.clone().subSelf(c),
+e=e.clone().subSelf(c),h=b.clone().subSelf(c),b=f.dot(f),c=f.dot(e),f=f.dot(h),k=e.dot(e),e=e.dot(h),h=1/(b*k-c*c),k=(k*f-c*e)*h,b=(b*e-c*f)*h;return k>0&&b>0&&k+b<1}if(b instanceof THREE.Particle){var f=c(this.origin,this.direction,b.matrixWorld.getPosition());if(f==null||f>b.scale.x)return[];return[{distance:f,point:b.position,face:null,object:b}]}else if(b instanceof THREE.Mesh){f=c(this.origin,this.direction,b.matrixWorld.getPosition());if(f==null||f>b.geometry.boundingSphere.radius*Math.max(b.scale.x,
+Math.max(b.scale.y,b.scale.z)))return[];var h,k,m,n,t,u,v,p,x,w,A=b.geometry,z=A.vertices,y=[],f=0;for(h=A.faces.length;f<h;f++)if(k=A.faces[f],x=this.origin.clone(),w=this.direction.clone(),u=b.matrixWorld,m=u.multiplyVector3(k.centroid.clone()).subSelf(x),p=m.dot(w),!(p<=0)&&(m=u.multiplyVector3(z[k.a].position.clone()),n=u.multiplyVector3(z[k.b].position.clone()),t=u.multiplyVector3(z[k.c].position.clone()),u=k instanceof THREE.Face4?u.multiplyVector3(z[k.d].position.clone()):null,v=b.matrixRotationWorld.multiplyVector3(k.normal.clone()),
+p=w.dot(v),b.doubleSided||(b.flipSided?p>0:p<0)))if(p=v.dot((new THREE.Vector3).sub(m,x))/p,x=x.addSelf(w.multiplyScalar(p)),k instanceof THREE.Face3)e(x,m,n,t)&&(k={distance:this.origin.distanceTo(x),point:x,face:k,object:b},y.push(k));else if(k instanceof THREE.Face4&&(e(x,m,n,u)||e(x,n,t,u)))k={distance:this.origin.distanceTo(x),point:x,face:k,object:b},y.push(k);y.sort(function(b,c){return b.distance-c.distance});return y}else return[]}};
+THREE.Rectangle=function(){function b(){k=f-c;m=h-e}var c,e,f,h,k,m,n=!0;this.getX=function(){return c};this.getY=function(){return e};this.getWidth=function(){return k};this.getHeight=function(){return m};this.getLeft=function(){return c};this.getTop=function(){return e};this.getRight=function(){return f};this.getBottom=function(){return h};this.set=function(k,m,v,p){n=!1;c=k;e=m;f=v;h=p;b()};this.addPoint=function(k,m){n?(n=!1,c=k,e=m,f=k,h=m):(c=c<k?c:k,e=e<m?e:m,f=f>k?f:k,h=h>m?h:m);b()};this.add3Points=
+function(k,m,v,p,x,w){n?(n=!1,c=k<v?k<x?k:x:v<x?v:x,e=m<p?m<w?m:w:p<w?p:w,f=k>v?k>x?k:x:v>x?v:x,h=m>p?m>w?m:w:p>w?p:w):(c=k<v?k<x?k<c?k:c:x<c?x:c:v<x?v<c?v:c:x<c?x:c,e=m<p?m<w?m<e?m:e:w<e?w:e:p<w?p<e?p:e:w<e?w:e,f=k>v?k>x?k>f?k:f:x>f?x:f:v>x?v>f?v:f:x>f?x:f,h=m>p?m>w?m>h?m:h:w>h?w:h:p>w?p>h?p:h:w>h?w:h);b()};this.addRectangle=function(k){n?(n=!1,c=k.getLeft(),e=k.getTop(),f=k.getRight(),h=k.getBottom()):(c=c<k.getLeft()?c:k.getLeft(),e=e<k.getTop()?e:k.getTop(),f=f>k.getRight()?f:k.getRight(),h=h>
+k.getBottom()?h:k.getBottom());b()};this.inflate=function(k){c-=k;e-=k;f+=k;h+=k;b()};this.minSelf=function(k){c=c>k.getLeft()?c:k.getLeft();e=e>k.getTop()?e:k.getTop();f=f<k.getRight()?f:k.getRight();h=h<k.getBottom()?h:k.getBottom();b()};this.intersects=function(b){return Math.min(f,b.getRight())-Math.max(c,b.getLeft())>=0&&Math.min(h,b.getBottom())-Math.max(e,b.getTop())>=0};this.empty=function(){n=!0;h=f=e=c=0;b()};this.isEmpty=function(){return n}};THREE.Matrix3=function(){this.m=[]};
+THREE.Matrix3.prototype={constructor:THREE.Matrix3,transpose:function(){var b,c=this.m;b=c[1];c[1]=c[3];c[3]=b;b=c[2];c[2]=c[6];c[6]=b;b=c[5];c[5]=c[7];c[7]=b;return this},transposeIntoArray:function(b){var c=this.m;b[0]=c[0];b[1]=c[3];b[2]=c[6];b[3]=c[1];b[4]=c[4];b[5]=c[7];b[6]=c[2];b[7]=c[5];b[8]=c[8];return this}};
+THREE.Matrix4=function(b,c,e,f,h,k,m,n,t,u,v,p,x,w,A,z){this.set(b!==void 0?b:1,c||0,e||0,f||0,h||0,k!==void 0?k:1,m||0,n||0,t||0,u||0,v!==void 0?v:1,p||0,x||0,w||0,A||0,z!==void 0?z:1);this.flat=Array(16);this.m33=new THREE.Matrix3};
+THREE.Matrix4.prototype={constructor:THREE.Matrix4,set:function(b,c,e,f,h,k,m,n,t,u,v,p,x,w,A,z){this.n11=b;this.n12=c;this.n13=e;this.n14=f;this.n21=h;this.n22=k;this.n23=m;this.n24=n;this.n31=t;this.n32=u;this.n33=v;this.n34=p;this.n41=x;this.n42=w;this.n43=A;this.n44=z;return this},identity:function(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this},copy:function(b){this.set(b.n11,b.n12,b.n13,b.n14,b.n21,b.n22,b.n23,b.n24,b.n31,b.n32,b.n33,b.n34,b.n41,b.n42,b.n43,b.n44);return this},lookAt:function(b,
+c,e){var f=THREE.Matrix4.__v1,h=THREE.Matrix4.__v2,k=THREE.Matrix4.__v3;k.sub(b,c).normalize();if(k.length()===0)k.z=1;f.cross(e,k).normalize();f.length()===0&&(k.x+=1.0E-4,f.cross(e,k).normalize());h.cross(k,f).normalize();this.n11=f.x;this.n12=h.x;this.n13=k.x;this.n21=f.y;this.n22=h.y;this.n23=k.y;this.n31=f.z;this.n32=h.z;this.n33=k.z;return this},multiplyVector3:function(b){var c=b.x,e=b.y,f=b.z,h=1/(this.n41*c+this.n42*e+this.n43*f+this.n44);b.x=(this.n11*c+this.n12*e+this.n13*f+this.n14)*h;
+b.y=(this.n21*c+this.n22*e+this.n23*f+this.n24)*h;b.z=(this.n31*c+this.n32*e+this.n33*f+this.n34)*h;return b},multiplyVector4:function(b){var c=b.x,e=b.y,f=b.z,h=b.w;b.x=this.n11*c+this.n12*e+this.n13*f+this.n14*h;b.y=this.n21*c+this.n22*e+this.n23*f+this.n24*h;b.z=this.n31*c+this.n32*e+this.n33*f+this.n34*h;b.w=this.n41*c+this.n42*e+this.n43*f+this.n44*h;return b},rotateAxis:function(b){var c=b.x,e=b.y,f=b.z;b.x=c*this.n11+e*this.n12+f*this.n13;b.y=c*this.n21+e*this.n22+f*this.n23;b.z=c*this.n31+
+e*this.n32+f*this.n33;b.normalize();return b},crossVector:function(b){var c=new THREE.Vector4;c.x=this.n11*b.x+this.n12*b.y+this.n13*b.z+this.n14*b.w;c.y=this.n21*b.x+this.n22*b.y+this.n23*b.z+this.n24*b.w;c.z=this.n31*b.x+this.n32*b.y+this.n33*b.z+this.n34*b.w;c.w=b.w?this.n41*b.x+this.n42*b.y+this.n43*b.z+this.n44*b.w:1;return c},multiply:function(b,c){var e=b.n11,f=b.n12,h=b.n13,k=b.n14,m=b.n21,n=b.n22,t=b.n23,u=b.n24,v=b.n31,p=b.n32,x=b.n33,w=b.n34,A=b.n41,z=b.n42,y=b.n43,C=b.n44,E=c.n11,D=c.n12,
+F=c.n13,M=c.n14,N=c.n21,G=c.n22,H=c.n23,K=c.n24,Z=c.n31,L=c.n32,P=c.n33,U=c.n34,Y=c.n41,X=c.n42,o=c.n43,ea=c.n44;this.n11=e*E+f*N+h*Z+k*Y;this.n12=e*D+f*G+h*L+k*X;this.n13=e*F+f*H+h*P+k*o;this.n14=e*M+f*K+h*U+k*ea;this.n21=m*E+n*N+t*Z+u*Y;this.n22=m*D+n*G+t*L+u*X;this.n23=m*F+n*H+t*P+u*o;this.n24=m*M+n*K+t*U+u*ea;this.n31=v*E+p*N+x*Z+w*Y;this.n32=v*D+p*G+x*L+w*X;this.n33=v*F+p*H+x*P+w*o;this.n34=v*M+p*K+x*U+w*ea;this.n41=A*E+z*N+y*Z+C*Y;this.n42=A*D+z*G+y*L+C*X;this.n43=A*F+z*H+y*P+C*o;this.n44=A*
+M+z*K+y*U+C*ea;return this},multiplyToArray:function(b,c,e){this.multiply(b,c);e[0]=this.n11;e[1]=this.n21;e[2]=this.n31;e[3]=this.n41;e[4]=this.n12;e[5]=this.n22;e[6]=this.n32;e[7]=this.n42;e[8]=this.n13;e[9]=this.n23;e[10]=this.n33;e[11]=this.n43;e[12]=this.n14;e[13]=this.n24;e[14]=this.n34;e[15]=this.n44;return this},multiplySelf:function(b){this.multiply(this,b);return this},multiplyScalar:function(b){this.n11*=b;this.n12*=b;this.n13*=b;this.n14*=b;this.n21*=b;this.n22*=b;this.n23*=b;this.n24*=
+b;this.n31*=b;this.n32*=b;this.n33*=b;this.n34*=b;this.n41*=b;this.n42*=b;this.n43*=b;this.n44*=b;return this},determinant:function(){var b=this.n11,c=this.n12,e=this.n13,f=this.n14,h=this.n21,k=this.n22,m=this.n23,n=this.n24,t=this.n31,u=this.n32,v=this.n33,p=this.n34,x=this.n41,w=this.n42,A=this.n43,z=this.n44;return f*m*u*x-e*n*u*x-f*k*v*x+c*n*v*x+e*k*p*x-c*m*p*x-f*m*t*w+e*n*t*w+f*h*v*w-b*n*v*w-e*h*p*w+b*m*p*w+f*k*t*A-c*n*t*A-f*h*u*A+b*n*u*A+c*h*p*A-b*k*p*A-e*k*t*z+c*m*t*z+e*h*u*z-b*m*u*z-c*h*
+v*z+b*k*v*z},transpose:function(){var b;b=this.n21;this.n21=this.n12;this.n12=b;b=this.n31;this.n31=this.n13;this.n13=b;b=this.n32;this.n32=this.n23;this.n23=b;b=this.n41;this.n41=this.n14;this.n14=b;b=this.n42;this.n42=this.n24;this.n24=b;b=this.n43;this.n43=this.n34;this.n43=b;return this},clone:function(){var b=new THREE.Matrix4;b.n11=this.n11;b.n12=this.n12;b.n13=this.n13;b.n14=this.n14;b.n21=this.n21;b.n22=this.n22;b.n23=this.n23;b.n24=this.n24;b.n31=this.n31;b.n32=this.n32;b.n33=this.n33;b.n34=
+this.n34;b.n41=this.n41;b.n42=this.n42;b.n43=this.n43;b.n44=this.n44;return b},flatten:function(){this.flat[0]=this.n11;this.flat[1]=this.n21;this.flat[2]=this.n31;this.flat[3]=this.n41;this.flat[4]=this.n12;this.flat[5]=this.n22;this.flat[6]=this.n32;this.flat[7]=this.n42;this.flat[8]=this.n13;this.flat[9]=this.n23;this.flat[10]=this.n33;this.flat[11]=this.n43;this.flat[12]=this.n14;this.flat[13]=this.n24;this.flat[14]=this.n34;this.flat[15]=this.n44;return this.flat},flattenToArray:function(b){b[0]=
+this.n11;b[1]=this.n21;b[2]=this.n31;b[3]=this.n41;b[4]=this.n12;b[5]=this.n22;b[6]=this.n32;b[7]=this.n42;b[8]=this.n13;b[9]=this.n23;b[10]=this.n33;b[11]=this.n43;b[12]=this.n14;b[13]=this.n24;b[14]=this.n34;b[15]=this.n44;return b},flattenToArrayOffset:function(b,c){b[c]=this.n11;b[c+1]=this.n21;b[c+2]=this.n31;b[c+3]=this.n41;b[c+4]=this.n12;b[c+5]=this.n22;b[c+6]=this.n32;b[c+7]=this.n42;b[c+8]=this.n13;b[c+9]=this.n23;b[c+10]=this.n33;b[c+11]=this.n43;b[c+12]=this.n14;b[c+13]=this.n24;b[c+14]=
+this.n34;b[c+15]=this.n44;return b},setTranslation:function(b,c,e){this.set(1,0,0,b,0,1,0,c,0,0,1,e,0,0,0,1);return this},setScale:function(b,c,e){this.set(b,0,0,0,0,c,0,0,0,0,e,0,0,0,0,1);return this},setRotationX:function(b){var c=Math.cos(b),b=Math.sin(b);this.set(1,0,0,0,0,c,-b,0,0,b,c,0,0,0,0,1);return this},setRotationY:function(b){var c=Math.cos(b),b=Math.sin(b);this.set(c,0,b,0,0,1,0,0,-b,0,c,0,0,0,0,1);return this},setRotationZ:function(b){var c=Math.cos(b),b=Math.sin(b);this.set(c,-b,0,
+0,b,c,0,0,0,0,1,0,0,0,0,1);return this},setRotationAxis:function(b,c){var e=Math.cos(c),f=Math.sin(c),h=1-e,k=b.x,m=b.y,n=b.z,t=h*k,u=h*m;this.set(t*k+e,t*m-f*n,t*n+f*m,0,t*m+f*n,u*m+e,u*n-f*k,0,t*n-f*m,u*n+f*k,h*n*n+e,0,0,0,0,1);return this},setPosition:function(b){this.n14=b.x;this.n24=b.y;this.n34=b.z;return this},getPosition:function(){if(!this.position)this.position=new THREE.Vector3;this.position.set(this.n14,this.n24,this.n34);return this.position},getColumnX:function(){if(!this.columnX)this.columnX=
+new THREE.Vector3;this.columnX.set(this.n11,this.n21,this.n31);return this.columnX},getColumnY:function(){if(!this.columnY)this.columnY=new THREE.Vector3;this.columnY.set(this.n12,this.n22,this.n32);return this.columnY},getColumnZ:function(){if(!this.columnZ)this.columnZ=new THREE.Vector3;this.columnZ.set(this.n13,this.n23,this.n33);return this.columnZ},setRotationFromEuler:function(b,c){var e=b.x,f=b.y,h=b.z,k=Math.cos(e),e=Math.sin(e),m=Math.cos(f),f=Math.sin(f),n=Math.cos(h),h=Math.sin(h);switch(c){case "YXZ":var t=
+m*n,u=m*h,v=f*n,p=f*h;this.n11=t+p*e;this.n12=v*e-u;this.n13=k*f;this.n21=k*h;this.n22=k*n;this.n23=-e;this.n31=u*e-v;this.n32=p+t*e;this.n33=k*m;break;case "ZXY":t=m*n;u=m*h;v=f*n;p=f*h;this.n11=t-p*e;this.n12=-k*h;this.n13=v+u*e;this.n21=u+v*e;this.n22=k*n;this.n23=p-t*e;this.n31=-k*f;this.n32=e;this.n33=k*m;break;case "ZYX":t=k*n;u=k*h;v=e*n;p=e*h;this.n11=m*n;this.n12=v*f-u;this.n13=t*f+p;this.n21=m*h;this.n22=p*f+t;this.n23=u*f-v;this.n31=-f;this.n32=e*m;this.n33=k*m;break;case "YZX":t=k*m;u=
+k*f;v=e*m;p=e*f;this.n11=m*n;this.n12=p-t*h;this.n13=v*h+u;this.n21=h;this.n22=k*n;this.n23=-e*n;this.n31=-f*n;this.n32=u*h+v;this.n33=t-p*h;break;case "XZY":t=k*m;u=k*f;v=e*m;p=e*f;this.n11=m*n;this.n12=-h;this.n13=f*n;this.n21=t*h+p;this.n22=k*n;this.n23=u*h-v;this.n31=v*h-u;this.n32=e*n;this.n33=p*h+t;break;default:t=k*n,u=k*h,v=e*n,p=e*h,this.n11=m*n,this.n12=-m*h,this.n13=f,this.n21=u+v*f,this.n22=t-p*f,this.n23=-e*m,this.n31=p-t*f,this.n32=v+u*f,this.n33=k*m}return this},setRotationFromQuaternion:function(b){var c=
+b.x,e=b.y,f=b.z,h=b.w,k=c+c,m=e+e,n=f+f,b=c*k,t=c*m;c*=n;var u=e*m;e*=n;f*=n;k*=h;m*=h;h*=n;this.n11=1-(u+f);this.n12=t-h;this.n13=c+m;this.n21=t+h;this.n22=1-(b+f);this.n23=e-k;this.n31=c-m;this.n32=e+k;this.n33=1-(b+u);return this},scale:function(b){var c=b.x,e=b.y,b=b.z;this.n11*=c;this.n12*=e;this.n13*=b;this.n21*=c;this.n22*=e;this.n23*=b;this.n31*=c;this.n32*=e;this.n33*=b;this.n41*=c;this.n42*=e;this.n43*=b;return this},compose:function(b,c,e){var f=THREE.Matrix4.__m1,h=THREE.Matrix4.__m2;
+f.identity();f.setRotationFromQuaternion(c);h.setScale(e.x,e.y,e.z);this.multiply(f,h);this.n14=b.x;this.n24=b.y;this.n34=b.z;return this},decompose:function(b,c,e){var f=THREE.Matrix4.__v1,h=THREE.Matrix4.__v2,k=THREE.Matrix4.__v3;f.set(this.n11,this.n21,this.n31);h.set(this.n12,this.n22,this.n32);k.set(this.n13,this.n23,this.n33);b=b instanceof THREE.Vector3?b:new THREE.Vector3;c=c instanceof THREE.Quaternion?c:new THREE.Quaternion;e=e instanceof THREE.Vector3?e:new THREE.Vector3;e.x=f.length();
+e.y=h.length();e.z=k.length();b.x=this.n14;b.y=this.n24;b.z=this.n34;f=THREE.Matrix4.__m1;f.copy(this);f.n11/=e.x;f.n21/=e.x;f.n31/=e.x;f.n12/=e.y;f.n22/=e.y;f.n32/=e.y;f.n13/=e.z;f.n23/=e.z;f.n33/=e.z;c.setFromRotationMatrix(f);return[b,c,e]},extractPosition:function(b){this.n14=b.n14;this.n24=b.n24;this.n34=b.n34},extractRotation:function(b,c){var e=1/c.x,f=1/c.y,h=1/c.z;this.n11=b.n11*e;this.n21=b.n21*e;this.n31=b.n31*e;this.n12=b.n12*f;this.n22=b.n22*f;this.n32=b.n32*f;this.n13=b.n13*h;this.n23=
+b.n23*h;this.n33=b.n33*h}};
+THREE.Matrix4.makeInvert=function(b,c){var e=b.n11,f=b.n12,h=b.n13,k=b.n14,m=b.n21,n=b.n22,t=b.n23,u=b.n24,v=b.n31,p=b.n32,x=b.n33,w=b.n34,A=b.n41,z=b.n42,y=b.n43,C=b.n44;c===void 0&&(c=new THREE.Matrix4);c.n11=t*w*z-u*x*z+u*p*y-n*w*y-t*p*C+n*x*C;c.n12=k*x*z-h*w*z-k*p*y+f*w*y+h*p*C-f*x*C;c.n13=h*u*z-k*t*z+k*n*y-f*u*y-h*n*C+f*t*C;c.n14=k*t*p-h*u*p-k*n*x+f*u*x+h*n*w-f*t*w;c.n21=u*x*A-t*w*A-u*v*y+m*w*y+t*v*C-m*x*C;c.n22=h*w*A-k*x*A+k*v*y-e*w*y-h*v*C+e*x*C;c.n23=k*t*A-h*u*A-k*m*y+e*u*y+h*m*C-e*t*C;c.n24=
+h*u*v-k*t*v+k*m*x-e*u*x-h*m*w+e*t*w;c.n31=n*w*A-u*p*A+u*v*z-m*w*z-n*v*C+m*p*C;c.n32=k*p*A-f*w*A-k*v*z+e*w*z+f*v*C-e*p*C;c.n33=h*u*A-k*n*A+k*m*z-e*u*z-f*m*C+e*n*C;c.n34=k*n*v-f*u*v-k*m*p+e*u*p+f*m*w-e*n*w;c.n41=t*p*A-n*x*A-t*v*z+m*x*z+n*v*y-m*p*y;c.n42=f*x*A-h*p*A+h*v*z-e*x*z-f*v*y+e*p*y;c.n43=h*n*A-f*t*A-h*m*z+e*t*z+f*m*y-e*n*y;c.n44=f*t*v-h*n*v+h*m*p-e*t*p-f*m*x+e*n*x;c.multiplyScalar(1/b.determinant());return c};
+THREE.Matrix4.makeInvert3x3=function(b){var c=b.m33,e=c.m,f=b.n33*b.n22-b.n32*b.n23,h=-b.n33*b.n21+b.n31*b.n23,k=b.n32*b.n21-b.n31*b.n22,m=-b.n33*b.n12+b.n32*b.n13,n=b.n33*b.n11-b.n31*b.n13,t=-b.n32*b.n11+b.n31*b.n12,u=b.n23*b.n12-b.n22*b.n13,v=-b.n23*b.n11+b.n21*b.n13,p=b.n22*b.n11-b.n21*b.n12,b=b.n11*f+b.n21*m+b.n31*u;b==0&&console.error("THREE.Matrix4.makeInvert3x3: Matrix not invertible.");b=1/b;e[0]=b*f;e[1]=b*h;e[2]=b*k;e[3]=b*m;e[4]=b*n;e[5]=b*t;e[6]=b*u;e[7]=b*v;e[8]=b*p;return c};
+THREE.Matrix4.makeFrustum=function(b,c,e,f,h,k){var m;m=new THREE.Matrix4;m.n11=2*h/(c-b);m.n12=0;m.n13=(c+b)/(c-b);m.n14=0;m.n21=0;m.n22=2*h/(f-e);m.n23=(f+e)/(f-e);m.n24=0;m.n31=0;m.n32=0;m.n33=-(k+h)/(k-h);m.n34=-2*k*h/(k-h);m.n41=0;m.n42=0;m.n43=-1;m.n44=0;return m};THREE.Matrix4.makePerspective=function(b,c,e,f){var h,b=e*Math.tan(b*Math.PI/360);h=-b;return THREE.Matrix4.makeFrustum(h*c,b*c,h,b,e,f)};
+THREE.Matrix4.makeOrtho=function(b,c,e,f,h,k){var m,n,t,u;m=new THREE.Matrix4;n=c-b;t=e-f;u=k-h;m.n11=2/n;m.n12=0;m.n13=0;m.n14=-((c+b)/n);m.n21=0;m.n22=2/t;m.n23=0;m.n24=-((e+f)/t);m.n31=0;m.n32=0;m.n33=-2/u;m.n34=-((k+h)/u);m.n41=0;m.n42=0;m.n43=0;m.n44=1;return m};THREE.Matrix4.__v1=new THREE.Vector3;THREE.Matrix4.__v2=new THREE.Vector3;THREE.Matrix4.__v3=new THREE.Vector3;THREE.Matrix4.__m1=new THREE.Matrix4;THREE.Matrix4.__m2=new THREE.Matrix4;
+THREE.Object3D=function(){this.name="";this.id=THREE.Object3DCount++;this.parent=void 0;this.children=[];this.up=new THREE.Vector3(0,1,0);this.position=new THREE.Vector3;this.rotation=new THREE.Vector3;this.eulerOrder="XYZ";this.scale=new THREE.Vector3(1,1,1);this.flipSided=this.doubleSided=this.dynamic=!1;this.renderDepth=null;this.rotationAutoUpdate=!0;this.matrix=new THREE.Matrix4;this.matrixWorld=new THREE.Matrix4;this.matrixRotationWorld=new THREE.Matrix4;this.matrixWorldNeedsUpdate=this.matrixAutoUpdate=
+!0;this.quaternion=new THREE.Quaternion;this.useQuaternion=!1;this.boundRadius=0;this.boundRadiusScale=1;this.visible=!0;this.receiveShadow=this.castShadow=!1;this.frustumCulled=!0;this._vector=new THREE.Vector3};
+THREE.Object3D.prototype={constructor:THREE.Object3D,translate:function(b,c){this.matrix.rotateAxis(c);this.position.addSelf(c.multiplyScalar(b))},translateX:function(b){this.translate(b,this._vector.set(1,0,0))},translateY:function(b){this.translate(b,this._vector.set(0,1,0))},translateZ:function(b){this.translate(b,this._vector.set(0,0,1))},lookAt:function(b){this.matrix.lookAt(b,this.position,this.up);this.rotationAutoUpdate&&this.rotation.setRotationFromMatrix(this.matrix)},add:function(b){if(this.children.indexOf(b)===
+-1){b.parent!==void 0&&b.parent.removeChild(b);b.parent=this;this.children.push(b);for(var c=this;c.parent!==void 0;)c=c.parent;c!==void 0&&c instanceof THREE.Scene&&c.addChildRecurse(b)}},remove:function(b){var c=this,e=this.children.indexOf(b);if(e!==-1){b.parent=void 0;for(this.children.splice(e,1);c.parent!==void 0;)c=c.parent;c!==void 0&&c instanceof THREE.Scene&&c.removeChildRecurse(b)}},getChildByName:function(b,c){var e,f,h;e=0;for(f=this.children.length;e<f;e++){h=this.children[e];if(h.name===
+b)return h;if(c&&(h=h.getChildByName(b,c),h!==void 0))return h}},updateMatrix:function(){this.matrix.setPosition(this.position);this.useQuaternion?this.matrix.setRotationFromQuaternion(this.quaternion):this.matrix.setRotationFromEuler(this.rotation,this.eulerOrder);if(this.scale.x!==1||this.scale.y!==1||this.scale.z!==1)this.matrix.scale(this.scale),this.boundRadiusScale=Math.max(this.scale.x,Math.max(this.scale.y,this.scale.z));this.matrixWorldNeedsUpdate=!0},update:function(b,c,e){this.matrixAutoUpdate&&
+this.updateMatrix();if(this.matrixWorldNeedsUpdate||c)b?this.matrixWorld.multiply(b,this.matrix):this.matrixWorld.copy(this.matrix),this.matrixRotationWorld.extractRotation(this.matrixWorld,this.scale),this.matrixWorldNeedsUpdate=!1,c=!0;for(var b=0,f=this.children.length;b<f;b++)this.children[b].update(this.matrixWorld,c,e)},addChild:function(b){console.warn("DEPRECATED: Object3D.addChild() is now Object3D.add().");this.add(b)},removeChild:function(b){console.warn("DEPRECATED: Object3D.removeChild() is now Object3D.remove().");
+this.remove(b)}};THREE.Object3DCount=0;
+THREE.Projector=function(){function b(){var b=t[n]=t[n]||new THREE.RenderableVertex;n++;return b}function c(b,c){return c.z-b.z}function e(b,c){var e=0,f=1,k=b.z+b.w,h=c.z+c.w,m=-b.z+b.w,n=-c.z+c.w;return k>=0&&h>=0&&m>=0&&n>=0?!0:k<0&&h<0||m<0&&n<0?!1:(k<0?e=Math.max(e,k/(k-h)):h<0&&(f=Math.min(f,k/(k-h))),m<0?e=Math.max(e,m/(m-n)):n<0&&(f=Math.min(f,m/(m-n))),f<e?!1:(b.lerpSelf(c,e),c.lerpSelf(b,1-f),!0))}var f,h,k=[],m,n,t=[],u,v,p=[],x,w=[],A,z,y=[],C,E,D=[],F=[],M=[],N=new THREE.Vector4,G=new THREE.Vector4,
+H=new THREE.Matrix4,K=new THREE.Matrix4,Z=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],L=new THREE.Vector4,P=new THREE.Vector4;this.projectVector=function(b,c){H.multiply(c.projectionMatrix,c.matrixWorldInverse);H.multiplyVector3(b);return b};this.unprojectVector=function(b,c){H.multiply(c.matrixWorld,THREE.Matrix4.makeInvert(c.projectionMatrix));H.multiplyVector3(b);return b};this.pickingRay=function(b,c){var e;b.z=-1;e=new THREE.Vector3(b.x,
+b.y,1);this.unprojectVector(b,c);this.unprojectVector(e,c);e.subSelf(b).normalize();return new THREE.Ray(b,e)};this.projectObjects=function(b,e,m){var o,n;h=F.length=0;o=b.objects;b=0;for(e=o.length;b<e;b++){n=o[b];var t;if(!(t=!n.visible))if(t=n instanceof THREE.Mesh)if(t=n.frustumCulled){a:{t=void 0;for(var u=n.matrixWorld,w=-n.geometry.boundingSphere.radius*Math.max(n.scale.x,Math.max(n.scale.y,n.scale.z)),p=0;p<6;p++)if(t=Z[p].x*u.n14+Z[p].y*u.n24+Z[p].z*u.n34+Z[p].w,t<=w){t=!1;break a}t=!0}t=
+!t}if(!t)t=k[h]=k[h]||new THREE.RenderableObject,h++,f=t,N.copy(n.position),H.multiplyVector3(N),f.object=n,f.z=N.z,F.push(f)}m&&F.sort(c);return F};this.projectScene=function(f,k,h){var o=k.near,F=k.far,N,pa,fa,ma,da,la,ga,$,ca,aa,ha,ka,sa,J,Q,na,ra;E=z=x=v=M.length=0;k.matrixAutoUpdate&&k.update(void 0,!0);f.update(void 0,!1,k);H.multiply(k.projectionMatrix,k.matrixWorldInverse);Z[0].set(H.n41-H.n11,H.n42-H.n12,H.n43-H.n13,H.n44-H.n14);Z[1].set(H.n41+H.n11,H.n42+H.n12,H.n43+H.n13,H.n44+H.n14);Z[2].set(H.n41+
+H.n21,H.n42+H.n22,H.n43+H.n23,H.n44+H.n24);Z[3].set(H.n41-H.n21,H.n42-H.n22,H.n43-H.n23,H.n44-H.n24);Z[4].set(H.n41-H.n31,H.n42-H.n32,H.n43-H.n33,H.n44-H.n34);Z[5].set(H.n41+H.n31,H.n42+H.n32,H.n43+H.n33,H.n44+H.n34);for(N=0;N<6;N++)ca=Z[N],ca.divideScalar(Math.sqrt(ca.x*ca.x+ca.y*ca.y+ca.z*ca.z));ca=this.projectObjects(f,k,!0);f=0;for(N=ca.length;f<N;f++)if(aa=ca[f].object,aa.visible)if(ha=aa.matrixWorld,ka=aa.matrixRotationWorld,sa=aa.materials,J=aa.overdraw,n=0,aa instanceof THREE.Mesh){Q=aa.geometry;
+ma=Q.vertices;na=Q.faces;Q=Q.faceVertexUvs;pa=0;for(fa=ma.length;pa<fa;pa++)m=b(),m.positionWorld.copy(ma[pa].position),ha.multiplyVector3(m.positionWorld),m.positionScreen.copy(m.positionWorld),H.multiplyVector4(m.positionScreen),m.positionScreen.x/=m.positionScreen.w,m.positionScreen.y/=m.positionScreen.w,m.visible=m.positionScreen.z>o&&m.positionScreen.z<F;ma=0;for(pa=na.length;ma<pa;ma++){fa=na[ma];if(fa instanceof THREE.Face3)if(da=t[fa.a],la=t[fa.b],ga=t[fa.c],da.visible&&la.visible&&ga.visible&&
+(aa.doubleSided||aa.flipSided!=(ga.positionScreen.x-da.positionScreen.x)*(la.positionScreen.y-da.positionScreen.y)-(ga.positionScreen.y-da.positionScreen.y)*(la.positionScreen.x-da.positionScreen.x)<0))$=p[v]=p[v]||new THREE.RenderableFace3,v++,u=$,u.v1.copy(da),u.v2.copy(la),u.v3.copy(ga);else continue;else if(fa instanceof THREE.Face4)if(da=t[fa.a],la=t[fa.b],ga=t[fa.c],$=t[fa.d],da.visible&&la.visible&&ga.visible&&$.visible&&(aa.doubleSided||aa.flipSided!=(($.positionScreen.x-da.positionScreen.x)*
+(la.positionScreen.y-da.positionScreen.y)-($.positionScreen.y-da.positionScreen.y)*(la.positionScreen.x-da.positionScreen.x)<0||(la.positionScreen.x-ga.positionScreen.x)*($.positionScreen.y-ga.positionScreen.y)-(la.positionScreen.y-ga.positionScreen.y)*($.positionScreen.x-ga.positionScreen.x)<0)))ra=w[x]=w[x]||new THREE.RenderableFace4,x++,u=ra,u.v1.copy(da),u.v2.copy(la),u.v3.copy(ga),u.v4.copy($);else continue;u.normalWorld.copy(fa.normal);ka.multiplyVector3(u.normalWorld);u.centroidWorld.copy(fa.centroid);
+ha.multiplyVector3(u.centroidWorld);u.centroidScreen.copy(u.centroidWorld);H.multiplyVector3(u.centroidScreen);ga=fa.vertexNormals;da=0;for(la=ga.length;da<la;da++)$=u.vertexNormalsWorld[da],$.copy(ga[da]),ka.multiplyVector3($);da=0;for(la=Q.length;da<la;da++)if(ra=Q[da][ma]){ga=0;for($=ra.length;ga<$;ga++)u.uvs[da][ga]=ra[ga]}u.meshMaterials=sa;u.faceMaterials=fa.materials;u.overdraw=J;u.z=u.centroidScreen.z;M.push(u)}}else if(aa instanceof THREE.Line){K.multiply(H,ha);ma=aa.geometry.vertices;da=
+b();da.positionScreen.copy(ma[0].position);K.multiplyVector4(da.positionScreen);pa=1;for(fa=ma.length;pa<fa;pa++)if(da=b(),da.positionScreen.copy(ma[pa].position),K.multiplyVector4(da.positionScreen),la=t[n-2],L.copy(da.positionScreen),P.copy(la.positionScreen),e(L,P))L.multiplyScalar(1/L.w),P.multiplyScalar(1/P.w),ha=y[z]=y[z]||new THREE.RenderableLine,z++,A=ha,A.v1.positionScreen.copy(L),A.v2.positionScreen.copy(P),A.z=Math.max(L.z,P.z),A.materials=aa.materials,M.push(A)}else if(aa instanceof THREE.Particle&&
+(G.set(aa.matrixWorld.n14,aa.matrixWorld.n24,aa.matrixWorld.n34,1),H.multiplyVector4(G),G.z/=G.w,G.z>0&&G.z<1))ha=D[E]=D[E]||new THREE.RenderableParticle,E++,C=ha,C.x=G.x/G.w,C.y=G.y/G.w,C.z=G.z,C.rotation=aa.rotation.z,C.scale.x=aa.scale.x*Math.abs(C.x-(G.x+k.projectionMatrix.n11)/(G.w+k.projectionMatrix.n14)),C.scale.y=aa.scale.y*Math.abs(C.y-(G.y+k.projectionMatrix.n22)/(G.w+k.projectionMatrix.n24)),C.materials=aa.materials,M.push(C);h&&M.sort(c);return M}};
+THREE.Quaternion=function(b,c,e,f){this.set(b||0,c||0,e||0,f!==void 0?f:1)};
+THREE.Quaternion.prototype={constructor:THREE.Quaternion,set:function(b,c,e,f){this.x=b;this.y=c;this.z=e;this.w=f;return this},copy:function(b){this.x=b.x;this.y=b.y;this.z=b.z;this.w=b.w;return this},setFromEuler:function(b){var c=Math.PI/360,e=b.x*c,f=b.y*c,h=b.z*c,b=Math.cos(f),f=Math.sin(f),c=Math.cos(-h),h=Math.sin(-h),k=Math.cos(e),e=Math.sin(e),m=b*c,n=f*h;this.w=m*k-n*e;this.x=m*e+n*k;this.y=f*c*k+b*h*e;this.z=b*h*k-f*c*e;return this},setFromAxisAngle:function(b,c){var e=c/2,f=Math.sin(e);
+this.x=b.x*f;this.y=b.y*f;this.z=b.z*f;this.w=Math.cos(e);return this},setFromRotationMatrix:function(b){var c=Math.pow(b.determinant(),1/3);this.w=Math.sqrt(Math.max(0,c+b.n11+b.n22+b.n33))/2;this.x=Math.sqrt(Math.max(0,c+b.n11-b.n22-b.n33))/2;this.y=Math.sqrt(Math.max(0,c-b.n11+b.n22-b.n33))/2;this.z=Math.sqrt(Math.max(0,c-b.n11-b.n22+b.n33))/2;this.x=b.n32-b.n23<0?-Math.abs(this.x):Math.abs(this.x);this.y=b.n13-b.n31<0?-Math.abs(this.y):Math.abs(this.y);this.z=b.n21-b.n12<0?-Math.abs(this.z):Math.abs(this.z);
+this.normalize();return this},calculateW:function(){this.w=-Math.sqrt(Math.abs(1-this.x*this.x-this.y*this.y-this.z*this.z));return this},inverse:function(){this.x*=-1;this.y*=-1;this.z*=-1;return this},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},normalize:function(){var b=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);b==0?this.w=this.z=this.y=this.x=0:(b=1/b,this.x*=b,this.y*=b,this.z*=b,this.w*=b);return this},multiplySelf:function(b){var c=
+this.x,e=this.y,f=this.z,h=this.w,k=b.x,m=b.y,n=b.z,b=b.w;this.x=c*b+h*k+e*n-f*m;this.y=e*b+h*m+f*k-c*n;this.z=f*b+h*n+c*m-e*k;this.w=h*b-c*k-e*m-f*n;return this},multiply:function(b,c){this.x=b.x*c.w+b.y*c.z-b.z*c.y+b.w*c.x;this.y=-b.x*c.z+b.y*c.w+b.z*c.x+b.w*c.y;this.z=b.x*c.y-b.y*c.x+b.z*c.w+b.w*c.z;this.w=-b.x*c.x-b.y*c.y-b.z*c.z+b.w*c.w;return this},multiplyVector3:function(b,c){c||(c=b);var e=b.x,f=b.y,h=b.z,k=this.x,m=this.y,n=this.z,t=this.w,u=t*e+m*h-n*f,v=t*f+n*e-k*h,p=t*h+k*f-m*e,e=-k*
+e-m*f-n*h;c.x=u*t+e*-k+v*-n-p*-m;c.y=v*t+e*-m+p*-k-u*-n;c.z=p*t+e*-n+u*-m-v*-k;return c}};THREE.Quaternion.slerp=function(b,c,e,f){var h=b.w*c.w+b.x*c.x+b.y*c.y+b.z*c.z;if(Math.abs(h)>=1)return e.w=b.w,e.x=b.x,e.y=b.y,e.z=b.z,e;var k=Math.acos(h),m=Math.sqrt(1-h*h);if(Math.abs(m)<0.001)return e.w=0.5*(b.w+c.w),e.x=0.5*(b.x+c.x),e.y=0.5*(b.y+c.y),e.z=0.5*(b.z+c.z),e;h=Math.sin((1-f)*k)/m;f=Math.sin(f*k)/m;e.w=b.w*h+c.w*f;e.x=b.x*h+c.x*f;e.y=b.y*h+c.y*f;e.z=b.z*h+c.z*f;return e};
+THREE.Vertex=function(b){this.position=b||new THREE.Vector3};THREE.Face3=function(b,c,e,f,h,k){this.a=b;this.b=c;this.c=e;this.normal=f instanceof THREE.Vector3?f:new THREE.Vector3;this.vertexNormals=f instanceof Array?f:[];this.color=h instanceof THREE.Color?h:new THREE.Color;this.vertexColors=h instanceof Array?h:[];this.vertexTangents=[];this.materials=k instanceof Array?k:[k];this.centroid=new THREE.Vector3};
+THREE.Face4=function(b,c,e,f,h,k,m){this.a=b;this.b=c;this.c=e;this.d=f;this.normal=h instanceof THREE.Vector3?h:new THREE.Vector3;this.vertexNormals=h instanceof Array?h:[];this.color=k instanceof THREE.Color?k:new THREE.Color;this.vertexColors=k instanceof Array?k:[];this.vertexTangents=[];this.materials=m instanceof Array?m:[m];this.centroid=new THREE.Vector3};THREE.UV=function(b,c){this.u=b||0;this.v=c||0};
+THREE.UV.prototype={constructor:THREE.UV,set:function(b,c){this.u=b;this.v=c;return this},copy:function(b){this.u=b.u;this.v=b.v;return this},clone:function(){return new THREE.UV(this.u,this.v)}};THREE.Geometry=function(){this.id=THREE.GeometryCount++;this.vertices=[];this.colors=[];this.faces=[];this.faceUvs=[[]];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphColors=[];this.skinWeights=[];this.skinIndices=[];this.boundingSphere=this.boundingBox=null;this.dynamic=this.hasTangents=!1};
+THREE.Geometry.prototype={constructor:THREE.Geometry,applyMatrix:function(b){var c=new THREE.Matrix4;c.extractRotation(b,new THREE.Vector3(1,1,1));for(var e=0,f=this.vertices.length;e<f;e++)b.multiplyVector3(this.vertices[e].position);e=0;for(f=this.faces.length;e<f;e++){var h=this.faces[e];c.multiplyVector3(h.normal);for(var k=0,m=h.vertexNormals.length;k<m;k++)c.multiplyVector3(h.vertexNormals[k]);b.multiplyVector3(h.centroid)}},computeCentroids:function(){var b,c,e;b=0;for(c=this.faces.length;b<
+c;b++)e=this.faces[b],e.centroid.set(0,0,0),e instanceof THREE.Face3?(e.centroid.addSelf(this.vertices[e.a].position),e.centroid.addSelf(this.vertices[e.b].position),e.centroid.addSelf(this.vertices[e.c].position),e.centroid.divideScalar(3)):e instanceof THREE.Face4&&(e.centroid.addSelf(this.vertices[e.a].position),e.centroid.addSelf(this.vertices[e.b].position),e.centroid.addSelf(this.vertices[e.c].position),e.centroid.addSelf(this.vertices[e.d].position),e.centroid.divideScalar(4))},computeFaceNormals:function(b){var c,
+e,f,h,k,m,n=new THREE.Vector3,t=new THREE.Vector3;f=0;for(h=this.faces.length;f<h;f++){k=this.faces[f];if(b&&k.vertexNormals.length){n.set(0,0,0);c=0;for(e=k.vertexNormals.length;c<e;c++)n.addSelf(k.vertexNormals[c]);n.divideScalar(3)}else c=this.vertices[k.a],e=this.vertices[k.b],m=this.vertices[k.c],n.sub(m.position,e.position),t.sub(c.position,e.position),n.crossSelf(t);n.isZero()||n.normalize();k.normal.copy(n)}},computeVertexNormals:function(){var b,c,e,f;if(this.__tmpVertices==void 0){f=this.__tmpVertices=
+Array(this.vertices.length);b=0;for(c=this.vertices.length;b<c;b++)f[b]=new THREE.Vector3;b=0;for(c=this.faces.length;b<c;b++)if(e=this.faces[b],e instanceof THREE.Face3)e.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];else if(e instanceof THREE.Face4)e.vertexNormals=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3]}else{f=this.__tmpVertices;b=0;for(c=this.vertices.length;b<c;b++)f[b].set(0,0,0)}b=0;for(c=this.faces.length;b<c;b++)e=this.faces[b],e instanceof
+THREE.Face3?(f[e.a].addSelf(e.normal),f[e.b].addSelf(e.normal),f[e.c].addSelf(e.normal)):e instanceof THREE.Face4&&(f[e.a].addSelf(e.normal),f[e.b].addSelf(e.normal),f[e.c].addSelf(e.normal),f[e.d].addSelf(e.normal));b=0;for(c=this.vertices.length;b<c;b++)f[b].normalize();b=0;for(c=this.faces.length;b<c;b++)e=this.faces[b],e instanceof THREE.Face3?(e.vertexNormals[0].copy(f[e.a]),e.vertexNormals[1].copy(f[e.b]),e.vertexNormals[2].copy(f[e.c])):e instanceof THREE.Face4&&(e.vertexNormals[0].copy(f[e.a]),
+e.vertexNormals[1].copy(f[e.b]),e.vertexNormals[2].copy(f[e.c]),e.vertexNormals[3].copy(f[e.d]))},computeTangents:function(){function b(b,c,e,f,k,h,o){n=b.vertices[c].position;t=b.vertices[e].position;u=b.vertices[f].position;v=m[k];p=m[h];x=m[o];w=t.x-n.x;A=u.x-n.x;z=t.y-n.y;y=u.y-n.y;C=t.z-n.z;E=u.z-n.z;D=p.u-v.u;F=x.u-v.u;M=p.v-v.v;N=x.v-v.v;G=1/(D*N-F*M);L.set((N*w-M*A)*G,(N*z-M*y)*G,(N*C-M*E)*G);P.set((D*A-F*w)*G,(D*y-F*z)*G,(D*E-F*C)*G);K[c].addSelf(L);K[e].addSelf(L);K[f].addSelf(L);Z[c].addSelf(P);
+Z[e].addSelf(P);Z[f].addSelf(P)}var c,e,f,h,k,m,n,t,u,v,p,x,w,A,z,y,C,E,D,F,M,N,G,H,K=[],Z=[],L=new THREE.Vector3,P=new THREE.Vector3,U=new THREE.Vector3,Y=new THREE.Vector3,X=new THREE.Vector3;c=0;for(e=this.vertices.length;c<e;c++)K[c]=new THREE.Vector3,Z[c]=new THREE.Vector3;c=0;for(e=this.faces.length;c<e;c++)k=this.faces[c],m=this.faceVertexUvs[0][c],k instanceof THREE.Face3?b(this,k.a,k.b,k.c,0,1,2):k instanceof THREE.Face4&&(b(this,k.a,k.b,k.c,0,1,2),b(this,k.a,k.b,k.d,0,1,3));var o=["a","b",
+"c","d"];c=0;for(e=this.faces.length;c<e;c++){k=this.faces[c];for(f=0;f<k.vertexNormals.length;f++)X.copy(k.vertexNormals[f]),h=k[o[f]],H=K[h],U.copy(H),U.subSelf(X.multiplyScalar(X.dot(H))).normalize(),Y.cross(k.vertexNormals[f],H),h=Y.dot(Z[h]),h=h<0?-1:1,k.vertexTangents[f]=new THREE.Vector4(U.x,U.y,U.z,h)}this.hasTangents=!0},computeBoundingBox:function(){var b;if(this.vertices.length>0){this.boundingBox={x:[this.vertices[0].position.x,this.vertices[0].position.x],y:[this.vertices[0].position.y,
+this.vertices[0].position.y],z:[this.vertices[0].position.z,this.vertices[0].position.z]};for(var c=1,e=this.vertices.length;c<e;c++){b=this.vertices[c];if(b.position.x<this.boundingBox.x[0])this.boundingBox.x[0]=b.position.x;else if(b.position.x>this.boundingBox.x[1])this.boundingBox.x[1]=b.position.x;if(b.position.y<this.boundingBox.y[0])this.boundingBox.y[0]=b.position.y;else if(b.position.y>this.boundingBox.y[1])this.boundingBox.y[1]=b.position.y;if(b.position.z<this.boundingBox.z[0])this.boundingBox.z[0]=
+b.position.z;else if(b.position.z>this.boundingBox.z[1])this.boundingBox.z[1]=b.position.z}}},computeBoundingSphere:function(){for(var b=0,c=0,e=this.vertices.length;c<e;c++)b=Math.max(b,this.vertices[c].position.length());this.boundingSphere={radius:b}},mergeVertices:function(){var b={},c=[],e=[],f,h=Math.pow(10,4),k,m;k=0;for(m=this.vertices.length;k<m;k++)f=this.vertices[k].position,f=[Math.round(f.x*h),Math.round(f.y*h),Math.round(f.z*h)].join("_"),b[f]===void 0?(b[f]=k,c.push(this.vertices[k]),
+e[k]=c.length-1):e[k]=e[b[f]];k=0;for(m=this.faces.length;k<m;k++){b=this.faces[k];if(b instanceof THREE.Face3)b.a=e[b.a],b.b=e[b.b],b.c=e[b.c];if(b instanceof THREE.Face4)b.a=e[b.a],b.b=e[b.b],b.c=e[b.c],b.d=e[b.d]}this.vertices=c}};THREE.GeometryCount=0;
+THREE.Spline=function(b){function c(b,c,e,f,k,h,m){b=(e-b)*0.5;f=(f-c)*0.5;return(2*(c-e)+b+f)*m+(-3*(c-e)-2*b-f)*h+b*k+c}this.points=b;var e=[],f={x:0,y:0,z:0},h,k,m,n,t,u,v,p,x;this.initFromArray=function(b){this.points=[];for(var c=0;c<b.length;c++)this.points[c]={x:b[c][0],y:b[c][1],z:b[c][2]}};this.getPoint=function(b){h=(this.points.length-1)*b;k=Math.floor(h);m=h-k;e[0]=k==0?k:k-1;e[1]=k;e[2]=k>this.points.length-2?k:k+1;e[3]=k>this.points.length-3?k:k+2;u=this.points[e[0]];v=this.points[e[1]];
+p=this.points[e[2]];x=this.points[e[3]];n=m*m;t=m*n;f.x=c(u.x,v.x,p.x,x.x,m,n,t);f.y=c(u.y,v.y,p.y,x.y,m,n,t);f.z=c(u.z,v.z,p.z,x.z,m,n,t);return f};this.getControlPointsArray=function(){var b,c,e=this.points.length,f=[];for(b=0;b<e;b++)c=this.points[b],f[b]=[c.x,c.y,c.z];return f};this.getLength=function(b){var c,e,f=c=c=0,k=new THREE.Vector3,h=new THREE.Vector3,m=[],n=0;m[0]=0;b||(b=100);e=this.points.length*b;k.copy(this.points[0]);for(b=1;b<e;b++)c=b/e,position=this.getPoint(c),h.copy(position),
+n+=h.distanceTo(k),k.copy(position),c*=this.points.length-1,c=Math.floor(c),c!=f&&(m[c]=n,f=c);m[m.length]=n;return{chunks:m,total:n}};this.reparametrizeByArcLength=function(b){var c,e,f,k,h,m,n=[],t=new THREE.Vector3,u=this.getLength();n.push(t.copy(this.points[0]).clone());for(c=1;c<this.points.length;c++){e=u.chunks[c]-u.chunks[c-1];m=Math.ceil(b*e/u.total);k=(c-1)/(this.points.length-1);h=c/(this.points.length-1);for(e=1;e<m-1;e++)f=k+e*(1/m)*(h-k),position=this.getPoint(f),n.push(t.copy(position).clone());
+n.push(t.copy(this.points[c]).clone())}this.points=n}};THREE.Edge=function(b,c,e,f){this.vertices=[b,c];this.vertexIndices=[e,f];this.faces=[];this.faceIndices=[]};THREE.Camera=function(){if(arguments.length)return console.warn("DEPRECATED: Camera() is now PerspectiveCamera() or OrthographicCamera()."),new THREE.PerspectiveCamera(arguments[0],arguments[1],arguments[2],arguments[3]);THREE.Object3D.call(this);this.matrixWorldInverse=new THREE.Matrix4;this.projectionMatrix=new THREE.Matrix4};
+THREE.Camera.prototype=new THREE.Object3D;THREE.Camera.prototype.constructor=THREE.Camera;THREE.Camera.prototype.lookAt=function(b){this.matrix.lookAt(this.position,b,this.up);this.rotationAutoUpdate&&this.rotation.setRotationFromMatrix(this.matrix)};
+THREE.Camera.prototype.update=function(b,c,e){this.matrixAutoUpdate&&this.updateMatrix();if(c||this.matrixWorldNeedsUpdate)b?this.matrixWorld.multiply(b,this.matrix):this.matrixWorld.copy(this.matrix),this.matrixWorldNeedsUpdate=!1,c=!0,THREE.Matrix4.makeInvert(this.matrixWorld,this.matrixWorldInverse);for(b=0;b<this.children.length;b++)this.children[b].update(this.matrixWorld,c,e)};
+THREE.OrthographicCamera=function(b,c,e,f,h,k){THREE.Camera.call(this);this.left=b;this.right=c;this.top=e;this.bottom=f;this.near=h!==void 0?h:0.1;this.far=k!==void 0?k:2E3;this.updateProjectionMatrix()};THREE.OrthographicCamera.prototype=new THREE.Camera;THREE.OrthographicCamera.prototype.constructor=THREE.OrthographicCamera;THREE.OrthographicCamera.prototype.updateProjectionMatrix=function(){this.projectionMatrix=THREE.Matrix4.makeOrtho(this.left,this.right,this.top,this.bottom,this.near,this.far)};
+THREE.PerspectiveCamera=function(b,c,e,f){THREE.Camera.call(this);this.fov=b!==void 0?b:50;this.aspect=c!==void 0?c:1;this.near=e!==void 0?e:0.1;this.far=f!==void 0?f:2E3;this.updateProjectionMatrix()};THREE.PerspectiveCamera.prototype=new THREE.Camera;THREE.PerspectiveCamera.prototype.constructor=THREE.PerspectiveCamera;THREE.PerspectiveCamera.prototype.setLens=function(b,c){this.fov=2*Math.atan((c!==void 0?c:43.25)/(b*2));this.fov*=180/Math.PI;this.updateProjectionMatrix()};
+THREE.PerspectiveCamera.prototype.setViewOffset=function(b,c,e,f,h,k){this.fullWidth=b;this.fullHeight=c;this.x=e;this.y=f;this.width=h;this.height=k;this.updateProjectionMatrix()};
+THREE.PerspectiveCamera.prototype.updateProjectionMatrix=function(){if(this.fullWidth){var b=this.fullWidth/this.fullHeight,c=Math.tan(this.fov*Math.PI/360)*this.near,e=-c,f=b*e,b=Math.abs(b*c-f),e=Math.abs(c-e);this.projectionMatrix=THREE.Matrix4.makeFrustum(f+this.x*b/this.fullWidth,f+(this.x+this.width)*b/this.fullWidth,c-(this.y+this.height)*e/this.fullHeight,c-this.y*e/this.fullHeight,this.near,this.far)}else this.projectionMatrix=THREE.Matrix4.makePerspective(this.fov,this.aspect,this.near,
+this.far)};THREE.Light=function(b){THREE.Object3D.call(this);this.color=new THREE.Color(b)};THREE.Light.prototype=new THREE.Object3D;THREE.Light.prototype.constructor=THREE.Light;THREE.Light.prototype.supr=THREE.Object3D.prototype;THREE.AmbientLight=function(b){THREE.Light.call(this,b)};THREE.AmbientLight.prototype=new THREE.Light;THREE.AmbientLight.prototype.constructor=THREE.AmbientLight;
+THREE.DirectionalLight=function(b,c,e){THREE.Light.call(this,b);this.position=new THREE.Vector3(0,1,0);this.intensity=c!==void 0?c:1;this.distance=e!==void 0?e:0};THREE.DirectionalLight.prototype=new THREE.Light;THREE.DirectionalLight.prototype.constructor=THREE.DirectionalLight;THREE.PointLight=function(b,c,e){THREE.Light.call(this,b);this.position=new THREE.Vector3(0,0,0);this.intensity=c!==void 0?c:1;this.distance=e!==void 0?e:0};THREE.PointLight.prototype=new THREE.Light;
+THREE.PointLight.prototype.constructor=THREE.PointLight;THREE.SpotLight=function(b,c,e,f){THREE.Light.call(this,b);this.position=new THREE.Vector3(0,1,0);this.target=new THREE.Object3D;this.intensity=c!==void 0?c:1;this.distance=e!==void 0?e:0;this.castShadow=f!==void 0?f:!1};THREE.SpotLight.prototype=new THREE.Light;THREE.SpotLight.prototype.constructor=THREE.SpotLight;
+THREE.Material=function(b){this.name="";this.id=THREE.MaterialCount++;b=b||{};this.opacity=b.opacity!==void 0?b.opacity:1;this.transparent=b.transparent!==void 0?b.transparent:!1;this.blending=b.blending!==void 0?b.blending:THREE.NormalBlending;this.depthTest=b.depthTest!==void 0?b.depthTest:!0;this.depthWrite=b.depthWrite!==void 0?b.depthWrite:!0;this.polygonOffset=b.polygonOffset!==void 0?b.polygonOffset:!1;this.polygonOffsetFactor=b.polygonOffsetFactor!==void 0?b.polygonOffsetFactor:0;this.polygonOffsetUnits=
+b.polygonOffsetUnits!==void 0?b.polygonOffsetUnits:0;this.alphaTest=b.alphaTest!==void 0?b.alphaTest:0};THREE.MaterialCount=0;THREE.NoShading=0;THREE.FlatShading=1;THREE.SmoothShading=2;THREE.NoColors=0;THREE.FaceColors=1;THREE.VertexColors=2;THREE.NormalBlending=0;THREE.AdditiveBlending=1;THREE.SubtractiveBlending=2;THREE.MultiplyBlending=3;THREE.AdditiveAlphaBlending=4;
+THREE.LineBasicMaterial=function(b){THREE.Material.call(this,b);b=b||{};this.color=b.color!==void 0?new THREE.Color(b.color):new THREE.Color(16777215);this.linewidth=b.linewidth!==void 0?b.linewidth:1;this.linecap=b.linecap!==void 0?b.linecap:"round";this.linejoin=b.linejoin!==void 0?b.linejoin:"round";this.vertexColors=b.vertexColors?b.vertexColors:!1;this.fog=b.fog!==void 0?b.fog:!0};THREE.LineBasicMaterial.prototype=new THREE.Material;THREE.LineBasicMaterial.prototype.constructor=THREE.LineBasicMaterial;
+THREE.MeshBasicMaterial=function(b){THREE.Material.call(this,b);b=b||{};this.color=b.color!==void 0?new THREE.Color(b.color):new THREE.Color(16777215);this.map=b.map!==void 0?b.map:null;this.lightMap=b.lightMap!==void 0?b.lightMap:null;this.envMap=b.envMap!==void 0?b.envMap:null;this.combine=b.combine!==void 0?b.combine:THREE.MultiplyOperation;this.reflectivity=b.reflectivity!==void 0?b.reflectivity:1;this.refractionRatio=b.refractionRatio!==void 0?b.refractionRatio:0.98;this.fog=b.fog!==void 0?b.fog:
+!0;this.shading=b.shading!==void 0?b.shading:THREE.SmoothShading;this.wireframe=b.wireframe!==void 0?b.wireframe:!1;this.wireframeLinewidth=b.wireframeLinewidth!==void 0?b.wireframeLinewidth:1;this.wireframeLinecap=b.wireframeLinecap!==void 0?b.wireframeLinecap:"round";this.wireframeLinejoin=b.wireframeLinejoin!==void 0?b.wireframeLinejoin:"round";this.vertexColors=b.vertexColors!==void 0?b.vertexColors:!1;this.skinning=b.skinning!==void 0?b.skinning:!1;this.morphTargets=b.morphTargets!==void 0?b.morphTargets:
+!1};THREE.MeshBasicMaterial.prototype=new THREE.Material;THREE.MeshBasicMaterial.prototype.constructor=THREE.MeshBasicMaterial;
+THREE.MeshLambertMaterial=function(b){THREE.Material.call(this,b);b=b||{};this.color=b.color!==void 0?new THREE.Color(b.color):new THREE.Color(16777215);this.map=b.map!==void 0?b.map:null;this.lightMap=b.lightMap!==void 0?b.lightMap:null;this.envMap=b.envMap!==void 0?b.envMap:null;this.combine=b.combine!==void 0?b.combine:THREE.MultiplyOperation;this.reflectivity=b.reflectivity!==void 0?b.reflectivity:1;this.refractionRatio=b.refractionRatio!==void 0?b.refractionRatio:0.98;this.fog=b.fog!==void 0?
+b.fog:!0;this.shading=b.shading!==void 0?b.shading:THREE.SmoothShading;this.wireframe=b.wireframe!==void 0?b.wireframe:!1;this.wireframeLinewidth=b.wireframeLinewidth!==void 0?b.wireframeLinewidth:1;this.wireframeLinecap=b.wireframeLinecap!==void 0?b.wireframeLinecap:"round";this.wireframeLinejoin=b.wireframeLinejoin!==void 0?b.wireframeLinejoin:"round";this.vertexColors=b.vertexColors!==void 0?b.vertexColors:!1;this.skinning=b.skinning!==void 0?b.skinning:!1;this.morphTargets=b.morphTargets!==void 0?
+b.morphTargets:!1};THREE.MeshLambertMaterial.prototype=new THREE.Material;THREE.MeshLambertMaterial.prototype.constructor=THREE.MeshLambertMaterial;
+THREE.MeshPhongMaterial=function(b){THREE.Material.call(this,b);b=b||{};this.color=b.color!==void 0?new THREE.Color(b.color):new THREE.Color(16777215);this.ambient=b.ambient!==void 0?new THREE.Color(b.ambient):new THREE.Color(328965);this.specular=b.specular!==void 0?new THREE.Color(b.specular):new THREE.Color(1118481);this.shininess=b.shininess!==void 0?b.shininess:30;this.map=b.map!==void 0?b.map:null;this.lightMap=b.lightMap!==void 0?b.lightMap:null;this.envMap=b.envMap!==void 0?b.envMap:null;
+this.combine=b.combine!==void 0?b.combine:THREE.MultiplyOperation;this.reflectivity=b.reflectivity!==void 0?b.reflectivity:1;this.refractionRatio=b.refractionRatio!==void 0?b.refractionRatio:0.98;this.fog=b.fog!==void 0?b.fog:!0;this.shading=b.shading!==void 0?b.shading:THREE.SmoothShading;this.wireframe=b.wireframe!==void 0?b.wireframe:!1;this.wireframeLinewidth=b.wireframeLinewidth!==void 0?b.wireframeLinewidth:1;this.wireframeLinecap=b.wireframeLinecap!==void 0?b.wireframeLinecap:"round";this.wireframeLinejoin=
+b.wireframeLinejoin!==void 0?b.wireframeLinejoin:"round";this.vertexColors=b.vertexColors!==void 0?b.vertexColors:!1;this.skinning=b.skinning!==void 0?b.skinning:!1;this.morphTargets=b.morphTargets!==void 0?b.morphTargets:!1};THREE.MeshPhongMaterial.prototype=new THREE.Material;THREE.MeshPhongMaterial.prototype.constructor=THREE.MeshPhongMaterial;
+THREE.MeshDepthMaterial=function(b){THREE.Material.call(this,b);b=b||{};this.shading=b.shading!==void 0?b.shading:THREE.SmoothShading;this.wireframe=b.wireframe!==void 0?b.wireframe:!1;this.wireframeLinewidth=b.wireframeLinewidth!==void 0?b.wireframeLinewidth:1};THREE.MeshDepthMaterial.prototype=new THREE.Material;THREE.MeshDepthMaterial.prototype.constructor=THREE.MeshDepthMaterial;
+THREE.MeshNormalMaterial=function(b){THREE.Material.call(this,b);b=b||{};this.shading=b.shading?b.shading:THREE.FlatShading;this.wireframe=b.wireframe?b.wireframe:!1;this.wireframeLinewidth=b.wireframeLinewidth?b.wireframeLinewidth:1};THREE.MeshNormalMaterial.prototype=new THREE.Material;THREE.MeshNormalMaterial.prototype.constructor=THREE.MeshNormalMaterial;THREE.MeshFaceMaterial=function(){};
+THREE.MeshShaderMaterial=function(b){console.warn("DEPRECATED: MeshShaderMaterial() is now ShaderMaterial().");return new THREE.ShaderMaterial(b)};
+THREE.ParticleBasicMaterial=function(b){THREE.Material.call(this,b);b=b||{};this.color=b.color!==void 0?new THREE.Color(b.color):new THREE.Color(16777215);this.map=b.map!==void 0?b.map:null;this.size=b.size!==void 0?b.size:1;this.sizeAttenuation=b.sizeAttenuation!==void 0?b.sizeAttenuation:!0;this.vertexColors=b.vertexColors!==void 0?b.vertexColors:!1;this.fog=b.fog!==void 0?b.fog:!0};THREE.ParticleBasicMaterial.prototype=new THREE.Material;THREE.ParticleBasicMaterial.prototype.constructor=THREE.ParticleBasicMaterial;
+THREE.ParticleCanvasMaterial=function(b){THREE.Material.call(this,b);b=b||{};this.color=b.color!==void 0?new THREE.Color(b.color):new THREE.Color(16777215);this.program=b.program!==void 0?b.program:function(){}};THREE.ParticleCanvasMaterial.prototype=new THREE.Material;THREE.ParticleCanvasMaterial.prototype.constructor=THREE.ParticleCanvasMaterial;THREE.ParticleDOMMaterial=function(b){THREE.Material.call(this);this.domElement=b};
+THREE.ShaderMaterial=function(b){THREE.Material.call(this,b);b=b||{};this.fragmentShader=b.fragmentShader!==void 0?b.fragmentShader:"void main() {}";this.vertexShader=b.vertexShader!==void 0?b.vertexShader:"void main() {}";this.uniforms=b.uniforms!==void 0?b.uniforms:{};this.attributes=b.attributes;this.shading=b.shading!==void 0?b.shading:THREE.SmoothShading;this.wireframe=b.wireframe!==void 0?b.wireframe:!1;this.wireframeLinewidth=b.wireframeLinewidth!==void 0?b.wireframeLinewidth:1;this.fog=b.fog!==
+void 0?b.fog:!1;this.lights=b.lights!==void 0?b.lights:!1;this.vertexColors=b.vertexColors!==void 0?b.vertexColors:!1;this.skinning=b.skinning!==void 0?b.skinning:!1;this.morphTargets=b.morphTargets!==void 0?b.morphTargets:!1};THREE.ShaderMaterial.prototype=new THREE.Material;THREE.ShaderMaterial.prototype.constructor=THREE.ShaderMaterial;
+THREE.Texture=function(b,c,e,f,h,k){this.id=THREE.TextureCount++;this.image=b;this.mapping=c!==void 0?c:new THREE.UVMapping;this.wrapS=e!==void 0?e:THREE.ClampToEdgeWrapping;this.wrapT=f!==void 0?f:THREE.ClampToEdgeWrapping;this.magFilter=h!==void 0?h:THREE.LinearFilter;this.minFilter=k!==void 0?k:THREE.LinearMipMapLinearFilter;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.needsUpdate=!1};
+THREE.Texture.prototype={constructor:THREE.Texture,clone:function(){var b=new THREE.Texture(this.image,this.mapping,this.wrapS,this.wrapT,this.magFilter,this.minFilter);b.offset.copy(this.offset);b.repeat.copy(this.repeat);return b}};THREE.TextureCount=0;THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.CubeReflectionMapping=function(){};THREE.CubeRefractionMapping=function(){};THREE.LatitudeReflectionMapping=function(){};THREE.LatitudeRefractionMapping=function(){};
+THREE.SphericalReflectionMapping=function(){};THREE.SphericalRefractionMapping=function(){};THREE.UVMapping=function(){};THREE.RepeatWrapping=0;THREE.ClampToEdgeWrapping=1;THREE.MirroredRepeatWrapping=2;THREE.NearestFilter=3;THREE.NearestMipMapNearestFilter=4;THREE.NearestMipMapLinearFilter=5;THREE.LinearFilter=6;THREE.LinearMipMapNearestFilter=7;THREE.LinearMipMapLinearFilter=8;THREE.ByteType=9;THREE.UnsignedByteType=10;THREE.ShortType=11;THREE.UnsignedShortType=12;THREE.IntType=13;
+THREE.UnsignedIntType=14;THREE.FloatType=15;THREE.AlphaFormat=16;THREE.RGBFormat=17;THREE.RGBAFormat=18;THREE.LuminanceFormat=19;THREE.LuminanceAlphaFormat=20;THREE.DataTexture=function(b,c,e,f,h,k,m,n,t){THREE.Texture.call(this,null,h,k,m,n,t);this.image={data:b,width:c,height:e};this.format=f!==void 0?f:THREE.RGBAFormat};THREE.DataTexture.prototype=new THREE.Texture;THREE.DataTexture.prototype.constructor=THREE.DataTexture;
+THREE.DataTexture.prototype.clone=function(){var b=new THREE.DataTexture(this.data.slice(0),this.mapping,this.wrapS,this.wrapT,this.magFilter,this.minFilter);b.offset.copy(this.offset);b.repeat.copy(this.repeat);return b};THREE.Particle=function(b){THREE.Object3D.call(this);this.materials=b instanceof Array?b:[b]};THREE.Particle.prototype=new THREE.Object3D;THREE.Particle.prototype.constructor=THREE.Particle;
+THREE.ParticleSystem=function(b,c){THREE.Object3D.call(this);this.geometry=b;this.materials=c instanceof Array?c:[c];this.sortParticles=!1};THREE.ParticleSystem.prototype=new THREE.Object3D;THREE.ParticleSystem.prototype.constructor=THREE.ParticleSystem;THREE.Line=function(b,c,e){THREE.Object3D.call(this);this.geometry=b;this.materials=c instanceof Array?c:[c];this.type=e!=void 0?e:THREE.LineStrip};THREE.LineStrip=0;THREE.LinePieces=1;THREE.Line.prototype=new THREE.Object3D;
+THREE.Line.prototype.constructor=THREE.Line;
+THREE.Mesh=function(b,c){THREE.Object3D.call(this);this.geometry=b;this.materials=c&&c.length?c:[c];this.overdraw=!1;if(this.geometry&&(this.geometry.boundingSphere||this.geometry.computeBoundingSphere(),this.boundRadius=b.boundingSphere.radius,this.geometry.morphTargets.length)){this.morphTargetBase=-1;this.morphTargetForcedOrder=[];this.morphTargetInfluences=[];this.morphTargetDictionary={};for(var e=0;e<this.geometry.morphTargets.length;e++)this.morphTargetInfluences.push(0),this.morphTargetDictionary[this.geometry.morphTargets[e].name]=
+e}};THREE.Mesh.prototype=new THREE.Object3D;THREE.Mesh.prototype.constructor=THREE.Mesh;THREE.Mesh.prototype.supr=THREE.Object3D.prototype;THREE.Mesh.prototype.getMorphTargetIndexByName=function(b){if(this.morphTargetDictionary[b]!==void 0)return this.morphTargetDictionary[b];console.log("THREE.Mesh.getMorphTargetIndexByName: morph target "+b+" does not exist. Returning 0.");return 0};
+THREE.Bone=function(b){THREE.Object3D.call(this);this.skin=b;this.skinMatrix=new THREE.Matrix4;this.hasNoneBoneChildren=!1};THREE.Bone.prototype=new THREE.Object3D;THREE.Bone.prototype.constructor=THREE.Bone;THREE.Bone.prototype.supr=THREE.Object3D.prototype;
+THREE.Bone.prototype.update=function(b,c,e){this.matrixAutoUpdate&&(c|=this.updateMatrix());if(c||this.matrixWorldNeedsUpdate)b?this.skinMatrix.multiply(b,this.matrix):this.skinMatrix.copy(this.matrix),this.matrixWorldNeedsUpdate=!1,c=!0;var f,h=this.children.length;if(this.hasNoneBoneChildren){this.matrixWorld.multiply(this.skin.matrixWorld,this.skinMatrix);for(f=0;f<h;f++)b=this.children[f],b instanceof THREE.Bone?b.update(this.skinMatrix,c,e):b.update(this.matrixWorld,!0,e)}else for(f=0;f<h;f++)this.children[f].update(this.skinMatrix,
+c,e)};THREE.Bone.prototype.addChild=function(b){if(this.children.indexOf(b)===-1&&(b.parent!==void 0&&b.parent.removeChild(b),b.parent=this,this.children.push(b),!(b instanceof THREE.Bone)))this.hasNoneBoneChildren=!0};
+THREE.SkinnedMesh=function(b,c){THREE.Mesh.call(this,b,c);this.identityMatrix=new THREE.Matrix4;this.bones=[];this.boneMatrices=[];var e,f,h,k,m,n;if(this.geometry.bones!==void 0){for(e=0;e<this.geometry.bones.length;e++)h=this.geometry.bones[e],k=h.pos,m=h.rotq,n=h.scl,f=this.addBone(),f.name=h.name,f.position.set(k[0],k[1],k[2]),f.quaternion.set(m[0],m[1],m[2],m[3]),f.useQuaternion=!0,n!==void 0?f.scale.set(n[0],n[1],n[2]):f.scale.set(1,1,1);for(e=0;e<this.bones.length;e++)h=this.geometry.bones[e],
+f=this.bones[e],h.parent===-1?this.addChild(f):this.bones[h.parent].addChild(f);this.boneMatrices=new Float32Array(16*this.bones.length);this.pose()}};THREE.SkinnedMesh.prototype=new THREE.Mesh;THREE.SkinnedMesh.prototype.constructor=THREE.SkinnedMesh;
+THREE.SkinnedMesh.prototype.update=function(b,c,e){if(this.visible){this.matrixAutoUpdate&&(c|=this.updateMatrix());if(c||this.matrixWorldNeedsUpdate)b?this.matrixWorld.multiply(b,this.matrix):this.matrixWorld.copy(this.matrix),this.matrixWorldNeedsUpdate=!1,c=!0;var f,h=this.children.length;for(f=0;f<h;f++)b=this.children[f],b instanceof THREE.Bone?b.update(this.identityMatrix,!1,e):b.update(this.matrixWorld,c,e);e=this.bones.length;ba=this.bones;bm=this.boneMatrices;for(c=0;c<e;c++)ba[c].skinMatrix.flattenToArrayOffset(bm,
+c*16)}};THREE.SkinnedMesh.prototype.addBone=function(b){b===void 0&&(b=new THREE.Bone(this));this.bones.push(b);return b};
+THREE.SkinnedMesh.prototype.pose=function(){this.update(void 0,!0);for(var b,c=[],e=0;e<this.bones.length;e++)b=this.bones[e],c.push(THREE.Matrix4.makeInvert(b.skinMatrix)),b.skinMatrix.flattenToArrayOffset(this.boneMatrices,e*16);if(this.geometry.skinVerticesA===void 0){this.geometry.skinVerticesA=[];this.geometry.skinVerticesB=[];var f;for(b=0;b<this.geometry.skinIndices.length;b++){var e=this.geometry.vertices[b].position,h=this.geometry.skinIndices[b].x,k=this.geometry.skinIndices[b].y;f=new THREE.Vector3(e.x,
+e.y,e.z);this.geometry.skinVerticesA.push(c[h].multiplyVector3(f));f=new THREE.Vector3(e.x,e.y,e.z);this.geometry.skinVerticesB.push(c[k].multiplyVector3(f));this.geometry.skinWeights[b].x+this.geometry.skinWeights[b].y!==1&&(e=(1-(this.geometry.skinWeights[b].x+this.geometry.skinWeights[b].y))*0.5,this.geometry.skinWeights[b].x+=e,this.geometry.skinWeights[b].y+=e)}}};THREE.Ribbon=function(b,c){THREE.Object3D.call(this);this.geometry=b;this.materials=c instanceof Array?c:[c]};
+THREE.Ribbon.prototype=new THREE.Object3D;THREE.Ribbon.prototype.constructor=THREE.Ribbon;THREE.LOD=function(){THREE.Object3D.call(this);this.LODs=[]};THREE.LOD.prototype=new THREE.Object3D;THREE.LOD.prototype.constructor=THREE.LOD;THREE.LOD.prototype.supr=THREE.Object3D.prototype;THREE.LOD.prototype.addLevel=function(b,c){c===void 0&&(c=0);for(var c=Math.abs(c),e=0;e<this.LODs.length;e++)if(c<this.LODs[e].visibleAtDistance)break;this.LODs.splice(e,0,{visibleAtDistance:c,object3D:b});this.add(b)};
+THREE.LOD.prototype.update=function(b,c,e){this.matrixAutoUpdate&&(c|=this.updateMatrix());if(c||this.matrixWorldNeedsUpdate)b?this.matrixWorld.multiply(b,this.matrix):this.matrixWorld.copy(this.matrix),this.matrixWorldNeedsUpdate=!1,c=!0;if(this.LODs.length>1){b=e.matrixWorldInverse;b=-(b.n31*this.position.x+b.n32*this.position.y+b.n33*this.position.z+b.n34);this.LODs[0].object3D.visible=!0;for(var f=1;f<this.LODs.length;f++)if(b>=this.LODs[f].visibleAtDistance)this.LODs[f-1].object3D.visible=!1,
+this.LODs[f].object3D.visible=!0;else break;for(;f<this.LODs.length;f++)this.LODs[f].object3D.visible=!1}for(b=0;b<this.children.length;b++)this.children[b].update(this.matrixWorld,c,e)};
+THREE.Sprite=function(b){THREE.Object3D.call(this);this.color=b.color!==void 0?new THREE.Color(b.color):new THREE.Color(16777215);this.map=b.map instanceof THREE.Texture?b.map:THREE.ImageUtils.loadTexture(b.map);this.blending=b.blending!==void 0?b.blending:THREE.NormalBlending;this.useScreenCoordinates=b.useScreenCoordinates!==void 0?b.useScreenCoordinates:!0;this.mergeWith3D=b.mergeWith3D!==void 0?b.mergeWith3D:!this.useScreenCoordinates;this.affectedByDistance=b.affectedByDistance!==void 0?b.affectedByDistance:
+!this.useScreenCoordinates;this.scaleByViewport=b.scaleByViewport!==void 0?b.scaleByViewport:!this.affectedByDistance;this.alignment=b.alignment instanceof THREE.Vector2?b.alignment:THREE.SpriteAlignment.center;this.rotation3d=this.rotation;this.rotation=0;this.opacity=1;this.uvOffset=new THREE.Vector2(0,0);this.uvScale=new THREE.Vector2(1,1)};THREE.Sprite.prototype=new THREE.Object3D;THREE.Sprite.prototype.constructor=THREE.Sprite;THREE.Sprite.prototype.supr=THREE.Object3D.prototype;
+THREE.Sprite.prototype.updateMatrix=function(){this.matrix.setPosition(this.position);this.rotation3d.set(0,0,this.rotation);this.matrix.setRotationFromEuler(this.rotation3d);if(this.scale.x!==1||this.scale.y!==1)this.matrix.scale(this.scale),this.boundRadiusScale=Math.max(this.scale.x,this.scale.y);this.matrixWorldNeedsUpdate=!0};THREE.SpriteAlignment={};THREE.SpriteAlignment.topLeft=new THREE.Vector2(1,-1);THREE.SpriteAlignment.topCenter=new THREE.Vector2(0,-1);
+THREE.SpriteAlignment.topRight=new THREE.Vector2(-1,-1);THREE.SpriteAlignment.centerLeft=new THREE.Vector2(1,0);THREE.SpriteAlignment.center=new THREE.Vector2(0,0);THREE.SpriteAlignment.centerRight=new THREE.Vector2(-1,0);THREE.SpriteAlignment.bottomLeft=new THREE.Vector2(1,1);THREE.SpriteAlignment.bottomCenter=new THREE.Vector2(0,1);THREE.SpriteAlignment.bottomRight=new THREE.Vector2(-1,1);
+THREE.Scene=function(){THREE.Object3D.call(this);this.fog=null;this.matrixAutoUpdate=!1;this.collisions=this.overrideMaterial=null;this.objects=[];this.lights=[];this.__objectsAdded=[];this.__objectsRemoved=[]};THREE.Scene.prototype=new THREE.Object3D;THREE.Scene.prototype.constructor=THREE.Scene;THREE.Scene.prototype.supr=THREE.Object3D.prototype;THREE.Scene.prototype.add=function(b){this.supr.add.call(this,b);this.addChildRecurse(b)};
+THREE.Scene.prototype.addChildRecurse=function(b){if(b instanceof THREE.Light)this.lights.indexOf(b)===-1&&this.lights.push(b);else if(!(b instanceof THREE.Camera||b instanceof THREE.Bone)&&this.objects.indexOf(b)===-1){this.objects.push(b);this.__objectsAdded.push(b);var c=this.__objectsRemoved.indexOf(b);c!==-1&&this.__objectsRemoved.splice(c,1)}for(c=0;c<b.children.length;c++)this.addChildRecurse(b.children[c])};THREE.Scene.prototype.remove=function(b){this.supr.remove.call(this,b);this.removeChildRecurse(b)};
+THREE.Scene.prototype.removeChildRecurse=function(b){if(b instanceof THREE.Light){var c=this.lights.indexOf(b);c!==-1&&this.lights.splice(c,1)}else b instanceof THREE.Camera||(c=this.objects.indexOf(b),c!==-1&&(this.objects.splice(c,1),this.__objectsRemoved.push(b),c=this.__objectsAdded.indexOf(b),c!==-1&&this.__objectsAdded.splice(c,1)));for(c=0;c<b.children.length;c++)this.removeChildRecurse(b.children[c])};
+THREE.Scene.prototype.addChild=function(b){console.warn("DEPRECATED: Scene.addChild() is now Scene.add().");this.add(b)};THREE.Scene.prototype.addObject=function(b){console.warn("DEPRECATED: Scene.addObject() is now Scene.add().");this.add(b)};THREE.Scene.prototype.addLight=function(b){console.warn("DEPRECATED: Scene.addLight() is now Scene.add().");this.add(b)};THREE.Scene.prototype.removeChild=function(b){console.warn("DEPRECATED: Scene.removeChild() is now Scene.remove().");this.remove(b)};
+THREE.Scene.prototype.removeObject=function(b){console.warn("DEPRECATED: Scene.removeObject() is now Scene.remove().");this.remove(b)};THREE.Scene.prototype.removeLight=function(b){console.warn("DEPRECATED: Scene.removeLight() is now Scene.remove().");this.remove(b)};THREE.Fog=function(b,c,e){this.color=new THREE.Color(b);this.near=c!==void 0?c:1;this.far=e!==void 0?e:1E3};THREE.FogExp2=function(b,c){this.color=new THREE.Color(b);this.density=c!==void 0?c:2.5E-4};
+THREE.DOMRenderer=function(){THREE.Renderer.call(this);var b=null,c=new THREE.Projector,e,f,h,k;this.domElement=document.createElement("div");this.setSize=function(b,c){e=b;f=c;h=e/2;k=f/2};this.render=function(e,f){var t,u,v,p,x,w,A,z;b=c.projectScene(e,f);t=0;for(u=b.length;t<u;t++)if(x=b[t],x instanceof THREE.RenderableParticle){A=x.x*h+h;z=x.y*k+k;v=0;for(p=x.material.length;v<p;v++)if(w=x.material[v],w instanceof THREE.ParticleDOMMaterial)w=w.domElement,w.style.left=A+"px",w.style.top=z+"px"}}};
+THREE.CanvasRenderer=function(b){function c(b){if(y!=b)w.globalAlpha=y=b}function e(b){if(C!=b){switch(b){case THREE.NormalBlending:w.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:w.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:w.globalCompositeOperation="darker"}C=b}}function f(b){if(E!=b)w.strokeStyle=E=b}function h(b){if(D!=b)w.fillStyle=D=b}var k=this,m=null,n=new THREE.Projector,b=b||{},t=b.canvas!==void 0?b.canvas:document.createElement("canvas"),
+u,v,p,x,w=t.getContext("2d"),A=new THREE.Color(0),z=0,y=1,C=0,E=null,D=null,F=null,M=null,N=null,G,H,K,Z,L=new THREE.RenderableVertex,P=new THREE.RenderableVertex,U,Y,X,o,ea,R,pa,fa,ma,da,la,ga,$=new THREE.Color(0),ca=new THREE.Color(0),aa=new THREE.Color(0),ha=new THREE.Color(0),ka=new THREE.Color(0),sa=[],J,Q,na,ra,va,ua,Ea,Ba,Da,Fa,V=new THREE.Rectangle,T=new THREE.Rectangle,O=new THREE.Rectangle,qa=!1,ia=new THREE.Color,ja=new THREE.Color,ya=new THREE.Color,wa=new THREE.Color,oa=new THREE.Vector3,
+Ia,za,Ka,Ca,Ga,W,b=16;Ia=document.createElement("canvas");Ia.width=Ia.height=2;za=Ia.getContext("2d");za.fillStyle="rgba(0,0,0,1)";za.fillRect(0,0,2,2);Ka=za.getImageData(0,0,2,2);Ca=Ka.data;Ga=document.createElement("canvas");Ga.width=Ga.height=b;W=Ga.getContext("2d");W.translate(-b/2,-b/2);W.scale(b,b);b--;this.domElement=t;this.sortElements=this.sortObjects=this.autoClear=!0;this.info={render:{vertices:0,faces:0}};this.setSize=function(b,c){u=b;v=c;p=Math.floor(u/2);x=Math.floor(v/2);t.width=u;
+t.height=v;V.set(-p,-x,p,x);T.set(-p,-x,p,x);y=1;C=0;N=M=F=D=E=null};this.setClearColor=function(b,c){A.copy(b);z=c;T.set(-p,-x,p,x)};this.setClearColorHex=function(b,c){A.setHex(b);z=c;T.set(-p,-x,p,x)};this.clear=function(){w.setTransform(1,0,0,-1,p,x);T.isEmpty()||(T.minSelf(V),T.inflate(2),z<1&&w.clearRect(Math.floor(T.getX()),Math.floor(T.getY()),Math.floor(T.getWidth()),Math.floor(T.getHeight())),z>0&&(e(THREE.NormalBlending),c(1),h("rgba("+Math.floor(A.r*255)+","+Math.floor(A.g*255)+","+Math.floor(A.b*
+255)+","+z+")"),w.fillRect(Math.floor(T.getX()),Math.floor(T.getY()),Math.floor(T.getWidth()),Math.floor(T.getHeight()))),T.empty())};this.render=function(b,t){function u(b){var c,e,f,k=b.lights;ja.setRGB(0,0,0);ya.setRGB(0,0,0);wa.setRGB(0,0,0);b=0;for(c=k.length;b<c;b++)e=k[b],f=e.color,e instanceof THREE.AmbientLight?(ja.r+=f.r,ja.g+=f.g,ja.b+=f.b):e instanceof THREE.DirectionalLight?(ya.r+=f.r,ya.g+=f.g,ya.b+=f.b):e instanceof THREE.PointLight&&(wa.r+=f.r,wa.g+=f.g,wa.b+=f.b)}function v(b,c,e,
+f){var k,h,m,o,n=b.lights,b=0;for(k=n.length;b<k;b++)h=n[b],m=h.color,h instanceof THREE.DirectionalLight?(o=e.dot(h.position),o<=0||(o*=h.intensity,f.r+=m.r*o,f.g+=m.g*o,f.b+=m.b*o)):h instanceof THREE.PointLight&&(o=e.dot(oa.sub(h.position,c).normalize()),o<=0||(o*=h.distance==0?1:1-Math.min(c.distanceTo(h.position)/h.distance,1),o!=0&&(o*=h.intensity,f.r+=m.r*o,f.g+=m.g*o,f.b+=m.b*o)))}function z(b,k,m){c(m.opacity);e(m.blending);var o,n,t,u,v,xa;if(m instanceof THREE.ParticleBasicMaterial){if(m.map)u=
+m.map.image,v=u.width>>1,xa=u.height>>1,m=k.scale.x*p,t=k.scale.y*x,o=m*v,n=t*xa,O.set(b.x-o,b.y-n,b.x+o,b.y+n),V.intersects(O)&&(w.save(),w.translate(b.x,b.y),w.rotate(-k.rotation),w.scale(m,-t),w.translate(-v,-xa),w.drawImage(u,0,0),w.restore())}else m instanceof THREE.ParticleCanvasMaterial&&(o=k.scale.x*p,n=k.scale.y*x,O.set(b.x-o,b.y-n,b.x+o,b.y+n),V.intersects(O)&&(f(m.color.getContextStyle()),h(m.color.getContextStyle()),w.save(),w.translate(b.x,b.y),w.rotate(-k.rotation),w.scale(o,n),m.program(w),
+w.restore()))}function y(b,k,h,m){c(m.opacity);e(m.blending);w.beginPath();w.moveTo(b.positionScreen.x,b.positionScreen.y);w.lineTo(k.positionScreen.x,k.positionScreen.y);w.closePath();if(m instanceof THREE.LineBasicMaterial){b=m.linewidth;if(F!=b)w.lineWidth=F=b;b=m.linecap;if(M!=b)w.lineCap=M=b;b=m.linejoin;if(N!=b)w.lineJoin=N=b;f(m.color.getContextStyle());w.stroke();O.inflate(m.linewidth*2)}}function A(b,f,h,m,n,u,p,w,x){k.info.render.vertices+=3;k.info.render.faces++;c(w.opacity);e(w.blending);
+U=b.positionScreen.x;Y=b.positionScreen.y;X=f.positionScreen.x;o=f.positionScreen.y;ea=h.positionScreen.x;R=h.positionScreen.y;E(U,Y,X,o,ea,R);if(w instanceof THREE.MeshBasicMaterial)if(w.map)w.map.mapping instanceof THREE.UVMapping&&(ra=p.uvs[0],ab(U,Y,X,o,ea,R,ra[m].u,ra[m].v,ra[n].u,ra[n].v,ra[u].u,ra[u].v,w.map));else if(w.envMap){if(w.envMap.mapping instanceof THREE.SphericalReflectionMapping)b=t.matrixWorldInverse,oa.copy(p.vertexNormalsWorld[0]),va=(oa.x*b.n11+oa.y*b.n12+oa.z*b.n13)*0.5+0.5,
+ua=-(oa.x*b.n21+oa.y*b.n22+oa.z*b.n23)*0.5+0.5,oa.copy(p.vertexNormalsWorld[1]),Ea=(oa.x*b.n11+oa.y*b.n12+oa.z*b.n13)*0.5+0.5,Ba=-(oa.x*b.n21+oa.y*b.n22+oa.z*b.n23)*0.5+0.5,oa.copy(p.vertexNormalsWorld[2]),Da=(oa.x*b.n11+oa.y*b.n12+oa.z*b.n13)*0.5+0.5,Fa=-(oa.x*b.n21+oa.y*b.n22+oa.z*b.n23)*0.5+0.5,ab(U,Y,X,o,ea,R,va,ua,Ea,Ba,Da,Fa,w.envMap)}else w.wireframe?Na(w.color,w.wireframeLinewidth,w.wireframeLinecap,w.wireframeLinejoin):Oa(w.color);else if(w instanceof THREE.MeshLambertMaterial)w.map&&!w.wireframe&&
+(w.map.mapping instanceof THREE.UVMapping&&(ra=p.uvs[0],ab(U,Y,X,o,ea,R,ra[m].u,ra[m].v,ra[n].u,ra[n].v,ra[u].u,ra[u].v,w.map)),e(THREE.SubtractiveBlending)),qa?!w.wireframe&&w.shading==THREE.SmoothShading&&p.vertexNormalsWorld.length==3?(ca.r=aa.r=ha.r=ja.r,ca.g=aa.g=ha.g=ja.g,ca.b=aa.b=ha.b=ja.b,v(x,p.v1.positionWorld,p.vertexNormalsWorld[0],ca),v(x,p.v2.positionWorld,p.vertexNormalsWorld[1],aa),v(x,p.v3.positionWorld,p.vertexNormalsWorld[2],ha),ca.r=Math.max(0,Math.min(w.color.r*ca.r,1)),ca.g=
+Math.max(0,Math.min(w.color.g*ca.g,1)),ca.b=Math.max(0,Math.min(w.color.b*ca.b,1)),aa.r=Math.max(0,Math.min(w.color.r*aa.r,1)),aa.g=Math.max(0,Math.min(w.color.g*aa.g,1)),aa.b=Math.max(0,Math.min(w.color.b*aa.b,1)),ha.r=Math.max(0,Math.min(w.color.r*ha.r,1)),ha.g=Math.max(0,Math.min(w.color.g*ha.g,1)),ha.b=Math.max(0,Math.min(w.color.b*ha.b,1)),ka.r=(aa.r+ha.r)*0.5,ka.g=(aa.g+ha.g)*0.5,ka.b=(aa.b+ha.b)*0.5,na=Ya(ca,aa,ha,ka),Va(U,Y,X,o,ea,R,0,0,1,0,0,1,na)):(ia.r=ja.r,ia.g=ja.g,ia.b=ja.b,v(x,p.centroidWorld,
+p.normalWorld,ia),$.r=Math.max(0,Math.min(w.color.r*ia.r,1)),$.g=Math.max(0,Math.min(w.color.g*ia.g,1)),$.b=Math.max(0,Math.min(w.color.b*ia.b,1)),w.wireframe?Na($,w.wireframeLinewidth,w.wireframeLinecap,w.wireframeLinejoin):Oa($)):w.wireframe?Na(w.color,w.wireframeLinewidth,w.wireframeLinecap,w.wireframeLinejoin):Oa(w.color);else if(w instanceof THREE.MeshDepthMaterial)J=t.near,Q=t.far,ca.r=ca.g=ca.b=1-Ra(b.positionScreen.z,J,Q),aa.r=aa.g=aa.b=1-Ra(f.positionScreen.z,J,Q),ha.r=ha.g=ha.b=1-Ra(h.positionScreen.z,
+J,Q),ka.r=(aa.r+ha.r)*0.5,ka.g=(aa.g+ha.g)*0.5,ka.b=(aa.b+ha.b)*0.5,na=Ya(ca,aa,ha,ka),Va(U,Y,X,o,ea,R,0,0,1,0,0,1,na);else if(w instanceof THREE.MeshNormalMaterial)$.r=Wa(p.normalWorld.x),$.g=Wa(p.normalWorld.y),$.b=Wa(p.normalWorld.z),w.wireframe?Na($,w.wireframeLinewidth,w.wireframeLinecap,w.wireframeLinejoin):Oa($)}function C(b,f,h,m,n,u,w,p,x){k.info.render.vertices+=4;k.info.render.faces++;c(p.opacity);e(p.blending);if(p.map||p.envMap)A(b,f,m,0,1,3,w,p,x),A(n,h,u,1,2,3,w,p,x);else if(U=b.positionScreen.x,
+Y=b.positionScreen.y,X=f.positionScreen.x,o=f.positionScreen.y,ea=h.positionScreen.x,R=h.positionScreen.y,pa=m.positionScreen.x,fa=m.positionScreen.y,ma=n.positionScreen.x,da=n.positionScreen.y,la=u.positionScreen.x,ga=u.positionScreen.y,p instanceof THREE.MeshBasicMaterial)D(U,Y,X,o,ea,R,pa,fa),p.wireframe?Na(p.color,p.wireframeLinewidth,p.wireframeLinecap,p.wireframeLinejoin):Oa(p.color);else if(p instanceof THREE.MeshLambertMaterial)qa?!p.wireframe&&p.shading==THREE.SmoothShading&&w.vertexNormalsWorld.length==
+4?(ca.r=aa.r=ha.r=ka.r=ja.r,ca.g=aa.g=ha.g=ka.g=ja.g,ca.b=aa.b=ha.b=ka.b=ja.b,v(x,w.v1.positionWorld,w.vertexNormalsWorld[0],ca),v(x,w.v2.positionWorld,w.vertexNormalsWorld[1],aa),v(x,w.v4.positionWorld,w.vertexNormalsWorld[3],ha),v(x,w.v3.positionWorld,w.vertexNormalsWorld[2],ka),ca.r=Math.max(0,Math.min(p.color.r*ca.r,1)),ca.g=Math.max(0,Math.min(p.color.g*ca.g,1)),ca.b=Math.max(0,Math.min(p.color.b*ca.b,1)),aa.r=Math.max(0,Math.min(p.color.r*aa.r,1)),aa.g=Math.max(0,Math.min(p.color.g*aa.g,1)),
+aa.b=Math.max(0,Math.min(p.color.b*aa.b,1)),ha.r=Math.max(0,Math.min(p.color.r*ha.r,1)),ha.g=Math.max(0,Math.min(p.color.g*ha.g,1)),ha.b=Math.max(0,Math.min(p.color.b*ha.b,1)),ka.r=Math.max(0,Math.min(p.color.r*ka.r,1)),ka.g=Math.max(0,Math.min(p.color.g*ka.g,1)),ka.b=Math.max(0,Math.min(p.color.b*ka.b,1)),na=Ya(ca,aa,ha,ka),E(U,Y,X,o,pa,fa),Va(U,Y,X,o,pa,fa,0,0,1,0,0,1,na),E(ma,da,ea,R,la,ga),Va(ma,da,ea,R,la,ga,1,0,1,1,0,1,na)):(ia.r=ja.r,ia.g=ja.g,ia.b=ja.b,v(x,w.centroidWorld,w.normalWorld,ia),
+$.r=Math.max(0,Math.min(p.color.r*ia.r,1)),$.g=Math.max(0,Math.min(p.color.g*ia.g,1)),$.b=Math.max(0,Math.min(p.color.b*ia.b,1)),D(U,Y,X,o,ea,R,pa,fa),p.wireframe?Na($,p.wireframeLinewidth,p.wireframeLinecap,p.wireframeLinejoin):Oa($)):(D(U,Y,X,o,ea,R,pa,fa),p.wireframe?Na(p.color,p.wireframeLinewidth,p.wireframeLinecap,p.wireframeLinejoin):Oa(p.color));else if(p instanceof THREE.MeshNormalMaterial)$.r=Wa(w.normalWorld.x),$.g=Wa(w.normalWorld.y),$.b=Wa(w.normalWorld.z),D(U,Y,X,o,ea,R,pa,fa),p.wireframe?
+Na($,p.wireframeLinewidth,p.wireframeLinecap,p.wireframeLinejoin):Oa($);else if(p instanceof THREE.MeshDepthMaterial)J=t.near,Q=t.far,ca.r=ca.g=ca.b=1-Ra(b.positionScreen.z,J,Q),aa.r=aa.g=aa.b=1-Ra(f.positionScreen.z,J,Q),ha.r=ha.g=ha.b=1-Ra(m.positionScreen.z,J,Q),ka.r=ka.g=ka.b=1-Ra(h.positionScreen.z,J,Q),na=Ya(ca,aa,ha,ka),E(U,Y,X,o,pa,fa),Va(U,Y,X,o,pa,fa,0,0,1,0,0,1,na),E(ma,da,ea,R,la,ga),Va(ma,da,ea,R,la,ga,1,0,1,1,0,1,na)}function E(b,c,e,f,k,h){w.beginPath();w.moveTo(b,c);w.lineTo(e,f);
+w.lineTo(k,h);w.lineTo(b,c);w.closePath()}function D(b,c,e,f,k,h,m,o){w.beginPath();w.moveTo(b,c);w.lineTo(e,f);w.lineTo(k,h);w.lineTo(m,o);w.lineTo(b,c);w.closePath()}function Na(b,c,e,k){if(F!=c)w.lineWidth=F=c;if(M!=e)w.lineCap=M=e;if(N!=k)w.lineJoin=N=k;f(b.getContextStyle());w.stroke();O.inflate(c*2)}function Oa(b){h(b.getContextStyle());w.fill()}function ab(b,c,e,f,k,m,o,n,t,p,u,x,v){if(v.image.width!=0){if(v.needsUpdate==!0||sa[v.id]==void 0){var xa=v.wrapS==THREE.RepeatWrapping,z=v.wrapT==
+THREE.RepeatWrapping;sa[v.id]=w.createPattern(v.image,xa&&z?"repeat":xa&&!z?"repeat-x":!xa&&z?"repeat-y":"no-repeat");v.needsUpdate=!1}h(sa[v.id]);var xa=v.offset.x/v.repeat.x,z=v.offset.y/v.repeat.y,V=(v.image.width-1)*v.repeat.x,v=(v.image.height-1)*v.repeat.y,o=(o+xa)*V,n=(n+z)*v,t=(t+xa)*V,p=(p+z)*v,u=(u+xa)*V,x=(x+z)*v;e-=b;f-=c;k-=b;m-=c;t-=o;p-=n;u-=o;x-=n;xa=1/(t*x-u*p);v=(x*e-p*k)*xa;p=(x*f-p*m)*xa;e=(t*k-u*e)*xa;f=(t*m-u*f)*xa;b=b-v*o-e*n;c=c-p*o-f*n;w.save();w.transform(v,p,e,f,b,c);w.fill();
+w.restore()}}function Va(b,c,e,f,k,h,m,o,n,t,p,u,v){var x,xa;x=v.width-1;xa=v.height-1;m*=x;o*=xa;n*=x;t*=xa;p*=x;u*=xa;e-=b;f-=c;k-=b;h-=c;n-=m;t-=o;p-=m;u-=o;xa=1/(n*u-p*t);x=(u*e-t*k)*xa;t=(u*f-t*h)*xa;e=(n*k-p*e)*xa;f=(n*h-p*f)*xa;b=b-x*m-e*o;c=c-t*m-f*o;w.save();w.transform(x,t,e,f,b,c);w.clip();w.drawImage(v,0,0);w.restore()}function Ya(b,c,e,f){var k=~~(b.r*255),h=~~(b.g*255),b=~~(b.b*255),m=~~(c.r*255),o=~~(c.g*255),c=~~(c.b*255),n=~~(e.r*255),t=~~(e.g*255),e=~~(e.b*255),p=~~(f.r*255),u=~~(f.g*
+255),f=~~(f.b*255);Ca[0]=k<0?0:k>255?255:k;Ca[1]=h<0?0:h>255?255:h;Ca[2]=b<0?0:b>255?255:b;Ca[4]=m<0?0:m>255?255:m;Ca[5]=o<0?0:o>255?255:o;Ca[6]=c<0?0:c>255?255:c;Ca[8]=n<0?0:n>255?255:n;Ca[9]=t<0?0:t>255?255:t;Ca[10]=e<0?0:e>255?255:e;Ca[12]=p<0?0:p>255?255:p;Ca[13]=u<0?0:u>255?255:u;Ca[14]=f<0?0:f>255?255:f;za.putImageData(Ka,0,0);W.drawImage(Ia,0,0);return Ga}function Ra(b,c,e){b=(b-c)/(e-c);return b*b*(3-2*b)}function Wa(b){b=(b+1)*0.5;return b<0?0:b>1?1:b}function Pa(b,c){var e=c.x-b.x,f=c.y-
+b.y,k=e*e+f*f;k!=0&&(k=1/Math.sqrt(k),e*=k,f*=k,c.x+=e,c.y+=f,b.x-=e,b.y-=f)}var Za,bb,ta,Ha,Qa,Xa,$a,Aa;this.autoClear?this.clear():w.setTransform(1,0,0,-1,p,x);k.info.render.vertices=0;k.info.render.faces=0;m=n.projectScene(b,t,this.sortElements);(qa=b.lights.length>0)&&u(b);Za=0;for(bb=m.length;Za<bb;Za++){ta=m[Za];O.empty();if(ta instanceof THREE.RenderableParticle){G=ta;G.x*=p;G.y*=x;Ha=0;for(Qa=ta.materials.length;Ha<Qa;)Aa=ta.materials[Ha++],Aa.opacity!=0&&z(G,ta,Aa,b)}else if(ta instanceof
+THREE.RenderableLine){if(G=ta.v1,H=ta.v2,G.positionScreen.x*=p,G.positionScreen.y*=x,H.positionScreen.x*=p,H.positionScreen.y*=x,O.addPoint(G.positionScreen.x,G.positionScreen.y),O.addPoint(H.positionScreen.x,H.positionScreen.y),V.intersects(O)){Ha=0;for(Qa=ta.materials.length;Ha<Qa;)Aa=ta.materials[Ha++],Aa.opacity!=0&&y(G,H,ta,Aa,b)}}else if(ta instanceof THREE.RenderableFace3){if(G=ta.v1,H=ta.v2,K=ta.v3,G.positionScreen.x*=p,G.positionScreen.y*=x,H.positionScreen.x*=p,H.positionScreen.y*=x,K.positionScreen.x*=
+p,K.positionScreen.y*=x,ta.overdraw&&(Pa(G.positionScreen,H.positionScreen),Pa(H.positionScreen,K.positionScreen),Pa(K.positionScreen,G.positionScreen)),O.add3Points(G.positionScreen.x,G.positionScreen.y,H.positionScreen.x,H.positionScreen.y,K.positionScreen.x,K.positionScreen.y),V.intersects(O)){Ha=0;for(Qa=ta.meshMaterials.length;Ha<Qa;)if(Aa=ta.meshMaterials[Ha++],Aa instanceof THREE.MeshFaceMaterial){Xa=0;for($a=ta.faceMaterials.length;Xa<$a;)(Aa=ta.faceMaterials[Xa++])&&Aa.opacity!=0&&A(G,H,
+K,0,1,2,ta,Aa,b)}else Aa.opacity!=0&&A(G,H,K,0,1,2,ta,Aa,b)}}else if(ta instanceof THREE.RenderableFace4&&(G=ta.v1,H=ta.v2,K=ta.v3,Z=ta.v4,G.positionScreen.x*=p,G.positionScreen.y*=x,H.positionScreen.x*=p,H.positionScreen.y*=x,K.positionScreen.x*=p,K.positionScreen.y*=x,Z.positionScreen.x*=p,Z.positionScreen.y*=x,L.positionScreen.copy(H.positionScreen),P.positionScreen.copy(Z.positionScreen),ta.overdraw&&(Pa(G.positionScreen,H.positionScreen),Pa(H.positionScreen,Z.positionScreen),Pa(Z.positionScreen,
+G.positionScreen),Pa(K.positionScreen,L.positionScreen),Pa(K.positionScreen,P.positionScreen)),O.addPoint(G.positionScreen.x,G.positionScreen.y),O.addPoint(H.positionScreen.x,H.positionScreen.y),O.addPoint(K.positionScreen.x,K.positionScreen.y),O.addPoint(Z.positionScreen.x,Z.positionScreen.y),V.intersects(O))){Ha=0;for(Qa=ta.meshMaterials.length;Ha<Qa;)if(Aa=ta.meshMaterials[Ha++],Aa instanceof THREE.MeshFaceMaterial){Xa=0;for($a=ta.faceMaterials.length;Xa<$a;)(Aa=ta.faceMaterials[Xa++])&&Aa.opacity!=
+0&&C(G,H,K,Z,L,P,ta,Aa,b)}else Aa.opacity!=0&&C(G,H,K,Z,L,P,ta,Aa,b)}T.addRectangle(O)}w.setTransform(1,0,0,1,0,0)}};
+THREE.SVGRenderer=function(){function b(b,c,e){var f,k,h,m;f=0;for(k=b.lights.length;f<k;f++)h=b.lights[f],h instanceof THREE.DirectionalLight?(m=c.normalWorld.dot(h.position)*h.intensity,m>0&&(e.r+=h.color.r*m,e.g+=h.color.g*m,e.b+=h.color.b*m)):h instanceof THREE.PointLight&&(Z.sub(h.position,c.centroidWorld),Z.normalize(),m=c.normalWorld.dot(Z)*h.intensity,m>0&&(e.r+=h.color.r*m,e.g+=h.color.g*m,e.b+=h.color.b*m))}function c(c,e,m,o,n,p){k.info.render.vertices+=3;k.info.render.faces++;U=f(Y++);
+U.setAttribute("d","M "+c.positionScreen.x+" "+c.positionScreen.y+" L "+e.positionScreen.x+" "+e.positionScreen.y+" L "+m.positionScreen.x+","+m.positionScreen.y+"z");n instanceof THREE.MeshBasicMaterial?F.copy(n.color):n instanceof THREE.MeshLambertMaterial?D?(M.r=N.r,M.g=N.g,M.b=N.b,b(p,o,M),F.r=Math.max(0,Math.min(n.color.r*M.r,1)),F.g=Math.max(0,Math.min(n.color.g*M.g,1)),F.b=Math.max(0,Math.min(n.color.b*M.b,1))):F.copy(n.color):n instanceof THREE.MeshDepthMaterial?(K=1-n.__2near/(n.__farPlusNear-
+o.z*n.__farMinusNear),F.setRGB(K,K,K)):n instanceof THREE.MeshNormalMaterial&&F.setRGB(h(o.normalWorld.x),h(o.normalWorld.y),h(o.normalWorld.z));n.wireframe?U.setAttribute("style","fill: none; stroke: "+F.getContextStyle()+"; stroke-width: "+n.wireframeLinewidth+"; stroke-opacity: "+n.opacity+"; stroke-linecap: "+n.wireframeLinecap+"; stroke-linejoin: "+n.wireframeLinejoin):U.setAttribute("style","fill: "+F.getContextStyle()+"; fill-opacity: "+n.opacity);t.appendChild(U)}function e(c,e,m,o,n,p,u){k.info.render.vertices+=
+4;k.info.render.faces++;U=f(Y++);U.setAttribute("d","M "+c.positionScreen.x+" "+c.positionScreen.y+" L "+e.positionScreen.x+" "+e.positionScreen.y+" L "+m.positionScreen.x+","+m.positionScreen.y+" L "+o.positionScreen.x+","+o.positionScreen.y+"z");p instanceof THREE.MeshBasicMaterial?F.copy(p.color):p instanceof THREE.MeshLambertMaterial?D?(M.r=N.r,M.g=N.g,M.b=N.b,b(u,n,M),F.r=Math.max(0,Math.min(p.color.r*M.r,1)),F.g=Math.max(0,Math.min(p.color.g*M.g,1)),F.b=Math.max(0,Math.min(p.color.b*M.b,1))):
+F.copy(p.color):p instanceof THREE.MeshDepthMaterial?(K=1-p.__2near/(p.__farPlusNear-n.z*p.__farMinusNear),F.setRGB(K,K,K)):p instanceof THREE.MeshNormalMaterial&&F.setRGB(h(n.normalWorld.x),h(n.normalWorld.y),h(n.normalWorld.z));p.wireframe?U.setAttribute("style","fill: none; stroke: "+F.getContextStyle()+"; stroke-width: "+p.wireframeLinewidth+"; stroke-opacity: "+p.opacity+"; stroke-linecap: "+p.wireframeLinecap+"; stroke-linejoin: "+p.wireframeLinejoin):U.setAttribute("style","fill: "+F.getContextStyle()+
+"; fill-opacity: "+p.opacity);t.appendChild(U)}function f(b){L[b]==null&&(L[b]=document.createElementNS("http://www.w3.org/2000/svg","path"),o==0&&L[b].setAttribute("shape-rendering","crispEdges"));return L[b]}function h(b){b=(b+1)*0.5;return b<0?0:b>1?1:b}var k=this,m=null,n=new THREE.Projector,t=document.createElementNS("http://www.w3.org/2000/svg","svg"),u,v,p,x,w,A,z,y,C=new THREE.Rectangle,E=new THREE.Rectangle,D=!1,F=new THREE.Color(16777215),M=new THREE.Color(16777215),N=new THREE.Color(0),
+G=new THREE.Color(0),H=new THREE.Color(0),K,Z=new THREE.Vector3,L=[],P=[],U,Y,X,o=1;this.domElement=t;this.sortElements=this.sortObjects=this.autoClear=!0;this.info={render:{vertices:0,faces:0}};this.setQuality=function(b){switch(b){case "high":o=1;break;case "low":o=0}};this.setSize=function(b,c){u=b;v=c;p=u/2;x=v/2;t.setAttribute("viewBox",-p+" "+-x+" "+u+" "+v);t.setAttribute("width",u);t.setAttribute("height",v);C.set(-p,-x,p,x)};this.clear=function(){for(;t.childNodes.length>0;)t.removeChild(t.childNodes[0])};
+this.render=function(b,f){var h,u,v,F,L,M,K,ca;this.autoClear&&this.clear();k.info.render.vertices=0;k.info.render.faces=0;m=n.projectScene(b,f,this.sortElements);X=Y=0;if(D=b.lights.length>0){K=b.lights;N.setRGB(0,0,0);G.setRGB(0,0,0);H.setRGB(0,0,0);h=0;for(u=K.length;h<u;h++)v=K[h],F=v.color,v instanceof THREE.AmbientLight?(N.r+=F.r,N.g+=F.g,N.b+=F.b):v instanceof THREE.DirectionalLight?(G.r+=F.r,G.g+=F.g,G.b+=F.b):v instanceof THREE.PointLight&&(H.r+=F.r,H.g+=F.g,H.b+=F.b)}h=0;for(u=m.length;h<
+u;h++)if(K=m[h],E.empty(),K instanceof THREE.RenderableParticle){w=K;w.x*=p;w.y*=-x;v=0;for(F=K.materials.length;v<F;)v++}else if(K instanceof THREE.RenderableLine){if(w=K.v1,A=K.v2,w.positionScreen.x*=p,w.positionScreen.y*=-x,A.positionScreen.x*=p,A.positionScreen.y*=-x,E.addPoint(w.positionScreen.x,w.positionScreen.y),E.addPoint(A.positionScreen.x,A.positionScreen.y),C.intersects(E)){v=0;for(F=K.materials.length;v<F;)if((ca=K.materials[v++])&&ca.opacity!=0){L=w;M=A;var aa=X++;P[aa]==null&&(P[aa]=
+document.createElementNS("http://www.w3.org/2000/svg","line"),o==0&&P[aa].setAttribute("shape-rendering","crispEdges"));U=P[aa];U.setAttribute("x1",L.positionScreen.x);U.setAttribute("y1",L.positionScreen.y);U.setAttribute("x2",M.positionScreen.x);U.setAttribute("y2",M.positionScreen.y);ca instanceof THREE.LineBasicMaterial&&(U.setAttribute("style","fill: none; stroke: "+ca.color.getContextStyle()+"; stroke-width: "+ca.linewidth+"; stroke-opacity: "+ca.opacity+"; stroke-linecap: "+ca.linecap+"; stroke-linejoin: "+
+ca.linejoin),t.appendChild(U))}}}else if(K instanceof THREE.RenderableFace3){if(w=K.v1,A=K.v2,z=K.v3,w.positionScreen.x*=p,w.positionScreen.y*=-x,A.positionScreen.x*=p,A.positionScreen.y*=-x,z.positionScreen.x*=p,z.positionScreen.y*=-x,E.addPoint(w.positionScreen.x,w.positionScreen.y),E.addPoint(A.positionScreen.x,A.positionScreen.y),E.addPoint(z.positionScreen.x,z.positionScreen.y),C.intersects(E)){v=0;for(F=K.meshMaterials.length;v<F;)if(ca=K.meshMaterials[v++],ca instanceof THREE.MeshFaceMaterial){L=
+0;for(M=K.faceMaterials.length;L<M;)(ca=K.faceMaterials[L++])&&ca.opacity!=0&&c(w,A,z,K,ca,b)}else ca&&ca.opacity!=0&&c(w,A,z,K,ca,b)}}else if(K instanceof THREE.RenderableFace4&&(w=K.v1,A=K.v2,z=K.v3,y=K.v4,w.positionScreen.x*=p,w.positionScreen.y*=-x,A.positionScreen.x*=p,A.positionScreen.y*=-x,z.positionScreen.x*=p,z.positionScreen.y*=-x,y.positionScreen.x*=p,y.positionScreen.y*=-x,E.addPoint(w.positionScreen.x,w.positionScreen.y),E.addPoint(A.positionScreen.x,A.positionScreen.y),E.addPoint(z.positionScreen.x,
+z.positionScreen.y),E.addPoint(y.positionScreen.x,y.positionScreen.y),C.intersects(E))){v=0;for(F=K.meshMaterials.length;v<F;)if(ca=K.meshMaterials[v++],ca instanceof THREE.MeshFaceMaterial){L=0;for(M=K.faceMaterials.length;L<M;)(ca=K.faceMaterials[L++])&&ca.opacity!=0&&e(w,A,z,y,K,ca,b)}else ca&&ca.opacity!=0&&e(w,A,z,y,K,ca,b)}}};
+THREE.ShaderChunk={fog_pars_fragment:"#ifdef USE_FOG\nuniform vec3 fogColor;\n#ifdef FOG_EXP2\nuniform float fogDensity;\n#else\nuniform float fogNear;\nuniform float fogFar;\n#endif\n#endif",fog_fragment:"#ifdef USE_FOG\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n#ifdef FOG_EXP2\nconst float LOG2 = 1.442695;\nfloat fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n#else\nfloat fogFactor = smoothstep( fogNear, fogFar, depth );\n#endif\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n#endif",
+envmap_pars_fragment:"#ifdef USE_ENVMAP\nvarying vec3 vReflect;\nuniform float reflectivity;\nuniform samplerCube envMap;\nuniform int combine;\n#endif",envmap_fragment:"#ifdef USE_ENVMAP\nvec4 cubeColor = textureCube( envMap, vec3( -vReflect.x, vReflect.yz ) );\nif ( combine == 1 ) {\ngl_FragColor = vec4( mix( gl_FragColor.xyz, cubeColor.xyz, reflectivity ), opacity );\n} else {\ngl_FragColor = gl_FragColor * cubeColor;\n}\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\nvarying vec3 vReflect;\nuniform float refractionRatio;\nuniform bool useRefract;\n#endif",
+envmap_vertex:"#ifdef USE_ENVMAP\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\nvec3 nWorld = mat3( objectMatrix[ 0 ].xyz, objectMatrix[ 1 ].xyz, objectMatrix[ 2 ].xyz ) * normal;\nif ( useRefract ) {\nvReflect = refract( normalize( mPosition.xyz - cameraPosition ), normalize( nWorld.xyz ), refractionRatio );\n} else {\nvReflect = reflect( normalize( mPosition.xyz - cameraPosition ), normalize( nWorld.xyz ) );\n}\n#endif",map_particle_pars_fragment:"#ifdef USE_MAP\nuniform sampler2D map;\n#endif",
+map_particle_fragment:"#ifdef USE_MAP\ngl_FragColor = gl_FragColor * texture2D( map, gl_PointCoord );\n#endif",map_pars_vertex:"#ifdef USE_MAP\nvarying vec2 vUv;\nuniform vec4 offsetRepeat;\n#endif",map_pars_fragment:"#ifdef USE_MAP\nvarying vec2 vUv;\nuniform sampler2D map;\n#endif",map_vertex:"#ifdef USE_MAP\nvUv = uv * offsetRepeat.zw + offsetRepeat.xy;\n#endif",map_fragment:"#ifdef USE_MAP\ngl_FragColor = gl_FragColor * texture2D( map, vUv );\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\nvarying vec2 vUv2;\nuniform sampler2D lightMap;\n#endif",
+lightmap_pars_vertex:"#ifdef USE_LIGHTMAP\nvarying vec2 vUv2;\n#endif",lightmap_fragment:"#ifdef USE_LIGHTMAP\ngl_FragColor = gl_FragColor * texture2D( lightMap, vUv2 );\n#endif",lightmap_vertex:"#ifdef USE_LIGHTMAP\nvUv2 = uv2;\n#endif",lights_pars_vertex:"uniform bool enableLighting;\nuniform vec3 ambientLightColor;\n#if MAX_DIR_LIGHTS > 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\n#endif",
+lights_vertex:"if ( !enableLighting ) {\nvLightWeighting = vec3( 1.0 );\n} else {\nvLightWeighting = ambientLightColor;\n#if MAX_DIR_LIGHTS > 0\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\nvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\nfloat directionalLightWeighting = max( dot( transformedNormal, normalize( lDirection.xyz ) ), 0.0 );\nvLightWeighting += directionalLightColor[ i ] * directionalLightWeighting;\n}\n#endif\n#if MAX_POINT_LIGHTS > 0\nfor( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\nvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\nvec3 lVector = lPosition.xyz - mvPosition.xyz;\nfloat lDistance = 1.0;\nif ( pointLightDistance[ i ] > 0.0 )\nlDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\nlVector = normalize( lVector );\nfloat pointLightWeighting = max( dot( transformedNormal, lVector ), 0.0 );\nvLightWeighting += pointLightColor[ i ] * pointLightWeighting * lDistance;\n}\n#endif\n}",
+lights_phong_pars_vertex:"#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\nvarying vec4 vPointLight[ MAX_POINT_LIGHTS ];\n#endif",lights_phong_vertex:"#if MAX_POINT_LIGHTS > 0\nfor( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\nvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\nvec3 lVector = lPosition.xyz - mvPosition.xyz;\nfloat lDistance = 1.0;\nif ( pointLightDistance[ i ] > 0.0 )\nlDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\nlVector = normalize( lVector );\nvPointLight[ i ] = vec4( lVector, lDistance );\n}\n#endif",
+lights_pars_fragment:"uniform vec3 ambientLightColor;\n#if MAX_DIR_LIGHTS > 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\nvarying vec4 vPointLight[ MAX_POINT_LIGHTS ];\n#endif\nvarying vec3 vViewPosition;\nvarying vec3 vNormal;",lights_fragment:"vec3 normal = normalize( vNormal );\nvec3 viewPosition = normalize( vViewPosition );\n#if MAX_POINT_LIGHTS > 0\nvec3 pointDiffuse = vec3( 0.0 );\nvec3 pointSpecular = vec3( 0.0 );\nfor ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\nvec3 pointVector = normalize( vPointLight[ i ].xyz );\nvec3 pointHalfVector = normalize( vPointLight[ i ].xyz + viewPosition );\nfloat pointDistance = vPointLight[ i ].w;\nfloat pointDotNormalHalf = dot( normal, pointHalfVector );\nfloat pointDiffuseWeight = max( dot( normal, pointVector ), 0.0 );\nfloat pointSpecularWeight = 0.0;\nif ( pointDotNormalHalf >= 0.0 )\npointSpecularWeight = pow( pointDotNormalHalf, shininess );\npointDiffuse += diffuse * pointLightColor[ i ] * pointDiffuseWeight * pointDistance;\npointSpecular += specular * pointLightColor[ i ] * pointSpecularWeight * pointDistance;\n}\n#endif\n#if MAX_DIR_LIGHTS > 0\nvec3 dirDiffuse = vec3( 0.0 );\nvec3 dirSpecular = vec3( 0.0 );\nfor( int i = 0; i < MAX_DIR_LIGHTS; i ++ ) {\nvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\nvec3 dirVector = normalize( lDirection.xyz );\nvec3 dirHalfVector = normalize( lDirection.xyz + viewPosition );\nfloat dirDotNormalHalf = dot( normal, dirHalfVector );\nfloat dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );\nfloat dirSpecularWeight = 0.0;\nif ( dirDotNormalHalf >= 0.0 )\ndirSpecularWeight = pow( dirDotNormalHalf, shininess );\ndirDiffuse += diffuse * directionalLightColor[ i ] * dirDiffuseWeight;\ndirSpecular += specular * directionalLightColor[ i ] * dirSpecularWeight;\n}\n#endif\nvec3 totalDiffuse = vec3( 0.0 );\nvec3 totalSpecular = vec3( 0.0 );\n#if MAX_DIR_LIGHTS > 0\ntotalDiffuse += dirDiffuse;\ntotalSpecular += dirSpecular;\n#endif\n#if MAX_POINT_LIGHTS > 0\ntotalDiffuse += pointDiffuse;\ntotalSpecular += pointSpecular;\n#endif\ngl_FragColor.xyz = gl_FragColor.xyz * totalDiffuse + totalSpecular + ambientLightColor * ambient;",
+color_pars_fragment:"#ifdef USE_COLOR\nvarying vec3 vColor;\n#endif",color_fragment:"#ifdef USE_COLOR\ngl_FragColor = gl_FragColor * vec4( vColor, opacity );\n#endif",color_pars_vertex:"#ifdef USE_COLOR\nvarying vec3 vColor;\n#endif",color_vertex:"#ifdef USE_COLOR\nvColor = color;\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\nuniform mat4 boneGlobalMatrices[ MAX_BONES ];\n#endif",skinning_vertex:"#ifdef USE_SKINNING\ngl_Position = ( boneGlobalMatrices[ int( skinIndex.x ) ] * skinVertexA ) * skinWeight.x;\ngl_Position += ( boneGlobalMatrices[ int( skinIndex.y ) ] * skinVertexB ) * skinWeight.y;\ngl_Position = projectionMatrix * viewMatrix * objectMatrix * gl_Position;\n#endif",
+morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\nuniform float morphTargetInfluences[ 8 ];\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\nvec3 morphed = vec3( 0.0, 0.0, 0.0 );\nmorphed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\nmorphed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\nmorphed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\nmorphed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\nmorphed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\nmorphed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\nmorphed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\nmorphed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\nmorphed += position;\ngl_Position = projectionMatrix * modelViewMatrix * vec4( morphed, 1.0 );\n#endif",
+default_vertex:"#ifndef USE_MORPHTARGETS\n#ifndef USE_SKINNING\ngl_Position = projectionMatrix * mvPosition;\n#endif\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\nuniform sampler2D shadowMap[ MAX_SHADOWS ];\nuniform float shadowDarkness;\nuniform float shadowBias;\nvarying vec4 vShadowCoord[ MAX_SHADOWS ];\nfloat unpackDepth( const in vec4 rgba_depth ) {\nconst vec4 bit_shift = vec4( 1.0 / ( 256.0 * 256.0 * 256.0 ), 1.0 / ( 256.0 * 256.0 ), 1.0 / 256.0, 1.0 );\nfloat depth = dot( rgba_depth, bit_shift );\nreturn depth;\n}\n#endif",
+shadowmap_fragment:"#ifdef USE_SHADOWMAP\n#ifdef SHADOWMAP_SOFT\nconst float xPixelOffset = 1.0 / SHADOWMAP_WIDTH;\nconst float yPixelOffset = 1.0 / SHADOWMAP_HEIGHT;\n#endif\nvec4 shadowColor = vec4( 1.0 );\nfor( int i = 0; i < MAX_SHADOWS; i ++ ) {\nvec3 shadowCoord = vShadowCoord[ i ].xyz / vShadowCoord[ i ].w;\nshadowCoord.z += shadowBias;\nif ( shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0 ) {\n#ifdef SHADOWMAP_SOFT\nfloat shadow = 0.0;\nfor ( float y = -1.25; y <= 1.25; y += 1.25 )\nfor ( float x = -1.25; x <= 1.25; x += 1.25 ) {\nvec4 rgbaDepth = texture2D( shadowMap[ i ], vec2( x * xPixelOffset, y * yPixelOffset ) + shadowCoord.xy );\nfloat fDepth = unpackDepth( rgbaDepth );\nif ( fDepth < shadowCoord.z )\nshadow += 1.0;\n}\nshadow /= 9.0;\nshadowColor = shadowColor * vec4( vec3( ( 1.0 - shadowDarkness * shadow ) ), 1.0 );\n#else\nvec4 rgbaDepth = texture2D( shadowMap[ i ], shadowCoord.xy );\nfloat fDepth = unpackDepth( rgbaDepth );\nif ( fDepth < shadowCoord.z )\nshadowColor = shadowColor * vec4( vec3( shadowDarkness ), 1.0 );\n#endif\n}\n}\ngl_FragColor = gl_FragColor * shadowColor;\n#endif",
+shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\nvarying vec4 vShadowCoord[ MAX_SHADOWS ];\nuniform mat4 shadowMatrix[ MAX_SHADOWS ];\n#endif",shadowmap_vertex:"#ifdef USE_SHADOWMAP\nfor( int i = 0; i < MAX_SHADOWS; i ++ ) {\nvShadowCoord[ i ] = shadowMatrix[ i ] * objectMatrix * vec4( position, 1.0 );\n}\n#endif",alphatest_fragment:"#ifdef ALPHATEST\nif ( gl_FragColor.a < ALPHATEST ) discard;\n#endif"};
+THREE.UniformsUtils={merge:function(b){var c,e,f,h={};for(c=0;c<b.length;c++)for(e in f=this.clone(b[c]),f)h[e]=f[e];return h},clone:function(b){var c,e,f,h={};for(c in b)for(e in h[c]={},b[c])f=b[c][e],h[c][e]=f instanceof THREE.Color||f instanceof THREE.Vector2||f instanceof THREE.Vector3||f instanceof THREE.Vector4||f instanceof THREE.Matrix4||f instanceof THREE.Texture?f.clone():f instanceof Array?f.slice():f;return h}};
+THREE.UniformsLib={common:{diffuse:{type:"c",value:new THREE.Color(15658734)},opacity:{type:"f",value:1},map:{type:"t",value:0,texture:null},offsetRepeat:{type:"v4",value:new THREE.Vector4(0,0,1,1)},lightMap:{type:"t",value:2,texture:null},envMap:{type:"t",value:1,texture:null},useRefract:{type:"i",value:0},reflectivity:{type:"f",value:1},refractionRatio:{type:"f",value:0.98},combine:{type:"i",value:0},morphTargetInfluences:{type:"f",value:0}},fog:{fogDensity:{type:"f",value:2.5E-4},fogNear:{type:"f",
+value:1},fogFar:{type:"f",value:2E3},fogColor:{type:"c",value:new THREE.Color(16777215)}},lights:{enableLighting:{type:"i",value:1},ambientLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]},directionalLightColor:{type:"fv",value:[]},pointLightColor:{type:"fv",value:[]},pointLightPosition:{type:"fv",value:[]},pointLightDistance:{type:"fv1",value:[]}},particle:{psColor:{type:"c",value:new THREE.Color(15658734)},opacity:{type:"f",value:1},size:{type:"f",value:1},scale:{type:"f",
+value:1},map:{type:"t",value:0,texture:null},fogDensity:{type:"f",value:2.5E-4},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3},fogColor:{type:"c",value:new THREE.Color(16777215)}},shadowmap:{shadowMap:{type:"tv",value:6,texture:[]},shadowMatrix:{type:"m4v",value:[]},shadowBias:{type:"f",value:0.0039},shadowDarkness:{type:"f",value:0.2}}};
+THREE.ShaderLib={sprite:{vertexShader:"uniform int useScreenCoordinates;\nuniform int affectedByDistance;\nuniform vec3 screenPosition;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform float rotation;\nuniform vec2 scale;\nuniform vec2 alignment;\nuniform vec2 uvOffset;\nuniform vec2 uvScale;\nattribute vec2 position;\nattribute vec2 uv;\nvarying vec2 vUV;\nvoid main() {\nvUV = uvOffset + uv * uvScale;\nvec2 alignedPosition = position + alignment;\nvec2 rotatedPosition;\nrotatedPosition.x = ( cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y ) * scale.x;\nrotatedPosition.y = ( sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y ) * scale.y;\nvec4 finalPosition;\nif( useScreenCoordinates != 0 ) {\nfinalPosition = vec4( screenPosition.xy + rotatedPosition, screenPosition.z, 1.0 );\n} else {\nfinalPosition = projectionMatrix * modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\nfinalPosition.xy += rotatedPosition * ( affectedByDistance == 1 ? 1.0 : finalPosition.z );\n}\ngl_Position = finalPosition;\n}",fragmentShader:"#ifdef GL_ES\nprecision highp float;\n#endif\nuniform vec3 color;\nuniform sampler2D map;\nuniform float opacity;\nvarying vec2 vUV;\nvoid main() {\nvec4 texture = texture2D( map, vUV );\ngl_FragColor = vec4( color * texture.xyz, texture.a * opacity );\n}"},
+depth:{uniforms:{mNear:{type:"f",value:1},mFar:{type:"f",value:2E3},opacity:{type:"f",value:1}},vertexShader:"void main() {\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",fragmentShader:"uniform float mNear;\nuniform float mFar;\nuniform float opacity;\nvoid main() {\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\nfloat color = 1.0 - smoothstep( mNear, mFar, depth );\ngl_FragColor = vec4( vec3( color ), opacity );\n}"},normal:{uniforms:{opacity:{type:"f",value:1}},
+vertexShader:"varying vec3 vNormal;\nvoid main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\nvNormal = normalize( normalMatrix * normal );\ngl_Position = projectionMatrix * mvPosition;\n}",fragmentShader:"uniform float opacity;\nvarying vec3 vNormal;\nvoid main() {\ngl_FragColor = vec4( 0.5 * normalize( vNormal ) + 0.5, opacity );\n}"},basic:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.fog,THREE.UniformsLib.shadowmap]),vertexShader:[THREE.ShaderChunk.map_pars_vertex,
+THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,"void main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",THREE.ShaderChunk.map_vertex,THREE.ShaderChunk.lightmap_vertex,THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.color_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.morphtarget_vertex,
+THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["uniform vec3 diffuse;\nuniform float opacity;",THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_pars_fragment,THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,"void main() {\ngl_FragColor = vec4( diffuse, opacity );",THREE.ShaderChunk.map_fragment,THREE.ShaderChunk.alphatest_fragment,
+THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.envmap_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},lambert:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.fog,THREE.UniformsLib.lights,THREE.UniformsLib.shadowmap]),vertexShader:["varying vec3 vLightWeighting;",THREE.ShaderChunk.map_pars_vertex,THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,THREE.ShaderChunk.lights_pars_vertex,
+THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,"void main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",THREE.ShaderChunk.map_vertex,THREE.ShaderChunk.lightmap_vertex,THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.color_vertex,"vec3 transformedNormal = normalize( normalMatrix * normal );",THREE.ShaderChunk.lights_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.morphtarget_vertex,
+THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["uniform vec3 diffuse;\nuniform float opacity;\nvarying vec3 vLightWeighting;",THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_pars_fragment,THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,"void main() {\ngl_FragColor = vec4( diffuse, opacity );",THREE.ShaderChunk.map_fragment,THREE.ShaderChunk.alphatest_fragment,
+"gl_FragColor = gl_FragColor * vec4( vLightWeighting, 1.0 );",THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.envmap_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},phong:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.common,THREE.UniformsLib.fog,THREE.UniformsLib.lights,THREE.UniformsLib.shadowmap,{ambient:{type:"c",value:new THREE.Color(328965)},specular:{type:"c",value:new THREE.Color(1118481)},shininess:{type:"f",
+value:30}}]),vertexShader:["varying vec3 vViewPosition;\nvarying vec3 vNormal;",THREE.ShaderChunk.map_pars_vertex,THREE.ShaderChunk.lightmap_pars_vertex,THREE.ShaderChunk.envmap_pars_vertex,THREE.ShaderChunk.lights_phong_pars_vertex,THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,"void main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",THREE.ShaderChunk.map_vertex,THREE.ShaderChunk.lightmap_vertex,
+THREE.ShaderChunk.envmap_vertex,THREE.ShaderChunk.color_vertex,"#ifndef USE_ENVMAP\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\n#endif\nvViewPosition = -mvPosition.xyz;\nvec3 transformedNormal = normalize( normalMatrix * normal );\nvNormal = transformedNormal;",THREE.ShaderChunk.lights_phong_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["uniform vec3 diffuse;\nuniform float opacity;\nuniform vec3 ambient;\nuniform vec3 specular;\nuniform float shininess;",
+THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_pars_fragment,THREE.ShaderChunk.lightmap_pars_fragment,THREE.ShaderChunk.envmap_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.lights_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,"void main() {\ngl_FragColor = vec4( vec3 ( 1.0 ), opacity );",THREE.ShaderChunk.map_fragment,THREE.ShaderChunk.alphatest_fragment,THREE.ShaderChunk.lights_fragment,THREE.ShaderChunk.lightmap_fragment,THREE.ShaderChunk.color_fragment,
+THREE.ShaderChunk.envmap_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n")},particle_basic:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.particle,THREE.UniformsLib.shadowmap]),vertexShader:["uniform float size;\nuniform float scale;",THREE.ShaderChunk.color_pars_vertex,THREE.ShaderChunk.shadowmap_pars_vertex,"void main() {",THREE.ShaderChunk.color_vertex,"vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n#ifdef USE_SIZEATTENUATION\ngl_PointSize = size * ( scale / length( mvPosition.xyz ) );\n#else\ngl_PointSize = size;\n#endif\ngl_Position = projectionMatrix * mvPosition;",
+THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n"),fragmentShader:["uniform vec3 psColor;\nuniform float opacity;",THREE.ShaderChunk.color_pars_fragment,THREE.ShaderChunk.map_particle_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,THREE.ShaderChunk.shadowmap_pars_fragment,"void main() {\ngl_FragColor = vec4( psColor, opacity );",THREE.ShaderChunk.map_particle_fragment,THREE.ShaderChunk.alphatest_fragment,THREE.ShaderChunk.color_fragment,THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.fog_fragment,
+"}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[THREE.ShaderChunk.morphtarget_pars_vertex,"void main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.default_vertex,"}"].join("\n"),fragmentShader:"vec4 pack_depth( const in float depth ) {\nconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\nconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\nvec4 res = fract( depth * bit_shift );\nres -= res.xxyz * bit_mask;\nreturn res;\n}\nvoid main() {\ngl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n}"}};
+THREE.WebGLRenderer=function(b){function c(b,c,e){var f,k,h,m=b.vertices,n=m.length,t=b.colors,p=t.length,u=b.__vertexArray,w=b.__colorArray,v=b.__sortArray,x=b.__dirtyVertices,z=b.__dirtyColors,V=b.__webglCustomAttributes,y,A;if(V)for(y in V)V[y].offset=0;if(e.sortParticles){ua.multiplySelf(e.matrixWorld);for(f=0;f<n;f++)k=m[f].position,Da.copy(k),ua.multiplyVector3(Da),v[f]=[Da.z,f];v.sort(function(b,c){return c[0]-b[0]});for(f=0;f<n;f++)k=m[v[f][1]].position,h=f*3,u[h]=k.x,u[h+1]=k.y,u[h+2]=k.z;
+for(f=0;f<p;f++)h=f*3,color=t[v[f][1]],w[h]=color.r,w[h+1]=color.g,w[h+2]=color.b;if(V)for(y in V){f=V[y];t=f.value.length;for(h=0;h<t;h++){index=v[h][1];p=f.offset;if(f.size===1){if(f.boundTo===void 0||f.boundTo==="vertices")f.array[p]=f.value[index]}else{if(f.boundTo===void 0||f.boundTo==="vertices")A=f.value[index];f.size===2?(f.array[p]=A.x,f.array[p+1]=A.y):f.size===3?f.type==="c"?(f.array[p]=A.r,f.array[p+1]=A.g,f.array[p+2]=A.b):(f.array[p]=A.x,f.array[p+1]=A.y,f.array[p+2]=A.z):(f.array[p]=
+A.x,f.array[p+1]=A.y,f.array[p+2]=A.z,f.array[p+3]=A.w)}f.offset+=f.size}}}else{if(x)for(f=0;f<n;f++)k=m[f].position,h=f*3,u[h]=k.x,u[h+1]=k.y,u[h+2]=k.z;if(z)for(f=0;f<p;f++)color=t[f],h=f*3,w[h]=color.r,w[h+1]=color.g,w[h+2]=color.b;if(V)for(y in V)if(f=V[y],f.__original.needsUpdate){t=f.value.length;for(h=0;h<t;h++){p=f.offset;if(f.size===1){if(f.boundTo===void 0||f.boundTo==="vertices")f.array[p]=f.value[h]}else{if(f.boundTo===void 0||f.boundTo==="vertices")A=f.value[h];f.size===2?(f.array[p]=
+A.x,f.array[p+1]=A.y):f.size===3?f.type==="c"?(f.array[p]=A.r,f.array[p+1]=A.g,f.array[p+2]=A.b):(f.array[p]=A.x,f.array[p+1]=A.y,f.array[p+2]=A.z):(f.array[p]=A.x,f.array[p+1]=A.y,f.array[p+2]=A.z,f.array[p+3]=A.w)}f.offset+=f.size}}}if(x||e.sortParticles)o.bindBuffer(o.ARRAY_BUFFER,b.__webglVertexBuffer),o.bufferData(o.ARRAY_BUFFER,u,c);if(z||e.sortParticles)o.bindBuffer(o.ARRAY_BUFFER,b.__webglColorBuffer),o.bufferData(o.ARRAY_BUFFER,w,c);if(V)for(y in V)if(f=V[y],f.__original.needsUpdate||e.sortParticles)o.bindBuffer(o.ARRAY_BUFFER,
+f.buffer),o.bufferData(o.ARRAY_BUFFER,f.array,c)}function e(b,c,e,f,k){f.program||X.initMaterial(f,c,e,k);if(f.morphTargets&&!k.__webglMorphTargetInfluences){k.__webglMorphTargetInfluences=new Float32Array(X.maxMorphTargets);for(var h=0,m=X.maxMorphTargets;h<m;h++)k.__webglMorphTargetInfluences[h]=0}var n=!1,h=f.program,m=h.uniforms,p=f.uniforms;h!=R&&(o.useProgram(h),R=h,n=!0);if(f.id!=fa)fa=f.id,n=!0;if(n){o.uniformMatrix4fv(m.projectionMatrix,!1,Ea);if(e&&f.fog)if(p.fogColor.value=e.color,e instanceof
+THREE.Fog)p.fogNear.value=e.near,p.fogFar.value=e.far;else if(e instanceof THREE.FogExp2)p.fogDensity.value=e.density;if(f instanceof THREE.MeshPhongMaterial||f instanceof THREE.MeshLambertMaterial||f.lights){for(var t,u,w=0,v=0,x=0,z,A,y,O=Fa,T=O.directional.colors,E=O.directional.positions,C=O.point.colors,D=O.point.positions,F=O.point.distances,J=0,qa=0,e=t=y=0,n=c.length;e<n;e++)if(t=c[e],u=t.color,z=t.position,A=t.intensity,y=t.distance,t instanceof THREE.AmbientLight)w+=u.r,v+=u.g,x+=u.b;else if(t instanceof
+THREE.DirectionalLight)y=J*3,T[y]=u.r*A,T[y+1]=u.g*A,T[y+2]=u.b*A,E[y]=z.x,E[y+1]=z.y,E[y+2]=z.z,J+=1;else if(t instanceof THREE.SpotLight)y=J*3,T[y]=u.r*A,T[y+1]=u.g*A,T[y+2]=u.b*A,u=1/z.length(),E[y]=z.x*u,E[y+1]=z.y*u,E[y+2]=z.z*u,J+=1;else if(t instanceof THREE.PointLight)t=qa*3,C[t]=u.r*A,C[t+1]=u.g*A,C[t+2]=u.b*A,D[t]=z.x,D[t+1]=z.y,D[t+2]=z.z,F[qa]=y,qa+=1;e=J*3;for(n=T.length;e<n;e++)T[e]=0;e=qa*3;for(n=C.length;e<n;e++)C[e]=0;O.point.length=qa;O.directional.length=J;O.ambient[0]=w;O.ambient[1]=
+v;O.ambient[2]=x;c=Fa;p.enableLighting.value=c.directional.length+c.point.length;p.ambientLightColor.value=c.ambient;p.directionalLightColor.value=c.directional.colors;p.directionalLightDirection.value=c.directional.positions;p.pointLightColor.value=c.point.colors;p.pointLightPosition.value=c.point.positions;p.pointLightDistance.value=c.point.distances}if(f instanceof THREE.MeshBasicMaterial||f instanceof THREE.MeshLambertMaterial||f instanceof THREE.MeshPhongMaterial)p.diffuse.value=f.color,p.opacity.value=
+f.opacity,(p.map.texture=f.map)&&p.offsetRepeat.value.set(f.map.offset.x,f.map.offset.y,f.map.repeat.x,f.map.repeat.y),p.lightMap.texture=f.lightMap,p.envMap.texture=f.envMap,p.reflectivity.value=f.reflectivity,p.refractionRatio.value=f.refractionRatio,p.combine.value=f.combine,p.useRefract.value=f.envMap&&f.envMap.mapping instanceof THREE.CubeRefractionMapping;if(f instanceof THREE.LineBasicMaterial)p.diffuse.value=f.color,p.opacity.value=f.opacity;else if(f instanceof THREE.ParticleBasicMaterial)p.psColor.value=
+f.color,p.opacity.value=f.opacity,p.size.value=f.size,p.scale.value=V.height/2,p.map.texture=f.map;else if(f instanceof THREE.MeshPhongMaterial)p.ambient.value=f.ambient,p.specular.value=f.specular,p.shininess.value=f.shininess;else if(f instanceof THREE.MeshDepthMaterial)p.mNear.value=b.near,p.mFar.value=b.far,p.opacity.value=f.opacity;else if(f instanceof THREE.MeshNormalMaterial)p.opacity.value=f.opacity;if(k.receiveShadow&&!f._shadowPass&&p.shadowMatrix){for(c=0;c<oa.length;c++)p.shadowMatrix.value[c]=
+oa[c],p.shadowMap.texture[c]=X.shadowMap[c];p.shadowDarkness.value=X.shadowMapDarkness;p.shadowBias.value=X.shadowMapBias}c=f.uniformsList;p=0;for(e=c.length;p<e;p++)if(v=h.uniforms[c[p][1]])if(w=c[p][0],x=w.type,n=w.value,x=="i")o.uniform1i(v,n);else if(x=="f")o.uniform1f(v,n);else if(x=="v2")o.uniform2f(v,n.x,n.y);else if(x=="v3")o.uniform3f(v,n.x,n.y,n.z);else if(x=="v4")o.uniform4f(v,n.x,n.y,n.z,n.w);else if(x=="c")o.uniform3f(v,n.r,n.g,n.b);else if(x=="fv1")o.uniform1fv(v,n);else if(x=="fv")o.uniform3fv(v,
+n);else if(x=="v3v"){if(!w._array)w._array=new Float32Array(3*n.length);x=0;for(z=n.length;x<z;x++)O=x*3,w._array[O]=n[x].x,w._array[O+1]=n[x].y,w._array[O+2]=n[x].z;o.uniform3fv(v,w._array)}else if(x=="m4"){if(!w._array)w._array=new Float32Array(16);n.flattenToArray(w._array);o.uniformMatrix4fv(v,!1,w._array)}else if(x=="m4v"){if(!w._array)w._array=new Float32Array(16*n.length);x=0;for(z=n.length;x<z;x++)n[x].flattenToArrayOffset(w._array,x*16);o.uniformMatrix4fv(v,!1,w._array)}else if(x=="t"){if(o.uniform1i(v,
+n),v=w.texture)if(v.image instanceof Array&&v.image.length==6){if(w=v,w.image.length==6)if(w.needsUpdate){if(!w.image.__webglTextureCube)w.image.__webglTextureCube=o.createTexture();o.activeTexture(o.TEXTURE0+n);o.bindTexture(o.TEXTURE_CUBE_MAP,w.image.__webglTextureCube);for(n=0;n<6;n++)o.texImage2D(o.TEXTURE_CUBE_MAP_POSITIVE_X+n,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,w.image[n]);H(o.TEXTURE_CUBE_MAP,w,w.image[0]);w.needsUpdate=!1}else o.activeTexture(o.TEXTURE0+n),o.bindTexture(o.TEXTURE_CUBE_MAP,w.image.__webglTextureCube)}else v instanceof
+THREE.WebGLRenderTargetCube?(w=v,o.activeTexture(o.TEXTURE0+n),o.bindTexture(o.TEXTURE_CUBE_MAP,w.__webglTexture)):K(v,n)}else if(x=="tv"){if(!w._array){w._array=[];x=0;for(z=w.texture.length;x<z;x++)w._array[x]=n+x}o.uniform1iv(v,w._array);x=0;for(z=w.texture.length;x<z;x++)(v=w.texture[x])&&K(v,w._array[x])}(f instanceof THREE.ShaderMaterial||f instanceof THREE.MeshPhongMaterial||f.envMap)&&m.cameraPosition!==null&&o.uniform3f(m.cameraPosition,b.position.x,b.position.y,b.position.z);(f instanceof
+THREE.MeshPhongMaterial||f instanceof THREE.MeshLambertMaterial||f instanceof THREE.ShaderMaterial||f.skinning)&&m.viewMatrix!==null&&o.uniformMatrix4fv(m.viewMatrix,!1,Ba);f.skinning&&(o.uniformMatrix4fv(m.cameraInverseMatrix,!1,Ba),o.uniformMatrix4fv(m.boneGlobalMatrices,!1,k.boneMatrices))}o.uniformMatrix4fv(m.modelViewMatrix,!1,k._modelViewMatrixArray);m.normalMatrix&&o.uniformMatrix3fv(m.normalMatrix,!1,k._normalMatrixArray);(f instanceof THREE.ShaderMaterial||f.envMap||f.skinning||k.receiveShadow)&&
+m.objectMatrix!==null&&o.uniformMatrix4fv(m.objectMatrix,!1,k._objectMatrixArray);return h}function f(b,c,f,k,h,m){if(k.opacity!=0){var n,f=e(b,c,f,k,m),b=f.attributes,c=!1,f=h.id*16777215+f.id;f!=ma&&(ma=f,c=!0);if(!k.morphTargets&&b.position>=0)c&&(o.bindBuffer(o.ARRAY_BUFFER,h.__webglVertexBuffer),o.vertexAttribPointer(b.position,3,o.FLOAT,!1,0,0));else if(m.morphTargetBase){f=k.program.attributes;m.morphTargetBase!==-1?(o.bindBuffer(o.ARRAY_BUFFER,h.__webglMorphTargetsBuffers[m.morphTargetBase]),
+o.vertexAttribPointer(f.position,3,o.FLOAT,!1,0,0)):f.position>=0&&(o.bindBuffer(o.ARRAY_BUFFER,h.__webglVertexBuffer),o.vertexAttribPointer(f.position,3,o.FLOAT,!1,0,0));if(m.morphTargetForcedOrder.length)for(var p=0,t=m.morphTargetForcedOrder,u=m.morphTargetInfluences;p<k.numSupportedMorphTargets&&p<t.length;)o.bindBuffer(o.ARRAY_BUFFER,h.__webglMorphTargetsBuffers[t[p]]),o.vertexAttribPointer(f["morphTarget"+p],3,o.FLOAT,!1,0,0),m.__webglMorphTargetInfluences[p]=u[t[p]],p++;else{var t=[],w=-1,
+v=0,u=m.morphTargetInfluences,x,z=u.length,p=0;for(m.morphTargetBase!==-1&&(t[m.morphTargetBase]=!0);p<k.numSupportedMorphTargets;){for(x=0;x<z;x++)!t[x]&&u[x]>w&&(v=x,w=u[v]);o.bindBuffer(o.ARRAY_BUFFER,h.__webglMorphTargetsBuffers[v]);o.vertexAttribPointer(f["morphTarget"+p],3,o.FLOAT,!1,0,0);m.__webglMorphTargetInfluences[p]=w;t[v]=1;w=-1;p++}}k.program.uniforms.morphTargetInfluences!==null&&o.uniform1fv(k.program.uniforms.morphTargetInfluences,m.__webglMorphTargetInfluences)}if(c){if(h.__webglCustomAttributes)for(n in h.__webglCustomAttributes)b[n]>=
+0&&(f=h.__webglCustomAttributes[n],o.bindBuffer(o.ARRAY_BUFFER,f.buffer),o.vertexAttribPointer(b[n],f.size,o.FLOAT,!1,0,0));b.color>=0&&(o.bindBuffer(o.ARRAY_BUFFER,h.__webglColorBuffer),o.vertexAttribPointer(b.color,3,o.FLOAT,!1,0,0));b.normal>=0&&(o.bindBuffer(o.ARRAY_BUFFER,h.__webglNormalBuffer),o.vertexAttribPointer(b.normal,3,o.FLOAT,!1,0,0));b.tangent>=0&&(o.bindBuffer(o.ARRAY_BUFFER,h.__webglTangentBuffer),o.vertexAttribPointer(b.tangent,4,o.FLOAT,!1,0,0));b.uv>=0&&(h.__webglUVBuffer?(o.bindBuffer(o.ARRAY_BUFFER,
+h.__webglUVBuffer),o.vertexAttribPointer(b.uv,2,o.FLOAT,!1,0,0),o.enableVertexAttribArray(b.uv)):o.disableVertexAttribArray(b.uv));b.uv2>=0&&(h.__webglUV2Buffer?(o.bindBuffer(o.ARRAY_BUFFER,h.__webglUV2Buffer),o.vertexAttribPointer(b.uv2,2,o.FLOAT,!1,0,0),o.enableVertexAttribArray(b.uv2)):o.disableVertexAttribArray(b.uv2));k.skinning&&b.skinVertexA>=0&&b.skinVertexB>=0&&b.skinIndex>=0&&b.skinWeight>=0&&(o.bindBuffer(o.ARRAY_BUFFER,h.__webglSkinVertexABuffer),o.vertexAttribPointer(b.skinVertexA,4,
+o.FLOAT,!1,0,0),o.bindBuffer(o.ARRAY_BUFFER,h.__webglSkinVertexBBuffer),o.vertexAttribPointer(b.skinVertexB,4,o.FLOAT,!1,0,0),o.bindBuffer(o.ARRAY_BUFFER,h.__webglSkinIndicesBuffer),o.vertexAttribPointer(b.skinIndex,4,o.FLOAT,!1,0,0),o.bindBuffer(o.ARRAY_BUFFER,h.__webglSkinWeightsBuffer),o.vertexAttribPointer(b.skinWeight,4,o.FLOAT,!1,0,0))}m instanceof THREE.Mesh?(k.wireframe?(o.lineWidth(k.wireframeLinewidth),c&&o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,h.__webglLineBuffer),o.drawElements(o.LINES,h.__webglLineCount,
+o.UNSIGNED_SHORT,0)):(c&&o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,h.__webglFaceBuffer),o.drawElements(o.TRIANGLES,h.__webglFaceCount,o.UNSIGNED_SHORT,0)),X.info.render.calls++,X.info.render.vertices+=h.__webglFaceCount,X.info.render.faces+=h.__webglFaceCount/3):m instanceof THREE.Line?(m=m.type==THREE.LineStrip?o.LINE_STRIP:o.LINES,o.lineWidth(k.linewidth),o.drawArrays(m,0,h.__webglLineCount),X.info.render.calls++):m instanceof THREE.ParticleSystem?(o.drawArrays(o.POINTS,0,h.__webglParticleCount),X.info.render.calls++):
+m instanceof THREE.Ribbon&&(o.drawArrays(o.TRIANGLE_STRIP,0,h.__webglVertexCount),X.info.render.calls++)}}function h(b,c,e){if(!b.__webglVertexBuffer)b.__webglVertexBuffer=o.createBuffer();if(!b.__webglNormalBuffer)b.__webglNormalBuffer=o.createBuffer();b.hasPos&&(o.bindBuffer(o.ARRAY_BUFFER,b.__webglVertexBuffer),o.bufferData(o.ARRAY_BUFFER,b.positionArray,o.DYNAMIC_DRAW),o.enableVertexAttribArray(c.attributes.position),o.vertexAttribPointer(c.attributes.position,3,o.FLOAT,!1,0,0));if(b.hasNormal){o.bindBuffer(o.ARRAY_BUFFER,
+b.__webglNormalBuffer);if(e==THREE.FlatShading){var f,h,k,m,n,p,t,u,w,v,x=b.count*3;for(v=0;v<x;v+=9)e=b.normalArray,f=e[v],h=e[v+1],k=e[v+2],m=e[v+3],p=e[v+4],u=e[v+5],n=e[v+6],t=e[v+7],w=e[v+8],f=(f+m+n)/3,h=(h+p+t)/3,k=(k+u+w)/3,e[v]=f,e[v+1]=h,e[v+2]=k,e[v+3]=f,e[v+4]=h,e[v+5]=k,e[v+6]=f,e[v+7]=h,e[v+8]=k}o.bufferData(o.ARRAY_BUFFER,b.normalArray,o.DYNAMIC_DRAW);o.enableVertexAttribArray(c.attributes.normal);o.vertexAttribPointer(c.attributes.normal,3,o.FLOAT,!1,0,0)}o.drawArrays(o.TRIANGLES,
+0,b.count);b.count=0}function k(b){if(la!=b.doubleSided)b.doubleSided?o.disable(o.CULL_FACE):o.enable(o.CULL_FACE),la=b.doubleSided;if(ga!=b.flipSided)b.flipSided?o.frontFace(o.CW):o.frontFace(o.CCW),ga=b.flipSided}function m(b){ca!=b&&(b?o.enable(o.DEPTH_TEST):o.disable(o.DEPTH_TEST),ca=b)}function n(b){aa!=b&&(o.depthMask(b),aa=b)}function t(b,c,e){ha!=b&&(b?o.enable(o.POLYGON_OFFSET_FILL):o.disable(o.POLYGON_OFFSET_FILL),ha=b);if(b&&(ka!=c||sa!=e))o.polygonOffset(c,e),ka=c,sa=e}function u(b){va[0].set(b.n41-
+b.n11,b.n42-b.n12,b.n43-b.n13,b.n44-b.n14);va[1].set(b.n41+b.n11,b.n42+b.n12,b.n43+b.n13,b.n44+b.n14);va[2].set(b.n41+b.n21,b.n42+b.n22,b.n43+b.n23,b.n44+b.n24);va[3].set(b.n41-b.n21,b.n42-b.n22,b.n43-b.n23,b.n44-b.n24);va[4].set(b.n41-b.n31,b.n42-b.n32,b.n43-b.n33,b.n44-b.n34);va[5].set(b.n41+b.n31,b.n42+b.n32,b.n43+b.n33,b.n44+b.n34);for(var c,b=0;b<6;b++)c=va[b],c.divideScalar(Math.sqrt(c.x*c.x+c.y*c.y+c.z*c.z))}function v(b){for(var c=b.matrixWorld,e=-b.geometry.boundingSphere.radius*Math.max(b.scale.x,
+Math.max(b.scale.y,b.scale.z)),f=0;f<6;f++)if(b=va[f].x*c.n14+va[f].y*c.n24+va[f].z*c.n34+va[f].w,b<=e)return!1;return!0}function p(b,c){b.list[b.count]=c;b.count+=1}function x(b){var c,e,f=b.object,h=b.opaque,k=b.transparent;k.count=0;b=h.count=0;for(c=f.materials.length;b<c;b++)e=f.materials[b],e.transparent?p(k,e):p(h,e)}function w(b){var c,e,f,h,k=b.object,m=b.buffer,n=b.opaque,o=b.transparent;o.count=0;b=n.count=0;for(f=k.materials.length;b<f;b++)if(c=k.materials[b],c instanceof THREE.MeshFaceMaterial){c=
+0;for(e=m.materials.length;c<e;c++)(h=m.materials[c])&&(h.transparent?p(o,h):p(n,h))}else(h=c)&&(h.transparent?p(o,h):p(n,h))}function A(b,c){return c.z-b.z}function z(b){var c,n,p,t=0,w,x,z,y,A=b.lights;wa||(wa=new THREE.PerspectiveCamera(X.shadowCameraFov,X.shadowMapWidth/X.shadowMapHeight,X.shadowCameraNear,X.shadowCameraFar));c=0;for(n=A.length;c<n;c++)if(p=A[c],p instanceof THREE.SpotLight&&p.castShadow){fa=-1;X.shadowMap[t]||(X.shadowMap[t]=new THREE.WebGLRenderTarget(X.shadowMapWidth,X.shadowMapHeight,
+{minFilter:THREE.LinearFilter,magFilter:THREE.LinearFilter,format:THREE.RGBAFormat}));oa[t]||(oa[t]=new THREE.Matrix4);w=X.shadowMap[t];x=oa[t];wa.position.copy(p.position);wa.lookAt(p.target.position);wa.update(void 0,!0);b.update(void 0,!1,wa);x.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);x.multiplySelf(wa.projectionMatrix);x.multiplySelf(wa.matrixWorldInverse);wa.matrixWorldInverse.flattenToArray(Ba);wa.projectionMatrix.flattenToArray(Ea);ua.multiply(wa.projectionMatrix,wa.matrixWorldInverse);
+u(ua);X.initWebGLObjects(b);Z(w);o.clearColor(1,1,1,1);X.clear();o.clearColor(ia.r,ia.g,ia.b,ja);x=b.__webglObjects.length;p=b.__webglObjectsImmediate.length;for(w=0;w<x;w++)z=b.__webglObjects[w],y=z.object,y.visible&&y.castShadow?!(y instanceof THREE.Mesh)||!y.frustumCulled||v(y)?(y.matrixWorld.flattenToArray(y._objectMatrixArray),C(y,wa,!1),z.render=!0):z.render=!1:z.render=!1;m(!0);G(THREE.NormalBlending);for(w=0;w<x;w++)if(z=b.__webglObjects[w],z.render)y=z.object,buffer=z.buffer,k(y),z=y.customDepthMaterial?
+y.customDepthMaterial:y.geometry.morphTargets.length?Ka:za,f(wa,A,null,z,buffer,y);for(w=0;w<p;w++)z=b.__webglObjectsImmediate[w],y=z.object,y.visible&&y.castShadow&&(y.matrixAutoUpdate&&y.matrixWorld.flattenToArray(y._objectMatrixArray),ma=-1,C(y,wa,!1),k(y),program=e(wa,A,null,za,y),y.immediateRenderCallback?y.immediateRenderCallback(program,o,va):y.render(function(b){h(b,program,za.shading)}));t++}}function y(b,c){var e,f,h;e=W.attributes;var k=W.uniforms,m=ra/na,n,p=[],t=na*0.5,u=ra*0.5,w=!0;
+o.useProgram(W.program);R=W.program;ma=ca=$=-1;Ja||(o.enableVertexAttribArray(W.attributes.position),o.enableVertexAttribArray(W.attributes.uv),Ja=!0);o.disable(o.CULL_FACE);o.enable(o.BLEND);o.depthMask(!0);o.bindBuffer(o.ARRAY_BUFFER,W.vertexBuffer);o.vertexAttribPointer(e.position,2,o.FLOAT,!1,16,0);o.vertexAttribPointer(e.uv,2,o.FLOAT,!1,16,8);o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,W.elementBuffer);o.uniformMatrix4fv(k.projectionMatrix,!1,Ea);o.activeTexture(o.TEXTURE0);o.uniform1i(k.map,0);e=0;
+for(f=b.__webglSprites.length;e<f;e++)if(h=b.__webglSprites[e],h.visible&&h.opacity!=0)h.useScreenCoordinates?h.z=-h.position.z:(h._modelViewMatrix.multiplyToArray(c.matrixWorldInverse,h.matrixWorld,h._modelViewMatrixArray),h.z=-h._modelViewMatrix.n34);b.__webglSprites.sort(A);e=0;for(f=b.__webglSprites.length;e<f;e++)h=b.__webglSprites[e],h.visible&&h.opacity!=0&&h.map&&h.map.image&&h.map.image.width&&(h.useScreenCoordinates?(o.uniform1i(k.useScreenCoordinates,1),o.uniform3f(k.screenPosition,(h.position.x-
+t)/t,(u-h.position.y)/u,Math.max(0,Math.min(1,h.position.z)))):(o.uniform1i(k.useScreenCoordinates,0),o.uniform1i(k.affectedByDistance,h.affectedByDistance?1:0),o.uniformMatrix4fv(k.modelViewMatrix,!1,h._modelViewMatrixArray)),n=h.map.image.width/(h.scaleByViewport?ra:1),p[0]=n*m*h.scale.x,p[1]=n*h.scale.y,o.uniform2f(k.uvScale,h.uvScale.x,h.uvScale.y),o.uniform2f(k.uvOffset,h.uvOffset.x,h.uvOffset.y),o.uniform2f(k.alignment,h.alignment.x,h.alignment.y),o.uniform1f(k.opacity,h.opacity),o.uniform3f(k.color,
+h.color.r,h.color.g,h.color.b),o.uniform1f(k.rotation,h.rotation),o.uniform2fv(k.scale,p),h.mergeWith3D&&!w?(o.enable(o.DEPTH_TEST),w=!0):!h.mergeWith3D&&w&&(o.disable(o.DEPTH_TEST),w=!1),G(h.blending),K(h.map,0),o.drawElements(o.TRIANGLES,6,o.UNSIGNED_SHORT,0));o.enable(o.CULL_FACE);o.enable(o.DEPTH_TEST);o.depthMask(aa)}function C(b,c,e){b._modelViewMatrix.multiplyToArray(c.matrixWorldInverse,b.matrixWorld,b._modelViewMatrixArray);e&&THREE.Matrix4.makeInvert3x3(b._modelViewMatrix).transposeIntoArray(b._normalMatrixArray)}
+function E(b){var c,e,f,h;h=b.__materials;b=0;for(e=h.length;b<e;b++)if(f=h[b],f.attributes)for(c in f.attributes)if(f.attributes[c].needsUpdate)return!0;return!1}function D(b){var c,e,f,h;h=b.__materials;b=0;for(e=h.length;b<e;b++)if(f=h[b],f.attributes)for(c in f.attributes)f.attributes[c].needsUpdate=!1}function F(b,c){var e;for(e=b.length-1;e>=0;e--)b[e].object==c&&b.splice(e,1)}function M(b){function c(b){var h=[];e=0;for(f=b.length;e<f;e++)b[e]==void 0?h.push("undefined"):h.push(b[e].id);return h.join("_")}
+var e,f,h,k,m,n,o,p,t={},u=b.morphTargets!==void 0?b.morphTargets.length:0;b.geometryGroups={};h=0;for(k=b.faces.length;h<k;h++)m=b.faces[h],n=m.materials,o=c(n),t[o]==void 0&&(t[o]={hash:o,counter:0}),p=t[o].hash+"_"+t[o].counter,b.geometryGroups[p]==void 0&&(b.geometryGroups[p]={faces:[],materials:n,vertices:0,numMorphTargets:u}),m=m instanceof THREE.Face3?3:4,b.geometryGroups[p].vertices+m>65535&&(t[o].counter+=1,p=t[o].hash+"_"+t[o].counter,b.geometryGroups[p]==void 0&&(b.geometryGroups[p]={faces:[],
+materials:n,vertices:0,numMorphTargets:u})),b.geometryGroups[p].faces.push(h),b.geometryGroups[p].vertices+=m;b.geometryGroupsList=[];for(var w in b.geometryGroups)b.geometryGroups[w].id=da++,b.geometryGroupsList.push(b.geometryGroups[w])}function N(b,c,e){b.push({buffer:c,object:e,opaque:{list:[],count:0},transparent:{list:[],count:0}})}function G(b){if(b!=$){switch(b){case THREE.AdditiveBlending:o.blendEquation(o.FUNC_ADD);o.blendFunc(o.SRC_ALPHA,o.ONE);break;case THREE.SubtractiveBlending:o.blendEquation(o.FUNC_ADD);
+o.blendFunc(o.ZERO,o.ONE_MINUS_SRC_COLOR);break;case THREE.MultiplyBlending:o.blendEquation(o.FUNC_ADD);o.blendFunc(o.ZERO,o.SRC_COLOR);break;default:o.blendEquationSeparate(o.FUNC_ADD,o.FUNC_ADD),o.blendFuncSeparate(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA,o.ONE,o.ONE_MINUS_SRC_ALPHA)}$=b}}function H(b,c,e){(e.width&e.width-1)==0&&(e.height&e.height-1)==0?(o.texParameteri(b,o.TEXTURE_WRAP_S,Y(c.wrapS)),o.texParameteri(b,o.TEXTURE_WRAP_T,Y(c.wrapT)),o.texParameteri(b,o.TEXTURE_MAG_FILTER,Y(c.magFilter)),
+o.texParameteri(b,o.TEXTURE_MIN_FILTER,Y(c.minFilter)),o.generateMipmap(b)):(o.texParameteri(b,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(b,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.texParameteri(b,o.TEXTURE_MAG_FILTER,U(c.magFilter)),o.texParameteri(b,o.TEXTURE_MIN_FILTER,U(c.minFilter)))}function K(b,c){if(b.needsUpdate){if(!b.__webglInit)b.__webglInit=!0,b.__webglTexture=o.createTexture(),X.info.memory.textures++;o.activeTexture(o.TEXTURE0+c);o.bindTexture(o.TEXTURE_2D,b.__webglTexture);b instanceof
+THREE.DataTexture?o.texImage2D(o.TEXTURE_2D,0,Y(b.format),b.image.width,b.image.height,0,Y(b.format),o.UNSIGNED_BYTE,b.image.data):o.texImage2D(o.TEXTURE_2D,0,o.RGBA,o.RGBA,o.UNSIGNED_BYTE,b.image);H(o.TEXTURE_2D,b,b.image);b.needsUpdate=!1}else o.activeTexture(o.TEXTURE0+c),o.bindTexture(o.TEXTURE_2D,b.__webglTexture)}function Z(b){var c=b instanceof THREE.WebGLRenderTargetCube;if(b&&!b.__webglFramebuffer){if(b.depthBuffer===void 0)b.depthBuffer=!0;if(b.stencilBuffer===void 0)b.stencilBuffer=!0;
+b.__webglRenderbuffer=o.createRenderbuffer();b.__webglTexture=o.createTexture();if(c){o.bindTexture(o.TEXTURE_CUBE_MAP,b.__webglTexture);H(o.TEXTURE_CUBE_MAP,b,b);b.__webglFramebuffer=[];for(var e=0;e<6;e++)b.__webglFramebuffer[e]=o.createFramebuffer(),o.texImage2D(o.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,Y(b.format),b.width,b.height,0,Y(b.format),Y(b.type),null)}else b.__webglFramebuffer=o.createFramebuffer(),o.bindTexture(o.TEXTURE_2D,b.__webglTexture),H(o.TEXTURE_2D,b,b),o.texImage2D(o.TEXTURE_2D,0,Y(b.format),
+b.width,b.height,0,Y(b.format),Y(b.type),null);o.bindRenderbuffer(o.RENDERBUFFER,b.__webglRenderbuffer);if(c)for(e=0;e<6;++e)o.bindFramebuffer(o.FRAMEBUFFER,b.__webglFramebuffer[e]),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_CUBE_MAP_POSITIVE_X+e,b.__webglTexture,0);else o.bindFramebuffer(o.FRAMEBUFFER,b.__webglFramebuffer),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,b.__webglTexture,0);b.depthBuffer&&!b.stencilBuffer?(o.renderbufferStorage(o.RENDERBUFFER,
+o.DEPTH_COMPONENT16,b.width,b.height),o.framebufferRenderbuffer(o.FRAMEBUFFER,o.DEPTH_ATTACHMENT,o.RENDERBUFFER,b.__webglRenderbuffer)):b.depthBuffer&&b.stencilBuffer?(o.renderbufferStorage(o.RENDERBUFFER,o.DEPTH_STENCIL,b.width,b.height),o.framebufferRenderbuffer(o.FRAMEBUFFER,o.DEPTH_STENCIL_ATTACHMENT,o.RENDERBUFFER,b.__webglRenderbuffer)):o.renderbufferStorage(o.RENDERBUFFER,o.RGBA4,b.width,b.height);c?o.bindTexture(o.TEXTURE_CUBE_MAP,null):o.bindTexture(o.TEXTURE_2D,null);o.bindRenderbuffer(o.RENDERBUFFER,
+null);o.bindFramebuffer(o.FRAMEBUFFER,null)}var f,h;b?(c=c?b.__webglFramebuffer[b.activeCubeFace]:b.__webglFramebuffer,e=b.width,b=b.height,h=f=0):(c=null,e=na,b=ra,f=J,h=Q);c!=pa&&(o.bindFramebuffer(o.FRAMEBUFFER,c),o.viewport(f,h,e,b),pa=c)}function L(b){b instanceof THREE.WebGLRenderTargetCube?(o.bindTexture(o.TEXTURE_CUBE_MAP,b.__webglTexture),o.generateMipmap(o.TEXTURE_CUBE_MAP),o.bindTexture(o.TEXTURE_CUBE_MAP,null)):(o.bindTexture(o.TEXTURE_2D,b.__webglTexture),o.generateMipmap(o.TEXTURE_2D),
+o.bindTexture(o.TEXTURE_2D,null))}function P(b,c){var e;b=="fragment"?e=o.createShader(o.FRAGMENT_SHADER):b=="vertex"&&(e=o.createShader(o.VERTEX_SHADER));o.shaderSource(e,c);o.compileShader(e);if(!o.getShaderParameter(e,o.COMPILE_STATUS))return console.error(o.getShaderInfoLog(e)),console.error(c),null;return e}function U(b){switch(b){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return o.NEAREST;default:return o.LINEAR}}function Y(b){switch(b){case THREE.RepeatWrapping:return o.REPEAT;
+case THREE.ClampToEdgeWrapping:return o.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return o.MIRRORED_REPEAT;case THREE.NearestFilter:return o.NEAREST;case THREE.NearestMipMapNearestFilter:return o.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return o.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return o.LINEAR;case THREE.LinearMipMapNearestFilter:return o.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return o.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return o.BYTE;
+case THREE.UnsignedByteType:return o.UNSIGNED_BYTE;case THREE.ShortType:return o.SHORT;case THREE.UnsignedShortType:return o.UNSIGNED_SHORT;case THREE.IntType:return o.INT;case THREE.UnsignedShortType:return o.UNSIGNED_INT;case THREE.FloatType:return o.FLOAT;case THREE.AlphaFormat:return o.ALPHA;case THREE.RGBFormat:return o.RGB;case THREE.RGBAFormat:return o.RGBA;case THREE.LuminanceFormat:return o.LUMINANCE;case THREE.LuminanceAlphaFormat:return o.LUMINANCE_ALPHA}return 0}var X=this,o,ea=[],R=null,
+pa=null,fa=-1,ma=null,da=0,la=null,ga=null,$=null,ca=null,aa=null,ha=null,ka=null,sa=null,J=0,Q=0,na=0,ra=0,va=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],ua=new THREE.Matrix4,Ea=new Float32Array(16),Ba=new Float32Array(16),Da=new THREE.Vector4,Fa={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}},b=b||{},V=b.canvas!==void 0?b.canvas:document.createElement("canvas"),
+T=b.stencil!==void 0?b.stencil:!0,O=b.preserveDrawingBuffer!==void 0?b.preserveDrawingBuffer:!1,qa=b.antialias!==void 0?b.antialias:!1,ia=b.clearColor!==void 0?new THREE.Color(b.clearColor):new THREE.Color(0),ja=b.clearAlpha!==void 0?b.clearAlpha:0,ya=b.maxLights!==void 0?b.maxLights:4;this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0}};this.maxMorphTargets=8;this.domElement=V;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=
+!0;this.shadowMapBias=0.0039;this.shadowMapDarkness=0.5;this.shadowMapHeight=this.shadowMapWidth=512;this.shadowCameraNear=1;this.shadowCameraFar=5E3;this.shadowCameraFov=50;this.shadowMap=[];this.shadowMapEnabled=!1;this.shadowMapSoft=!0;var wa,oa=[],b=THREE.ShaderLib.depthRGBA,Ia=THREE.UniformsUtils.clone(b.uniforms),za=new THREE.ShaderMaterial({fragmentShader:b.fragmentShader,vertexShader:b.vertexShader,uniforms:Ia}),Ka=new THREE.ShaderMaterial({fragmentShader:b.fragmentShader,vertexShader:b.vertexShader,
+uniforms:Ia,morphTargets:!0});za._shadowPass=!0;Ka._shadowPass=!0;try{if(!(o=V.getContext("experimental-webgl",{antialias:qa,stencil:T,preserveDrawingBuffer:O})))throw"Error creating WebGL context.";console.log(navigator.userAgent+" | "+o.getParameter(o.VERSION)+" | "+o.getParameter(o.VENDOR)+" | "+o.getParameter(o.RENDERER)+" | "+o.getParameter(o.SHADING_LANGUAGE_VERSION))}catch(Ca){console.error(Ca)}o.clearColor(0,0,0,1);o.clearDepth(1);o.clearStencil(0);o.enable(o.DEPTH_TEST);o.depthFunc(o.LEQUAL);
+o.frontFace(o.CCW);o.cullFace(o.BACK);o.enable(o.CULL_FACE);o.enable(o.BLEND);o.blendEquation(o.FUNC_ADD);o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA);o.clearColor(ia.r,ia.g,ia.b,ja);this.context=o;var Ga=o.getParameter(o.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0,W={};W.vertices=new Float32Array(16);W.faces=new Uint16Array(6);T=0;W.vertices[T++]=-1;W.vertices[T++]=-1;W.vertices[T++]=0;W.vertices[T++]=1;W.vertices[T++]=1;W.vertices[T++]=-1;W.vertices[T++]=1;W.vertices[T++]=1;W.vertices[T++]=1;W.vertices[T++]=
+1;W.vertices[T++]=1;W.vertices[T++]=0;W.vertices[T++]=-1;W.vertices[T++]=1;W.vertices[T++]=0;T=W.vertices[T++]=0;W.faces[T++]=0;W.faces[T++]=1;W.faces[T++]=2;W.faces[T++]=0;W.faces[T++]=2;W.faces[T++]=3;W.vertexBuffer=o.createBuffer();W.elementBuffer=o.createBuffer();o.bindBuffer(o.ARRAY_BUFFER,W.vertexBuffer);o.bufferData(o.ARRAY_BUFFER,W.vertices,o.STATIC_DRAW);o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,W.elementBuffer);o.bufferData(o.ELEMENT_ARRAY_BUFFER,W.faces,o.STATIC_DRAW);W.program=o.createProgram();
+o.attachShader(W.program,P("fragment",THREE.ShaderLib.sprite.fragmentShader));o.attachShader(W.program,P("vertex",THREE.ShaderLib.sprite.vertexShader));o.linkProgram(W.program);W.attributes={};W.uniforms={};W.attributes.position=o.getAttribLocation(W.program,"position");W.attributes.uv=o.getAttribLocation(W.program,"uv");W.uniforms.uvOffset=o.getUniformLocation(W.program,"uvOffset");W.uniforms.uvScale=o.getUniformLocation(W.program,"uvScale");W.uniforms.rotation=o.getUniformLocation(W.program,"rotation");
+W.uniforms.scale=o.getUniformLocation(W.program,"scale");W.uniforms.alignment=o.getUniformLocation(W.program,"alignment");W.uniforms.color=o.getUniformLocation(W.program,"color");W.uniforms.map=o.getUniformLocation(W.program,"map");W.uniforms.opacity=o.getUniformLocation(W.program,"opacity");W.uniforms.useScreenCoordinates=o.getUniformLocation(W.program,"useScreenCoordinates");W.uniforms.affectedByDistance=o.getUniformLocation(W.program,"affectedByDistance");W.uniforms.screenPosition=o.getUniformLocation(W.program,
+"screenPosition");W.uniforms.modelViewMatrix=o.getUniformLocation(W.program,"modelViewMatrix");W.uniforms.projectionMatrix=o.getUniformLocation(W.program,"projectionMatrix");var Ja=!1;this.setSize=function(b,c){V.width=b;V.height=c;this.setViewport(0,0,V.width,V.height)};this.setViewport=function(b,c,e,f){J=b;Q=c;na=e;ra=f;o.viewport(J,Q,na,ra)};this.setScissor=function(b,c,e,f){o.scissor(b,c,e,f)};this.enableScissorTest=function(b){b?o.enable(o.SCISSOR_TEST):o.disable(o.SCISSOR_TEST)};this.setClearColorHex=
+function(b,c){ia.setHex(b);ja=c;o.clearColor(ia.r,ia.g,ia.b,ja)};this.setClearColor=function(b,c){ia.copy(b);ja=c;o.clearColor(ia.r,ia.g,ia.b,ja)};this.getClearColor=function(){return ia};this.getClearAlpha=function(){return ja};this.clear=function(b,c,e){var f=0;if(b==void 0||b)f|=o.COLOR_BUFFER_BIT;if(c==void 0||c)f|=o.DEPTH_BUFFER_BIT;if(e==void 0||e)f|=o.STENCIL_BUFFER_BIT;o.clear(f)};this.getContext=function(){return o};this.deallocateObject=function(b){if(b.__webglInit)if(b.__webglInit=!1,delete b._modelViewMatrix,
+delete b._normalMatrixArray,delete b._modelViewMatrixArray,delete b._objectMatrixArray,b instanceof THREE.Mesh)for(g in b.geometry.geometryGroups){var c=b.geometry.geometryGroups[g];o.deleteBuffer(c.__webglVertexBuffer);o.deleteBuffer(c.__webglNormalBuffer);o.deleteBuffer(c.__webglTangentBuffer);o.deleteBuffer(c.__webglColorBuffer);o.deleteBuffer(c.__webglUVBuffer);o.deleteBuffer(c.__webglUV2Buffer);o.deleteBuffer(c.__webglSkinVertexABuffer);o.deleteBuffer(c.__webglSkinVertexBBuffer);o.deleteBuffer(c.__webglSkinIndicesBuffer);
+o.deleteBuffer(c.__webglSkinWeightsBuffer);o.deleteBuffer(c.__webglFaceBuffer);o.deleteBuffer(c.__webglLineBuffer);if(c.numMorphTargets)for(var e=0,f=c.numMorphTargets;e<f;e++)o.deleteBuffer(c.__webglMorphTargetsBuffers[e]);X.info.memory.geometries--}else if(b instanceof THREE.Ribbon)b=b.geometry,o.deleteBuffer(b.__webglVertexBuffer),o.deleteBuffer(b.__webglColorBuffer),X.info.memory.geometries--;else if(b instanceof THREE.Line)b=b.geometry,o.deleteBuffer(b.__webglVertexBuffer),o.deleteBuffer(b.__webglColorBuffer),
+X.info.memory.geometries--;else if(b instanceof THREE.ParticleSystem)b=b.geometry,o.deleteBuffer(b.__webglVertexBuffer),o.deleteBuffer(b.__webglColorBuffer),X.info.memory.geometries--};this.deallocateTexture=function(b){if(b.__webglInit)b.__webglInit=!1,o.deleteTexture(b.__webglTexture),X.info.memory.textures--};this.initMaterial=function(b,c,e,f){var h,k,m,n;b instanceof THREE.MeshDepthMaterial?n="depth":b instanceof THREE.MeshNormalMaterial?n="normal":b instanceof THREE.MeshBasicMaterial?n="basic":
+b instanceof THREE.MeshLambertMaterial?n="lambert":b instanceof THREE.MeshPhongMaterial?n="phong":b instanceof THREE.LineBasicMaterial?n="basic":b instanceof THREE.ParticleBasicMaterial&&(n="particle_basic");if(n){var p=THREE.ShaderLib[n];b.uniforms=THREE.UniformsUtils.clone(p.uniforms);b.vertexShader=p.vertexShader;b.fragmentShader=p.fragmentShader}var t,u,w;t=w=p=0;for(u=c.length;t<u;t++)m=c[t],m instanceof THREE.SpotLight&&w++,m instanceof THREE.DirectionalLight&&w++,m instanceof THREE.PointLight&&
+p++;p+w<=ya?t=w:(t=Math.ceil(ya*w/(p+w)),p=ya-t);m={directional:t,point:p};p=w=0;for(t=c.length;p<t;p++)u=c[p],u instanceof THREE.SpotLight&&u.castShadow&&w++;var v=50;if(f!==void 0&&f instanceof THREE.SkinnedMesh)v=f.bones.length;var x;a:{t=b.fragmentShader;u=b.vertexShader;var p=b.uniforms,c=b.attributes,e={map:!!b.map,envMap:!!b.envMap,lightMap:!!b.lightMap,vertexColors:b.vertexColors,fog:e,useFog:b.fog,sizeAttenuation:b.sizeAttenuation,skinning:b.skinning,morphTargets:b.morphTargets,maxMorphTargets:this.maxMorphTargets,
+maxDirLights:m.directional,maxPointLights:m.point,maxBones:v,shadowMapEnabled:this.shadowMapEnabled&&f.receiveShadow,shadowMapSoft:this.shadowMapSoft,shadowMapWidth:this.shadowMapWidth,shadowMapHeight:this.shadowMapHeight,maxShadows:w,alphaTest:b.alphaTest},z,f=[];n?f.push(n):(f.push(t),f.push(u));for(z in e)f.push(z),f.push(e[z]);n=f.join();z=0;for(f=ea.length;z<f;z++)if(ea[z].code==n){x=ea[z].program;break a}z=o.createProgram();f=[Ga?"#define VERTEX_TEXTURES":"","#define MAX_DIR_LIGHTS "+e.maxDirLights,
+"#define MAX_POINT_LIGHTS "+e.maxPointLights,"#define MAX_SHADOWS "+e.maxShadows,"#define MAX_BONES "+e.maxBones,e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.lightMap?"#define USE_LIGHTMAP":"",e.vertexColors?"#define USE_COLOR":"",e.skinning?"#define USE_SKINNING":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapSoft?"#define SHADOWMAP_SOFT":"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nuniform mat4 cameraInverseMatrix;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
+m=["#ifdef GL_ES\nprecision highp float;\n#endif","#define MAX_DIR_LIGHTS "+e.maxDirLights,"#define MAX_POINT_LIGHTS "+e.maxPointLights,"#define MAX_SHADOWS "+e.maxShadows,e.alphaTest?"#define ALPHATEST "+e.alphaTest:"",e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.lightMap?"#define USE_LIGHTMAP":"",e.vertexColors?"#define USE_COLOR":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",
+e.shadowMapSoft?"#define SHADOWMAP_SOFT":"",e.shadowMapSoft?"#define SHADOWMAP_WIDTH "+e.shadowMapWidth.toFixed(1):"",e.shadowMapSoft?"#define SHADOWMAP_HEIGHT "+e.shadowMapHeight.toFixed(1):"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");o.attachShader(z,P("fragment",m+t));o.attachShader(z,P("vertex",f+u));o.linkProgram(z);o.getProgramParameter(z,o.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+o.getProgramParameter(z,o.VALIDATE_STATUS)+", gl error ["+
+o.getError()+"]");z.uniforms={};z.attributes={};var y,f=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","cameraInverseMatrix","boneGlobalMatrices","morphTargetInfluences"];for(y in p)f.push(y);y=f;f=0;for(p=y.length;f<p;f++)t=y[f],z.uniforms[t]=o.getUniformLocation(z,t);f=["position","normal","uv","uv2","tangent","color","skinVertexA","skinVertexB","skinIndex","skinWeight"];for(y=0;y<e.maxMorphTargets;y++)f.push("morphTarget"+y);for(x in c)f.push(x);
+x=f;y=0;for(c=x.length;y<c;y++)e=x[y],z.attributes[e]=o.getAttribLocation(z,e);z.id=ea.length;ea.push({program:z,code:n});X.info.memory.programs=ea.length;x=z}b.program=x;x=b.program.attributes;x.position>=0&&o.enableVertexAttribArray(x.position);x.color>=0&&o.enableVertexAttribArray(x.color);x.normal>=0&&o.enableVertexAttribArray(x.normal);x.tangent>=0&&o.enableVertexAttribArray(x.tangent);b.skinning&&x.skinVertexA>=0&&x.skinVertexB>=0&&x.skinIndex>=0&&x.skinWeight>=0&&(o.enableVertexAttribArray(x.skinVertexA),
+o.enableVertexAttribArray(x.skinVertexB),o.enableVertexAttribArray(x.skinIndex),o.enableVertexAttribArray(x.skinWeight));if(b.attributes)for(k in b.attributes)x[k]!==void 0&&x[k]>=0&&o.enableVertexAttribArray(x[k]);if(b.morphTargets)for(k=b.numSupportedMorphTargets=0;k<this.maxMorphTargets;k++)y="morphTarget"+k,x[y]>=0&&(o.enableVertexAttribArray(x[y]),b.numSupportedMorphTargets++);b.uniformsList=[];for(h in b.uniforms)b.uniformsList.push([b.uniforms[h],h])};this.clearTarget=function(b,c,e,f){Z(b);
+this.clear(c,e,f)};this.render=function(b,c,p,V){var O,T,E,D,F,H,J,qa,K=b.lights,ja=b.fog;fa=-1;this.shadowMapEnabled&&z(b,c);X.info.render.calls=0;X.info.render.vertices=0;X.info.render.faces=0;c.matrixAutoUpdate&&c.update(void 0,!0);b.update(void 0,!1,c);c.matrixWorldInverse.flattenToArray(Ba);c.projectionMatrix.flattenToArray(Ea);ua.multiply(c.projectionMatrix,c.matrixWorldInverse);u(ua);this.initWebGLObjects(b);Z(p);(this.autoClear||V)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);
+F=b.__webglObjects.length;for(V=0;V<F;V++)if(O=b.__webglObjects[V],J=O.object,J.visible)if(!(J instanceof THREE.Mesh)||!J.frustumCulled||v(J)){if(J.matrixWorld.flattenToArray(J._objectMatrixArray),C(J,c,!0),w(O),O.render=!0,this.sortObjects)O.object.renderDepth?O.z=O.object.renderDepth:(Da.copy(J.position),ua.multiplyVector3(Da),O.z=Da.z)}else O.render=!1;else O.render=!1;this.sortObjects&&b.__webglObjects.sort(A);H=b.__webglObjectsImmediate.length;for(V=0;V<H;V++)O=b.__webglObjectsImmediate[V],J=
+O.object,J.visible&&(J.matrixAutoUpdate&&J.matrixWorld.flattenToArray(J._objectMatrixArray),C(J,c,!0),x(O));if(b.overrideMaterial){m(b.overrideMaterial.depthTest);G(b.overrideMaterial.blending);for(V=0;V<F;V++)if(O=b.__webglObjects[V],O.render)J=O.object,qa=O.buffer,k(J),f(c,K,ja,b.overrideMaterial,qa,J);for(V=0;V<H;V++)O=b.__webglObjectsImmediate[V],J=O.object,J.visible&&(ma=-1,k(J),T=e(c,K,ja,b.overrideMaterial,J),J.immediateRenderCallback?J.immediateRenderCallback(T,o,va):J.render(function(c){h(c,
+T,b.overrideMaterial.shading)}))}else{G(THREE.NormalBlending);for(V=F-1;V>=0;V--)if(O=b.__webglObjects[V],O.render){J=O.object;qa=O.buffer;E=O.opaque;k(J);for(O=0;O<E.count;O++)D=E.list[O],m(D.depthTest),n(D.depthWrite),t(D.polygonOffset,D.polygonOffsetFactor,D.polygonOffsetUnits),f(c,K,ja,D,qa,J)}for(V=0;V<H;V++)if(O=b.__webglObjectsImmediate[V],J=O.object,J.visible){ma=-1;E=O.opaque;k(J);for(O=0;O<E.count;O++)D=E.list[O],m(D.depthTest),n(D.depthWrite),t(D.polygonOffset,D.polygonOffsetFactor,D.polygonOffsetUnits),
+T=e(c,K,ja,D,J),J.immediateRenderCallback?J.immediateRenderCallback(T,o,va):J.render(function(b){h(b,T,D.shading)})}for(V=0;V<F;V++)if(O=b.__webglObjects[V],O.render){J=O.object;qa=O.buffer;E=O.transparent;k(J);for(O=0;O<E.count;O++)D=E.list[O],G(D.blending),m(D.depthTest),n(D.depthWrite),t(D.polygonOffset,D.polygonOffsetFactor,D.polygonOffsetUnits),f(c,K,ja,D,qa,J)}for(V=0;V<H;V++)if(O=b.__webglObjectsImmediate[V],J=O.object,J.visible){ma=-1;E=O.transparent;k(J);for(O=0;O<E.count;O++)D=E.list[O],
+G(D.blending),m(D.depthTest),n(D.depthWrite),t(D.polygonOffset,D.polygonOffsetFactor,D.polygonOffsetUnits),T=e(c,K,ja,D,J),J.immediateRenderCallback?J.immediateRenderCallback(T,o,va):J.render(function(b){h(b,T,D.shading)})}}b.__webglSprites.length&&y(b,c);p&&p.minFilter!==THREE.NearestFilter&&p.minFilter!==THREE.LinearFilter&&L(p)};this.initWebGLObjects=function(b){if(!b.__webglObjects)b.__webglObjects=[],b.__webglObjectsImmediate=[],b.__webglSprites=[];for(;b.__objectsAdded.length;){var e=b.__objectsAdded[0],
+f=b,h=void 0,k=void 0,m=void 0;if(!e.__webglInit)if(e.__webglInit=!0,e._modelViewMatrix=new THREE.Matrix4,e._normalMatrixArray=new Float32Array(9),e._modelViewMatrixArray=new Float32Array(16),e._objectMatrixArray=new Float32Array(16),e.matrixWorld.flattenToArray(e._objectMatrixArray),e instanceof THREE.Mesh)for(h in k=e.geometry,k.geometryGroups==void 0&&M(k),k.geometryGroups){if(m=k.geometryGroups[h],!m.__webglVertexBuffer){var n=m;n.__webglVertexBuffer=o.createBuffer();n.__webglNormalBuffer=o.createBuffer();
+n.__webglTangentBuffer=o.createBuffer();n.__webglColorBuffer=o.createBuffer();n.__webglUVBuffer=o.createBuffer();n.__webglUV2Buffer=o.createBuffer();n.__webglSkinVertexABuffer=o.createBuffer();n.__webglSkinVertexBBuffer=o.createBuffer();n.__webglSkinIndicesBuffer=o.createBuffer();n.__webglSkinWeightsBuffer=o.createBuffer();n.__webglFaceBuffer=o.createBuffer();n.__webglLineBuffer=o.createBuffer();if(n.numMorphTargets){var p=void 0,t=void 0;n.__webglMorphTargetsBuffers=[];p=0;for(t=n.numMorphTargets;p<
+t;p++)n.__webglMorphTargetsBuffers.push(o.createBuffer())}X.info.memory.geometries++;for(var n=e,u=void 0,w=void 0,x=void 0,v=x=void 0,z=void 0,y=void 0,V=y=p=0,O=x=w=void 0,x=t=O=w=u=void 0,v=n.geometry,z=v.faces,O=m.faces,u=0,w=O.length;u<w;u++)x=O[u],x=z[x],x instanceof THREE.Face3?(p+=3,y+=1,V+=3):x instanceof THREE.Face4&&(p+=4,y+=2,V+=4);for(var u=m,w=n,A=O=z=void 0,T=void 0,A=void 0,x=[],z=0,O=w.materials.length;z<O;z++)if(A=w.materials[z],A instanceof THREE.MeshFaceMaterial){A=0;for(l=u.materials.length;A<
+l;A++)(T=u.materials[A])&&x.push(T)}else(T=A)&&x.push(T);u=x;m.__materials=u;a:{z=w=void 0;O=u.length;for(w=0;w<O;w++)if(z=u[w],z.map||z.lightMap||z instanceof THREE.ShaderMaterial){w=!0;break a}w=!1}a:{O=z=void 0;x=u.length;for(z=0;z<x;z++)if(O=u[z],!(O instanceof THREE.MeshBasicMaterial&&!O.envMap||O instanceof THREE.MeshDepthMaterial)){O=O&&O.shading!=void 0&&O.shading==THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading;break a}O=!1}a:{x=z=void 0;A=u.length;for(z=0;z<A;z++)if(x=u[z],x.vertexColors){x=
+x.vertexColors;break a}x=!1}m.__vertexArray=new Float32Array(p*3);if(O)m.__normalArray=new Float32Array(p*3);if(v.hasTangents)m.__tangentArray=new Float32Array(p*4);if(x)m.__colorArray=new Float32Array(p*3);if(w){if(v.faceUvs.length>0||v.faceVertexUvs.length>0)m.__uvArray=new Float32Array(p*2);if(v.faceUvs.length>1||v.faceVertexUvs.length>1)m.__uv2Array=new Float32Array(p*2)}if(n.geometry.skinWeights.length&&n.geometry.skinIndices.length)m.__skinVertexAArray=new Float32Array(p*4),m.__skinVertexBArray=
+new Float32Array(p*4),m.__skinIndexArray=new Float32Array(p*4),m.__skinWeightArray=new Float32Array(p*4);m.__faceArray=new Uint16Array(y*3+(n.geometry.edgeFaces?n.geometry.edgeFaces.length*6:0));m.__lineArray=new Uint16Array(V*2);if(m.numMorphTargets){m.__morphTargetsArrays=[];v=0;for(z=m.numMorphTargets;v<z;v++)m.__morphTargetsArrays.push(new Float32Array(p*3))}m.__needsSmoothNormals=O==THREE.SmoothShading;m.__uvType=w;m.__vertexColorType=x;m.__normalType=O;m.__webglFaceCount=y*3+(n.geometry.edgeFaces?
+n.geometry.edgeFaces.length*6:0);m.__webglLineCount=V*2;v=0;for(z=u.length;v<z;v++)if(w=u[v],w.attributes){if(m.__webglCustomAttributes===void 0)m.__webglCustomAttributes={};for(a in w.attributes){x=w.attributes[a];O={};for(t in x)O[t]=x[t];if(!O.__webglInitialized||O.createUniqueBuffers)O.__webglInitialized=!0,y=1,O.type==="v2"?y=2:O.type==="v3"?y=3:O.type==="v4"?y=4:O.type==="c"&&(y=3),O.size=y,O.array=new Float32Array(p*y),O.buffer=o.createBuffer(),O.buffer.belongsToAttribute=a,x.needsUpdate=!0,
+O.__original=x;m.__webglCustomAttributes[a]=O}}m.__inittedArrays=!0;k.__dirtyVertices=!0;k.__dirtyMorphTargets=!0;k.__dirtyElements=!0;k.__dirtyUvs=!0;k.__dirtyNormals=!0;k.__dirtyTangents=!0;k.__dirtyColors=!0}}else if(e instanceof THREE.Ribbon){if(k=e.geometry,!k.__webglVertexBuffer)m=k,m.__webglVertexBuffer=o.createBuffer(),m.__webglColorBuffer=o.createBuffer(),X.info.memory.geometries++,m=k,n=m.vertices.length,m.__vertexArray=new Float32Array(n*3),m.__colorArray=new Float32Array(n*3),m.__webglVertexCount=
+n,k.__dirtyVertices=!0,k.__dirtyColors=!0}else if(e instanceof THREE.Line){if(k=e.geometry,!k.__webglVertexBuffer)m=k,m.__webglVertexBuffer=o.createBuffer(),m.__webglColorBuffer=o.createBuffer(),X.info.memory.geometries++,m=k,n=m.vertices.length,m.__vertexArray=new Float32Array(n*3),m.__colorArray=new Float32Array(n*3),m.__webglLineCount=n,k.__dirtyVertices=!0,k.__dirtyColors=!0}else if(e instanceof THREE.ParticleSystem&&(k=e.geometry,!k.__webglVertexBuffer)){m=k;m.__webglVertexBuffer=o.createBuffer();
+m.__webglColorBuffer=o.createBuffer();X.info.geometries++;m=k;n=e;p=m.vertices.length;m.__vertexArray=new Float32Array(p*3);m.__colorArray=new Float32Array(p*3);m.__sortArray=[];m.__webglParticleCount=p;m.__materials=n.materials;V=y=t=void 0;t=0;for(y=n.materials.length;t<y;t++)if(V=n.materials[t],V.attributes){if(m.__webglCustomAttributes===void 0)m.__webglCustomAttributes={};for(a in V.attributes){originalAttribute=V.attributes[a];attribute={};for(property in originalAttribute)attribute[property]=
+originalAttribute[property];if(!attribute.__webglInitialized||attribute.createUniqueBuffers)attribute.__webglInitialized=!0,size=1,attribute.type==="v2"?size=2:attribute.type==="v3"?size=3:attribute.type==="v4"?size=4:attribute.type==="c"&&(size=3),attribute.size=size,attribute.array=new Float32Array(p*size),attribute.buffer=o.createBuffer(),attribute.buffer.belongsToAttribute=a,originalAttribute.needsUpdate=!0,attribute.__original=originalAttribute;m.__webglCustomAttributes[a]=attribute}}k.__dirtyVertices=
+!0;k.__dirtyColors=!0}if(!e.__webglActive){if(e instanceof THREE.Mesh)for(h in k=e.geometry,k.geometryGroups)m=k.geometryGroups[h],N(f.__webglObjects,m,e);else e instanceof THREE.Ribbon||e instanceof THREE.Line||e instanceof THREE.ParticleSystem?(k=e.geometry,N(f.__webglObjects,k,e)):THREE.MarchingCubes!==void 0&&e instanceof THREE.MarchingCubes||e.immediateRenderCallback?f.__webglObjectsImmediate.push({object:e,opaque:{list:[],count:0},transparent:{list:[],count:0}}):e instanceof THREE.Sprite&&f.__webglSprites.push(e);
+e.__webglActive=!0}b.__objectsAdded.splice(0,1)}for(;b.__objectsRemoved.length;){e=b.__objectsRemoved[0];f=b;if(e instanceof THREE.Mesh||e instanceof THREE.ParticleSystem||e instanceof THREE.Ribbon||e instanceof THREE.Line)F(f.__webglObjects,e);else if(e instanceof THREE.Sprite){f=f.__webglSprites;h=e;k=void 0;for(k=f.length-1;k>=0;k--)f[k]==h&&f.splice(k,1)}else(e instanceof THREE.MarchingCubes||e.immediateRenderCallback)&&F(f.__webglObjectsImmediate,e);e.__webglActive=!1;b.__objectsRemoved.splice(0,
+1)}e=0;for(f=b.__webglObjects.length;e<f;e++)if(k=b.__webglObjects[e].object,t=m=h=void 0,k instanceof THREE.Mesh){h=k.geometry;n=0;for(p=h.geometryGroupsList.length;n<p;n++)if(m=h.geometryGroupsList[n],t=E(m),h.__dirtyVertices||h.__dirtyMorphTargets||h.__dirtyElements||h.__dirtyUvs||h.__dirtyNormals||h.__dirtyColors||h.__dirtyTangents||t)if(t=m,y=o.DYNAMIC_DRAW,V=!h.dynamic,t.__inittedArrays){var C=u=v=void 0,J=void 0,H=C=void 0,qa=void 0,K=void 0,ja=void 0,ia=T=A=x=O=z=w=void 0,G=void 0,L=void 0,
+I=J=ja=J=K=qa=void 0,B=void 0,Q=B=I=qa=void 0,U=void 0,aa=Q=B=I=C=C=H=ja=J=Q=B=I=U=Q=B=I=U=Q=B=I=void 0,P=0,na=0,ca=0,Z=0,ra=0,Y=0,R=0,ya=0,W=0,S=0,oa=0,Q=I=0,Q=void 0,ha=t.__vertexArray,wa=t.__uvArray,va=t.__uv2Array,ma=t.__normalArray,ea=t.__tangentArray,fa=t.__colorArray,ka=t.__skinVertexAArray,$=t.__skinVertexBArray,da=t.__skinIndexArray,ga=t.__skinWeightArray,pa=t.__morphTargetsArrays,la=t.__webglCustomAttributes,B=void 0,za=t.__faceArray,sa=t.__lineArray,Ia=t.__needsSmoothNormals,z=t.__vertexColorType,
+w=t.__uvType,O=t.__normalType,ua=k.geometry,Ea=ua.__dirtyVertices,Ca=ua.__dirtyElements,Ba=ua.__dirtyUvs,Ka=ua.__dirtyNormals,Ga=ua.__dirtyTangents,Da=ua.__dirtyColors,Fa=ua.__dirtyMorphTargets,Ja=ua.vertices,cb=t.faces,fb=ua.faces,db=ua.faceVertexUvs[0],eb=ua.faceVertexUvs[1],Sa=ua.skinVerticesA,Ta=ua.skinVerticesB,Ua=ua.skinIndices,Ma=ua.skinWeights,La=ua.morphTargets;if(la)for(aa in la)la[aa].offset=0,la[aa].offsetSrc=0;v=0;for(u=cb.length;v<u;v++)if(C=cb[v],J=fb[C],db&&(x=db[C]),eb&&(A=eb[C]),
+C=J.vertexNormals,H=J.normal,qa=J.vertexColors,K=J.color,ja=J.vertexTangents,J instanceof THREE.Face3){if(Ea)T=Ja[J.a].position,ia=Ja[J.b].position,G=Ja[J.c].position,ha[na]=T.x,ha[na+1]=T.y,ha[na+2]=T.z,ha[na+3]=ia.x,ha[na+4]=ia.y,ha[na+5]=ia.z,ha[na+6]=G.x,ha[na+7]=G.y,ha[na+8]=G.z,na+=9;if(la)for(aa in la)if(B=la[aa],B.__original.needsUpdate)I=B.offset,Q=B.offsetSrc,B.size===1?(B.boundTo===void 0||B.boundTo==="vertices"?(B.array[I]=B.value[J.a],B.array[I+1]=B.value[J.b],B.array[I+2]=B.value[J.c]):
+B.boundTo==="faces"?(Q=B.value[Q],B.array[I]=Q,B.array[I+1]=Q,B.array[I+2]=Q,B.offsetSrc++):B.boundTo==="faceVertices"&&(B.array[I]=B.value[Q],B.array[I+1]=B.value[Q+1],B.array[I+2]=B.value[Q+2],B.offsetSrc+=3),B.offset+=3):(B.boundTo===void 0||B.boundTo==="vertices"?(T=B.value[J.a],ia=B.value[J.b],G=B.value[J.c]):B.boundTo==="faces"?(G=ia=T=Q=B.value[Q],B.offsetSrc++):B.boundTo==="faceVertices"&&(T=B.value[Q],ia=B.value[Q+1],G=B.value[Q+2],B.offsetSrc+=3),B.size===2?(B.array[I]=T.x,B.array[I+1]=
+T.y,B.array[I+2]=ia.x,B.array[I+3]=ia.y,B.array[I+4]=G.x,B.array[I+5]=G.y,B.offset+=6):B.size===3?(B.type==="c"?(B.array[I]=T.r,B.array[I+1]=T.g,B.array[I+2]=T.b,B.array[I+3]=ia.r,B.array[I+4]=ia.g,B.array[I+5]=ia.b,B.array[I+6]=G.r,B.array[I+7]=G.g,B.array[I+8]=G.b):(B.array[I]=T.x,B.array[I+1]=T.y,B.array[I+2]=T.z,B.array[I+3]=ia.x,B.array[I+4]=ia.y,B.array[I+5]=ia.z,B.array[I+6]=G.x,B.array[I+7]=G.y,B.array[I+8]=G.z),B.offset+=9):(B.array[I]=T.x,B.array[I+1]=T.y,B.array[I+2]=T.z,B.array[I+3]=T.w,
+B.array[I+4]=ia.x,B.array[I+5]=ia.y,B.array[I+6]=ia.z,B.array[I+7]=ia.w,B.array[I+8]=G.x,B.array[I+9]=G.y,B.array[I+10]=G.z,B.array[I+11]=G.w,B.offset+=12));if(Fa){I=0;for(B=La.length;I<B;I++)T=La[I].vertices[J.a].position,ia=La[I].vertices[J.b].position,G=La[I].vertices[J.c].position,Q=pa[I],Q[oa]=T.x,Q[oa+1]=T.y,Q[oa+2]=T.z,Q[oa+3]=ia.x,Q[oa+4]=ia.y,Q[oa+5]=ia.z,Q[oa+6]=G.x,Q[oa+7]=G.y,Q[oa+8]=G.z;oa+=9}if(Ma.length)I=Ma[J.a],B=Ma[J.b],Q=Ma[J.c],ga[S]=I.x,ga[S+1]=I.y,ga[S+2]=I.z,ga[S+3]=I.w,ga[S+
+4]=B.x,ga[S+5]=B.y,ga[S+6]=B.z,ga[S+7]=B.w,ga[S+8]=Q.x,ga[S+9]=Q.y,ga[S+10]=Q.z,ga[S+11]=Q.w,I=Ua[J.a],B=Ua[J.b],Q=Ua[J.c],da[S]=I.x,da[S+1]=I.y,da[S+2]=I.z,da[S+3]=I.w,da[S+4]=B.x,da[S+5]=B.y,da[S+6]=B.z,da[S+7]=B.w,da[S+8]=Q.x,da[S+9]=Q.y,da[S+10]=Q.z,da[S+11]=Q.w,I=Sa[J.a],B=Sa[J.b],Q=Sa[J.c],ka[S]=I.x,ka[S+1]=I.y,ka[S+2]=I.z,ka[S+3]=1,ka[S+4]=B.x,ka[S+5]=B.y,ka[S+6]=B.z,ka[S+7]=1,ka[S+8]=Q.x,ka[S+9]=Q.y,ka[S+10]=Q.z,ka[S+11]=1,I=Ta[J.a],B=Ta[J.b],Q=Ta[J.c],$[S]=I.x,$[S+1]=I.y,$[S+2]=I.z,$[S+3]=
+1,$[S+4]=B.x,$[S+5]=B.y,$[S+6]=B.z,$[S+7]=1,$[S+8]=Q.x,$[S+9]=Q.y,$[S+10]=Q.z,$[S+11]=1,S+=12;if(Da&&z)qa.length==3&&z==THREE.VertexColors?(J=qa[0],I=qa[1],B=qa[2]):B=I=J=K,fa[W]=J.r,fa[W+1]=J.g,fa[W+2]=J.b,fa[W+3]=I.r,fa[W+4]=I.g,fa[W+5]=I.b,fa[W+6]=B.r,fa[W+7]=B.g,fa[W+8]=B.b,W+=9;if(Ga&&ua.hasTangents)qa=ja[0],K=ja[1],J=ja[2],ea[R]=qa.x,ea[R+1]=qa.y,ea[R+2]=qa.z,ea[R+3]=qa.w,ea[R+4]=K.x,ea[R+5]=K.y,ea[R+6]=K.z,ea[R+7]=K.w,ea[R+8]=J.x,ea[R+9]=J.y,ea[R+10]=J.z,ea[R+11]=J.w,R+=12;if(Ka&&O)if(C.length==
+3&&Ia)for(ja=0;ja<3;ja++)H=C[ja],ma[Y]=H.x,ma[Y+1]=H.y,ma[Y+2]=H.z,Y+=3;else for(ja=0;ja<3;ja++)ma[Y]=H.x,ma[Y+1]=H.y,ma[Y+2]=H.z,Y+=3;if(Ba&&x!==void 0&&w)for(ja=0;ja<3;ja++)C=x[ja],wa[ca]=C.u,wa[ca+1]=C.v,ca+=2;if(Ba&&A!==void 0&&w)for(ja=0;ja<3;ja++)C=A[ja],va[Z]=C.u,va[Z+1]=C.v,Z+=2;Ca&&(za[ra]=P,za[ra+1]=P+1,za[ra+2]=P+2,ra+=3,sa[ya]=P,sa[ya+1]=P+1,sa[ya+2]=P,sa[ya+3]=P+2,sa[ya+4]=P+1,sa[ya+5]=P+2,ya+=6,P+=3)}else if(J instanceof THREE.Face4){if(Ea)T=Ja[J.a].position,ia=Ja[J.b].position,G=Ja[J.c].position,
+L=Ja[J.d].position,ha[na]=T.x,ha[na+1]=T.y,ha[na+2]=T.z,ha[na+3]=ia.x,ha[na+4]=ia.y,ha[na+5]=ia.z,ha[na+6]=G.x,ha[na+7]=G.y,ha[na+8]=G.z,ha[na+9]=L.x,ha[na+10]=L.y,ha[na+11]=L.z,na+=12;if(la)for(aa in la)if(B=la[aa],B.__original.needsUpdate)I=B.offset,Q=B.offsetSrc,B.size===1?(B.boundTo===void 0||B.boundTo==="vertices"?(B.array[I]=B.value[J.a],B.array[I+1]=B.value[J.b],B.array[I+2]=B.value[J.c],B.array[I+3]=B.value[J.d]):B.boundTo==="faces"?(Q=B.value[Q],B.array[I]=Q,B.array[I+1]=Q,B.array[I+2]=Q,
+B.array[I+3]=Q,B.offsetSrc++):B.boundTo==="faceVertices"&&(B.array[I]=B.value[Q],B.array[I+1]=B.value[Q+1],B.array[I+2]=B.value[Q+2],B.array[I+3]=B.value[Q+3],B.offsetSrc+=4),B.offset+=4):(B.boundTo===void 0||B.boundTo==="vertices"?(T=B.value[J.a],ia=B.value[J.b],G=B.value[J.c],L=B.value[J.d]):B.boundTo==="faces"?(L=G=ia=T=Q=B.value[Q],B.offsetSrc++):B.boundTo==="faceVertices"&&(T=B.value[Q],ia=B.value[Q+1],G=B.value[Q+2],L=B.value[Q+3],B.offsetSrc+=4),B.size===2?(B.array[I]=T.x,B.array[I+1]=T.y,
+B.array[I+2]=ia.x,B.array[I+3]=ia.y,B.array[I+4]=G.x,B.array[I+5]=G.y,B.array[I+6]=L.x,B.array[I+7]=L.y,B.offset+=8):B.size===3?(B.type==="c"?(B.array[I]=T.r,B.array[I+1]=T.g,B.array[I+2]=T.b,B.array[I+3]=ia.r,B.array[I+4]=ia.g,B.array[I+5]=ia.b,B.array[I+6]=G.r,B.array[I+7]=G.g,B.array[I+8]=G.b,B.array[I+9]=L.r,B.array[I+10]=L.g,B.array[I+11]=L.b):(B.array[I]=T.x,B.array[I+1]=T.y,B.array[I+2]=T.z,B.array[I+3]=ia.x,B.array[I+4]=ia.y,B.array[I+5]=ia.z,B.array[I+6]=G.x,B.array[I+7]=G.y,B.array[I+8]=
+G.z,B.array[I+9]=L.x,B.array[I+10]=L.y,B.array[I+11]=L.z),B.offset+=12):(B.array[I]=T.x,B.array[I+1]=T.y,B.array[I+2]=T.z,B.array[I+3]=T.w,B.array[I+4]=ia.x,B.array[I+5]=ia.y,B.array[I+6]=ia.z,B.array[I+7]=ia.w,B.array[I+8]=G.x,B.array[I+9]=G.y,B.array[I+10]=G.z,B.array[I+11]=G.w,B.array[I+12]=L.x,B.array[I+13]=L.y,B.array[I+14]=L.z,B.array[I+15]=L.w,B.offset+=16));if(Fa){I=0;for(B=La.length;I<B;I++)T=La[I].vertices[J.a].position,ia=La[I].vertices[J.b].position,G=La[I].vertices[J.c].position,L=La[I].vertices[J.d].position,
+Q=pa[I],Q[oa]=T.x,Q[oa+1]=T.y,Q[oa+2]=T.z,Q[oa+3]=ia.x,Q[oa+4]=ia.y,Q[oa+5]=ia.z,Q[oa+6]=G.x,Q[oa+7]=G.y,Q[oa+8]=G.z,Q[oa+9]=L.x,Q[oa+10]=L.y,Q[oa+11]=L.z;oa+=12}if(Ma.length)I=Ma[J.a],B=Ma[J.b],Q=Ma[J.c],U=Ma[J.d],ga[S]=I.x,ga[S+1]=I.y,ga[S+2]=I.z,ga[S+3]=I.w,ga[S+4]=B.x,ga[S+5]=B.y,ga[S+6]=B.z,ga[S+7]=B.w,ga[S+8]=Q.x,ga[S+9]=Q.y,ga[S+10]=Q.z,ga[S+11]=Q.w,ga[S+12]=U.x,ga[S+13]=U.y,ga[S+14]=U.z,ga[S+15]=U.w,I=Ua[J.a],B=Ua[J.b],Q=Ua[J.c],U=Ua[J.d],da[S]=I.x,da[S+1]=I.y,da[S+2]=I.z,da[S+3]=I.w,da[S+
+4]=B.x,da[S+5]=B.y,da[S+6]=B.z,da[S+7]=B.w,da[S+8]=Q.x,da[S+9]=Q.y,da[S+10]=Q.z,da[S+11]=Q.w,da[S+12]=U.x,da[S+13]=U.y,da[S+14]=U.z,da[S+15]=U.w,I=Sa[J.a],B=Sa[J.b],Q=Sa[J.c],U=Sa[J.d],ka[S]=I.x,ka[S+1]=I.y,ka[S+2]=I.z,ka[S+3]=1,ka[S+4]=B.x,ka[S+5]=B.y,ka[S+6]=B.z,ka[S+7]=1,ka[S+8]=Q.x,ka[S+9]=Q.y,ka[S+10]=Q.z,ka[S+11]=1,ka[S+12]=U.x,ka[S+13]=U.y,ka[S+14]=U.z,ka[S+15]=1,I=Ta[J.a],B=Ta[J.b],Q=Ta[J.c],J=Ta[J.d],$[S]=I.x,$[S+1]=I.y,$[S+2]=I.z,$[S+3]=1,$[S+4]=B.x,$[S+5]=B.y,$[S+6]=B.z,$[S+7]=1,$[S+8]=
+Q.x,$[S+9]=Q.y,$[S+10]=Q.z,$[S+11]=1,$[S+12]=J.x,$[S+13]=J.y,$[S+14]=J.z,$[S+15]=1,S+=16;if(Da&&z)qa.length==4&&z==THREE.VertexColors?(J=qa[0],I=qa[1],B=qa[2],qa=qa[3]):qa=B=I=J=K,fa[W]=J.r,fa[W+1]=J.g,fa[W+2]=J.b,fa[W+3]=I.r,fa[W+4]=I.g,fa[W+5]=I.b,fa[W+6]=B.r,fa[W+7]=B.g,fa[W+8]=B.b,fa[W+9]=qa.r,fa[W+10]=qa.g,fa[W+11]=qa.b,W+=12;if(Ga&&ua.hasTangents)qa=ja[0],K=ja[1],J=ja[2],ja=ja[3],ea[R]=qa.x,ea[R+1]=qa.y,ea[R+2]=qa.z,ea[R+3]=qa.w,ea[R+4]=K.x,ea[R+5]=K.y,ea[R+6]=K.z,ea[R+7]=K.w,ea[R+8]=J.x,ea[R+
+9]=J.y,ea[R+10]=J.z,ea[R+11]=J.w,ea[R+12]=ja.x,ea[R+13]=ja.y,ea[R+14]=ja.z,ea[R+15]=ja.w,R+=16;if(Ka&&O)if(C.length==4&&Ia)for(ja=0;ja<4;ja++)H=C[ja],ma[Y]=H.x,ma[Y+1]=H.y,ma[Y+2]=H.z,Y+=3;else for(ja=0;ja<4;ja++)ma[Y]=H.x,ma[Y+1]=H.y,ma[Y+2]=H.z,Y+=3;if(Ba&&x!==void 0&&w)for(ja=0;ja<4;ja++)C=x[ja],wa[ca]=C.u,wa[ca+1]=C.v,ca+=2;if(Ba&&A!==void 0&&w)for(ja=0;ja<4;ja++)C=A[ja],va[Z]=C.u,va[Z+1]=C.v,Z+=2;Ca&&(za[ra]=P,za[ra+1]=P+1,za[ra+2]=P+3,za[ra+3]=P+1,za[ra+4]=P+2,za[ra+5]=P+3,ra+=6,sa[ya]=P,sa[ya+
+1]=P+1,sa[ya+2]=P,sa[ya+3]=P+3,sa[ya+4]=P+1,sa[ya+5]=P+2,sa[ya+6]=P+2,sa[ya+7]=P+3,ya+=8,P+=4)}Ea&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglVertexBuffer),o.bufferData(o.ARRAY_BUFFER,ha,y));if(la)for(aa in la)B=la[aa],B.__original.needsUpdate&&(o.bindBuffer(o.ARRAY_BUFFER,B.buffer),o.bufferData(o.ARRAY_BUFFER,B.array,y));if(Fa){I=0;for(B=La.length;I<B;I++)o.bindBuffer(o.ARRAY_BUFFER,t.__webglMorphTargetsBuffers[I]),o.bufferData(o.ARRAY_BUFFER,pa[I],y)}Da&&W>0&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglColorBuffer),
+o.bufferData(o.ARRAY_BUFFER,fa,y));Ka&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglNormalBuffer),o.bufferData(o.ARRAY_BUFFER,ma,y));Ga&&ua.hasTangents&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglTangentBuffer),o.bufferData(o.ARRAY_BUFFER,ea,y));Ba&&ca>0&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglUVBuffer),o.bufferData(o.ARRAY_BUFFER,wa,y));Ba&&Z>0&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglUV2Buffer),o.bufferData(o.ARRAY_BUFFER,va,y));Ca&&(o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,t.__webglFaceBuffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,
+za,y),o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,t.__webglLineBuffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,sa,y));S>0&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglSkinVertexABuffer),o.bufferData(o.ARRAY_BUFFER,ka,y),o.bindBuffer(o.ARRAY_BUFFER,t.__webglSkinVertexBBuffer),o.bufferData(o.ARRAY_BUFFER,$,y),o.bindBuffer(o.ARRAY_BUFFER,t.__webglSkinIndicesBuffer),o.bufferData(o.ARRAY_BUFFER,da,y),o.bindBuffer(o.ARRAY_BUFFER,t.__webglSkinWeightsBuffer),o.bufferData(o.ARRAY_BUFFER,ga,y));V&&(delete t.__inittedArrays,
+delete t.__colorArray,delete t.__normalArray,delete t.__tangentArray,delete t.__uvArray,delete t.__uv2Array,delete t.__faceArray,delete t.__vertexArray,delete t.__lineArray,delete t.__skinVertexAArray,delete t.__skinVertexBArray,delete t.__skinIndexArray,delete t.__skinWeightArray)}h.__dirtyVertices=!1;h.__dirtyMorphTargets=!1;h.__dirtyElements=!1;h.__dirtyUvs=!1;h.__dirtyNormals=!1;h.__dirtyTangents=!1;h.__dirtyColors=!1;D(m)}else if(k instanceof THREE.Ribbon){h=k.geometry;if(h.__dirtyVertices||
+h.__dirtyColors){k=h;m=o.DYNAMIC_DRAW;n=v=V=V=void 0;u=k.vertices;p=k.colors;w=u.length;t=p.length;z=k.__vertexArray;y=k.__colorArray;O=k.__dirtyColors;if(k.__dirtyVertices){for(V=0;V<w;V++)v=u[V].position,n=V*3,z[n]=v.x,z[n+1]=v.y,z[n+2]=v.z;o.bindBuffer(o.ARRAY_BUFFER,k.__webglVertexBuffer);o.bufferData(o.ARRAY_BUFFER,z,m)}if(O){for(V=0;V<t;V++)color=p[V],n=V*3,y[n]=color.r,y[n+1]=color.g,y[n+2]=color.b;o.bindBuffer(o.ARRAY_BUFFER,k.__webglColorBuffer);o.bufferData(o.ARRAY_BUFFER,y,m)}}h.__dirtyVertices=
+!1;h.__dirtyColors=!1}else if(k instanceof THREE.Line){h=k.geometry;if(h.__dirtyVertices||h.__dirtyColors){k=h;m=o.DYNAMIC_DRAW;n=v=V=V=void 0;u=k.vertices;p=k.colors;w=u.length;t=p.length;z=k.__vertexArray;y=k.__colorArray;O=k.__dirtyColors;if(k.__dirtyVertices){for(V=0;V<w;V++)v=u[V].position,n=V*3,z[n]=v.x,z[n+1]=v.y,z[n+2]=v.z;o.bindBuffer(o.ARRAY_BUFFER,k.__webglVertexBuffer);o.bufferData(o.ARRAY_BUFFER,z,m)}if(O){for(V=0;V<t;V++)color=p[V],n=V*3,y[n]=color.r,y[n+1]=color.g,y[n+2]=color.b;o.bindBuffer(o.ARRAY_BUFFER,
+k.__webglColorBuffer);o.bufferData(o.ARRAY_BUFFER,y,m)}}h.__dirtyVertices=!1;h.__dirtyColors=!1}else if(k instanceof THREE.ParticleSystem)h=k.geometry,t=E(h),(h.__dirtyVertices||h.__dirtyColors||k.sortParticles||t)&&c(h,o.DYNAMIC_DRAW,k),h.__dirtyVertices=!1,h.__dirtyColors=!1,D(h)};this.setFaceCulling=function(b,e){b?(!e||e=="ccw"?o.frontFace(o.CCW):o.frontFace(o.CW),b=="back"?o.cullFace(o.BACK):b=="front"?o.cullFace(o.FRONT):o.cullFace(o.FRONT_AND_BACK),o.enable(o.CULL_FACE)):o.disable(o.CULL_FACE)};
+this.supportsVertexTextures=function(){return Ga}};
+THREE.WebGLRenderTarget=function(b,c,e){this.width=b;this.height=c;e=e||{};this.wrapS=e.wrapS!==void 0?e.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=e.wrapT!==void 0?e.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=e.magFilter!==void 0?e.magFilter:THREE.LinearFilter;this.minFilter=e.minFilter!==void 0?e.minFilter:THREE.LinearMipMapLinearFilter;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=e.format!==void 0?e.format:THREE.RGBAFormat;this.type=e.type!==void 0?e.type:
+THREE.UnsignedByteType;this.depthBuffer=e.depthBuffer!==void 0?e.depthBuffer:!0;this.stencilBuffer=e.stencilBuffer!==void 0?e.stencilBuffer:!0};
+THREE.WebGLRenderTarget.prototype.clone=function(){var b=new THREE.WebGLRenderTarget(this.width,this.height);b.wrapS=this.wrapS;b.wrapT=this.wrapT;b.magFilter=this.magFilter;b.minFilter=this.minFilter;b.offset.copy(this.offset);b.repeat.copy(this.repeat);b.format=this.format;b.type=this.type;b.depthBuffer=this.depthBuffer;b.stencilBuffer=this.stencilBuffer;return b};THREE.WebGLRenderTargetCube=function(b,c,e){THREE.WebGLRenderTarget.call(this,b,c,e);this.activeCubeFace=0};
+THREE.WebGLRenderTargetCube.prototype=new THREE.WebGLRenderTarget;THREE.WebGLRenderTargetCube.prototype.constructor=THREE.WebGLRenderTargetCube;THREE.RenderableVertex=function(){this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.visible=!0};THREE.RenderableVertex.prototype.copy=function(b){this.positionWorld.copy(b.positionWorld);this.positionScreen.copy(b.positionScreen)};
+THREE.RenderableFace3=function(){this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.v3=new THREE.RenderableVertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.faceMaterials=this.meshMaterials=null;this.overdraw=!1;this.uvs=[[]];this.z=null};
+THREE.RenderableFace4=function(){this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.v3=new THREE.RenderableVertex;this.v4=new THREE.RenderableVertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.faceMaterials=this.meshMaterials=null;this.overdraw=!1;this.uvs=[[]];this.z=null};
+THREE.RenderableObject=function(){this.z=this.object=null};THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.materials=null};THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.materials=null};
+THREE.ColorUtils={adjustHSV:function(b,c,e,f){var h=THREE.ColorUtils.__hsv;THREE.ColorUtils.rgbToHsv(b,h);h.h=THREE.ColorUtils.clamp(h.h+c,0,1);h.s=THREE.ColorUtils.clamp(h.s+e,0,1);h.v=THREE.ColorUtils.clamp(h.v+f,0,1);b.setHSV(h.h,h.s,h.v)},rgbToHsv:function(b,c){var e=b.r,f=b.g,h=b.b,k=Math.max(Math.max(e,f),h),m=Math.min(Math.min(e,f),h);if(m==k)m=e=0;else{var n=k-m,m=n/k,e=e==k?(f-h)/n:f==k?2+(h-e)/n:4+(e-f)/n;e/=6;e<0&&(e+=1);e>1&&(e-=1)}c===void 0&&(c={h:0,s:0,v:0});c.h=e;c.s=m;c.v=k;return c},
+clamp:function(b,c,e){return b<c?c:b>e?e:b}};THREE.ColorUtils.__hsv={h:0,s:0,v:0};
+THREE.GeometryUtils={merge:function(b,c){var e,f,h=b.vertices.length,k=c instanceof THREE.Mesh?c.geometry:c,m=b.vertices,n=k.vertices,t=b.faces,u=k.faces,v=b.faceVertexUvs[0],k=k.faceVertexUvs[0];if(c instanceof THREE.Mesh)c.matrixAutoUpdate&&c.updateMatrix(),e=c.matrix,f=new THREE.Matrix4,f.extractRotation(e,c.scale);for(var p=0,x=n.length;p<x;p++){var w=new THREE.Vertex(n[p].position.clone());e&&e.multiplyVector3(w.position);m.push(w)}p=0;for(x=u.length;p<x;p++){var w=u[p],A,z,y=w.vertexNormals,
+C=w.vertexColors;w instanceof THREE.Face3?A=new THREE.Face3(w.a+h,w.b+h,w.c+h):w instanceof THREE.Face4&&(A=new THREE.Face4(w.a+h,w.b+h,w.c+h,w.d+h));A.normal.copy(w.normal);f&&f.multiplyVector3(A.normal);m=0;for(n=y.length;m<n;m++)z=y[m].clone(),f&&f.multiplyVector3(z),A.vertexNormals.push(z);A.color.copy(w.color);m=0;for(n=C.length;m<n;m++)z=C[m],A.vertexColors.push(z.clone());A.materials=w.materials.slice();A.centroid.copy(w.centroid);e&&e.multiplyVector3(A.centroid);t.push(A)}p=0;for(x=k.length;p<
+x;p++){e=k[p];f=[];m=0;for(n=e.length;m<n;m++)f.push(new THREE.UV(e[m].u,e[m].v));v.push(f)}},clone:function(b){var c=new THREE.Geometry,e,f=b.vertices,h=b.faces,k=b.faceVertexUvs[0],b=0;for(e=f.length;b<e;b++){var m=new THREE.Vertex(f[b].position.clone());c.vertices.push(m)}b=0;for(e=h.length;b<e;b++){var n=h[b],t,u,v=n.vertexNormals,p=n.vertexColors;n instanceof THREE.Face3?t=new THREE.Face3(n.a,n.b,n.c):n instanceof THREE.Face4&&(t=new THREE.Face4(n.a,n.b,n.c,n.d));t.normal.copy(n.normal);f=0;
+for(m=v.length;f<m;f++)u=v[f],t.vertexNormals.push(u.clone());t.color.copy(n.color);f=0;for(m=p.length;f<m;f++)u=p[f],t.vertexColors.push(u.clone());t.materials=n.materials.slice();t.centroid.copy(n.centroid);c.faces.push(t)}b=0;for(e=k.length;b<e;b++){h=k[b];t=[];f=0;for(m=h.length;f<m;f++)t.push(new THREE.UV(h[f].u,h[f].v));c.faceVertexUvs[0].push(t)}return c},randomPointInTriangle:function(b,c,e){var f,h,k,m=new THREE.Vector3,n=THREE.GeometryUtils.__v1;f=THREE.GeometryUtils.random();h=THREE.GeometryUtils.random();
+f+h>1&&(f=1-f,h=1-h);k=1-f-h;m.copy(b);m.multiplyScalar(f);n.copy(c);n.multiplyScalar(h);m.addSelf(n);n.copy(e);n.multiplyScalar(k);m.addSelf(n);return m},randomPointInFace:function(b,c,e){var f,h,k;if(b instanceof THREE.Face3)return f=c.vertices[b.a].position,h=c.vertices[b.b].position,k=c.vertices[b.c].position,THREE.GeometryUtils.randomPointInTriangle(f,h,k);else if(b instanceof THREE.Face4){f=c.vertices[b.a].position;h=c.vertices[b.b].position;k=c.vertices[b.c].position;var c=c.vertices[b.d].position,
+m;e?b._area1&&b._area2?(e=b._area1,m=b._area2):(e=THREE.GeometryUtils.triangleArea(f,h,c),m=THREE.GeometryUtils.triangleArea(h,k,c),b._area1=e,b._area2=m):(e=THREE.GeometryUtils.triangleArea(f,h,c),m=THREE.GeometryUtils.triangleArea(h,k,c));return THREE.GeometryUtils.random()*(e+m)<e?THREE.GeometryUtils.randomPointInTriangle(f,h,c):THREE.GeometryUtils.randomPointInTriangle(h,k,c)}},randomPointsInGeometry:function(b,c){function e(b){function e(c,f){if(f<c)return c;var h=c+Math.floor((f-c)/2);return u[h]>
+b?e(c,h-1):u[h]<b?e(h+1,f):h}return e(0,u.length-1)}var f,h,k=b.faces,m=b.vertices,n=k.length,t=0,u=[],v,p,x,w;for(h=0;h<n;h++){f=k[h];if(f instanceof THREE.Face3)v=m[f.a].position,p=m[f.b].position,x=m[f.c].position,f._area=THREE.GeometryUtils.triangleArea(v,p,x);else if(f instanceof THREE.Face4)v=m[f.a].position,p=m[f.b].position,x=m[f.c].position,w=m[f.d].position,f._area1=THREE.GeometryUtils.triangleArea(v,p,w),f._area2=THREE.GeometryUtils.triangleArea(p,x,w),f._area=f._area1+f._area2;t+=f._area;
+u[h]=t}f=[];m={};for(h=0;h<c;h++)n=THREE.GeometryUtils.random()*t,n=e(n),f[h]=THREE.GeometryUtils.randomPointInFace(k[n],b,!0),m[n]?m[n]+=1:m[n]=1;return f},triangleArea:function(b,c,e){var f,h=THREE.GeometryUtils.__v1;h.sub(b,c);f=h.length();h.sub(b,e);b=h.length();h.sub(c,e);e=h.length();c=0.5*(f+b+e);return Math.sqrt(c*(c-f)*(c-b)*(c-e))},random16:function(){return(65280*Math.random()+255*Math.random())/65535},center:function(b){b.computeBoundingBox();var c=new THREE.Matrix4;c.setTranslation(-0.5*
+(b.boundingBox.x[1]+b.boundingBox.x[0]),-0.5*(b.boundingBox.y[1]+b.boundingBox.y[0]),-0.5*(b.boundingBox.z[1]+b.boundingBox.z[0]));b.applyMatrix(c);b.computeBoundingBox()}};THREE.GeometryUtils.random=THREE.GeometryUtils.random16;THREE.GeometryUtils.__v1=new THREE.Vector3;
+THREE.ImageUtils={loadTexture:function(b,c,e){var f=new Image,h=new THREE.Texture(f,c);f.onload=function(){h.needsUpdate=!0;e&&e(this)};f.crossOrigin="";f.src=b;return h},loadTextureCube:function(b,c,e){var f,h=[],k=new THREE.Texture(h,c),c=h.loadCount=0;for(f=b.length;c<f;++c)h[c]=new Image,h[c].onload=function(){h.loadCount+=1;if(h.loadCount==6)k.needsUpdate=!0;e&&e(this)},h[c].crossOrigin="",h[c].src=b[c];return k},getNormalMap:function(b,c){var e=function(b){var e=Math.sqrt(b[0]*b[0]+b[1]*b[1]+
+b[2]*b[2]);return[b[0]/e,b[1]/e,b[2]/e]};c|=1;var f=b.width,h=b.height,k=document.createElement("canvas");k.width=f;k.height=h;var m=k.getContext("2d");m.drawImage(b,0,0);for(var n=m.getImageData(0,0,f,h).data,t=m.createImageData(f,h),u=t.data,v=0;v<f;v++)for(var p=1;p<h;p++){var x=p-1<0?h-1:p-1,w=(p+1)%h,A=v-1<0?f-1:v-1,z=(v+1)%f,y=[],C=[0,0,n[(p*f+v)*4]/255*c];y.push([-1,0,n[(p*f+A)*4]/255*c]);y.push([-1,-1,n[(x*f+A)*4]/255*c]);y.push([0,-1,n[(x*f+v)*4]/255*c]);y.push([1,-1,n[(x*f+z)*4]/255*c]);
+y.push([1,0,n[(p*f+z)*4]/255*c]);y.push([1,1,n[(w*f+z)*4]/255*c]);y.push([0,1,n[(w*f+v)*4]/255*c]);y.push([-1,1,n[(w*f+A)*4]/255*c]);x=[];A=y.length;for(w=0;w<A;w++){var z=y[w],E=y[(w+1)%A],z=[z[0]-C[0],z[1]-C[1],z[2]-C[2]],E=[E[0]-C[0],E[1]-C[1],E[2]-C[2]];x.push(e([z[1]*E[2]-z[2]*E[1],z[2]*E[0]-z[0]*E[2],z[0]*E[1]-z[1]*E[0]]))}y=[0,0,0];for(w=0;w<x.length;w++)y[0]+=x[w][0],y[1]+=x[w][1],y[2]+=x[w][2];y[0]/=x.length;y[1]/=x.length;y[2]/=x.length;C=(p*f+v)*4;u[C]=(y[0]+1)/2*255|0;u[C+1]=(y[1]+0.5)*
+255|0;u[C+2]=y[2]*255|0;u[C+3]=255}m.putImageData(t,0,0);return k}};THREE.SceneUtils={showHierarchy:function(b,c){THREE.SceneUtils.traverseHierarchy(b,function(b){b.visible=c})},traverseHierarchy:function(b,c){var e,f,h=b.children.length;for(f=0;f<h;f++)e=b.children[f],c(e),THREE.SceneUtils.traverseHierarchy(e,c)}};
+if(THREE.WebGLRenderer)THREE.ShaderUtils={lib:{fresnel:{uniforms:{mRefractionRatio:{type:"f",value:1.02},mFresnelBias:{type:"f",value:0.1},mFresnelPower:{type:"f",value:2},mFresnelScale:{type:"f",value:1},tCube:{type:"t",value:1,texture:null}},fragmentShader:"uniform samplerCube tCube;\nvarying vec3 vReflect;\nvarying vec3 vRefract[3];\nvarying float vReflectionFactor;\nvoid main() {\nvec4 reflectedColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );\nvec4 refractedColor = vec4( 1.0, 1.0, 1.0, 1.0 );\nrefractedColor.r = textureCube( tCube, vec3( -vRefract[0].x, vRefract[0].yz ) ).r;\nrefractedColor.g = textureCube( tCube, vec3( -vRefract[1].x, vRefract[1].yz ) ).g;\nrefractedColor.b = textureCube( tCube, vec3( -vRefract[2].x, vRefract[2].yz ) ).b;\nrefractedColor.a = 1.0;\ngl_FragColor = mix( refractedColor, reflectedColor, clamp( vReflectionFactor, 0.0, 1.0 ) );\n}",
+vertexShader:"uniform float mRefractionRatio;\nuniform float mFresnelBias;\nuniform float mFresnelScale;\nuniform float mFresnelPower;\nvarying vec3 vReflect;\nvarying vec3 vRefract[3];\nvarying float vReflectionFactor;\nvoid main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\nvec3 nWorld = normalize ( mat3( objectMatrix[0].xyz, objectMatrix[1].xyz, objectMatrix[2].xyz ) * normal );\nvec3 I = mPosition.xyz - cameraPosition;\nvReflect = reflect( I, nWorld );\nvRefract[0] = refract( normalize( I ), nWorld, mRefractionRatio );\nvRefract[1] = refract( normalize( I ), nWorld, mRefractionRatio * 0.99 );\nvRefract[2] = refract( normalize( I ), nWorld, mRefractionRatio * 0.98 );\nvReflectionFactor = mFresnelBias + mFresnelScale * pow( 1.0 + dot( normalize( I ), nWorld ), mFresnelPower );\ngl_Position = projectionMatrix * mvPosition;\n}"},
+normal:{uniforms:THREE.UniformsUtils.merge([THREE.UniformsLib.fog,THREE.UniformsLib.lights,THREE.UniformsLib.shadowmap,{enableAO:{type:"i",value:0},enableDiffuse:{type:"i",value:0},enableSpecular:{type:"i",value:0},enableReflection:{type:"i",value:0},tDiffuse:{type:"t",value:0,texture:null},tCube:{type:"t",value:1,texture:null},tNormal:{type:"t",value:2,texture:null},tSpecular:{type:"t",value:3,texture:null},tAO:{type:"t",value:4,texture:null},tDisplacement:{type:"t",value:5,texture:null},uNormalScale:{type:"f",
+value:1},uDisplacementBias:{type:"f",value:0},uDisplacementScale:{type:"f",value:1},uDiffuseColor:{type:"c",value:new THREE.Color(15658734)},uSpecularColor:{type:"c",value:new THREE.Color(1118481)},uAmbientColor:{type:"c",value:new THREE.Color(328965)},uShininess:{type:"f",value:30},uOpacity:{type:"f",value:1},uReflectivity:{type:"f",value:0.5},uOffset:{type:"v2",value:new THREE.Vector2(0,0)},uRepeat:{type:"v2",value:new THREE.Vector2(1,1)}}]),fragmentShader:["uniform vec3 uAmbientColor;\nuniform vec3 uDiffuseColor;\nuniform vec3 uSpecularColor;\nuniform float uShininess;\nuniform float uOpacity;\nuniform bool enableDiffuse;\nuniform bool enableSpecular;\nuniform bool enableAO;\nuniform bool enableReflection;\nuniform sampler2D tDiffuse;\nuniform sampler2D tNormal;\nuniform sampler2D tSpecular;\nuniform sampler2D tAO;\nuniform samplerCube tCube;\nuniform float uNormalScale;\nuniform float uReflectivity;\nvarying vec3 vTangent;\nvarying vec3 vBinormal;\nvarying vec3 vNormal;\nvarying vec2 vUv;\nuniform vec3 ambientLightColor;\n#if MAX_DIR_LIGHTS > 0\nuniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];\nuniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];\n#endif\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];\nvarying vec4 vPointLight[ MAX_POINT_LIGHTS ];\n#endif\nvarying vec3 vViewPosition;",
+THREE.ShaderChunk.shadowmap_pars_fragment,THREE.ShaderChunk.fog_pars_fragment,"void main() {\ngl_FragColor = vec4( vec3( 1.0 ), uOpacity );\nvec3 specularTex = vec3( 1.0 );\nvec3 normalTex = texture2D( tNormal, vUv ).xyz * 2.0 - 1.0;\nnormalTex.xy *= uNormalScale;\nnormalTex = normalize( normalTex );\nif( enableDiffuse )\ngl_FragColor = gl_FragColor * texture2D( tDiffuse, vUv );\nif( enableAO )\ngl_FragColor.xyz = gl_FragColor.xyz * texture2D( tAO, vUv ).xyz;\nif( enableSpecular )\nspecularTex = texture2D( tSpecular, vUv ).xyz;\nmat3 tsb = mat3( vTangent, vBinormal, vNormal );\nvec3 finalNormal = tsb * normalTex;\nvec3 normal = normalize( finalNormal );\nvec3 viewPosition = normalize( vViewPosition );\n#if MAX_POINT_LIGHTS > 0\nvec3 pointDiffuse = vec3( 0.0 );\nvec3 pointSpecular = vec3( 0.0 );\nfor ( int i = 0; i < MAX_POINT_LIGHTS; i ++ ) {\nvec3 pointVector = normalize( vPointLight[ i ].xyz );\nvec3 pointHalfVector = normalize( vPointLight[ i ].xyz + viewPosition );\nfloat pointDistance = vPointLight[ i ].w;\nfloat pointDotNormalHalf = dot( normal, pointHalfVector );\nfloat pointDiffuseWeight = max( dot( normal, pointVector ), 0.0 );\nfloat pointSpecularWeight = 0.0;\nif ( pointDotNormalHalf >= 0.0 )\npointSpecularWeight = specularTex.r * pow( pointDotNormalHalf, uShininess );\npointDiffuse += pointDistance * pointLightColor[ i ] * uDiffuseColor * pointDiffuseWeight;\npointSpecular += pointDistance * pointLightColor[ i ] * uSpecularColor * pointSpecularWeight;\n}\n#endif\n#if MAX_DIR_LIGHTS > 0\nvec3 dirDiffuse = vec3( 0.0 );\nvec3 dirSpecular = vec3( 0.0 );\nfor( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {\nvec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );\nvec3 dirVector = normalize( lDirection.xyz );\nvec3 dirHalfVector = normalize( lDirection.xyz + viewPosition );\nfloat dirDotNormalHalf = dot( normal, dirHalfVector );\nfloat dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );\nfloat dirSpecularWeight = 0.0;\nif ( dirDotNormalHalf >= 0.0 )\ndirSpecularWeight = specularTex.r * pow( dirDotNormalHalf, uShininess );\ndirDiffuse += directionalLightColor[ i ] * uDiffuseColor * dirDiffuseWeight;\ndirSpecular += directionalLightColor[ i ] * uSpecularColor * dirSpecularWeight;\n}\n#endif\nvec3 totalDiffuse = vec3( 0.0 );\nvec3 totalSpecular = vec3( 0.0 );\n#if MAX_DIR_LIGHTS > 0\ntotalDiffuse += dirDiffuse;\ntotalSpecular += dirSpecular;\n#endif\n#if MAX_POINT_LIGHTS > 0\ntotalDiffuse += pointDiffuse;\ntotalSpecular += pointSpecular;\n#endif\ngl_FragColor.xyz = gl_FragColor.xyz * totalDiffuse + totalSpecular + ambientLightColor * uAmbientColor;\nif ( enableReflection ) {\nvec3 wPos = cameraPosition - vViewPosition;\nvec3 vReflect = reflect( normalize( wPos ), normal );\nvec4 cubeColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );\ngl_FragColor.xyz = mix( gl_FragColor.xyz, cubeColor.xyz, uReflectivity );\n}",
+THREE.ShaderChunk.shadowmap_fragment,THREE.ShaderChunk.fog_fragment,"}"].join("\n"),vertexShader:["attribute vec4 tangent;\nuniform vec2 uOffset;\nuniform vec2 uRepeat;\n#ifdef VERTEX_TEXTURES\nuniform sampler2D tDisplacement;\nuniform float uDisplacementScale;\nuniform float uDisplacementBias;\n#endif\nvarying vec3 vTangent;\nvarying vec3 vBinormal;\nvarying vec3 vNormal;\nvarying vec2 vUv;\n#if MAX_POINT_LIGHTS > 0\nuniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];\nuniform float pointLightDistance[ MAX_POINT_LIGHTS ];\nvarying vec4 vPointLight[ MAX_POINT_LIGHTS ];\n#endif\nvarying vec3 vViewPosition;",
+THREE.ShaderChunk.shadowmap_pars_vertex,"void main() {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\nvViewPosition = -mvPosition.xyz;\nvNormal = normalize( normalMatrix * normal );\nvTangent = normalize( normalMatrix * tangent.xyz );\nvBinormal = cross( vNormal, vTangent ) * tangent.w;\nvBinormal = normalize( vBinormal );\nvUv = uv * uRepeat + uOffset;\n#if MAX_POINT_LIGHTS > 0\nfor( int i = 0; i < MAX_POINT_LIGHTS; i++ ) {\nvec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );\nvec3 lVector = lPosition.xyz - mvPosition.xyz;\nfloat lDistance = 1.0;\nif ( pointLightDistance[ i ] > 0.0 )\nlDistance = 1.0 - min( ( length( lVector ) / pointLightDistance[ i ] ), 1.0 );\nlVector = normalize( lVector );\nvPointLight[ i ] = vec4( lVector, lDistance );\n}\n#endif\n#ifdef VERTEX_TEXTURES\nvec3 dv = texture2D( tDisplacement, uv ).xyz;\nfloat df = uDisplacementScale * dv.x + uDisplacementBias;\nvec4 displacedPosition = vec4( vNormal.xyz * df, 0.0 ) + mvPosition;\ngl_Position = projectionMatrix * displacedPosition;\n#else\ngl_Position = projectionMatrix * mvPosition;\n#endif",
+THREE.ShaderChunk.shadowmap_vertex,"}"].join("\n")},cube:{uniforms:{tCube:{type:"t",value:1,texture:null}},vertexShader:"varying vec3 vViewPosition;\nvoid main() {\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\nvViewPosition = cameraPosition - mPosition.xyz;\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",fragmentShader:"uniform samplerCube tCube;\nvarying vec3 vViewPosition;\nvoid main() {\nvec3 wPos = cameraPosition - vViewPosition;\ngl_FragColor = textureCube( tCube, vec3( - wPos.x, wPos.yz ) );\n}"}}};
+THREE.Curve=function(){};THREE.Curve.prototype.getPoint=function(){console.log("Warning, getPoint() not implemented!");return null};THREE.Curve.prototype.getPointAt=function(b){return this.getPoint(this.getUtoTmapping(b))};THREE.Curve.prototype.getPoints=function(b){b||(b=5);var c,e=[];for(c=0;c<=b;c++)e.push(this.getPoint(c/b));return e};THREE.Curve.prototype.getSpacedPoints=function(b){b||(b=5);var c,e=[];for(c=0;c<=b;c++)e.push(this.getPointAt(c/b));return e};
+THREE.Curve.prototype.getLength=function(){var b=this.getLengths();return b[b.length-1]};THREE.Curve.prototype.getLengths=function(b){b||(b=200);if(this.cacheArcLengths&&this.cacheArcLengths.length==b+1)return this.cacheArcLengths;var c=[],e,f=this.getPoint(0),h,k=0;c.push(0);for(h=1;h<=b;h++)e=this.getPoint(h/b),k+=e.distanceTo(f),c.push(k),f=e;return this.cacheArcLengths=c};
+THREE.Curve.prototype.getUtoTmapping=function(b,c){var e=this.getLengths(),f=0,h=e.length,k;k=c?c:b*e[h-1];time=Date.now();for(var m=0,n=h-1,t;m<=n;)if(f=Math.floor(m+(n-m)/2),t=e[f]-k,t<0)m=f+1;else if(t>0)n=f-1;else{n=f;break}f=n;if(e[f]==k)return f/(h-1);m=e[f];return e=(f+(k-m)/(e[f+1]-m))/(h-1)};THREE.Curve.prototype.getNormalVector=function(b){b=this.getTangent(b);return new THREE.Vector2(-b.y,b.x)};
+THREE.Curve.prototype.getTangent=function(b){var c=b-1.0E-4;b+=1.0E-4;c<0&&(c=0);b>1&&(b=1);var c=this.getPoint(c),b=this.getPoint(b),e=new THREE.Vector2;e.sub(b,c);return e.unit()};THREE.LineCurve=function(b,c){b instanceof THREE.Vector2?(this.v1=b,this.v2=c):THREE.LineCurve.oldConstructor.apply(this,arguments)};THREE.LineCurve.oldConstructor=function(b,c,e,f){this.constructor(new THREE.Vector2(b,c),new THREE.Vector2(e,f))};THREE.LineCurve.prototype=new THREE.Curve;
+THREE.LineCurve.prototype.constructor=THREE.LineCurve;THREE.LineCurve.prototype.getPoint=function(b){var c=new THREE.Vector2;c.sub(this.v2,this.v1);c.multiplyScalar(b).addSelf(this.v1);return c};THREE.LineCurve.prototype.getPointAt=function(b){return this.getPoint(b)};THREE.LineCurve.prototype.getTangent=function(){var b=new THREE.Vector2;b.sub(this.v2,this.v1);b.normalize();return b};
+THREE.QuadraticBezierCurve=function(b,c,e){if(!(c instanceof THREE.Vector2))var f=Array.prototype.slice.call(arguments),b=new THREE.Vector2(f[0],f[1]),c=new THREE.Vector2(f[2],f[3]),e=new THREE.Vector2(f[4],f[5]);this.v0=b;this.v1=c;this.v2=e};THREE.QuadraticBezierCurve.prototype=new THREE.Curve;THREE.QuadraticBezierCurve.prototype.constructor=THREE.QuadraticBezierCurve;
+THREE.QuadraticBezierCurve.prototype.getPoint=function(b){var c;c=THREE.Shape.Utils.b2(b,this.v0.x,this.v1.x,this.v2.x);b=THREE.Shape.Utils.b2(b,this.v0.y,this.v1.y,this.v2.y);return new THREE.Vector2(c,b)};THREE.QuadraticBezierCurve.prototype.getTangent=function(b){var c;c=THREE.Curve.Utils.tangentQuadraticBezier(b,this.v0.x,this.v1.x,this.v2.x);b=THREE.Curve.Utils.tangentQuadraticBezier(b,this.v0.y,this.v1.y,this.v2.y);c=new THREE.Vector2(c,b);c.normalize();return c};
+THREE.CubicBezierCurve=function(b,c,e,f){if(!(c instanceof THREE.Vector2))var h=Array.prototype.slice.call(arguments),b=new THREE.Vector2(h[0],h[1]),c=new THREE.Vector2(h[2],h[3]),e=new THREE.Vector2(h[4],h[5]),f=new THREE.Vector2(h[6],h[7]);this.v0=b;this.v1=c;this.v2=e;this.v3=f};THREE.CubicBezierCurve.prototype=new THREE.Curve;THREE.CubicBezierCurve.prototype.constructor=THREE.CubicBezierCurve;
+THREE.CubicBezierCurve.prototype.getPoint=function(b){var c;c=THREE.Shape.Utils.b3(b,this.v0.x,this.v1.x,this.v2.x,this.v3.x);b=THREE.Shape.Utils.b3(b,this.v0.y,this.v1.y,this.v2.y,this.v3.y);return new THREE.Vector2(c,b)};THREE.CubicBezierCurve.prototype.getTangent=function(b){var c;c=THREE.Curve.Utils.tangentCubicBezier(b,this.v0.x,this.v1.x,this.v2.x,this.v3.x);b=THREE.Curve.Utils.tangentCubicBezier(b,this.v0.y,this.v1.y,this.v2.y,this.v3.y);c=new THREE.Vector2(c,b);c.normalize();return c};
+THREE.SplineCurve=function(b){this.points=b};THREE.SplineCurve.prototype=new THREE.Curve;THREE.SplineCurve.prototype.constructor=THREE.SplineCurve;
+THREE.SplineCurve.prototype.getPoint=function(b){var c=new THREE.Vector2,e=[],f=this.points,h;h=(f.length-1)*b;b=Math.floor(h);h-=b;e[0]=b==0?b:b-1;e[1]=b;e[2]=b>f.length-2?b:b+1;e[3]=b>f.length-3?b:b+2;c.x=THREE.Curve.Utils.interpolate(f[e[0]].x,f[e[1]].x,f[e[2]].x,f[e[3]].x,h);c.y=THREE.Curve.Utils.interpolate(f[e[0]].y,f[e[1]].y,f[e[2]].y,f[e[3]].y,h);return c};THREE.ArcCurve=function(b,c,e,f,h,k){this.aX=b;this.aY=c;this.aRadius=e;this.aStartAngle=f;this.aEndAngle=h;this.aClockwise=k};
+THREE.ArcCurve.prototype=new THREE.Curve;THREE.ArcCurve.prototype.constructor=THREE.ArcCurve;THREE.ArcCurve.prototype.getPoint=function(b){var c=this.aEndAngle-this.aStartAngle;this.aClockwise||(b=1-b);b=this.aStartAngle+b*c;return new THREE.Vector2(this.aX+this.aRadius*Math.cos(b),this.aY+this.aRadius*Math.sin(b))};
+THREE.Curve.Utils={tangentQuadraticBezier:function(b,c,e,f){return 2*(1-b)*(e-c)+2*b*(f-e)},tangentCubicBezier:function(b,c,e,f,h){return-3*c*(1-b)*(1-b)+3*e*(1-b)*(1-b)-6*b*e*(1-b)+6*b*f*(1-b)-3*b*b*f+3*b*b*h},tangentSpline:function(b){return 6*b*b-6*b+(3*b*b-4*b+1)+(-6*b*b+6*b)+(3*b*b-2*b)},interpolate:function(b,c,e,f,h){var b=(e-b)*0.5,f=(f-c)*0.5,k=h*h;return(2*c-2*e+b+f)*h*k+(-3*c+3*e-2*b-f)*k+b*h+c}};
+THREE.Curve.create=function(b,c){b.prototype=new THREE.Curve;b.prototype.constructor=b;b.prototype.getPoint=c;return b};THREE.LineCurve3=THREE.Curve.create(function(b,c){this.v1=b;this.v2=c},function(b){var c=new THREE.Vector3;c.sub(v2,v1);c.multiplyScalar(b);c.addSelf(this.v1);return c});
+THREE.QuadraticBezierCurve3=THREE.Curve.create(function(b,c,e){this.v0=b;this.v1=c;this.v2=e},function(b){var c,e;c=THREE.Shape.Utils.b2(b,this.v0.x,this.v1.x,this.v2.x);e=THREE.Shape.Utils.b2(b,this.v0.y,this.v1.y,this.v2.y);b=THREE.Shape.Utils.b2(b,this.v0.z,this.v1.z,this.v2.z);return new THREE.Vector3(c,e,b)});
+THREE.CubicBezierCurve3=THREE.Curve.create(function(b,c,e,f){this.v0=b;this.v1=c;this.v2=e;this.v3=f},function(b){var c,e;c=THREE.Shape.Utils.b3(b,this.v0.x,this.v1.x,this.v2.x,this.v3.x);e=THREE.Shape.Utils.b3(b,this.v0.y,this.v1.y,this.v2.y,this.v3.y);b=THREE.Shape.Utils.b3(b,this.v0.z,this.v1.z,this.v2.z,this.v3.z);return new THREE.Vector3(c,e,b)});
+THREE.SplineCurve3=THREE.Curve.create(function(b){this.points=b},function(b){var c=new THREE.Vector3,e=[],f=this.points,h;h=(f.length-1)*b;b=Math.floor(h);h-=b;e[0]=b==0?b:b-1;e[1]=b;e[2]=b>f.length-2?b:b+1;e[3]=b>f.length-3?b:b+2;c.x=THREE.Curve.Utils.interpolate(f[e[0]].x,f[e[1]].x,f[e[2]].x,f[e[3]].x,h);c.y=THREE.Curve.Utils.interpolate(f[e[0]].y,f[e[1]].y,f[e[2]].y,f[e[3]].y,h);c.z=THREE.Curve.Utils.interpolate(f[e[0]].z,f[e[1]].z,f[e[2]].z,f[e[3]].z,h);return c});
+THREE.CurvePath=function(){this.curves=[];this.bends=[]};THREE.CurvePath.prototype=new THREE.Curve;THREE.CurvePath.prototype.constructor=THREE.CurvePath;THREE.CurvePath.prototype.add=function(b){this.curves.push(b)};THREE.CurvePath.prototype.checkConnection=function(){};THREE.CurvePath.prototype.closePath=function(){};
+THREE.CurvePath.prototype.getPoint=function(b){for(var c=b*this.getLength(),e=this.getCurveLengths(),b=0;b<e.length;){if(e[b]>=c)return c=e[b]-c,b=this.curves[b],c=1-c/b.getLength(),b.getPointAt(c);b++}return null};THREE.CurvePath.prototype.getLength=function(){var b=this.getCurveLengths();return b[b.length-1]};
+THREE.CurvePath.prototype.getCurveLengths=function(){if(this.cacheLengths&&this.cacheLengths.length==this.curves.length)return this.cacheLengths;var b=[],c=0,e,f=this.curves.length;for(e=0;e<f;e++)c+=this.curves[e].getLength(),b.push(c);return this.cacheLengths=b};
+THREE.CurvePath.prototype.getBoundingBox=function(){var b=this.getPoints(),c,e,f,h;c=e=Number.NEGATIVE_INFINITY;f=h=Number.POSITIVE_INFINITY;var k,m,n,t;t=new THREE.Vector2;m=0;for(n=b.length;m<n;m++){k=b[m];if(k.x>c)c=k.x;else if(k.x<f)f=k.x;if(k.y>e)e=k.y;else if(k.y<e)h=k.y;t.addSelf(k.x,k.y)}return{minX:f,minY:h,maxX:c,maxY:e,centroid:t.divideScalar(n)}};THREE.CurvePath.prototype.createPointsGeometry=function(b){return this.createGeometry(this.getPoints(b,!0))};
+THREE.CurvePath.prototype.createSpacedPointsGeometry=function(b){return this.createGeometry(this.getSpacedPoints(b,!0))};THREE.CurvePath.prototype.createGeometry=function(b){for(var c=new THREE.Geometry,e=0;e<b.length;e++)c.vertices.push(new THREE.Vertex(new THREE.Vector3(b[e].x,b[e].y,0)));return c};THREE.CurvePath.prototype.addWrapPath=function(b){this.bends.push(b)};
+THREE.CurvePath.prototype.getTransformedPoints=function(b,c){var e=this.getPoints(b),f,h;if(!c)c=this.bends;f=0;for(h=c.length;f<h;f++)e=this.getWrapPoints(e,c[f]);return e};THREE.CurvePath.prototype.getTransformedSpacedPoints=function(b,c){var e=this.getSpacedPoints(b),f,h;if(!c)c=this.bends;f=0;for(h=c.length;f<h;f++)e=this.getWrapPoints(e,c[f]);return e};
+THREE.CurvePath.prototype.getWrapPoints=function(b,c){var e=this.getBoundingBox(),f,h,k,m,n,t;f=0;for(h=b.length;f<h;f++)k=b[f],m=k.x,n=k.y,t=m/e.maxX,t=c.getUtoTmapping(t,m),m=c.getPoint(t),n=c.getNormalVector(t).multiplyScalar(n),k.x=m.x+n.x,k.y=m.y+n.y;return b};THREE.Path=function(b){THREE.CurvePath.call(this);this.actions=[];b&&this.fromPoints(b)};THREE.Path.prototype=new THREE.CurvePath;THREE.Path.prototype.constructor=THREE.Path;
+THREE.PathActions={MOVE_TO:"moveTo",LINE_TO:"lineTo",QUADRATIC_CURVE_TO:"quadraticCurveTo",BEZIER_CURVE_TO:"bezierCurveTo",CSPLINE_THRU:"splineThru",ARC:"arc"};THREE.Path.prototype.fromPoints=function(b){this.moveTo(b[0].x,b[0].y);var c,e=b.length;for(c=1;c<e;c++)this.lineTo(b[c].x,b[c].y)};THREE.Path.prototype.moveTo=function(){var b=Array.prototype.slice.call(arguments);this.actions.push({action:THREE.PathActions.MOVE_TO,args:b})};
+THREE.Path.prototype.lineTo=function(b,c){var e=Array.prototype.slice.call(arguments),f=this.actions[this.actions.length-1].args;this.curves.push(new THREE.LineCurve(new THREE.Vector2(f[f.length-2],f[f.length-1]),new THREE.Vector2(b,c)));this.actions.push({action:THREE.PathActions.LINE_TO,args:e})};
+THREE.Path.prototype.quadraticCurveTo=function(b,c,e,f){var h=Array.prototype.slice.call(arguments),k=this.actions[this.actions.length-1].args;this.curves.push(new THREE.QuadraticBezierCurve(new THREE.Vector2(k[k.length-2],k[k.length-1]),new THREE.Vector2(b,c),new THREE.Vector2(e,f)));this.actions.push({action:THREE.PathActions.QUADRATIC_CURVE_TO,args:h})};
+THREE.Path.prototype.bezierCurveTo=function(b,c,e,f,h,k){var m=Array.prototype.slice.call(arguments),n=this.actions[this.actions.length-1].args;this.curves.push(new THREE.CubicBezierCurve(new THREE.Vector2(n[n.length-2],n[n.length-1]),new THREE.Vector2(b,c),new THREE.Vector2(e,f),new THREE.Vector2(h,k)));this.actions.push({action:THREE.PathActions.BEZIER_CURVE_TO,args:m})};
+THREE.Path.prototype.splineThru=function(b){var c=Array.prototype.slice.call(arguments),e=this.actions[this.actions.length-1].args,e=[new THREE.Vector2(e[e.length-2],e[e.length-1])];Array.prototype.push.apply(e,b);this.curves.push(new THREE.SplineCurve(e));this.actions.push({action:THREE.PathActions.CSPLINE_THRU,args:c})};
+THREE.Path.prototype.arc=function(b,c,e,f,h,k){var m=Array.prototype.slice.call(arguments);this.curves.push(new THREE.ArcCurve(b,c,e,f,h,k));this.actions.push({action:THREE.PathActions.ARC,args:m})};THREE.Path.prototype.getSpacedPoints=function(b){b||(b=40);for(var c=[],e=0;e<b;e++)c.push(this.getPoint(e/b));return c};
+THREE.Path.prototype.getPoints=function(b,c){var b=b||12,e=[],f,h,k,m,n,t,u,v,p,x,w,A,z;f=0;for(h=this.actions.length;f<h;f++)switch(k=this.actions[f],m=k.action,k=k.args,m){case THREE.PathActions.LINE_TO:e.push(new THREE.Vector2(k[0],k[1]));break;case THREE.PathActions.QUADRATIC_CURVE_TO:n=k[2];t=k[3];p=k[0];x=k[1];e.length>0?(m=e[e.length-1],w=m.x,A=m.y):(m=this.actions[f-1].args,w=m[m.length-2],A=m[m.length-1]);for(m=1;m<=b;m++)z=m/b,k=THREE.Shape.Utils.b2(z,w,p,n),z=THREE.Shape.Utils.b2(z,A,x,
+t),e.push(new THREE.Vector2(k,z));break;case THREE.PathActions.BEZIER_CURVE_TO:n=k[4];t=k[5];p=k[0];x=k[1];u=k[2];v=k[3];e.length>0?(m=e[e.length-1],w=m.x,A=m.y):(m=this.actions[f-1].args,w=m[m.length-2],A=m[m.length-1]);for(m=1;m<=b;m++)z=m/b,k=THREE.Shape.Utils.b3(z,w,p,u,n),z=THREE.Shape.Utils.b3(z,A,x,v,t),e.push(new THREE.Vector2(k,z));break;case THREE.PathActions.CSPLINE_THRU:m=this.actions[f-1].args;m=[new THREE.Vector2(m[m.length-2],m[m.length-1])];z=b*k[0].length;m=m.concat(k[0]);k=new THREE.SplineCurve(m);
+for(m=1;m<=z;m++)e.push(k.getPointAt(m/z));break;case THREE.PathActions.ARC:m=this.actions[f-1].args;n=k[0];t=k[1];u=k[2];p=k[3];z=k[4];x=!!k[5];v=m[m.length-2];w=m[m.length-1];m.length==0&&(v=w=0);A=z-p;var y=b*2;for(m=1;m<=y;m++)z=m/y,x||(z=1-z),z=p+z*A,k=v+n+u*Math.cos(z),z=w+t+u*Math.sin(z),e.push(new THREE.Vector2(k,z))}c&&e.push(e[0]);return e};THREE.Path.prototype.transform=function(b,c){this.getBoundingBox();return this.getWrapPoints(this.getPoints(c),b)};
+THREE.Path.prototype.nltransform=function(b,c,e,f,h,k){var m=this.getPoints(),n,t,u,v,p;n=0;for(t=m.length;n<t;n++)u=m[n],v=u.x,p=u.y,u.x=b*v+c*p+e,u.y=f*p+h*v+k;return m};
+THREE.Path.prototype.debug=function(b){var c=this.getBoundingBox();b||(b=document.createElement("canvas"),b.setAttribute("width",c.maxX+100),b.setAttribute("height",c.maxY+100),document.body.appendChild(b));c=b.getContext("2d");c.fillStyle="white";c.fillRect(0,0,b.width,b.height);c.strokeStyle="black";c.beginPath();var e,f,h,b=0;for(e=this.actions.length;b<e;b++)f=this.actions[b],h=f.args,f=f.action,f!=THREE.PathActions.CSPLINE_THRU&&c[f].apply(c,h);c.stroke();c.closePath();c.strokeStyle="red";f=
+this.getPoints();b=0;for(e=f.length;b<e;b++)h=f[b],c.beginPath(),c.arc(h.x,h.y,1.5,0,Math.PI*2,!1),c.stroke(),c.closePath()};
+THREE.Path.prototype.toShapes=function(){var b,c,e,f,h=[],k=new THREE.Path;b=0;for(c=this.actions.length;b<c;b++)e=this.actions[b],f=e.args,e=e.action,e==THREE.PathActions.MOVE_TO&&k.actions.length!=0&&(h.push(k),k=new THREE.Path),k[e].apply(k,f);k.actions.length!=0&&h.push(k);if(h.length==0)return[];var m,k=[];if(THREE.Shape.Utils.isClockWise(h[0].getPoints())){b=0;for(c=h.length;b<c;b++)f=h[b],THREE.Shape.Utils.isClockWise(f.getPoints())?(m&&k.push(m),m=new THREE.Shape,m.actions=f.actions,m.curves=
+f.curves):m.holes.push(f);k.push(m)}else{m=new THREE.Shape;b=0;for(c=h.length;b<c;b++)f=h[b],THREE.Shape.Utils.isClockWise(f.getPoints())?(m.actions=f.actions,m.curves=f.curves,k.push(m),m=new THREE.Shape):m.holes.push(f)}return k};THREE.Shape=function(){THREE.Path.apply(this,arguments);this.holes=[]};THREE.Shape.prototype=new THREE.Path;THREE.Shape.prototype.constructor=THREE.Path;THREE.Shape.prototype.extrude=function(b){return new THREE.ExtrudeGeometry(this,b)};
+THREE.Shape.prototype.getPointsHoles=function(b){var c,e=this.holes.length,f=[];for(c=0;c<e;c++)f[c]=this.holes[c].getTransformedPoints(b,this.bends);return f};THREE.Shape.prototype.getSpacedPointsHoles=function(b){var c,e=this.holes.length,f=[];for(c=0;c<e;c++)f[c]=this.holes[c].getTransformedSpacedPoints(b,this.bends);return f};THREE.Shape.prototype.extractAllPoints=function(b){return{shape:this.getTransformedPoints(b),holes:this.getPointsHoles(b)}};
+THREE.Shape.prototype.extractAllSpacedPoints=function(b){return{shape:this.getTransformedSpacedPoints(b),holes:this.getSpacedPointsHoles(b)}};
+THREE.Shape.Utils={removeHoles:function(b,c){var e=b.concat(),f=e.concat(),h,k,m,n,t,u,v,p,x,w,A=[];for(t=0;t<c.length;t++){u=c[t];Array.prototype.push.apply(f,u);k=Number.POSITIVE_INFINITY;for(h=0;h<u.length;h++){x=u[h];w=[];for(p=0;p<e.length;p++)v=e[p],v=x.distanceToSquared(v),w.push(v),v<k&&(k=v,m=h,n=p)}h=n-1>=0?n-1:e.length-1;k=m-1>=0?m-1:u.length-1;var z=[u[m],e[n],e[h]];p=THREE.FontUtils.Triangulate.area(z);var y=[u[m],u[k],e[n]];x=THREE.FontUtils.Triangulate.area(y);w=n;v=m;n+=1;m+=-1;n<
+0&&(n+=e.length);n%=e.length;m<0&&(m+=u.length);m%=u.length;h=n-1>=0?n-1:e.length-1;k=m-1>=0?m-1:u.length-1;z=[u[m],e[n],e[h]];z=THREE.FontUtils.Triangulate.area(z);y=[u[m],u[k],e[n]];y=THREE.FontUtils.Triangulate.area(y);p+x>z+y&&(n=w,m=v,n<0&&(n+=e.length),n%=e.length,m<0&&(m+=u.length),m%=u.length,h=n-1>=0?n-1:e.length-1,k=m-1>=0?m-1:u.length-1);p=e.slice(0,n);x=e.slice(n);w=u.slice(m);v=u.slice(0,m);k=[u[m],u[k],e[n]];A.push([u[m],e[n],e[h]]);A.push(k);e=p.concat(w).concat(v).concat(x)}return{shape:e,
+isolatedPts:A,allpoints:f}},triangulateShape:function(b,c){var e=THREE.Shape.Utils.removeHoles(b,c),f=e.allpoints,h=e.isolatedPts,e=THREE.FontUtils.Triangulate(e.shape,!1),k,m,n,t,u={};k=0;for(m=f.length;k<m;k++)t=f[k].x+":"+f[k].y,u[t]!==void 0&&console.log("Duplicate point",t),u[t]=k;k=0;for(m=e.length;k<m;k++){n=e[k];for(f=0;f<3;f++)t=n[f].x+":"+n[f].y,t=u[t],t!==void 0&&(n[f]=t)}k=0;for(m=h.length;k<m;k++){n=h[k];for(f=0;f<3;f++)t=n[f].x+":"+n[f].y,t=u[t],t!==void 0&&(n[f]=t)}return e.concat(h)},
+isClockWise:function(b){return THREE.FontUtils.Triangulate.area(b)<0},b2p0:function(b,c){var e=1-b;return e*e*c},b2p1:function(b,c){return 2*(1-b)*b*c},b2p2:function(b,c){return b*b*c},b2:function(b,c,e,f){return this.b2p0(b,c)+this.b2p1(b,e)+this.b2p2(b,f)},b3p0:function(b,c){var e=1-b;return e*e*e*c},b3p1:function(b,c){var e=1-b;return 3*e*e*b*c},b3p2:function(b,c){return 3*(1-b)*b*b*c},b3p3:function(b,c){return b*b*b*c},b3:function(b,c,e,f,h){return this.b3p0(b,c)+this.b3p1(b,e)+this.b3p2(b,f)+
+this.b3p3(b,h)}};THREE.TextPath=function(b,c){THREE.Path.call(this);this.parameters=c||{};this.set(b)};THREE.TextPath.prototype.set=function(b,c){this.text=b;var c=c||this.parameters,e=c.curveSegments!==void 0?c.curveSegments:4,f=c.font!==void 0?c.font:"helvetiker",h=c.weight!==void 0?c.weight:"normal",k=c.style!==void 0?c.style:"normal";THREE.FontUtils.size=c.size!==void 0?c.size:100;THREE.FontUtils.divisions=e;THREE.FontUtils.face=f;THREE.FontUtils.weight=h;THREE.FontUtils.style=k};
+THREE.TextPath.prototype.toShapes=function(){for(var b=THREE.FontUtils.drawText(this.text).paths,c=[],e=0,f=b.length;e<f;e++)Array.prototype.push.apply(c,b[e].toShapes());return c};
+THREE.AnimationHandler=function(){var b=[],c={},e={update:function(e){for(var c=0;c<b.length;c++)b[c].update(e)},addToUpdate:function(e){b.indexOf(e)===-1&&b.push(e)},removeFromUpdate:function(e){e=b.indexOf(e);e!==-1&&b.splice(e,1)},add:function(b){c[b.name]!==void 0&&console.log("THREE.AnimationHandler.add: Warning! "+b.name+" already exists in library. Overwriting.");c[b.name]=b;if(b.initialized!==!0){for(var e=0;e<b.hierarchy.length;e++){for(var f=0;f<b.hierarchy[e].keys.length;f++){if(b.hierarchy[e].keys[f].time<
+0)b.hierarchy[e].keys[f].time=0;if(b.hierarchy[e].keys[f].rot!==void 0&&!(b.hierarchy[e].keys[f].rot instanceof THREE.Quaternion)){var n=b.hierarchy[e].keys[f].rot;b.hierarchy[e].keys[f].rot=new THREE.Quaternion(n[0],n[1],n[2],n[3])}}if(b.hierarchy[e].keys[0].morphTargets!==void 0){n={};for(f=0;f<b.hierarchy[e].keys.length;f++)for(var t=0;t<b.hierarchy[e].keys[f].morphTargets.length;t++){var u=b.hierarchy[e].keys[f].morphTargets[t];n[u]=-1}b.hierarchy[e].usedMorphTargets=n;for(f=0;f<b.hierarchy[e].keys.length;f++){var v=
+{};for(u in n){for(t=0;t<b.hierarchy[e].keys[f].morphTargets.length;t++)if(b.hierarchy[e].keys[f].morphTargets[t]===u){v[u]=b.hierarchy[e].keys[f].morphTargetsInfluences[t];break}t===b.hierarchy[e].keys[f].morphTargets.length&&(v[u]=0)}b.hierarchy[e].keys[f].morphTargetsInfluences=v}}for(f=1;f<b.hierarchy[e].keys.length;f++)b.hierarchy[e].keys[f].time===b.hierarchy[e].keys[f-1].time&&(b.hierarchy[e].keys.splice(f,1),f--);for(f=1;f<b.hierarchy[e].keys.length;f++)b.hierarchy[e].keys[f].index=f}f=parseInt(b.length*
+b.fps,10);b.JIT={};b.JIT.hierarchy=[];for(e=0;e<b.hierarchy.length;e++)b.JIT.hierarchy.push(Array(f));b.initialized=!0}},get:function(b){if(typeof b==="string")return c[b]?c[b]:(console.log("THREE.AnimationHandler.get: Couldn't find animation "+b),null)},parse:function(b){var e=[];if(b instanceof THREE.SkinnedMesh)for(var c=0;c<b.bones.length;c++)e.push(b.bones[c]);else f(b,e);return e}},f=function(b,e){e.push(b);for(var c=0;c<b.children.length;c++)f(b.children[c],e)};e.LINEAR=0;e.CATMULLROM=1;e.CATMULLROM_FORWARD=
+2;return e}();THREE.Animation=function(b,c,e,f){this.root=b;this.data=THREE.AnimationHandler.get(c);this.hierarchy=THREE.AnimationHandler.parse(b);this.currentTime=0;this.timeScale=1;this.isPlaying=!1;this.loop=this.isPaused=!0;this.interpolationType=e!==void 0?e:THREE.AnimationHandler.LINEAR;this.JITCompile=f!==void 0?f:!0;this.points=[];this.target=new THREE.Vector3};
+THREE.Animation.prototype.play=function(b,c){if(!this.isPlaying){this.isPlaying=!0;this.loop=b!==void 0?b:!0;this.currentTime=c!==void 0?c:0;var e,f=this.hierarchy.length,h;for(e=0;e<f;e++){h=this.hierarchy[e];if(this.interpolationType!==THREE.AnimationHandler.CATMULLROM_FORWARD)h.useQuaternion=!0;h.matrixAutoUpdate=!0;if(h.animationCache===void 0)h.animationCache={},h.animationCache.prevKey={pos:0,rot:0,scl:0},h.animationCache.nextKey={pos:0,rot:0,scl:0},h.animationCache.originalMatrix=h instanceof
+THREE.Bone?h.skinMatrix:h.matrix;var k=h.animationCache.prevKey;h=h.animationCache.nextKey;k.pos=this.data.hierarchy[e].keys[0];k.rot=this.data.hierarchy[e].keys[0];k.scl=this.data.hierarchy[e].keys[0];h.pos=this.getNextKeyWith("pos",e,1);h.rot=this.getNextKeyWith("rot",e,1);h.scl=this.getNextKeyWith("scl",e,1)}this.update(0)}this.isPaused=!1;THREE.AnimationHandler.addToUpdate(this)};
+THREE.Animation.prototype.pause=function(){this.isPaused?THREE.AnimationHandler.addToUpdate(this):THREE.AnimationHandler.removeFromUpdate(this);this.isPaused=!this.isPaused};
+THREE.Animation.prototype.stop=function(){this.isPaused=this.isPlaying=!1;THREE.AnimationHandler.removeFromUpdate(this);for(var b=0;b<this.hierarchy.length;b++)if(this.hierarchy[b].animationCache!==void 0)this.hierarchy[b]instanceof THREE.Bone?this.hierarchy[b].skinMatrix=this.hierarchy[b].animationCache.originalMatrix:this.hierarchy[b].matrix=this.hierarchy[b].animationCache.originalMatrix,delete this.hierarchy[b].animationCache};
+THREE.Animation.prototype.update=function(b){if(this.isPlaying){var c=["pos","rot","scl"],e,f,h,k,m,n,t,u,v=this.data.JIT.hierarchy,p,x;this.currentTime+=b*this.timeScale;x=this.currentTime;p=this.currentTime%=this.data.length;u=parseInt(Math.min(p*this.data.fps,this.data.length*this.data.fps),10);for(var w=0,A=this.hierarchy.length;w<A;w++)if(b=this.hierarchy[w],t=b.animationCache,this.JITCompile&&v[w][u]!==void 0)b instanceof THREE.Bone?(b.skinMatrix=v[w][u],b.matrixAutoUpdate=!1,b.matrixWorldNeedsUpdate=
+!1):(b.matrix=v[w][u],b.matrixAutoUpdate=!1,b.matrixWorldNeedsUpdate=!0);else{if(this.JITCompile)b instanceof THREE.Bone?b.skinMatrix=b.animationCache.originalMatrix:b.matrix=b.animationCache.originalMatrix;for(var z=0;z<3;z++){e=c[z];m=t.prevKey[e];n=t.nextKey[e];if(n.time<=x){if(p<x)if(this.loop){m=this.data.hierarchy[w].keys[0];for(n=this.getNextKeyWith(e,w,1);n.time<p;)m=n,n=this.getNextKeyWith(e,w,n.index+1)}else{this.stop();return}else{do m=n,n=this.getNextKeyWith(e,w,n.index+1);while(n.time<
+p)}t.prevKey[e]=m;t.nextKey[e]=n}b.matrixAutoUpdate=!0;b.matrixWorldNeedsUpdate=!0;f=(p-m.time)/(n.time-m.time);h=m[e];k=n[e];if(f<0||f>1)console.log("THREE.Animation.update: Warning! Scale out of bounds:"+f+" on bone "+w),f=f<0?0:1;if(e==="pos")if(e=b.position,this.interpolationType===THREE.AnimationHandler.LINEAR)e.x=h[0]+(k[0]-h[0])*f,e.y=h[1]+(k[1]-h[1])*f,e.z=h[2]+(k[2]-h[2])*f;else{if(this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD)if(this.points[0]=
+this.getPrevKeyWith("pos",w,m.index-1).pos,this.points[1]=h,this.points[2]=k,this.points[3]=this.getNextKeyWith("pos",w,n.index+1).pos,f=f*0.33+0.33,h=this.interpolateCatmullRom(this.points,f),e.x=h[0],e.y=h[1],e.z=h[2],this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD)f=this.interpolateCatmullRom(this.points,f*1.01),this.target.set(f[0],f[1],f[2]),this.target.subSelf(e),this.target.y=0,this.target.normalize(),f=Math.atan2(this.target.x,this.target.z),b.rotation.set(0,f,0)}else if(e===
+"rot")THREE.Quaternion.slerp(h,k,b.quaternion,f);else if(e==="scl")e=b.scale,e.x=h[0]+(k[0]-h[0])*f,e.y=h[1]+(k[1]-h[1])*f,e.z=h[2]+(k[2]-h[2])*f}}if(this.JITCompile&&v[0][u]===void 0){this.hierarchy[0].update(void 0,!0);for(w=0;w<this.hierarchy.length;w++)v[w][u]=this.hierarchy[w]instanceof THREE.Bone?this.hierarchy[w].skinMatrix.clone():this.hierarchy[w].matrix.clone()}}};
+THREE.Animation.prototype.interpolateCatmullRom=function(b,c){var e=[],f=[],h,k,m,n,t,u;h=(b.length-1)*c;k=Math.floor(h);h-=k;e[0]=k==0?k:k-1;e[1]=k;e[2]=k>b.length-2?k:k+1;e[3]=k>b.length-3?k:k+2;k=b[e[0]];n=b[e[1]];t=b[e[2]];u=b[e[3]];e=h*h;m=h*e;f[0]=this.interpolate(k[0],n[0],t[0],u[0],h,e,m);f[1]=this.interpolate(k[1],n[1],t[1],u[1],h,e,m);f[2]=this.interpolate(k[2],n[2],t[2],u[2],h,e,m);return f};
+THREE.Animation.prototype.interpolate=function(b,c,e,f,h,k,m){b=(e-b)*0.5;f=(f-c)*0.5;return(2*(c-e)+b+f)*m+(-3*(c-e)-2*b-f)*k+b*h+c};THREE.Animation.prototype.getNextKeyWith=function(b,c,e){var f=this.data.hierarchy[c].keys;for(this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD?e=e<f.length-1?e:f.length-1:e%=f.length;e<f.length;e++)if(f[e][b]!==void 0)return f[e];return this.data.hierarchy[c].keys[0]};
+THREE.Animation.prototype.getPrevKeyWith=function(b,c,e){for(var f=this.data.hierarchy[c].keys,e=this.interpolationType===THREE.AnimationHandler.CATMULLROM||this.interpolationType===THREE.AnimationHandler.CATMULLROM_FORWARD?e>0?e:0:e>=0?e:e+f.length;e>=0;e--)if(f[e][b]!==void 0)return f[e];return this.data.hierarchy[c].keys[f.length-1]};
+THREE.CubeCamera=function(b,c,e,f){this.cameraPX=new THREE.PerspectiveCamera(90,1,b,c);this.cameraNX=new THREE.PerspectiveCamera(90,1,b,c);this.cameraPY=new THREE.PerspectiveCamera(90,1,b,c);this.cameraNY=new THREE.PerspectiveCamera(90,1,b,c);this.cameraPZ=new THREE.PerspectiveCamera(90,1,b,c);this.cameraNZ=new THREE.PerspectiveCamera(90,1,b,c);this.cameraPXTarget=new THREE.Vector3(0,0,0);this.cameraNXTarget=new THREE.Vector3(0,0,0);this.cameraPYTarget=new THREE.Vector3(0,0,0);this.cameraNYTarget=
+new THREE.Vector3(0,0,0);this.cameraPZTarget=new THREE.Vector3(0,0,0);this.cameraNZTarget=new THREE.Vector3(0,0,0);this.height=e;this.position=new THREE.Vector3(0,e,0);this.cameraPX.position=this.position;this.cameraNX.position=this.position;this.cameraPY.position=this.position;this.cameraNY.position=this.position;this.cameraPZ.position=this.position;this.cameraNZ.position=this.position;this.cameraPY.up.set(0,0,1);this.cameraPZ.up.set(0,-1,0);this.cameraNZ.up.set(0,-1,0);this.renderTarget=new THREE.WebGLRenderTargetCube(f,
+f,{format:THREE.RGBFormat,magFilter:THREE.LinearFilter,minFilter:THREE.LinearFilter});this.updatePosition=function(b){this.position.x=b.x;this.position.z=b.z;this.cameraPXTarget.add(this.position,new THREE.Vector3(-1,0,0));this.cameraNXTarget.add(this.position,new THREE.Vector3(1,0,0));this.cameraPYTarget.add(this.position,new THREE.Vector3(0,1,0));this.cameraNYTarget.add(this.position,new THREE.Vector3(0,-1,0));this.cameraPZTarget.add(this.position,new THREE.Vector3(0,0,1));this.cameraNZTarget.add(this.position,
+new THREE.Vector3(0,0,-1));this.cameraPX.lookAt(this.cameraPXTarget);this.cameraNX.lookAt(this.cameraNXTarget);this.cameraPY.lookAt(this.cameraPYTarget);this.cameraNY.lookAt(this.cameraNYTarget);this.cameraPZ.lookAt(this.cameraPZTarget);this.cameraNZ.lookAt(this.cameraNZTarget)};this.updateCubeMap=function(b,e){var c=this.renderTarget;b.setFaceCulling("back","cw");e.scale.y=-1;e.position.y=2*this.height;e.updateMatrix();c.activeCubeFace=0;b.render(e,this.cameraPX,c);c.activeCubeFace=1;b.render(e,
+this.cameraNX,c);e.scale.y=1;e.position.y=0;e.updateMatrix();e.scale.x=-1;e.updateMatrix();c.activeCubeFace=2;b.render(e,this.cameraPY,c);e.scale.x=1;e.updateMatrix();b.setFaceCulling("back","ccw");c.activeCubeFace=3;b.render(e,this.cameraNY,c);e.scale.x=-1;e.updateMatrix();b.setFaceCulling("back","cw");c.activeCubeFace=4;b.render(e,this.cameraPZ,c);c.activeCubeFace=5;b.render(e,this.cameraNZ,c);e.scale.x=1;e.updateMatrix();b.setFaceCulling("back","ccw")}};THREE.FirstPersonCamera=function(){console.warn("DEPRECATED: FirstPersonCamera() is FirstPersonControls().")};
+THREE.PathCamera=function(){console.warn("DEPRECATED: PathCamera() is PathControls().")};THREE.FlyCamera=function(){console.warn("DEPRECATED: FlyCamera() is FlyControls().")};THREE.RollCamera=function(){console.warn("DEPRECATED: RollCamera() is RollControls().")};THREE.TrackballCamera=function(){console.warn("DEPRECATED: TrackballCamera() is TrackballControls().")};
+THREE.CombinedCamera=function(b,c,e,f,h,k,m){THREE.Camera.call(this);this.cameraO=new THREE.OrthographicCamera(b/-2,b/2,c/2,c/-2,k,m);this.cameraP=new THREE.PerspectiveCamera(e,b/c,f,h);this.toPerspective()};THREE.CombinedCamera.prototype=new THREE.Camera;THREE.CombinedCamera.prototype.constructor=THREE.CoolCamera;THREE.CombinedCamera.prototype.toPerspective=function(){this.near=this.cameraP.near;this.far=this.cameraP.far;this.projectionMatrix=this.cameraP.projectionMatrix};
+THREE.CombinedCamera.prototype.toOrthographic=function(){this.near=this.cameraO.near;this.far=this.cameraO.far;this.projectionMatrix=this.cameraO.projectionMatrix};THREE.CombinedCamera.prototype.setFov=function(b){this.cameraP.fov=b;this.cameraP.updateProjectionMatrix();this.toPerspective()};THREE.CombinedCamera.prototype.setLens=function(b,c){c||(c=43.25);var e=2*Math.atan(c/(b*2));e*=180/Math.PI;this.setFov(e);return e};
+THREE.FirstPersonControls=function(b,c){function e(b,e){return function(){e.apply(b,arguments)}}this.object=b;this.target=new THREE.Vector3(0,0,0);this.domElement=c!==void 0?c:document;this.movementSpeed=1;this.lookSpeed=0.005;this.noFly=!1;this.lookVertical=!0;this.autoForward=!1;this.activeLook=!0;this.heightSpeed=!1;this.heightCoef=1;this.heightMin=0;this.constrainVertical=!1;this.verticalMin=0;this.verticalMax=Math.PI;this.lastUpdate=(new Date).getTime();this.theta=this.phi=this.lon=this.lat=
+this.mouseY=this.mouseX=this.autoSpeedFactor=this.tdiff=0;this.mouseDragOn=this.freeze=this.moveRight=this.moveLeft=this.moveBackward=this.moveForward=!1;this.domElement===document?(this.viewHalfX=window.innerWidth/2,this.viewHalfY=window.innerHeight/2):(this.viewHalfX=this.domElement.offsetWidth/2,this.viewHalfY=this.domElement.offsetHeight/2,this.domElement.setAttribute("tabindex",-1));this.onMouseDown=function(b){this.domElement!==document&&this.domElement.focus();b.preventDefault();b.stopPropagation();
+if(this.activeLook)switch(b.button){case 0:this.moveForward=!0;break;case 2:this.moveBackward=!0}this.mouseDragOn=!0};this.onMouseUp=function(b){b.preventDefault();b.stopPropagation();if(this.activeLook)switch(b.button){case 0:this.moveForward=!1;break;case 2:this.moveBackward=!1}this.mouseDragOn=!1};this.onMouseMove=function(b){this.domElement===document?(this.mouseX=b.pageX-this.viewHalfX,this.mouseY=b.pageY-this.viewHalfY):(this.mouseX=b.pageX-this.domElement.offsetLeft-this.viewHalfX,this.mouseY=
+b.pageY-this.domElement.offsetTop-this.viewHalfY)};this.onKeyDown=function(b){switch(b.keyCode){case 38:case 87:this.moveForward=!0;break;case 37:case 65:this.moveLeft=!0;break;case 40:case 83:this.moveBackward=!0;break;case 39:case 68:this.moveRight=!0;break;case 82:this.moveUp=!0;break;case 70:this.moveDown=!0;break;case 81:this.freeze=!this.freeze}};this.onKeyUp=function(b){switch(b.keyCode){case 38:case 87:this.moveForward=!1;break;case 37:case 65:this.moveLeft=!1;break;case 40:case 83:this.moveBackward=
+!1;break;case 39:case 68:this.moveRight=!1;break;case 82:this.moveUp=!1;break;case 70:this.moveDown=!1}};this.update=function(){var b=(new Date).getTime();this.tdiff=(b-this.lastUpdate)/1E3;this.lastUpdate=b;if(!this.freeze){this.autoSpeedFactor=this.heightSpeed?this.tdiff*((this.object.position.y<this.heightMin?this.heightMin:this.object.position.y>this.heightMax?this.heightMax:this.object.position.y)-this.heightMin)*this.heightCoef:0;var e=this.tdiff*this.movementSpeed;(this.moveForward||this.autoForward&&
+!this.moveBackward)&&this.object.translateZ(-(e+this.autoSpeedFactor));this.moveBackward&&this.object.translateZ(e);this.moveLeft&&this.object.translateX(-e);this.moveRight&&this.object.translateX(e);this.moveUp&&this.object.translateY(e);this.moveDown&&this.object.translateY(-e);e=this.tdiff*this.lookSpeed;this.activeLook||(e=0);this.lon+=this.mouseX*e;this.lookVertical&&(this.lat-=this.mouseY*e);this.lat=Math.max(-85,Math.min(85,this.lat));this.phi=(90-this.lat)*Math.PI/180;this.theta=this.lon*
+Math.PI/180;var b=this.target,c=this.object.position;b.x=c.x+100*Math.sin(this.phi)*Math.cos(this.theta);b.y=c.y+100*Math.cos(this.phi);b.z=c.z+100*Math.sin(this.phi)*Math.sin(this.theta)}b=1;this.constrainVertical&&(b=Math.PI/(this.verticalMax-this.verticalMin));this.lon+=this.mouseX*e;this.lookVertical&&(this.lat-=this.mouseY*e*b);this.lat=Math.max(-85,Math.min(85,this.lat));this.phi=(90-this.lat)*Math.PI/180;this.theta=this.lon*Math.PI/180;if(this.constrainVertical)this.phi=(this.phi-0)*(this.verticalMax-
+this.verticalMin)/(Math.PI-0)+this.verticalMin;b=this.target;c=this.object.position;b.x=c.x+100*Math.sin(this.phi)*Math.cos(this.theta);b.y=c.y+100*Math.cos(this.phi);b.z=c.z+100*Math.sin(this.phi)*Math.sin(this.theta);this.object.lookAt(b)};this.domElement.addEventListener("contextmenu",function(b){b.preventDefault()},!1);this.domElement.addEventListener("mousemove",e(this,this.onMouseMove),!1);this.domElement.addEventListener("mousedown",e(this,this.onMouseDown),!1);this.domElement.addEventListener("mouseup",
+e(this,this.onMouseUp),!1);this.domElement.addEventListener("keydown",e(this,this.onKeyDown),!1);this.domElement.addEventListener("keyup",e(this,this.onKeyUp),!1)};
+THREE.PathControls=function(b,c){function e(b){if((b*=2)<1)return 0.5*b*b;return-0.5*(--b*(b-2)-1)}function f(b,e){return function(){e.apply(b,arguments)}}function h(b,e,c,f){var h={name:c,fps:0.6,length:f,hierarchy:[]},k,m=e.getControlPointsArray(),n=e.getLength(),y=m.length,C=0;k=y-1;e={parent:-1,keys:[]};e.keys[0]={time:0,pos:m[0],rot:[0,0,0,1],scl:[1,1,1]};e.keys[k]={time:f,pos:m[k],rot:[0,0,0,1],scl:[1,1,1]};for(k=1;k<y-1;k++)C=f*n.chunks[k]/n.total,e.keys[k]={time:C,pos:m[k]};h.hierarchy[0]=
+e;THREE.AnimationHandler.add(h);return new THREE.Animation(b,c,THREE.AnimationHandler.CATMULLROM_FORWARD,!1)}function k(b,e){var c,f,h=new THREE.Geometry;for(c=0;c<b.points.length*e;c++)f=c/(b.points.length*e),f=b.getPoint(f),h.vertices[c]=new THREE.Vertex(new THREE.Vector3(f.x,f.y,f.z));return h}this.object=b;this.domElement=c!==void 0?c:document;this.id="PathControls"+THREE.PathControlsIdCounter++;this.duration=1E4;this.waypoints=[];this.useConstantSpeed=!0;this.resamplingCoef=50;this.debugPath=
+new THREE.Object3D;this.debugDummy=new THREE.Object3D;this.animationParent=new THREE.Object3D;this.lookSpeed=0.005;this.lookHorizontal=this.lookVertical=!0;this.verticalAngleMap={srcRange:[0,2*Math.PI],dstRange:[0,2*Math.PI]};this.horizontalAngleMap={srcRange:[0,2*Math.PI],dstRange:[0,2*Math.PI]};this.target=new THREE.Object3D;this.theta=this.phi=this.lon=this.lat=this.mouseY=this.mouseX=0;this.domElement===document?(this.viewHalfX=window.innerWidth/2,this.viewHalfY=window.innerHeight/2):(this.viewHalfX=
+this.domElement.offsetWidth/2,this.viewHalfY=this.domElement.offsetHeight/2,this.domElement.setAttribute("tabindex",-1));var m=Math.PI*2,n=Math.PI/180;this.update=function(){var b,c;this.lookHorizontal&&(this.lon+=this.mouseX*this.lookSpeed);this.lookVertical&&(this.lat-=this.mouseY*this.lookSpeed);this.lon=Math.max(0,Math.min(360,this.lon));this.lat=Math.max(-85,Math.min(85,this.lat));this.phi=(90-this.lat)*n;this.theta=this.lon*n;b=this.phi%m;this.phi=b>=0?b:b+m;b=this.verticalAngleMap.srcRange;
+c=this.verticalAngleMap.dstRange;var f=c[1]-c[0];this.phi=e(((this.phi-b[0])*(c[1]-c[0])/(b[1]-b[0])+c[0]-c[0])/f)*f+c[0];b=this.horizontalAngleMap.srcRange;c=this.horizontalAngleMap.dstRange;f=c[1]-c[0];this.theta=e(((this.theta-b[0])*(c[1]-c[0])/(b[1]-b[0])+c[0]-c[0])/f)*f+c[0];b=this.target.position;b.x=100*Math.sin(this.phi)*Math.cos(this.theta);b.y=100*Math.cos(this.phi);b.z=100*Math.sin(this.phi)*Math.sin(this.theta);this.object.lookAt(this.target.position)};this.onMouseMove=function(b){this.domElement===
+document?(this.mouseX=b.pageX-this.viewHalfX,this.mouseY=b.pageY-this.viewHalfY):(this.mouseX=b.pageX-this.domElement.offsetLeft-this.viewHalfX,this.mouseY=b.pageY-this.domElement.offsetTop-this.viewHalfY)};this.init=function(){this.spline=new THREE.Spline;this.spline.initFromArray(this.waypoints);this.useConstantSpeed&&this.spline.reparametrizeByArcLength(this.resamplingCoef);if(this.createDebugDummy){var b=new THREE.MeshLambertMaterial({color:30719}),e=new THREE.MeshLambertMaterial({color:65280}),
+c=new THREE.CubeGeometry(10,10,20),m=new THREE.CubeGeometry(2,2,10);this.animationParent=new THREE.Mesh(c,b);b=new THREE.Mesh(m,e);b.position.set(0,10,0);this.animation=h(this.animationParent,this.spline,this.id,this.duration);this.animationParent.add(this.object);this.animationParent.add(this.target);this.animationParent.add(b)}else this.animation=h(this.animationParent,this.spline,this.id,this.duration),this.animationParent.add(this.target),this.animationParent.add(this.object);if(this.createDebugPath){var b=
+this.debugPath,e=this.spline,c=k(e,10),m=k(e,10),n=new THREE.LineBasicMaterial({color:16711680,linewidth:3});lineObj=new THREE.Line(c,n);particleObj=new THREE.ParticleSystem(m,new THREE.ParticleBasicMaterial({color:16755200,size:3}));lineObj.scale.set(1,1,1);b.add(lineObj);particleObj.scale.set(1,1,1);b.add(particleObj);m=new THREE.SphereGeometry(1,16,8);n=new THREE.MeshBasicMaterial({color:65280});for(i=0;i<e.points.length;i++)c=new THREE.Mesh(m,n),c.position.copy(e.points[i]),b.add(c)}this.domElement.addEventListener("mousemove",
+f(this,this.onMouseMove),!1)}};THREE.PathControlsIdCounter=0;
+THREE.FlyControls=function(b,c){function e(b,e){return function(){e.apply(b,arguments)}}this.object=b;this.domElement=c!==void 0?c:document;c&&this.domElement.setAttribute("tabindex",-1);this.movementSpeed=1;this.rollSpeed=0.005;this.autoForward=this.dragToLook=!1;this.object.useQuaternion=!0;this.tmpQuaternion=new THREE.Quaternion;this.mouseStatus=0;this.moveState={up:0,down:0,left:0,right:0,forward:0,back:0,pitchUp:0,pitchDown:0,yawLeft:0,yawRight:0,rollLeft:0,rollRight:0};this.moveVector=new THREE.Vector3(0,
+0,0);this.rotationVector=new THREE.Vector3(0,0,0);this.lastUpdate=-1;this.tdiff=0;this.handleEvent=function(b){if(typeof this[b.type]=="function")this[b.type](b)};this.keydown=function(b){if(!b.altKey){switch(b.keyCode){case 16:this.movementSpeedMultiplier=0.1;break;case 87:this.moveState.forward=1;break;case 83:this.moveState.back=1;break;case 65:this.moveState.left=1;break;case 68:this.moveState.right=1;break;case 82:this.moveState.up=1;break;case 70:this.moveState.down=1;break;case 38:this.moveState.pitchUp=
+1;break;case 40:this.moveState.pitchDown=1;break;case 37:this.moveState.yawLeft=1;break;case 39:this.moveState.yawRight=1;break;case 81:this.moveState.rollLeft=1;break;case 69:this.moveState.rollRight=1}this.updateMovementVector();this.updateRotationVector()}};this.keyup=function(b){switch(b.keyCode){case 16:this.movementSpeedMultiplier=1;break;case 87:this.moveState.forward=0;break;case 83:this.moveState.back=0;break;case 65:this.moveState.left=0;break;case 68:this.moveState.right=0;break;case 82:this.moveState.up=
+0;break;case 70:this.moveState.down=0;break;case 38:this.moveState.pitchUp=0;break;case 40:this.moveState.pitchDown=0;break;case 37:this.moveState.yawLeft=0;break;case 39:this.moveState.yawRight=0;break;case 81:this.moveState.rollLeft=0;break;case 69:this.moveState.rollRight=0}this.updateMovementVector();this.updateRotationVector()};this.mousedown=function(b){this.domElement!==document&&this.domElement.focus();b.preventDefault();b.stopPropagation();if(this.dragToLook)this.mouseStatus++;else switch(b.button){case 0:this.object.moveForward=
+!0;break;case 2:this.object.moveBackward=!0}};this.mousemove=function(b){if(!this.dragToLook||this.mouseStatus>0){var e=this.getContainerDimensions(),c=e.size[0]/2,m=e.size[1]/2;this.moveState.yawLeft=-(b.pageX-e.offset[0]-c)/c;this.moveState.pitchDown=(b.pageY-e.offset[1]-m)/m;this.updateRotationVector()}};this.mouseup=function(b){b.preventDefault();b.stopPropagation();if(this.dragToLook)this.mouseStatus--,this.moveState.yawLeft=this.moveState.pitchDown=0;else switch(b.button){case 0:this.moveForward=
+!1;break;case 2:this.moveBackward=!1}this.updateRotationVector()};this.update=function(){var b=(new Date).getTime();if(this.lastUpdate==-1)this.lastUpdate=b;this.tdiff=(b-this.lastUpdate)/1E3;this.lastUpdate=b;var b=this.tdiff*this.movementSpeed,e=this.tdiff*this.rollSpeed;this.object.translateX(this.moveVector.x*b);this.object.translateY(this.moveVector.y*b);this.object.translateZ(this.moveVector.z*b);this.tmpQuaternion.set(this.rotationVector.x*e,this.rotationVector.y*e,this.rotationVector.z*e,
+1).normalize();this.object.quaternion.multiplySelf(this.tmpQuaternion);this.object.matrix.setPosition(this.object.position);this.object.matrix.setRotationFromQuaternion(this.object.quaternion);this.object.matrixWorldNeedsUpdate=!0};this.updateMovementVector=function(){var b=this.moveState.forward||this.autoForward&&!this.moveState.back?1:0;this.moveVector.x=-this.moveState.left+this.moveState.right;this.moveVector.y=-this.moveState.down+this.moveState.up;this.moveVector.z=-b+this.moveState.back};
+this.updateRotationVector=function(){this.rotationVector.x=-this.moveState.pitchDown+this.moveState.pitchUp;this.rotationVector.y=-this.moveState.yawRight+this.moveState.yawLeft;this.rotationVector.z=-this.moveState.rollRight+this.moveState.rollLeft};this.getContainerDimensions=function(){return this.domElement!=document?{size:[this.domElement.offsetWidth,this.domElement.offsetHeight],offset:[this.domElement.offsetLeft,this.domElement.offsetTop]}:{size:[window.innerWidth,window.innerHeight],offset:[0,
+0]}};this.domElement.addEventListener("mousemove",e(this,this.mousemove),!1);this.domElement.addEventListener("mousedown",e(this,this.mousedown),!1);this.domElement.addEventListener("mouseup",e(this,this.mouseup),!1);this.domElement.addEventListener("keydown",e(this,this.keydown),!1);this.domElement.addEventListener("keyup",e(this,this.keyup),!1);this.updateMovementVector();this.updateRotationVector()};
+THREE.RollControls=function(b,c){this.object=b;this.domElement=c!==void 0?c:document;this.mouseLook=!0;this.autoForward=!1;this.rollSpeed=this.movementSpeed=this.lookSpeed=1;this.constrainVertical=[-0.9,0.9];this.object.matrixAutoUpdate=!1;this.forward=new THREE.Vector3(0,0,1);this.roll=0;this.lastUpdate=-1;this.delta=0;var e=new THREE.Vector3,f=new THREE.Vector3,h=new THREE.Vector3,k=new THREE.Matrix4,m=!1,n=1,t=0,u=0,v=0,p=0,x=0,w=window.innerWidth/2,A=window.innerHeight/2;this.update=function(){var b=
+(new Date).getTime();if(this.lastUpdate==-1)this.lastUpdate=b;this.delta=(b-this.lastUpdate)/1E3;this.lastUpdate=b;this.mouseLook&&(b=this.delta*this.lookSpeed,this.rotateHorizontally(b*p),this.rotateVertically(b*x));b=this.delta*this.movementSpeed;this.object.translateZ(-b*(t>0||this.autoForward&&!(t<0)?1:t));this.object.translateX(b*u);this.object.translateY(b*v);m&&(this.roll+=this.rollSpeed*this.delta*n);if(this.forward.y>this.constrainVertical[1])this.forward.y=this.constrainVertical[1],this.forward.normalize();
+else if(this.forward.y<this.constrainVertical[0])this.forward.y=this.constrainVertical[0],this.forward.normalize();h.copy(this.forward);f.set(0,1,0);e.cross(f,h).normalize();f.cross(h,e).normalize();this.object.matrix.n11=e.x;this.object.matrix.n12=f.x;this.object.matrix.n13=h.x;this.object.matrix.n21=e.y;this.object.matrix.n22=f.y;this.object.matrix.n23=h.y;this.object.matrix.n31=e.z;this.object.matrix.n32=f.z;this.object.matrix.n33=h.z;k.identity();k.n11=Math.cos(this.roll);k.n12=-Math.sin(this.roll);
+k.n21=Math.sin(this.roll);k.n22=Math.cos(this.roll);this.object.matrix.multiplySelf(k);this.object.matrixWorldNeedsUpdate=!0;this.object.matrix.n14=this.object.position.x;this.object.matrix.n24=this.object.position.y;this.object.matrix.n34=this.object.position.z};this.translateX=function(b){this.object.position.x+=this.object.matrix.n11*b;this.object.position.y+=this.object.matrix.n21*b;this.object.position.z+=this.object.matrix.n31*b};this.translateY=function(b){this.object.position.x+=this.object.matrix.n12*
+b;this.object.position.y+=this.object.matrix.n22*b;this.object.position.z+=this.object.matrix.n32*b};this.translateZ=function(b){this.object.position.x-=this.object.matrix.n13*b;this.object.position.y-=this.object.matrix.n23*b;this.object.position.z-=this.object.matrix.n33*b};this.rotateHorizontally=function(b){e.set(this.object.matrix.n11,this.object.matrix.n21,this.object.matrix.n31);e.multiplyScalar(b);this.forward.subSelf(e);this.forward.normalize()};this.rotateVertically=function(b){f.set(this.object.matrix.n12,
+this.object.matrix.n22,this.object.matrix.n32);f.multiplyScalar(b);this.forward.addSelf(f);this.forward.normalize()};this.domElement.addEventListener("contextmenu",function(b){b.preventDefault()},!1);this.domElement.addEventListener("mousemove",function(b){p=(b.clientX-w)/window.innerWidth;x=(b.clientY-A)/window.innerHeight},!1);this.domElement.addEventListener("mousedown",function(b){b.preventDefault();b.stopPropagation();switch(b.button){case 0:t=1;break;case 2:t=-1}},!1);this.domElement.addEventListener("mouseup",
+function(b){b.preventDefault();b.stopPropagation();switch(b.button){case 0:t=0;break;case 2:t=0}},!1);this.domElement.addEventListener("keydown",function(b){switch(b.keyCode){case 38:case 87:t=1;break;case 37:case 65:u=-1;break;case 40:case 83:t=-1;break;case 39:case 68:u=1;break;case 81:m=!0;n=1;break;case 69:m=!0;n=-1;break;case 82:v=1;break;case 70:v=-1}},!1);this.domElement.addEventListener("keyup",function(b){switch(b.keyCode){case 38:case 87:t=0;break;case 37:case 65:u=0;break;case 40:case 83:t=
+0;break;case 39:case 68:u=0;break;case 81:m=!1;break;case 69:m=!1;break;case 82:v=0;break;case 70:v=0}},!1)};
+THREE.TrackballControls=function(b,c){function e(b,e){return function(){e.apply(b,arguments)}}this.object=b;this.domElement=c!==void 0?c:document;this.screen={width:window.innerWidth,height:window.innerHeight,offsetLeft:0,offsetTop:0};this.radius=(this.screen.width+this.screen.height)/4;this.rotateSpeed=1;this.zoomSpeed=1.2;this.panSpeed=0.3;this.staticMoving=this.noPan=this.noZoom=!1;this.dynamicDampingFactor=0.2;this.minDistance=0;this.maxDistance=Infinity;this.keys=[65,83,68];this.target=new THREE.Vector3(0,
+0,0);var f=!1,h=this.STATE.NONE,k=new THREE.Vector3,m=new THREE.Vector3,n=new THREE.Vector3,t=new THREE.Vector2,u=new THREE.Vector2,v=new THREE.Vector2,p=new THREE.Vector2;this.handleEvent=function(b){if(typeof this[b.type]=="function")this[b.type](b)};this.getMouseOnScreen=function(b,e){return new THREE.Vector2((b-this.screen.offsetLeft)/this.radius*0.5,(e-this.screen.offsetTop)/this.radius*0.5)};this.getMouseProjectionOnBall=function(b,e){var c=new THREE.Vector3((b-this.screen.width*0.5-this.screen.offsetLeft)/
+this.radius,(this.screen.height*0.5+this.screen.offsetTop-e)/this.radius,0),f=c.length();f>1?c.normalize():c.z=Math.sqrt(1-f*f);k.copy(this.object.position).subSelf(this.target);f=this.object.up.clone().setLength(c.y);f.addSelf(this.object.up.clone().crossSelf(k).setLength(c.x));f.addSelf(k.setLength(c.z));return f};this.rotateCamera=function(){var b=Math.acos(m.dot(n)/m.length()/n.length());if(b){var e=(new THREE.Vector3).cross(m,n).normalize(),c=new THREE.Quaternion;b*=this.rotateSpeed;c.setFromAxisAngle(e,
+-b);c.multiplyVector3(k);c.multiplyVector3(this.object.up);c.multiplyVector3(n);this.staticMoving?m=n:(c.setFromAxisAngle(e,b*(this.dynamicDampingFactor-1)),c.multiplyVector3(m))}};this.zoomCamera=function(){var b=1+(u.y-t.y)*this.zoomSpeed;b!==1&&b>0&&(k.multiplyScalar(b),this.staticMoving?t=u:t.y+=(u.y-t.y)*this.dynamicDampingFactor)};this.panCamera=function(){var b=p.clone().subSelf(v);if(b.lengthSq()){b.multiplyScalar(k.length()*this.panSpeed);var e=k.clone().crossSelf(this.object.up).setLength(b.x);
+e.addSelf(this.object.up.clone().setLength(b.y));this.object.position.addSelf(e);this.target.addSelf(e);this.staticMoving?v=p:v.addSelf(b.sub(p,v).multiplyScalar(this.dynamicDampingFactor))}};this.checkDistances=function(){if(!this.noZoom||!this.noPan)this.object.position.lengthSq()>this.maxDistance*this.maxDistance&&this.object.position.setLength(this.maxDistance),k.lengthSq()<this.minDistance*this.minDistance&&this.object.position.add(this.target,k.setLength(this.minDistance))};this.update=function(){k.copy(this.object.position).subSelf(this.target);
+this.rotateCamera();this.noZoom||this.zoomCamera();this.noPan||this.panCamera();this.object.position.add(this.target,k);this.checkDistances();this.object.lookAt(this.target)};this.domElement.addEventListener("contextmenu",function(b){b.preventDefault()},!1);this.domElement.addEventListener("mousemove",e(this,function(b){f&&(m=n=this.getMouseProjectionOnBall(b.clientX,b.clientY),t=u=this.getMouseOnScreen(b.clientX,b.clientY),v=p=this.getMouseOnScreen(b.clientX,b.clientY),f=!1);h!==this.STATE.NONE&&
+(h===this.STATE.ROTATE?n=this.getMouseProjectionOnBall(b.clientX,b.clientY):h===this.STATE.ZOOM&&!this.noZoom?u=this.getMouseOnScreen(b.clientX,b.clientY):h===this.STATE.PAN&&!this.noPan&&(p=this.getMouseOnScreen(b.clientX,b.clientY)))}),!1);this.domElement.addEventListener("mousedown",e(this,function(b){b.preventDefault();b.stopPropagation();if(h===this.STATE.NONE)h=b.button,h===this.STATE.ROTATE?m=n=this.getMouseProjectionOnBall(b.clientX,b.clientY):h===this.STATE.ZOOM&&!this.noZoom?t=u=this.getMouseOnScreen(b.clientX,
+b.clientY):this.noPan||(v=p=this.getMouseOnScreen(b.clientX,b.clientY))}),!1);this.domElement.addEventListener("mouseup",e(this,function(b){b.preventDefault();b.stopPropagation();h=this.STATE.NONE}),!1);window.addEventListener("keydown",e(this,function(b){if(h===this.STATE.NONE){if(b.keyCode===this.keys[this.STATE.ROTATE])h=this.STATE.ROTATE;else if(b.keyCode===this.keys[this.STATE.ZOOM]&&!this.noZoom)h=this.STATE.ZOOM;else if(b.keyCode===this.keys[this.STATE.PAN]&&!this.noPan)h=this.STATE.PAN;h!==
+this.STATE.NONE&&(f=!0)}}),!1);window.addEventListener("keyup",e(this,function(){if(h!==this.STATE.NONE)h=this.STATE.NONE}),!1)};THREE.TrackballControls.prototype.STATE={NONE:-1,ROTATE:0,ZOOM:1,PAN:2};
+THREE.CubeGeometry=function(b,c,e,f,h,k,m,n){function t(b,e,c,m,n,p,t,w){var v,x,A=f||1,Z=h||1,L=n/2,P=p/2,U=u.vertices.length;if(b=="x"&&e=="y"||b=="y"&&e=="x")v="z";else if(b=="x"&&e=="z"||b=="z"&&e=="x")v="y",Z=k||1;else if(b=="z"&&e=="y"||b=="y"&&e=="z")v="x",A=k||1;var Y=A+1,X=Z+1;n/=A;var o=p/Z;for(x=0;x<X;x++)for(p=0;p<Y;p++){var ea=new THREE.Vector3;ea[b]=(p*n-L)*c;ea[e]=(x*o-P)*m;ea[v]=t;u.vertices.push(new THREE.Vertex(ea))}for(x=0;x<Z;x++)for(p=0;p<A;p++)u.faces.push(new THREE.Face4(p+
+Y*x+U,p+Y*(x+1)+U,p+1+Y*(x+1)+U,p+1+Y*x+U,null,null,w)),u.faceVertexUvs[0].push([new THREE.UV(p/A,x/Z),new THREE.UV(p/A,(x+1)/Z),new THREE.UV((p+1)/A,(x+1)/Z),new THREE.UV((p+1)/A,x/Z)])}THREE.Geometry.call(this);var u=this,v=b/2,p=c/2,x=e/2;if(m!==void 0)if(m instanceof Array)this.materials=m;else{this.materials=[];for(var w=0;w<6;w++)this.materials.push([m])}else this.materials=[];this.sides={px:!0,nx:!0,py:!0,ny:!0,pz:!0,nz:!0};if(n!=void 0)for(var A in n)this.sides[A]!=void 0&&(this.sides[A]=
+n[A]);this.sides.px&&t("z","y",-1,-1,e,c,v,this.materials[0]);this.sides.nx&&t("z","y",1,-1,e,c,-v,this.materials[1]);this.sides.py&&t("x","z",1,1,b,e,p,this.materials[2]);this.sides.ny&&t("x","z",1,-1,b,e,-p,this.materials[3]);this.sides.pz&&t("x","y",1,-1,b,c,x,this.materials[4]);this.sides.nz&&t("x","y",-1,-1,b,c,-x,this.materials[5]);this.mergeVertices();this.computeCentroids();this.computeFaceNormals()};THREE.CubeGeometry.prototype=new THREE.Geometry;
+THREE.CubeGeometry.prototype.constructor=THREE.CubeGeometry;
+THREE.CylinderGeometry=function(b,c,e,f,h,k){THREE.Geometry.call(this);var b=b!=null?b:20,c=c!=null?c:20,e=e||100,m=e/2,f=f||8,h=h||1,n,t,u=[],v=[];for(t=0;t<=h;t++){var p=[],x=[],w=t/h,A=w*(c-b)+b;for(n=0;n<=f;n++){var z=n/f;this.vertices.push(new THREE.Vertex(new THREE.Vector3(A*Math.sin(z*Math.PI*2),-w*e+m,A*Math.cos(z*Math.PI*2))));p.push(this.vertices.length-1);x.push(new THREE.UV(z,w))}u.push(p);v.push(x)}for(t=0;t<h;t++)for(n=0;n<f;n++){var e=u[t][n],p=u[t+1][n],x=u[t+1][n+1],w=u[t][n+1],A=
+this.vertices[e].position.clone().setY(0).normalize(),z=this.vertices[p].position.clone().setY(0).normalize(),y=this.vertices[x].position.clone().setY(0).normalize(),C=this.vertices[w].position.clone().setY(0).normalize(),E=v[t][n].clone(),D=v[t+1][n].clone(),F=v[t+1][n+1].clone(),M=v[t][n+1].clone();this.faces.push(new THREE.Face4(e,p,x,w,[A,z,y,C]));this.faceVertexUvs[0].push([E,D,F,M])}if(!k&&b>0){this.vertices.push(new THREE.Vertex(new THREE.Vector3(0,m,0)));for(n=0;n<f;n++)e=u[0][n],p=u[0][n+
+1],x=this.vertices.length-1,A=new THREE.Vector3(0,1,0),z=new THREE.Vector3(0,1,0),y=new THREE.Vector3(0,1,0),E=v[0][n].clone(),D=v[0][n+1].clone(),F=new THREE.UV(D.u,0),this.faces.push(new THREE.Face3(e,p,x,[A,z,y])),this.faceVertexUvs[0].push([E,D,F])}if(!k&&c>0){this.vertices.push(new THREE.Vertex(new THREE.Vector3(0,-m,0)));for(n=0;n<f;n++)e=u[t][n+1],p=u[t][n],x=this.vertices.length-1,A=new THREE.Vector3(0,-1,0),z=new THREE.Vector3(0,-1,0),y=new THREE.Vector3(0,-1,0),E=v[t][n+1].clone(),D=v[t][n].clone(),
+F=new THREE.UV(D.u,1),this.faces.push(new THREE.Face3(e,p,x,[A,z,y])),this.faceVertexUvs[0].push([E,D,F])}this.computeCentroids();this.computeFaceNormals()};THREE.CylinderGeometry.prototype=new THREE.Geometry;THREE.CylinderGeometry.prototype.constructor=THREE.CylinderGeometry;
+THREE.ExtrudeGeometry=function(b,c){if(typeof b!="undefined"){THREE.Geometry.call(this);var b=b instanceof Array?b:[b],e,f=b.length,h;this.shapebb=b[f-1].getBoundingBox();for(e=0;e<f;e++)h=b[e],this.addShape(h,c);this.computeCentroids();this.computeFaceNormals()}};THREE.ExtrudeGeometry.prototype=new THREE.Geometry;THREE.ExtrudeGeometry.prototype.constructor=THREE.ExtrudeGeometry;
+THREE.ExtrudeGeometry.prototype.addShape=function(b,c){function e(b,e,c){e||console.log("die");return e.clone().multiplyScalar(c).addSelf(b)}function f(b,e,c){var f=THREE.ExtrudeGeometry.__v1,h=THREE.ExtrudeGeometry.__v2,k=THREE.ExtrudeGeometry.__v3,m=THREE.ExtrudeGeometry.__v4,n=THREE.ExtrudeGeometry.__v5,o=THREE.ExtrudeGeometry.__v6;f.set(b.x-e.x,b.y-e.y);h.set(b.x-c.x,b.y-c.y);f=f.normalize();h=h.normalize();k.set(-f.y,f.x);m.set(h.y,-h.x);n.copy(b).addSelf(k);o.copy(b).addSelf(m);if(n.equals(o))return m.clone();
+n.copy(e).addSelf(k);o.copy(c).addSelf(m);k=f.dot(m);m=o.subSelf(n).dot(m);k==0&&(console.log("Either infinite or no solutions!"),m==0?console.log("Its finite solutions."):console.log("Too bad, no solutions."));m/=k;if(m<0)return e=Math.atan2(e.y-b.y,e.x-b.x),b=Math.atan2(c.y-b.y,c.x-b.x),e>b&&(b+=Math.PI*2),anglec=(e+b)/2,new THREE.Vector2(-Math.cos(anglec),-Math.sin(anglec));return f.multiplyScalar(m).addSelf(n).subSelf(b).clone()}function h(b){for(L=b.length;--L>=0;){la=L;ga=L-1;ga<0&&(ga=b.length-
+1);for(var e=0,c=w+v*2,e=0;e<c;e++){var f=ea*e,h=ea*(e+1),k=$+la+f,m=$+la+h,o=k,f=$+ga+f,h=$+ga+h,p=m;o+=Z;f+=Z;h+=Z;p+=Z;K.faces.push(new THREE.Face4(o,f,h,p,null,null,F));F&&(o=e/c,f=(e+1)/c,h=n+t*2,k=(K.vertices[k].position.z+t)/h,m=(K.vertices[m].position.z+t)/h,K.faceVertexUvs[0].push([new THREE.UV(k,o),new THREE.UV(m,o),new THREE.UV(m,f),new THREE.UV(k,f)]))}}}function k(b,e,c){K.vertices.push(new THREE.Vertex(new THREE.Vector3(b,e,c)))}function m(b,e,c){b+=Z;e+=Z;c+=Z;K.faces.push(new THREE.Face3(b,
+e,c,null,null,D));if(D){var f=M.maxY,h=M.maxX,k=K.vertices[e].position.x,e=K.vertices[e].position.y,m=K.vertices[c].position.x,c=K.vertices[c].position.y;K.faceVertexUvs[0].push([new THREE.UV(K.vertices[b].position.x/h,K.vertices[b].position.y/f),new THREE.UV(k/h,e/f),new THREE.UV(m/h,c/f)])}}var n=c.amount!==void 0?c.amount:100,t=c.bevelThickness!==void 0?c.bevelThickness:6,u=c.bevelSize!==void 0?c.bevelSize:t-2,v=c.bevelSegments!==void 0?c.bevelSegments:3,p=c.bevelEnabled!==void 0?c.bevelEnabled:
+!0,x=c.curveSegments!==void 0?c.curveSegments:12,w=c.steps!==void 0?c.steps:1,A=c.bendPath,z=c.extrudePath,y,C=!1,E=c.useSpacedPoints!==void 0?c.useSpacedPoints:!1,D=c.material,F=c.extrudeMaterial,M=this.shapebb;if(z)y=z.getPoints(x),w=y.length,C=!0,p=!1;p||(u=t=v=0);var N,G,H,K=this,Z=this.vertices.length;A&&b.addWrapPath(A);x=E?b.extractAllSpacedPoints(x):b.extractAllPoints(x);A=x.shape;x=x.holes;if(z=!THREE.Shape.Utils.isClockWise(A)){A=A.reverse();G=0;for(H=x.length;G<H;G++)N=x[G],THREE.Shape.Utils.isClockWise(N)&&
+(x[G]=N.reverse());z=!1}z=THREE.Shape.Utils.triangulateShape(A,x);E=A;G=0;for(H=x.length;G<H;G++)N=x[G],A=A.concat(N);var L,P,U,Y,X,o,ea=A.length,R=z.length,pa=[];L=0;P=E.length;la=P-1;for(ga=L+1;L<P;L++,la++,ga++)la==P&&(la=0),ga==P&&(ga=0),pa[L]=f(E[L],E[la],E[ga]);var fa=[],ma,da=pa.concat();G=0;for(H=x.length;G<H;G++){N=x[G];ma=[];L=0;P=N.length;la=P-1;for(ga=L+1;L<P;L++,la++,ga++)la==P&&(la=0),ga==P&&(ga=0),ma[L]=f(N[L],N[la],N[ga]);fa.push(ma);da=da.concat(ma)}for(U=0;U<v;U++){Y=U/v;X=t*(1-
+Y);Y=u*Math.sin(Y*Math.PI/2);L=0;for(P=E.length;L<P;L++)o=e(E[L],pa[L],Y),k(o.x,o.y,-X);G=0;for(H=x.length;G<H;G++){N=x[G];ma=fa[G];L=0;for(P=N.length;L<P;L++)o=e(N[L],ma[L],Y),k(o.x,o.y,-X)}}Y=u;for(L=0;L<ea;L++)o=p?e(A[L],da[L],Y):A[L],C?k(o.x,o.y+y[0].y,y[0].x):k(o.x,o.y,0);for(U=1;U<=w;U++)for(L=0;L<ea;L++)o=p?e(A[L],da[L],Y):A[L],C?k(o.x,o.y+y[U-1].y,y[U-1].x):k(o.x,o.y,n/w*U);for(U=v-1;U>=0;U--){Y=U/v;X=t*(1-Y);Y=u*Math.sin(Y*Math.PI/2);L=0;for(P=E.length;L<P;L++)o=e(E[L],pa[L],Y),k(o.x,o.y,
+n+X);G=0;for(H=x.length;G<H;G++){N=x[G];ma=fa[G];L=0;for(P=N.length;L<P;L++)o=e(N[L],ma[L],Y),C?k(o.x,o.y+y[w-1].y,y[w-1].x+X):k(o.x,o.y,n+X)}}if(p){p=ea*0;for(L=0;L<R;L++)u=z[L],m(u[2]+p,u[1]+p,u[0]+p);p=ea*(w+v*2);for(L=0;L<R;L++)u=z[L],m(u[0]+p,u[1]+p,u[2]+p)}else{for(L=0;L<R;L++)u=z[L],m(u[2],u[1],u[0]);for(L=0;L<R;L++)u=z[L],m(u[0]+ea*w,u[1]+ea*w,u[2]+ea*w)}var la,ga,$=0;h(E);$+=E.length;G=0;for(H=x.length;G<H;G++)N=x[G],h(N),$+=N.length};THREE.ExtrudeGeometry.__v1=new THREE.Vector2;
+THREE.ExtrudeGeometry.__v2=new THREE.Vector2;THREE.ExtrudeGeometry.__v3=new THREE.Vector2;THREE.ExtrudeGeometry.__v4=new THREE.Vector2;THREE.ExtrudeGeometry.__v5=new THREE.Vector2;THREE.ExtrudeGeometry.__v6=new THREE.Vector2;
+THREE.IcosahedronGeometry=function(b){function c(b,e,c){var f=Math.sqrt(b*b+e*e+c*c);return h.vertices.push(new THREE.Vertex(new THREE.Vector3(b/f,e/f,c/f)))-1}function e(b,e,c,f){f.faces.push(new THREE.Face3(b,e,c))}function f(b,e){var f=h.vertices[b].position,k=h.vertices[e].position;return c((f.x+k.x)/2,(f.y+k.y)/2,(f.z+k.z)/2)}var h=this,k=new THREE.Geometry;this.subdivisions=b||0;THREE.Geometry.call(this);b=(1+Math.sqrt(5))/2;c(-1,b,0);c(1,b,0);c(-1,-b,0);c(1,-b,0);c(0,-1,b);c(0,1,b);c(0,-1,
+-b);c(0,1,-b);c(b,0,-1);c(b,0,1);c(-b,0,-1);c(-b,0,1);e(0,11,5,k);e(0,5,1,k);e(0,1,7,k);e(0,7,10,k);e(0,10,11,k);e(1,5,9,k);e(5,11,4,k);e(11,10,2,k);e(10,7,6,k);e(7,1,8,k);e(3,9,4,k);e(3,4,2,k);e(3,2,6,k);e(3,6,8,k);e(3,8,9,k);e(4,9,5,k);e(2,4,11,k);e(6,2,10,k);e(8,6,7,k);e(9,8,1,k);for(var m=0;m<this.subdivisions;m++){var b=new THREE.Geometry,n;for(n in k.faces){var t=f(k.faces[n].a,k.faces[n].b),u=f(k.faces[n].b,k.faces[n].c),v=f(k.faces[n].c,k.faces[n].a);e(k.faces[n].a,t,v,b);e(k.faces[n].b,u,
+t,b);e(k.faces[n].c,v,u,b);e(t,u,v,b)}k.faces=b.faces}h.faces=k.faces;this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};THREE.IcosahedronGeometry.prototype=new THREE.Geometry;THREE.IcosahedronGeometry.prototype.constructor=THREE.IcosahedronGeometry;
+THREE.LatheGeometry=function(b,c,e){THREE.Geometry.call(this);this.steps=c||12;this.angle=e||2*Math.PI;for(var c=this.angle/this.steps,e=[],f=[],h=[],k=[],m=(new THREE.Matrix4).setRotationZ(c),n=0;n<b.length;n++)this.vertices.push(new THREE.Vertex(b[n])),e[n]=b[n].clone(),f[n]=this.vertices.length-1;for(var t=0;t<=this.angle+0.001;t+=c){for(n=0;n<e.length;n++)t<this.angle?(e[n]=m.multiplyVector3(e[n].clone()),this.vertices.push(new THREE.Vertex(e[n])),h[n]=this.vertices.length-1):h=k;t==0&&(k=f);
+for(n=0;n<f.length-1;n++)this.faces.push(new THREE.Face4(h[n],h[n+1],f[n+1],f[n])),this.faceVertexUvs[0].push([new THREE.UV(1-t/this.angle,n/b.length),new THREE.UV(1-t/this.angle,(n+1)/b.length),new THREE.UV(1-(t-c)/this.angle,(n+1)/b.length),new THREE.UV(1-(t-c)/this.angle,n/b.length)]);f=h;h=[]}this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};THREE.LatheGeometry.prototype=new THREE.Geometry;THREE.LatheGeometry.prototype.constructor=THREE.LatheGeometry;
+THREE.OctahedronGeometry=function(b,c){function e(e){var c=e.clone().normalize(),c=new THREE.Vertex(c.clone().multiplyScalar(b));c.index=m.vertices.push(c)-1;c.uv=new THREE.UV(Math.atan2(e.z,-e.x)/2/Math.PI+0.5,Math.atan2(-e.y,Math.sqrt(e.x*e.x+e.z*e.z))/Math.PI+0.5);return c}function f(b,e,c,n){n<1?(n=new THREE.Face3(b.index,e.index,c.index,[b.position,e.position,c.position]),n.centroid.addSelf(b.position).addSelf(e.position).addSelf(c.position).divideScalar(3),n.normal=n.centroid.clone().normalize(),
+m.faces.push(n),n=Math.atan2(n.centroid.z,-n.centroid.x),m.faceVertexUvs[0].push([k(b.uv,b.position,n),k(e.uv,e.position,n),k(c.uv,c.position,n)])):(n-=1,f(b,h(b,e),h(b,c),n),f(h(b,e),e,h(e,c),n),f(h(b,c),h(e,c),c,n),f(h(b,e),h(e,c),h(b,c),n))}function h(b,c){n[b.index]||(n[b.index]=[]);n[c.index]||(n[c.index]=[]);var f=n[b.index][c.index];f===void 0&&(n[b.index][c.index]=n[c.index][b.index]=f=e((new THREE.Vector3).add(b.position,c.position).divideScalar(2)));return f}function k(b,e,c){c<0&&b.u===
+1&&(b=new THREE.UV(b.u-1,b.v));e.x===0&&e.z===0&&(b=new THREE.UV(c/2/Math.PI+0.5,b.v));return b}THREE.Geometry.call(this);var c=isFinite(c)?c:3,m=this;e(new THREE.Vector3(1,0,0));e(new THREE.Vector3(-1,0,0));e(new THREE.Vector3(0,1,0));e(new THREE.Vector3(0,-1,0));e(new THREE.Vector3(0,0,1));e(new THREE.Vector3(0,0,-1));var n=[],t=this.vertices;f(t[0],t[2],t[4],c);f(t[0],t[4],t[3],c);f(t[0],t[3],t[5],c);f(t[0],t[5],t[2],c);f(t[1],t[2],t[5],c);f(t[1],t[5],t[3],c);f(t[1],t[3],t[4],c);f(t[1],t[4],t[2],
+c);this.boundingSphere={radius:b}};THREE.OctahedronGeometry.prototype=new THREE.Geometry;THREE.OctahedronGeometry.prototype.constructor=THREE.OctahedronGeometry;
+THREE.PlaneGeometry=function(b,c,e,f){THREE.Geometry.call(this);var h,k=b/2,m=c/2,e=e||1,f=f||1,n=e+1,t=f+1;b/=e;var u=c/f;for(h=0;h<t;h++)for(c=0;c<n;c++)this.vertices.push(new THREE.Vertex(new THREE.Vector3(c*b-k,-(h*u-m),0)));for(h=0;h<f;h++)for(c=0;c<e;c++)this.faces.push(new THREE.Face4(c+n*h,c+n*(h+1),c+1+n*(h+1),c+1+n*h)),this.faceVertexUvs[0].push([new THREE.UV(c/e,h/f),new THREE.UV(c/e,(h+1)/f),new THREE.UV((c+1)/e,(h+1)/f),new THREE.UV((c+1)/e,h/f)]);this.computeCentroids();this.computeFaceNormals()};
+THREE.PlaneGeometry.prototype=new THREE.Geometry;THREE.PlaneGeometry.prototype.constructor=THREE.PlaneGeometry;
+THREE.SphereGeometry=function(b,c,e){THREE.Geometry.call(this);for(var b=b||50,f,h=Math.PI,k=Math.max(3,c||8),m=Math.max(2,e||6),c=[],e=0;e<m+1;e++){f=e/m;var n=b*Math.cos(f*h),t=b*Math.sin(f*h),u=[],v=0;for(f=0;f<k;f++){var p=2*f/k,x=t*Math.sin(p*h),p=t*Math.cos(p*h);(e==0||e==m)&&f>0||(v=this.vertices.push(new THREE.Vertex(new THREE.Vector3(p,n,x)))-1);u.push(v)}c.push(u)}for(var w,A,z,h=c.length,e=0;e<h;e++)if(k=c[e].length,e>0)for(f=0;f<k;f++){u=f==k-1;m=c[e][u?0:f+1];n=c[e][u?k-1:f];t=c[e-1][u?
+k-1:f];u=c[e-1][u?0:f+1];x=e/(h-1);w=(e-1)/(h-1);A=(f+1)/k;var p=f/k,v=new THREE.UV(1-A,x),x=new THREE.UV(1-p,x),p=new THREE.UV(1-p,w),y=new THREE.UV(1-A,w);e<c.length-1&&(w=this.vertices[m].position.clone(),A=this.vertices[n].position.clone(),z=this.vertices[t].position.clone(),w.normalize(),A.normalize(),z.normalize(),this.faces.push(new THREE.Face3(m,n,t,[new THREE.Vector3(w.x,w.y,w.z),new THREE.Vector3(A.x,A.y,A.z),new THREE.Vector3(z.x,z.y,z.z)])),this.faceVertexUvs[0].push([v,x,p]));e>1&&(w=
+this.vertices[m].position.clone(),A=this.vertices[t].position.clone(),z=this.vertices[u].position.clone(),w.normalize(),A.normalize(),z.normalize(),this.faces.push(new THREE.Face3(m,t,u,[new THREE.Vector3(w.x,w.y,w.z),new THREE.Vector3(A.x,A.y,A.z),new THREE.Vector3(z.x,z.y,z.z)])),this.faceVertexUvs[0].push([v,p,y]))}this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals();this.boundingSphere={radius:b}};THREE.SphereGeometry.prototype=new THREE.Geometry;
+THREE.SphereGeometry.prototype.constructor=THREE.SphereGeometry;
+THREE.TextGeometry=function(b,c){var e=(new THREE.TextPath(b,c)).toShapes();c.amount=c.height!==void 0?c.height:50;if(c.bevelThickness===void 0)c.bevelThickness=10;if(c.bevelSize===void 0)c.bevelSize=8;if(c.bevelEnabled===void 0)c.bevelEnabled=!1;if(c.bend){var f=e[e.length-1].getBoundingBox().maxX;c.bendPath=new THREE.QuadraticBezierCurve(new THREE.Vector2(0,0),new THREE.Vector2(f/2,120),new THREE.Vector2(f,0))}THREE.ExtrudeGeometry.call(this,e,c)};THREE.TextGeometry.prototype=new THREE.ExtrudeGeometry;
+THREE.TextGeometry.prototype.constructor=THREE.TextGeometry;
+THREE.FontUtils={faces:{},face:"helvetiker",weight:"normal",style:"normal",size:150,divisions:10,getFace:function(){return this.faces[this.face][this.weight][this.style]},getTextShapes:function(b,c){return(new TextPath(b,c)).toShapes()},loadFace:function(b){var c=b.familyName.toLowerCase();this.faces[c]=this.faces[c]||{};this.faces[c][b.cssFontWeight]=this.faces[c][b.cssFontWeight]||{};this.faces[c][b.cssFontWeight][b.cssFontStyle]=b;return this.faces[c][b.cssFontWeight][b.cssFontStyle]=b},drawText:function(b){for(var c=
+this.getFace(),e=this.size/c.resolution,f=0,h=String(b).split(""),k=h.length,m=[],b=0;b<k;b++){var n=new THREE.Path,n=this.extractGlyphPoints(h[b],c,e,f,n);f+=n.offset;m.push(n.path)}return{paths:m,offset:f/2}},extractGlyphPoints:function(b,c,e,f,h){var k=[],m,n,t,u,v,p,x,w,A,z,y=c.glyphs[b]||c.glyphs[ctxt.options.fallbackCharacter];if(y){if(y.o){c=y._cachedOutline||(y._cachedOutline=y.o.split(" "));t=c.length;for(b=0;b<t;)switch(n=c[b++],n){case "m":n=c[b++]*e+f;u=c[b++]*e;k.push(new THREE.Vector2(n,
+u));h.moveTo(n,u);break;case "l":n=c[b++]*e+f;u=c[b++]*e;k.push(new THREE.Vector2(n,u));h.lineTo(n,u);break;case "q":n=c[b++]*e+f;u=c[b++]*e;x=c[b++]*e+f;w=c[b++]*e;h.quadraticCurveTo(x,w,n,u);if(m=k[k.length-1]){v=m.x;p=m.y;m=1;for(divisions=this.divisions;m<=divisions;m++){var C=m/divisions,E=THREE.Shape.Utils.b2(C,v,x,n),C=THREE.Shape.Utils.b2(C,p,w,u);k.push(new THREE.Vector2(E,C))}}break;case "b":if(n=c[b++]*e+f,u=c[b++]*e,x=c[b++]*e+f,w=c[b++]*-e,A=c[b++]*e+f,z=c[b++]*-e,h.bezierCurveTo(n,u,
+x,w,A,z),m=k[k.length-1]){v=m.x;p=m.y;m=1;for(divisions=this.divisions;m<=divisions;m++)C=m/divisions,E=THREE.Shape.Utils.b3(C,v,x,A,n),C=THREE.Shape.Utils.b3(C,p,w,z,u),k.push(new THREE.Vector2(E,C))}}}return{offset:y.ha*e,points:k,path:h}}}};
+(function(b){var c=function(b){for(var c=b.length,h=0,k=c-1,m=0;m<c;k=m++)h+=b[k].x*b[m].y-b[m].x*b[k].y;return h*0.5};b.Triangulate=function(b,f){var h=b.length;if(h<3)return null;var k=[],m=[],n=[],t,u,v;if(c(b)>0)for(u=0;u<h;u++)m[u]=u;else for(u=0;u<h;u++)m[u]=h-1-u;var p=2*h;for(u=h-1;h>2;){if(p--<=0){console.log("Warning, unable to triangulate polygon!");if(f)return n;return k}t=u;h<=t&&(t=0);u=t+1;h<=u&&(u=0);v=u+1;h<=v&&(v=0);var x;a:{x=b;var w=t,A=u,z=v,y=h,C=m,E=void 0,D=void 0,F=void 0,
+M=void 0,N=void 0,G=void 0,H=void 0,K=void 0,Z=void 0,D=x[C[w]].x,F=x[C[w]].y,M=x[C[A]].x,N=x[C[A]].y,G=x[C[z]].x,H=x[C[z]].y;if(1.0E-10>(M-D)*(H-F)-(N-F)*(G-D))x=!1;else{for(E=0;E<y;E++)if(!(E==w||E==A||E==z)){var K=x[C[E]].x,Z=x[C[E]].y,L=void 0,P=void 0,U=void 0,Y=void 0,X=void 0,o=void 0,ea=void 0,R=void 0,pa=void 0,fa=void 0,ma=void 0,da=void 0,L=U=X=void 0,L=G-M,P=H-N,U=D-G,Y=F-H,X=M-D,o=N-F,ea=K-D,R=Z-F,pa=K-M,fa=Z-N,ma=K-G,da=Z-H,L=L*fa-P*pa,X=X*R-o*ea,U=U*da-Y*ma;if(L>=0&&U>=0&&X>=0){x=!1;
+break a}}x=!0}}if(x){k.push([b[m[t]],b[m[u]],b[m[v]]]);n.push([m[t],m[u],m[v]]);t=u;for(v=u+1;v<h;t++,v++)m[t]=m[v];h--;p=2*h}}if(f)return n;return k};b.Triangulate.area=c;return b})(THREE.FontUtils);self._typeface_js={faces:THREE.FontUtils.faces,loadFace:THREE.FontUtils.loadFace};
+THREE.TorusGeometry=function(b,c,e,f,h){THREE.Geometry.call(this);this.radius=b||100;this.tube=c||40;this.segmentsR=e||8;this.segmentsT=f||6;this.arc=h||Math.PI*2;h=new THREE.Vector3;b=[];c=[];for(e=0;e<=this.segmentsR;e++)for(f=0;f<=this.segmentsT;f++){var k=f/this.segmentsT*this.arc,m=e/this.segmentsR*Math.PI*2;h.x=this.radius*Math.cos(k);h.y=this.radius*Math.sin(k);var n=new THREE.Vector3;n.x=(this.radius+this.tube*Math.cos(m))*Math.cos(k);n.y=(this.radius+this.tube*Math.cos(m))*Math.sin(k);n.z=
+this.tube*Math.sin(m);this.vertices.push(new THREE.Vertex(n));b.push(new THREE.UV(f/this.segmentsT,1-e/this.segmentsR));c.push(n.clone().subSelf(h).normalize())}for(e=1;e<=this.segmentsR;e++)for(f=1;f<=this.segmentsT;f++){var h=(this.segmentsT+1)*e+f-1,k=(this.segmentsT+1)*(e-1)+f-1,m=(this.segmentsT+1)*(e-1)+f,n=(this.segmentsT+1)*e+f,t=new THREE.Face4(h,k,m,n,[c[h],c[k],c[m],c[n]]);t.normal.addSelf(c[h]);t.normal.addSelf(c[k]);t.normal.addSelf(c[m]);t.normal.addSelf(c[n]);t.normal.normalize();this.faces.push(t);
+this.faceVertexUvs[0].push([b[h].clone(),b[k].clone(),b[m].clone(),b[n].clone()])}this.computeCentroids()};THREE.TorusGeometry.prototype=new THREE.Geometry;THREE.TorusGeometry.prototype.constructor=THREE.TorusGeometry;
+THREE.TorusKnotGeometry=function(b,c,e,f,h,k,m){function n(b,e,c,f,h,k){e=c/f*b;c=Math.cos(e);return new THREE.Vector3(h*(2+c)*0.5*Math.cos(b),h*(2+c)*Math.sin(b)*0.5,k*h*Math.sin(e)*0.5)}THREE.Geometry.call(this);this.radius=b||200;this.tube=c||40;this.segmentsR=e||64;this.segmentsT=f||8;this.p=h||2;this.q=k||3;this.heightScale=m||1;this.grid=Array(this.segmentsR);e=new THREE.Vector3;f=new THREE.Vector3;k=new THREE.Vector3;for(b=0;b<this.segmentsR;++b){this.grid[b]=Array(this.segmentsT);for(c=0;c<
+this.segmentsT;++c){var t=b/this.segmentsR*2*this.p*Math.PI,m=c/this.segmentsT*2*Math.PI,h=n(t,m,this.q,this.p,this.radius,this.heightScale),t=n(t+0.01,m,this.q,this.p,this.radius,this.heightScale);e.x=t.x-h.x;e.y=t.y-h.y;e.z=t.z-h.z;f.x=t.x+h.x;f.y=t.y+h.y;f.z=t.z+h.z;k.cross(e,f);f.cross(k,e);k.normalize();f.normalize();t=-this.tube*Math.cos(m);m=this.tube*Math.sin(m);h.x+=t*f.x+m*k.x;h.y+=t*f.y+m*k.y;h.z+=t*f.z+m*k.z;this.grid[b][c]=this.vertices.push(new THREE.Vertex(new THREE.Vector3(h.x,h.y,
+h.z)))-1}}for(b=0;b<this.segmentsR;++b)for(c=0;c<this.segmentsT;++c){var f=(b+1)%this.segmentsR,k=(c+1)%this.segmentsT,h=this.grid[b][c],e=this.grid[f][c],f=this.grid[f][k],k=this.grid[b][k],m=new THREE.UV(b/this.segmentsR,c/this.segmentsT),t=new THREE.UV((b+1)/this.segmentsR,c/this.segmentsT),u=new THREE.UV((b+1)/this.segmentsR,(c+1)/this.segmentsT),v=new THREE.UV(b/this.segmentsR,(c+1)/this.segmentsT);this.faces.push(new THREE.Face4(h,e,f,k));this.faceVertexUvs[0].push([m,t,u,v])}this.computeCentroids();
+this.computeFaceNormals();this.computeVertexNormals()};THREE.TorusKnotGeometry.prototype=new THREE.Geometry;THREE.TorusKnotGeometry.prototype.constructor=THREE.TorusKnotGeometry;THREE.SubdivisionModifier=function(b){this.subdivisions=b===void 0?1:b;this.useOldVertexColors=!1;this.supportUVs=!0};THREE.SubdivisionModifier.prototype.constructor=THREE.SubdivisionModifier;THREE.SubdivisionModifier.prototype.modify=function(b){for(var c=this.subdivisions;c-- >0;)this.smooth(b)};
+THREE.SubdivisionModifier.prototype.smooth=function(b){function c(b,e,c,f,n,t){var w=new THREE.Face4(b,e,c,f,null,n.color,n.material);if(m.useOldVertexColors){w.vertexColors=[];for(var o,u,v,x=0;x<4;x++){v=t[x];o=new THREE.Color;o.setRGB(0,0,0);for(var y=0;y<v.length;y++)u=n.vertexColors[v[y]-1],o.r+=u.r,o.g+=u.g,o.b+=u.b;o.r/=v.length;o.g/=v.length;o.b/=v.length;w.vertexColors[x]=o}}h.push(w);(!m.supportUVs||p.length!=0)&&k.push([p[b],p[e],p[c],p[f]])}function e(b,e){return Math.min(b,e)+"_"+Math.max(b,
+e)}var f=[],h=[],k=[],m=this,n=b.vertices,f=b.faces,t=n.concat(),u=[],v={},p=[],x,w,A,z,y,C=b.faceVertexUvs[0];x=0;for(w=C.length;x<w;x++){A=0;for(z=C[x].length;A<z;A++)y=f[x]["abcd".charAt(A)],p[y]||(p[y]=C[x][A])}var E;x=0;for(w=f.length;x<w;x++)if(y=f[x],u.push(y.centroid),t.push(new THREE.Vertex(y.centroid)),m.supportUVs&&p.length!=0){E=new THREE.UV;if(y instanceof THREE.Face3)E.u=p[y.a].u+p[y.b].u+p[y.c].u,E.v=p[y.a].v+p[y.b].v+p[y.c].v,E.u/=3,E.v/=3;else if(y instanceof THREE.Face4)E.u=p[y.a].u+
+p[y.b].u+p[y.c].u+p[y.d].u,E.v=p[y.a].v+p[y.b].v+p[y.c].v+p[y.d].v,E.u/=4,E.v/=4;p.push(E)}z=function(b){function c(b,e,f){b[e]===void 0&&(b[e]=[]);b[e].push(f)}var f,h,k,m,n={};f=0;for(h=b.faces.length;f<h;f++)k=b.faces[f],k instanceof THREE.Face3?(m=e(k.a,k.b),c(n,m,f),m=e(k.b,k.c),c(n,m,f),m=e(k.c,k.a),c(n,m,f)):k instanceof THREE.Face4&&(m=e(k.a,k.b),c(n,m,f),m=e(k.b,k.c),c(n,m,f),m=e(k.c,k.d),c(n,m,f),m=e(k.d,k.a),c(n,m,f));return n}(b);var D,F,M=0,C=n.length,N;for(x in z)if(y=z[x],E=y[0],D=
+y[1],N=x.split("_"),w=N[0],N=N[1],F=new THREE.Vector3,y.length!=2?(F.addSelf(n[w].position),F.addSelf(n[N].position),F.multiplyScalar(0.5)):(F.addSelf(u[E]),F.addSelf(u[D]),F.addSelf(n[w].position),F.addSelf(n[N].position),F.multiplyScalar(0.25)),v[x]=C+f.length+M,t.push(new THREE.Vertex(F)),M++,m.supportUVs&&p.length!=0)E=new THREE.UV,E.u=p[w].u+p[N].u,E.v=p[w].v+p[N].v,E.u/=2,E.v/=2,p.push(E);x=0;for(w=u.length;x<w;x++)y=f[x],E=C+x,y instanceof THREE.Face3?(D=e(y.a,y.b),N=e(y.b,y.c),M=e(y.c,y.a),
+c(E,v[D],y.b,v[N],y,["123","12","2","23"]),c(E,v[N],y.c,v[M],y,["123","23","3","31"]),c(E,v[M],y.a,v[D],y,["123","31","1","12"])):y instanceof THREE.Face4?(D=e(y.a,y.b),N=e(y.b,y.c),M=e(y.c,y.d),F=e(y.d,y.a),c(E,v[D],y.b,v[N],y,["1234","12","2","23"]),c(E,v[N],y.c,v[M],y,["1234","23","3","34"]),c(E,v[M],y.d,v[F],y,["1234","34","4","41"]),c(E,v[F],y.a,v[D],y,["1234","41","1","12"])):console.log("face should be a face!",y);var f=t,G={},H={},t=function(b,e){G[b]===void 0&&(G[b]=[]);G[b].push(e)},v=function(b,
+e){H[b]===void 0&&(H[b]={});H[b][e]=null};for(x in z)y=z[x],N=x.split("_"),w=N[0],N=N[1],t(w,[w,N]),t(N,[w,N]),E=y[0],D=y[1],v(w,E),D?v(w,D):v(w,E),v(N,E),D?v(N,D):v(N,E);t=new THREE.Vector3;v=new THREE.Vector3;x=0;for(w=n.length;x<w;x++)if(G[x]!==void 0){t.set(0,0,0);v.set(0,0,0);z=new THREE.Vector3(0,0,0);C=0;for(A in H[x])t.addSelf(u[A]),C++;t.divideScalar(C);C=G[x].length;for(A=0;A<C;A++)y=G[x][A],y=n[y[0]].position.clone().addSelf(n[y[1]].position).divideScalar(2),v.addSelf(y);v.divideScalar(C);
+z.addSelf(n[x].position);z.multiplyScalar(C-3);z.addSelf(t);z.addSelf(v.multiplyScalar(2));z.divideScalar(C);f[x].position=z}b.vertices=f;b.faces=h;b.faceVertexUvs[0]=k;delete b.__tmpVertices;b.computeCentroids();b.computeFaceNormals();b.computeVertexNormals()};THREE.Loader=function(b){this.statusDomElement=(this.showStatus=b)?THREE.Loader.prototype.addStatusElement():null;this.onLoadStart=function(){};this.onLoadProgress=function(){};this.onLoadComplete=function(){}};
+THREE.Loader.prototype={constructor:THREE.Loader,addStatusElement:function(){var b=document.createElement("div");b.style.position="absolute";b.style.right="0px";b.style.top="0px";b.style.fontSize="0.8em";b.style.textAlign="left";b.style.background="rgba(0,0,0,0.25)";b.style.color="#fff";b.style.width="120px";b.style.padding="0.5em 0.5em 0.5em 0.5em";b.style.zIndex=1E3;b.innerHTML="Loading ...";return b},updateProgress:function(b){var c="Loaded ";c+=b.total?(100*b.loaded/b.total).toFixed(0)+"%":(b.loaded/
+1E3).toFixed(2)+" KB";this.statusDomElement.innerHTML=c},extractUrlbase:function(b){b=b.split("/");b.pop();return b.length<1?"":b.join("/")+"/"},init_materials:function(b,c,e){b.materials=[];for(var f=0;f<c.length;++f)b.materials[f]=[THREE.Loader.prototype.createMaterial(c[f],e)]},hasNormals:function(b){var c,e,f=b.materials.length;for(e=0;e<f;e++)if(c=b.materials[e][0],c instanceof THREE.ShaderMaterial)return!0;return!1},createMaterial:function(b,c){function e(b){b=Math.log(b)/Math.LN2;return Math.floor(b)==
+b}function f(b,c){var f=new Image;f.onload=function(){if(!e(this.width)||!e(this.height)){var c=Math.pow(2,Math.round(Math.log(this.width)/Math.LN2)),f=Math.pow(2,Math.round(Math.log(this.height)/Math.LN2));b.image.width=c;b.image.height=f;b.image.getContext("2d").drawImage(this,0,0,c,f)}else b.image=this;b.needsUpdate=!0};f.src=c}function h(b,e,k,h,m,n){var p=document.createElement("canvas");b[e]=new THREE.Texture(p);b[e].sourceFile=k;if(h){b[e].repeat.set(h[0],h[1]);if(h[0]!=1)b[e].wrapS=THREE.RepeatWrapping;
+if(h[1]!=1)b[e].wrapT=THREE.RepeatWrapping}m&&b[e].offset.set(m[0],m[1]);if(n){h={repeat:THREE.RepeatWrapping,mirror:THREE.MirroredRepeatWrapping};if(h[n[0]]!==void 0)b[e].wrapS=h[n[0]];if(h[n[1]]!==void 0)b[e].wrapT=h[n[1]]}f(b[e],c+"/"+k)}function k(b){return(b[0]*255<<16)+(b[1]*255<<8)+b[2]*255}var m,n,t;n="MeshLambertMaterial";m={color:15658734,opacity:1,map:null,lightMap:null,normalMap:null,wireframe:b.wireframe};b.shading&&(b.shading=="Phong"?n="MeshPhongMaterial":b.shading=="Basic"&&(n="MeshBasicMaterial"));
+if(b.blending)if(b.blending=="Additive")m.blending=THREE.AdditiveBlending;else if(b.blending=="Subtractive")m.blending=THREE.SubtractiveBlending;else if(b.blending=="Multiply")m.blending=THREE.MultiplyBlending;if(b.transparent!==void 0||b.opacity<1)m.transparent=b.transparent;if(b.depthTest!==void 0)m.depthTest=b.depthTest;if(b.vertexColors!==void 0)if(b.vertexColors=="face")m.vertexColors=THREE.FaceColors;else if(b.vertexColors)m.vertexColors=THREE.VertexColors;if(b.colorDiffuse)m.color=k(b.colorDiffuse);
+else if(b.DbgColor)m.color=b.DbgColor;if(b.colorSpecular)m.specular=k(b.colorSpecular);if(b.colorAmbient)m.ambient=k(b.colorAmbient);if(b.transparency)m.opacity=b.transparency;if(b.specularCoef)m.shininess=b.specularCoef;b.mapDiffuse&&c&&h(m,"map",b.mapDiffuse,b.mapDiffuseRepeat,b.mapDiffuseOffset,b.mapDiffuseWrap);b.mapLight&&c&&h(m,"lightMap",b.mapLight,b.mapLightRepeat,b.mapLightOffset,b.mapLightWrap);b.mapNormal&&c&&h(m,"normalMap",b.mapNormal,b.mapNormalRepeat,b.mapNormalOffset,b.mapNormalWrap);
+b.mapSpecular&&c&&h(m,"specularMap",b.mapSpecular,b.mapSpecularRepeat,b.mapSpecularOffset,b.mapSpecularWrap);if(b.mapNormal){var u=THREE.ShaderUtils.lib.normal,v=THREE.UniformsUtils.clone(u.uniforms),p=m.color;n=m.specular;t=m.ambient;var x=m.shininess;v.tNormal.texture=m.normalMap;if(b.mapNormalFactor)v.uNormalScale.value=b.mapNormalFactor;if(m.map)v.tDiffuse.texture=m.map,v.enableDiffuse.value=!0;if(m.specularMap)v.tSpecular.texture=m.specularMap,v.enableSpecular.value=!0;if(m.lightMap)v.tAO.texture=
+m.lightMap,v.enableAO.value=!0;v.uDiffuseColor.value.setHex(p);v.uSpecularColor.value.setHex(n);v.uAmbientColor.value.setHex(t);v.uShininess.value=x;if(m.opacity)v.uOpacity.value=m.opacity;m=new THREE.ShaderMaterial({fragmentShader:u.fragmentShader,vertexShader:u.vertexShader,uniforms:v,lights:!0,fog:!0})}else m=new THREE[n](m);return m}};THREE.BinaryLoader=function(b){THREE.Loader.call(this,b)};THREE.BinaryLoader.prototype=new THREE.Loader;THREE.BinaryLoader.prototype.constructor=THREE.BinaryLoader;
+THREE.BinaryLoader.prototype.supr=THREE.Loader.prototype;
+THREE.BinaryLoader.prototype.load=function(b){var c=b.model,e=b.callback,f=b.texture_path?b.texture_path:THREE.Loader.prototype.extractUrlbase(c),h=b.bin_path?b.bin_path:THREE.Loader.prototype.extractUrlbase(c),b=(new Date).getTime(),c=new Worker(c),k=this.showProgress?THREE.Loader.prototype.updateProgress:null;c.onmessage=function(b){THREE.BinaryLoader.prototype.loadAjaxBuffers(b.data.buffers,b.data.materials,e,h,f,k)};c.onerror=function(b){alert("worker.onerror: "+b.message+"\n"+b.data);b.preventDefault()};
+c.postMessage(b)};
+THREE.BinaryLoader.prototype.loadAjaxBuffers=function(b,c,e,f,h,k){var m=new XMLHttpRequest,n=f+"/"+b,t=0;m.onreadystatechange=function(){m.readyState==4?m.status==200||m.status==0?THREE.BinaryLoader.prototype.createBinModel(m.responseText,e,h,c):alert("Couldn't load ["+n+"] ["+m.status+"]"):m.readyState==3?k&&(t==0&&(t=m.getResponseHeader("Content-Length")),k({total:t,loaded:m.responseText.length})):m.readyState==2&&(t=m.getResponseHeader("Content-Length"))};m.open("GET",n,!0);m.overrideMimeType("text/plain; charset=x-user-defined");
+m.setRequestHeader("Content-Type","text/plain");m.send(null)};
+THREE.BinaryLoader.prototype.createBinModel=function(b,c,e,f){var h=function(e){function c(b,e){var f=v(b,e),h=v(b,e+1),k=v(b,e+2),m=v(b,e+3),n=(m<<1&255|k>>7)-127;f|=(k&127)<<16|h<<8;if(f==0&&n==-127)return 0;return(1-2*(m>>7))*(1+f*Math.pow(2,-23))*Math.pow(2,n)}function h(b,e){var c=v(b,e),f=v(b,e+1),k=v(b,e+2);return(v(b,e+3)<<24)+(k<<16)+(f<<8)+c}function t(b,e){var c=v(b,e);return(v(b,e+1)<<8)+c}function u(b,e){var c=v(b,e);return c>127?c-256:c}function v(b,e){return b.charCodeAt(e)&255}function p(e){var c,
+f,k;c=h(b,e);f=h(b,e+N);k=h(b,e+G);e=t(b,e+H);C.faces.push(new THREE.Face3(c,f,k,null,null,C.materials[e]))}function x(e){var c,f,k,m,o,p;c=h(b,e);f=h(b,e+N);k=h(b,e+G);m=t(b,e+H);o=h(b,e+K);p=h(b,e+Z);e=h(b,e+L);m=C.materials[m];var w=F[p*3],u=F[p*3+1];p=F[p*3+2];var v=F[e*3],x=F[e*3+1],e=F[e*3+2];C.faces.push(new THREE.Face3(c,f,k,[new THREE.Vector3(F[o*3],F[o*3+1],F[o*3+2]),new THREE.Vector3(w,u,p),new THREE.Vector3(v,x,e)],null,m))}function w(e){var c,f,k,m;c=h(b,e);f=h(b,e+P);k=h(b,e+U);m=h(b,
+e+Y);e=t(b,e+X);C.faces.push(new THREE.Face4(c,f,k,m,null,null,C.materials[e]))}function A(e){var c,f,k,m,p,w,u,v;c=h(b,e);f=h(b,e+P);k=h(b,e+U);m=h(b,e+Y);p=t(b,e+X);w=h(b,e+o);u=h(b,e+ea);v=h(b,e+R);e=h(b,e+pa);p=C.materials[p];var x=F[u*3],V=F[u*3+1];u=F[u*3+2];var y=F[v*3],O=F[v*3+1];v=F[v*3+2];var z=F[e*3],A=F[e*3+1],e=F[e*3+2];C.faces.push(new THREE.Face4(c,f,k,m,[new THREE.Vector3(F[w*3],F[w*3+1],F[w*3+2]),new THREE.Vector3(x,V,u),new THREE.Vector3(y,O,v),new THREE.Vector3(z,A,e)],null,p))}
+function z(e){var c,f,k,m;c=h(b,e);f=h(b,e+fa);k=h(b,e+ma);e=M[c*2];m=M[c*2+1];c=M[f*2];var o=C.faceVertexUvs[0];f=M[f*2+1];var p=M[k*2];k=M[k*2+1];var t=[];t.push(new THREE.UV(e,m));t.push(new THREE.UV(c,f));t.push(new THREE.UV(p,k));o.push(t)}function y(e){var c,f,k,m,o,p;c=h(b,e);f=h(b,e+da);k=h(b,e+la);m=h(b,e+ga);e=M[c*2];o=M[c*2+1];c=M[f*2];p=M[f*2+1];f=M[k*2];var t=C.faceVertexUvs[0];k=M[k*2+1];var w=M[m*2];m=M[m*2+1];var u=[];u.push(new THREE.UV(e,o));u.push(new THREE.UV(c,p));u.push(new THREE.UV(f,
+k));u.push(new THREE.UV(w,m));t.push(u)}var C=this,E=0,D,F=[],M=[],N,G,H,K,Z,L,P,U,Y,X,o,ea,R,pa,fa,ma,da,la,ga,$,ca,aa,ha,ka,sa;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(C,f,e);D={signature:b.substr(E,8),header_bytes:v(b,E+8),vertex_coordinate_bytes:v(b,E+9),normal_coordinate_bytes:v(b,E+10),uv_coordinate_bytes:v(b,E+11),vertex_index_bytes:v(b,E+12),normal_index_bytes:v(b,E+13),uv_index_bytes:v(b,E+14),material_index_bytes:v(b,E+15),nvertices:h(b,E+16),nnormals:h(b,E+16+4),
+nuvs:h(b,E+16+8),ntri_flat:h(b,E+16+12),ntri_smooth:h(b,E+16+16),ntri_flat_uv:h(b,E+16+20),ntri_smooth_uv:h(b,E+16+24),nquad_flat:h(b,E+16+28),nquad_smooth:h(b,E+16+32),nquad_flat_uv:h(b,E+16+36),nquad_smooth_uv:h(b,E+16+40)};E+=D.header_bytes;N=D.vertex_index_bytes;G=D.vertex_index_bytes*2;H=D.vertex_index_bytes*3;K=D.vertex_index_bytes*3+D.material_index_bytes;Z=D.vertex_index_bytes*3+D.material_index_bytes+D.normal_index_bytes;L=D.vertex_index_bytes*3+D.material_index_bytes+D.normal_index_bytes*
+2;P=D.vertex_index_bytes;U=D.vertex_index_bytes*2;Y=D.vertex_index_bytes*3;X=D.vertex_index_bytes*4;o=D.vertex_index_bytes*4+D.material_index_bytes;ea=D.vertex_index_bytes*4+D.material_index_bytes+D.normal_index_bytes;R=D.vertex_index_bytes*4+D.material_index_bytes+D.normal_index_bytes*2;pa=D.vertex_index_bytes*4+D.material_index_bytes+D.normal_index_bytes*3;fa=D.uv_index_bytes;ma=D.uv_index_bytes*2;da=D.uv_index_bytes;la=D.uv_index_bytes*2;ga=D.uv_index_bytes*3;e=D.vertex_index_bytes*3+D.material_index_bytes;
+sa=D.vertex_index_bytes*4+D.material_index_bytes;$=D.ntri_flat*e;ca=D.ntri_smooth*(e+D.normal_index_bytes*3);aa=D.ntri_flat_uv*(e+D.uv_index_bytes*3);ha=D.ntri_smooth_uv*(e+D.normal_index_bytes*3+D.uv_index_bytes*3);ka=D.nquad_flat*sa;e=D.nquad_smooth*(sa+D.normal_index_bytes*4);sa=D.nquad_flat_uv*(sa+D.uv_index_bytes*4);E+=function(e){for(var f,h,k,n=D.vertex_coordinate_bytes*3,o=e+D.nvertices*n;e<o;e+=n)f=c(b,e),h=c(b,e+D.vertex_coordinate_bytes),k=c(b,e+D.vertex_coordinate_bytes*2),C.vertices.push(new THREE.Vertex(new THREE.Vector3(f,
+h,k)));return D.nvertices*n}(E);E+=function(e){for(var c,f,h,k=D.normal_coordinate_bytes*3,m=e+D.nnormals*k;e<m;e+=k)c=u(b,e),f=u(b,e+D.normal_coordinate_bytes),h=u(b,e+D.normal_coordinate_bytes*2),F.push(c/127,f/127,h/127);return D.nnormals*k}(E);E+=function(e){for(var f,h,k=D.uv_coordinate_bytes*2,n=e+D.nuvs*k;e<n;e+=k)f=c(b,e),h=c(b,e+D.uv_coordinate_bytes),M.push(f,h);return D.nuvs*k}(E);$=E+$;ca=$+ca;aa=ca+aa;ha=aa+ha;ka=ha+ka;e=ka+e;sa=e+sa;(function(b){var e,c=D.vertex_index_bytes*3+D.material_index_bytes,
+f=c+D.uv_index_bytes*3,h=b+D.ntri_flat_uv*f;for(e=b;e<h;e+=f)p(e),z(e+c);return h-b})(ca);(function(b){var e,c=D.vertex_index_bytes*3+D.material_index_bytes+D.normal_index_bytes*3,f=c+D.uv_index_bytes*3,h=b+D.ntri_smooth_uv*f;for(e=b;e<h;e+=f)x(e),z(e+c);return h-b})(aa);(function(b){var e,c=D.vertex_index_bytes*4+D.material_index_bytes,f=c+D.uv_index_bytes*4,h=b+D.nquad_flat_uv*f;for(e=b;e<h;e+=f)w(e),y(e+c);return h-b})(e);(function(b){var e,c=D.vertex_index_bytes*4+D.material_index_bytes+D.normal_index_bytes*
+4,f=c+D.uv_index_bytes*4,h=b+D.nquad_smooth_uv*f;for(e=b;e<h;e+=f)A(e),y(e+c);return h-b})(sa);(function(b){var e,c=D.vertex_index_bytes*3+D.material_index_bytes,f=b+D.ntri_flat*c;for(e=b;e<f;e+=c)p(e);return f-b})(E);(function(b){var e,c=D.vertex_index_bytes*3+D.material_index_bytes+D.normal_index_bytes*3,f=b+D.ntri_smooth*c;for(e=b;e<f;e+=c)x(e);return f-b})($);(function(b){var e,c=D.vertex_index_bytes*4+D.material_index_bytes,f=b+D.nquad_flat*c;for(e=b;e<f;e+=c)w(e);return f-b})(ha);(function(b){var e,
+c=D.vertex_index_bytes*4+D.material_index_bytes+D.normal_index_bytes*4,f=b+D.nquad_smooth*c;for(e=b;e<f;e+=c)A(e);return f-b})(ka);this.computeCentroids();this.computeFaceNormals();THREE.Loader.prototype.hasNormals(this)&&this.computeTangents()};h.prototype=new THREE.Geometry;h.prototype.constructor=h;c(new h(e))};
+THREE.ColladaLoader=function(){function b(b,e,c){for(var b=$.evaluate(b,$,R,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null),f={},h=b.iterateNext(),k=0;h;){h=(new e).parse(h);if(h.id.length==0)h.id=c+k++;f[h.id]=h;h=b.iterateNext()}return f}function c(){var b=1E6,e=-b,c=0,f;for(f in J)for(var h=J[f],k=0;k<h.sampler.length;k++){var m=h.sampler[k];m.create();b=Math.min(b,m.startTime);e=Math.max(e,m.endTime);c=Math.max(c,m.input.length)}return{start:b,end:e,frames:c}}function e(b,c,f,h){b.world=b.world||
+new THREE.Matrix4;b.world.copy(b.matrix);if(b.channels&&b.channels.length){var k=b.channels[0].sampler.output[f];k instanceof THREE.Matrix4&&b.world.copy(k)}h&&b.world.multiply(h,b.world);c.push(b);for(h=0;h<b.nodes.length;h++)e(b.nodes[h],c,f,b.world)}function f(b,f,h){var k=Q[f.url];if(!k||!k.skin)console.log("ColladaLoader: Could not find skin controller.");else if(!f.skeleton||!f.skeleton.length)console.log("ColladaLoader: Could not find the skeleton for the skin. ");else{var m=c(),f=aa.getChildById(f.skeleton[0],
+!0)||aa.getChildBySid(f.skeleton[0],!0),n,o,p,t,w=new THREE.Vector3,u;for(n=0;n<b.vertices.length;n++)k.skin.bindShapeMatrix.multiplyVector3(b.vertices[n].position);for(h=0;h<m.frames;h++){var v=[],x=[];for(n=0;n<b.vertices.length;n++)x.push(new THREE.Vertex(new THREE.Vector3));e(f,v,h);n=v;o=k.skin;for(t=0;t<n.length;t++)if(p=n[t],u=-1,p.type=="JOINT"){for(var y=0;y<o.joints.length;y++)if(p.sid==o.joints[y]){u=y;break}if(u>=0){y=o.invBindMatrices[u];p.invBindMatrix=y;p.skinningMatrix=new THREE.Matrix4;
+p.skinningMatrix.multiply(p.world,y);p.weights=[];for(y=0;y<o.weights.length;y++)for(var z=0;z<o.weights[y].length;z++){var A=o.weights[y][z];A.joint==u&&p.weights.push(A)}}else throw"ColladaLoader: Could not find joint '"+p.sid+"'.";}for(n=0;n<v.length;n++)if(v[n].type=="JOINT")for(o=0;o<v[n].weights.length;o++)p=v[n].weights[o],t=p.index,p=p.weight,u=b.vertices[t],t=x[t],w.x=u.position.x,w.y=u.position.y,w.z=u.position.z,v[n].skinningMatrix.multiplyVector3(w),t.position.x+=w.x*p,t.position.y+=w.y*
+p,t.position.z+=w.z*p;b.morphTargets.push({name:"target_"+h,vertices:x})}}}function h(b){var e=new THREE.Object3D,c,k,m;e.name=b.id||"";e.matrixAutoUpdate=!1;e.matrix=b.matrix;for(m=0;m<b.controllers.length;m++){var n=Q[b.controllers[m].url];switch(n.type){case "skin":if(na[n.skin.source]){var o=new A;o.url=n.skin.source;o.instance_material=b.controllers[m].instance_material;b.geometries.push(o);c=b.controllers[m]}else if(Q[n.skin.source]&&(k=n=Q[n.skin.source],n.morph&&na[n.morph.source]))o=new A,
+o.url=n.morph.source,o.instance_material=b.controllers[m].instance_material,b.geometries.push(o);break;case "morph":if(na[n.morph.source])o=new A,o.url=n.morph.source,o.instance_material=b.controllers[m].instance_material,b.geometries.push(o),k=b.controllers[m];console.log("ColladaLoader: Morph-controller partially supported.")}}for(m=0;m<b.geometries.length;m++){var n=b.geometries[m],o=n.instance_material,n=na[n.url],p={},t=0,w;if(n&&n.mesh&&n.mesh.primitives){if(e.name.length==0)e.name=n.id;if(o)for(j=
+0;j<o.length;j++){w=o[j];var u=va[ra[w.target].instance_effect.url].shader;u.material.opacity=!u.material.opacity?1:u.material.opacity;w=p[w.symbol]=u.material;t++}o=w||new THREE.MeshLambertMaterial({color:14540253,shading:THREE.FlatShading});n=n.mesh.geometry3js;if(t>1){o=new THREE.MeshFaceMaterial;for(j=0;j<n.faces.length;j++)t=n.faces[j],t.materials=[p[t.daeMaterial]]}if(c!==void 0)f(n,c),o.morphTargets=!0,o=new THREE.SkinnedMesh(n,o),o.skeleton=c.skeleton,o.skinController=Q[c.url],o.skinInstanceController=
+c,o.name="skin_"+Da.length,Da.push(o);else if(k!==void 0){p=n;t=k instanceof x?Q[k.url]:k;if(!t||!t.morph)console.log("could not find morph controller!");else{t=t.morph;for(u=0;u<t.targets.length;u++){var v=na[t.targets[u]];if(v.mesh&&v.mesh.primitives&&v.mesh.primitives.length)v=v.mesh.primitives[0].geometry,v.vertices.length===p.vertices.length&&p.morphTargets.push({name:"target_1",vertices:v.vertices})}p.morphTargets.push({name:"target_Z",vertices:p.vertices})}o.morphTargets=!0;o=new THREE.Mesh(n,
+o);o.name="morph_"+Ba.length;Ba.push(o)}else o=new THREE.Mesh(n,o);e.add(o)}}for(m=0;m<b.nodes.length;m++)e.add(h(b.nodes[m],b));return e}function k(){this.init_from=this.id=""}function m(){this.type=this.name=this.id="";this.morph=this.skin=null}function n(){this.weights=this.targets=this.source=this.method=null}function t(){this.source="";this.bindShapeMatrix=null;this.invBindMatrices=[];this.joints=[];this.weights=[]}function u(){this.name=this.id="";this.nodes=[];this.scene=new THREE.Object3D}
+function v(){this.sid=this.name=this.id="";this.nodes=[];this.controllers=[];this.transforms=[];this.geometries=[];this.channels=[];this.matrix=new THREE.Matrix4}function p(){this.type=this.sid="";this.data=[];this.matrix=new THREE.Matrix4}function x(){this.url="";this.skeleton=[];this.instance_material=[]}function w(){this.target=this.symbol=""}function A(){this.url="";this.instance_material=[]}function z(){this.id="";this.mesh=null}function y(b){this.geometry=b.id;this.primitives=[];this.geometry3js=
+this.vertices=null}function C(){}function E(){this.material="";this.count=0;this.inputs=[];this.vcount=null;this.p=[];this.geometry=new THREE.Geometry}function D(){this.source="";this.stride=this.count=0;this.params=[]}function F(){this.input={}}function M(){this.semantic="";this.offset=0;this.source="";this.set=0}function N(b){this.id=b;this.type=null}function G(){this.name=this.id="";this.instance_effect=null}function H(){this.color=new THREE.Color(0);this.color.setRGB(Math.random(),Math.random(),
+Math.random());this.color.a=1;this.texcoord=this.texture=null}function K(b,e){this.type=b;this.effect=e;this.material=null}function Z(b){this.effect=b;this.format=this.init_from=null}function L(b){this.effect=b;this.mipfilter=this.magfilter=this.minfilter=this.wrap_t=this.wrap_s=this.source=null}function P(){this.name=this.id="";this.sampler=this.surface=this.shader=null}function U(){this.url=""}function Y(){this.name=this.id="";this.source={};this.sampler=[];this.channel=[]}function X(b){this.animation=
+b;this.target=this.source="";this.member=this.arrIndices=this.arrSyntax=this.dotSyntax=this.sid=null}function o(b){this.id="";this.animation=b;this.inputs=[];this.endTime=this.startTime=this.interpolation=this.output=this.input=null;this.duration=0}function ea(b){var e=b.getAttribute("id");if(ka[e]!=void 0)return ka[e];ka[e]=(new N(e)).parse(b);return ka[e]}function R(b){if(b=="dae")return"http://www.collada.org/2005/11/COLLADASchema";return null}function pa(b){for(var b=ma(b),e=[],c=0;c<b.length;c++)e.push(parseFloat(b[c]));
+return e}function fa(b){for(var b=ma(b),e=[],c=0;c<b.length;c++)e.push(parseInt(b[c],10));return e}function ma(b){return b.replace(/^\s+/,"").replace(/\s+$/,"").split(/\s+/)}function da(b,e,c){return b.hasAttribute(e)?parseInt(b.getAttribute(e),10):c}function la(b,e){if(b===void 0){for(var c="0.";c.length<e+2;)c+="0";return c}e=e||2;c=b.toString().split(".");for(c[1]=c.length>1?c[1].substr(0,e):"0";c[1].length<e;)c[1]+="0";return c.join(".")}function ga(b,e){var c="";c+=la(b.x,e)+",";c+=la(b.y,e)+
+",";c+=la(b.z,e);return c}var $=null,ca=null,aa,ha=null,ka={},sa={},J={},Q={},na={},ra={},va={},ua,Ea,Ba,Da,Fa=THREE.SmoothShading;k.prototype.parse=function(b){this.id=b.getAttribute("id");for(var e=0;e<b.childNodes.length;e++){var c=b.childNodes[e];if(c.nodeName=="init_from")this.init_from=c.textContent}return this};m.prototype.parse=function(b){this.id=b.getAttribute("id");this.name=b.getAttribute("name");this.type="none";for(var e=0;e<b.childNodes.length;e++){var c=b.childNodes[e];switch(c.nodeName){case "skin":this.skin=
+(new t).parse(c);this.type=c.nodeName;break;case "morph":this.morph=(new n).parse(c),this.type=c.nodeName}}return this};n.prototype.parse=function(b){var e={},c=[],f;this.method=b.getAttribute("method");this.source=b.getAttribute("source").replace(/^#/,"");for(f=0;f<b.childNodes.length;f++){var h=b.childNodes[f];if(h.nodeType==1)switch(h.nodeName){case "source":h=(new N).parse(h);e[h.id]=h;break;case "targets":c=this.parseInputs(h);break;default:console.log(h.nodeName)}}for(f=0;f<c.length;f++)switch(b=
+c[f],h=e[b.source],b.semantic){case "MORPH_TARGET":this.targets=h.read();break;case "MORPH_WEIGHT":this.weights=h.read()}return this};n.prototype.parseInputs=function(b){for(var e=[],c=0;c<b.childNodes.length;c++){var f=b.childNodes[c];if(f.nodeType==1)switch(f.nodeName){case "input":e.push((new M).parse(f))}}return e};t.prototype.parse=function(b){var e={},c,f;this.source=b.getAttribute("source").replace(/^#/,"");this.invBindMatrices=[];this.joints=[];this.weights=[];for(var h=0;h<b.childNodes.length;h++){var k=
+b.childNodes[h];if(k.nodeType==1)switch(k.nodeName){case "bind_shape_matrix":k=pa(k.textContent);this.bindShapeMatrix=new THREE.Matrix4;this.bindShapeMatrix.set(k[0],k[1],k[2],k[3],k[4],k[5],k[6],k[7],k[8],k[9],k[10],k[11],k[12],k[13],k[14],k[15]);break;case "source":k=(new N).parse(k);e[k.id]=k;break;case "joints":c=k;break;case "vertex_weights":f=k;break;default:console.log(k.nodeName)}}this.parseJoints(c,e);this.parseWeights(f,e);return this};t.prototype.parseJoints=function(b,e){for(var c=0;c<
+b.childNodes.length;c++){var f=b.childNodes[c];if(f.nodeType==1)switch(f.nodeName){case "input":var f=(new M).parse(f),h=e[f.source];if(f.semantic=="JOINT")this.joints=h.read();else if(f.semantic=="INV_BIND_MATRIX")this.invBindMatrices=h.read()}}};t.prototype.parseWeights=function(b,e){for(var c,f,h=[],k=0;k<b.childNodes.length;k++){var m=b.childNodes[k];if(m.nodeType==1)switch(m.nodeName){case "input":h.push((new M).parse(m));break;case "v":c=fa(m.textContent);break;case "vcount":f=fa(m.textContent)}}for(k=
+m=0;k<f.length;k++){for(var n=f[k],o=[],p=0;p<n;p++){for(var t={},u=0;u<h.length;u++){var w=h[u],v=c[m+w.offset];switch(w.semantic){case "JOINT":t.joint=v;break;case "WEIGHT":t.weight=e[w.source].data[v]}}o.push(t);m+=h.length}for(p=0;p<o.length;p++)o[p].index=k;this.weights.push(o)}};u.prototype.getChildById=function(b,e){for(var c=0;c<this.nodes.length;c++){var f=this.nodes[c].getChildById(b,e);if(f)return f}return null};u.prototype.getChildBySid=function(b,e){for(var c=0;c<this.nodes.length;c++){var f=
+this.nodes[c].getChildBySid(b,e);if(f)return f}return null};u.prototype.parse=function(b){this.id=b.getAttribute("id");this.name=b.getAttribute("name");this.nodes=[];for(var e=0;e<b.childNodes.length;e++){var c=b.childNodes[e];if(c.nodeType==1)switch(c.nodeName){case "node":this.nodes.push((new v).parse(c))}}return this};v.prototype.getChannelForTransform=function(b){for(var e=0;e<this.channels.length;e++){var c=this.channels[e],f=c.target.split("/");f.shift();var h=f.shift(),k=h.indexOf(".")>=0,
+m=h.indexOf("(")>=0,n;if(k)f=h.split("."),h=f.shift(),f.shift();else if(m){n=h.split("(");h=n.shift();for(f=0;f<n.length;f++)n[f]=parseInt(n[f].replace(/\)/,""))}if(h==b)return c.info={sid:h,dotSyntax:k,arrSyntax:m,arrIndices:n},c}return null};v.prototype.getChildById=function(b,e){if(this.id==b)return this;if(e)for(var c=0;c<this.nodes.length;c++){var f=this.nodes[c].getChildById(b,e);if(f)return f}return null};v.prototype.getChildBySid=function(b,e){if(this.sid==b)return this;if(e)for(var c=0;c<
+this.nodes.length;c++){var f=this.nodes[c].getChildBySid(b,e);if(f)return f}return null};v.prototype.getTransformBySid=function(b){for(var e=0;e<this.transforms.length;e++)if(this.transforms[e].sid==b)return this.transforms[e];return null};v.prototype.parse=function(b){var e;this.id=b.getAttribute("id");this.sid=b.getAttribute("sid");this.name=b.getAttribute("name");this.type=b.getAttribute("type");this.type=this.type=="JOINT"?this.type:"NODE";this.nodes=[];this.transforms=[];this.geometries=[];this.controllers=
+[];this.matrix=new THREE.Matrix4;for(var c=0;c<b.childNodes.length;c++)if(e=b.childNodes[c],e.nodeType==1)switch(e.nodeName){case "node":this.nodes.push((new v).parse(e));break;case "instance_camera":break;case "instance_controller":this.controllers.push((new x).parse(e));break;case "instance_geometry":this.geometries.push((new A).parse(e));break;case "instance_light":break;case "instance_node":e=e.getAttribute("url").replace(/^#/,"");(e=$.evaluate(".//dae:library_nodes//dae:node[@id='"+e+"']",$,
+R,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null).iterateNext())&&this.nodes.push((new v).parse(e));break;case "rotate":case "translate":case "scale":case "matrix":case "lookat":case "skew":this.transforms.push((new p).parse(e));break;case "extra":break;default:console.log(e.nodeName)}b=[];c=1E6;e=-1E6;for(var f in J)for(var h=J[f],k=0;k<h.channel.length;k++){var m=h.channel[k],n=h.sampler[k];f=m.target.split("/")[0];if(f==this.id)n.create(),m.sampler=n,c=Math.min(c,n.startTime),e=Math.max(e,n.endTime),
+b.push(m)}if(b.length)this.startTime=c,this.endTime=e;if((this.channels=b)&&this.channels.length){f=1E7;for(i=0;i<this.channels.length;i++){b=this.channels[i].sampler;for(c=0;c<b.input.length-1;c++)f=Math.min(f,b.input[c+1]-b.input[c])}c=[];for(b=this.startTime;b<this.endTime;b+=f){e=b;for(var h={},o=k=void 0,k=0;k<this.channels.length;k++)o=this.channels[k],h[o.sid]=o;m=new THREE.Matrix4;for(k=0;k<this.transforms.length;k++)if(n=this.transforms[k],o=h[n.sid],o!==void 0){for(var t=o.sampler,u,o=0;o<
+t.input.length-1;o++)if(t.input[o+1]>e){u=t.output[o];break}m=u!==void 0?u instanceof THREE.Matrix4?m.multiply(m,u):m.multiply(m,n.matrix):m.multiply(m,n.matrix)}else m=m.multiply(m,n.matrix);e=m;c.push({time:b,pos:[e.n14,e.n24,e.n34],rotq:[0,0,0,1],scl:[1,1,1]})}this.keys=c}this.updateMatrix();return this};v.prototype.updateMatrix=function(){this.matrix.identity();for(var b=0;b<this.transforms.length;b++)this.matrix.multiply(this.matrix,this.transforms[b].matrix)};p.prototype.parse=function(b){this.sid=
+b.getAttribute("sid");this.type=b.nodeName;this.data=pa(b.textContent);this.updateMatrix();return this};p.prototype.updateMatrix=function(){var b=0;this.matrix.identity();switch(this.type){case "matrix":this.matrix.set(this.data[0],this.data[1],this.data[2],this.data[3],this.data[4],this.data[5],this.data[6],this.data[7],this.data[8],this.data[9],this.data[10],this.data[11],this.data[12],this.data[13],this.data[14],this.data[15]);break;case "translate":this.matrix.setTranslation(this.data[0],this.data[1],
+this.data[2]);break;case "rotate":b=this.data[3]*(Math.PI/180);this.matrix.setRotationAxis(new THREE.Vector3(this.data[0],this.data[1],this.data[2]),b);break;case "scale":this.matrix.setScale(this.data[0],this.data[1],this.data[2])}return this.matrix};x.prototype.parse=function(b){this.url=b.getAttribute("url").replace(/^#/,"");this.skeleton=[];this.instance_material=[];for(var e=0;e<b.childNodes.length;e++){var c=b.childNodes[e];if(c.nodeType==1)switch(c.nodeName){case "skeleton":this.skeleton.push(c.textContent.replace(/^#/,
+""));break;case "bind_material":if(c=$.evaluate(".//dae:instance_material",c,R,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null))for(var f=c.iterateNext();f;)this.instance_material.push((new w).parse(f)),f=c.iterateNext()}}return this};w.prototype.parse=function(b){this.symbol=b.getAttribute("symbol");this.target=b.getAttribute("target").replace(/^#/,"");return this};A.prototype.parse=function(b){this.url=b.getAttribute("url").replace(/^#/,"");this.instance_material=[];for(var e=0;e<b.childNodes.length;e++){var c=
+b.childNodes[e];if(c.nodeType==1&&c.nodeName=="bind_material"){if(b=$.evaluate(".//dae:instance_material",c,R,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null))for(e=b.iterateNext();e;)this.instance_material.push((new w).parse(e)),e=b.iterateNext();break}}return this};z.prototype.parse=function(b){this.id=b.getAttribute("id");for(var e=0;e<b.childNodes.length;e++){var c=b.childNodes[e];switch(c.nodeName){case "mesh":this.mesh=(new y(this)).parse(c)}}return this};y.prototype.parse=function(b){function e(b,
+c){var f=ga(b.position);h[f]===void 0&&(h[f]={v:b,index:c});return h[f]}this.primitives=[];var c;for(c=0;c<b.childNodes.length;c++){var f=b.childNodes[c];switch(f.nodeName){case "source":ea(f);break;case "vertices":this.vertices=(new F).parse(f);break;case "triangles":this.primitives.push((new E).parse(f));break;case "polygons":console.warn("polygon holes not yet supported!");case "polylist":this.primitives.push((new C).parse(f))}}var h={};this.geometry3js=new THREE.Geometry;f=ka[this.vertices.input.POSITION.source].data;
+for(b=c=0;c<f.length;c+=3,b++){var k=new THREE.Vertex(new THREE.Vector3(f[c],f[c+1],f[c+2]));e(k,b);this.geometry3js.vertices.push(k)}for(c=0;c<this.primitives.length;c++)primitive=this.primitives[c],primitive.setVertices(this.vertices),this.handlePrimitive(primitive,this.geometry3js,h);this.geometry3js.computeCentroids();this.geometry3js.computeFaceNormals();this.geometry3js.computeVertexNormals();this.geometry3js.computeBoundingBox();return this};y.prototype.handlePrimitive=function(b,e,c){var f=
+0,h,k,m=b.p,n=b.inputs,o,p,t,u=0,w=3,v=[];for(h=0;h<n.length;h++)switch(o=n[h],o.semantic){case "TEXCOORD":v.push(o.set)}for(;f<m.length;){var x=[],y=[],z={},A=[];b.vcount&&(w=b.vcount[u++]);for(h=0;h<w;h++)for(k=0;k<n.length;k++)switch(o=n[k],source=ka[o.source],p=m[f+h*n.length+o.offset],numParams=source.accessor.params.length,t=p*numParams,o.semantic){case "VERTEX":o=ga(e.vertices[p].position);x.push(c[o].index);break;case "NORMAL":y.push(new THREE.Vector3(source.data[t],source.data[t+1],source.data[t+
+2]));break;case "TEXCOORD":z[o.set]===void 0&&(z[o.set]=[]);z[o.set].push(new THREE.UV(source.data[t],source.data[t+1]));break;case "COLOR":A.push((new THREE.Color).setRGB(source.data[t],source.data[t+1],source.data[t+2]))}var C;w==3?C=new THREE.Face3(x[0],x[1],x[2],[y[0],y[1],y[2]],A.length?A:new THREE.Color):w==4&&(C=new THREE.Face4(x[0],x[1],x[2],x[3],[y[0],y[1],y[2],y[3]],A.length?A:new THREE.Color));C.daeMaterial=b.material;e.faces.push(C);for(k=0;k<v.length;k++)h=z[v[k]],e.faceVertexUvs[k].push([h[0],
+h[1],h[2]]);f+=n.length*w}};C.prototype=new E;C.prototype.constructor=C;E.prototype.setVertices=function(b){for(var e=0;e<this.inputs.length;e++)if(this.inputs[e].source==b.id)this.inputs[e].source=b.input.POSITION.source};E.prototype.parse=function(b){this.inputs=[];this.material=b.getAttribute("material");this.count=da(b,"count",0);for(var e=0;e<b.childNodes.length;e++){var c=b.childNodes[e];switch(c.nodeName){case "input":this.inputs.push((new M).parse(b.childNodes[e]));break;case "vcount":this.vcount=
+fa(c.textContent);break;case "p":this.p=fa(c.textContent)}}return this};D.prototype.parse=function(b){this.params=[];this.source=b.getAttribute("source");this.count=da(b,"count",0);this.stride=da(b,"stride",0);for(var e=0;e<b.childNodes.length;e++){var c=b.childNodes[e];if(c.nodeName=="param"){var f={};f.name=c.getAttribute("name");f.type=c.getAttribute("type");this.params.push(f)}}return this};F.prototype.parse=function(b){this.id=b.getAttribute("id");for(var e=0;e<b.childNodes.length;e++)b.childNodes[e].nodeName==
+"input"&&(input=(new M).parse(b.childNodes[e]),this.input[input.semantic]=input);return this};M.prototype.parse=function(b){this.semantic=b.getAttribute("semantic");this.source=b.getAttribute("source").replace(/^#/,"");this.set=da(b,"set",-1);this.offset=da(b,"offset",0);if(this.semantic=="TEXCOORD"&&this.set<0)this.set=0;return this};N.prototype.parse=function(b){this.id=b.getAttribute("id");for(var e=0;e<b.childNodes.length;e++){var c=b.childNodes[e];switch(c.nodeName){case "bool_array":for(var f=
+ma(c.textContent),h=[],k=0;k<f.length;k++)h.push(f[k]=="true"||f[k]=="1"?!0:!1);this.data=h;this.type=c.nodeName;break;case "float_array":this.data=pa(c.textContent);this.type=c.nodeName;break;case "int_array":this.data=fa(c.textContent);this.type=c.nodeName;break;case "IDREF_array":case "Name_array":this.data=ma(c.textContent);this.type=c.nodeName;break;case "technique_common":for(f=0;f<c.childNodes.length;f++)if(c.childNodes[f].nodeName=="accessor"){this.accessor=(new D).parse(c.childNodes[f]);
+break}}}return this};N.prototype.read=function(){var b=[],e=this.accessor.params[0];switch(e.type){case "IDREF":case "Name":case "name":case "float":return this.data;case "float4x4":for(e=0;e<this.data.length;e+=16){var c=this.data.slice(e,e+16),f=new THREE.Matrix4;f.set(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8],c[9],c[10],c[11],c[12],c[13],c[14],c[15]);b.push(f)}break;default:console.log("ColladaLoader: Source: Read dont know how to read "+e.type+".")}return b};G.prototype.parse=function(b){this.id=
+b.getAttribute("id");this.name=b.getAttribute("name");for(var e=0;e<b.childNodes.length;e++)if(b.childNodes[e].nodeName=="instance_effect"){this.instance_effect=(new U).parse(b.childNodes[e]);break}return this};H.prototype.isColor=function(){return this.texture==null};H.prototype.isTexture=function(){return this.texture!=null};H.prototype.parse=function(b){for(var e=0;e<b.childNodes.length;e++){var c=b.childNodes[e];if(c.nodeType==1)switch(c.nodeName){case "color":c=pa(c.textContent);this.color=new THREE.Color(0);
+this.color.setRGB(c[0],c[1],c[2]);this.color.a=c[3];break;case "texture":this.texture=c.getAttribute("texture"),this.texcoord=c.getAttribute("texcoord")}}return this};K.prototype.parse=function(b){for(var e=0;e<b.childNodes.length;e++){var c=b.childNodes[e];if(c.nodeType==1)switch(c.nodeName){case "ambient":case "emission":case "diffuse":case "specular":case "transparent":this[c.nodeName]=(new H).parse(c);break;case "shininess":case "reflectivity":case "transparency":var f;f=$.evaluate(".//dae:float",
+c,R,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);for(var h=f.iterateNext(),k=[];h;)k.push(h),h=f.iterateNext();f=k;f.length>0&&(this[c.nodeName]=parseFloat(f[0].textContent))}}this.create();return this};K.prototype.create=function(){var b={},e=this.transparency!==void 0&&this.transparency<1,c;for(c in this)switch(c){case "ambient":case "emission":case "diffuse":case "specular":var f=this[c];if(f instanceof H)if(f.isTexture()){if(this.effect.sampler&&this.effect.surface&&this.effect.sampler.source==
+this.effect.surface.sid&&(f=sa[this.effect.surface.init_from]))b.map=THREE.ImageUtils.loadTexture(Ea+f.init_from),b.map.wrapS=THREE.RepeatWrapping,b.map.wrapT=THREE.RepeatWrapping,b.map.repeat.x=1,b.map.repeat.y=-1}else c=="diffuse"?b.color=f.color.getHex():e||(b[c]=f.color.getHex());break;case "shininess":case "reflectivity":b[c]=this[c];break;case "transparency":if(e)b.transparent=!0,b.opacity=this[c],e=!0}b.shading=Fa;return this.material=new THREE.MeshLambertMaterial(b)};Z.prototype.parse=function(b){for(var e=
+0;e<b.childNodes.length;e++){var c=b.childNodes[e];if(c.nodeType==1)switch(c.nodeName){case "init_from":this.init_from=c.textContent;break;case "format":this.format=c.textContent;break;default:console.log("unhandled Surface prop: "+c.nodeName)}}return this};L.prototype.parse=function(b){for(var e=0;e<b.childNodes.length;e++){var c=b.childNodes[e];if(c.nodeType==1)switch(c.nodeName){case "source":this.source=c.textContent;break;case "minfilter":this.minfilter=c.textContent;break;case "magfilter":this.magfilter=
+c.textContent;break;case "mipfilter":this.mipfilter=c.textContent;break;case "wrap_s":this.wrap_s=c.textContent;break;case "wrap_t":this.wrap_t=c.textContent;break;default:console.log("unhandled Sampler2D prop: "+c.nodeName)}}return this};P.prototype.create=function(){if(this.shader==null)return null};P.prototype.parse=function(b){this.id=b.getAttribute("id");this.name=b.getAttribute("name");this.shader=null;for(var e=0;e<b.childNodes.length;e++){var c=b.childNodes[e];if(c.nodeType==1)switch(c.nodeName){case "profile_COMMON":this.parseTechnique(this.parseProfileCOMMON(c))}}return this};
+P.prototype.parseNewparam=function(b){for(var e=b.getAttribute("sid"),c=0;c<b.childNodes.length;c++){var f=b.childNodes[c];if(f.nodeType==1)switch(f.nodeName){case "surface":this.surface=(new Z(this)).parse(f);this.surface.sid=e;break;case "sampler2D":this.sampler=(new L(this)).parse(f);this.sampler.sid=e;break;case "extra":break;default:console.log(f.nodeName)}}};P.prototype.parseProfileCOMMON=function(b){for(var e,c=0;c<b.childNodes.length;c++){var f=b.childNodes[c];if(f.nodeType==1)switch(f.nodeName){case "profile_COMMON":this.parseProfileCOMMON(f);
+break;case "technique":e=f;break;case "newparam":this.parseNewparam(f);break;case "extra":break;default:console.log(f.nodeName)}}return e};P.prototype.parseTechnique=function(b){for(var e=0;e<b.childNodes.length;e++){var c=b.childNodes[e];if(c.nodeType==1)switch(c.nodeName){case "lambert":case "blinn":case "phong":this.shader=(new K(c.nodeName,this)).parse(c)}}};U.prototype.parse=function(b){this.url=b.getAttribute("url").replace(/^#/,"");return this};Y.prototype.parse=function(b){this.id=b.getAttribute("id");
+this.name=b.getAttribute("name");this.source={};for(var e=0;e<b.childNodes.length;e++){var c=b.childNodes[e];if(c.nodeType==1)switch(c.nodeName){case "source":c=(new N).parse(c);this.source[c.id]=c;break;case "sampler":this.sampler.push((new o(this)).parse(c));break;case "channel":this.channel.push((new X(this)).parse(c))}}return this};X.prototype.parse=function(b){this.source=b.getAttribute("source").replace(/^#/,"");this.target=b.getAttribute("target");var e=this.target.split("/");e.shift();var b=
+e.shift(),c=b.indexOf(".")>=0,f=b.indexOf("(")>=0,h,k;if(c)e=b.split("."),b=e.shift(),k=e.shift();else if(f){h=b.split("(");b=h.shift();for(e=0;e<h.length;e++)h[e]=parseInt(h[e].replace(/\)/,""))}this.sid=b;this.dotSyntax=c;this.arrSyntax=f;this.arrIndices=h;this.member=k;return this};o.prototype.parse=function(b){this.id=b.getAttribute("id");this.inputs=[];for(var e=0;e<b.childNodes.length;e++){var c=b.childNodes[e];if(c.nodeType==1)switch(c.nodeName){case "input":this.inputs.push((new M).parse(c))}}return this};
+o.prototype.create=function(){for(var b=0;b<this.inputs.length;b++){var e=this.inputs[b],c=this.animation.source[e.source];switch(e.semantic){case "INPUT":this.input=c.read();break;case "OUTPUT":this.output=c.read();break;case "INTERPOLATION":this.interpolation=c.read();break;case "IN_TANGENT":break;case "OUT_TANGENT":break;default:console.log(e.semantic)}}this.duration=this.endTime=this.startTime=0;if(this.input.length){this.startTime=1E8;this.endTime=-1E8;for(b=0;b<this.input.length;b++)this.startTime=
+Math.min(this.startTime,this.input[b]),this.endTime=Math.max(this.endTime,this.input[b]);this.duration=this.endTime-this.startTime}};return{load:function(e,f){if(document.implementation&&document.implementation.createDocument){document.implementation.createDocument("http://www.collada.org/2005/11/COLLADASchema","COLLADA",null);e+="?rnd="+Math.random();var n=new XMLHttpRequest;n.overrideMimeType&&n.overrideMimeType("text/xml");n.onreadystatechange=function(){if(n.readyState==4&&(n.status==0||n.status==
+200)){ha=f;var o,p=e;$=n.responseXML;o=ha;p!==void 0&&(p=p.split("/"),p.pop(),Ea=p.length<1?"":p.join("/")+"/");sa=b("//dae:library_images/dae:image",k,"image");ra=b("//dae:library_materials/dae:material",G,"material");va=b("//dae:library_effects/dae:effect",P,"effect");na=b("//dae:library_geometries/dae:geometry",z,"geometry");Q=b("//dae:library_controllers/dae:controller",m,"controller");J=b("//dae:library_animations/dae:animation",Y,"animation");ua=b(".//dae:library_visual_scenes/dae:visual_scene",
+u,"visual_scene");Ba=[];Da=[];(p=$.evaluate(".//dae:scene/dae:instance_visual_scene",$,R,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null).iterateNext())?(p=p.getAttribute("url").replace(/^#/,""),aa=ua[p]):aa=null;ca=new THREE.Object3D;for(p=0;p<aa.nodes.length;p++)ca.add(h(aa.nodes[p]));c();for(var t in J);t={scene:ca,morphs:Ba,skins:Da,dae:{images:sa,materials:ra,effects:va,geometries:na,controllers:Q,animations:J,visualScenes:ua,scene:aa}};o&&o(t)}};n.open("GET",e,!0);n.send(null)}else alert("Don't know how to parse XML!")},
+setPreferredShading:function(b){Fa=b},applySkin:f,geometries:na}};THREE.JSONLoader=function(b){THREE.Loader.call(this,b)};THREE.JSONLoader.prototype=new THREE.Loader;THREE.JSONLoader.prototype.constructor=THREE.JSONLoader;THREE.JSONLoader.prototype.supr=THREE.Loader.prototype;
+THREE.JSONLoader.prototype.load=function(b){var c=this,e=b.model,f=b.callback,h=b.texture_path?b.texture_path:this.extractUrlbase(e),b=new Worker(e);b.onmessage=function(b){c.createModel(b.data,f,h);c.onLoadComplete()};this.onLoadStart();b.postMessage((new Date).getTime())};
+THREE.JSONLoader.prototype.createModel=function(b,c,e){var f=new THREE.Geometry,h=b.scale!==void 0?1/b.scale:1;this.init_materials(f,b.materials,e);(function(e){if(b.version===void 0||b.version!=2)console.error("Deprecated file format.");else{var c,h,t,u,v,p,x,w,A,z,y,C,E,D,F=b.faces;p=b.vertices;var M=b.normals,N=b.colors,G=0;for(c=0;c<b.uvs.length;c++)b.uvs[c].length&&G++;for(c=0;c<G;c++)f.faceUvs[c]=[],f.faceVertexUvs[c]=[];u=0;for(v=p.length;u<v;)x=new THREE.Vertex,x.position.x=p[u++]*e,x.position.y=
+p[u++]*e,x.position.z=p[u++]*e,f.vertices.push(x);u=0;for(v=F.length;u<v;){e=F[u++];p=e&1;t=e&2;c=e&4;h=e&8;w=e&16;x=e&32;z=e&64;e&=128;p?(y=new THREE.Face4,y.a=F[u++],y.b=F[u++],y.c=F[u++],y.d=F[u++],p=4):(y=new THREE.Face3,y.a=F[u++],y.b=F[u++],y.c=F[u++],p=3);if(t)t=F[u++],y.materials=f.materials[t];t=f.faces.length;if(c)for(c=0;c<G;c++)C=b.uvs[c],A=F[u++],D=C[A*2],A=C[A*2+1],f.faceUvs[c][t]=new THREE.UV(D,A);if(h)for(c=0;c<G;c++){C=b.uvs[c];E=[];for(h=0;h<p;h++)A=F[u++],D=C[A*2],A=C[A*2+1],E[h]=
+new THREE.UV(D,A);f.faceVertexUvs[c][t]=E}if(w)w=F[u++]*3,h=new THREE.Vector3,h.x=M[w++],h.y=M[w++],h.z=M[w],y.normal=h;if(x)for(c=0;c<p;c++)w=F[u++]*3,h=new THREE.Vector3,h.x=M[w++],h.y=M[w++],h.z=M[w],y.vertexNormals.push(h);if(z)x=F[u++],x=new THREE.Color(N[x]),y.color=x;if(e)for(c=0;c<p;c++)x=F[u++],x=new THREE.Color(N[x]),y.vertexColors.push(x);f.faces.push(y)}}})(h);(function(){var e,c,h,t;if(b.skinWeights){e=0;for(c=b.skinWeights.length;e<c;e+=2)h=b.skinWeights[e],t=b.skinWeights[e+1],f.skinWeights.push(new THREE.Vector4(h,
+t,0,0))}if(b.skinIndices){e=0;for(c=b.skinIndices.length;e<c;e+=2)h=b.skinIndices[e],t=b.skinIndices[e+1],f.skinIndices.push(new THREE.Vector4(h,t,0,0))}f.bones=b.bones;f.animation=b.animation})();(function(e){if(b.morphTargets!==void 0){var c,h,t,u,v,p,x,w,A;c=0;for(h=b.morphTargets.length;c<h;c++){f.morphTargets[c]={};f.morphTargets[c].name=b.morphTargets[c].name;f.morphTargets[c].vertices=[];w=f.morphTargets[c].vertices;A=b.morphTargets[c].vertices;t=0;for(u=A.length;t<u;t+=3)v=A[t]*e,p=A[t+1]*
+e,x=A[t+2]*e,w.push(new THREE.Vertex(new THREE.Vector3(v,p,x)))}}if(b.morphColors!==void 0){c=0;for(h=b.morphColors.length;c<h;c++){f.morphColors[c]={};f.morphColors[c].name=b.morphColors[c].name;f.morphColors[c].colors=[];u=f.morphColors[c].colors;v=b.morphColors[c].colors;e=0;for(t=v.length;e<t;e+=3)p=new THREE.Color(16755200),p.setRGB(v[e],v[e+1],v[e+2]),u.push(p)}}})(h);f.computeCentroids();f.computeFaceNormals();this.hasNormals(f)&&f.computeTangents();c(f)};
+THREE.SceneLoader=function(){this.onLoadStart=function(){};this.onLoadProgress=function(){};this.onLoadComplete=function(){};this.callbackSync=function(){};this.callbackProgress=function(){}};
+THREE.SceneLoader.prototype={load:function(b,c){var e=this,f=new Worker(b);f.postMessage(0);var h=THREE.Loader.prototype.extractUrlbase(b);f.onmessage=function(b){function f(b,e){return e=="relativeToHTML"?b:h+"/"+b}function n(){for(w in P.objects)if(!R.objects[w])if(E=P.objects[w],E.geometry!==void 0){if(N=R.geometries[E.geometry]){var b=!1;Z=[];for(fa=0;fa<E.materials.length;fa++)Z[fa]=R.materials[E.materials[fa]],b=Z[fa]instanceof THREE.ShaderMaterial;b&&N.computeTangents();D=E.position;r=E.rotation;
+q=E.quaternion;s=E.scale;q=0;Z.length==0&&(Z[0]=new THREE.MeshFaceMaterial);Z.length>1&&(Z=[new THREE.MeshFaceMaterial]);object=new THREE.Mesh(N,Z);object.name=w;object.position.set(D[0],D[1],D[2]);q?(object.quaternion.set(q[0],q[1],q[2],q[3]),object.useQuaternion=!0):object.rotation.set(r[0],r[1],r[2]);object.scale.set(s[0],s[1],s[2]);object.visible=E.visible;R.scene.add(object);R.objects[w]=object;E.meshCollider&&(b=THREE.CollisionUtils.MeshColliderWBox(object),R.scene.collisions.colliders.push(b));
+if(E.castsShadow)b=new THREE.ShadowVolume(N),R.scene.add(b),b.position=object.position,b.rotation=object.rotation,b.scale=object.scale;E.trigger&&E.trigger.toLowerCase()!="none"&&(b={type:E.trigger,object:E},R.triggers[object.name]=b)}}else D=E.position,r=E.rotation,q=E.quaternion,s=E.scale,q=0,object=new THREE.Object3D,object.name=w,object.position.set(D[0],D[1],D[2]),q?(object.quaternion.set(q[0],q[1],q[2],q[3]),object.useQuaternion=!0):object.rotation.set(r[0],r[1],r[2]),object.scale.set(s[0],
+s[1],s[2]),object.visible=E.visible!==void 0?E.visible:!1,R.scene.add(object),R.objects[w]=object,R.empties[w]=object,E.trigger&&E.trigger.toLowerCase()!="none"&&(b={type:E.trigger,object:E},R.triggers[object.name]=b)}function t(b){return function(c){R.geometries[b]=c;n();Y-=1;e.onLoadComplete();v()}}function u(b){return function(e){R.geometries[b]=e}}function v(){e.callbackProgress({totalModels:o,totalTextures:ea,loadedModels:o-Y,loadedTextures:ea-X},R);e.onLoadProgress();Y==0&&X==0&&c(R)}var p,
+x,w,A,z,y,C,E,D,F,M,N,G,H,K,Z,L,P,U,Y,X,o,ea,R;P=b.data;K=new THREE.BinaryLoader;U=new THREE.JSONLoader;X=Y=0;R={scene:new THREE.Scene,geometries:{},materials:{},textures:{},objects:{},cameras:{},lights:{},fogs:{},triggers:{},empties:{}};b=!1;for(w in P.objects)if(E=P.objects[w],E.meshCollider){b=!0;break}if(b)R.scene.collisions=new THREE.CollisionSystem;if(P.transform){b=P.transform.position;F=P.transform.rotation;var pa=P.transform.scale;b&&R.scene.position.set(b[0],b[1],b[2]);F&&R.scene.rotation.set(F[0],
+F[1],F[2]);pa&&R.scene.scale.set(pa[0],pa[1],pa[2]);(b||F||pa)&&R.scene.updateMatrix()}b=function(){X-=1;v();e.onLoadComplete()};for(z in P.cameras)F=P.cameras[z],F.type=="perspective"?G=new THREE.PerspectiveCamera(F.fov,F.aspect,F.near,F.far):F.type=="ortho"&&(G=new THREE.OrthographicCamera(F.left,F.right,F.top,F.bottom,F.near,F.far)),D=F.position,F=F.target,G.position.set(D[0],D[1],D[2]),G.target=new THREE.Vector3(F[0],F[1],F[2]),R.cameras[z]=G;for(A in P.lights)z=P.lights[A],G=z.color!==void 0?
+z.color:16777215,F=z.intensity!==void 0?z.intensity:1,z.type=="directional"?(D=z.direction,L=new THREE.DirectionalLight(G,F),L.position.set(D[0],D[1],D[2]),L.position.normalize()):z.type=="point"?(D=z.position,d=z.distance,L=new THREE.PointLight(G,F,d),L.position.set(D[0],D[1],D[2])):z.type=="ambient"&&(L=new THREE.AmbientLight(G)),R.scene.add(L),R.lights[A]=L;for(y in P.fogs)A=P.fogs[y],A.type=="linear"?H=new THREE.Fog(0,A.near,A.far):A.type=="exp2"&&(H=new THREE.FogExp2(0,A.density)),F=A.color,
+H.color.setRGB(F[0],F[1],F[2]),R.fogs[y]=H;if(R.cameras&&P.defaults.camera)R.currentCamera=R.cameras[P.defaults.camera];if(R.fogs&&P.defaults.fog)R.scene.fog=R.fogs[P.defaults.fog];F=P.defaults.bgcolor;R.bgColor=new THREE.Color;R.bgColor.setRGB(F[0],F[1],F[2]);R.bgColorAlpha=P.defaults.bgalpha;for(p in P.geometries)if(y=P.geometries[p],y.type=="bin_mesh"||y.type=="ascii_mesh")Y+=1,e.onLoadStart();o=Y;for(p in P.geometries)y=P.geometries[p],y.type=="cube"?(N=new THREE.CubeGeometry(y.width,y.height,
+y.depth,y.segmentsWidth,y.segmentsHeight,y.segmentsDepth,null,y.flipped,y.sides),R.geometries[p]=N):y.type=="plane"?(N=new THREE.PlaneGeometry(y.width,y.height,y.segmentsWidth,y.segmentsHeight),R.geometries[p]=N):y.type=="sphere"?(N=new THREE.SphereGeometry(y.radius,y.segmentsWidth,y.segmentsHeight),R.geometries[p]=N):y.type=="cylinder"?(N=new THREE.CylinderGeometry(y.topRad,y.botRad,y.height,y.radSegs,y.heightSegs),R.geometries[p]=N):y.type=="torus"?(N=new THREE.TorusGeometry(y.radius,y.tube,y.segmentsR,
+y.segmentsT),R.geometries[p]=N):y.type=="icosahedron"?(N=new THREE.IcosahedronGeometry(y.subdivisions),R.geometries[p]=N):y.type=="bin_mesh"?K.load({model:f(y.url,P.urlBaseType),callback:t(p)}):y.type=="ascii_mesh"?U.load({model:f(y.url,P.urlBaseType),callback:t(p)}):y.type=="embedded_mesh"&&(y=P.embeds[y.id])&&U.createModel(y,u(p),"");for(C in P.textures)if(p=P.textures[C],p.url instanceof Array){X+=p.url.length;for(K=0;K<p.url.length;K++)e.onLoadStart()}else X+=1,e.onLoadStart();ea=X;for(C in P.textures){p=
+P.textures[C];if(p.mapping!=void 0&&THREE[p.mapping]!=void 0)p.mapping=new THREE[p.mapping];if(p.url instanceof Array){K=[];for(var fa=0;fa<p.url.length;fa++)K[fa]=f(p.url[fa],P.urlBaseType);K=THREE.ImageUtils.loadTextureCube(K,p.mapping,b)}else{K=THREE.ImageUtils.loadTexture(f(p.url,P.urlBaseType),p.mapping,b);if(THREE[p.minFilter]!=void 0)K.minFilter=THREE[p.minFilter];if(THREE[p.magFilter]!=void 0)K.magFilter=THREE[p.magFilter];if(p.repeat){K.repeat.set(p.repeat[0],p.repeat[1]);if(p.repeat[0]!=
+1)K.wrapS=THREE.RepeatWrapping;if(p.repeat[1]!=1)K.wrapT=THREE.RepeatWrapping}p.offset&&K.offset.set(p.offset[0],p.offset[1]);if(p.wrap){U={repeat:THREE.RepeatWrapping,mirror:THREE.MirroredRepeatWrapping};if(U[p.wrap[0]]!==void 0)K.wrapS=U[p.wrap[0]];if(U[p.wrap[1]]!==void 0)K.wrapT=U[p.wrap[1]]}}R.textures[C]=K}for(x in P.materials){C=P.materials[x];for(M in C.parameters)if(M=="envMap"||M=="map"||M=="lightMap")C.parameters[M]=R.textures[C.parameters[M]];else if(M=="shading")C.parameters[M]=C.parameters[M]==
+"flat"?THREE.FlatShading:THREE.SmoothShading;else if(M=="blending")C.parameters[M]=THREE[C.parameters[M]]?THREE[C.parameters[M]]:THREE.NormalBlending;else if(M=="combine")C.parameters[M]=C.parameters[M]=="MixOperation"?THREE.MixOperation:THREE.MultiplyOperation;else if(M=="vertexColors")if(C.parameters[M]=="face")C.parameters[M]=THREE.FaceColors;else if(C.parameters[M])C.parameters[M]=THREE.VertexColors;if(C.parameters.opacity!==void 0&&C.parameters.opacity<1)C.parameters.transparent=!0;if(C.parameters.normalMap){p=
+THREE.ShaderUtils.lib.normal;b=THREE.UniformsUtils.clone(p.uniforms);K=C.parameters.color;U=C.parameters.specular;y=C.parameters.ambient;H=C.parameters.shininess;b.tNormal.texture=R.textures[C.parameters.normalMap];if(C.parameters.normalMapFactor)b.uNormalScale.value=C.parameters.normalMapFactor;if(C.parameters.map)b.tDiffuse.texture=C.parameters.map,b.enableDiffuse.value=!0;if(C.parameters.lightMap)b.tAO.texture=C.parameters.lightMap,b.enableAO.value=!0;if(C.parameters.specularMap)b.tSpecular.texture=
+R.textures[C.parameters.specularMap],b.enableSpecular.value=!0;b.uDiffuseColor.value.setHex(K);b.uSpecularColor.value.setHex(U);b.uAmbientColor.value.setHex(y);b.uShininess.value=H;if(C.parameters.opacity)b.uOpacity.value=C.parameters.opacity;C=new THREE.ShaderMaterial({fragmentShader:p.fragmentShader,vertexShader:p.vertexShader,uniforms:b,lights:!0,fog:!0})}else C=new THREE[C.type](C.parameters);R.materials[x]=C}n();e.callbackSync(R)}},constructor:THREE.SceneLoader};THREE.UTF8Loader=function(){};
+THREE.UTF8Loader.prototype=new THREE.UTF8Loader;THREE.UTF8Loader.prototype.constructor=THREE.UTF8Loader;
+THREE.UTF8Loader.prototype.load=function(b){var c=new XMLHttpRequest,e=b.model,f=b.callback,h=b.scale!==void 0?b.scale:1,k=b.offsetX!==void 0?b.offsetX:0,m=b.offsetY!==void 0?b.offsetY:0,n=b.offsetZ!==void 0?b.offsetZ:0;c.onreadystatechange=function(){c.readyState==4?c.status==200||c.status==0?THREE.UTF8Loader.prototype.createModel(c.responseText,f,h,k,m,n):alert("Couldn't load ["+e+"] ["+c.status+"]"):c.readyState!=3&&c.readyState==2&&c.getResponseHeader("Content-Length")};c.open("GET",e,!0);c.send(null)};
+THREE.UTF8Loader.prototype.decompressMesh=function(b){var c=b.charCodeAt(0);c>=57344&&(c-=2048);c++;for(var e=new Float32Array(8*c),f=1,h=0;h<8;h++){for(var k=0,m=0;m<c;++m){var n=b.charCodeAt(m+f);k+=n>>1^-(n&1);e[8*m+h]=k}f+=c}c=b.length-f;k=new Uint16Array(c);for(h=m=0;h<c;h++)n=b.charCodeAt(h+f),k[h]=m-n,n==0&&m++;return[e,k]};
+THREE.UTF8Loader.prototype.createModel=function(b,c,e,f,h,k){var m=function(){var c=this;c.materials=[];THREE.Geometry.call(this);var m=THREE.UTF8Loader.prototype.decompressMesh(b),u=[],v=[];(function(b,m,t){for(var u,v,y,C=b.length;t<C;t+=m)u=b[t],v=b[t+1],y=b[t+2],u=u/16383*e,v=v/16383*e,y=y/16383*e,u+=f,v+=h,y+=k,c.vertices.push(new THREE.Vertex(new THREE.Vector3(u,v,y)))})(m[0],8,0);(function(b,e,c){for(var f,h,k=b.length;c<k;c+=e)f=b[c],h=b[c+1],f/=1023,h/=1023,v.push(f,1-h)})(m[0],8,3);(function(b,
+e,c){for(var f,h,k,m=b.length;c<m;c+=e)f=b[c],h=b[c+1],k=b[c+2],f=(f-512)/511,h=(h-512)/511,k=(k-512)/511,u.push(f,h,k)})(m[0],8,5);(function(b){var e,f,h,k,m,t,E,D,F,M=b.length;for(e=0;e<M;e+=3){f=b[e];h=b[e+1];k=b[e+2];m=c;D=f;F=h;t=k;E=f;var N=h,G=k,H=m.materials[0],K=u[N*3],Z=u[N*3+1],N=u[N*3+2],L=u[G*3],P=u[G*3+1],G=u[G*3+2];E=new THREE.Vector3(u[E*3],u[E*3+1],u[E*3+2]);N=new THREE.Vector3(K,Z,N);G=new THREE.Vector3(L,P,G);m.faces.push(new THREE.Face3(D,F,t,[E,N,G],null,H));m=v[f*2];f=v[f*2+
+1];t=v[h*2];E=v[h*2+1];D=v[k*2];F=v[k*2+1];k=c.faceVertexUvs[0];h=t;t=E;E=[];E.push(new THREE.UV(m,f));E.push(new THREE.UV(h,t));E.push(new THREE.UV(D,F));k.push(E)}})(m[1]);this.computeCentroids();this.computeFaceNormals()};m.prototype=new THREE.Geometry;m.prototype.constructor=m;c(new m)};
+THREE.Axes=function(){THREE.Object3D.call(this);var b=new THREE.Geometry;b.vertices.push(new THREE.Vertex);b.vertices.push(new THREE.Vertex(new THREE.Vector3(0,100,0)));var c=new THREE.CylinderGeometry(0,5,25,5,1),e=new THREE.Line(b,new THREE.LineBasicMaterial({color:16711680}));e.rotation.z=-Math.PI/2;this.add(e);e=new THREE.Mesh(c,new THREE.MeshBasicMaterial({color:16711680}));e.position.x=100;e.rotation.z=-Math.PI/2;this.add(e);e=new THREE.Line(b,new THREE.LineBasicMaterial({color:65280}));this.add(e);
+e=new THREE.Mesh(c,new THREE.MeshBasicMaterial({color:65280}));e.position.y=100;this.add(e);e=new THREE.Line(b,new THREE.LineBasicMaterial({color:255}));e.rotation.x=Math.PI/2;this.add(e);e=new THREE.Mesh(c,new THREE.MeshBasicMaterial({color:255}));e.position.z=100;e.rotation.x=Math.PI/2;this.add(e)};THREE.Axes.prototype=new THREE.Object3D;THREE.Axes.prototype.constructor=THREE.Axes;
+THREE.MarchingCubes=function(b,c){THREE.Object3D.call(this);this.materials=c instanceof Array?c:[c];this.init=function(b){this.isolation=80;this.size=b;this.size2=this.size*this.size;this.size3=this.size2*this.size;this.halfsize=this.size/2;this.delta=2/this.size;this.yd=this.size;this.zd=this.size2;this.field=new Float32Array(this.size3);this.normal_cache=new Float32Array(this.size3*3);this.vlist=new Float32Array(36);this.nlist=new Float32Array(36);this.firstDraw=!0;this.maxCount=4096;this.count=
+0;this.hasNormal=this.hasPos=!1;this.positionArray=new Float32Array(this.maxCount*3);this.normalArray=new Float32Array(this.maxCount*3)};this.lerp=function(b,c,h){return b+(c-b)*h};this.VIntX=function(b,c,h,k,m,n,t,u,v,p){m=(m-v)/(p-v);v=this.normal_cache;c[k]=n+m*this.delta;c[k+1]=t;c[k+2]=u;h[k]=this.lerp(v[b],v[b+3],m);h[k+1]=this.lerp(v[b+1],v[b+4],m);h[k+2]=this.lerp(v[b+2],v[b+5],m)};this.VIntY=function(b,c,h,k,m,n,t,u,v,p){m=(m-v)/(p-v);v=this.normal_cache;c[k]=n;c[k+1]=t+m*this.delta;c[k+
+2]=u;c=b+this.yd*3;h[k]=this.lerp(v[b],v[c],m);h[k+1]=this.lerp(v[b+1],v[c+1],m);h[k+2]=this.lerp(v[b+2],v[c+2],m)};this.VIntZ=function(b,c,h,k,m,n,t,u,v,p){m=(m-v)/(p-v);v=this.normal_cache;c[k]=n;c[k+1]=t;c[k+2]=u+m*this.delta;c=b+this.zd*3;h[k]=this.lerp(v[b],v[c],m);h[k+1]=this.lerp(v[b+1],v[c+1],m);h[k+2]=this.lerp(v[b+2],v[c+2],m)};this.compNorm=function(b){var c=b*3;this.normal_cache[c]==0&&(this.normal_cache[c]=this.field[b-1]-this.field[b+1],this.normal_cache[c+1]=this.field[b-this.yd]-this.field[b+
+this.yd],this.normal_cache[c+2]=this.field[b-this.zd]-this.field[b+this.zd])};this.polygonize=function(b,c,h,k,m,n){var t=k+1,u=k+this.yd,v=k+this.zd,p=t+this.yd,x=t+this.zd,w=k+this.yd+this.zd,A=t+this.yd+this.zd,z=0,y=this.field[k],C=this.field[t],E=this.field[u],D=this.field[p],F=this.field[v],M=this.field[x],N=this.field[w],G=this.field[A];y<m&&(z|=1);C<m&&(z|=2);E<m&&(z|=8);D<m&&(z|=4);F<m&&(z|=16);M<m&&(z|=32);N<m&&(z|=128);G<m&&(z|=64);var H=THREE.edgeTable[z];if(H==0)return 0;var K=this.delta,
+Z=b+K,L=c+K,K=h+K;H&1&&(this.compNorm(k),this.compNorm(t),this.VIntX(k*3,this.vlist,this.nlist,0,m,b,c,h,y,C));H&2&&(this.compNorm(t),this.compNorm(p),this.VIntY(t*3,this.vlist,this.nlist,3,m,Z,c,h,C,D));H&4&&(this.compNorm(u),this.compNorm(p),this.VIntX(u*3,this.vlist,this.nlist,6,m,b,L,h,E,D));H&8&&(this.compNorm(k),this.compNorm(u),this.VIntY(k*3,this.vlist,this.nlist,9,m,b,c,h,y,E));H&16&&(this.compNorm(v),this.compNorm(x),this.VIntX(v*3,this.vlist,this.nlist,12,m,b,c,K,F,M));H&32&&(this.compNorm(x),
+this.compNorm(A),this.VIntY(x*3,this.vlist,this.nlist,15,m,Z,c,K,M,G));H&64&&(this.compNorm(w),this.compNorm(A),this.VIntX(w*3,this.vlist,this.nlist,18,m,b,L,K,N,G));H&128&&(this.compNorm(v),this.compNorm(w),this.VIntY(v*3,this.vlist,this.nlist,21,m,b,c,K,F,N));H&256&&(this.compNorm(k),this.compNorm(v),this.VIntZ(k*3,this.vlist,this.nlist,24,m,b,c,h,y,F));H&512&&(this.compNorm(t),this.compNorm(x),this.VIntZ(t*3,this.vlist,this.nlist,27,m,Z,c,h,C,M));H&1024&&(this.compNorm(p),this.compNorm(A),this.VIntZ(p*
+3,this.vlist,this.nlist,30,m,Z,L,h,D,G));H&2048&&(this.compNorm(u),this.compNorm(w),this.VIntZ(u*3,this.vlist,this.nlist,33,m,b,L,h,E,N));z<<=4;for(m=k=0;THREE.triTable[z+m]!=-1;)b=z+m,c=b+1,h=b+2,this.posnormtriv(this.vlist,this.nlist,3*THREE.triTable[b],3*THREE.triTable[c],3*THREE.triTable[h],n),m+=3,k++;return k};this.posnormtriv=function(b,c,h,k,m,n){var t=this.count*3;this.positionArray[t]=b[h];this.positionArray[t+1]=b[h+1];this.positionArray[t+2]=b[h+2];this.positionArray[t+3]=b[k];this.positionArray[t+
+4]=b[k+1];this.positionArray[t+5]=b[k+2];this.positionArray[t+6]=b[m];this.positionArray[t+7]=b[m+1];this.positionArray[t+8]=b[m+2];this.normalArray[t]=c[h];this.normalArray[t+1]=c[h+1];this.normalArray[t+2]=c[h+2];this.normalArray[t+3]=c[k];this.normalArray[t+4]=c[k+1];this.normalArray[t+5]=c[k+2];this.normalArray[t+6]=c[m];this.normalArray[t+7]=c[m+1];this.normalArray[t+8]=c[m+2];this.hasNormal=this.hasPos=!0;this.count+=3;this.count>=this.maxCount-3&&n(this)};this.begin=function(){this.count=0;
+this.hasNormal=this.hasPos=!1};this.end=function(b){if(this.count!=0){for(var c=this.count*3;c<this.positionArray.length;c++)this.positionArray[c]=0;b(this)}};this.addBall=function(b,c,h,k,m){var n=this.size*Math.sqrt(k/m),t=h*this.size,u=c*this.size,v=b*this.size,p=Math.floor(t-n);p<1&&(p=1);t=Math.floor(t+n);t>this.size-1&&(t=this.size-1);var x=Math.floor(u-n);x<1&&(x=1);u=Math.floor(u+n);u>this.size-1&&(u=this.size-1);var w=Math.floor(v-n);w<1&&(w=1);n=Math.floor(v+n);n>this.size-1&&(n=this.size-
+1);for(var A,z,y,C,E,D;p<t;p++){v=this.size2*p;z=p/this.size-h;E=z*z;for(z=x;z<u;z++){y=v+this.size*z;A=z/this.size-c;D=A*A;for(A=w;A<n;A++)C=A/this.size-b,C=k/(1.0E-6+C*C+D+E)-m,C>0&&(this.field[y+A]+=C)}}};this.addPlaneX=function(b,c){var h,k,m,n,t,u=this.size,v=this.yd,p=this.zd,x=this.field,w=u*Math.sqrt(b/c);w>u&&(w=u);for(h=0;h<w;h++)if(k=h/u,k*=k,n=b/(1.0E-4+k)-c,n>0)for(k=0;k<u;k++){t=h+k*v;for(m=0;m<u;m++)x[p*m+t]+=n}};this.addPlaneY=function(b,c){var h,k,m,n,t,u,v=this.size,p=this.yd,x=
+this.zd,w=this.field,A=v*Math.sqrt(b/c);A>v&&(A=v);for(k=0;k<A;k++)if(h=k/v,h*=h,n=b/(1.0E-4+h)-c,n>0){t=k*p;for(h=0;h<v;h++){u=t+h;for(m=0;m<v;m++)w[x*m+u]+=n}}};this.addPlaneZ=function(b,c){var h,k,m,n,t,u;size=this.size;yd=this.yd;zd=this.zd;field=this.field;dist=size*Math.sqrt(b/c);dist>size&&(dist=size);for(m=0;m<dist;m++)if(h=m/size,h*=h,n=b/(1.0E-4+h)-c,n>0){t=zd*m;for(k=0;k<size;k++){u=t+k*yd;for(h=0;h<size;h++)field[u+h]+=n}}};this.reset=function(){var b;for(b=0;b<this.size3;b++)this.normal_cache[b*
+3]=0,this.field[b]=0};this.render=function(b){this.begin();var c,h,k,m,n,t,u,v,p,x=this.size-2;for(m=1;m<x;m++){p=this.size2*m;u=(m-this.halfsize)/this.halfsize;for(k=1;k<x;k++){v=p+this.size*k;t=(k-this.halfsize)/this.halfsize;for(h=1;h<x;h++)n=(h-this.halfsize)/this.halfsize,c=v+h,this.polygonize(n,t,u,c,this.isolation,b)}}this.end(b)};this.generateGeometry=function(){var b=0,c=new THREE.Geometry,h=[];this.render(function(k){var m,n,t,u,v,p,x,w;for(m=0;m<k.count;m++)x=m*3,v=x+1,w=x+2,n=k.positionArray[x],
+t=k.positionArray[v],u=k.positionArray[w],p=new THREE.Vector3(n,t,u),n=k.normalArray[x],t=k.normalArray[v],u=k.normalArray[w],x=new THREE.Vector3(n,t,u),x.normalize(),v=new THREE.Vertex(p),c.vertices.push(v),h.push(x);nfaces=k.count/3;for(m=0;m<nfaces;m++)x=(b+m)*3,v=x+1,w=x+2,p=h[x],n=h[v],t=h[w],x=new THREE.Face3(x,v,w,[p,n,t]),c.faces.push(x);b+=nfaces;k.count=0});return c};this.init(b)};THREE.MarchingCubes.prototype=new THREE.Object3D;THREE.MarchingCubes.prototype.constructor=THREE.MarchingCubes;
+THREE.edgeTable=new Int32Array([0,265,515,778,1030,1295,1541,1804,2060,2309,2575,2822,3082,3331,3593,3840,400,153,915,666,1430,1183,1941,1692,2460,2197,2975,2710,3482,3219,3993,3728,560,825,51,314,1590,1855,1077,1340,2620,2869,2111,2358,3642,3891,3129,3376,928,681,419,170,1958,1711,1445,1196,2988,2725,2479,2214,4010,3747,3497,3232,1120,1385,1635,1898,102,367,613,876,3180,3429,3695,3942,2154,2403,2665,2912,1520,1273,2035,1786,502,255,1013,764,3580,3317,4095,3830,2554,2291,3065,2800,1616,1881,1107,
+1370,598,863,85,348,3676,3925,3167,3414,2650,2899,2137,2384,1984,1737,1475,1226,966,719,453,204,4044,3781,3535,3270,3018,2755,2505,2240,2240,2505,2755,3018,3270,3535,3781,4044,204,453,719,966,1226,1475,1737,1984,2384,2137,2899,2650,3414,3167,3925,3676,348,85,863,598,1370,1107,1881,1616,2800,3065,2291,2554,3830,4095,3317,3580,764,1013,255,502,1786,2035,1273,1520,2912,2665,2403,2154,3942,3695,3429,3180,876,613,367,102,1898,1635,1385,1120,3232,3497,3747,4010,2214,2479,2725,2988,1196,1445,1711,1958,170,
+419,681,928,3376,3129,3891,3642,2358,2111,2869,2620,1340,1077,1855,1590,314,51,825,560,3728,3993,3219,3482,2710,2975,2197,2460,1692,1941,1183,1430,666,915,153,400,3840,3593,3331,3082,2822,2575,2309,2060,1804,1541,1295,1030,778,515,265,0]);
+THREE.triTable=new Int32Array([-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,8,3,9,8,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,1,2,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,2,10,0,2,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,8,3,2,10,8,10,9,8,-1,-1,-1,-1,-1,-1,-1,3,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,11,2,8,11,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,0,2,3,11,-1,-1,-1,-1,-1,
+-1,-1,-1,-1,-1,1,11,2,1,9,11,9,8,11,-1,-1,-1,-1,-1,-1,-1,3,10,1,11,10,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,10,1,0,8,10,8,11,10,-1,-1,-1,-1,-1,-1,-1,3,9,0,3,11,9,11,10,9,-1,-1,-1,-1,-1,-1,-1,9,8,10,10,8,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,7,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,3,0,7,3,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,9,8,4,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,1,9,4,7,1,7,3,1,-1,-1,-1,-1,-1,-1,-1,1,2,10,8,4,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,4,7,3,0,4,1,2,10,-1,-1,-1,-1,-1,-1,-1,9,2,10,9,0,2,8,4,7,
+-1,-1,-1,-1,-1,-1,-1,2,10,9,2,9,7,2,7,3,7,9,4,-1,-1,-1,-1,8,4,7,3,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,4,7,11,2,4,2,0,4,-1,-1,-1,-1,-1,-1,-1,9,0,1,8,4,7,2,3,11,-1,-1,-1,-1,-1,-1,-1,4,7,11,9,4,11,9,11,2,9,2,1,-1,-1,-1,-1,3,10,1,3,11,10,7,8,4,-1,-1,-1,-1,-1,-1,-1,1,11,10,1,4,11,1,0,4,7,11,4,-1,-1,-1,-1,4,7,8,9,0,11,9,11,10,11,0,3,-1,-1,-1,-1,4,7,11,4,11,9,9,11,10,-1,-1,-1,-1,-1,-1,-1,9,5,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,5,4,0,8,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,5,4,1,5,0,-1,-1,-1,-1,-1,-1,
+-1,-1,-1,-1,8,5,4,8,3,5,3,1,5,-1,-1,-1,-1,-1,-1,-1,1,2,10,9,5,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,8,1,2,10,4,9,5,-1,-1,-1,-1,-1,-1,-1,5,2,10,5,4,2,4,0,2,-1,-1,-1,-1,-1,-1,-1,2,10,5,3,2,5,3,5,4,3,4,8,-1,-1,-1,-1,9,5,4,2,3,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,11,2,0,8,11,4,9,5,-1,-1,-1,-1,-1,-1,-1,0,5,4,0,1,5,2,3,11,-1,-1,-1,-1,-1,-1,-1,2,1,5,2,5,8,2,8,11,4,8,5,-1,-1,-1,-1,10,3,11,10,1,3,9,5,4,-1,-1,-1,-1,-1,-1,-1,4,9,5,0,8,1,8,10,1,8,11,10,-1,-1,-1,-1,5,4,0,5,0,11,5,11,10,11,0,3,-1,-1,-1,-1,5,4,8,5,
+8,10,10,8,11,-1,-1,-1,-1,-1,-1,-1,9,7,8,5,7,9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,3,0,9,5,3,5,7,3,-1,-1,-1,-1,-1,-1,-1,0,7,8,0,1,7,1,5,7,-1,-1,-1,-1,-1,-1,-1,1,5,3,3,5,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,7,8,9,5,7,10,1,2,-1,-1,-1,-1,-1,-1,-1,10,1,2,9,5,0,5,3,0,5,7,3,-1,-1,-1,-1,8,0,2,8,2,5,8,5,7,10,5,2,-1,-1,-1,-1,2,10,5,2,5,3,3,5,7,-1,-1,-1,-1,-1,-1,-1,7,9,5,7,8,9,3,11,2,-1,-1,-1,-1,-1,-1,-1,9,5,7,9,7,2,9,2,0,2,7,11,-1,-1,-1,-1,2,3,11,0,1,8,1,7,8,1,5,7,-1,-1,-1,-1,11,2,1,11,1,7,7,1,5,-1,-1,-1,-1,-1,-1,
+-1,9,5,8,8,5,7,10,1,3,10,3,11,-1,-1,-1,-1,5,7,0,5,0,9,7,11,0,1,0,10,11,10,0,-1,11,10,0,11,0,3,10,5,0,8,0,7,5,7,0,-1,11,10,5,7,11,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,6,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,5,10,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,0,1,5,10,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,8,3,1,9,8,5,10,6,-1,-1,-1,-1,-1,-1,-1,1,6,5,2,6,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,6,5,1,2,6,3,0,8,-1,-1,-1,-1,-1,-1,-1,9,6,5,9,0,6,0,2,6,-1,-1,-1,-1,-1,-1,-1,5,9,8,5,8,2,5,2,6,3,2,8,-1,-1,-1,-1,2,3,11,10,6,
+5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,0,8,11,2,0,10,6,5,-1,-1,-1,-1,-1,-1,-1,0,1,9,2,3,11,5,10,6,-1,-1,-1,-1,-1,-1,-1,5,10,6,1,9,2,9,11,2,9,8,11,-1,-1,-1,-1,6,3,11,6,5,3,5,1,3,-1,-1,-1,-1,-1,-1,-1,0,8,11,0,11,5,0,5,1,5,11,6,-1,-1,-1,-1,3,11,6,0,3,6,0,6,5,0,5,9,-1,-1,-1,-1,6,5,9,6,9,11,11,9,8,-1,-1,-1,-1,-1,-1,-1,5,10,6,4,7,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,3,0,4,7,3,6,5,10,-1,-1,-1,-1,-1,-1,-1,1,9,0,5,10,6,8,4,7,-1,-1,-1,-1,-1,-1,-1,10,6,5,1,9,7,1,7,3,7,9,4,-1,-1,-1,-1,6,1,2,6,5,1,4,7,8,-1,-1,-1,-1,
+-1,-1,-1,1,2,5,5,2,6,3,0,4,3,4,7,-1,-1,-1,-1,8,4,7,9,0,5,0,6,5,0,2,6,-1,-1,-1,-1,7,3,9,7,9,4,3,2,9,5,9,6,2,6,9,-1,3,11,2,7,8,4,10,6,5,-1,-1,-1,-1,-1,-1,-1,5,10,6,4,7,2,4,2,0,2,7,11,-1,-1,-1,-1,0,1,9,4,7,8,2,3,11,5,10,6,-1,-1,-1,-1,9,2,1,9,11,2,9,4,11,7,11,4,5,10,6,-1,8,4,7,3,11,5,3,5,1,5,11,6,-1,-1,-1,-1,5,1,11,5,11,6,1,0,11,7,11,4,0,4,11,-1,0,5,9,0,6,5,0,3,6,11,6,3,8,4,7,-1,6,5,9,6,9,11,4,7,9,7,11,9,-1,-1,-1,-1,10,4,9,6,4,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,10,6,4,9,10,0,8,3,-1,-1,-1,-1,-1,-1,-1,
+10,0,1,10,6,0,6,4,0,-1,-1,-1,-1,-1,-1,-1,8,3,1,8,1,6,8,6,4,6,1,10,-1,-1,-1,-1,1,4,9,1,2,4,2,6,4,-1,-1,-1,-1,-1,-1,-1,3,0,8,1,2,9,2,4,9,2,6,4,-1,-1,-1,-1,0,2,4,4,2,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,3,2,8,2,4,4,2,6,-1,-1,-1,-1,-1,-1,-1,10,4,9,10,6,4,11,2,3,-1,-1,-1,-1,-1,-1,-1,0,8,2,2,8,11,4,9,10,4,10,6,-1,-1,-1,-1,3,11,2,0,1,6,0,6,4,6,1,10,-1,-1,-1,-1,6,4,1,6,1,10,4,8,1,2,1,11,8,11,1,-1,9,6,4,9,3,6,9,1,3,11,6,3,-1,-1,-1,-1,8,11,1,8,1,0,11,6,1,9,1,4,6,4,1,-1,3,11,6,3,6,0,0,6,4,-1,-1,-1,-1,-1,-1,-1,
+6,4,8,11,6,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,10,6,7,8,10,8,9,10,-1,-1,-1,-1,-1,-1,-1,0,7,3,0,10,7,0,9,10,6,7,10,-1,-1,-1,-1,10,6,7,1,10,7,1,7,8,1,8,0,-1,-1,-1,-1,10,6,7,10,7,1,1,7,3,-1,-1,-1,-1,-1,-1,-1,1,2,6,1,6,8,1,8,9,8,6,7,-1,-1,-1,-1,2,6,9,2,9,1,6,7,9,0,9,3,7,3,9,-1,7,8,0,7,0,6,6,0,2,-1,-1,-1,-1,-1,-1,-1,7,3,2,6,7,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,11,10,6,8,10,8,9,8,6,7,-1,-1,-1,-1,2,0,7,2,7,11,0,9,7,6,7,10,9,10,7,-1,1,8,0,1,7,8,1,10,7,6,7,10,2,3,11,-1,11,2,1,11,1,7,10,6,1,6,7,1,-1,-1,-1,-1,
+8,9,6,8,6,7,9,1,6,11,6,3,1,3,6,-1,0,9,1,11,6,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,0,7,0,6,3,11,0,11,6,0,-1,-1,-1,-1,7,11,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,8,11,7,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,9,11,7,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,1,9,8,3,1,11,7,6,-1,-1,-1,-1,-1,-1,-1,10,1,2,6,11,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2,10,3,0,8,6,11,7,-1,-1,-1,-1,-1,-1,-1,2,9,0,2,10,9,6,11,7,-1,-1,-1,-1,-1,-1,-1,6,11,7,2,10,3,10,8,3,10,9,8,-1,-1,-1,-1,7,
+2,3,6,2,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,0,8,7,6,0,6,2,0,-1,-1,-1,-1,-1,-1,-1,2,7,6,2,3,7,0,1,9,-1,-1,-1,-1,-1,-1,-1,1,6,2,1,8,6,1,9,8,8,7,6,-1,-1,-1,-1,10,7,6,10,1,7,1,3,7,-1,-1,-1,-1,-1,-1,-1,10,7,6,1,7,10,1,8,7,1,0,8,-1,-1,-1,-1,0,3,7,0,7,10,0,10,9,6,10,7,-1,-1,-1,-1,7,6,10,7,10,8,8,10,9,-1,-1,-1,-1,-1,-1,-1,6,8,4,11,8,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,6,11,3,0,6,0,4,6,-1,-1,-1,-1,-1,-1,-1,8,6,11,8,4,6,9,0,1,-1,-1,-1,-1,-1,-1,-1,9,4,6,9,6,3,9,3,1,11,3,6,-1,-1,-1,-1,6,8,4,6,11,8,2,10,1,-1,-1,-1,
+-1,-1,-1,-1,1,2,10,3,0,11,0,6,11,0,4,6,-1,-1,-1,-1,4,11,8,4,6,11,0,2,9,2,10,9,-1,-1,-1,-1,10,9,3,10,3,2,9,4,3,11,3,6,4,6,3,-1,8,2,3,8,4,2,4,6,2,-1,-1,-1,-1,-1,-1,-1,0,4,2,4,6,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,9,0,2,3,4,2,4,6,4,3,8,-1,-1,-1,-1,1,9,4,1,4,2,2,4,6,-1,-1,-1,-1,-1,-1,-1,8,1,3,8,6,1,8,4,6,6,10,1,-1,-1,-1,-1,10,1,0,10,0,6,6,0,4,-1,-1,-1,-1,-1,-1,-1,4,6,3,4,3,8,6,10,3,0,3,9,10,9,3,-1,10,9,4,6,10,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,9,5,7,6,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,3,4,9,5,11,7,6,
+-1,-1,-1,-1,-1,-1,-1,5,0,1,5,4,0,7,6,11,-1,-1,-1,-1,-1,-1,-1,11,7,6,8,3,4,3,5,4,3,1,5,-1,-1,-1,-1,9,5,4,10,1,2,7,6,11,-1,-1,-1,-1,-1,-1,-1,6,11,7,1,2,10,0,8,3,4,9,5,-1,-1,-1,-1,7,6,11,5,4,10,4,2,10,4,0,2,-1,-1,-1,-1,3,4,8,3,5,4,3,2,5,10,5,2,11,7,6,-1,7,2,3,7,6,2,5,4,9,-1,-1,-1,-1,-1,-1,-1,9,5,4,0,8,6,0,6,2,6,8,7,-1,-1,-1,-1,3,6,2,3,7,6,1,5,0,5,4,0,-1,-1,-1,-1,6,2,8,6,8,7,2,1,8,4,8,5,1,5,8,-1,9,5,4,10,1,6,1,7,6,1,3,7,-1,-1,-1,-1,1,6,10,1,7,6,1,0,7,8,7,0,9,5,4,-1,4,0,10,4,10,5,0,3,10,6,10,7,3,7,10,
+-1,7,6,10,7,10,8,5,4,10,4,8,10,-1,-1,-1,-1,6,9,5,6,11,9,11,8,9,-1,-1,-1,-1,-1,-1,-1,3,6,11,0,6,3,0,5,6,0,9,5,-1,-1,-1,-1,0,11,8,0,5,11,0,1,5,5,6,11,-1,-1,-1,-1,6,11,3,6,3,5,5,3,1,-1,-1,-1,-1,-1,-1,-1,1,2,10,9,5,11,9,11,8,11,5,6,-1,-1,-1,-1,0,11,3,0,6,11,0,9,6,5,6,9,1,2,10,-1,11,8,5,11,5,6,8,0,5,10,5,2,0,2,5,-1,6,11,3,6,3,5,2,10,3,10,5,3,-1,-1,-1,-1,5,8,9,5,2,8,5,6,2,3,8,2,-1,-1,-1,-1,9,5,6,9,6,0,0,6,2,-1,-1,-1,-1,-1,-1,-1,1,5,8,1,8,0,5,6,8,3,8,2,6,2,8,-1,1,5,6,2,1,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
+1,3,6,1,6,10,3,8,6,5,6,9,8,9,6,-1,10,1,0,10,0,6,9,5,0,5,6,0,-1,-1,-1,-1,0,3,8,5,6,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,5,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,5,10,7,5,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,5,10,11,7,5,8,3,0,-1,-1,-1,-1,-1,-1,-1,5,11,7,5,10,11,1,9,0,-1,-1,-1,-1,-1,-1,-1,10,7,5,10,11,7,9,8,1,8,3,1,-1,-1,-1,-1,11,1,2,11,7,1,7,5,1,-1,-1,-1,-1,-1,-1,-1,0,8,3,1,2,7,1,7,5,7,2,11,-1,-1,-1,-1,9,7,5,9,2,7,9,0,2,2,11,7,-1,-1,-1,-1,7,5,2,7,2,11,5,9,2,3,2,8,9,8,2,-1,2,5,10,2,3,5,3,7,5,-1,-1,
+-1,-1,-1,-1,-1,8,2,0,8,5,2,8,7,5,10,2,5,-1,-1,-1,-1,9,0,1,5,10,3,5,3,7,3,10,2,-1,-1,-1,-1,9,8,2,9,2,1,8,7,2,10,2,5,7,5,2,-1,1,3,5,3,7,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,8,7,0,7,1,1,7,5,-1,-1,-1,-1,-1,-1,-1,9,0,3,9,3,5,5,3,7,-1,-1,-1,-1,-1,-1,-1,9,8,7,5,9,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,8,4,5,10,8,10,11,8,-1,-1,-1,-1,-1,-1,-1,5,0,4,5,11,0,5,10,11,11,3,0,-1,-1,-1,-1,0,1,9,8,4,10,8,10,11,10,4,5,-1,-1,-1,-1,10,11,4,10,4,5,11,3,4,9,4,1,3,1,4,-1,2,5,1,2,8,5,2,11,8,4,5,8,-1,-1,-1,-1,0,4,11,0,11,3,4,5,11,
+2,11,1,5,1,11,-1,0,2,5,0,5,9,2,11,5,4,5,8,11,8,5,-1,9,4,5,2,11,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,5,10,3,5,2,3,4,5,3,8,4,-1,-1,-1,-1,5,10,2,5,2,4,4,2,0,-1,-1,-1,-1,-1,-1,-1,3,10,2,3,5,10,3,8,5,4,5,8,0,1,9,-1,5,10,2,5,2,4,1,9,2,9,4,2,-1,-1,-1,-1,8,4,5,8,5,3,3,5,1,-1,-1,-1,-1,-1,-1,-1,0,4,5,1,0,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,4,5,8,5,3,9,0,5,0,3,5,-1,-1,-1,-1,9,4,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,11,7,4,9,11,9,10,11,-1,-1,-1,-1,-1,-1,-1,0,8,3,4,9,7,9,11,7,9,10,11,-1,-1,-1,-1,1,10,11,1,11,
+4,1,4,0,7,4,11,-1,-1,-1,-1,3,1,4,3,4,8,1,10,4,7,4,11,10,11,4,-1,4,11,7,9,11,4,9,2,11,9,1,2,-1,-1,-1,-1,9,7,4,9,11,7,9,1,11,2,11,1,0,8,3,-1,11,7,4,11,4,2,2,4,0,-1,-1,-1,-1,-1,-1,-1,11,7,4,11,4,2,8,3,4,3,2,4,-1,-1,-1,-1,2,9,10,2,7,9,2,3,7,7,4,9,-1,-1,-1,-1,9,10,7,9,7,4,10,2,7,8,7,0,2,0,7,-1,3,7,10,3,10,2,7,4,10,1,10,0,4,0,10,-1,1,10,2,8,7,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,9,1,4,1,7,7,1,3,-1,-1,-1,-1,-1,-1,-1,4,9,1,4,1,7,0,8,1,8,7,1,-1,-1,-1,-1,4,0,3,7,4,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,8,7,-1,-1,-1,
+-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,10,8,10,11,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,0,9,3,9,11,11,9,10,-1,-1,-1,-1,-1,-1,-1,0,1,10,0,10,8,8,10,11,-1,-1,-1,-1,-1,-1,-1,3,1,10,11,3,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2,11,1,11,9,9,11,8,-1,-1,-1,-1,-1,-1,-1,3,0,9,3,9,11,1,2,9,2,11,9,-1,-1,-1,-1,0,2,11,8,0,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,2,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,2,8,10,10,8,9,-1,-1,-1,-1,-1,-1,-1,9,10,2,0,9,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,3,8,2,8,10,0,1,8,1,10,8,-1,-1,-1,-1,1,10,
+2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,3,8,9,1,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,9,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,3,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]);THREE.PlaneCollider=function(b,c){this.point=b;this.normal=c};THREE.SphereCollider=function(b,c){this.center=b;this.radius=c;this.radiusSq=c*c};THREE.BoxCollider=function(b,c){this.min=b;this.max=c;this.dynamic=!0;this.normal=new THREE.Vector3};
+THREE.MeshCollider=function(b,c){this.mesh=b;this.box=c;this.numFaces=this.mesh.geometry.faces.length;this.normal=new THREE.Vector3};THREE.CollisionSystem=function(){this.collisionNormal=new THREE.Vector3;this.colliders=[];this.hits=[]};THREE.Collisions=new THREE.CollisionSystem;THREE.CollisionSystem.prototype.merge=function(b){Array.prototype.push.apply(this.colliders,b.colliders);Array.prototype.push.apply(this.hits,b.hits)};
+THREE.CollisionSystem.prototype.rayCastAll=function(b){b.direction.normalize();this.hits.length=0;var c,e,f,h,k=0;c=0;for(e=this.colliders.length;c<e;c++)if(h=this.colliders[c],f=this.rayCast(b,h),f<Number.MAX_VALUE)h.distance=f,f>k?this.hits.push(h):this.hits.unshift(h),k=f;return this.hits};
+THREE.CollisionSystem.prototype.rayCastNearest=function(b){var c=this.rayCastAll(b);if(c.length==0)return null;for(var e=0;c[e]instanceof THREE.MeshCollider;){var f=this.rayMesh(b,c[e]);if(f.dist<Number.MAX_VALUE){c[e].distance=f.dist;c[e].faceIndex=f.faceIndex;break}e++}if(e>c.length)return null;return c[e]};
+THREE.CollisionSystem.prototype.rayCast=function(b,c){if(c instanceof THREE.PlaneCollider)return this.rayPlane(b,c);else if(c instanceof THREE.SphereCollider)return this.raySphere(b,c);else if(c instanceof THREE.BoxCollider)return this.rayBox(b,c);else if(c instanceof THREE.MeshCollider&&c.box)return this.rayBox(b,c.box)};
+THREE.CollisionSystem.prototype.rayMesh=function(b,c){for(var e=this.makeRayLocal(b,c.mesh),f=Number.MAX_VALUE,h,k=0;k<c.numFaces;k++){var m=c.mesh.geometry.faces[k],n=c.mesh.geometry.vertices[m.a].position,t=c.mesh.geometry.vertices[m.b].position,u=c.mesh.geometry.vertices[m.c].position,v=m instanceof THREE.Face4?c.mesh.geometry.vertices[m.d].position:null;m instanceof THREE.Face3?(m=this.rayTriangle(e,n,t,u,f,this.collisionNormal,c.mesh),m<f&&(f=m,h=k,c.normal.copy(this.collisionNormal),c.normal.normalize())):
+m instanceof THREE.Face4&&(m=this.rayTriangle(e,n,t,v,f,this.collisionNormal,c.mesh),m<f&&(f=m,h=k,c.normal.copy(this.collisionNormal),c.normal.normalize()),m=this.rayTriangle(e,t,u,v,f,this.collisionNormal,c.mesh),m<f&&(f=m,h=k,c.normal.copy(this.collisionNormal),c.normal.normalize()))}return{dist:f,faceIndex:h}};
+THREE.CollisionSystem.prototype.rayTriangle=function(b,c,e,f,h,k,m){var n=THREE.CollisionSystem.__v1,t=THREE.CollisionSystem.__v2;k.set(0,0,0);n.sub(e,c);t.sub(f,e);k.cross(n,t);n=k.dot(b.direction);if(!(n<0))if(m.doubleSided||m.flipSided)k.multiplyScalar(-1),n*=-1;else return Number.MAX_VALUE;m=k.dot(c)-k.dot(b.origin);if(!(m<=0))return Number.MAX_VALUE;if(!(m>=n*h))return Number.MAX_VALUE;m/=n;n=THREE.CollisionSystem.__v3;n.copy(b.direction);n.multiplyScalar(m);n.addSelf(b.origin);Math.abs(k.x)>
+Math.abs(k.y)?Math.abs(k.x)>Math.abs(k.z)?(b=n.y-c.y,k=e.y-c.y,h=f.y-c.y,n=n.z-c.z,e=e.z-c.z,f=f.z-c.z):(b=n.x-c.x,k=e.x-c.x,h=f.x-c.x,n=n.y-c.y,e=e.y-c.y,f=f.y-c.y):Math.abs(k.y)>Math.abs(k.z)?(b=n.x-c.x,k=e.x-c.x,h=f.x-c.x,n=n.z-c.z,e=e.z-c.z,f=f.z-c.z):(b=n.x-c.x,k=e.x-c.x,h=f.x-c.x,n=n.y-c.y,e=e.y-c.y,f=f.y-c.y);c=k*f-e*h;if(c==0)return Number.MAX_VALUE;c=1/c;f=(b*f-n*h)*c;if(!(f>=0))return Number.MAX_VALUE;c*=k*n-e*b;if(!(c>=0))return Number.MAX_VALUE;if(!(1-f-c>=0))return Number.MAX_VALUE;return m};
+THREE.CollisionSystem.prototype.makeRayLocal=function(b,c){var e=THREE.CollisionSystem.__m;THREE.Matrix4.makeInvert(c.matrixWorld,e);var f=THREE.CollisionSystem.__r;f.origin.copy(b.origin);f.direction.copy(b.direction);e.multiplyVector3(f.origin);e.rotateAxis(f.direction);f.direction.normalize();return f};
+THREE.CollisionSystem.prototype.rayBox=function(b,c){var e;c.dynamic&&c.mesh&&c.mesh.matrixWorld?e=this.makeRayLocal(b,c.mesh):(e=THREE.CollisionSystem.__r,e.origin.copy(b.origin),e.direction.copy(b.direction));var f=0,h=0,k=0,m=0,n=0,t=0,u=!0;e.origin.x<c.min.x?(f=c.min.x-e.origin.x,f/=e.direction.x,u=!1,m=-1):e.origin.x>c.max.x&&(f=c.max.x-e.origin.x,f/=e.direction.x,u=!1,m=1);e.origin.y<c.min.y?(h=c.min.y-e.origin.y,h/=e.direction.y,u=!1,n=-1):e.origin.y>c.max.y&&(h=c.max.y-e.origin.y,h/=e.direction.y,
+u=!1,n=1);e.origin.z<c.min.z?(k=c.min.z-e.origin.z,k/=e.direction.z,u=!1,t=-1):e.origin.z>c.max.z&&(k=c.max.z-e.origin.z,k/=e.direction.z,u=!1,t=1);if(u)return-1;u=0;h>f&&(u=1,f=h);k>f&&(u=2,f=k);switch(u){case 0:n=e.origin.y+e.direction.y*f;if(n<c.min.y||n>c.max.y)return Number.MAX_VALUE;e=e.origin.z+e.direction.z*f;if(e<c.min.z||e>c.max.z)return Number.MAX_VALUE;c.normal.set(m,0,0);break;case 1:m=e.origin.x+e.direction.x*f;if(m<c.min.x||m>c.max.x)return Number.MAX_VALUE;e=e.origin.z+e.direction.z*
+f;if(e<c.min.z||e>c.max.z)return Number.MAX_VALUE;c.normal.set(0,n,0);break;case 2:m=e.origin.x+e.direction.x*f;if(m<c.min.x||m>c.max.x)return Number.MAX_VALUE;n=e.origin.y+e.direction.y*f;if(n<c.min.y||n>c.max.y)return Number.MAX_VALUE;c.normal.set(0,0,t)}return f};THREE.CollisionSystem.prototype.rayPlane=function(b,c){var e=b.direction.dot(c.normal),f=c.point.dot(c.normal);if(e<0)e=(f-b.origin.dot(c.normal))/e;else return Number.MAX_VALUE;return e>0?e:Number.MAX_VALUE};
+THREE.CollisionSystem.prototype.raySphere=function(b,c){var e=c.center.clone().subSelf(b.origin);if(e.lengthSq<c.radiusSq)return-1;var f=e.dot(b.direction.clone());if(f<=0)return Number.MAX_VALUE;e=c.radiusSq-(e.lengthSq()-f*f);if(e>=0)return Math.abs(f)-Math.sqrt(e);return Number.MAX_VALUE};THREE.CollisionSystem.__v1=new THREE.Vector3;THREE.CollisionSystem.__v2=new THREE.Vector3;THREE.CollisionSystem.__v3=new THREE.Vector3;THREE.CollisionSystem.__nr=new THREE.Vector3;THREE.CollisionSystem.__m=new THREE.Matrix4;
+THREE.CollisionSystem.__r=new THREE.Ray;THREE.CollisionUtils={};THREE.CollisionUtils.MeshOBB=function(b){b.geometry.computeBoundingBox();var c=b.geometry.boundingBox,e=new THREE.Vector3(c.x[0],c.y[0],c.z[0]),c=new THREE.Vector3(c.x[1],c.y[1],c.z[1]),e=new THREE.BoxCollider(e,c);e.mesh=b;return e};THREE.CollisionUtils.MeshAABB=function(b){var c=THREE.CollisionUtils.MeshOBB(b);c.min.addSelf(b.position);c.max.addSelf(b.position);c.dynamic=!1;return c};
+THREE.CollisionUtils.MeshColliderWBox=function(b){return new THREE.MeshCollider(b,THREE.CollisionUtils.MeshOBB(b))};
+if(THREE.WebGLRenderer)THREE.AnaglyphWebGLRenderer=function(b){THREE.WebGLRenderer.call(this,b);var c=this,e=this.setSize,f=this.render,h=new THREE.PerspectiveCamera,k=new THREE.PerspectiveCamera,m=new THREE.Matrix4,n=new THREE.Matrix4,t,u,v;h.matrixAutoUpdate=k.matrixAutoUpdate=!1;var b={minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat},p=new THREE.WebGLRenderTarget(512,512,b),x=new THREE.WebGLRenderTarget(512,512,b),w=new THREE.PerspectiveCamera(53,1,1,1E4);w.position.z=
+2;_material=new THREE.ShaderMaterial({uniforms:{mapLeft:{type:"t",value:0,texture:p},mapRight:{type:"t",value:1,texture:x}},vertexShader:"varying vec2 vUv;\nvoid main() {\nvUv = vec2( uv.x, 1.0 - uv.y );\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D mapLeft;\nuniform sampler2D mapRight;\nvarying vec2 vUv;\nvoid main() {\nvec4 colorL, colorR;\nvec2 uv = vUv;\ncolorL = texture2D( mapLeft, uv );\ncolorR = texture2D( mapRight, uv );\ngl_FragColor = vec4( colorL.g * 0.7 + colorL.b * 0.3, colorR.g, colorR.b, colorL.a + colorR.a ) * 1.1;\n}"});
+var A=new THREE.Scene;A.add(new THREE.Mesh(new THREE.PlaneGeometry(2,2),_material));this.setSize=function(b,f){e.call(c,b,f);p.width=b;p.height=f;x.width=b;x.height=f};this.render=function(b,e){e.update(null,!0);if(t!==e.aspect||u!==e.near||v!==e.fov){t=e.aspect;u=e.near;v=e.fov;var C=e.projectionMatrix.clone(),E=125/30*0.5,D=E*u/125,F=u*Math.tan(v*Math.PI/360),M;m.n14=E;n.n14=-E;E=-F*t+D;M=F*t+D;C.n11=2*u/(M-E);C.n13=(M+E)/(M-E);h.projectionMatrix=C.clone();E=-F*t-D;M=F*t-D;C.n11=2*u/(M-E);C.n13=
+(M+E)/(M-E);k.projectionMatrix=C.clone()}h.matrix=e.matrixWorld.clone().multiplySelf(n);h.update(null,!0);h.position.copy(e.position);h.near=u;h.far=e.far;f.call(c,b,h,p,!0);k.matrix=e.matrixWorld.clone().multiplySelf(m);k.update(null,!0);k.position.copy(e.position);k.near=u;k.far=e.far;f.call(c,b,k,x,!0);f.call(c,A,w)}};
+if(THREE.WebGLRenderer)THREE.CrosseyedWebGLRenderer=function(b){THREE.WebGLRenderer.call(this,b);this.autoClear=!1;var c=this,e=this.setSize,f=this.render,h,k,m=new THREE.PerspectiveCamera;m.target=new THREE.Vector3(0,0,0);var n=new THREE.PerspectiveCamera;n.target=new THREE.Vector3(0,0,0);c.separation=10;if(b&&b.separation!==void 0)c.separation=b.separation;this.setSize=function(b,f){e.call(c,b,f);h=b/2;k=f};this.render=function(b,e){this.clear();m.fov=e.fov;m.aspect=0.5*e.aspect;m.near=e.near;m.far=
+e.far;m.updateProjectionMatrix();m.position.copy(e.position);m.target.copy(e.target);m.translateX(c.separation);m.lookAt(m.target);n.projectionMatrix=m.projectionMatrix;n.position.copy(e.position);n.target.copy(e.target);n.translateX(-c.separation);n.lookAt(n.target);this.setViewport(0,0,h,k);f.call(c,b,m);this.setViewport(h,0,h,k);f.call(c,b,n,!1)}};
diff --git a/frontend/imlandscape/js/generating.js b/frontend/imlandscape/js/generating.js
new file mode 100644
index 0000000..1b1cf03
--- /dev/null
+++ b/frontend/imlandscape/js/generating.js
@@ -0,0 +1,8 @@
+var is_generating = false;
+function toggle_background(){
+ if (is_generating){
+ $('body').css("background", "url(img/generating_background.gif)");
+ }else{
+ $('body').css("background", "whitesmoke");
+ }
+}
diff --git a/frontend/imlandscape/js/jquery.min.js b/frontend/imlandscape/js/jquery.min.js
new file mode 100644
index 0000000..25714ed
--- /dev/null
+++ b/frontend/imlandscape/js/jquery.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v2.1.3 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.3",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)
+},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ib={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))
+},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var ec=/#.*$/,fc=/([?&])_=[^&]*/,gc=/^(.*?):[ \t]*([^\r\n]*)$/gm,hc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ic=/^(?:GET|HEAD)$/,jc=/^\/\//,kc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lc={},mc={},nc="*/".concat("*"),oc=a.location.href,pc=kc.exec(oc.toLowerCase())||[];function qc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rc(a,b,c,d){var e={},f=a===mc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function uc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:oc,type:"GET",isLocal:hc.test(pc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sc(sc(a,n.ajaxSettings),b):sc(n.ajaxSettings,a)},ajaxPrefilter:qc(lc),ajaxTransport:qc(mc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gc.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||oc)+"").replace(ec,"").replace(jc,pc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pc[1]&&h[2]===pc[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pc[3]||("http:"===pc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rc(lc,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ic.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fc.test(d)?d.replace(fc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rc(mc,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tc(k,v,f)),u=uc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vc=/%20/g,wc=/\[\]$/,xc=/\r?\n/g,yc=/^(?:submit|button|image|reset|file)$/i,zc=/^(?:input|select|textarea|keygen)/i;function Ac(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wc.test(a)?d(a,e):Ac(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ac(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ac(c,a[c],b,e);return d.join("&").replace(vc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zc.test(this.nodeName)&&!yc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xc,"\r\n")}}):{name:b.name,value:c.replace(xc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bc=0,Cc={},Dc={0:200,1223:204},Ec=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cc)Cc[a]()}),k.cors=!!Ec&&"withCredentials"in Ec,k.ajax=Ec=!!Ec,n.ajaxTransport(function(a){var b;return k.cors||Ec&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Dc[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fc=[],Gc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fc.pop()||n.expando+"_"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gc.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gc,"$1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hc)return Hc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ic=a.document.documentElement;function Jc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ic;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ic})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kc=a.jQuery,Lc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lc),b&&a.jQuery===n&&(a.jQuery=Kc),n},typeof b===U&&(a.jQuery=a.$=n),n});
diff --git a/frontend/imlandscape/js/keypress.js b/frontend/imlandscape/js/keypress.js
new file mode 100644
index 0000000..3a6b053
--- /dev/null
+++ b/frontend/imlandscape/js/keypress.js
@@ -0,0 +1,1132 @@
+// Generated by CoffeeScript 1.8.0
+
+/*
+Copyright 2014 David Mauro
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Keypress is a robust keyboard input capturing Javascript utility
+focused on input for games.
+
+version 2.1.0
+ */
+
+
+/*
+Combo options available and their defaults:
+ keys : [] - An array of the keys pressed together to activate combo.
+ count : 0 - The number of times a counting combo has been pressed. Reset on release.
+ is_unordered : false - Unless this is set to true, the keys can be pressed down in any order.
+ is_counting : false - Makes this a counting combo (see documentation).
+ is_exclusive : false - This combo will replace other exclusive combos when true.
+ is_solitary : false - This combo will only fire if ONLY it's keys are pressed down.
+ is_sequence : false - Rather than a key combo, this is an ordered key sequence.
+ prevent_default : false - Prevent default behavior for all component key keypresses.
+ prevent_repeat : false - Prevent the combo from repeating when keydown is held.
+ on_keydown : null - A function that is called when the combo is pressed.
+ on_keyup : null - A function that is called when the combo is released.
+ on_release : null - A function that is called when all keys in the combo are released.
+ this : undefined - Defines the scope for your callback functions.
+ */
+
+(function() {
+ var Combo, keypress, _change_keycodes_by_browser, _compare_arrays, _compare_arrays_sorted, _convert_key_to_readable, _convert_to_shifted_key, _decide_meta_key, _factory_defaults, _filter_array, _index_of_in_array, _is_array_in_array, _is_array_in_array_sorted, _key_is_valid, _keycode_alternate_names, _keycode_dictionary, _keycode_shifted_keys, _log_error, _metakey, _modifier_event_mapping, _modifier_keys, _validate_combo,
+ __hasProp = {}.hasOwnProperty,
+ __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
+
+ _factory_defaults = {
+ is_unordered: false,
+ is_counting: false,
+ is_exclusive: false,
+ is_solitary: false,
+ prevent_default: false,
+ prevent_repeat: false
+ };
+
+ _modifier_keys = ["meta", "alt", "option", "ctrl", "shift", "cmd"];
+
+ _metakey = "ctrl";
+
+ keypress = {};
+
+ keypress.debug = false;
+
+ Combo = (function() {
+ function Combo(dictionary) {
+ var property, value;
+ for (property in dictionary) {
+ if (!__hasProp.call(dictionary, property)) continue;
+ value = dictionary[property];
+ if (value !== false) {
+ this[property] = value;
+ }
+ }
+ this.keys = this.keys || [];
+ this.count = this.count || 0;
+ }
+
+ Combo.prototype.allows_key_repeat = function() {
+ return !this.prevent_repeat && typeof this.on_keydown === "function";
+ };
+
+ Combo.prototype.reset = function() {
+ this.count = 0;
+ return this.keyup_fired = null;
+ };
+
+ return Combo;
+
+ })();
+
+ keypress.Listener = (function() {
+ function Listener(element, defaults) {
+ var attach_handler, property, value;
+ this.should_suppress_event_defaults = false;
+ this.should_force_event_defaults = false;
+ this.sequence_delay = 800;
+ this._registered_combos = [];
+ this._keys_down = [];
+ this._active_combos = [];
+ this._sequence = [];
+ this._sequence_timer = null;
+ this._prevent_capture = false;
+ this._defaults = defaults || {};
+ for (property in _factory_defaults) {
+ if (!__hasProp.call(_factory_defaults, property)) continue;
+ value = _factory_defaults[property];
+ this._defaults[property] = this._defaults[property] || value;
+ }
+ this.element = element || document.body;
+ attach_handler = function(target, event, handler) {
+ if (target.addEventListener) {
+ target.addEventListener(event, handler);
+ } else if (target.attachEvent) {
+ target.attachEvent("on" + event, handler);
+ }
+ return handler;
+ };
+ this.keydown_event = attach_handler(this.element, "keydown", (function(_this) {
+ return function(e) {
+ e = e || window.event;
+ _this._receive_input(e, true);
+ return _this._bug_catcher(e);
+ };
+ })(this));
+ this.keyup_event = attach_handler(this.element, "keyup", (function(_this) {
+ return function(e) {
+ e = e || window.event;
+ return _this._receive_input(e, false);
+ };
+ })(this));
+ this.blur_event = attach_handler(window, "blur", (function(_this) {
+ return function() {
+ var key, _i, _len, _ref;
+ _ref = _this._keys_down;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ key = _ref[_i];
+ _this._key_up(key, {});
+ }
+ return _this._keys_down = [];
+ };
+ })(this));
+ }
+
+ Listener.prototype.destroy = function() {
+ var remove_handler;
+ remove_handler = function(target, event, handler) {
+ if (target.removeEventListener != null) {
+ return target.removeEventListener(event, handler);
+ } else if (target.removeEvent != null) {
+ return target.removeEvent("on" + event, handler);
+ }
+ };
+ remove_handler(this.element, "keydown", this.keydown_event);
+ remove_handler(this.element, "keyup", this.keyup_event);
+ return remove_handler(window, "blur", this.blur_event);
+ };
+
+ Listener.prototype._bug_catcher = function(e) {
+ var _ref;
+ if (_metakey === "cmd" && __indexOf.call(this._keys_down, "cmd") >= 0 && ((_ref = _convert_key_to_readable(e.keyCode)) !== "cmd" && _ref !== "shift" && _ref !== "alt" && _ref !== "caps" && _ref !== "tab")) {
+ return this._receive_input(e, false);
+ }
+ };
+
+ Listener.prototype._cmd_bug_check = function(combo_keys) {
+ if (_metakey === "cmd" && __indexOf.call(this._keys_down, "cmd") >= 0 && __indexOf.call(combo_keys, "cmd") < 0) {
+ return false;
+ }
+ return true;
+ };
+
+ Listener.prototype._prevent_default = function(e, should_prevent) {
+ if ((should_prevent || this.should_suppress_event_defaults) && !this.should_force_event_defaults) {
+ if (e.preventDefault) {
+ e.preventDefault();
+ } else {
+ e.returnValue = false;
+ }
+ if (e.stopPropagation) {
+ return e.stopPropagation();
+ }
+ }
+ };
+
+ Listener.prototype._get_active_combos = function(key) {
+ var active_combos, keys_down;
+ active_combos = [];
+ keys_down = _filter_array(this._keys_down, function(down_key) {
+ return down_key !== key;
+ });
+ keys_down.push(key);
+ this._match_combo_arrays(keys_down, (function(_this) {
+ return function(match) {
+ if (_this._cmd_bug_check(match.keys)) {
+ return active_combos.push(match);
+ }
+ };
+ })(this));
+ this._fuzzy_match_combo_arrays(keys_down, (function(_this) {
+ return function(match) {
+ if (__indexOf.call(active_combos, match) >= 0) {
+ return;
+ }
+ if (!(match.is_solitary || !_this._cmd_bug_check(match.keys))) {
+ return active_combos.push(match);
+ }
+ };
+ })(this));
+ return active_combos;
+ };
+
+ Listener.prototype._get_potential_combos = function(key) {
+ var combo, potentials, _i, _len, _ref;
+ potentials = [];
+ _ref = this._registered_combos;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ combo = _ref[_i];
+ if (combo.is_sequence) {
+ continue;
+ }
+ if (__indexOf.call(combo.keys, key) >= 0 && this._cmd_bug_check(combo.keys)) {
+ potentials.push(combo);
+ }
+ }
+ return potentials;
+ };
+
+ Listener.prototype._add_to_active_combos = function(combo) {
+ var active_combo, active_key, active_keys, already_replaced, combo_key, i, should_prepend, should_replace, _i, _j, _k, _len, _len1, _ref, _ref1;
+ should_replace = false;
+ should_prepend = true;
+ already_replaced = false;
+ if (__indexOf.call(this._active_combos, combo) >= 0) {
+ return true;
+ } else if (this._active_combos.length) {
+ for (i = _i = 0, _ref = this._active_combos.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
+ active_combo = this._active_combos[i];
+ if (!(active_combo && active_combo.is_exclusive && combo.is_exclusive)) {
+ continue;
+ }
+ active_keys = active_combo.keys;
+ if (!should_replace) {
+ for (_j = 0, _len = active_keys.length; _j < _len; _j++) {
+ active_key = active_keys[_j];
+ should_replace = true;
+ if (__indexOf.call(combo.keys, active_key) < 0) {
+ should_replace = false;
+ break;
+ }
+ }
+ }
+ if (should_prepend && !should_replace) {
+ _ref1 = combo.keys;
+ for (_k = 0, _len1 = _ref1.length; _k < _len1; _k++) {
+ combo_key = _ref1[_k];
+ should_prepend = false;
+ if (__indexOf.call(active_keys, combo_key) < 0) {
+ should_prepend = true;
+ break;
+ }
+ }
+ }
+ if (should_replace) {
+ if (already_replaced) {
+ active_combo = this._active_combos.splice(i, 1)[0];
+ if (active_combo != null) {
+ active_combo.reset();
+ }
+ } else {
+ active_combo = this._active_combos.splice(i, 1, combo)[0];
+ if (active_combo != null) {
+ active_combo.reset();
+ }
+ already_replaced = true;
+ }
+ should_prepend = false;
+ }
+ }
+ }
+ if (should_prepend) {
+ this._active_combos.unshift(combo);
+ }
+ return should_replace || should_prepend;
+ };
+
+ Listener.prototype._remove_from_active_combos = function(combo) {
+ var active_combo, i, _i, _ref;
+ for (i = _i = 0, _ref = this._active_combos.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
+ active_combo = this._active_combos[i];
+ if (active_combo === combo) {
+ combo = this._active_combos.splice(i, 1)[0];
+ combo.reset();
+ break;
+ }
+ }
+ };
+
+ Listener.prototype._get_possible_sequences = function() {
+ var combo, i, j, match, matches, sequence, _i, _j, _k, _len, _ref, _ref1, _ref2;
+ matches = [];
+ _ref = this._registered_combos;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ combo = _ref[_i];
+ for (j = _j = 1, _ref1 = this._sequence.length; 1 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 1 <= _ref1 ? ++_j : --_j) {
+ sequence = this._sequence.slice(-j);
+ if (!combo.is_sequence) {
+ continue;
+ }
+ if (__indexOf.call(combo.keys, "shift") < 0) {
+ sequence = _filter_array(sequence, function(key) {
+ return key !== "shift";
+ });
+ if (!sequence.length) {
+ continue;
+ }
+ }
+ for (i = _k = 0, _ref2 = sequence.length; 0 <= _ref2 ? _k < _ref2 : _k > _ref2; i = 0 <= _ref2 ? ++_k : --_k) {
+ if (combo.keys[i] === sequence[i]) {
+ match = true;
+ } else {
+ match = false;
+ break;
+ }
+ }
+ if (match) {
+ matches.push(combo);
+ }
+ }
+ }
+ return matches;
+ };
+
+ Listener.prototype._add_key_to_sequence = function(key, e) {
+ var combo, sequence_combos, _i, _len;
+ this._sequence.push(key);
+ sequence_combos = this._get_possible_sequences();
+ if (sequence_combos.length) {
+ for (_i = 0, _len = sequence_combos.length; _i < _len; _i++) {
+ combo = sequence_combos[_i];
+ this._prevent_default(e, combo.prevent_default);
+ }
+ if (this._sequence_timer) {
+ clearTimeout(this._sequence_timer);
+ }
+ if (this.sequence_delay > -1) {
+ this._sequence_timer = setTimeout(function() {
+ return this._sequence = [];
+ }, this.sequence_delay);
+ }
+ } else {
+ this._sequence = [];
+ }
+ };
+
+ Listener.prototype._get_sequence = function(key) {
+ var combo, i, j, match, seq_key, sequence, _i, _j, _k, _len, _ref, _ref1, _ref2;
+ _ref = this._registered_combos;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ combo = _ref[_i];
+ if (!combo.is_sequence) {
+ continue;
+ }
+ for (j = _j = 1, _ref1 = this._sequence.length; 1 <= _ref1 ? _j <= _ref1 : _j >= _ref1; j = 1 <= _ref1 ? ++_j : --_j) {
+ sequence = (_filter_array(this._sequence, function(seq_key) {
+ if (__indexOf.call(combo.keys, "shift") >= 0) {
+ return true;
+ }
+ return seq_key !== "shift";
+ })).slice(-j);
+ if (combo.keys.length !== sequence.length) {
+ continue;
+ }
+ for (i = _k = 0, _ref2 = sequence.length; 0 <= _ref2 ? _k < _ref2 : _k > _ref2; i = 0 <= _ref2 ? ++_k : --_k) {
+ seq_key = sequence[i];
+ if (__indexOf.call(combo.keys, "shift") < 0) {
+ if (seq_key === "shift") {
+ continue;
+ }
+ }
+ if (key === "shift" && __indexOf.call(combo.keys, "shift") < 0) {
+ continue;
+ }
+ if (combo.keys[i] === seq_key) {
+ match = true;
+ } else {
+ match = false;
+ break;
+ }
+ }
+ }
+ if (match) {
+ return combo;
+ }
+ }
+ return false;
+ };
+
+ Listener.prototype._receive_input = function(e, is_keydown) {
+ var key;
+ if (this._prevent_capture) {
+ if (this._keys_down.length) {
+ this._keys_down = [];
+ }
+ return;
+ }
+ key = _convert_key_to_readable(e.keyCode);
+ if (!is_keydown && !this._keys_down.length && (key === "alt" || key === _metakey)) {
+ return;
+ }
+ if (!key) {
+ return;
+ }
+ if (is_keydown) {
+ return this._key_down(key, e);
+ } else {
+ return this._key_up(key, e);
+ }
+ };
+
+ Listener.prototype._fire = function(event, combo, key_event, is_autorepeat) {
+ if (typeof combo["on_" + event] === "function") {
+ this._prevent_default(key_event, combo["on_" + event].call(combo["this"], key_event, combo.count, is_autorepeat) !== true);
+ }
+ if (event === "release") {
+ combo.count = 0;
+ }
+ if (event === "keyup") {
+ return combo.keyup_fired = true;
+ }
+ };
+
+ Listener.prototype._match_combo_arrays = function(potential_match, match_handler) {
+ var source_combo, _i, _len, _ref;
+ _ref = this._registered_combos;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ source_combo = _ref[_i];
+ if ((!source_combo.is_unordered && _compare_arrays_sorted(potential_match, source_combo.keys)) || (source_combo.is_unordered && _compare_arrays(potential_match, source_combo.keys))) {
+ match_handler(source_combo);
+ }
+ }
+ };
+
+ Listener.prototype._fuzzy_match_combo_arrays = function(potential_match, match_handler) {
+ var source_combo, _i, _len, _ref;
+ _ref = this._registered_combos;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ source_combo = _ref[_i];
+ if ((!source_combo.is_unordered && _is_array_in_array_sorted(source_combo.keys, potential_match)) || (source_combo.is_unordered && _is_array_in_array(source_combo.keys, potential_match))) {
+ match_handler(source_combo);
+ }
+ }
+ };
+
+ Listener.prototype._keys_remain = function(combo) {
+ var key, keys_remain, _i, _len, _ref;
+ _ref = combo.keys;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ key = _ref[_i];
+ if (__indexOf.call(this._keys_down, key) >= 0) {
+ keys_remain = true;
+ break;
+ }
+ }
+ return keys_remain;
+ };
+
+ Listener.prototype._key_down = function(key, e) {
+ var combo, combos, event_mod, i, mod, potential, potential_combos, sequence_combo, shifted_key, _i, _j, _k, _len, _len1, _ref;
+ shifted_key = _convert_to_shifted_key(key, e);
+ if (shifted_key) {
+ key = shifted_key;
+ }
+ this._add_key_to_sequence(key, e);
+ sequence_combo = this._get_sequence(key);
+ if (sequence_combo) {
+ this._fire("keydown", sequence_combo, e);
+ }
+ for (mod in _modifier_event_mapping) {
+ event_mod = _modifier_event_mapping[mod];
+ if (!e[event_mod]) {
+ continue;
+ }
+ if (mod === key || __indexOf.call(this._keys_down, mod) >= 0) {
+ continue;
+ }
+ this._keys_down.push(mod);
+ }
+ for (mod in _modifier_event_mapping) {
+ event_mod = _modifier_event_mapping[mod];
+ if (mod === key) {
+ continue;
+ }
+ if (__indexOf.call(this._keys_down, mod) >= 0 && !e[event_mod]) {
+ if (mod === "cmd" && _metakey !== "cmd") {
+ continue;
+ }
+ for (i = _i = 0, _ref = this._keys_down.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
+ if (this._keys_down[i] === mod) {
+ this._keys_down.splice(i, 1);
+ }
+ }
+ }
+ }
+ combos = this._get_active_combos(key);
+ potential_combos = this._get_potential_combos(key);
+ for (_j = 0, _len = combos.length; _j < _len; _j++) {
+ combo = combos[_j];
+ this._handle_combo_down(combo, potential_combos, key, e);
+ }
+ if (potential_combos.length) {
+ for (_k = 0, _len1 = potential_combos.length; _k < _len1; _k++) {
+ potential = potential_combos[_k];
+ this._prevent_default(e, potential.prevent_default);
+ }
+ }
+ if (__indexOf.call(this._keys_down, key) < 0) {
+ this._keys_down.push(key);
+ }
+ };
+
+ Listener.prototype._handle_combo_down = function(combo, potential_combos, key, e) {
+ var is_autorepeat, is_other_exclusive, potential_combo, result, _i, _len;
+ if (__indexOf.call(combo.keys, key) < 0) {
+ return false;
+ }
+ this._prevent_default(e, combo && combo.prevent_default);
+ is_autorepeat = false;
+ if (__indexOf.call(this._keys_down, key) >= 0) {
+ is_autorepeat = true;
+ if (!combo.allows_key_repeat()) {
+ return false;
+ }
+ }
+ result = this._add_to_active_combos(combo, key);
+ combo.keyup_fired = false;
+ is_other_exclusive = false;
+ if (combo.is_exclusive) {
+ for (_i = 0, _len = potential_combos.length; _i < _len; _i++) {
+ potential_combo = potential_combos[_i];
+ if (potential_combo.is_exclusive && potential_combo.keys.length > combo.keys.length) {
+ is_other_exclusive = true;
+ break;
+ }
+ }
+ }
+ if (!is_other_exclusive) {
+ if (combo.is_counting && typeof combo.on_keydown === "function") {
+ combo.count += 1;
+ }
+ if (result) {
+ return this._fire("keydown", combo, e, is_autorepeat);
+ }
+ }
+ };
+
+ Listener.prototype._key_up = function(key, e) {
+ var active_combo, active_combos_length, combo, combos, i, sequence_combo, shifted_key, unshifted_key, _i, _j, _k, _l, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3;
+ unshifted_key = key;
+ shifted_key = _convert_to_shifted_key(key, e);
+ if (shifted_key) {
+ key = shifted_key;
+ }
+ shifted_key = _keycode_shifted_keys[unshifted_key];
+ if (e.shiftKey) {
+ if (!(shifted_key && __indexOf.call(this._keys_down, shifted_key) >= 0)) {
+ key = unshifted_key;
+ }
+ } else {
+ if (!(unshifted_key && __indexOf.call(this._keys_down, unshifted_key) >= 0)) {
+ key = shifted_key;
+ }
+ }
+ sequence_combo = this._get_sequence(key);
+ if (sequence_combo) {
+ this._fire("keyup", sequence_combo, e);
+ }
+ if (__indexOf.call(this._keys_down, key) < 0) {
+ return false;
+ }
+ for (i = _i = 0, _ref = this._keys_down.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
+ if ((_ref1 = this._keys_down[i]) === key || _ref1 === shifted_key || _ref1 === unshifted_key) {
+ this._keys_down.splice(i, 1);
+ break;
+ }
+ }
+ active_combos_length = this._active_combos.length;
+ combos = [];
+ _ref2 = this._active_combos;
+ for (_j = 0, _len = _ref2.length; _j < _len; _j++) {
+ active_combo = _ref2[_j];
+ if (__indexOf.call(active_combo.keys, key) >= 0) {
+ combos.push(active_combo);
+ }
+ }
+ for (_k = 0, _len1 = combos.length; _k < _len1; _k++) {
+ combo = combos[_k];
+ this._handle_combo_up(combo, e, key);
+ }
+ if (active_combos_length > 1) {
+ _ref3 = this._active_combos;
+ for (_l = 0, _len2 = _ref3.length; _l < _len2; _l++) {
+ active_combo = _ref3[_l];
+ if (active_combo === void 0 || __indexOf.call(combos, active_combo) >= 0) {
+ continue;
+ }
+ if (!this._keys_remain(active_combo)) {
+ this._remove_from_active_combos(active_combo);
+ }
+ }
+ }
+ };
+
+ Listener.prototype._handle_combo_up = function(combo, e, key) {
+ var keys_down, keys_remaining;
+ this._prevent_default(e, combo && combo.prevent_default);
+ keys_remaining = this._keys_remain(combo);
+ if (!combo.keyup_fired) {
+ keys_down = this._keys_down.slice();
+ keys_down.push(key);
+ if (!combo.is_solitary || _compare_arrays(keys_down, combo.keys)) {
+ this._fire("keyup", combo, e);
+ if (combo.is_counting && typeof combo.on_keyup === "function" && typeof combo.on_keydown !== "function") {
+ combo.count += 1;
+ }
+ }
+ }
+ if (!keys_remaining) {
+ this._fire("release", combo, e);
+ this._remove_from_active_combos(combo);
+ }
+ };
+
+ Listener.prototype.simple_combo = function(keys, callback) {
+ return this.register_combo({
+ keys: keys,
+ on_keydown: callback
+ });
+ };
+
+ Listener.prototype.counting_combo = function(keys, count_callback) {
+ return this.register_combo({
+ keys: keys,
+ is_counting: true,
+ is_unordered: false,
+ on_keydown: count_callback
+ });
+ };
+
+ Listener.prototype.sequence_combo = function(keys, callback) {
+ return this.register_combo({
+ keys: keys,
+ on_keydown: callback,
+ is_sequence: true
+ });
+ };
+
+ Listener.prototype.register_combo = function(combo_dictionary) {
+ var combo, property, value, _ref;
+ if (typeof combo_dictionary["keys"] === "string") {
+ combo_dictionary["keys"] = combo_dictionary["keys"].split(" ");
+ }
+ _ref = this._defaults;
+ for (property in _ref) {
+ if (!__hasProp.call(_ref, property)) continue;
+ value = _ref[property];
+ if (combo_dictionary[property] === void 0) {
+ combo_dictionary[property] = value;
+ }
+ }
+ combo = new Combo(combo_dictionary);
+ if (_validate_combo(combo)) {
+ this._registered_combos.push(combo);
+ return combo;
+ }
+ };
+
+ Listener.prototype.register_many = function(combo_array) {
+ var combo, _i, _len, _results;
+ _results = [];
+ for (_i = 0, _len = combo_array.length; _i < _len; _i++) {
+ combo = combo_array[_i];
+ _results.push(this.register_combo(combo));
+ }
+ return _results;
+ };
+
+ Listener.prototype.unregister_combo = function(keys_or_combo) {
+ var combo, unregister_combo, _i, _len, _ref, _results;
+ if (!keys_or_combo) {
+ return false;
+ }
+ unregister_combo = (function(_this) {
+ return function(combo) {
+ var i, _i, _ref, _results;
+ _results = [];
+ for (i = _i = 0, _ref = _this._registered_combos.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
+ if (combo === _this._registered_combos[i]) {
+ _this._registered_combos.splice(i, 1);
+ break;
+ } else {
+ _results.push(void 0);
+ }
+ }
+ return _results;
+ };
+ })(this);
+ if (keys_or_combo instanceof Combo) {
+ return unregister_combo(keys_or_combo);
+ } else {
+ if (typeof keys_or_combo === "string") {
+ keys_or_combo = keys_or_combo.split(" ");
+ }
+ _ref = this._registered_combos;
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ combo = _ref[_i];
+ if (combo == null) {
+ continue;
+ }
+ if ((combo.is_unordered && _compare_arrays(keys_or_combo, combo.keys)) || (!combo.is_unordered && _compare_arrays_sorted(keys_or_combo, combo.keys))) {
+ _results.push(unregister_combo(combo));
+ } else {
+ _results.push(void 0);
+ }
+ }
+ return _results;
+ }
+ };
+
+ Listener.prototype.unregister_many = function(combo_array) {
+ var combo, _i, _len, _results;
+ _results = [];
+ for (_i = 0, _len = combo_array.length; _i < _len; _i++) {
+ combo = combo_array[_i];
+ _results.push(this.unregister_combo(combo));
+ }
+ return _results;
+ };
+
+ Listener.prototype.get_registered_combos = function() {
+ return this._registered_combos;
+ };
+
+ Listener.prototype.reset = function() {
+ return this._registered_combos = [];
+ };
+
+ Listener.prototype.listen = function() {
+ return this._prevent_capture = false;
+ };
+
+ Listener.prototype.stop_listening = function() {
+ return this._prevent_capture = true;
+ };
+
+ Listener.prototype.get_meta_key = function() {
+ return _metakey;
+ };
+
+ return Listener;
+
+ })();
+
+ _decide_meta_key = function() {
+ if (navigator.userAgent.indexOf("Mac OS X") !== -1) {
+ _metakey = "cmd";
+ }
+ };
+
+ _change_keycodes_by_browser = function() {
+ if (navigator.userAgent.indexOf("Opera") !== -1) {
+ _keycode_dictionary["17"] = "cmd";
+ }
+ };
+
+ _convert_key_to_readable = function(k) {
+ return _keycode_dictionary[k];
+ };
+
+ _filter_array = function(array, callback) {
+ var element;
+ if (array.filter) {
+ return array.filter(callback);
+ } else {
+ return (function() {
+ var _i, _len, _results;
+ _results = [];
+ for (_i = 0, _len = array.length; _i < _len; _i++) {
+ element = array[_i];
+ if (callback(element)) {
+ _results.push(element);
+ }
+ }
+ return _results;
+ })();
+ }
+ };
+
+ _compare_arrays = function(a1, a2) {
+ var item, _i, _len;
+ if (a1.length !== a2.length) {
+ return false;
+ }
+ for (_i = 0, _len = a1.length; _i < _len; _i++) {
+ item = a1[_i];
+ if (__indexOf.call(a2, item) >= 0) {
+ continue;
+ }
+ return false;
+ }
+ return true;
+ };
+
+ _compare_arrays_sorted = function(a1, a2) {
+ var i, _i, _ref;
+ if (a1.length !== a2.length) {
+ return false;
+ }
+ for (i = _i = 0, _ref = a1.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
+ if (a1[i] !== a2[i]) {
+ return false;
+ }
+ }
+ return true;
+ };
+
+ _is_array_in_array = function(a1, a2) {
+ var item, _i, _len;
+ for (_i = 0, _len = a1.length; _i < _len; _i++) {
+ item = a1[_i];
+ if (__indexOf.call(a2, item) < 0) {
+ return false;
+ }
+ }
+ return true;
+ };
+
+ _index_of_in_array = Array.prototype.indexOf || function(a, item) {
+ var i, _i, _ref;
+ for (i = _i = 0, _ref = a.length; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {
+ if (a[i] === item) {
+ return i;
+ }
+ }
+ return -1;
+ };
+
+ _is_array_in_array_sorted = function(a1, a2) {
+ var index, item, prev, _i, _len;
+ prev = 0;
+ for (_i = 0, _len = a1.length; _i < _len; _i++) {
+ item = a1[_i];
+ index = _index_of_in_array.call(a2, item);
+ if (index >= prev) {
+ prev = index;
+ } else {
+ return false;
+ }
+ }
+ return true;
+ };
+
+ _log_error = function() {
+ if (keypress.debug) {
+ return console.log.apply(console, arguments);
+ }
+ };
+
+ _key_is_valid = function(key) {
+ var valid, valid_key, _;
+ valid = false;
+ for (_ in _keycode_dictionary) {
+ valid_key = _keycode_dictionary[_];
+ if (key === valid_key) {
+ valid = true;
+ break;
+ }
+ }
+ if (!valid) {
+ for (_ in _keycode_shifted_keys) {
+ valid_key = _keycode_shifted_keys[_];
+ if (key === valid_key) {
+ valid = true;
+ break;
+ }
+ }
+ }
+ return valid;
+ };
+
+ _validate_combo = function(combo) {
+ var alt_name, i, key, mod_key, non_modifier_keys, property, validated, value, _i, _j, _k, _len, _len1, _ref, _ref1;
+ validated = true;
+ if (!combo.keys.length) {
+ _log_error("You're trying to bind a combo with no keys:", combo);
+ }
+ for (i = _i = 0, _ref = combo.keys.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
+ key = combo.keys[i];
+ alt_name = _keycode_alternate_names[key];
+ if (alt_name) {
+ key = combo.keys[i] = alt_name;
+ }
+ if (key === "meta") {
+ combo.keys.splice(i, 1, _metakey);
+ }
+ if (key === "cmd") {
+ _log_error("Warning: use the \"meta\" key rather than \"cmd\" for Windows compatibility");
+ }
+ }
+ _ref1 = combo.keys;
+ for (_j = 0, _len = _ref1.length; _j < _len; _j++) {
+ key = _ref1[_j];
+ if (!_key_is_valid(key)) {
+ _log_error("Do not recognize the key \"" + key + "\"");
+ validated = false;
+ }
+ }
+ if (__indexOf.call(combo.keys, "meta") >= 0 || __indexOf.call(combo.keys, "cmd") >= 0) {
+ non_modifier_keys = combo.keys.slice();
+ for (_k = 0, _len1 = _modifier_keys.length; _k < _len1; _k++) {
+ mod_key = _modifier_keys[_k];
+ if ((i = _index_of_in_array.call(non_modifier_keys, mod_key)) > -1) {
+ non_modifier_keys.splice(i, 1);
+ }
+ }
+ if (non_modifier_keys.length > 1) {
+ _log_error("META and CMD key combos cannot have more than 1 non-modifier keys", combo, non_modifier_keys);
+ validated = false;
+ }
+ }
+ for (property in combo) {
+ value = combo[property];
+ if (_factory_defaults[property] === "undefined") {
+ _log_error("The property " + property + " is not a valid combo property. Your combo has still been registered.");
+ }
+ }
+ return validated;
+ };
+
+ _convert_to_shifted_key = function(key, e) {
+ var k;
+ if (!e.shiftKey) {
+ return false;
+ }
+ k = _keycode_shifted_keys[key];
+ if (k != null) {
+ return k;
+ }
+ return false;
+ };
+
+ _modifier_event_mapping = {
+ "cmd": "metaKey",
+ "ctrl": "ctrlKey",
+ "shift": "shiftKey",
+ "alt": "altKey"
+ };
+
+ _keycode_alternate_names = {
+ "escape": "esc",
+ "control": "ctrl",
+ "command": "cmd",
+ "break": "pause",
+ "windows": "cmd",
+ "option": "alt",
+ "caps_lock": "caps",
+ "apostrophe": "\'",
+ "semicolon": ";",
+ "tilde": "~",
+ "accent": "`",
+ "scroll_lock": "scroll",
+ "num_lock": "num"
+ };
+
+ _keycode_shifted_keys = {
+ "/": "?",
+ ".": ">",
+ ",": "<",
+ "\'": "\"",
+ ";": ":",
+ "[": "{",
+ "]": "}",
+ "\\": "|",
+ "`": "~",
+ "=": "+",
+ "-": "_",
+ "1": "!",
+ "2": "@",
+ "3": "#",
+ "4": "$",
+ "5": "%",
+ "6": "^",
+ "7": "&",
+ "8": "*",
+ "9": "(",
+ "0": ")"
+ };
+
+ _keycode_dictionary = {
+ 0: "\\",
+ 8: "backspace",
+ 9: "tab",
+ 12: "num",
+ 13: "enter",
+ 16: "shift",
+ 17: "ctrl",
+ 18: "alt",
+ 19: "pause",
+ 20: "caps",
+ 27: "esc",
+ 32: "space",
+ 33: "pageup",
+ 34: "pagedown",
+ 35: "end",
+ 36: "home",
+ 37: "left",
+ 38: "up",
+ 39: "right",
+ 40: "down",
+ 44: "print",
+ 45: "insert",
+ 46: "delete",
+ 48: "0",
+ 49: "1",
+ 50: "2",
+ 51: "3",
+ 52: "4",
+ 53: "5",
+ 54: "6",
+ 55: "7",
+ 56: "8",
+ 57: "9",
+ 65: "a",
+ 66: "b",
+ 67: "c",
+ 68: "d",
+ 69: "e",
+ 70: "f",
+ 71: "g",
+ 72: "h",
+ 73: "i",
+ 74: "j",
+ 75: "k",
+ 76: "l",
+ 77: "m",
+ 78: "n",
+ 79: "o",
+ 80: "p",
+ 81: "q",
+ 82: "r",
+ 83: "s",
+ 84: "t",
+ 85: "u",
+ 86: "v",
+ 87: "w",
+ 88: "x",
+ 89: "y",
+ 90: "z",
+ 91: "cmd",
+ 92: "cmd",
+ 93: "cmd",
+ 96: "num_0",
+ 97: "num_1",
+ 98: "num_2",
+ 99: "num_3",
+ 100: "num_4",
+ 101: "num_5",
+ 102: "num_6",
+ 103: "num_7",
+ 104: "num_8",
+ 105: "num_9",
+ 106: "num_multiply",
+ 107: "num_add",
+ 108: "num_enter",
+ 109: "num_subtract",
+ 110: "num_decimal",
+ 111: "num_divide",
+ 112: "f1",
+ 113: "f2",
+ 114: "f3",
+ 115: "f4",
+ 116: "f5",
+ 117: "f6",
+ 118: "f7",
+ 119: "f8",
+ 120: "f9",
+ 121: "f10",
+ 122: "f11",
+ 123: "f12",
+ 124: "print",
+ 144: "num",
+ 145: "scroll",
+ 186: ";",
+ 187: "=",
+ 188: ",",
+ 189: "-",
+ 190: ".",
+ 191: "/",
+ 192: "`",
+ 219: "[",
+ 220: "\\",
+ 221: "]",
+ 222: "\'",
+ 223: "`",
+ 224: "cmd",
+ 225: "alt",
+ 57392: "ctrl",
+ 63289: "num",
+ 59: ";",
+ 61: "-",
+ 173: "="
+ };
+
+ keypress._keycode_dictionary = _keycode_dictionary;
+
+ keypress._is_array_in_array_sorted = _is_array_in_array_sorted;
+
+ _decide_meta_key();
+
+ _change_keycodes_by_browser();
+
+ if (typeof define === "function" && define.amd) {
+ define([], function() {
+ return keypress;
+ });
+ } else if (typeof exports !== "undefined" && exports !== null) {
+ exports.keypress = keypress;
+ } else {
+ window.keypress = keypress;
+ }
+
+}).call(this);
diff --git a/frontend/imlandscape/js/pb.js b/frontend/imlandscape/js/pb.js
new file mode 100644
index 0000000..46c0bd6
--- /dev/null
+++ b/frontend/imlandscape/js/pb.js
@@ -0,0 +1,71 @@
+var loadUrl = '/img/load';
+var saveUrl = '/cgi-bin/im/landscape';
+var textureURL, heightmapURL;
+function saveScene(){
+ if (!renderer) {
+ alert("WebGL Rendering was not started yet!");
+ } else {
+ // Prepare data
+ var imageData = renderer.domElement.toDataURL("image/png");
+ //Remove header
+ var seconds = new Date() / 1000;
+ seconds = seconds.toFixed(0);
+ var userName = $("#username").val()
+ update_username(userName);
+ var filename;
+ if (!userName) {
+ filename = seconds + "_imlandscape";
+ } else {
+ filename = seconds + "_imglandscape_" + userName;
+ }
+ filename += ".png";
+ is_generating = true;
+ toggle_background();
+ // Send post request
+ $.post(
+ saveUrl,
+ {
+ name: $("#username").val(), //FIXME
+ imgdata: imageData,
+ texture: $("#texture").val(),
+ heightmap: $("#heightmap").val(),
+ },
+ function(response) {
+ console.log(response);
+ is_generating = false;
+ toggle_background();
+ resp = response.split("\n");
+ url = resp[3]
+ loadUrlResult(resp[3])
+ }
+ );
+ }
+}
+
+function loadUrlResult(url){
+ $(".url_result").show();
+ url_shortened = "...."+ url.slice(url.length-10);
+
+ $("a.url_result").attr("href", url);
+ $("a.url_result").html(url_shortened);
+
+};
+function loadNew() {
+ //Get values for url
+ textureURL = document.getElementById("texture").value.replace(/\s/,"");
+ heightmapURL = document.getElementById("heightmap").value.replace(/\s/,"");
+
+ is_generating = true;
+ toggle_background();
+ console.log(textureURL);
+ console.log(heightmapURL);
+ stop_animating();
+ var new_texture = '/cgi-bin/proxy?'+textureURL;
+ var new_heightmap = '/cgi-bin/proxy?'+heightmapURL;
+ initGraphics(new_texture, new_heightmap, function(){ animate() } );
+}
+
+function isUrl(s) {
+ var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?\.(jpg|JPG|jpeg|JPEG)/;
+ return regexp.test(s);
+}
diff --git a/frontend/imlandscape/js/username.js b/frontend/imlandscape/js/username.js
new file mode 100644
index 0000000..eb89ed0
--- /dev/null
+++ b/frontend/imlandscape/js/username.js
@@ -0,0 +1,30 @@
+$(document).ready(function(){
+ var name = get_name_from_cookie()
+ $("#username").val(name)
+});
+
+function get_name_from_cookie()
+ {
+ if (document.cookie)
+ {
+ var cookies = document.cookie.split(";")
+ for (i in cookies)
+ {
+ var cookie = cookies[i].split("=")
+ if (cookie[0].indexOf("imname") !== -1)
+ {
+ if (cookie[1] !== 'false' && cookie[1] !== 'undefined' && cookie[1].length)
+ {
+ return cookie[1]
+ }
+ }
+ }
+ }
+ return ""
+};
+
+function update_username(username){
+ if (username.length > 0){
+ document.cookie = "imname="+username+";path=/;domain=.asdf.us;max-age=1086400"
+ }
+}
diff --git a/frontend/imlandscape/simple_proxy.py b/frontend/imlandscape/simple_proxy.py
new file mode 100644
index 0000000..cde43e8
--- /dev/null
+++ b/frontend/imlandscape/simple_proxy.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python3
+import http.server
+import urllib.request
+import re
+import sys
+
+class MyHTTPRequestHandler(http.server.CGIHTTPRequestHandler ):
+ def end_headers(self):
+ self.send_my_headers()
+
+ http.server.CGIHTTPRequestHandler .end_headers(self)
+
+ def send_my_headers(self):
+ self.send_header("Access-Control-Allow-Origin", "*")
+
+ def do_GET(self):
+ if self.path[0:14] == "/cgi-bin/proxy":
+ sys.stderr.write(self.path[15:]);
+ self.copyfile(urllib.request.urlopen(self.path[15:]), self.wfile)
+ super().do_GET();
+ else:
+ super().do_GET()
+
+ def do_POST(self):
+ super().do_POST();
+
+if __name__ == '__main__':
+ http.server.test(port=8181, HandlerClass=MyHTTPRequestHandler)
+
diff --git a/frontend/impattern/app.pl b/frontend/impattern/app.pl
new file mode 100644
index 0000000..b1bfc3c
--- /dev/null
+++ b/frontend/impattern/app.pl
@@ -0,0 +1,34 @@
+#!/usr/bin/env perl
+use Dancer2;
+use Data::Dumper;
+set public => './';
+
+get '/download/*.*' => sub {
+ my ($file, $ext) = splat;
+ # do something with $file.$ext here
+};
+
+get qr{/img/([\w\.\-_]+)} => sub {
+ my ($filename) = splat;
+ send_file sprintf("/img/%s", $filename);
+};
+get qr{/patterns/([\w\.\-_]+)} => sub {
+ my ($filename) = splat;
+ send_file sprintf("/patterns/%s", $filename);
+};
+get qr{/css/([\w\.\-_]+)} => sub {
+ my ($filename) = splat;
+ send_file sprintf("/css/%s", $filename);
+};
+get qr{/js/([\w\.\-_]+)} => sub {
+ my ($filename) = splat;
+ send_file sprintf("/js/%s", $filename);
+};
+get qr{/fonts/([\w\.\-_]+)} => sub {
+ my ($filename) = splat;
+ send_file sprintf("/fonts/%s", $filename);
+};
+get '/' => sub {
+ send_file ("index.html");
+};
+dance;
diff --git a/frontend/impattern/css/main.css b/frontend/impattern/css/main.css
new file mode 100644
index 0000000..de2a782
--- /dev/null
+++ b/frontend/impattern/css/main.css
@@ -0,0 +1,101 @@
+html,body{
+ min-height: 100%;
+}
+body{
+padding-top:5px;
+font-family: 'Roboto', sans-serif;
+ position: relative;
+}
+.title{
+ font-family: 'Orienta', sans-serif;
+ font-size:3em;
+ text-shadow: 2px 4px 3px rgba(153,153,153,0.3);
+ color: #1C1C1C;
+}
+#impattern{
+ text-align:center;
+ display:inline-block;
+}
+#submit_wrapper{
+ padding-top:30px;
+}
+
+#choose_your_image{
+ margin-left: -10px;
+ margin-bottom: 15px;
+}
+.image_input{
+ min-width:300px;
+
+}
+
+#submit{
+ font-size:30px;
+
+}
+
+#sample
+ {
+ display:inline-block;
+ border-style: outset;
+ border-color: gray;
+ border-width: 5px;
+ height:100px;
+ }
+table.dithertable {
+ border-width: 5px;
+ border-spacing: 3px;
+ border-style: outset;
+ border-color: gray;
+ border-collapse: separate;
+ background-color: whitesmoke;
+}
+table.dithertable th {
+ border-width: medium;
+ padding: 2px;
+ border-style: ridge;
+ border-color: gray;
+ background-color: rgb(255, 255, 240);
+ -moz-border-radius: ;
+}
+table.dithertable td {
+ border-width: 3px;
+ padding: 2px;
+ border-style: ridge;
+ border-color: gray;
+ background-color: rgb(255, 255, 240);
+// -moz-border-radius: ;
+ background-color:white;
+}
+.patterns
+ {
+ width:10px;
+ height:10px;
+//border-color:#99aacc; border-style:ridge;
+//border-width:3px 3px 6px 3px;
+ cursor:pointer;
+ }
+#dithertable
+ {
+ width:100%;
+ display:inline-block;
+ }
+tr
+ {
+ height:40px;
+ }
+.dontshowme{
+ display: none;
+}
+#acknowledgments{
+ position: absolute;
+ font-size: 10px;
+ float: right;
+ bottom:1%;
+}
+#acknowledgments > a{
+ color: gray;
+}
+#acknowledgments > a:active{
+ color: gray;
+}
diff --git a/frontend/impattern/css/normalize.css b/frontend/impattern/css/normalize.css
new file mode 100644
index 0000000..458eea1
--- /dev/null
+++ b/frontend/impattern/css/normalize.css
@@ -0,0 +1,427 @@
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ * user zoom.
+ */
+
+html {
+ font-family: sans-serif; /* 1 */
+ -ms-text-size-adjust: 100%; /* 2 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+ margin: 0;
+}
+
+/* HTML5 display definitions
+ ========================================================================== */
+
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block; /* 1 */
+ vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
+ */
+
+[hidden],
+template {
+ display: none;
+}
+
+/* Links
+ ========================================================================== */
+
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+
+b,
+strong {
+ font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+
+img {
+ border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+
+figure {
+ margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+}
+
+/**
+ * Contain overflow in all browsers.
+ */
+
+pre {
+ overflow: auto;
+}
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+
+/**
+ * 1. Correct color not being inherited.
+ * Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit; /* 1 */
+ font: inherit; /* 2 */
+ margin: 0; /* 3 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+
+button {
+ overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+
+button,
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+ cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+input {
+ line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
+ * (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box; /* 2 */
+ box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+ border: 0; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+
+optgroup {
+ font-weight: bold;
+}
+
+/* Tables
+ ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+td,
+th {
+ padding: 0;
+}
diff --git a/frontend/impattern/css/overlay.css b/frontend/impattern/css/overlay.css
new file mode 100644
index 0000000..796ad62
--- /dev/null
+++ b/frontend/impattern/css/overlay.css
@@ -0,0 +1,43 @@
+#draw_protector{
+ height: 100%;
+ width: 100%;
+ position:absolute;
+ top: 0;
+ left: 0;
+ z-index:101;
+ display: none;
+}
+#overlay{
+ position:absolute;
+ height:100%;
+ width:100%;
+ top:0;
+ left:0;
+ background: rgba(245,245,245,0.8);
+ z-index: 100;
+ display: none;
+}
+#overlay > .close{
+ position: absolute;
+ padding: 10px;
+ top: 10px;
+ left: 10px;
+ border: 1px solid gray;
+ background: white;
+ cursor: pointer;
+ z-index: 102;
+}
+#final-image > img{
+ max-width:550px;
+ max-height:550px;
+}
+#overlay > .content{
+ top: 10px;
+ left: 150px;
+ padding: 10px;
+ border: 1px solid gray;
+ background: white;
+ position: absolute;
+ z-index: 102;
+}
+
diff --git a/frontend/impattern/css/result.css b/frontend/impattern/css/result.css
new file mode 100644
index 0000000..00567aa
--- /dev/null
+++ b/frontend/impattern/css/result.css
@@ -0,0 +1,3 @@
+#links > input{
+ width:100%;
+}
diff --git a/frontend/impattern/css/sketch.css b/frontend/impattern/css/sketch.css
new file mode 100644
index 0000000..84c00a0
--- /dev/null
+++ b/frontend/impattern/css/sketch.css
@@ -0,0 +1,45 @@
+#draw{
+ display:none;
+}
+
+#canvas_wrapper{
+// position:absolute;
+ display: inline-block;
+white-space: no-wrap;
+word-wrap: break-word;
+-webkit-user-select: none;
+-moz-user-select: none;
+user-select: none;
+// pointer-events: none;
+
+}
+.canvas_cell{
+ border: 1px solid silver;
+ display: inline-block;
+ width: 1em;
+ height: 1em;
+}
+.canvas_row{
+// position: absolute;
+}
+
+.brush_tools{
+ margin:5px;
+ padding:5px;
+ display: inline-block;
+ background: whitesmoke;
+ border: 1px solid gray;
+ cursor: pointer;
+}
+#drawing_finished{
+ padding:5px;
+ margin-top:10px;
+ text-transform:bold;
+ display:block;
+ width:100%;
+}
+#brush{
+ background:gray;
+ color: white;
+ border: 1px solid black;
+}
diff --git a/frontend/impattern/css/unsemantic-grid-responsive.css b/frontend/impattern/css/unsemantic-grid-responsive.css
new file mode 100644
index 0000000..929efe7
--- /dev/null
+++ b/frontend/impattern/css/unsemantic-grid-responsive.css
@@ -0,0 +1,1403 @@
+/* ============================================ */
+/* This file has a mobile-to-desktop breakpoint */
+/* ============================================ */
+@media (max-width: 400px) {
+ @-ms-viewport {
+ width: 320px;
+ }
+}
+.clear {
+ clear: both;
+ display: block;
+ overflow: hidden;
+ visibility: hidden;
+ width: 0;
+ height: 0;
+}
+
+.grid-container:before, .grid-5:before, .mobile-grid-5:before, .grid-10:before, .mobile-grid-10:before, .grid-15:before, .mobile-grid-15:before, .grid-20:before, .mobile-grid-20:before, .grid-25:before, .mobile-grid-25:before, .grid-30:before, .mobile-grid-30:before, .grid-35:before, .mobile-grid-35:before, .grid-40:before, .mobile-grid-40:before, .grid-45:before, .mobile-grid-45:before, .grid-50:before, .mobile-grid-50:before, .grid-55:before, .mobile-grid-55:before, .grid-60:before, .mobile-grid-60:before, .grid-65:before, .mobile-grid-65:before, .grid-70:before, .mobile-grid-70:before, .grid-75:before, .mobile-grid-75:before, .grid-80:before, .mobile-grid-80:before, .grid-85:before, .mobile-grid-85:before, .grid-90:before, .mobile-grid-90:before, .grid-95:before, .mobile-grid-95:before, .grid-100:before, .mobile-grid-100:before, .grid-33:before, .mobile-grid-33:before, .grid-66:before, .mobile-grid-66:before, .clearfix:before,
+.grid-container:after,
+.grid-5:after,
+.mobile-grid-5:after,
+.grid-10:after,
+.mobile-grid-10:after,
+.grid-15:after,
+.mobile-grid-15:after,
+.grid-20:after,
+.mobile-grid-20:after,
+.grid-25:after,
+.mobile-grid-25:after,
+.grid-30:after,
+.mobile-grid-30:after,
+.grid-35:after,
+.mobile-grid-35:after,
+.grid-40:after,
+.mobile-grid-40:after,
+.grid-45:after,
+.mobile-grid-45:after,
+.grid-50:after,
+.mobile-grid-50:after,
+.grid-55:after,
+.mobile-grid-55:after,
+.grid-60:after,
+.mobile-grid-60:after,
+.grid-65:after,
+.mobile-grid-65:after,
+.grid-70:after,
+.mobile-grid-70:after,
+.grid-75:after,
+.mobile-grid-75:after,
+.grid-80:after,
+.mobile-grid-80:after,
+.grid-85:after,
+.mobile-grid-85:after,
+.grid-90:after,
+.mobile-grid-90:after,
+.grid-95:after,
+.mobile-grid-95:after,
+.grid-100:after,
+.mobile-grid-100:after,
+.grid-33:after,
+.mobile-grid-33:after,
+.grid-66:after,
+.mobile-grid-66:after,
+.clearfix:after {
+ content: ".";
+ display: block;
+ overflow: hidden;
+ visibility: hidden;
+ font-size: 0;
+ line-height: 0;
+ width: 0;
+ height: 0;
+}
+
+.grid-container:after, .grid-5:after, .mobile-grid-5:after, .grid-10:after, .mobile-grid-10:after, .grid-15:after, .mobile-grid-15:after, .grid-20:after, .mobile-grid-20:after, .grid-25:after, .mobile-grid-25:after, .grid-30:after, .mobile-grid-30:after, .grid-35:after, .mobile-grid-35:after, .grid-40:after, .mobile-grid-40:after, .grid-45:after, .mobile-grid-45:after, .grid-50:after, .mobile-grid-50:after, .grid-55:after, .mobile-grid-55:after, .grid-60:after, .mobile-grid-60:after, .grid-65:after, .mobile-grid-65:after, .grid-70:after, .mobile-grid-70:after, .grid-75:after, .mobile-grid-75:after, .grid-80:after, .mobile-grid-80:after, .grid-85:after, .mobile-grid-85:after, .grid-90:after, .mobile-grid-90:after, .grid-95:after, .mobile-grid-95:after, .grid-100:after, .mobile-grid-100:after, .grid-33:after, .mobile-grid-33:after, .grid-66:after, .mobile-grid-66:after, .clearfix:after {
+ clear: both;
+}
+
+.grid-container, .grid-5, .mobile-grid-5, .grid-10, .mobile-grid-10, .grid-15, .mobile-grid-15, .grid-20, .mobile-grid-20, .grid-25, .mobile-grid-25, .grid-30, .mobile-grid-30, .grid-35, .mobile-grid-35, .grid-40, .mobile-grid-40, .grid-45, .mobile-grid-45, .grid-50, .mobile-grid-50, .grid-55, .mobile-grid-55, .grid-60, .mobile-grid-60, .grid-65, .mobile-grid-65, .grid-70, .mobile-grid-70, .grid-75, .mobile-grid-75, .grid-80, .mobile-grid-80, .grid-85, .mobile-grid-85, .grid-90, .mobile-grid-90, .grid-95, .mobile-grid-95, .grid-100, .mobile-grid-100, .grid-33, .mobile-grid-33, .grid-66, .mobile-grid-66, .clearfix {
+ /* <IE7> */
+ *zoom: 1;
+ /* </IE7> */
+}
+
+.grid-container {
+ margin-left: auto;
+ margin-right: auto;
+ max-width: 1200px;
+ padding-left: 10px;
+ padding-right: 10px;
+}
+
+.grid-5, .mobile-grid-5, .grid-10, .mobile-grid-10, .grid-15, .mobile-grid-15, .grid-20, .mobile-grid-20, .grid-25, .mobile-grid-25, .grid-30, .mobile-grid-30, .grid-35, .mobile-grid-35, .grid-40, .mobile-grid-40, .grid-45, .mobile-grid-45, .grid-50, .mobile-grid-50, .grid-55, .mobile-grid-55, .grid-60, .mobile-grid-60, .grid-65, .mobile-grid-65, .grid-70, .mobile-grid-70, .grid-75, .mobile-grid-75, .grid-80, .mobile-grid-80, .grid-85, .mobile-grid-85, .grid-90, .mobile-grid-90, .grid-95, .mobile-grid-95, .grid-100, .mobile-grid-100, .grid-33, .mobile-grid-33, .grid-66, .mobile-grid-66 {
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding-left: 10px;
+ padding-right: 10px;
+ /* <IE7> */
+ *padding-left: 0;
+ *padding-right: 0;
+ /* </IE7> */
+}
+.grid-5 > *, .mobile-grid-5 > *, .grid-10 > *, .mobile-grid-10 > *, .grid-15 > *, .mobile-grid-15 > *, .grid-20 > *, .mobile-grid-20 > *, .grid-25 > *, .mobile-grid-25 > *, .grid-30 > *, .mobile-grid-30 > *, .grid-35 > *, .mobile-grid-35 > *, .grid-40 > *, .mobile-grid-40 > *, .grid-45 > *, .mobile-grid-45 > *, .grid-50 > *, .mobile-grid-50 > *, .grid-55 > *, .mobile-grid-55 > *, .grid-60 > *, .mobile-grid-60 > *, .grid-65 > *, .mobile-grid-65 > *, .grid-70 > *, .mobile-grid-70 > *, .grid-75 > *, .mobile-grid-75 > *, .grid-80 > *, .mobile-grid-80 > *, .grid-85 > *, .mobile-grid-85 > *, .grid-90 > *, .mobile-grid-90 > *, .grid-95 > *, .mobile-grid-95 > *, .grid-100 > *, .mobile-grid-100 > *, .grid-33 > *, .mobile-grid-33 > *, .grid-66 > *, .mobile-grid-66 > * {
+ /* <IE7> */
+ *margin-left: "expression((!this.className.match(/grid-[1-9]/) && this.currentStyle.display === " block " && this.currentStyle.width === " auto ') && "10px")';
+ *margin-right: "expression((!this.className.match(/grid-[1-9]/) && this.currentStyle.display === " block " && this.currentStyle.width === " auto ') && "10px")';
+ /* </IE7> */
+}
+
+.grid-parent {
+ padding-left: 0;
+ padding-right: 0;
+}
+
+@media (max-width: 767px) {
+ .mobile-push-5, .mobile-pull-5, .mobile-push-10, .mobile-pull-10, .mobile-push-15, .mobile-pull-15, .mobile-push-20, .mobile-pull-20, .mobile-push-25, .mobile-pull-25, .mobile-push-30, .mobile-pull-30, .mobile-push-35, .mobile-pull-35, .mobile-push-40, .mobile-pull-40, .mobile-push-45, .mobile-pull-45, .mobile-push-50, .mobile-pull-50, .mobile-push-55, .mobile-pull-55, .mobile-push-60, .mobile-pull-60, .mobile-push-65, .mobile-pull-65, .mobile-push-70, .mobile-pull-70, .mobile-push-75, .mobile-pull-75, .mobile-push-80, .mobile-pull-80, .mobile-push-85, .mobile-pull-85, .mobile-push-90, .mobile-pull-90, .mobile-push-95, .mobile-pull-95, .mobile-push-33, .mobile-pull-33, .mobile-push-66, .mobile-pull-66 {
+ position: relative;
+ }
+
+ .hide-on-mobile {
+ display: none !important;
+ }
+
+ .mobile-grid-5 {
+ float: left;
+ width: 5%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.05 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-5 {
+ margin-left: 5%;
+ }
+
+ .mobile-suffix-5 {
+ margin-right: 5%;
+ }
+
+ .mobile-push-5 {
+ left: 5%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.05 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-5 {
+ left: -5%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.05 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-10 {
+ float: left;
+ width: 10%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.1 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-10 {
+ margin-left: 10%;
+ }
+
+ .mobile-suffix-10 {
+ margin-right: 10%;
+ }
+
+ .mobile-push-10 {
+ left: 10%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.1 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-10 {
+ left: -10%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.1 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-15 {
+ float: left;
+ width: 15%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.15 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-15 {
+ margin-left: 15%;
+ }
+
+ .mobile-suffix-15 {
+ margin-right: 15%;
+ }
+
+ .mobile-push-15 {
+ left: 15%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.15 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-15 {
+ left: -15%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.15 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-20 {
+ float: left;
+ width: 20%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.2 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-20 {
+ margin-left: 20%;
+ }
+
+ .mobile-suffix-20 {
+ margin-right: 20%;
+ }
+
+ .mobile-push-20 {
+ left: 20%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.2 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-20 {
+ left: -20%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.2 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-25 {
+ float: left;
+ width: 25%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.25 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-25 {
+ margin-left: 25%;
+ }
+
+ .mobile-suffix-25 {
+ margin-right: 25%;
+ }
+
+ .mobile-push-25 {
+ left: 25%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.25 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-25 {
+ left: -25%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.25 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-30 {
+ float: left;
+ width: 30%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.3 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-30 {
+ margin-left: 30%;
+ }
+
+ .mobile-suffix-30 {
+ margin-right: 30%;
+ }
+
+ .mobile-push-30 {
+ left: 30%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.3 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-30 {
+ left: -30%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.3 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-35 {
+ float: left;
+ width: 35%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.35 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-35 {
+ margin-left: 35%;
+ }
+
+ .mobile-suffix-35 {
+ margin-right: 35%;
+ }
+
+ .mobile-push-35 {
+ left: 35%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.35 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-35 {
+ left: -35%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.35 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-40 {
+ float: left;
+ width: 40%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.4 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-40 {
+ margin-left: 40%;
+ }
+
+ .mobile-suffix-40 {
+ margin-right: 40%;
+ }
+
+ .mobile-push-40 {
+ left: 40%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.4 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-40 {
+ left: -40%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.4 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-45 {
+ float: left;
+ width: 45%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.45 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-45 {
+ margin-left: 45%;
+ }
+
+ .mobile-suffix-45 {
+ margin-right: 45%;
+ }
+
+ .mobile-push-45 {
+ left: 45%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.45 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-45 {
+ left: -45%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.45 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-50 {
+ float: left;
+ width: 50%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.5 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-50 {
+ margin-left: 50%;
+ }
+
+ .mobile-suffix-50 {
+ margin-right: 50%;
+ }
+
+ .mobile-push-50 {
+ left: 50%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.5 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-50 {
+ left: -50%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.5 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-55 {
+ float: left;
+ width: 55%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.55 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-55 {
+ margin-left: 55%;
+ }
+
+ .mobile-suffix-55 {
+ margin-right: 55%;
+ }
+
+ .mobile-push-55 {
+ left: 55%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.55 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-55 {
+ left: -55%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.55 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-60 {
+ float: left;
+ width: 60%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.6 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-60 {
+ margin-left: 60%;
+ }
+
+ .mobile-suffix-60 {
+ margin-right: 60%;
+ }
+
+ .mobile-push-60 {
+ left: 60%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.6 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-60 {
+ left: -60%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.6 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-65 {
+ float: left;
+ width: 65%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.65 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-65 {
+ margin-left: 65%;
+ }
+
+ .mobile-suffix-65 {
+ margin-right: 65%;
+ }
+
+ .mobile-push-65 {
+ left: 65%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.65 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-65 {
+ left: -65%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.65 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-70 {
+ float: left;
+ width: 70%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.7 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-70 {
+ margin-left: 70%;
+ }
+
+ .mobile-suffix-70 {
+ margin-right: 70%;
+ }
+
+ .mobile-push-70 {
+ left: 70%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.7 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-70 {
+ left: -70%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.7 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-75 {
+ float: left;
+ width: 75%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.75 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-75 {
+ margin-left: 75%;
+ }
+
+ .mobile-suffix-75 {
+ margin-right: 75%;
+ }
+
+ .mobile-push-75 {
+ left: 75%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.75 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-75 {
+ left: -75%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.75 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-80 {
+ float: left;
+ width: 80%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.8 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-80 {
+ margin-left: 80%;
+ }
+
+ .mobile-suffix-80 {
+ margin-right: 80%;
+ }
+
+ .mobile-push-80 {
+ left: 80%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.8 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-80 {
+ left: -80%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.8 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-85 {
+ float: left;
+ width: 85%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.85 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-85 {
+ margin-left: 85%;
+ }
+
+ .mobile-suffix-85 {
+ margin-right: 85%;
+ }
+
+ .mobile-push-85 {
+ left: 85%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.85 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-85 {
+ left: -85%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.85 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-90 {
+ float: left;
+ width: 90%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.9 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-90 {
+ margin-left: 90%;
+ }
+
+ .mobile-suffix-90 {
+ margin-right: 90%;
+ }
+
+ .mobile-push-90 {
+ left: 90%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.9 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-90 {
+ left: -90%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.9 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-95 {
+ float: left;
+ width: 95%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.95 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-95 {
+ margin-left: 95%;
+ }
+
+ .mobile-suffix-95 {
+ margin-right: 95%;
+ }
+
+ .mobile-push-95 {
+ left: 95%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.95 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-95 {
+ left: -95%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.95 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-33 {
+ float: left;
+ width: 33.33333%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.33333 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-33 {
+ margin-left: 33.33333%;
+ }
+
+ .mobile-suffix-33 {
+ margin-right: 33.33333%;
+ }
+
+ .mobile-push-33 {
+ left: 33.33333%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.33333 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-33 {
+ left: -33.33333%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.33333 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-66 {
+ float: left;
+ width: 66.66667%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.66667 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-prefix-66 {
+ margin-left: 66.66667%;
+ }
+
+ .mobile-suffix-66 {
+ margin-right: 66.66667%;
+ }
+
+ .mobile-push-66 {
+ left: 66.66667%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.66667 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-pull-66 {
+ left: -66.66667%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.66667 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .mobile-grid-100 {
+ clear: both;
+ width: 100%;
+ }
+}
+@media (min-width: 768px) {
+ .push-5, .pull-5, .push-10, .pull-10, .push-15, .pull-15, .push-20, .pull-20, .push-25, .pull-25, .push-30, .pull-30, .push-35, .pull-35, .push-40, .pull-40, .push-45, .pull-45, .push-50, .pull-50, .push-55, .pull-55, .push-60, .pull-60, .push-65, .pull-65, .push-70, .pull-70, .push-75, .pull-75, .push-80, .pull-80, .push-85, .pull-85, .push-90, .pull-90, .push-95, .pull-95, .push-33, .pull-33, .push-66, .pull-66 {
+ position: relative;
+ }
+
+ .hide-on-desktop {
+ display: none !important;
+ }
+
+ .grid-5 {
+ float: left;
+ width: 5%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.05 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-5 {
+ margin-left: 5%;
+ }
+
+ .suffix-5 {
+ margin-right: 5%;
+ }
+
+ .push-5 {
+ left: 5%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.05 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-5 {
+ left: -5%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.05 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-10 {
+ float: left;
+ width: 10%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.1 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-10 {
+ margin-left: 10%;
+ }
+
+ .suffix-10 {
+ margin-right: 10%;
+ }
+
+ .push-10 {
+ left: 10%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.1 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-10 {
+ left: -10%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.1 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-15 {
+ float: left;
+ width: 15%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.15 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-15 {
+ margin-left: 15%;
+ }
+
+ .suffix-15 {
+ margin-right: 15%;
+ }
+
+ .push-15 {
+ left: 15%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.15 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-15 {
+ left: -15%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.15 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-20 {
+ float: left;
+ width: 20%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.2 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-20 {
+ margin-left: 20%;
+ }
+
+ .suffix-20 {
+ margin-right: 20%;
+ }
+
+ .push-20 {
+ left: 20%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.2 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-20 {
+ left: -20%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.2 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-25 {
+ float: left;
+ width: 25%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.25 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-25 {
+ margin-left: 25%;
+ }
+
+ .suffix-25 {
+ margin-right: 25%;
+ }
+
+ .push-25 {
+ left: 25%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.25 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-25 {
+ left: -25%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.25 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-30 {
+ float: left;
+ width: 30%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.3 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-30 {
+ margin-left: 30%;
+ }
+
+ .suffix-30 {
+ margin-right: 30%;
+ }
+
+ .push-30 {
+ left: 30%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.3 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-30 {
+ left: -30%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.3 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-35 {
+ float: left;
+ width: 35%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.35 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-35 {
+ margin-left: 35%;
+ }
+
+ .suffix-35 {
+ margin-right: 35%;
+ }
+
+ .push-35 {
+ left: 35%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.35 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-35 {
+ left: -35%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.35 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-40 {
+ float: left;
+ width: 40%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.4 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-40 {
+ margin-left: 40%;
+ }
+
+ .suffix-40 {
+ margin-right: 40%;
+ }
+
+ .push-40 {
+ left: 40%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.4 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-40 {
+ left: -40%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.4 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-45 {
+ float: left;
+ width: 45%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.45 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-45 {
+ margin-left: 45%;
+ }
+
+ .suffix-45 {
+ margin-right: 45%;
+ }
+
+ .push-45 {
+ left: 45%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.45 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-45 {
+ left: -45%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.45 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-50 {
+ float: left;
+ width: 50%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.5 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-50 {
+ margin-left: 50%;
+ }
+
+ .suffix-50 {
+ margin-right: 50%;
+ }
+
+ .push-50 {
+ left: 50%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.5 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-50 {
+ left: -50%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.5 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-55 {
+ float: left;
+ width: 55%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.55 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-55 {
+ margin-left: 55%;
+ }
+
+ .suffix-55 {
+ margin-right: 55%;
+ }
+
+ .push-55 {
+ left: 55%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.55 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-55 {
+ left: -55%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.55 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-60 {
+ float: left;
+ width: 60%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.6 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-60 {
+ margin-left: 60%;
+ }
+
+ .suffix-60 {
+ margin-right: 60%;
+ }
+
+ .push-60 {
+ left: 60%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.6 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-60 {
+ left: -60%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.6 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-65 {
+ float: left;
+ width: 65%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.65 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-65 {
+ margin-left: 65%;
+ }
+
+ .suffix-65 {
+ margin-right: 65%;
+ }
+
+ .push-65 {
+ left: 65%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.65 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-65 {
+ left: -65%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.65 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-70 {
+ float: left;
+ width: 70%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.7 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-70 {
+ margin-left: 70%;
+ }
+
+ .suffix-70 {
+ margin-right: 70%;
+ }
+
+ .push-70 {
+ left: 70%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.7 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-70 {
+ left: -70%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.7 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-75 {
+ float: left;
+ width: 75%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.75 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-75 {
+ margin-left: 75%;
+ }
+
+ .suffix-75 {
+ margin-right: 75%;
+ }
+
+ .push-75 {
+ left: 75%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.75 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-75 {
+ left: -75%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.75 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-80 {
+ float: left;
+ width: 80%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.8 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-80 {
+ margin-left: 80%;
+ }
+
+ .suffix-80 {
+ margin-right: 80%;
+ }
+
+ .push-80 {
+ left: 80%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.8 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-80 {
+ left: -80%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.8 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-85 {
+ float: left;
+ width: 85%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.85 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-85 {
+ margin-left: 85%;
+ }
+
+ .suffix-85 {
+ margin-right: 85%;
+ }
+
+ .push-85 {
+ left: 85%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.85 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-85 {
+ left: -85%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.85 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-90 {
+ float: left;
+ width: 90%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.9 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-90 {
+ margin-left: 90%;
+ }
+
+ .suffix-90 {
+ margin-right: 90%;
+ }
+
+ .push-90 {
+ left: 90%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.9 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-90 {
+ left: -90%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.9 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-95 {
+ float: left;
+ width: 95%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.95 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-95 {
+ margin-left: 95%;
+ }
+
+ .suffix-95 {
+ margin-right: 95%;
+ }
+
+ .push-95 {
+ left: 95%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.95 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-95 {
+ left: -95%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.95 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-33 {
+ float: left;
+ width: 33.33333%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.33333 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-33 {
+ margin-left: 33.33333%;
+ }
+
+ .suffix-33 {
+ margin-right: 33.33333%;
+ }
+
+ .push-33 {
+ left: 33.33333%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.33333 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-33 {
+ left: -33.33333%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.33333 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-66 {
+ float: left;
+ width: 66.66667%;
+ /* <IE7> */
+ *width: expression(Math.floor(0.66667 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .prefix-66 {
+ margin-left: 66.66667%;
+ }
+
+ .suffix-66 {
+ margin-right: 66.66667%;
+ }
+
+ .push-66 {
+ left: 66.66667%;
+ /* <IE7> */
+ *left: expression(Math.floor(0.66667 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .pull-66 {
+ left: -66.66667%;
+ /* <IE7> */
+ *left: expression(Math.floor(-0.66667 * (this.parentNode.offsetWidth - parseFloat(this.parentNode.currentStyle.paddingLeft) - parseFloat(this.parentNode.currentStyle.paddingRight))) + "px");
+ /* </IE7> */
+ }
+
+ .grid-100 {
+ clear: both;
+ width: 100%;
+ }
+}
diff --git a/frontend/impattern/img/brush.png b/frontend/impattern/img/brush.png
new file mode 100644
index 0000000..72fe926
--- /dev/null
+++ b/frontend/impattern/img/brush.png
Binary files differ
diff --git a/frontend/impattern/img/eraser.png b/frontend/impattern/img/eraser.png
new file mode 100644
index 0000000..564949e
--- /dev/null
+++ b/frontend/impattern/img/eraser.png
Binary files differ
diff --git a/frontend/impattern/img/impattern.png b/frontend/impattern/img/impattern.png
new file mode 100644
index 0000000..0f33419
--- /dev/null
+++ b/frontend/impattern/img/impattern.png
Binary files differ
diff --git a/frontend/impattern/img/loading.gif b/frontend/impattern/img/loading.gif
new file mode 100644
index 0000000..207b5d5
--- /dev/null
+++ b/frontend/impattern/img/loading.gif
Binary files differ
diff --git a/frontend/impattern/img/logo.gif b/frontend/impattern/img/logo.gif
new file mode 100644
index 0000000..6cf5742
--- /dev/null
+++ b/frontend/impattern/img/logo.gif
Binary files differ
diff --git a/frontend/impattern/impattern.html b/frontend/impattern/impattern.html
new file mode 100644
index 0000000..bf26446
--- /dev/null
+++ b/frontend/impattern/impattern.html
@@ -0,0 +1,254 @@
+<html>
+<head>
+<link href='http://fonts.googleapis.com/css?family=Orienta|Roboto' rel='stylesheet' type='text/css'>
+<style type="text/css">
+body{
+font-family: 'Roboto', sans-serif;
+}
+.title{
+ font-family: 'Orienta', sans-serif;
+ font-size:3em;
+ text-shadow: 2px 4px 3px rgba(153,153,153,0.3);
+ color: #1C1C1C;
+}
+#sample
+ {
+ border-style: outset;
+ border-color: gray;
+ border-width: 5px;
+ }
+table.dithertable {
+ border-width: 5px;
+ border-spacing: 3px;
+ border-style: outset;
+ border-color: gray;
+ border-collapse: separate;
+ background-color: rgb(250, 240, 230);
+}
+table.dithertable th {
+ border-width: medium;
+ padding: 2px;
+ border-style: ridge;
+ border-color: gray;
+ background-color: rgb(255, 255, 240);
+ -moz-border-radius: ;
+}
+table.dithertable td {
+ border-width: medium;
+ padding: 2px;
+ border-style: ridge;
+ border-color: gray;
+ background-color: rgb(255, 255, 240);
+ -moz-border-radius: ;
+ background-color:white;
+}
+.dithers
+ {
+ width:10px;
+ height:10px;
+ cursor:pointer;
+ }
+#dithertable
+ {
+ width:50%;
+ display:inline-block;
+ }
+tr
+ {
+ height:40px;
+ }
+</style>
+
+</head>
+<body>
+<table class="dithertable" id="dithertable">
+<tr>
+<td class='dithers' style='background-image:url(dithers/1.png)' id='dither_1'>&nbsp;</td>
+<td class='dithers' style='background-image:url(dithers/10.png)' id='dither_10'>&nbsp;</td>
+<td class='dithers' style='background-image:url(dithers/11.png)' id='dither_11'></td>
+<td class='dithers' style='background-image:url(dithers/12.png)' id='dither_12'></td>
+<td class='dithers' style='background-image:url(dithers/13.png)' id='dither_13'></td>
+<td class='dithers' style='background-image:url(dithers/14.png)' id='dither_14'></td>
+<td class='dithers' style='background-image:url(dithers/15.png)' id='dither_15'></td>
+<td class='dithers' style='background-image:url(dithers/16.png)' id='dither_16'></td>
+<td class='dithers' style='background-image:url(dithers/17.png)' id='dither_17'></td>
+<td class='dithers' style='background-image:url(dithers/18.png)' id='dither_18'></td>
+<td class='dithers' style='background-image:url(dithers/19.png)' id='dither_19'></td>
+<td class='dithers' style='background-image:url(dithers/2.png)' id='dither_2'></td>
+<td class='dithers' style='background-image:url(dithers/20.png)' id='dither_20'></td>
+<td class='dithers' style='background-image:url(dithers/21.png)' id='dither_21'></td>
+<td class='dithers' style='background-image:url(dithers/22.png)' id='dither_22'></td>
+<td class='dithers' style='background-image:url(dithers/23.png)' id='dither_23'></td>
+<td class='dithers' style='background-image:url(dithers/24.png)' id='dither_24'></td>
+<td class='dithers' style='background-image:url(dithers/25.png)' id='dither_25'></td>
+<td class='dithers' style='background-image:url(dithers/26.png)' id='dither_26'></td>
+<td class='dithers' style='background-image:url(dithers/27.png)' id='dither_27'></td>
+<td class='dithers' style='background-image:url(dithers/28.png)' id='dither_28'></td>
+<td class='dithers' style='background-image:url(dithers/29.png)' id='dither_29'></td>
+<td class='dithers' style='background-image:url(dithers/3.png)' id='dither_3'></td>
+<td class='dithers' style='background-image:url(dithers/30.png)' id='dither_30'></td>
+</tr>
+<tr>
+<td class='dithers' style='background-image:url(dithers/31.png)' id='dither_31'></td>
+<td class='dithers' style='background-image:url(dithers/32.png)' id='dither_32'></td>
+<td class='dithers' style='background-image:url(dithers/33.png)' id='dither_33'></td>
+<td class='dithers' style='background-image:url(dithers/34.png)' id='dither_34'></td>
+<td class='dithers' style='background-image:url(dithers/35.png)' id='dither_35'></td>
+<td class='dithers' style='background-image:url(dithers/36.png)' id='dither_36'></td>
+<td class='dithers' style='background-image:url(dithers/37.png)' id='dither_37'></td>
+<td class='dithers' style='background-image:url(dithers/38.png)' id='dither_38'></td>
+<td class='dithers' style='background-image:url(dithers/39.png)' id='dither_39'></td>
+<td class='dithers' style='background-image:url(dithers/4.png)' id='dither_4'></td>
+<td class='dithers' style='background-image:url(dithers/40.png)' id='dither_40'></td>
+<td class='dithers' style='background-image:url(dithers/41.png)' id='dither_41'></td>
+<td class='dithers' style='background-image:url(dithers/42.png)' id='dither_42'></td>
+<td class='dithers' style='background-image:url(dithers/43.png)' id='dither_43'></td>
+<td class='dithers' style='background-image:url(dithers/44.png)' id='dither_44'></td>
+<td class='dithers' style='background-image:url(dithers/45.png)' id='dither_45'></td>
+<td class='dithers' style='background-image:url(dithers/46.png)' id='dither_46'></td>
+<td class='dithers' style='background-image:url(dithers/47.png)' id='dither_47'></td>
+<td class='dithers' style='background-image:url(dithers/48.png)' id='dither_48'></td>
+<td class='dithers' style='background-image:url(dithers/49.png)' id='dither_49'></td>
+<td class='dithers' style='background-image:url(dithers/5.png)' id='dither_5'></td>
+<td class='dithers' style='background-image:url(dithers/50.png)' id='dither_50'></td>
+<td class='dithers' style='background-image:url(dithers/51.png)' id='dither_51'></td>
+<td class='dithers' style='background-image:url(dithers/52.png)' id='dither_52'></td>
+</tr>
+<tr>
+
+<td class='dithers' style='background-image:url(dithers/53.png)' id='dither_53'></td>
+<td class='dithers' style='background-image:url(dithers/54.png)' id='dither_54'></td>
+<td class='dithers' style='background-image:url(dithers/55.png)' id='dither_55'></td>
+<td class='dithers' style='background-image:url(dithers/56.png)' id='dither_56'></td>
+<td class='dithers' style='background-image:url(dithers/57.png)' id='dither_57'></td>
+<td class='dithers' style='background-image:url(dithers/58.png)' id='dither_58'></td>
+<td class='dithers' style='background-image:url(dithers/59.png)' id='dither_59'></td>
+<td class='dithers' style='background-image:url(dithers/6.png)' id='dither_6'></td>
+<td class='dithers' style='background-image:url(dithers/60.png)' id='dither_60'></td>
+
+<td class='dithers' style='background-image:url(dithers/61.png)' id='dither_61'></td>
+<td class='dithers' style='background-image:url(dithers/62.png)' id='dither_62'></td>
+<td class='dithers' style='background-image:url(dithers/63.png)' id='dither_63'></td>
+<td class='dithers' style='background-image:url(dithers/64.png)' id='dither_64'></td>
+<td class='dithers' style='background-image:url(dithers/65.png)' id='dither_65'></td>
+<td class='dithers' style='background-image:url(dithers/66.png)' id='dither_66'></td>
+<td class='dithers' style='background-image:url(dithers/67.png)' id='dither_67'></td>
+<td class='dithers' style='background-image:url(dithers/68.png)' id='dither_68'></td>
+<td class='dithers' style='background-image:url(dithers/69.png)' id='dither_69'></td>
+<td class='dithers' style='background-image:url(dithers/7.png)' id='dither_7'></td>
+<td class='dithers' style='background-image:url(dithers/70.png)' id='dither_70'></td>
+<td class='dithers' style='background-image:url(dithers/71.png)' id='dither_71'></td>
+<td class='dithers' style='background-image:url(dithers/72.png)' id='dither_72'></td>
+<td class='dithers' style='background-image:url(dithers/73.png)' id='dither_73'></td>
+<td class='dithers' style='background-image:url(dithers/74.png)' id='dither_74'></td>
+</tr>
+<tr>
+<td class='dithers' style='background-image:url(dithers/75.png)' id='dither_75'></td>
+<td class='dithers' style='background-image:url(dithers/76.png)' id='dither_76'></td>
+<td class='dithers' style='background-image:url(dithers/77.png)' id='dither_77'></td>
+<td class='dithers' style='background-image:url(dithers/78.png)' id='dither_78'></td>
+<td class='dithers' style='background-image:url(dithers/79.png)' id='dither_79'></td>
+<td class='dithers' style='background-image:url(dithers/8.png)' id='dither_8'></td>
+<td class='dithers' style='background-image:url(dithers/80.png)' id='dither_80'></td>
+<td class='dithers' style='background-image:url(dithers/81.png)' id='dither_81'></td>
+<td class='dithers' style='background-image:url(dithers/82.png)' id='dither_82'></td>
+<td class='dithers' style='background-image:url(dithers/83.png)' id='dither_83'></td>
+<td class='dithers' style='background-image:url(dithers/84.png)' id='dither_84'></td>
+<td class='dithers' style='background-image:url(dithers/85.png)' id='dither_85'></td>
+<td class='dithers' style='background-image:url(dithers/86.png)' id='dither_86'></td>
+<td class='dithers' style='background-image:url(dithers/87.png)' id='dither_87'></td>
+<td class='dithers' style='background-image:url(dithers/88.png)' id='dither_88'></td>
+<td class='dithers' style='background-image:url(dithers/89.png)' id='dither_89'></td>
+<td class='dithers' style='background-image:url(dithers/9.png)' id='dither_9'></td>
+<td class='dithers' style='background-image:url(dithers/90.png)' id='dither_90'></td>
+<td class='dithers' style='background-image:url(dithers/91.png)' id='dither_91'></td>
+<td class='dithers' style='background-image:url(dithers/92.png)' id='dither_92'></td>
+<td class='dithers' style='background-image:url(dithers/93.png)' id='dither_93'></td>
+<td class='dithers' style='background-image:url(dithers/94.png)' id='dither_94'></td>
+<td class='dithers' style='background-image:url(dithers/95.png)' id='dither_95'></td>
+<td class='dithers' style='background-image:url(dithers/96.png)' id='dither_96'></td>
+
+</tr>
+<tr>
+<td class='dithers' style='background-image:url(dithers/a0.png)' id='dither_a0'></td>
+<td class='dithers' style='background-image:url(dithers/a1.png)' id='dither_a1'></td>
+<td class='dithers' style='background-image:url(dithers/a10.png)' id='dither_a10'></td>
+<td class='dithers' style='background-image:url(dithers/a11.png)' id='dither_a11'></td>
+<td class='dithers' style='background-image:url(dithers/a12.png)' id='dither_a12'></td>
+<td class='dithers' style='background-image:url(dithers/a13.png)' id='dither_a13'></td>
+<td class='dithers' style='background-image:url(dithers/a14.png)' id='dither_a14'></td>
+<td class='dithers' style='background-image:url(dithers/a15.png)' id='dither_a15'></td>
+<td class='dithers' style='background-image:url(dithers/a16.png)' id='dither_a16'></td>
+<td class='dithers' style='background-image:url(dithers/a17.png)' id='dither_a17'></td>
+<td class='dithers' style='background-image:url(dithers/a18.png)' id='dither_a18'></td>
+<td class='dithers' style='background-image:url(dithers/a19.png)' id='dither_a19'></td>
+<td class='dithers' style='background-image:url(dithers/a2.png)' id='dither_a2'></td>
+<td class='dithers' style='background-image:url(dithers/a20.png)' id='dither_a20'></td>
+<td class='dithers' style='background-image:url(dithers/a21.png)' id='dither_a21'></td>
+<td class='dithers' style='background-image:url(dithers/a22.png)' id='dither_a22'></td>
+<td class='dithers' style='background-image:url(dithers/a23.png)' id='dither_a23'></td>
+<td class='dithers' style='background-image:url(dithers/a24.png)' id='dither_a24'></td>
+<td class='dithers' style='background-image:url(dithers/a25.png)' id='dither_a25'></td>
+<td class='dithers' style='background-image:url(dithers/a26.png)' id='dither_a26'></td>
+<td class='dithers' style='background-image:url(dithers/a27.png)' id='dither_a27'></td>
+<td class='dithers' style='background-image:url(dithers/a28.png)' id='dither_a28'></td>
+<td class='dithers' style='background-image:url(dithers/a29.png)' id='dither_a29'></td>
+<td class='dithers' style='background-image:url(dithers/a3.png)' id='dither_a3'></td>
+
+</tr>
+<tr>
+<td class='dithers' style='background-image:url(dithers/a30.png)' id='dither_a30'></td>
+<td class='dithers' style='background-image:url(dithers/a31.png)' id='dither_a31'></td>
+<td class='dithers' style='background-image:url(dithers/a32.png)' id='dither_a32'></td>
+<td class='dithers' style='background-image:url(dithers/a33.png)' id='dither_a33'></td>
+<td class='dithers' style='background-image:url(dithers/a34.png)' id='dither_a34'></td>
+<td class='dithers' style='background-image:url(dithers/a35.png)' id='dither_a35'></td>
+<td class='dithers' style='background-image:url(dithers/a36.png)' id='dither_a36'></td>
+<td class='dithers' style='background-image:url(dithers/a37.png)' id='dither_a37'></td>
+<td class='dithers' style='background-image:url(dithers/a38.png)' id='dither_a38'></td>
+<td class='dithers' style='background-image:url(dithers/a39.png)' id='dither_a39'></td>
+<td class='dithers' style='background-image:url(dithers/a4.png)' id='dither_a4'></td>
+<td class='dithers' style='background-image:url(dithers/a40.png)' id='dither_a40'></td>
+<td class='dithers' style='background-image:url(dithers/a41.png)' id='dither_a41'></td>
+<td class='dithers' style='background-image:url(dithers/a5.png)' id='dither_a5'></td>
+<td class='dithers' style='background-image:url(dithers/a6.png)' id='dither_a6'></td>
+<td class='dithers' style='background-image:url(dithers/a7.png)' id='dither_a7'></td>
+<td class='dithers' style='background-image:url(dithers/a8.png)' id='dither_a8'></td>
+<td class='dithers' style='background-image:url(dithers/a9.png)' id='dither_a9'></td>
+</tr>
+</table>
+
+<div class="title">
+testing testing tesitng
+</div>
+
+<div id="sample">&nbsp;
+</div>
+<span class="parameter">Image to overlay:</span><input type="text/css" class="image_input" value="Enter an image url here"></input>
+<script type="text/javascript" src="jquery.min.js"></script>
+<script type="text/javascript">
+function makesample(){
+theheight = $('#dithertable').height()
+$('#sample').css({'width':"20%",'height':theheight,'display':'inline-block'})
+}
+makesample()
+var preview_box = $("#sample")
+$('.dithers').click(function(){
+ $('.dithers').css({'border-color':'gray','-moz-box-shadow': 'none','-webkit-box-shadow':'none','box-shadow': 'none'});
+ $(this).css({'border-color':'#EE0000','-moz-box-shadow': '0px 0px 9px 3px firebrick','-webkit-box-shadow':'0px 0px 9px 3px firebrick','box-shadow': '0px 0px 9px 3px firebrick'})
+ var dither = $(this).css("background-image");
+ preview_box.css("background-image", dither);
+ });
+$(".image_input").clicked = false;
+$(".image_input").click(function(){
+ if(! $(this).clicked){
+ $(this).attr("value", "");
+ $(this).clicked = true;
+ }
+})
+</script>
+
+
+</body>
+</html>
+
diff --git a/frontend/impattern/index.html b/frontend/impattern/index.html
new file mode 100755
index 0000000..b26ded5
--- /dev/null
+++ b/frontend/impattern/index.html
@@ -0,0 +1,340 @@
+<html>
+<head>
+<link href='http://fonts.googleapis.com/css?family=Orienta|Roboto' rel='stylesheet' type='text/css'>
+<link href='css/normalize.css' rel='stylesheet' type='text/css'>
+<link href='css/unsemantic-grid-responsive.css' rel='stylesheet' type='text/css'>
+<link href='css/impattern-main.css' rel='stylesheet' type='text/css'/>
+<link href='css/overlay.css' rel='stylesheet' type='text/css'/>
+<link href='css/sketch.css' rel='stylesheet' type='text/css'/>
+<link href='css/result.css' rel='stylesheet' type='text/css'/>
+<title>imPattern</title>
+
+</head>
+<body>
+<div id="top-row" class="grid-100 mobile-grid-100">
+
+ <div id="impattern" class="grid-50 mobile-grid-50">
+ <img src="img/logo.gif"/>
+ </div>
+ <div id="sample" class="grid-50 mobile-grid-50">
+ </div>
+</div>
+<hr>
+<div class="grid-100 mobile-grid-100" id="choose_your_pattern">
+ <b>FIRST:</b> Choose your pattern:
+</div>
+</br>
+<table class="dithertable" id="dithertable">
+<tr>
+<!--{{{-->
+<td class='patterns' style='background-image:url(patterns/1.png)' id='dither_1'>&nbsp;</td>
+<td class='patterns' style='background-image:url(patterns/10.png)' id='dither_10'>&nbsp;</td>
+<td class='patterns' style='background-image:url(patterns/11.png)' id='dither_11'></td>
+<td class='patterns' style='background-image:url(patterns/12.png)' id='dither_12'></td>
+<td class='patterns' style='background-image:url(patterns/13.png)' id='dither_13'></td>
+<td class='patterns' style='background-image:url(patterns/14.png)' id='dither_14'></td>
+<td class='patterns' style='background-image:url(patterns/15.png)' id='dither_15'></td>
+<td class='patterns' style='background-image:url(patterns/16.png)' id='dither_16'></td>
+<td class='patterns' style='background-image:url(patterns/17.png)' id='dither_17'></td>
+<td class='patterns' style='background-image:url(patterns/18.png)' id='dither_18'></td>
+<td class='patterns' style='background-image:url(patterns/19.png)' id='dither_19'></td>
+<td class='patterns' style='background-image:url(patterns/2.png)' id='dither_2'></td>
+<td class='patterns' style='background-image:url(patterns/20.png)' id='dither_20'></td>
+<td class='patterns' style='background-image:url(patterns/21.png)' id='dither_21'></td>
+<td class='patterns' style='background-image:url(patterns/22.png)' id='dither_22'></td>
+<td class='patterns' style='background-image:url(patterns/23.png)' id='dither_23'></td>
+<td class='patterns' style='background-image:url(patterns/24.png)' id='dither_24'></td>
+<td class='patterns' style='background-image:url(patterns/25.png)' id='dither_25'></td>
+<td class='patterns' style='background-image:url(patterns/26.png)' id='dither_26'></td>
+<td class='patterns' style='background-image:url(patterns/27.png)' id='dither_27'></td>
+<td class='patterns' style='background-image:url(patterns/28.png)' id='dither_28'></td>
+<td class='patterns' style='background-image:url(patterns/29.png)' id='dither_29'></td>
+<td class='patterns' style='background-image:url(patterns/3.png)' id='dither_3'></td>
+<td class='patterns' style='background-image:url(patterns/30.png)' id='dither_30'></td>
+</tr>
+<tr>
+<td class='patterns' style='background-image:url(patterns/31.png)' id='dither_31'></td>
+<td class='patterns' style='background-image:url(patterns/32.png)' id='dither_32'></td>
+<td class='patterns' style='background-image:url(patterns/33.png)' id='dither_33'></td>
+<td class='patterns' style='background-image:url(patterns/34.png)' id='dither_34'></td>
+<td class='patterns' style='background-image:url(patterns/35.png)' id='dither_35'></td>
+<td class='patterns' style='background-image:url(patterns/36.png)' id='dither_36'></td>
+<td class='patterns' style='background-image:url(patterns/37.png)' id='dither_37'></td>
+<td class='patterns' style='background-image:url(patterns/38.png)' id='dither_38'></td>
+<td class='patterns' style='background-image:url(patterns/39.png)' id='dither_39'></td>
+<td class='patterns' style='background-image:url(patterns/4.png)' id='dither_4'></td>
+<td class='patterns' style='background-image:url(patterns/40.png)' id='dither_40'></td>
+<td class='patterns' style='background-image:url(patterns/41.png)' id='dither_41'></td>
+<td class='patterns' style='background-image:url(patterns/42.png)' id='dither_42'></td>
+<td class='patterns' style='background-image:url(patterns/43.png)' id='dither_43'></td>
+<td class='patterns' style='background-image:url(patterns/44.png)' id='dither_44'></td>
+<td class='patterns' style='background-image:url(patterns/45.png)' id='dither_45'></td>
+<td class='patterns' style='background-image:url(patterns/46.png)' id='dither_46'></td>
+<td class='patterns' style='background-image:url(patterns/47.png)' id='dither_47'></td>
+<td class='patterns' style='background-image:url(patterns/48.png)' id='dither_48'></td>
+<td class='patterns' style='background-image:url(patterns/49.png)' id='dither_49'></td>
+<td class='patterns' style='background-image:url(patterns/5.png)' id='dither_5'></td>
+<td class='patterns' style='background-image:url(patterns/50.png)' id='dither_50'></td>
+<td class='patterns' style='background-image:url(patterns/51.png)' id='dither_51'></td>
+<td class='patterns' style='background-image:url(patterns/52.png)' id='dither_52'></td>
+</tr>
+<tr>
+
+<td class='patterns' style='background-image:url(patterns/53.png)' id='dither_53'></td>
+<td class='patterns' style='background-image:url(patterns/54.png)' id='dither_54'></td>
+<td class='patterns' style='background-image:url(patterns/55.png)' id='dither_55'></td>
+<td class='patterns' style='background-image:url(patterns/56.png)' id='dither_56'></td>
+<td class='patterns' style='background-image:url(patterns/57.png)' id='dither_57'></td>
+<td class='patterns' style='background-image:url(patterns/58.png)' id='dither_58'></td>
+<td class='patterns' style='background-image:url(patterns/59.png)' id='dither_59'></td>
+<td class='patterns' style='background-image:url(patterns/6.png)' id='dither_6'></td>
+<td class='patterns' style='background-image:url(patterns/60.png)' id='dither_60'></td>
+
+<td class='patterns' style='background-image:url(patterns/61.png)' id='dither_61'></td>
+<td class='patterns' style='background-image:url(patterns/62.png)' id='dither_62'></td>
+<td class='patterns' style='background-image:url(patterns/63.png)' id='dither_63'></td>
+<td class='patterns' style='background-image:url(patterns/64.png)' id='dither_64'></td>
+<td class='patterns' style='background-image:url(patterns/65.png)' id='dither_65'></td>
+<td class='patterns' style='background-image:url(patterns/66.png)' id='dither_66'></td>
+<td class='patterns' style='background-image:url(patterns/67.png)' id='dither_67'></td>
+<td class='patterns' style='background-image:url(patterns/68.png)' id='dither_68'></td>
+<td class='patterns' style='background-image:url(patterns/69.png)' id='dither_69'></td>
+<td class='patterns' style='background-image:url(patterns/7.png)' id='dither_7'></td>
+<td class='patterns' style='background-image:url(patterns/70.png)' id='dither_70'></td>
+<td class='patterns' style='background-image:url(patterns/71.png)' id='dither_71'></td>
+<td class='patterns' style='background-image:url(patterns/72.png)' id='dither_72'></td>
+<td class='patterns' style='background-image:url(patterns/73.png)' id='dither_73'></td>
+<td class='patterns' style='background-image:url(patterns/74.png)' id='dither_74'></td>
+</tr>
+<tr>
+<td class='patterns' style='background-image:url(patterns/75.png)' id='dither_75'></td>
+<td class='patterns' style='background-image:url(patterns/76.png)' id='dither_76'></td>
+<td class='patterns' style='background-image:url(patterns/77.png)' id='dither_77'></td>
+<td class='patterns' style='background-image:url(patterns/78.png)' id='dither_78'></td>
+<td class='patterns' style='background-image:url(patterns/79.png)' id='dither_79'></td>
+<td class='patterns' style='background-image:url(patterns/8.png)' id='dither_8'></td>
+<td class='patterns' style='background-image:url(patterns/80.png)' id='dither_80'></td>
+<td class='patterns' style='background-image:url(patterns/81.png)' id='dither_81'></td>
+<td class='patterns' style='background-image:url(patterns/82.png)' id='dither_82'></td>
+<td class='patterns' style='background-image:url(patterns/83.png)' id='dither_83'></td>
+<td class='patterns' style='background-image:url(patterns/84.png)' id='dither_84'></td>
+<td class='patterns' style='background-image:url(patterns/85.png)' id='dither_85'></td>
+<td class='patterns' style='background-image:url(patterns/86.png)' id='dither_86'></td>
+<td class='patterns' style='background-image:url(patterns/87.png)' id='dither_87'></td>
+<td class='patterns' style='background-image:url(patterns/88.png)' id='dither_88'></td>
+<td class='patterns' style='background-image:url(patterns/89.png)' id='dither_89'></td>
+<td class='patterns' style='background-image:url(patterns/9.png)' id='dither_9'></td>
+<td class='patterns' style='background-image:url(patterns/90.png)' id='dither_90'></td>
+<td class='patterns' style='background-image:url(patterns/91.png)' id='dither_91'></td>
+<td class='patterns' style='background-image:url(patterns/92.png)' id='dither_92'></td>
+<td class='patterns' style='background-image:url(patterns/93.png)' id='dither_93'></td>
+<td class='patterns' style='background-image:url(patterns/94.png)' id='dither_94'></td>
+<td class='patterns' style='background-image:url(patterns/95.png)' id='dither_95'></td>
+<td class='patterns' style='background-image:url(patterns/96.png)' id='dither_96'></td>
+
+</tr>
+<tr>
+<td class='patterns' style='background-image:url(patterns/a0.png)' id='dither_a0'></td>
+<td class='patterns' style='background-image:url(patterns/a1.png)' id='dither_a1'></td>
+<td class='patterns' style='background-image:url(patterns/a10.png)' id='dither_a10'></td>
+<td class='patterns' style='background-image:url(patterns/a11.png)' id='dither_a11'></td>
+<td class='patterns' style='background-image:url(patterns/a12.png)' id='dither_a12'></td>
+<td class='patterns' style='background-image:url(patterns/a13.png)' id='dither_a13'></td>
+<td class='patterns' style='background-image:url(patterns/a14.png)' id='dither_a14'></td>
+<td class='patterns' style='background-image:url(patterns/a15.png)' id='dither_a15'></td>
+<td class='patterns' style='background-image:url(patterns/a16.png)' id='dither_a16'></td>
+<td class='patterns' style='background-image:url(patterns/a17.png)' id='dither_a17'></td>
+<td class='patterns' style='background-image:url(patterns/a18.png)' id='dither_a18'></td>
+<td class='patterns' style='background-image:url(patterns/a19.png)' id='dither_a19'></td>
+<td class='patterns' style='background-image:url(patterns/a2.png)' id='dither_a2'></td>
+<td class='patterns' style='background-image:url(patterns/a20.png)' id='dither_a20'></td>
+<td class='patterns' style='background-image:url(patterns/a21.png)' id='dither_a21'></td>
+<td class='patterns' style='background-image:url(patterns/a22.png)' id='dither_a22'></td>
+<td class='patterns' style='background-image:url(patterns/a23.png)' id='dither_a23'></td>
+<td class='patterns' style='background-image:url(patterns/a24.png)' id='dither_a24'></td>
+<td class='patterns' style='background-image:url(patterns/a25.png)' id='dither_a25'></td>
+<td class='patterns' style='background-image:url(patterns/a26.png)' id='dither_a26'></td>
+<td class='patterns' style='background-image:url(patterns/a27.png)' id='dither_a27'></td>
+<td class='patterns' style='background-image:url(patterns/a28.png)' id='dither_a28'></td>
+<td class='patterns' style='background-image:url(patterns/a29.png)' id='dither_a29'></td>
+<td class='patterns' style='background-image:url(patterns/a3.png)' id='dither_a3'></td>
+
+</tr>
+<tr>
+<td class='patterns' style='background-image:url(patterns/a30.png)' id='dither_a30'></td>
+<td class='patterns' style='background-image:url(patterns/a31.png)' id='dither_a31'></td>
+<td class='patterns' style='background-image:url(patterns/a32.png)' id='dither_a32'></td>
+<td class='patterns' style='background-image:url(patterns/a33.png)' id='dither_a33'></td>
+<td class='patterns' style='background-image:url(patterns/a34.png)' id='dither_a34'></td>
+<td class='patterns' style='background-image:url(patterns/a35.png)' id='dither_a35'></td>
+<td class='patterns' style='background-image:url(patterns/a36.png)' id='dither_a36'></td>
+<td class='patterns' style='background-image:url(patterns/a37.png)' id='dither_a37'></td>
+<td class='patterns' style='background-image:url(patterns/a38.png)' id='dither_a38'></td>
+<td class='patterns' style='background-image:url(patterns/a39.png)' id='dither_a39'></td>
+<td class='patterns' style='background-image:url(patterns/a4.png)' id='dither_a4'></td>
+<td class='patterns' style='background-image:url(patterns/a40.png)' id='dither_a40'></td>
+<td class='patterns' style='background-image:url(patterns/a41.png)' id='dither_a41'></td>
+<td class='patterns' style='background-image:url(patterns/a5.png)' id='dither_a5'></td>
+<td class='patterns' style='background-image:url(patterns/a6.png)' id='dither_a6'></td>
+<td class='patterns' style='background-image:url(patterns/a7.png)' id='dither_a7'></td>
+<td class='patterns' style='background-image:url(patterns/a8.png)' id='dither_a8'></td>
+<td class='patterns' style='background-image:url(patterns/a9.png)' id='dither_a9'></td>
+<!--}}}-->
+</tr>
+</table>
+</br>
+</br>
+<div class="grid-100 mobile-grid-100" id="create_your_own">
+ <b>OR:</b> <a href="">Create your Own</a> pattern...
+</div>
+<hr>
+ <div class="grid-100 mobile-grid-100" id="controls">
+<div class="grid-100 mobile-grid-100" id="choose_your_image">
+<b>NEXT:</b> Choose your image:
+ </div>
+ <div class="parameter grid-50 mobile-grid-50">
+Image Url:<input type="text/css" class="image_input" value="Enter an image url here"></input>
+ </div>
+ <div class="parameter grid-50 mobile-grid-50">
+ Photoblaster Username <i>(optional)</i>: <input id="username" value=""></input>
+
+<!-- Or Upload:<button>Upload</button>-->
+ </div>
+
+ </div>
+ <div id="username_wrapper">
+ </div>
+ <div id="submit_wrapper" class="grid-100 mobile-grid-100" >
+ <button class="grid-33 push-33 mobile-grid-50 big_button" id="submit">ROCK</button>
+
+ </div>
+<div class="processing dontshowme"></div>
+<div class="result dontshowme"></div>
+
+<div id="overlay">
+ <div id="draw_protector">
+ </div>
+ <div class="close">CLOSE</div>
+ <div class="content">
+<!-- {{{DRAW-->
+ <div id="draw">
+ <div>Draw an image below.
+ </br>(Each square will be 1 sq. pixel)</div>
+ </br>
+ <div id="canvas_wrapper">
+ </div>
+ <table>
+ <tr>
+ <td>
+ <input size="2" type="text" id="cols" value="10">COLUMNS</input>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <input size="2" type="text" id="rows" value="10">ROWS</input>
+ </td>
+ </tr>
+ </table>
+
+ <div id="tools">
+ <div id="brush" class="brush_tools">Brush</div>
+ <div id="eraser" class="brush_tools">Eraser</div>
+ </div>
+ <input type="checkbox" id="show_grid" checked>Show grid?</input>
+ <button id="drawing_finished">DONE</button>
+
+ </div>
+<!-- }}}-->
+ <div id="final_image">
+ <div class="result">Your Result:</div>
+ <img src=""/>
+ <div id="links">
+ URL:<input type="text" value=""></input>
+ </br>
+ </br>
+ view more at &rarr;<a href="http://asdf.us/im/gallery">PHOTOBLASTER GALLERY:</a>
+ </div>
+ </div>
+ </div>
+</div>
+<script type="text/javascript" src="js/jquery.min.js"></script>
+<script type="text/javascript" src="js/urls.js"></script>
+<script type="text/javascript" src="js/inputs.js"></script>
+<script type="text/javascript" src="js/preview.js"></script>
+<script type="text/javascript" src="js/username.js"></script>
+<script type="text/javascript" src="js/sketch.js"></script>
+<script type="text/javascript" src="js/overlay.js"></script>
+<script type="text/javascript">
+function checkForEmptyUrl(){
+ if (($('input.image_input').val() == "")
+ || ( ! ($('input.image_input').val()))
+ || ( $('input.image_input').attr("clicked") == "false")
+ ){
+ return true;
+ }
+ return false;
+}
+
+function checkForEmptyPattern(){
+ if (
+ ($('.patterns').attr("current_pattern") == "" || ! $('.patterns').attr("current_pattern")) &&
+ window.custom_pattern == ""
+ ){
+ return true;
+ }
+ return false;
+}
+
+$(document).ready(function(){
+ $("#submit").click(function(){
+
+ if (checkForEmptyUrl()){
+ return alert("Please supply an image url");
+ }
+ if (checkForEmptyPattern()){
+ return alert("Please select a pattern");
+ }
+ console.log(
+ {
+ 'pattern_data' : JSON.stringify(window.custom_pattern),
+ 'pattern_url' : $('.patterns').attr("current_pattern"),
+ 'image_url' : $('input.image_input').val(),
+ 'username' : $('#username').val(),
+ }
+ );
+ $(this).prop("disabled", true);
+ $(this).html("Workin'...");
+ $('body').css("background", "url(img/loading.gif)");
+ $.ajax({
+ type: "POST",
+ url: PROCESS_URL,
+ data: {
+ 'pattern_data' : JSON.stringify(window.custom_pattern),
+ 'pattern_url' : $('.patterns').attr("current_pattern"),
+ 'image_url' : $('input.image_input').val(),
+ 'username' : $('#username').val(),
+ }
+ }).done(function( msg ) {
+ msg = JSON.parse(msg)
+ $('#submit').prop("disabled", false);
+ $('#submit').html("ROCK");
+ $('body').css("background", "url(img/loading.gif)");
+ $('body').css("background", "white");
+ if (msg.error){
+ alert( "There was an error processing your request ");
+ console.log(msg);
+ }
+ console.log(msg)
+ console.log("new url: "+msg.url);
+ update_username($("#username").val());
+ show_finished_image(msg.url);
+ })
+
+ });
+})
+</script>
+
+<div id="acknowledgments">site by pepper...thanks to jules (<a href="http://asdf.us/ascii">http://asdf.us/ascii</a>) and timb (superpaint...RIP)</div>
+</body>
+</html>
+
diff --git a/frontend/impattern/js/display_result.js b/frontend/impattern/js/display_result.js
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/frontend/impattern/js/display_result.js
@@ -0,0 +1 @@
+
diff --git a/frontend/impattern/js/inputs.js b/frontend/impattern/js/inputs.js
new file mode 100644
index 0000000..69cd2d3
--- /dev/null
+++ b/frontend/impattern/js/inputs.js
@@ -0,0 +1,26 @@
+$('.patterns').attr("current_pattern", "");
+$('.patterns').click(function(){
+ window.custom_pattern = "";
+ $('.patterns').css({'border-color':'gray',
+ '-moz-box-shadow': 'none',
+ '-webkit-box-shadow':'none',
+ 'box-shadow': 'none'
+ });
+ $(this).css({'border-color':'#EE0000',
+ '-moz-box-shadow': '0px 0px 9px 3px firebrick',
+ '-webkit-box-shadow':'0px 0px 9px 3px firebrick',
+ 'box-shadow': '0px 0px 9px 3px firebrick'
+ })
+
+ selected_pattern = /url\((.+)\)$/.exec($(this).css("background-image"))[1];
+ preview_controller.from_image(selected_pattern)
+ $('.patterns').attr("current_pattern", selected_pattern);
+ });
+$("input.image_input").attr("clicked", false);
+$("input.image_input").click(function(){
+ if(! $(this).clicked){
+ $(this).attr("value", "");
+ $(this).attr("clicked",true);
+ }
+})
+
diff --git a/frontend/impattern/js/jquery.min.js b/frontend/impattern/js/jquery.min.js
new file mode 100644
index 0000000..b2ac174
--- /dev/null
+++ b/frontend/impattern/js/jquery.min.js
@@ -0,0 +1,18 @@
+/*!
+ * jQuery JavaScript Library v1.6.1
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu May 12 15:04:36 2011 -0400
+ */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write("<!doctype><html><body></body></html>");b=cl.createElement(a),cl.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ck)}cj[a]=d}return cj[a]}function cu(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function ct(){cq=b}function cs(){setTimeout(ct,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bF.test(a)?d(a,e):b_(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bU,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bQ),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bD(a,b,c){var d=b==="width"?bx:by,e=b==="width"?a.offsetWidth:a.offsetHeight;if(c==="border")return e;f.each(d,function(){c||(e-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?e+=parseFloat(f.css(a,"margin"+this))||0:e-=parseFloat(f.css(a,"border"+this+"Width"))||0});return e}function bn(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bm(a){f.nodeName(a,"input")?bl(a):a.getElementsByTagName&&f.grep(a.getElementsByTagName("input"),bl)}function bl(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bk(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bj(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bi(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bh(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function X(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(S.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function W(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function O(a,b){return(a&&a!=="*"?a+".":"")+b.replace(A,"`").replace(B,"&")}function N(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(y,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function L(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function F(){return!0}function E(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.1",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:E?function(a){return a==null?"":E.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?C.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(F)return F.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=D.call(arguments,2),g=function(){return a.apply(c,f.concat(D.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){G["[object "+b+"]"]=b.toLowerCase()}),x=e.uaMatch(w),x.browser&&(e.browser[x.browser]=!0,e.browser.version=x.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?z=function(){c.removeEventListener("DOMContentLoaded",z,!1),e.ready()}:c.attachEvent&&(z=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",z),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g](h)}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};f=c.createElement("select"),g=f.appendChild(c.createElement("option")),h=a.getElementsByTagName("input")[0],j={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},h.checked=!0,j.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,j.optDisabled=!g.disabled;try{delete a.test}catch(s){j.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function b(){j.noCloneEvent=!1,a.detachEvent("onclick",b)}),a.cloneNode(!0).fireEvent("onclick")),h=c.createElement("input"),h.value="t",h.setAttribute("type","radio"),j.radioValue=h.value==="t",h.setAttribute("checked","checked"),a.appendChild(h),k=c.createDocumentFragment(),k.appendChild(a.firstChild),j.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",l=c.createElement("body"),m={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(q in m)l.style[q]=m[q];l.appendChild(a),b.insertBefore(l,b.firstChild),j.appendChecked=h.checked,j.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,j.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",j.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",n=a.getElementsByTagName("td"),r=n[0].offsetHeight===0,n[0].style.display="",n[1].style.display="none",j.reliableHiddenOffsets=r&&n[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(i=c.createElement("div"),i.style.width="0",i.style.marginRight="0",a.appendChild(i),j.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(i,null)||{marginRight:0}).marginRight,10)||0)===0),l.innerHTML="",b.removeChild(l);if(a.attachEvent)for(q in{submit:1,change:1,focusin:1})p="on"+q,r=p in a,r||(a.setAttribute(p,"return;"),r=typeof a[p]=="function"),j[q+"Bubbles"]=r;return j}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/\:/,v,w;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.addClass(a.call(this,b,c.attr("class")||""))});if(a&&typeof a=="string"){var b=(a||"").split(o);for(var c=0,d=this.length;c<d;c++){var e=this[c];if(e.nodeType===1)if(!e.className)e.className=a;else{var g=" "+e.className+" ",h=e.className;for(var i=0,j=b.length;i<j;i++)g.indexOf(" "+b[i]+" ")<0&&(h+=" "+b[i]);e.className=f.trim(h)}}}return this},removeClass:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.removeClass(a.call(this,b,c.attr("class")))});if(a&&typeof a=="string"||a===b){var c=(a||"").split(o);for(var d=0,e=this.length;d<e;d++){var g=this[d];if(g.nodeType===1&&g.className)if(a){var h=(" "+g.className+" ").replace(n," ");for(var i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){var d=f(this);d.toggleClass(a.call(this,c,d.attr("class"),b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c],i||(!t.test(c)||typeof d!="boolean"&&d!==b&&d.toLowerCase()!==c.toLowerCase()?v&&(f.nodeName(a,"form")||u.test(c))&&(i=v):i=w);if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return a[f.propFix[c]||c]?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=b),a.setAttribute(c,c.toLowerCase()));return c}},f.attrHooks.value={get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return a.value},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=Object.prototype.hasOwnProperty,y=/\.(.*)$/,z=/^(?:textarea|input|select)$/i,A=/\./g,B=/ /g,C=/[^\w\s.|`]/g,D=function(a){return a.replace(C,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=E;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=E);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),D).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem
+)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,O(a.origType,a.selector),f.extend({},a,{handler:N,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,O(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?F:E):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=F;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=F;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=F,this.stopPropagation()},isDefaultPrevented:E,isPropagationStopped:E,isImmediatePropagationStopped:E};var G=function(a){var b=a.relatedTarget;a.type=a.data;try{if(b&&b!==c&&!b.parentNode)return;while(b&&b!==this)b=b.parentNode;b!==this&&f.event.handle.apply(this,arguments)}catch(d){}},H=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?H:G,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?H:G)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&L("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&L("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var I,J=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},K=function(c){var d=c.target,e,g;if(!!z.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=J(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:K,beforedeactivate:K,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&K.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&K.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",J(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in I)f.event.add(this,c+".specialChange",I[c]);return z.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return z.test(this.nodeName)}},I=f.event.special.change.filters,I.focus=I.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var M={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||E,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=y.exec(h),k="",j&&(k=j[0],h=h.replace(y,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,M[h]?(a.push(M[h]+k),h=h+k):h=(M[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+O(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+O(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var P=/Until$/,Q=/^(?:parents|prevUntil|prevAll)/,R=/,/,S=/^.[^:#\[\.,]*$/,T=Array.prototype.slice,U=f.expr.match.POS,V={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(X(this,a,!1),"not",a)},filter:function(a){return this.pushStack(X(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=U.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=U.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(W(c[0])||W(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=T.call(arguments);P.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!V[a]?f.unique(e):e,(this.length>1||R.test(d))&&Q.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y=/ jQuery\d+="(?:\d+|null)"/g,Z=/^\s+/,$=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,_=/<([\w:]+)/,ba=/<tbody/i,bb=/<|&#?\w+;/,bc=/<(?:script|object|embed|option|style)/i,bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Y,""):null;if(typeof a=="string"&&!bc.test(a)&&(f.support.leadingWhitespace||!Z.test(a))&&!bg[(_.exec(a)||["",""])[1].toLowerCase()]){a=a.replace($,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bh(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bn)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i=b&&b[0]?b[0].ownerDocument||b[0]:c;a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!bc.test(a[0])&&(f.support.checkClone||!bd.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bj(a,d),e=bk(a),g=bk(d);for(h=0;e[h];++h)bj(e[h],g[h])}if(b){bi(a,d);if(c){e=bk(a),g=bk(d);for(h=0;e[h];++h)bi(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||
+b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bb.test(k))k=b.createTextNode(k);else{k=k.replace($,"<$1></$2>");var l=(_.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=ba.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Z.test(k)&&o.insertBefore(b.createTextNode(Z.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bm(k[i]);else bm(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bo=/alpha\([^)]*\)/i,bp=/opacity=([^)]*)/,bq=/-([a-z])/ig,br=/([A-Z]|^ms)/g,bs=/^-?\d+(?:px)?$/i,bt=/^-?\d/,bu=/^[+\-]=/,bv=/[^+\-\.\de]+/g,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB,bC=function(a,b){return b.toUpperCase()};f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0,widows:!0,orphans:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bu.test(d)&&(d=+d.replace(bv,"")+parseFloat(f.css(a,c))),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bq,bC)}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){a.offsetWidth!==0?e=bD(a,b,d):f.swap(a,bw,function(){e=bD(a,b,d)});if(e<=0){e=bz(a,b,b),e==="0px"&&bB&&(e=bB(a,b,b));if(e!=null)return e===""||e==="auto"?"0px":e}if(e<0||e==null){e=a.style[b];return e===""||e==="auto"?"0px":e}return typeof e=="string"?e:e+"px"}},set:function(a,b){if(!bs.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bp.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bo.test(g)?g.replace(bo,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,c){var d,e,g;c=c.replace(br,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bs.test(d)&&bt.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bE=/%20/g,bF=/\[\]$/,bG=/\r?\n/g,bH=/#.*$/,bI=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bJ=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bK=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bL=/^(?:GET|HEAD)$/,bM=/^\/\//,bN=/\?/,bO=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bP=/^(?:select|textarea)/i,bQ=/\s+/,bR=/([?&])_=[^&]*/,bS=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bT=f.fn.load,bU={},bV={},bW,bX;try{bW=e.href}catch(bY){bW=c.createElement("a"),bW.href="",bW=bW.href}bX=bS.exec(bW.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bT)return bT.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bO,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bP.test(this.nodeName)||bJ.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bG,"\r\n")}}):{name:b.name,value:c.replace(bG,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bW,isLocal:bK.test(bX[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bZ(bU),ajaxTransport:bZ(bV),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?ca(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=cb(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bI.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bH,"").replace(bM,bX[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bQ),d.crossDomain==null&&(r=bS.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bX[1]&&r[2]==bX[2]&&(r[3]||(r[1]==="http:"?80:443))==(bX[3]||(bX[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bU,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bL.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bN.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bR,"$1_="+x);d.url=y+(y===d.url?(bN.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bV,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bE,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq,cr=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cv(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cm.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=cn.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this),f.isFunction(d.old)&&d.old.call(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function h(a){return d.step(a)}var d=this,e=f.fx,g;this.startTime=cq||cs(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,h.elem=this.elem,h()&&f.timers.push(h)&&!co&&(cr?(co=1,g=function(){co&&(cr(g),e.tick())},cr(g)):co=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cq||cs(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file
diff --git a/frontend/impattern/js/overlay.js b/frontend/impattern/js/overlay.js
new file mode 100644
index 0000000..49a70d1
--- /dev/null
+++ b/frontend/impattern/js/overlay.js
@@ -0,0 +1,19 @@
+$("#overlay > .close").click(function(){
+ $("#overlay").hide();
+});
+$('document').ready(function(){
+ $("#overlay").click( function(){
+ if( event.target == this ){
+ $("#overlay").hide();
+ return false;
+ }
+ });
+})
+function show_finished_image(image_url){
+ $("#overlay").show();
+ $("#draw_protector").hide();
+ $('#final_image > img').attr("src", image_url);
+ $('#links > input').attr("value", image_url);
+ $("#final_image").show();
+}
+
diff --git a/frontend/impattern/js/preview.js b/frontend/impattern/js/preview.js
new file mode 100644
index 0000000..0800308
--- /dev/null
+++ b/frontend/impattern/js/preview.js
@@ -0,0 +1,47 @@
+function Preview(){
+ var that = this;
+ this.preview_div = document.querySelectorAll('#sample')[0];
+// this.canvas = document.querySelectorAll('canvas')[0]
+// this.ctx = this.canvas.getContext('2d');
+ this.pat = ""
+ this._fill_preview = function(pat){
+ this.preview_div.style.background = 'url('+pat+')'
+ }
+//{{{
+// this._fill_preview = function(pat){
+// that.ctx.fillStyle = that.ctx.createPattern(pat, "repeat")
+// that.ctx.fillRect(
+// 0, 0,
+// that.canvas.width,
+// that.canvas.height
+// )
+// }
+// }}}
+ this.from_matrix = function(data){
+ var pat = document.createElement("canvas");
+ pat.height = data.height
+ pat.width = data.width
+ var pat_ctx = pat.getContext('2d')
+ for (var h = 0; h< data.height; h++){
+ for (var i = 0; i < data.width; i++){
+ if (parseInt(data.matrix[h][i])){
+ pat_ctx.fillRect(i, h, 1, 1)
+ }else{
+ pat_ctx.clearRect(i, h, 1, 1)
+ }
+ }
+ }
+
+ that._fill_preview(pat.toDataURL())
+ }
+ this.from_image = function(url){
+ var pat = document.createElement("img");
+ pat.src = url
+ pat.onload = function(){
+ that._fill_preview(pat.src)
+ }
+ }
+}
+$(document).ready(function(){
+ window.preview_controller = new Preview()
+})
diff --git a/frontend/impattern/js/sketch.js b/frontend/impattern/js/sketch.js
new file mode 100644
index 0000000..ec78489
--- /dev/null
+++ b/frontend/impattern/js/sketch.js
@@ -0,0 +1,219 @@
+//dragging event
+
+var COLUMNS_MAX = 20;
+var ROWS_MAX = 20;
+var isDragging = false;
+$("body").mousedown(function() {
+ $(window).mousemove(function() {
+ isDragging = true;
+ $(window).unbind("mousemove");
+ });
+}).mouseup(function() {
+ var wasDragging = isDragging;
+ isDragging = false;
+ $(window).unbind("mousemove");
+ if (!wasDragging) { //was clicking
+ }
+});
+
+var c;
+
+window.active_tool = "brush";
+var brush_tools;
+
+
+
+function BrushTools(){
+ var brushtools = this;
+ this.brush = $("#brush");
+ this.eraser = $("#eraser");
+ this.brush_tools = $(".brush_tools");
+ this.active_css = {
+ "border" : "1px solid black",
+ "background" : "gray",
+ "color" : "white",
+ },
+ this.inactive_css = {
+ "border" : "1px solid gray",
+ "background" : "whitesmoke",
+ "color" : "black",
+ };
+ this.activate = function(elem){
+ $(elem).css(this.active_css);
+ window.active_tool = $(elem).attr("id");
+ };
+ this.deactivate = function(elem){
+ $(elem).css(this.inactive_css);
+ };
+// this.cursors = {
+// "brush" : "img/brush.png",
+// "eraser" : "img/eraser.png",
+// };
+ this.brush_tools.click(function(){
+ var that = this;
+ window.active_tool = $(this).attr("id");
+ brushtools.activate(that);
+ brushtools.brush_tools.each(function(){
+ if(this != that){
+ brushtools.deactivate(this);
+ }
+ });
+// $("#canvas_wrapper").css(
+// "cursor" , "url("+brushtools.cursors[window.active_tool]+")"
+// )
+ });
+}
+
+
+
+
+function GridCanvas(){
+ var gridcanvas = this;
+ this.rows = 10;
+ this.cols = 10;
+ this.current_rows = [];
+ this.container = $("#canvas_wrapper");
+ this.paint = function(elem){
+ $(elem).attr("painted", "1");
+ $(elem).css("background", "black");
+ };
+ this.erase = function(elem){
+ $(elem).attr("painted", "0");
+ $(elem).css("background", "white");
+ };
+ this.initialize = function(cols, rows){
+ this.container.html("");
+ this.rows = (rows > 0) ? rows : 1;
+ this.cols = (cols > 0) ? cols : 1;
+ if (this.rows > ROWS_MAX){
+ this.rows = ROWS_MAX;
+ }
+ if (this.cols > COLUMNS_MAX){
+ this.cols = COLUMNS_MAX;
+ }
+ this.cols = cols;
+ for (var i = 0; i< this.rows; i++){
+ var row = document.createElement("div");
+ $(row).attr("id", "row_"+i)
+ $(row).addClass("canvas_row")
+ for (var j = 0; j< this.cols; j++){
+ var cell = document.createElement("span");
+ $(cell).addClass("canvas_cell")
+ $(cell).attr("painted", "0")
+ $(cell).addClass("column_"+j)
+ $(cell).html("&nbsp;")
+ $(cell).click(function(){
+ if (window.active_tool == 'brush'){
+ gridcanvas.paint(this);
+ }else if(window.active_tool == 'eraser'){
+ gridcanvas.erase(this);
+ }
+ });
+ $(cell).mouseover(function(){
+ if (isDragging){
+ if (window.active_tool == 'brush'){
+ gridcanvas.paint(this);
+ }else if(window.active_tool == 'eraser'){
+ gridcanvas.erase(this);
+ }
+ }
+ });
+ $(row).append(cell)
+ }
+ this.container.append(row)
+ }
+ }
+ this.toggleGrid = function(){
+ if ($("#show_grid").prop("checked")){
+ $(".canvas_cell").css("border","1px solid silver");
+ }else{
+ $(".canvas_cell").css("border","none");
+ }
+ }
+ this.serialize = function(){
+ var matrix = [];
+ for (var i = 0; i < this.rows; i++){
+ var row_storage = [];
+ $("#row_"+i+"> span").each(function(){
+ row_storage.push($(this).attr("painted"));
+ });
+ matrix.push(row_storage);
+ }
+ return {
+ "matrix" : matrix,
+ "width" : this.cols,
+ "height" : this.rows,
+ }
+ }
+}
+$("#cols").change(function(){
+ var cols = $(this).val()
+ c.initialize(cols, c.rows);
+});
+$("#rows").change(function(){
+ var rows = $(this).val()
+ c.initialize(c.cols, rows);
+});
+
+$('document').ready(function(){
+ $("#create_your_own").click(function(){
+ event.preventDefault();
+
+ $("#draw_protector").show();
+ $("#overlay > .close").html("CANCEL");
+ $("#overlay").show();
+ $("#draw").show();
+ $("#final_image").hide();
+ });
+ $("#overlay > .close").click(function(){
+ $("#draw").hide();
+ });
+
+ c = new GridCanvas()
+ brush_tools = new BrushTools();
+ c.initialize($("#cols").val(), $("#rows").val());
+ $("#show_grid").change(function(){
+ c.toggleGrid();
+ });
+ $("#drawing_finished").click(function(){
+
+ window.custom_pattern = c.serialize();
+ preview_controller.from_matrix(window.custom_pattern)
+ $('.patterns').attr("current_pattern", "");
+ $('#drawing_finished').prop("disabled", false);
+ $('#drawing_finished').html("DONE");
+ $("#draw_protector").css("background", "none");
+ $("#draw").hide();
+ $("#overlay").hide();
+ console.log(window.custom_pattern)
+ });
+
+});
+window.custom_pattern = "";
+
+$('#drawing_finished').click(function(){
+// $("#draw_protector").css("background", "url(img/loading.gif)");
+// $(this).prop("disabled", true);
+// $(this).html("Workin'...");
+// $.ajax({
+// type: "POST",
+// url: NEW_PATTERN_URL,
+// data: { json : JSON.stringify(c.serialize()) },
+// }).done(function( msg ) {
+// $('#drawing_finished').prop("disabled", false);
+// $('#drawing_finished').html("DONE");
+// $("#draw_protector").css("background", "none");
+// var error = msg.match(/ERR/ig);
+// if (error){
+// alert( "There was an error processing your request ");
+// return
+// }
+// $("#draw").hide();
+// $("#overlay").hide();
+// var parts = msg.split("\n")
+// window.custom_pattern = "http://i.asdf.us/patterns/"+parts[0]
+// $('#sample').css("background", "url("+window.custom_pattern+")");
+// })
+
+});
+
diff --git a/frontend/impattern/js/urls.js b/frontend/impattern/js/urls.js
new file mode 100644
index 0000000..3ba94ce
--- /dev/null
+++ b/frontend/impattern/js/urls.js
@@ -0,0 +1,3 @@
+var PROCESS_URL = '/im/api/impattern'
+//var PATTERNS_URL = '/cgi-bin/im/getpatterns'
+//var NEW_PATTERN_URL = '/cgi-bin/im/newpattern'
diff --git a/frontend/impattern/js/username.js b/frontend/impattern/js/username.js
new file mode 100644
index 0000000..eb89ed0
--- /dev/null
+++ b/frontend/impattern/js/username.js
@@ -0,0 +1,30 @@
+$(document).ready(function(){
+ var name = get_name_from_cookie()
+ $("#username").val(name)
+});
+
+function get_name_from_cookie()
+ {
+ if (document.cookie)
+ {
+ var cookies = document.cookie.split(";")
+ for (i in cookies)
+ {
+ var cookie = cookies[i].split("=")
+ if (cookie[0].indexOf("imname") !== -1)
+ {
+ if (cookie[1] !== 'false' && cookie[1] !== 'undefined' && cookie[1].length)
+ {
+ return cookie[1]
+ }
+ }
+ }
+ }
+ return ""
+};
+
+function update_username(username){
+ if (username.length > 0){
+ document.cookie = "imname="+username+";path=/;domain=.asdf.us;max-age=1086400"
+ }
+}
diff --git a/frontend/impattern/makePattern.py b/frontend/impattern/makePattern.py
new file mode 100755
index 0000000..98d298b
--- /dev/null
+++ b/frontend/impattern/makePattern.py
@@ -0,0 +1,111 @@
+#!/usr/bin/python2.7
+
+import sys
+import cgi
+from os import getpid, path
+from subprocess import call, Popen, PIPE
+import time
+
+MAIN_DIRECTORY = ""
+BIN_CONVERT = "convert"
+BIN_IDENTIFY = "identify"
+BIN_COMPOSITE = "composite"
+ACCEPTABLE_FILE_TYPES = [".png", ".jpg", ".gif", ".jpeg"]
+
+def usage():
+ sys.stderr.write("$>makePattern.py [ input_file ] [ pattern_file ] [ username ]");
+
+def now():
+ return str(int(time.time()))
+
+def image_dimensions_and_test(filename):
+ ident = Popen([BIN_IDENTIFY, filename], stdout=PIPE).communicate()[0]
+ partz = ident.split(" ")
+ filetype = "."+partz[1]
+ size = partz[6]
+ if filetype.lower() not in ACCEPTABLE_FILE_TYPES:
+ error("file was not an image")
+ return partz[2].split("x")
+
+def error(s):
+ " returns an error and exits the program "
+ print("ERROR: "+s)
+ exit(1)
+
+def hexdir(filename):
+ " creates a two-letter directory name "
+ return sha1(filename.encode()).hexdigest()[:2]
+#repage command convert original.png -resize 425x92 -repage 425x92+0+0 new.png
+
+class Pattern:
+
+ def __init__(self):
+ self.nametag = "imPattern";
+ self.pid = str(getpid())
+ self.pattern_file = "";
+ self.original_file = "";
+ self.username = "";
+ self.commands = [];
+
+ def makeResultFilename(self):
+ file_base, extension = path.splitext(self.original_file)
+ if len(file_base) > self.MAX_NAME_LENGTH:
+ file_base = file_base[0:self.MAX_NAME_LENGTH]
+ return "%s_%s_%s%s%s" % (file_base, self.username, self.nametag, now(), extension)
+
+ #first step
+ def makeCanvas(self):
+ call([BIN_CONVERT,"-size",self.dimensions[0]+"x"+self.dimensions[1],"canvas:transparent", self.canvas_file])
+
+ #second step use the Canvas as a background
+ def makeMask(self):
+ #tile the pattern pattern on the canvas
+ command = [BIN_COMPOSITE,"-tile", self.pattern_file, self.canvas_file, self.mask_file];
+ call(command)
+ self.commands.append(command)
+ #fuse the tiled file to create a mask
+ #convert thebg.gif -compose Dst_In null: thefile.gif -matte -layers composite new.gif
+ command = [BIN_CONVERT, self.mask_file, "-compose", "Dst_In", "null:", self.original_file, "-matte", "-layers", "composite", self.mask_file]
+ call(command)
+
+ #cleanup
+ call(["rm", self.canvas_file])
+
+ #third step
+ def fuseMask(self, fuse_mode="Pin_Light"):
+ call([BIN_CONVERT, self.mask_file, "null:", self.original_file, "-matte", "-compose", fuse_mode, "-layers", "composite", self.result_file])
+ call(["rm", self.mask_file])
+
+ def main(self, input_file_path, pattern_file, username=""):
+ self.pattern_file = pattern_file;
+ self.original_file = input_file_path;
+ self.username = username;
+ self.MAX_NAME_LENGTH = 10;
+
+ self.image_format = self.original_file.split(".")[-1]
+ self.dimensions = ""
+ try:
+ self.dimensions = image_dimensions_and_test(self.original_file);
+ except Exception as e:
+ sys.stderr.write(str(e));
+ error("Unable to determine dimensions")
+ self.canvas_file = self.pid+"blank_canvas.png";
+ self.makeCanvas();
+ self.mask_file = self.pid+"mask_file"+"."+self.image_format;
+ self.makeMask();
+ self.result_file = self.makeResultFilename();
+ self.fuseMask();
+
+if __name__ == "__main__":
+ p = Pattern();
+ if len(sys.argv) < 2 or len(sys.argv) > 3:
+ usage();
+ sys.exit(0);
+ input_file_path = sys.argv[1]
+ pattern_file = sys.argv[2]
+ username = "";
+# username = sys.argv[3]
+ print input_file_path;
+ print pattern_file;
+ print username;
+ p.main(input_file_path, pattern_file, username);
diff --git a/frontend/impattern/myjson.json b/frontend/impattern/myjson.json
new file mode 100644
index 0000000..ac685e7
--- /dev/null
+++ b/frontend/impattern/myjson.json
@@ -0,0 +1 @@
+{"matrix":[["0","0","0","0","0","0","0","0","0","0"],["0","0","0","1","1","0","0","0","0","0"],["0","0","1","1","0","0","0","0","0","0"],["0","0","1","1","1","1","0","0","0","0"],["0","1","1","0","0","0","0","0","0","0"],["1","0","0","0","0","0","0","0","0","0"],["1","1","1","1","1","1","1","1","1","1"],["0","0","0","0","0","1","1","0","0","1"],["0","0","0","0","0","0","1","0","1","1"],["0","0","0","0","0","0","0","1","1","0"]],"width":"10","height":"10"}
diff --git a/frontend/impattern/newimagefromjson.py b/frontend/impattern/newimagefromjson.py
new file mode 100644
index 0000000..5f62bd1
--- /dev/null
+++ b/frontend/impattern/newimagefromjson.py
@@ -0,0 +1,26 @@
+#!/usr/bin/python2.7
+import simplejson as json
+from PIL import Image
+import sys
+
+f = open("myjson.json", 'r');
+myjson = f.read();
+f.close();
+
+specs = json.loads(myjson);
+img = Image.new('RGBA', (int(specs['width']), int(specs['height'])));
+
+def boolToColor(boolean):
+ if boolean:
+ return (0,0,0,255);
+ else:
+ return (255,255,255,0)
+
+pixels = img.load();
+#for i in range(0, 9, 2):
+# dosomething(i)
+for i in range(0, len(specs['matrix'])):
+ for j in range(0, len(specs['matrix'][i])):
+ pixels[j,i] = boolToColor(int(specs['matrix'][i][j]));
+
+img.save("myimage.png", "PNG")
diff --git a/frontend/impattern/old/bottle.py b/frontend/impattern/old/bottle.py
new file mode 100644
index 0000000..40a858d
--- /dev/null
+++ b/frontend/impattern/old/bottle.py
@@ -0,0 +1,3605 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+Bottle is a fast and simple micro-framework for small web applications. It
+offers request dispatching (Routes) with url parameter support, templates,
+a built-in HTTP Server and adapters for many third party WSGI/HTTP-server and
+template engines - all in a single file and with no dependencies other than the
+Python Standard Library.
+
+Homepage and documentation: http://bottlepy.org/
+
+Copyright (c) 2012, Marcel Hellkamp.
+License: MIT (see LICENSE for details)
+"""
+
+from __future__ import with_statement
+
+__author__ = 'Marcel Hellkamp'
+__version__ = '0.12-dev'
+__license__ = 'MIT'
+
+# The gevent server adapter needs to patch some modules before they are imported
+# This is why we parse the commandline parameters here but handle them later
+if __name__ == '__main__':
+ from optparse import OptionParser
+ _cmd_parser = OptionParser(usage="usage: %prog [options] package.module:app")
+ _opt = _cmd_parser.add_option
+ _opt("--version", action="store_true", help="show version number.")
+ _opt("-b", "--bind", metavar="ADDRESS", help="bind socket to ADDRESS.")
+ _opt("-s", "--server", default='wsgiref', help="use SERVER as backend.")
+ _opt("-p", "--plugin", action="append", help="install additional plugin/s.")
+ _opt("--debug", action="store_true", help="start server in debug mode.")
+ _opt("--reload", action="store_true", help="auto-reload on file changes.")
+ _cmd_options, _cmd_args = _cmd_parser.parse_args()
+ if _cmd_options.server and _cmd_options.server.startswith('gevent'):
+ import gevent.monkey; gevent.monkey.patch_all()
+
+import base64, cgi, email.utils, functools, hmac, imp, itertools, mimetypes,\
+ os, re, subprocess, sys, tempfile, threading, time, warnings
+
+from datetime import date as datedate, datetime, timedelta
+from tempfile import TemporaryFile
+from traceback import format_exc, print_exc
+from inspect import getargspec
+
+try: from simplejson import dumps as json_dumps, loads as json_lds
+except ImportError: # pragma: no cover
+ try: from json import dumps as json_dumps, loads as json_lds
+ except ImportError:
+ try: from django.utils.simplejson import dumps as json_dumps, loads as json_lds
+ except ImportError:
+ def json_dumps(data):
+ raise ImportError("JSON support requires Python 2.6 or simplejson.")
+ json_lds = json_dumps
+
+
+
+# We now try to fix 2.5/2.6/3.1/3.2 incompatibilities.
+# It ain't pretty but it works... Sorry for the mess.
+
+py = sys.version_info
+py3k = py >= (3, 0, 0)
+py25 = py < (2, 6, 0)
+py31 = (3, 1, 0) <= py < (3, 2, 0)
+
+# Workaround for the missing "as" keyword in py3k.
+def _e(): return sys.exc_info()[1]
+
+# Workaround for the "print is a keyword/function" Python 2/3 dilemma
+# and a fallback for mod_wsgi (resticts stdout/err attribute access)
+try:
+ _stdout, _stderr = sys.stdout.write, sys.stderr.write
+except IOError:
+ _stdout = lambda x: sys.stdout.write(x)
+ _stderr = lambda x: sys.stderr.write(x)
+
+# Lots of stdlib and builtin differences.
+if py3k:
+ import http.client as httplib
+ import _thread as thread
+ from urllib.parse import urljoin, SplitResult as UrlSplitResult
+ from urllib.parse import urlencode, quote as urlquote, unquote as urlunquote
+ urlunquote = functools.partial(urlunquote, encoding='latin1')
+ from http.cookies import SimpleCookie
+ from collections import MutableMapping as DictMixin
+ import pickle
+ from io import BytesIO
+ from configparser import ConfigParser
+ basestring = str
+ unicode = str
+ json_loads = lambda s: json_lds(touni(s))
+ callable = lambda x: hasattr(x, '__call__')
+ imap = map
+ def _raise(*a): raise a[0](a[1]).with_traceback(a[2])
+else: # 2.x
+ import httplib
+ import thread
+ from urlparse import urljoin, SplitResult as UrlSplitResult
+ from urllib import urlencode, quote as urlquote, unquote as urlunquote
+ from Cookie import SimpleCookie
+ from itertools import imap
+ import cPickle as pickle
+ from StringIO import StringIO as BytesIO
+ from ConfigParser import SafeConfigParser as ConfigParser
+ if py25:
+ msg = "Python 2.5 support may be dropped in future versions of Bottle."
+ warnings.warn(msg, DeprecationWarning)
+ from UserDict import DictMixin
+ def next(it): return it.next()
+ bytes = str
+ else: # 2.6, 2.7
+ from collections import MutableMapping as DictMixin
+ json_loads = json_lds
+ eval(compile('def _raise(*a): raise a[0], a[1], a[2]', '<py3fix>', 'exec'))
+
+# Some helpers for string/byte handling
+def tob(s, enc='utf8'):
+ return s.encode(enc) if isinstance(s, unicode) else bytes(s)
+def touni(s, enc='utf8', err='strict'):
+ return s.decode(enc, err) if isinstance(s, bytes) else unicode(s)
+tonat = touni if py3k else tob
+
+# 3.2 fixes cgi.FieldStorage to accept bytes (which makes a lot of sense).
+# 3.1 needs a workaround.
+if py31:
+ from io import TextIOWrapper
+ class NCTextIOWrapper(TextIOWrapper):
+ def close(self): pass # Keep wrapped buffer open.
+
+
+# A bug in functools causes it to break if the wrapper is an instance method
+def update_wrapper(wrapper, wrapped, *a, **ka):
+ try: functools.update_wrapper(wrapper, wrapped, *a, **ka)
+ except AttributeError: pass
+
+
+
+# These helpers are used at module level and need to be defined first.
+# And yes, I know PEP-8, but sometimes a lower-case classname makes more sense.
+
+def depr(message, hard=False):
+ warnings.warn(message, DeprecationWarning, stacklevel=3)
+
+def makelist(data): # This is just to handy
+ if isinstance(data, (tuple, list, set, dict)): return list(data)
+ elif data: return [data]
+ else: return []
+
+
+class DictProperty(object):
+ ''' Property that maps to a key in a local dict-like attribute. '''
+ def __init__(self, attr, key=None, read_only=False):
+ self.attr, self.key, self.read_only = attr, key, read_only
+
+ def __call__(self, func):
+ functools.update_wrapper(self, func, updated=[])
+ self.getter, self.key = func, self.key or func.__name__
+ return self
+
+ def __get__(self, obj, cls):
+ if obj is None: return self
+ key, storage = self.key, getattr(obj, self.attr)
+ if key not in storage: storage[key] = self.getter(obj)
+ return storage[key]
+
+ def __set__(self, obj, value):
+ if self.read_only: raise AttributeError("Read-Only property.")
+ getattr(obj, self.attr)[self.key] = value
+
+ def __delete__(self, obj):
+ if self.read_only: raise AttributeError("Read-Only property.")
+ del getattr(obj, self.attr)[self.key]
+
+
+class cached_property(object):
+ ''' A property that is only computed once per instance and then replaces
+ itself with an ordinary attribute. Deleting the attribute resets the
+ property. '''
+
+ def __init__(self, func):
+ self.__doc__ = getattr(func, '__doc__')
+ self.func = func
+
+ def __get__(self, obj, cls):
+ if obj is None: return self
+ value = obj.__dict__[self.func.__name__] = self.func(obj)
+ return value
+
+
+class lazy_attribute(object):
+ ''' A property that caches itself to the class object. '''
+ def __init__(self, func):
+ functools.update_wrapper(self, func, updated=[])
+ self.getter = func
+
+ def __get__(self, obj, cls):
+ value = self.getter(cls)
+ setattr(cls, self.__name__, value)
+ return value
+
+
+
+
+
+
+###############################################################################
+# Exceptions and Events ########################################################
+###############################################################################
+
+
+class BottleException(Exception):
+ """ A base class for exceptions used by bottle. """
+ pass
+
+
+
+
+
+
+###############################################################################
+# Routing ######################################################################
+###############################################################################
+
+
+class RouteError(BottleException):
+ """ This is a base class for all routing related exceptions """
+
+
+class RouteReset(BottleException):
+ """ If raised by a plugin or request handler, the route is reset and all
+ plugins are re-applied. """
+
+class RouterUnknownModeError(RouteError): pass
+
+
+class RouteSyntaxError(RouteError):
+ """ The route parser found something not supported by this router. """
+
+
+class RouteBuildError(RouteError):
+ """ The route could not be built. """
+
+
+def _re_flatten(p):
+ ''' Turn all capturing groups in a regular expression pattern into
+ non-capturing groups. '''
+ if '(' not in p: return p
+ return re.sub(r'(\\*)(\(\?P<[^>]+>|\((?!\?))',
+ lambda m: m.group(0) if len(m.group(1)) % 2 else m.group(1) + '(?:', p)
+
+
+class Router(object):
+ ''' A Router is an ordered collection of route->target pairs. It is used to
+ efficiently match WSGI requests against a number of routes and return
+ the first target that satisfies the request. The target may be anything,
+ usually a string, ID or callable object. A route consists of a path-rule
+ and a HTTP method.
+
+ The path-rule is either a static path (e.g. `/contact`) or a dynamic
+ path that contains wildcards (e.g. `/wiki/<page>`). The wildcard syntax
+ and details on the matching order are described in docs:`routing`.
+ '''
+
+ default_pattern = '[^/]+'
+ default_filter = 're'
+
+ #: The current CPython regexp implementation does not allow more
+ #: than 99 matching groups per regular expression.
+ _MAX_GROUPS_PER_PATTERN = 99
+
+ def __init__(self, strict=False):
+ self.rules = [] # All rules in order
+ self._groups = {} # index of regexes to find them in dyna_routes
+ self.builder = {} # Data structure for the url builder
+ self.static = {} # Search structure for static routes
+ self.dyna_routes = {}
+ self.dyna_regexes = {} # Search structure for dynamic routes
+ #: If true, static routes are no longer checked first.
+ self.strict_order = strict
+ self.filters = {
+ 're': lambda conf:
+ (_re_flatten(conf or self.default_pattern), None, None),
+ 'int': lambda conf: (r'-?\d+', int, lambda x: str(int(x))),
+ 'float': lambda conf: (r'-?[\d.]+', float, lambda x: str(float(x))),
+ 'path': lambda conf: (r'.+?', None, None)}
+
+ def add_filter(self, name, func):
+ ''' Add a filter. The provided function is called with the configuration
+ string as parameter and must return a (regexp, to_python, to_url) tuple.
+ The first element is a string, the last two are callables or None. '''
+ self.filters[name] = func
+
+ rule_syntax = re.compile('(\\\\*)'\
+ '(?:(?::([a-zA-Z_][a-zA-Z_0-9]*)?()(?:#(.*?)#)?)'\
+ '|(?:<([a-zA-Z_][a-zA-Z_0-9]*)?(?::([a-zA-Z_]*)'\
+ '(?::((?:\\\\.|[^\\\\>]+)+)?)?)?>))')
+
+ def _itertokens(self, rule):
+ offset, prefix = 0, ''
+ for match in self.rule_syntax.finditer(rule):
+ prefix += rule[offset:match.start()]
+ g = match.groups()
+ if len(g[0])%2: # Escaped wildcard
+ prefix += match.group(0)[len(g[0]):]
+ offset = match.end()
+ continue
+ if prefix:
+ yield prefix, None, None
+ name, filtr, conf = g[4:7] if g[2] is None else g[1:4]
+ yield name, filtr or 'default', conf or None
+ offset, prefix = match.end(), ''
+ if offset <= len(rule) or prefix:
+ yield prefix+rule[offset:], None, None
+
+ def add(self, rule, method, target, name=None):
+ ''' Add a new rule or replace the target for an existing rule. '''
+ anons = 0 # Number of anonymous wildcards found
+ keys = [] # Names of keys
+ pattern = '' # Regular expression pattern with named groups
+ filters = [] # Lists of wildcard input filters
+ builder = [] # Data structure for the URL builder
+ is_static = True
+
+ for key, mode, conf in self._itertokens(rule):
+ if mode:
+ is_static = False
+ if mode == 'default': mode = self.default_filter
+ mask, in_filter, out_filter = self.filters[mode](conf)
+ if not key:
+ pattern += '(?:%s)' % mask
+ key = 'anon%d' % anons
+ anons += 1
+ else:
+ pattern += '(?P<%s>%s)' % (key, mask)
+ keys.append(key)
+ if in_filter: filters.append((key, in_filter))
+ builder.append((key, out_filter or str))
+ elif key:
+ pattern += re.escape(key)
+ builder.append((None, key))
+
+ self.builder[rule] = builder
+ if name: self.builder[name] = builder
+
+ if is_static and not self.strict_order:
+ self.static.setdefault(method, {})
+ self.static[method][self.build(rule)] = (target, None)
+ return
+
+ try:
+ re_pattern = re.compile('^(%s)$' % pattern)
+ re_match = re_pattern.match
+ except re.error:
+ raise RouteSyntaxError("Could not add Route: %s (%s)" % (rule, _e()))
+
+ if filters:
+ def getargs(path):
+ url_args = re_match(path).groupdict()
+ for name, wildcard_filter in filters:
+ try:
+ url_args[name] = wildcard_filter(url_args[name])
+ except ValueError:
+ raise HTTPError(400, 'Path has wrong format.')
+ return url_args
+ elif re_pattern.groupindex:
+ def getargs(path):
+ return re_match(path).groupdict()
+ else:
+ getargs = None
+
+ flatpat = _re_flatten(pattern)
+ whole_rule = (rule, flatpat, target, getargs)
+
+ if (flatpat, method) in self._groups:
+ if DEBUG:
+ msg = 'Route <%s %s> overwrites a previously defined route'
+ warnings.warn(msg % (method, rule), RuntimeWarning)
+ self.dyna_routes[method][self._groups[flatpat, method]] = whole_rule
+ else:
+ self.dyna_routes.setdefault(method, []).append(whole_rule)
+ self._groups[flatpat, method] = len(self.dyna_routes[method]) - 1
+
+ self._compile(method)
+
+ def _compile(self, method):
+ all_rules = self.dyna_routes[method]
+ comborules = self.dyna_regexes[method] = []
+ maxgroups = self._MAX_GROUPS_PER_PATTERN
+ for x in range(0, len(all_rules), maxgroups):
+ some = all_rules[x:x+maxgroups]
+ combined = (flatpat for (_, flatpat, _, _) in some)
+ combined = '|'.join('(^%s$)' % flatpat for flatpat in combined)
+ combined = re.compile(combined).match
+ rules = [(target, getargs) for (_, _, target, getargs) in some]
+ comborules.append((combined, rules))
+
+ def build(self, _name, *anons, **query):
+ ''' Build an URL by filling the wildcards in a rule. '''
+ builder = self.builder.get(_name)
+ if not builder: raise RouteBuildError("No route with that name.", _name)
+ try:
+ for i, value in enumerate(anons): query['anon%d'%i] = value
+ url = ''.join([f(query.pop(n)) if n else f for (n,f) in builder])
+ return url if not query else url+'?'+urlencode(query)
+ except KeyError:
+ raise RouteBuildError('Missing URL argument: %r' % _e().args[0])
+
+ def match(self, environ):
+ ''' Return a (target, url_agrs) tuple or raise HTTPError(400/404/405). '''
+ verb = environ['REQUEST_METHOD'].upper()
+ path = environ['PATH_INFO'] or '/'
+ target = None
+ methods = [verb, 'GET', 'ANY'] if verb == 'HEAD' else [verb, 'ANY']
+
+ for method in methods:
+ if method in self.static and path in self.static[method]:
+ target, getargs = self.static[method][path]
+ return target, getargs(path) if getargs else {}
+ elif method in self.dyna_regexes:
+ for combined, rules in self.dyna_regexes[method]:
+ match = combined(path)
+ if match:
+ target, getargs = rules[match.lastindex - 1]
+ return target, getargs(path) if getargs else {}
+
+ # No matching route found. Collect alternative methods for 405 response
+ allowed = set([])
+ nocheck = set(methods)
+ for method in set(self.static) - nocheck:
+ if path in self.static[method]:
+ allowed.add(verb)
+ for method in set(self.dyna_regexes) - allowed - nocheck:
+ for combined, rules in self.dyna_regexes[method]:
+ match = combined(path)
+ if match:
+ allowed.add(method)
+ if allowed:
+ allow_header = ",".join(sorted(allowed))
+ raise HTTPError(405, "Method not allowed.", Allow=allow_header)
+
+ # No matching route and no alternative method found. We give up
+ raise HTTPError(404, "Not found: " + repr(path))
+
+
+
+
+
+
+class Route(object):
+ ''' This class wraps a route callback along with route specific metadata and
+ configuration and applies Plugins on demand. It is also responsible for
+ turing an URL path rule into a regular expression usable by the Router.
+ '''
+
+ def __init__(self, app, rule, method, callback, name=None,
+ plugins=None, skiplist=None, **config):
+ #: The application this route is installed to.
+ self.app = app
+ #: The path-rule string (e.g. ``/wiki/:page``).
+ self.rule = rule
+ #: The HTTP method as a string (e.g. ``GET``).
+ self.method = method
+ #: The original callback with no plugins applied. Useful for introspection.
+ self.callback = callback
+ #: The name of the route (if specified) or ``None``.
+ self.name = name or None
+ #: A list of route-specific plugins (see :meth:`Bottle.route`).
+ self.plugins = plugins or []
+ #: A list of plugins to not apply to this route (see :meth:`Bottle.route`).
+ self.skiplist = skiplist or []
+ #: Additional keyword arguments passed to the :meth:`Bottle.route`
+ #: decorator are stored in this dictionary. Used for route-specific
+ #: plugin configuration and meta-data.
+ self.config = ConfigDict().load_dict(config)
+
+ def __call__(self, *a, **ka):
+ depr("Some APIs changed to return Route() instances instead of"\
+ " callables. Make sure to use the Route.call method and not to"\
+ " call Route instances directly.")
+ return self.call(*a, **ka)
+
+ @cached_property
+ def call(self):
+ ''' The route callback with all plugins applied. This property is
+ created on demand and then cached to speed up subsequent requests.'''
+ return self._make_callback()
+
+ def reset(self):
+ ''' Forget any cached values. The next time :attr:`call` is accessed,
+ all plugins are re-applied. '''
+ self.__dict__.pop('call', None)
+
+ def prepare(self):
+ ''' Do all on-demand work immediately (useful for debugging).'''
+ self.call
+
+ @property
+ def _context(self):
+ depr('Switch to Plugin API v2 and access the Route object directly.')
+ return dict(rule=self.rule, method=self.method, callback=self.callback,
+ name=self.name, app=self.app, config=self.config,
+ apply=self.plugins, skip=self.skiplist)
+
+ def all_plugins(self):
+ ''' Yield all Plugins affecting this route. '''
+ unique = set()
+ for p in reversed(self.app.plugins + self.plugins):
+ if True in self.skiplist: break
+ name = getattr(p, 'name', False)
+ if name and (name in self.skiplist or name in unique): continue
+ if p in self.skiplist or type(p) in self.skiplist: continue
+ if name: unique.add(name)
+ yield p
+
+ def _make_callback(self):
+ callback = self.callback
+ for plugin in self.all_plugins():
+ try:
+ if hasattr(plugin, 'apply'):
+ api = getattr(plugin, 'api', 1)
+ context = self if api > 1 else self._context
+ callback = plugin.apply(callback, context)
+ else:
+ callback = plugin(callback)
+ except RouteReset: # Try again with changed configuration.
+ return self._make_callback()
+ if not callback is self.callback:
+ update_wrapper(callback, self.callback)
+ return callback
+
+ def get_undecorated_callback(self):
+ ''' Return the callback. If the callback is a decorated function, try to
+ recover the original function. '''
+ func = self.callback
+ func = getattr(func, '__func__' if py3k else 'im_func', func)
+ closure_attr = '__closure__' if py3k else 'func_closure'
+ while hasattr(func, closure_attr) and getattr(func, closure_attr):
+ func = getattr(func, closure_attr)[0].cell_contents
+ return func
+
+ def get_callback_args(self):
+ ''' Return a list of argument names the callback (most likely) accepts
+ as keyword arguments. If the callback is a decorated function, try
+ to recover the original function before inspection. '''
+ return getargspec(self.get_undecorated_callback())[0]
+
+ def get_config(key, default=None):
+ ''' Lookup a config field and return its value, first checking the
+ route.config, then route.app.config.'''
+ for conf in (self.config, self.app.conifg):
+ if key in conf: return conf[key]
+ return default
+
+ def __repr__(self):
+ cb = self.get_undecorated_callback()
+ return '<%s %r %r>' % (self.method, self.rule, cb)
+
+
+
+
+
+
+###############################################################################
+# Application Object ###########################################################
+###############################################################################
+
+
+class Bottle(object):
+ """ Each Bottle object represents a single, distinct web application and
+ consists of routes, callbacks, plugins, resources and configuration.
+ Instances are callable WSGI applications.
+
+ :param catchall: If true (default), handle all exceptions. Turn off to
+ let debugging middleware handle exceptions.
+ """
+
+ def __init__(self, catchall=True, autojson=True):
+
+ #: A :class:`ConfigDict` for app specific configuration.
+ self.config = ConfigDict()
+ self.config._on_change = functools.partial(self.trigger_hook, 'config')
+ self.config.meta_set('autojson', 'validate', bool)
+ self.config.meta_set('catchall', 'validate', bool)
+ self.config['catchall'] = catchall
+ self.config['autojson'] = autojson
+
+ #: A :class:`ResourceManager` for application files
+ self.resources = ResourceManager()
+
+ self.routes = [] # List of installed :class:`Route` instances.
+ self.router = Router() # Maps requests to :class:`Route` instances.
+ self.error_handler = {}
+
+ # Core plugins
+ self.plugins = [] # List of installed plugins.
+ if self.config['autojson']:
+ self.install(JSONPlugin())
+ self.install(TemplatePlugin())
+
+ #: If true, most exceptions are caught and returned as :exc:`HTTPError`
+ catchall = DictProperty('config', 'catchall')
+
+ __hook_names = 'before_request', 'after_request', 'app_reset', 'config'
+ __hook_reversed = 'after_request'
+
+ @cached_property
+ def _hooks(self):
+ return dict((name, []) for name in self.__hook_names)
+
+ def add_hook(self, name, func):
+ ''' Attach a callback to a hook. Three hooks are currently implemented:
+
+ before_request
+ Executed once before each request. The request context is
+ available, but no routing has happened yet.
+ after_request
+ Executed once after each request regardless of its outcome.
+ app_reset
+ Called whenever :meth:`Bottle.reset` is called.
+ '''
+ if name in self.__hook_reversed:
+ self._hooks[name].insert(0, func)
+ else:
+ self._hooks[name].append(func)
+
+ def remove_hook(self, name, func):
+ ''' Remove a callback from a hook. '''
+ if name in self._hooks and func in self._hooks[name]:
+ self._hooks[name].remove(func)
+ return True
+
+ def trigger_hook(self, __name, *args, **kwargs):
+ ''' Trigger a hook and return a list of results. '''
+ return [hook(*args, **kwargs) for hook in self._hooks[__name][:]]
+
+ def hook(self, name):
+ """ Return a decorator that attaches a callback to a hook. See
+ :meth:`add_hook` for details."""
+ def decorator(func):
+ self.add_hook(name, func)
+ return func
+ return decorator
+
+ def mount(self, prefix, app, **options):
+ ''' Mount an application (:class:`Bottle` or plain WSGI) to a specific
+ URL prefix. Example::
+
+ root_app.mount('/admin/', admin_app)
+
+ :param prefix: path prefix or `mount-point`. If it ends in a slash,
+ that slash is mandatory.
+ :param app: an instance of :class:`Bottle` or a WSGI application.
+
+ All other parameters are passed to the underlying :meth:`route` call.
+ '''
+ if isinstance(app, basestring):
+ depr('Parameter order of Bottle.mount() changed.', True) # 0.10
+
+ segments = [p for p in prefix.split('/') if p]
+ if not segments: raise ValueError('Empty path prefix.')
+ path_depth = len(segments)
+
+ def mountpoint_wrapper():
+ try:
+ request.path_shift(path_depth)
+ rs = HTTPResponse([])
+ def start_response(status, headerlist, exc_info=None):
+ if exc_info:
+ try:
+ _raise(*exc_info)
+ finally:
+ exc_info = None
+ rs.status = status
+ for name, value in headerlist: rs.add_header(name, value)
+ return rs.body.append
+ body = app(request.environ, start_response)
+ if body and rs.body: body = itertools.chain(rs.body, body)
+ rs.body = body or rs.body
+ return rs
+ finally:
+ request.path_shift(-path_depth)
+
+ options.setdefault('skip', True)
+ options.setdefault('method', 'ANY')
+ options.setdefault('mountpoint', {'prefix': prefix, 'target': app})
+ options['callback'] = mountpoint_wrapper
+
+ self.route('/%s/<:re:.*>' % '/'.join(segments), **options)
+ if not prefix.endswith('/'):
+ self.route('/' + '/'.join(segments), **options)
+
+ def merge(self, routes):
+ ''' Merge the routes of another :class:`Bottle` application or a list of
+ :class:`Route` objects into this application. The routes keep their
+ 'owner', meaning that the :data:`Route.app` attribute is not
+ changed. '''
+ if isinstance(routes, Bottle):
+ routes = routes.routes
+ for route in routes:
+ self.add_route(route)
+
+ def install(self, plugin):
+ ''' Add a plugin to the list of plugins and prepare it for being
+ applied to all routes of this application. A plugin may be a simple
+ decorator or an object that implements the :class:`Plugin` API.
+ '''
+ if hasattr(plugin, 'setup'): plugin.setup(self)
+ if not callable(plugin) and not hasattr(plugin, 'apply'):
+ raise TypeError("Plugins must be callable or implement .apply()")
+ self.plugins.append(plugin)
+ self.reset()
+ return plugin
+
+ def uninstall(self, plugin):
+ ''' Uninstall plugins. Pass an instance to remove a specific plugin, a type
+ object to remove all plugins that match that type, a string to remove
+ all plugins with a matching ``name`` attribute or ``True`` to remove all
+ plugins. Return the list of removed plugins. '''
+ removed, remove = [], plugin
+ for i, plugin in list(enumerate(self.plugins))[::-1]:
+ if remove is True or remove is plugin or remove is type(plugin) \
+ or getattr(plugin, 'name', True) == remove:
+ removed.append(plugin)
+ del self.plugins[i]
+ if hasattr(plugin, 'close'): plugin.close()
+ if removed: self.reset()
+ return removed
+
+ def reset(self, route=None):
+ ''' Reset all routes (force plugins to be re-applied) and clear all
+ caches. If an ID or route object is given, only that specific route
+ is affected. '''
+ if route is None: routes = self.routes
+ elif isinstance(route, Route): routes = [route]
+ else: routes = [self.routes[route]]
+ for route in routes: route.reset()
+ if DEBUG:
+ for route in routes: route.prepare()
+ self.trigger_hook('app_reset')
+
+ def close(self):
+ ''' Close the application and all installed plugins. '''
+ for plugin in self.plugins:
+ if hasattr(plugin, 'close'): plugin.close()
+ self.stopped = True
+
+ def run(self, **kwargs):
+ ''' Calls :func:`run` with the same parameters. '''
+ run(self, **kwargs)
+
+ def match(self, environ):
+ """ Search for a matching route and return a (:class:`Route` , urlargs)
+ tuple. The second value is a dictionary with parameters extracted
+ from the URL. Raise :exc:`HTTPError` (404/405) on a non-match."""
+ return self.router.match(environ)
+
+ def get_url(self, routename, **kargs):
+ """ Return a string that matches a named route """
+ scriptname = request.environ.get('SCRIPT_NAME', '').strip('/') + '/'
+ location = self.router.build(routename, **kargs).lstrip('/')
+ return urljoin(urljoin('/', scriptname), location)
+
+ def add_route(self, route):
+ ''' Add a route object, but do not change the :data:`Route.app`
+ attribute.'''
+ self.routes.append(route)
+ self.router.add(route.rule, route.method, route, name=route.name)
+ if DEBUG: route.prepare()
+
+ def route(self, path=None, method='GET', callback=None, name=None,
+ apply=None, skip=None, **config):
+ """ A decorator to bind a function to a request URL. Example::
+
+ @app.route('/hello/:name')
+ def hello(name):
+ return 'Hello %s' % name
+
+ The ``:name`` part is a wildcard. See :class:`Router` for syntax
+ details.
+
+ :param path: Request path or a list of paths to listen to. If no
+ path is specified, it is automatically generated from the
+ signature of the function.
+ :param method: HTTP method (`GET`, `POST`, `PUT`, ...) or a list of
+ methods to listen to. (default: `GET`)
+ :param callback: An optional shortcut to avoid the decorator
+ syntax. ``route(..., callback=func)`` equals ``route(...)(func)``
+ :param name: The name for this route. (default: None)
+ :param apply: A decorator or plugin or a list of plugins. These are
+ applied to the route callback in addition to installed plugins.
+ :param skip: A list of plugins, plugin classes or names. Matching
+ plugins are not installed to this route. ``True`` skips all.
+
+ Any additional keyword arguments are stored as route-specific
+ configuration and passed to plugins (see :meth:`Plugin.apply`).
+ """
+ if callable(path): path, callback = None, path
+ plugins = makelist(apply)
+ skiplist = makelist(skip)
+ def decorator(callback):
+ # TODO: Documentation and tests
+ if isinstance(callback, basestring): callback = load(callback)
+ for rule in makelist(path) or yieldroutes(callback):
+ for verb in makelist(method):
+ verb = verb.upper()
+ route = Route(self, rule, verb, callback, name=name,
+ plugins=plugins, skiplist=skiplist, **config)
+ self.add_route(route)
+ return callback
+ return decorator(callback) if callback else decorator
+
+ def get(self, path=None, method='GET', **options):
+ """ Equals :meth:`route`. """
+ return self.route(path, method, **options)
+
+ def post(self, path=None, method='POST', **options):
+ """ Equals :meth:`route` with a ``POST`` method parameter. """
+ return self.route(path, method, **options)
+
+ def put(self, path=None, method='PUT', **options):
+ """ Equals :meth:`route` with a ``PUT`` method parameter. """
+ return self.route(path, method, **options)
+
+ def delete(self, path=None, method='DELETE', **options):
+ """ Equals :meth:`route` with a ``DELETE`` method parameter. """
+ return self.route(path, method, **options)
+
+ def error(self, code=500):
+ """ Decorator: Register an output handler for a HTTP error code"""
+ def wrapper(handler):
+ self.error_handler[int(code)] = handler
+ return handler
+ return wrapper
+
+ def handle(self, path, method='GET'):
+ """ (deprecated) Execute the first matching route callback and return
+ the result. :exc:`HTTPResponse` exceptions are caught and returned.
+ If :attr:`Bottle.catchall` is true, other exceptions are caught as
+ well and returned as :exc:`HTTPError` instances (500).
+ """
+ depr("This method will change semantics in 0.10. Try to avoid it.")
+ if isinstance(path, dict):
+ return self._handle(path)
+ return self._handle({'PATH_INFO': path, 'REQUEST_METHOD': method.upper()})
+
+ def default_error_handler(self, res):
+ return tob(template(ERROR_PAGE_TEMPLATE, e=res))
+
+ def _handle(self, environ):
+ try:
+ environ['bottle.app'] = self
+ request.bind(environ)
+ response.bind()
+
+ try:
+ self.trigger_hook('before_request')
+ route, args = self.router.match(environ)
+ environ['route.handle'] = route
+ environ['bottle.route'] = route
+ environ['route.url_args'] = args
+ return route.call(**args)
+ finally:
+ self.trigger_hook('after_request')
+
+ except HTTPResponse:
+ return _e()
+ except RouteReset:
+ route.reset()
+ return self._handle(environ)
+ except (KeyboardInterrupt, SystemExit, MemoryError):
+ raise
+ except Exception:
+ if not self.catchall: raise
+ stacktrace = format_exc()
+ environ['wsgi.errors'].write(stacktrace)
+ return HTTPError(500, "Internal Server Error", _e(), stacktrace)
+
+ def _cast(self, out, peek=None):
+ """ Try to convert the parameter into something WSGI compatible and set
+ correct HTTP headers when possible.
+ Support: False, str, unicode, dict, HTTPResponse, HTTPError, file-like,
+ iterable of strings and iterable of unicodes
+ """
+
+ # Empty output is done here
+ if not out:
+ if 'Content-Length' not in response:
+ response['Content-Length'] = 0
+ return []
+ # Join lists of byte or unicode strings. Mixed lists are NOT supported
+ if isinstance(out, (tuple, list))\
+ and isinstance(out[0], (bytes, unicode)):
+ out = out[0][0:0].join(out) # b'abc'[0:0] -> b''
+ # Encode unicode strings
+ if isinstance(out, unicode):
+ out = out.encode(response.charset)
+ # Byte Strings are just returned
+ if isinstance(out, bytes):
+ if 'Content-Length' not in response:
+ response['Content-Length'] = len(out)
+ return [out]
+ # HTTPError or HTTPException (recursive, because they may wrap anything)
+ # TODO: Handle these explicitly in handle() or make them iterable.
+ if isinstance(out, HTTPError):
+ out.apply(response)
+ out = self.error_handler.get(out.status_code, self.default_error_handler)(out)
+ return self._cast(out)
+ if isinstance(out, HTTPResponse):
+ out.apply(response)
+ return self._cast(out.body)
+
+ # File-like objects.
+ if hasattr(out, 'read'):
+ if 'wsgi.file_wrapper' in request.environ:
+ return request.environ['wsgi.file_wrapper'](out)
+ elif hasattr(out, 'close') or not hasattr(out, '__iter__'):
+ return WSGIFileWrapper(out)
+
+ # Handle Iterables. We peek into them to detect their inner type.
+ try:
+ iout = iter(out)
+ first = next(iout)
+ while not first:
+ first = next(iout)
+ except StopIteration:
+ return self._cast('')
+ except HTTPResponse:
+ first = _e()
+ except (KeyboardInterrupt, SystemExit, MemoryError):
+ raise
+ except Exception:
+ if not self.catchall: raise
+ first = HTTPError(500, 'Unhandled exception', _e(), format_exc())
+
+ # These are the inner types allowed in iterator or generator objects.
+ if isinstance(first, HTTPResponse):
+ return self._cast(first)
+ elif isinstance(first, bytes):
+ new_iter = itertools.chain([first], iout)
+ elif isinstance(first, unicode):
+ encoder = lambda x: x.encode(response.charset)
+ new_iter = imap(encoder, itertools.chain([first], iout))
+ else:
+ msg = 'Unsupported response type: %s' % type(first)
+ return self._cast(HTTPError(500, msg))
+ if hasattr(out, 'close'):
+ new_iter = _closeiter(new_iter, out.close)
+ return new_iter
+
+ def wsgi(self, environ, start_response):
+ """ The bottle WSGI-interface. """
+ try:
+ out = self._cast(self._handle(environ))
+ # rfc2616 section 4.3
+ if response._status_code in (100, 101, 204, 304)\
+ or environ['REQUEST_METHOD'] == 'HEAD':
+ if hasattr(out, 'close'): out.close()
+ out = []
+ start_response(response._status_line, response.headerlist)
+ return out
+ except (KeyboardInterrupt, SystemExit, MemoryError):
+ raise
+ except Exception:
+ if not self.catchall: raise
+ err = '<h1>Critical error while processing request: %s</h1>' \
+ % html_escape(environ.get('PATH_INFO', '/'))
+ if DEBUG:
+ err += '<h2>Error:</h2>\n<pre>\n%s\n</pre>\n' \
+ '<h2>Traceback:</h2>\n<pre>\n%s\n</pre>\n' \
+ % (html_escape(repr(_e())), html_escape(format_exc()))
+ environ['wsgi.errors'].write(err)
+ headers = [('Content-Type', 'text/html; charset=UTF-8')]
+ start_response('500 INTERNAL SERVER ERROR', headers, sys.exc_info())
+ return [tob(err)]
+
+ def __call__(self, environ, start_response):
+ ''' Each instance of :class:'Bottle' is a WSGI application. '''
+ return self.wsgi(environ, start_response)
+
+
+
+
+
+
+###############################################################################
+# HTTP and WSGI Tools ##########################################################
+###############################################################################
+
+class BaseRequest(object):
+ """ A wrapper for WSGI environment dictionaries that adds a lot of
+ convenient access methods and properties. Most of them are read-only.
+
+ Adding new attributes to a request actually adds them to the environ
+ dictionary (as 'bottle.request.ext.<name>'). This is the recommended
+ way to store and access request-specific data.
+ """
+
+ __slots__ = ('environ')
+
+ #: Maximum size of memory buffer for :attr:`body` in bytes.
+ MEMFILE_MAX = 102400
+ #: Maximum number pr GET or POST parameters per request
+ MAX_PARAMS = 100
+
+ def __init__(self, environ=None):
+ """ Wrap a WSGI environ dictionary. """
+ #: The wrapped WSGI environ dictionary. This is the only real attribute.
+ #: All other attributes actually are read-only properties.
+ self.environ = {} if environ is None else environ
+ self.environ['bottle.request'] = self
+
+ @DictProperty('environ', 'bottle.app', read_only=True)
+ def app(self):
+ ''' Bottle application handling this request. '''
+ raise RuntimeError('This request is not connected to an application.')
+
+ @DictProperty('environ', 'bottle.route', read_only=True)
+ def route(self):
+ """ The bottle :class:`Route` object that matches this request. """
+ raise RuntimeError('This request is not connected to a route.')
+
+ @DictProperty('environ', 'route.url_args', read_only=True)
+ def url_args(self):
+ """ The arguments extracted from the URL. """
+ raise RuntimeError('This request is not connected to a route.')
+
+ @property
+ def path(self):
+ ''' The value of ``PATH_INFO`` with exactly one prefixed slash (to fix
+ broken clients and avoid the "empty path" edge case). '''
+ return '/' + self.environ.get('PATH_INFO','').lstrip('/')
+
+ @property
+ def method(self):
+ ''' The ``REQUEST_METHOD`` value as an uppercase string. '''
+ return self.environ.get('REQUEST_METHOD', 'GET').upper()
+
+ @DictProperty('environ', 'bottle.request.headers', read_only=True)
+ def headers(self):
+ ''' A :class:`WSGIHeaderDict` that provides case-insensitive access to
+ HTTP request headers. '''
+ return WSGIHeaderDict(self.environ)
+
+ def get_header(self, name, default=None):
+ ''' Return the value of a request header, or a given default value. '''
+ return self.headers.get(name, default)
+
+ @DictProperty('environ', 'bottle.request.cookies', read_only=True)
+ def cookies(self):
+ """ Cookies parsed into a :class:`FormsDict`. Signed cookies are NOT
+ decoded. Use :meth:`get_cookie` if you expect signed cookies. """
+ cookies = SimpleCookie(self.environ.get('HTTP_COOKIE','')).values()
+ if len(cookies) > self.MAX_PARAMS:
+ raise HTTPError(413, 'Too many cookies')
+ return FormsDict((c.key, c.value) for c in cookies)
+
+ def get_cookie(self, key, default=None, secret=None):
+ """ Return the content of a cookie. To read a `Signed Cookie`, the
+ `secret` must match the one used to create the cookie (see
+ :meth:`BaseResponse.set_cookie`). If anything goes wrong (missing
+ cookie or wrong signature), return a default value. """
+ value = self.cookies.get(key)
+ if secret and value:
+ dec = cookie_decode(value, secret) # (key, value) tuple or None
+ return dec[1] if dec and dec[0] == key else default
+ return value or default
+
+ @DictProperty('environ', 'bottle.request.query', read_only=True)
+ def query(self):
+ ''' The :attr:`query_string` parsed into a :class:`FormsDict`. These
+ values are sometimes called "URL arguments" or "GET parameters", but
+ not to be confused with "URL wildcards" as they are provided by the
+ :class:`Router`. '''
+ get = self.environ['bottle.get'] = FormsDict()
+ pairs = _parse_qsl(self.environ.get('QUERY_STRING', ''))
+ if len(pairs) > self.MAX_PARAMS:
+ raise HTTPError(413, 'Too many parameters')
+ for key, value in pairs:
+ get[key] = value
+ return get
+
+ @DictProperty('environ', 'bottle.request.forms', read_only=True)
+ def forms(self):
+ """ Form values parsed from an `url-encoded` or `multipart/form-data`
+ encoded POST or PUT request body. The result is returned as a
+ :class:`FormsDict`. All keys and values are strings. File uploads
+ are stored separately in :attr:`files`. """
+ forms = FormsDict()
+ for name, item in self.POST.allitems():
+ if not isinstance(item, FileUpload):
+ forms[name] = item
+ return forms
+
+ @DictProperty('environ', 'bottle.request.params', read_only=True)
+ def params(self):
+ """ A :class:`FormsDict` with the combined values of :attr:`query` and
+ :attr:`forms`. File uploads are stored in :attr:`files`. """
+ params = FormsDict()
+ for key, value in self.query.allitems():
+ params[key] = value
+ for key, value in self.forms.allitems():
+ params[key] = value
+ return params
+
+ @DictProperty('environ', 'bottle.request.files', read_only=True)
+ def files(self):
+ """ File uploads parsed from `multipart/form-data` encoded POST or PUT
+ request body. The values are instances of :class:`FileUpload`.
+
+ """
+ files = FormsDict()
+ for name, item in self.POST.allitems():
+ if isinstance(item, FileUpload):
+ files[name] = item
+ return files
+
+ @DictProperty('environ', 'bottle.request.json', read_only=True)
+ def json(self):
+ ''' If the ``Content-Type`` header is ``application/json``, this
+ property holds the parsed content of the request body. Only requests
+ smaller than :attr:`MEMFILE_MAX` are processed to avoid memory
+ exhaustion. '''
+ if 'application/json' in self.environ.get('CONTENT_TYPE', ''):
+ return json_loads(self._get_body_string())
+ return None
+
+ @DictProperty('environ', 'bottle.request.body', read_only=True)
+ def _body(self):
+ maxread = max(0, self.content_length)
+ stream = self.environ['wsgi.input']
+ body = BytesIO() if maxread < self.MEMFILE_MAX else TemporaryFile(mode='w+b')
+ while maxread > 0:
+ part = stream.read(min(maxread, self.MEMFILE_MAX))
+ if not part: break
+ body.write(part)
+ maxread -= len(part)
+ self.environ['wsgi.input'] = body
+ body.seek(0)
+ return body
+
+ def _get_body_string(self):
+ ''' read body until content-length or MEMFILE_MAX into a string. Raise
+ HTTPError(413) on requests that are to large. '''
+ clen = self.content_length
+ if clen > self.MEMFILE_MAX:
+ raise HTTPError(413, 'Request to large')
+ if clen < 0: clen = self.MEMFILE_MAX + 1
+ data = self.body.read(clen)
+ if len(data) > self.MEMFILE_MAX: # Fail fast
+ raise HTTPError(413, 'Request to large')
+ return data
+
+ @property
+ def body(self):
+ """ The HTTP request body as a seek-able file-like object. Depending on
+ :attr:`MEMFILE_MAX`, this is either a temporary file or a
+ :class:`io.BytesIO` instance. Accessing this property for the first
+ time reads and replaces the ``wsgi.input`` environ variable.
+ Subsequent accesses just do a `seek(0)` on the file object. """
+ self._body.seek(0)
+ return self._body
+
+ #: An alias for :attr:`query`.
+ GET = query
+
+ @DictProperty('environ', 'bottle.request.post', read_only=True)
+ def POST(self):
+ """ The values of :attr:`forms` and :attr:`files` combined into a single
+ :class:`FormsDict`. Values are either strings (form values) or
+ instances of :class:`cgi.FieldStorage` (file uploads).
+ """
+ post = FormsDict()
+ # We default to application/x-www-form-urlencoded for everything that
+ # is not multipart and take the fast path (also: 3.1 workaround)
+ if not self.content_type.startswith('multipart/'):
+ pairs = _parse_qsl(tonat(self._get_body_string(), 'latin1'))
+ if len(pairs) > self.MAX_PARAMS:
+ raise HTTPError(413, 'Too many parameters')
+ for key, value in pairs:
+ post[key] = value
+ return post
+
+ safe_env = {'QUERY_STRING':''} # Build a safe environment for cgi
+ for key in ('REQUEST_METHOD', 'CONTENT_TYPE', 'CONTENT_LENGTH'):
+ if key in self.environ: safe_env[key] = self.environ[key]
+ args = dict(fp=self.body, environ=safe_env, keep_blank_values=True)
+ if py31:
+ args['fp'] = NCTextIOWrapper(args['fp'], encoding='latin1',
+ newline='\n')
+ elif py3k:
+ args['encoding'] = 'latin1'
+ data = cgi.FieldStorage(**args)
+ data = data.list or []
+ if len(data) > self.MAX_PARAMS:
+ raise HTTPError(413, 'Too many parameters')
+ for item in data:
+ if item.filename:
+ post[item.name] = FileUpload(item.file, item.name,
+ item.filename, item.headers)
+ else:
+ post[item.name] = item.value
+ return post
+
+ @property
+ def COOKIES(self):
+ ''' Alias for :attr:`cookies` (deprecated). '''
+ depr('BaseRequest.COOKIES was renamed to BaseRequest.cookies (lowercase).')
+ return self.cookies
+
+ @property
+ def url(self):
+ """ The full request URI including hostname and scheme. If your app
+ lives behind a reverse proxy or load balancer and you get confusing
+ results, make sure that the ``X-Forwarded-Host`` header is set
+ correctly. """
+ return self.urlparts.geturl()
+
+ @DictProperty('environ', 'bottle.request.urlparts', read_only=True)
+ def urlparts(self):
+ ''' The :attr:`url` string as an :class:`urlparse.SplitResult` tuple.
+ The tuple contains (scheme, host, path, query_string and fragment),
+ but the fragment is always empty because it is not visible to the
+ server. '''
+ env = self.environ
+ http = env.get('HTTP_X_FORWARDED_PROTO') or env.get('wsgi.url_scheme', 'http')
+ host = env.get('HTTP_X_FORWARDED_HOST') or env.get('HTTP_HOST')
+ if not host:
+ # HTTP 1.1 requires a Host-header. This is for HTTP/1.0 clients.
+ host = env.get('SERVER_NAME', '127.0.0.1')
+ port = env.get('SERVER_PORT')
+ if port and port != ('80' if http == 'http' else '443'):
+ host += ':' + port
+ path = urlquote(self.fullpath)
+ return UrlSplitResult(http, host, path, env.get('QUERY_STRING'), '')
+
+ @property
+ def fullpath(self):
+ """ Request path including :attr:`script_name` (if present). """
+ return urljoin(self.script_name, self.path.lstrip('/'))
+
+ @property
+ def query_string(self):
+ """ The raw :attr:`query` part of the URL (everything in between ``?``
+ and ``#``) as a string. """
+ return self.environ.get('QUERY_STRING', '')
+
+ @property
+ def script_name(self):
+ ''' The initial portion of the URL's `path` that was removed by a higher
+ level (server or routing middleware) before the application was
+ called. This script path is returned with leading and tailing
+ slashes. '''
+ script_name = self.environ.get('SCRIPT_NAME', '').strip('/')
+ return '/' + script_name + '/' if script_name else '/'
+
+ def path_shift(self, shift=1):
+ ''' Shift path segments from :attr:`path` to :attr:`script_name` and
+ vice versa.
+
+ :param shift: The number of path segments to shift. May be negative
+ to change the shift direction. (default: 1)
+ '''
+ script = self.environ.get('SCRIPT_NAME','/')
+ self['SCRIPT_NAME'], self['PATH_INFO'] = path_shift(script, self.path, shift)
+
+ @property
+ def content_length(self):
+ ''' The request body length as an integer. The client is responsible to
+ set this header. Otherwise, the real length of the body is unknown
+ and -1 is returned. In this case, :attr:`body` will be empty. '''
+ return int(self.environ.get('CONTENT_LENGTH') or -1)
+
+ @property
+ def content_type(self):
+ ''' The Content-Type header as a lowercase-string (default: empty). '''
+ return self.environ.get('CONTENT_TYPE', '').lower()
+
+ @property
+ def is_xhr(self):
+ ''' True if the request was triggered by a XMLHttpRequest. This only
+ works with JavaScript libraries that support the `X-Requested-With`
+ header (most of the popular libraries do). '''
+ requested_with = self.environ.get('HTTP_X_REQUESTED_WITH','')
+ return requested_with.lower() == 'xmlhttprequest'
+
+ @property
+ def is_ajax(self):
+ ''' Alias for :attr:`is_xhr`. "Ajax" is not the right term. '''
+ return self.is_xhr
+
+ @property
+ def auth(self):
+ """ HTTP authentication data as a (user, password) tuple. This
+ implementation currently supports basic (not digest) authentication
+ only. If the authentication happened at a higher level (e.g. in the
+ front web-server or a middleware), the password field is None, but
+ the user field is looked up from the ``REMOTE_USER`` environ
+ variable. On any errors, None is returned. """
+ basic = parse_auth(self.environ.get('HTTP_AUTHORIZATION',''))
+ if basic: return basic
+ ruser = self.environ.get('REMOTE_USER')
+ if ruser: return (ruser, None)
+ return None
+
+ @property
+ def remote_route(self):
+ """ A list of all IPs that were involved in this request, starting with
+ the client IP and followed by zero or more proxies. This does only
+ work if all proxies support the ```X-Forwarded-For`` header. Note
+ that this information can be forged by malicious clients. """
+ proxy = self.environ.get('HTTP_X_FORWARDED_FOR')
+ if proxy: return [ip.strip() for ip in proxy.split(',')]
+ remote = self.environ.get('REMOTE_ADDR')
+ return [remote] if remote else []
+
+ @property
+ def remote_addr(self):
+ """ The client IP as a string. Note that this information can be forged
+ by malicious clients. """
+ route = self.remote_route
+ return route[0] if route else None
+
+ def copy(self):
+ """ Return a new :class:`Request` with a shallow :attr:`environ` copy. """
+ return Request(self.environ.copy())
+
+ def get(self, value, default=None): return self.environ.get(value, default)
+ def __getitem__(self, key): return self.environ[key]
+ def __delitem__(self, key): self[key] = ""; del(self.environ[key])
+ def __iter__(self): return iter(self.environ)
+ def __len__(self): return len(self.environ)
+ def keys(self): return self.environ.keys()
+ def __setitem__(self, key, value):
+ """ Change an environ value and clear all caches that depend on it. """
+
+ if self.environ.get('bottle.request.readonly'):
+ raise KeyError('The environ dictionary is read-only.')
+
+ self.environ[key] = value
+ todelete = ()
+
+ if key == 'wsgi.input':
+ todelete = ('body', 'forms', 'files', 'params', 'post', 'json')
+ elif key == 'QUERY_STRING':
+ todelete = ('query', 'params')
+ elif key.startswith('HTTP_'):
+ todelete = ('headers', 'cookies')
+
+ for key in todelete:
+ self.environ.pop('bottle.request.'+key, None)
+
+ def __repr__(self):
+ return '<%s: %s %s>' % (self.__class__.__name__, self.method, self.url)
+
+ def __getattr__(self, name):
+ ''' Search in self.environ for additional user defined attributes. '''
+ try:
+ var = self.environ['bottle.request.ext.%s'%name]
+ return var.__get__(self) if hasattr(var, '__get__') else var
+ except KeyError:
+ raise AttributeError('Attribute %r not defined.' % name)
+
+ def __setattr__(self, name, value):
+ if name == 'environ': return object.__setattr__(self, name, value)
+ self.environ['bottle.request.ext.%s'%name] = value
+
+
+
+
+def _hkey(s):
+ return s.title().replace('_','-')
+
+
+class HeaderProperty(object):
+ def __init__(self, name, reader=None, writer=str, default=''):
+ self.name, self.default = name, default
+ self.reader, self.writer = reader, writer
+ self.__doc__ = 'Current value of the %r header.' % name.title()
+
+ def __get__(self, obj, cls):
+ if obj is None: return self
+ value = obj.headers.get(self.name, self.default)
+ return self.reader(value) if self.reader else value
+
+ def __set__(self, obj, value):
+ obj.headers[self.name] = self.writer(value)
+
+ def __delete__(self, obj):
+ del obj.headers[self.name]
+
+
+class BaseResponse(object):
+ """ Storage class for a response body as well as headers and cookies.
+
+ This class does support dict-like case-insensitive item-access to
+ headers, but is NOT a dict. Most notably, iterating over a response
+ yields parts of the body and not the headers.
+
+ :param body: The response body as one of the supported types.
+ :param status: Either an HTTP status code (e.g. 200) or a status line
+ including the reason phrase (e.g. '200 OK').
+ :param headers: A dictionary or a list of name-value pairs.
+
+ Additional keyword arguments are added to the list of headers.
+ Underscores in the header name are replaced with dashes.
+ """
+
+ default_status = 200
+ default_content_type = 'text/html; charset=UTF-8'
+
+ # Header blacklist for specific response codes
+ # (rfc2616 section 10.2.3 and 10.3.5)
+ bad_headers = {
+ 204: set(('Content-Type',)),
+ 304: set(('Allow', 'Content-Encoding', 'Content-Language',
+ 'Content-Length', 'Content-Range', 'Content-Type',
+ 'Content-Md5', 'Last-Modified'))}
+
+ def __init__(self, body='', status=None, headers=None, **more_headers):
+ self._cookies = None
+ self._headers = {}
+ self.body = body
+ self.status = status or self.default_status
+ if headers:
+ if isinstance(headers, dict):
+ headers = headers.items()
+ for name, value in headers:
+ self.add_header(name, value)
+ if more_headers:
+ for name, value in more_headers.items():
+ self.add_header(name, value)
+
+ def copy(self, cls=None):
+ ''' Returns a copy of self. '''
+ cls = cls or BaseResponse
+ assert issubclass(cls, BaseResponse)
+ copy = cls()
+ copy.status = self.status
+ copy._headers = dict((k, v[:]) for (k, v) in self._headers.items())
+ copy.COOKIES.load(self.COOKIES.output())
+ return copy
+
+ def __iter__(self):
+ return iter(self.body)
+
+ def close(self):
+ if hasattr(self.body, 'close'):
+ self.body.close()
+
+ @property
+ def status_line(self):
+ ''' The HTTP status line as a string (e.g. ``404 Not Found``).'''
+ return self._status_line
+
+ @property
+ def status_code(self):
+ ''' The HTTP status code as an integer (e.g. 404).'''
+ return self._status_code
+
+ def _set_status(self, status):
+ if isinstance(status, int):
+ code, status = status, _HTTP_STATUS_LINES.get(status)
+ elif ' ' in status:
+ status = status.strip()
+ code = int(status.split()[0])
+ else:
+ raise ValueError('String status line without a reason phrase.')
+ if not 100 <= code <= 999: raise ValueError('Status code out of range.')
+ self._status_code = code
+ self._status_line = str(status or ('%d Unknown' % code))
+
+ def _get_status(self):
+ return self._status_line
+
+ status = property(_get_status, _set_status, None,
+ ''' A writeable property to change the HTTP response status. It accepts
+ either a numeric code (100-999) or a string with a custom reason
+ phrase (e.g. "404 Brain not found"). Both :data:`status_line` and
+ :data:`status_code` are updated accordingly. The return value is
+ always a status string. ''')
+ del _get_status, _set_status
+
+ @property
+ def headers(self):
+ ''' An instance of :class:`HeaderDict`, a case-insensitive dict-like
+ view on the response headers. '''
+ hdict = HeaderDict()
+ hdict.dict = self._headers
+ return hdict
+
+ def __contains__(self, name): return _hkey(name) in self._headers
+ def __delitem__(self, name): del self._headers[_hkey(name)]
+ def __getitem__(self, name): return self._headers[_hkey(name)][-1]
+ def __setitem__(self, name, value): self._headers[_hkey(name)] = [str(value)]
+
+ def get_header(self, name, default=None):
+ ''' Return the value of a previously defined header. If there is no
+ header with that name, return a default value. '''
+ return self._headers.get(_hkey(name), [default])[-1]
+
+ def set_header(self, name, value):
+ ''' Create a new response header, replacing any previously defined
+ headers with the same name. '''
+ self._headers[_hkey(name)] = [str(value)]
+
+ def add_header(self, name, value):
+ ''' Add an additional response header, not removing duplicates. '''
+ self._headers.setdefault(_hkey(name), []).append(str(value))
+
+ def iter_headers(self):
+ ''' Yield (header, value) tuples, skipping headers that are not
+ allowed with the current response status code. '''
+ return self.headerlist
+
+ def wsgiheader(self):
+ depr('The wsgiheader method is deprecated. See headerlist.') #0.10
+ return self.headerlist
+
+ @property
+ def headerlist(self):
+ ''' WSGI conform list of (header, value) tuples. '''
+ out = []
+ headers = list(self._headers.items())
+ if 'Content-Type' not in self._headers:
+ headers.append(('Content-Type', [self.default_content_type]))
+ if self._status_code in self.bad_headers:
+ bad_headers = self.bad_headers[self._status_code]
+ headers = [h for h in headers if h[0] not in bad_headers]
+ out += [(name, val) for name, vals in headers for val in vals]
+ if self._cookies:
+ for c in self._cookies.values():
+ out.append(('Set-Cookie', c.OutputString()))
+ return out
+
+ content_type = HeaderProperty('Content-Type')
+ content_length = HeaderProperty('Content-Length', reader=int)
+ expires = HeaderProperty('Expires',
+ reader=lambda x: datetime.utcfromtimestamp(parse_date(x)),
+ writer=lambda x: http_date(x))
+
+ @property
+ def charset(self, default='UTF-8'):
+ """ Return the charset specified in the content-type header (default: utf8). """
+ if 'charset=' in self.content_type:
+ return self.content_type.split('charset=')[-1].split(';')[0].strip()
+ return default
+
+ @property
+ def COOKIES(self):
+ """ A dict-like SimpleCookie instance. This should not be used directly.
+ See :meth:`set_cookie`. """
+ depr('The COOKIES dict is deprecated. Use `set_cookie()` instead.') # 0.10
+ if not self._cookies:
+ self._cookies = SimpleCookie()
+ return self._cookies
+
+ def set_cookie(self, name, value, secret=None, **options):
+ ''' Create a new cookie or replace an old one. If the `secret` parameter is
+ set, create a `Signed Cookie` (described below).
+
+ :param name: the name of the cookie.
+ :param value: the value of the cookie.
+ :param secret: a signature key required for signed cookies.
+
+ Additionally, this method accepts all RFC 2109 attributes that are
+ supported by :class:`cookie.Morsel`, including:
+
+ :param max_age: maximum age in seconds. (default: None)
+ :param expires: a datetime object or UNIX timestamp. (default: None)
+ :param domain: the domain that is allowed to read the cookie.
+ (default: current domain)
+ :param path: limits the cookie to a given path (default: current path)
+ :param secure: limit the cookie to HTTPS connections (default: off).
+ :param httponly: prevents client-side javascript to read this cookie
+ (default: off, requires Python 2.6 or newer).
+
+ If neither `expires` nor `max_age` is set (default), the cookie will
+ expire at the end of the browser session (as soon as the browser
+ window is closed).
+
+ Signed cookies may store any pickle-able object and are
+ cryptographically signed to prevent manipulation. Keep in mind that
+ cookies are limited to 4kb in most browsers.
+
+ Warning: Signed cookies are not encrypted (the client can still see
+ the content) and not copy-protected (the client can restore an old
+ cookie). The main intention is to make pickling and unpickling
+ save, not to store secret information at client side.
+ '''
+ if not self._cookies:
+ self._cookies = SimpleCookie()
+
+ if secret:
+ value = touni(cookie_encode((name, value), secret))
+ elif not isinstance(value, basestring):
+ raise TypeError('Secret key missing for non-string Cookie.')
+
+ if len(value) > 4096: raise ValueError('Cookie value to long.')
+ self._cookies[name] = value
+
+ for key, value in options.items():
+ if key == 'max_age':
+ if isinstance(value, timedelta):
+ value = value.seconds + value.days * 24 * 3600
+ if key == 'expires':
+ if isinstance(value, (datedate, datetime)):
+ value = value.timetuple()
+ elif isinstance(value, (int, float)):
+ value = time.gmtime(value)
+ value = time.strftime("%a, %d %b %Y %H:%M:%S GMT", value)
+ self._cookies[name][key.replace('_', '-')] = value
+
+ def delete_cookie(self, key, **kwargs):
+ ''' Delete a cookie. Be sure to use the same `domain` and `path`
+ settings as used to create the cookie. '''
+ kwargs['max_age'] = -1
+ kwargs['expires'] = 0
+ self.set_cookie(key, '', **kwargs)
+
+ def __repr__(self):
+ out = ''
+ for name, value in self.headerlist:
+ out += '%s: %s\n' % (name.title(), value.strip())
+ return out
+
+#: Thread-local storage for :class:`LocalRequest` and :class:`LocalResponse`
+#: attributes.
+_lctx = threading.local()
+
+def local_property(name):
+ def fget(self):
+ try:
+ return getattr(_lctx, name)
+ except AttributeError:
+ raise RuntimeError("Request context not initialized.")
+ def fset(self, value): setattr(_lctx, name, value)
+ def fdel(self): delattr(_lctx, name)
+ return property(fget, fset, fdel,
+ 'Thread-local property stored in :data:`_lctx.%s`' % name)
+
+
+class LocalRequest(BaseRequest):
+ ''' A thread-local subclass of :class:`BaseRequest` with a different
+ set of attribues for each thread. There is usually only one global
+ instance of this class (:data:`request`). If accessed during a
+ request/response cycle, this instance always refers to the *current*
+ request (even on a multithreaded server). '''
+ bind = BaseRequest.__init__
+ environ = local_property('request_environ')
+
+
+class LocalResponse(BaseResponse):
+ ''' A thread-local subclass of :class:`BaseResponse` with a different
+ set of attribues for each thread. There is usually only one global
+ instance of this class (:data:`response`). Its attributes are used
+ to build the HTTP response at the end of the request/response cycle.
+ '''
+ bind = BaseResponse.__init__
+ _status_line = local_property('response_status_line')
+ _status_code = local_property('response_status_code')
+ _cookies = local_property('response_cookies')
+ _headers = local_property('response_headers')
+ body = local_property('response_body')
+
+
+Request = BaseRequest
+Response = BaseResponse
+
+
+class HTTPResponse(Response, BottleException):
+ def __init__(self, body='', status=None, headers=None,
+ header=None, **more_headers):
+ if header or 'output' in more_headers:
+ depr('Call signature changed (for the better). See BaseResponse')
+ if header: more_headers.update(header)
+ if 'output' in more_headers: body = more_headers.pop('output')
+ super(HTTPResponse, self).__init__(body, status, headers, **more_headers)
+
+ def apply(self, response):
+ response._status_code = self._status_code
+ response._status_line = self._status_line
+ response._headers = self._headers
+ response._cookies = self._cookies
+ response.body = self.body
+
+ def _output(self, value=None):
+ depr('Use HTTPResponse.body instead of HTTPResponse.output')
+ if value is None: return self.body
+ self.body = value
+
+ output = property(_output, _output, doc='Alias for .body')
+
+
+class HTTPError(HTTPResponse):
+ default_status = 500
+ def __init__(self, status=None, body=None, exception=None, traceback=None,
+ **options):
+ self.exception = exception
+ self.traceback = traceback
+ super(HTTPError, self).__init__(body, status, **options)
+
+
+
+
+
+###############################################################################
+# Plugins ######################################################################
+###############################################################################
+
+class PluginError(BottleException): pass
+
+
+class JSONPlugin(object):
+ name = 'json'
+ api = 2
+
+ def __init__(self, json_dumps=json_dumps):
+ self.json_dumps = json_dumps
+
+ def apply(self, callback, route):
+ dumps = self.json_dumps
+ if not dumps: return callback
+ def wrapper(*a, **ka):
+ try:
+ rv = callback(*a, **ka)
+ except HTTPError:
+ rv = _e()
+
+ if isinstance(rv, dict):
+ #Attempt to serialize, raises exception on failure
+ json_response = dumps(rv)
+ #Set content type only if serialization succesful
+ response.content_type = 'application/json'
+ return json_response
+ elif isinstance(rv, HTTPResponse) and isinstance(rv.body, dict):
+ rv.body = dumps(rv.body)
+ rv.content_type = 'application/json'
+ return rv
+
+ return wrapper
+
+
+class TemplatePlugin(object):
+ ''' This plugin applies the :func:`view` decorator to all routes with a
+ `template` config parameter. If the parameter is a tuple, the second
+ element must be a dict with additional options (e.g. `template_engine`)
+ or default variables for the template. '''
+ name = 'template'
+ api = 2
+
+ def apply(self, callback, route):
+ conf = route.config.get('template')
+ if isinstance(conf, (tuple, list)) and len(conf) == 2:
+ return view(conf[0], **conf[1])(callback)
+ elif isinstance(conf, str):
+ return view(conf)(callback)
+ else:
+ return callback
+
+
+#: Not a plugin, but part of the plugin API. TODO: Find a better place.
+class _ImportRedirect(object):
+ def __init__(self, name, impmask):
+ ''' Create a virtual package that redirects imports (see PEP 302). '''
+ self.name = name
+ self.impmask = impmask
+ self.module = sys.modules.setdefault(name, imp.new_module(name))
+ self.module.__dict__.update({'__file__': __file__, '__path__': [],
+ '__all__': [], '__loader__': self})
+ sys.meta_path.append(self)
+
+ def find_module(self, fullname, path=None):
+ if '.' not in fullname: return
+ packname, modname = fullname.rsplit('.', 1)
+ if packname != self.name: return
+ return self
+
+ def load_module(self, fullname):
+ if fullname in sys.modules: return sys.modules[fullname]
+ packname, modname = fullname.rsplit('.', 1)
+ realname = self.impmask % modname
+ __import__(realname)
+ module = sys.modules[fullname] = sys.modules[realname]
+ setattr(self.module, modname, module)
+ module.__loader__ = self
+ return module
+
+
+
+
+
+
+###############################################################################
+# Common Utilities #############################################################
+###############################################################################
+
+
+class MultiDict(DictMixin):
+ """ This dict stores multiple values per key, but behaves exactly like a
+ normal dict in that it returns only the newest value for any given key.
+ There are special methods available to access the full list of values.
+ """
+
+ def __init__(self, *a, **k):
+ self.dict = dict((k, [v]) for (k, v) in dict(*a, **k).items())
+
+ def __len__(self): return len(self.dict)
+ def __iter__(self): return iter(self.dict)
+ def __contains__(self, key): return key in self.dict
+ def __delitem__(self, key): del self.dict[key]
+ def __getitem__(self, key): return self.dict[key][-1]
+ def __setitem__(self, key, value): self.append(key, value)
+ def keys(self): return self.dict.keys()
+
+ if py3k:
+ def values(self): return (v[-1] for v in self.dict.values())
+ def items(self): return ((k, v[-1]) for k, v in self.dict.items())
+ def allitems(self):
+ return ((k, v) for k, vl in self.dict.items() for v in vl)
+ iterkeys = keys
+ itervalues = values
+ iteritems = items
+ iterallitems = allitems
+
+ else:
+ def values(self): return [v[-1] for v in self.dict.values()]
+ def items(self): return [(k, v[-1]) for k, v in self.dict.items()]
+ def iterkeys(self): return self.dict.iterkeys()
+ def itervalues(self): return (v[-1] for v in self.dict.itervalues())
+ def iteritems(self):
+ return ((k, v[-1]) for k, v in self.dict.iteritems())
+ def iterallitems(self):
+ return ((k, v) for k, vl in self.dict.iteritems() for v in vl)
+ def allitems(self):
+ return [(k, v) for k, vl in self.dict.iteritems() for v in vl]
+
+ def get(self, key, default=None, index=-1, type=None):
+ ''' Return the most recent value for a key.
+
+ :param default: The default value to be returned if the key is not
+ present or the type conversion fails.
+ :param index: An index for the list of available values.
+ :param type: If defined, this callable is used to cast the value
+ into a specific type. Exception are suppressed and result in
+ the default value to be returned.
+ '''
+ try:
+ val = self.dict[key][index]
+ return type(val) if type else val
+ except Exception:
+ pass
+ return default
+
+ def append(self, key, value):
+ ''' Add a new value to the list of values for this key. '''
+ self.dict.setdefault(key, []).append(value)
+
+ def replace(self, key, value):
+ ''' Replace the list of values with a single value. '''
+ self.dict[key] = [value]
+
+ def getall(self, key):
+ ''' Return a (possibly empty) list of values for a key. '''
+ return self.dict.get(key) or []
+
+ #: Aliases for WTForms to mimic other multi-dict APIs (Django)
+ getone = get
+ getlist = getall
+
+
+class FormsDict(MultiDict):
+ ''' This :class:`MultiDict` subclass is used to store request form data.
+ Additionally to the normal dict-like item access methods (which return
+ unmodified data as native strings), this container also supports
+ attribute-like access to its values. Attributes are automatically de-
+ or recoded to match :attr:`input_encoding` (default: 'utf8'). Missing
+ attributes default to an empty string. '''
+
+ #: Encoding used for attribute values.
+ input_encoding = 'utf8'
+ #: If true (default), unicode strings are first encoded with `latin1`
+ #: and then decoded to match :attr:`input_encoding`.
+ recode_unicode = True
+
+ def _fix(self, s, encoding=None):
+ if isinstance(s, unicode) and self.recode_unicode: # Python 3 WSGI
+ s = s.encode('latin1')
+ if isinstance(s, bytes): # Python 2 WSGI
+ return s.decode(encoding or self.input_encoding)
+ return s
+
+ def decode(self, encoding=None):
+ ''' Returns a copy with all keys and values de- or recoded to match
+ :attr:`input_encoding`. Some libraries (e.g. WTForms) want a
+ unicode dictionary. '''
+ copy = FormsDict()
+ enc = copy.input_encoding = encoding or self.input_encoding
+ copy.recode_unicode = False
+ for key, value in self.allitems():
+ copy.append(self._fix(key, enc), self._fix(value, enc))
+ return copy
+
+ def getunicode(self, name, default=None, encoding=None):
+ ''' Return the value as a unicode string, or the default. '''
+ try:
+ return self._fix(self[name], encoding)
+ except (UnicodeError, KeyError):
+ return default
+
+ def __getattr__(self, name, default=unicode()):
+ # Without this guard, pickle generates a cryptic TypeError:
+ if name.startswith('__') and name.endswith('__'):
+ return super(FormsDict, self).__getattr__(name)
+ return self.getunicode(name, default=default)
+
+
+class HeaderDict(MultiDict):
+ """ A case-insensitive version of :class:`MultiDict` that defaults to
+ replace the old value instead of appending it. """
+
+ def __init__(self, *a, **ka):
+ self.dict = {}
+ if a or ka: self.update(*a, **ka)
+
+ def __contains__(self, key): return _hkey(key) in self.dict
+ def __delitem__(self, key): del self.dict[_hkey(key)]
+ def __getitem__(self, key): return self.dict[_hkey(key)][-1]
+ def __setitem__(self, key, value): self.dict[_hkey(key)] = [str(value)]
+ def append(self, key, value):
+ self.dict.setdefault(_hkey(key), []).append(str(value))
+ def replace(self, key, value): self.dict[_hkey(key)] = [str(value)]
+ def getall(self, key): return self.dict.get(_hkey(key)) or []
+ def get(self, key, default=None, index=-1):
+ return MultiDict.get(self, _hkey(key), default, index)
+ def filter(self, names):
+ for name in [_hkey(n) for n in names]:
+ if name in self.dict:
+ del self.dict[name]
+
+
+class WSGIHeaderDict(DictMixin):
+ ''' This dict-like class wraps a WSGI environ dict and provides convenient
+ access to HTTP_* fields. Keys and values are native strings
+ (2.x bytes or 3.x unicode) and keys are case-insensitive. If the WSGI
+ environment contains non-native string values, these are de- or encoded
+ using a lossless 'latin1' character set.
+
+ The API will remain stable even on changes to the relevant PEPs.
+ Currently PEP 333, 444 and 3333 are supported. (PEP 444 is the only one
+ that uses non-native strings.)
+ '''
+ #: List of keys that do not have a ``HTTP_`` prefix.
+ cgikeys = ('CONTENT_TYPE', 'CONTENT_LENGTH')
+
+ def __init__(self, environ):
+ self.environ = environ
+
+ def _ekey(self, key):
+ ''' Translate header field name to CGI/WSGI environ key. '''
+ key = key.replace('-','_').upper()
+ if key in self.cgikeys:
+ return key
+ return 'HTTP_' + key
+
+ def raw(self, key, default=None):
+ ''' Return the header value as is (may be bytes or unicode). '''
+ return self.environ.get(self._ekey(key), default)
+
+ def __getitem__(self, key):
+ return tonat(self.environ[self._ekey(key)], 'latin1')
+
+ def __setitem__(self, key, value):
+ raise TypeError("%s is read-only." % self.__class__)
+
+ def __delitem__(self, key):
+ raise TypeError("%s is read-only." % self.__class__)
+
+ def __iter__(self):
+ for key in self.environ:
+ if key[:5] == 'HTTP_':
+ yield key[5:].replace('_', '-').title()
+ elif key in self.cgikeys:
+ yield key.replace('_', '-').title()
+
+ def keys(self): return [x for x in self]
+ def __len__(self): return len(self.keys())
+ def __contains__(self, key): return self._ekey(key) in self.environ
+
+
+
+class ConfigDict(dict):
+ ''' A dict-like configuration storage with additional support for
+ namespaces, validators, meta-data, on_change listeners and more.
+ '''
+
+ __slots__ = ('_meta', '_on_change')
+
+ def __init__(self, *a, **ka):
+ self._meta = {}
+ self._on_change = lambda name, value: None
+ if a or ka:
+ depr('Constructor does no longer accept parameters.')
+ self.update(*a, **ka)
+
+ def load_config(self, filename):
+ ''' Load values from an *.ini style config file.
+
+ If the config file contains sections, their names are used as
+ namespaces for the values within. The two special sections
+ ``DEFAULT`` and ``bottle`` refer to the root namespace (no prefix).
+ '''
+ conf = ConfigParser()
+ conf.read(filename)
+ for section in conf.sections():
+ for key, value in conf.items(section):
+ if section not in ('DEFAULT', 'bottle'):
+ key = section + '.' + key
+ self[key] = value
+ return self
+
+ def load_dict(self, source, namespace=''):
+ ''' Load values from a dictionary structure. Nesting can be used to
+ represent namespaces.
+
+ >>> c.load_dict({'some': {'namespace': {'key': 'value'} } })
+ {'some.namespace.key': 'value'}
+ '''
+ for key, value in source.items():
+ if isinstance(key, str):
+ nskey = (namespace + '.' + key).strip('.')
+ if isinstance(value, dict):
+ self.load_dict(value, namespace=nskey)
+ else:
+ self[nskey] = value
+ else:
+ raise TypeError('Key has type %r (not a string)' % type(key))
+ return self
+
+ def update(self, *a, **ka):
+ ''' If the first parameter is a string, all keys are prefixed with this
+ namespace. Apart from that it works just as the usual dict.update().
+ Example: ``update('some.namespace', key='value')`` '''
+ prefix = ''
+ if a and isinstance(a[0], str):
+ prefix = a[0].strip('.') + '.'
+ a = a[1:]
+ for key, value in dict(*a, **ka).items():
+ self[prefix+key] = value
+
+ def setdefault(self, key, value):
+ if key not in self:
+ self[key] = value
+
+ def __setitem__(self, key, value):
+ if not isinstance(key, str):
+ raise TypeError('Key has type %r (not a string)' % type(key))
+ value = self.meta_get(key, 'filter', lambda x: x)(value)
+ if key in self and self[key] is value:
+ return
+ self._on_change(key, value)
+ dict.__setitem__(self, key, value)
+
+ def __delitem__(self, key):
+ self._on_change(key, None)
+ dict.__delitem__(self, key)
+
+ def meta_get(self, key, metafield, default=None):
+ ''' Return the value of a meta field for a key. '''
+ return self._meta.get(key, {}).get(metafield, default)
+
+ def meta_set(self, key, metafield, value):
+ ''' Set the meta field for a key to a new value. This triggers the
+ on-change handler for existing keys. '''
+ self._meta.setdefault(key, {})[metafield] = value
+ if key in self:
+ self[key] = self[key]
+
+ def meta_list(self, key):
+ ''' Return an iterable of meta field names defined for a key. '''
+ return self._meta.get(key, {}).keys()
+
+ # Deprecated ConfigDict features
+ def __getattr__(self, key):
+ depr('Attribute access is deprecated.') #0.12
+ if key not in self and key[0].isupper():
+ self[key] = ConfigDict()
+ return self.get(key)
+
+ def __setattr__(self, key, value):
+ if key in self.__slots__:
+ return dict.__setattr__(self, key, value)
+ depr('Attribute assignment is deprecated.') #0.12
+ if hasattr(dict, key):
+ raise AttributeError('Read-only attribute.')
+ if key in self and self[key] and isinstance(self[key], ConfigDict):
+ raise AttributeError('Non-empty namespace attribute.')
+ self[key] = value
+
+ def __delattr__(self, key):
+ if key in self: del self[key]
+
+ def __call__(self, *a, **ka):
+ depr('Calling ConfDict is deprecated. Use the update() method.') #0.12
+ self.update(*a, **ka)
+ return self
+
+
+
+class AppStack(list):
+ """ A stack-like list. Calling it returns the head of the stack. """
+
+ def __call__(self):
+ """ Return the current default application. """
+ return self[-1]
+
+ def push(self, value=None):
+ """ Add a new :class:`Bottle` instance to the stack """
+ if not isinstance(value, Bottle):
+ value = Bottle()
+ self.append(value)
+ return value
+
+
+class WSGIFileWrapper(object):
+
+ def __init__(self, fp, buffer_size=1024*64):
+ self.fp, self.buffer_size = fp, buffer_size
+ for attr in ('fileno', 'close', 'read', 'readlines', 'tell', 'seek'):
+ if hasattr(fp, attr): setattr(self, attr, getattr(fp, attr))
+
+ def __iter__(self):
+ buff, read = self.buffer_size, self.read
+ while True:
+ part = read(buff)
+ if not part: return
+ yield part
+
+
+class _closeiter(object):
+ ''' This only exists to be able to attach a .close method to iterators that
+ do not support attribute assignment (most of itertools). '''
+
+ def __init__(self, iterator, close=None):
+ self.iterator = iterator
+ self.close_callbacks = makelist(close)
+
+ def __iter__(self):
+ return iter(self.iterator)
+
+ def close(self):
+ for func in self.close_callbacks:
+ func()
+
+
+class ResourceManager(object):
+ ''' This class manages a list of search paths and helps to find and open
+ application-bound resources (files).
+
+ :param base: default value for :meth:`add_path` calls.
+ :param opener: callable used to open resources.
+ :param cachemode: controls which lookups are cached. One of 'all',
+ 'found' or 'none'.
+ '''
+
+ def __init__(self, base='./', opener=open, cachemode='all'):
+ self.opener = open
+ self.base = base
+ self.cachemode = cachemode
+
+ #: A list of search paths. See :meth:`add_path` for details.
+ self.path = []
+ #: A cache for resolved paths. ``res.cache.clear()`` clears the cache.
+ self.cache = {}
+
+ def add_path(self, path, base=None, index=None, create=False):
+ ''' Add a new path to the list of search paths. Return False if the
+ path does not exist.
+
+ :param path: The new search path. Relative paths are turned into
+ an absolute and normalized form. If the path looks like a file
+ (not ending in `/`), the filename is stripped off.
+ :param base: Path used to absolutize relative search paths.
+ Defaults to :attr:`base` which defaults to ``os.getcwd()``.
+ :param index: Position within the list of search paths. Defaults
+ to last index (appends to the list).
+
+ The `base` parameter makes it easy to reference files installed
+ along with a python module or package::
+
+ res.add_path('./resources/', __file__)
+ '''
+ base = os.path.abspath(os.path.dirname(base or self.base))
+ path = os.path.abspath(os.path.join(base, os.path.dirname(path)))
+ path += os.sep
+ if path in self.path:
+ self.path.remove(path)
+ if create and not os.path.isdir(path):
+ os.makedirs(path)
+ if index is None:
+ self.path.append(path)
+ else:
+ self.path.insert(index, path)
+ self.cache.clear()
+ return os.path.exists(path)
+
+ def __iter__(self):
+ ''' Iterate over all existing files in all registered paths. '''
+ search = self.path[:]
+ while search:
+ path = search.pop()
+ if not os.path.isdir(path): continue
+ for name in os.listdir(path):
+ full = os.path.join(path, name)
+ if os.path.isdir(full): search.append(full)
+ else: yield full
+
+ def lookup(self, name):
+ ''' Search for a resource and return an absolute file path, or `None`.
+
+ The :attr:`path` list is searched in order. The first match is
+ returend. Symlinks are followed. The result is cached to speed up
+ future lookups. '''
+ if name not in self.cache or DEBUG:
+ for path in self.path:
+ fpath = os.path.join(path, name)
+ if os.path.isfile(fpath):
+ if self.cachemode in ('all', 'found'):
+ self.cache[name] = fpath
+ return fpath
+ if self.cachemode == 'all':
+ self.cache[name] = None
+ return self.cache[name]
+
+ def open(self, name, mode='r', *args, **kwargs):
+ ''' Find a resource and return a file object, or raise IOError. '''
+ fname = self.lookup(name)
+ if not fname: raise IOError("Resource %r not found." % name)
+ return self.opener(fname, mode=mode, *args, **kwargs)
+
+
+class FileUpload(object):
+
+ def __init__(self, fileobj, name, filename, headers=None):
+ ''' Wrapper for file uploads. '''
+ #: Open file(-like) object (BytesIO buffer or temporary file)
+ self.file = fileobj
+ #: Name of the upload form field
+ self.name = name
+ #: Raw filename as sent by the client (may contain unsafe characters)
+ self.raw_filename = filename
+ #: A :class:`HeaderDict` with additional headers (e.g. content-type)
+ self.headers = HeaderDict(headers) if headers else HeaderDict()
+
+ content_type = HeaderProperty('Content-Type')
+ content_length = HeaderProperty('Content-Length', reader=int, default=-1)
+
+ @cached_property
+ def filename(self):
+ ''' Name of the file on the client file system, but normalized to ensure
+ file system compatibility (lowercase, no whitespace, no path
+ separators, no unsafe characters, ASCII only). An empty filename
+ is returned as 'empty'.
+ '''
+ from unicodedata import normalize #TODO: Module level import?
+ fname = self.raw_filename
+ if isinstance(fname, unicode):
+ fname = normalize('NFKD', fname).encode('ASCII', 'ignore')
+ fname = fname.decode('ASCII', 'ignore')
+ fname = os.path.basename(fname.replace('\\', os.path.sep))
+ fname = re.sub(r'[^a-zA-Z0-9-_.\s]', '', fname).strip().lower()
+ fname = re.sub(r'[-\s]+', '-', fname.strip('.').strip())
+ return fname or 'empty'
+
+ def _copy_file(self, fp, chunk_size=2**16):
+ read, write, offset = self.file.read, fp.write, self.file.tell()
+ while 1:
+ buf = read(chunk_size)
+ if not buf: break
+ write(buf)
+ self.file.seek(offset)
+
+ def save(self, destination, overwrite=False, chunk_size=2**16):
+ ''' Save file to disk or copy its content to an open file(-like) object.
+ If *destination* is a directory, :attr:`filename` is added to the
+ path. Existing files are not overwritten by default (IOError).
+
+ :param destination: File path, directory or file(-like) object.
+ :param overwrite: If True, replace existing files. (default: False)
+ :param chunk_size: Bytes to read at a time. (default: 64kb)
+ '''
+ if isinstance(destination, basestring): # Except file-likes here
+ if os.path.isdir(destination):
+ destination = os.path.join(destination, self.filename)
+ if not overwrite and os.path.exists(destination):
+ raise IOError('File exists.')
+ with open(destination, 'wb') as fp:
+ self._copy_file(fp, chunk_size)
+ else:
+ self._copy_file(destination, chunk_size)
+
+
+
+
+
+
+###############################################################################
+# Application Helper ###########################################################
+###############################################################################
+
+
+def abort(code=500, text='Unknown Error: Application stopped.'):
+ """ Aborts execution and causes a HTTP error. """
+ raise HTTPError(code, text)
+
+
+def redirect(url, code=None):
+ """ Aborts execution and causes a 303 or 302 redirect, depending on
+ the HTTP protocol version. """
+ if not code:
+ code = 303 if request.get('SERVER_PROTOCOL') == "HTTP/1.1" else 302
+ res = response.copy(cls=HTTPResponse)
+ res.status = code
+ res.body = ""
+ res.set_header('Location', urljoin(request.url, url))
+ raise res
+
+
+def _file_iter_range(fp, offset, bytes, maxread=1024*1024):
+ ''' Yield chunks from a range in a file. No chunk is bigger than maxread.'''
+ fp.seek(offset)
+ while bytes > 0:
+ part = fp.read(min(bytes, maxread))
+ if not part: break
+ bytes -= len(part)
+ yield part
+
+
+def static_file(filename, root, mimetype='auto', download=False, charset='UTF-8'):
+ """ Open a file in a safe way and return :exc:`HTTPResponse` with status
+ code 200, 305, 401 or 404. The ``Content-Type``, ``Content-Encoding``,
+ ``Content-Length`` and ``Last-Modified`` headers are set if possible.
+ Special support for ``If-Modified-Since``, ``Range`` and ``HEAD``
+ requests.
+
+ :param filename: Name or path of the file to send.
+ :param root: Root path for file lookups. Should be an absolute directory
+ path.
+ :param mimetype: Defines the content-type header (default: guess from
+ file extension)
+ :param download: If True, ask the browser to open a `Save as...` dialog
+ instead of opening the file with the associated program. You can
+ specify a custom filename as a string. If not specified, the
+ original filename is used (default: False).
+ :param charset: The charset to use for files with a ``text/*``
+ mime-type. (default: UTF-8)
+ """
+
+ root = os.path.abspath(root) + os.sep
+ filename = os.path.abspath(os.path.join(root, filename.strip('/\\')))
+ headers = dict()
+
+ if not filename.startswith(root):
+ return HTTPError(403, "Access denied.")
+ if not os.path.exists(filename) or not os.path.isfile(filename):
+ return HTTPError(404, "File does not exist.")
+ if not os.access(filename, os.R_OK):
+ return HTTPError(403, "You do not have permission to access this file.")
+
+ if mimetype == 'auto':
+ mimetype, encoding = mimetypes.guess_type(filename)
+ if encoding: headers['Content-Encoding'] = encoding
+
+ if mimetype:
+ if mimetype[:5] == 'text/' and charset and 'charset' not in mimetype:
+ mimetype += '; charset=%s' % charset
+ headers['Content-Type'] = mimetype
+
+ if download:
+ download = os.path.basename(filename if download == True else download)
+ headers['Content-Disposition'] = 'attachment; filename="%s"' % download
+
+ stats = os.stat(filename)
+ headers['Content-Length'] = clen = stats.st_size
+ lm = time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime(stats.st_mtime))
+ headers['Last-Modified'] = lm
+
+ ims = request.environ.get('HTTP_IF_MODIFIED_SINCE')
+ if ims:
+ ims = parse_date(ims.split(";")[0].strip())
+ if ims is not None and ims >= int(stats.st_mtime):
+ headers['Date'] = time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime())
+ return HTTPResponse(status=304, **headers)
+
+ body = '' if request.method == 'HEAD' else open(filename, 'rb')
+
+ headers["Accept-Ranges"] = "bytes"
+ ranges = request.environ.get('HTTP_RANGE')
+ if 'HTTP_RANGE' in request.environ:
+ ranges = list(parse_range_header(request.environ['HTTP_RANGE'], clen))
+ if not ranges:
+ return HTTPError(416, "Requested Range Not Satisfiable")
+ offset, end = ranges[0]
+ headers["Content-Range"] = "bytes %d-%d/%d" % (offset, end-1, clen)
+ headers["Content-Length"] = str(end-offset)
+ if body: body = _file_iter_range(body, offset, end-offset)
+ return HTTPResponse(body, status=206, **headers)
+ return HTTPResponse(body, **headers)
+
+
+
+
+
+
+###############################################################################
+# HTTP Utilities and MISC (TODO) ###############################################
+###############################################################################
+
+
+def debug(mode=True):
+ """ Change the debug level.
+ There is only one debug level supported at the moment."""
+ global DEBUG
+ if mode: warnings.simplefilter('default')
+ DEBUG = bool(mode)
+
+def http_date(value):
+ if isinstance(value, (datedate, datetime)):
+ value = value.utctimetuple()
+ elif isinstance(value, (int, float)):
+ value = time.gmtime(value)
+ if not isinstance(value, basestring):
+ value = time.strftime("%a, %d %b %Y %H:%M:%S GMT", value)
+ return value
+
+def parse_date(ims):
+ """ Parse rfc1123, rfc850 and asctime timestamps and return UTC epoch. """
+ try:
+ ts = email.utils.parsedate_tz(ims)
+ return time.mktime(ts[:8] + (0,)) - (ts[9] or 0) - time.timezone
+ except (TypeError, ValueError, IndexError, OverflowError):
+ return None
+
+def parse_auth(header):
+ """ Parse rfc2617 HTTP authentication header string (basic) and return (user,pass) tuple or None"""
+ try:
+ method, data = header.split(None, 1)
+ if method.lower() == 'basic':
+ user, pwd = touni(base64.b64decode(tob(data))).split(':',1)
+ return user, pwd
+ except (KeyError, ValueError):
+ return None
+
+def parse_range_header(header, maxlen=0):
+ ''' Yield (start, end) ranges parsed from a HTTP Range header. Skip
+ unsatisfiable ranges. The end index is non-inclusive.'''
+ if not header or header[:6] != 'bytes=': return
+ ranges = [r.split('-', 1) for r in header[6:].split(',') if '-' in r]
+ for start, end in ranges:
+ try:
+ if not start: # bytes=-100 -> last 100 bytes
+ start, end = max(0, maxlen-int(end)), maxlen
+ elif not end: # bytes=100- -> all but the first 99 bytes
+ start, end = int(start), maxlen
+ else: # bytes=100-200 -> bytes 100-200 (inclusive)
+ start, end = int(start), min(int(end)+1, maxlen)
+ if 0 <= start < end <= maxlen:
+ yield start, end
+ except ValueError:
+ pass
+
+def _parse_qsl(qs):
+ r = []
+ for pair in qs.replace(';','&').split('&'):
+ if not pair: continue
+ nv = pair.split('=', 1)
+ if len(nv) != 2: nv.append('')
+ key = urlunquote(nv[0].replace('+', ' '))
+ value = urlunquote(nv[1].replace('+', ' '))
+ r.append((key, value))
+ return r
+
+def _lscmp(a, b):
+ ''' Compares two strings in a cryptographically safe way:
+ Runtime is not affected by length of common prefix. '''
+ return not sum(0 if x==y else 1 for x, y in zip(a, b)) and len(a) == len(b)
+
+
+def cookie_encode(data, key):
+ ''' Encode and sign a pickle-able object. Return a (byte) string '''
+ msg = base64.b64encode(pickle.dumps(data, -1))
+ sig = base64.b64encode(hmac.new(tob(key), msg).digest())
+ return tob('!') + sig + tob('?') + msg
+
+
+def cookie_decode(data, key):
+ ''' Verify and decode an encoded string. Return an object or None.'''
+ data = tob(data)
+ if cookie_is_encoded(data):
+ sig, msg = data.split(tob('?'), 1)
+ if _lscmp(sig[1:], base64.b64encode(hmac.new(tob(key), msg).digest())):
+ return pickle.loads(base64.b64decode(msg))
+ return None
+
+
+def cookie_is_encoded(data):
+ ''' Return True if the argument looks like a encoded cookie.'''
+ return bool(data.startswith(tob('!')) and tob('?') in data)
+
+
+def html_escape(string):
+ ''' Escape HTML special characters ``&<>`` and quotes ``'"``. '''
+ return string.replace('&','&amp;').replace('<','&lt;').replace('>','&gt;')\
+ .replace('"','&quot;').replace("'",'&#039;')
+
+
+def html_quote(string):
+ ''' Escape and quote a string to be used as an HTTP attribute.'''
+ return '"%s"' % html_escape(string).replace('\n','%#10;')\
+ .replace('\r','&#13;').replace('\t','&#9;')
+
+
+def yieldroutes(func):
+ """ Return a generator for routes that match the signature (name, args)
+ of the func parameter. This may yield more than one route if the function
+ takes optional keyword arguments. The output is best described by example::
+
+ a() -> '/a'
+ b(x, y) -> '/b/<x>/<y>'
+ c(x, y=5) -> '/c/<x>' and '/c/<x>/<y>'
+ d(x=5, y=6) -> '/d' and '/d/<x>' and '/d/<x>/<y>'
+ """
+ path = '/' + func.__name__.replace('__','/').lstrip('/')
+ spec = getargspec(func)
+ argc = len(spec[0]) - len(spec[3] or [])
+ path += ('/<%s>' * argc) % tuple(spec[0][:argc])
+ yield path
+ for arg in spec[0][argc:]:
+ path += '/<%s>' % arg
+ yield path
+
+
+def path_shift(script_name, path_info, shift=1):
+ ''' Shift path fragments from PATH_INFO to SCRIPT_NAME and vice versa.
+
+ :return: The modified paths.
+ :param script_name: The SCRIPT_NAME path.
+ :param script_name: The PATH_INFO path.
+ :param shift: The number of path fragments to shift. May be negative to
+ change the shift direction. (default: 1)
+ '''
+ if shift == 0: return script_name, path_info
+ pathlist = path_info.strip('/').split('/')
+ scriptlist = script_name.strip('/').split('/')
+ if pathlist and pathlist[0] == '': pathlist = []
+ if scriptlist and scriptlist[0] == '': scriptlist = []
+ if shift > 0 and shift <= len(pathlist):
+ moved = pathlist[:shift]
+ scriptlist = scriptlist + moved
+ pathlist = pathlist[shift:]
+ elif shift < 0 and shift >= -len(scriptlist):
+ moved = scriptlist[shift:]
+ pathlist = moved + pathlist
+ scriptlist = scriptlist[:shift]
+ else:
+ empty = 'SCRIPT_NAME' if shift < 0 else 'PATH_INFO'
+ raise AssertionError("Cannot shift. Nothing left from %s" % empty)
+ new_script_name = '/' + '/'.join(scriptlist)
+ new_path_info = '/' + '/'.join(pathlist)
+ if path_info.endswith('/') and pathlist: new_path_info += '/'
+ return new_script_name, new_path_info
+
+
+def auth_basic(check, realm="private", text="Access denied"):
+ ''' Callback decorator to require HTTP auth (basic).
+ TODO: Add route(check_auth=...) parameter. '''
+ def decorator(func):
+ def wrapper(*a, **ka):
+ user, password = request.auth or (None, None)
+ if user is None or not check(user, password):
+ err = HTTPError(401, text)
+ err.add_header('WWW-Authenticate', 'Basic realm="%s"' % realm)
+ return err
+ return func(*a, **ka)
+ return wrapper
+ return decorator
+
+
+# Shortcuts for common Bottle methods.
+# They all refer to the current default application.
+
+def make_default_app_wrapper(name):
+ ''' Return a callable that relays calls to the current default app. '''
+ @functools.wraps(getattr(Bottle, name))
+ def wrapper(*a, **ka):
+ return getattr(app(), name)(*a, **ka)
+ return wrapper
+
+route = make_default_app_wrapper('route')
+get = make_default_app_wrapper('get')
+post = make_default_app_wrapper('post')
+put = make_default_app_wrapper('put')
+delete = make_default_app_wrapper('delete')
+error = make_default_app_wrapper('error')
+mount = make_default_app_wrapper('mount')
+hook = make_default_app_wrapper('hook')
+install = make_default_app_wrapper('install')
+uninstall = make_default_app_wrapper('uninstall')
+url = make_default_app_wrapper('get_url')
+
+
+
+
+
+
+
+###############################################################################
+# Server Adapter ###############################################################
+###############################################################################
+
+
+class ServerAdapter(object):
+ quiet = False
+ def __init__(self, host='127.0.0.1', port=8080, **options):
+ self.options = options
+ self.host = host
+ self.port = int(port)
+
+ def run(self, handler): # pragma: no cover
+ pass
+
+ def __repr__(self):
+ args = ', '.join(['%s=%s'%(k,repr(v)) for k, v in self.options.items()])
+ return "%s(%s)" % (self.__class__.__name__, args)
+
+
+class CGIServer(ServerAdapter):
+ quiet = True
+ def run(self, handler): # pragma: no cover
+ from wsgiref.handlers import CGIHandler
+ def fixed_environ(environ, start_response):
+ environ.setdefault('PATH_INFO', '')
+ return handler(environ, start_response)
+ CGIHandler().run(fixed_environ)
+
+
+class FlupFCGIServer(ServerAdapter):
+ def run(self, handler): # pragma: no cover
+ import flup.server.fcgi
+ self.options.setdefault('bindAddress', (self.host, self.port))
+ flup.server.fcgi.WSGIServer(handler, **self.options).run()
+
+
+class WSGIRefServer(ServerAdapter):
+ def run(self, app): # pragma: no cover
+ from wsgiref.simple_server import WSGIRequestHandler, WSGIServer
+ from wsgiref.simple_server import make_server
+ import socket
+
+ class FixedHandler(WSGIRequestHandler):
+ def address_string(self): # Prevent reverse DNS lookups please.
+ return self.client_address[0]
+ def log_request(*args, **kw):
+ if not self.quiet:
+ return WSGIRequestHandler.log_request(*args, **kw)
+
+ handler_cls = self.options.get('handler_class', FixedHandler)
+ server_cls = self.options.get('server_class', WSGIServer)
+
+ if ':' in self.host: # Fix wsgiref for IPv6 addresses.
+ if getattr(server_cls, 'address_family') == socket.AF_INET:
+ class server_cls(server_cls):
+ address_family = socket.AF_INET6
+
+ srv = make_server(self.host, self.port, app, server_cls, handler_cls)
+ srv.serve_forever()
+
+
+class CherryPyServer(ServerAdapter):
+ def run(self, handler): # pragma: no cover
+ from cherrypy import wsgiserver
+ self.options['bind_addr'] = (self.host, self.port)
+ self.options['wsgi_app'] = handler
+ server = wsgiserver.CherryPyWSGIServer(**self.options)
+ try:
+ server.start()
+ finally:
+ server.stop()
+
+
+class WaitressServer(ServerAdapter):
+ def run(self, handler):
+ from waitress import serve
+ serve(handler, host=self.host, port=self.port)
+
+
+class PasteServer(ServerAdapter):
+ def run(self, handler): # pragma: no cover
+ from paste import httpserver
+ from paste.translogger import TransLogger
+ handler = TransLogger(handler, setup_console_handler=(not self.quiet))
+ httpserver.serve(handler, host=self.host, port=str(self.port),
+ **self.options)
+
+
+class MeinheldServer(ServerAdapter):
+ def run(self, handler):
+ from meinheld import server
+ server.listen((self.host, self.port))
+ server.run(handler)
+
+
+class FapwsServer(ServerAdapter):
+ """ Extremely fast webserver using libev. See http://www.fapws.org/ """
+ def run(self, handler): # pragma: no cover
+ import fapws._evwsgi as evwsgi
+ from fapws import base, config
+ port = self.port
+ if float(config.SERVER_IDENT[-2:]) > 0.4:
+ # fapws3 silently changed its API in 0.5
+ port = str(port)
+ evwsgi.start(self.host, port)
+ # fapws3 never releases the GIL. Complain upstream. I tried. No luck.
+ if 'BOTTLE_CHILD' in os.environ and not self.quiet:
+ _stderr("WARNING: Auto-reloading does not work with Fapws3.\n")
+ _stderr(" (Fapws3 breaks python thread support)\n")
+ evwsgi.set_base_module(base)
+ def app(environ, start_response):
+ environ['wsgi.multiprocess'] = False
+ return handler(environ, start_response)
+ evwsgi.wsgi_cb(('', app))
+ evwsgi.run()
+
+
+class TornadoServer(ServerAdapter):
+ """ The super hyped asynchronous server by facebook. Untested. """
+ def run(self, handler): # pragma: no cover
+ import tornado.wsgi, tornado.httpserver, tornado.ioloop
+ container = tornado.wsgi.WSGIContainer(handler)
+ server = tornado.httpserver.HTTPServer(container)
+ server.listen(port=self.port,address=self.host)
+ tornado.ioloop.IOLoop.instance().start()
+
+
+class AppEngineServer(ServerAdapter):
+ """ Adapter for Google App Engine. """
+ quiet = True
+ def run(self, handler):
+ from google.appengine.ext.webapp import util
+ # A main() function in the handler script enables 'App Caching'.
+ # Lets makes sure it is there. This _really_ improves performance.
+ module = sys.modules.get('__main__')
+ if module and not hasattr(module, 'main'):
+ module.main = lambda: util.run_wsgi_app(handler)
+ util.run_wsgi_app(handler)
+
+
+class TwistedServer(ServerAdapter):
+ """ Untested. """
+ def run(self, handler):
+ from twisted.web import server, wsgi
+ from twisted.python.threadpool import ThreadPool
+ from twisted.internet import reactor
+ thread_pool = ThreadPool()
+ thread_pool.start()
+ reactor.addSystemEventTrigger('after', 'shutdown', thread_pool.stop)
+ factory = server.Site(wsgi.WSGIResource(reactor, thread_pool, handler))
+ reactor.listenTCP(self.port, factory, interface=self.host)
+ reactor.run()
+
+
+class DieselServer(ServerAdapter):
+ """ Untested. """
+ def run(self, handler):
+ from diesel.protocols.wsgi import WSGIApplication
+ app = WSGIApplication(handler, port=self.port)
+ app.run()
+
+
+class GeventServer(ServerAdapter):
+ """ Untested. Options:
+
+ * `fast` (default: False) uses libevent's http server, but has some
+ issues: No streaming, no pipelining, no SSL.
+ * See gevent.wsgi.WSGIServer() documentation for more options.
+ """
+ def run(self, handler):
+ from gevent import wsgi, pywsgi, local
+ if not isinstance(_lctx, local.local):
+ msg = "Bottle requires gevent.monkey.patch_all() (before import)"
+ raise RuntimeError(msg)
+ if not self.options.pop('fast', None): wsgi = pywsgi
+ self.options['log'] = None if self.quiet else 'default'
+ address = (self.host, self.port)
+ wsgi.WSGIServer(address, handler, **self.options).serve_forever()
+
+
+class GunicornServer(ServerAdapter):
+ """ Untested. See http://gunicorn.org/configure.html for options. """
+ def run(self, handler):
+ from gunicorn.app.base import Application
+
+ config = {'bind': "%s:%d" % (self.host, int(self.port))}
+ config.update(self.options)
+
+ class GunicornApplication(Application):
+ def init(self, parser, opts, args):
+ return config
+
+ def load(self):
+ return handler
+
+ GunicornApplication().run()
+
+
+class EventletServer(ServerAdapter):
+ """ Untested """
+ def run(self, handler):
+ from eventlet import wsgi, listen
+ try:
+ wsgi.server(listen((self.host, self.port)), handler,
+ log_output=(not self.quiet))
+ except TypeError:
+ # Fallback, if we have old version of eventlet
+ wsgi.server(listen((self.host, self.port)), handler)
+
+
+class RocketServer(ServerAdapter):
+ """ Untested. """
+ def run(self, handler):
+ from rocket import Rocket
+ server = Rocket((self.host, self.port), 'wsgi', { 'wsgi_app' : handler })
+ server.start()
+
+
+class BjoernServer(ServerAdapter):
+ """ Fast server written in C: https://github.com/jonashaag/bjoern """
+ def run(self, handler):
+ from bjoern import run
+ run(handler, self.host, self.port)
+
+
+class AutoServer(ServerAdapter):
+ """ Untested. """
+ adapters = [WaitressServer, PasteServer, TwistedServer, CherryPyServer, WSGIRefServer]
+ def run(self, handler):
+ for sa in self.adapters:
+ try:
+ return sa(self.host, self.port, **self.options).run(handler)
+ except ImportError:
+ pass
+
+server_names = {
+ 'cgi': CGIServer,
+ 'flup': FlupFCGIServer,
+ 'wsgiref': WSGIRefServer,
+ 'waitress': WaitressServer,
+ 'cherrypy': CherryPyServer,
+ 'paste': PasteServer,
+ 'fapws3': FapwsServer,
+ 'tornado': TornadoServer,
+ 'gae': AppEngineServer,
+ 'twisted': TwistedServer,
+ 'diesel': DieselServer,
+ 'meinheld': MeinheldServer,
+ 'gunicorn': GunicornServer,
+ 'eventlet': EventletServer,
+ 'gevent': GeventServer,
+ 'rocket': RocketServer,
+ 'bjoern' : BjoernServer,
+ 'auto': AutoServer,
+}
+
+
+
+
+
+
+###############################################################################
+# Application Control ##########################################################
+###############################################################################
+
+
+def load(target, **namespace):
+ """ Import a module or fetch an object from a module.
+
+ * ``package.module`` returns `module` as a module object.
+ * ``pack.mod:name`` returns the module variable `name` from `pack.mod`.
+ * ``pack.mod:func()`` calls `pack.mod.func()` and returns the result.
+
+ The last form accepts not only function calls, but any type of
+ expression. Keyword arguments passed to this function are available as
+ local variables. Example: ``import_string('re:compile(x)', x='[a-z]')``
+ """
+ module, target = target.split(":", 1) if ':' in target else (target, None)
+ if module not in sys.modules: __import__(module)
+ if not target: return sys.modules[module]
+ if target.isalnum(): return getattr(sys.modules[module], target)
+ package_name = module.split('.')[0]
+ namespace[package_name] = sys.modules[package_name]
+ return eval('%s.%s' % (module, target), namespace)
+
+
+def load_app(target):
+ """ Load a bottle application from a module and make sure that the import
+ does not affect the current default application, but returns a separate
+ application object. See :func:`load` for the target parameter. """
+ global NORUN; NORUN, nr_old = True, NORUN
+ try:
+ tmp = default_app.push() # Create a new "default application"
+ rv = load(target) # Import the target module
+ return rv if callable(rv) else tmp
+ finally:
+ default_app.remove(tmp) # Remove the temporary added default application
+ NORUN = nr_old
+
+_debug = debug
+def run(app=None, server='wsgiref', host='127.0.0.1', port=8080,
+ interval=1, reloader=False, quiet=False, plugins=None,
+ debug=None, **kargs):
+ """ Start a server instance. This method blocks until the server terminates.
+
+ :param app: WSGI application or target string supported by
+ :func:`load_app`. (default: :func:`default_app`)
+ :param server: Server adapter to use. See :data:`server_names` keys
+ for valid names or pass a :class:`ServerAdapter` subclass.
+ (default: `wsgiref`)
+ :param host: Server address to bind to. Pass ``0.0.0.0`` to listens on
+ all interfaces including the external one. (default: 127.0.0.1)
+ :param port: Server port to bind to. Values below 1024 require root
+ privileges. (default: 8080)
+ :param reloader: Start auto-reloading server? (default: False)
+ :param interval: Auto-reloader interval in seconds (default: 1)
+ :param quiet: Suppress output to stdout and stderr? (default: False)
+ :param options: Options passed to the server adapter.
+ """
+ if NORUN: return
+ if reloader and not os.environ.get('BOTTLE_CHILD'):
+ try:
+ lockfile = None
+ fd, lockfile = tempfile.mkstemp(prefix='bottle.', suffix='.lock')
+ os.close(fd) # We only need this file to exist. We never write to it
+ while os.path.exists(lockfile):
+ args = [sys.executable] + sys.argv
+ environ = os.environ.copy()
+ environ['BOTTLE_CHILD'] = 'true'
+ environ['BOTTLE_LOCKFILE'] = lockfile
+ p = subprocess.Popen(args, env=environ)
+ while p.poll() is None: # Busy wait...
+ os.utime(lockfile, None) # I am alive!
+ time.sleep(interval)
+ if p.poll() != 3:
+ if os.path.exists(lockfile): os.unlink(lockfile)
+ sys.exit(p.poll())
+ except KeyboardInterrupt:
+ pass
+ finally:
+ if os.path.exists(lockfile):
+ os.unlink(lockfile)
+ return
+
+ try:
+ if debug is not None: _debug(debug)
+ app = app or default_app()
+ if isinstance(app, basestring):
+ app = load_app(app)
+ if not callable(app):
+ raise ValueError("Application is not callable: %r" % app)
+
+ for plugin in plugins or []:
+ app.install(plugin)
+
+ if server in server_names:
+ server = server_names.get(server)
+ if isinstance(server, basestring):
+ server = load(server)
+ if isinstance(server, type):
+ server = server(host=host, port=port, **kargs)
+ if not isinstance(server, ServerAdapter):
+ raise ValueError("Unknown or unsupported server: %r" % server)
+
+ server.quiet = server.quiet or quiet
+ if not server.quiet:
+ _stderr("Bottle v%s server starting up (using %s)...\n" % (__version__, repr(server)))
+ _stderr("Listening on http://%s:%d/\n" % (server.host, server.port))
+ _stderr("Hit Ctrl-C to quit.\n\n")
+
+ if reloader:
+ lockfile = os.environ.get('BOTTLE_LOCKFILE')
+ bgcheck = FileCheckerThread(lockfile, interval)
+ with bgcheck:
+ server.run(app)
+ if bgcheck.status == 'reload':
+ sys.exit(3)
+ else:
+ server.run(app)
+ except KeyboardInterrupt:
+ pass
+ except (SystemExit, MemoryError):
+ raise
+ except:
+ if not reloader: raise
+ if not getattr(server, 'quiet', quiet):
+ print_exc()
+ time.sleep(interval)
+ sys.exit(3)
+
+
+
+class FileCheckerThread(threading.Thread):
+ ''' Interrupt main-thread as soon as a changed module file is detected,
+ the lockfile gets deleted or gets to old. '''
+
+ def __init__(self, lockfile, interval):
+ threading.Thread.__init__(self)
+ self.lockfile, self.interval = lockfile, interval
+ #: Is one of 'reload', 'error' or 'exit'
+ self.status = None
+
+ def run(self):
+ exists = os.path.exists
+ mtime = lambda path: os.stat(path).st_mtime
+ files = dict()
+
+ for module in list(sys.modules.values()):
+ path = getattr(module, '__file__', '')
+ if path[-4:] in ('.pyo', '.pyc'): path = path[:-1]
+ if path and exists(path): files[path] = mtime(path)
+
+ while not self.status:
+ if not exists(self.lockfile)\
+ or mtime(self.lockfile) < time.time() - self.interval - 5:
+ self.status = 'error'
+ thread.interrupt_main()
+ for path, lmtime in list(files.items()):
+ if not exists(path) or mtime(path) > lmtime:
+ self.status = 'reload'
+ thread.interrupt_main()
+ break
+ time.sleep(self.interval)
+
+ def __enter__(self):
+ self.start()
+
+ def __exit__(self, exc_type, exc_val, exc_tb):
+ if not self.status: self.status = 'exit' # silent exit
+ self.join()
+ return exc_type is not None and issubclass(exc_type, KeyboardInterrupt)
+
+
+
+
+
+###############################################################################
+# Template Adapters ############################################################
+###############################################################################
+
+
+class TemplateError(HTTPError):
+ def __init__(self, message):
+ HTTPError.__init__(self, 500, message)
+
+
+class BaseTemplate(object):
+ """ Base class and minimal API for template adapters """
+ extensions = ['tpl','html','thtml','stpl']
+ settings = {} #used in prepare()
+ defaults = {} #used in render()
+
+ def __init__(self, source=None, name=None, lookup=[], encoding='utf8', **settings):
+ """ Create a new template.
+ If the source parameter (str or buffer) is missing, the name argument
+ is used to guess a template filename. Subclasses can assume that
+ self.source and/or self.filename are set. Both are strings.
+ The lookup, encoding and settings parameters are stored as instance
+ variables.
+ The lookup parameter stores a list containing directory paths.
+ The encoding parameter should be used to decode byte strings or files.
+ The settings parameter contains a dict for engine-specific settings.
+ """
+ self.name = name
+ self.source = source.read() if hasattr(source, 'read') else source
+ self.filename = source.filename if hasattr(source, 'filename') else None
+ self.lookup = [os.path.abspath(x) for x in lookup]
+ self.encoding = encoding
+ self.settings = self.settings.copy() # Copy from class variable
+ self.settings.update(settings) # Apply
+ if not self.source and self.name:
+ self.filename = self.search(self.name, self.lookup)
+ if not self.filename:
+ raise TemplateError('Template %s not found.' % repr(name))
+ if not self.source and not self.filename:
+ raise TemplateError('No template specified.')
+ self.prepare(**self.settings)
+
+ @classmethod
+ def search(cls, name, lookup=[]):
+ """ Search name in all directories specified in lookup.
+ First without, then with common extensions. Return first hit. """
+ if not lookup:
+ depr('The template lookup path list should not be empty.')
+ lookup = ['.']
+
+ if os.path.isabs(name) and os.path.isfile(name):
+ depr('Absolute template path names are deprecated.')
+ return os.path.abspath(name)
+
+ for spath in lookup:
+ spath = os.path.abspath(spath) + os.sep
+ fname = os.path.abspath(os.path.join(spath, name))
+ if not fname.startswith(spath): continue
+ if os.path.isfile(fname): return fname
+ for ext in cls.extensions:
+ if os.path.isfile('%s.%s' % (fname, ext)):
+ return '%s.%s' % (fname, ext)
+
+ @classmethod
+ def global_config(cls, key, *args):
+ ''' This reads or sets the global settings stored in class.settings. '''
+ if args:
+ cls.settings = cls.settings.copy() # Make settings local to class
+ cls.settings[key] = args[0]
+ else:
+ return cls.settings[key]
+
+ def prepare(self, **options):
+ """ Run preparations (parsing, caching, ...).
+ It should be possible to call this again to refresh a template or to
+ update settings.
+ """
+ raise NotImplementedError
+
+ def render(self, *args, **kwargs):
+ """ Render the template with the specified local variables and return
+ a single byte or unicode string. If it is a byte string, the encoding
+ must match self.encoding. This method must be thread-safe!
+ Local variables may be provided in dictionaries (args)
+ or directly, as keywords (kwargs).
+ """
+ raise NotImplementedError
+
+
+class MakoTemplate(BaseTemplate):
+ def prepare(self, **options):
+ from mako.template import Template
+ from mako.lookup import TemplateLookup
+ options.update({'input_encoding':self.encoding})
+ options.setdefault('format_exceptions', bool(DEBUG))
+ lookup = TemplateLookup(directories=self.lookup, **options)
+ if self.source:
+ self.tpl = Template(self.source, lookup=lookup, **options)
+ else:
+ self.tpl = Template(uri=self.name, filename=self.filename, lookup=lookup, **options)
+
+ def render(self, *args, **kwargs):
+ for dictarg in args: kwargs.update(dictarg)
+ _defaults = self.defaults.copy()
+ _defaults.update(kwargs)
+ return self.tpl.render(**_defaults)
+
+
+class CheetahTemplate(BaseTemplate):
+ def prepare(self, **options):
+ from Cheetah.Template import Template
+ self.context = threading.local()
+ self.context.vars = {}
+ options['searchList'] = [self.context.vars]
+ if self.source:
+ self.tpl = Template(source=self.source, **options)
+ else:
+ self.tpl = Template(file=self.filename, **options)
+
+ def render(self, *args, **kwargs):
+ for dictarg in args: kwargs.update(dictarg)
+ self.context.vars.update(self.defaults)
+ self.context.vars.update(kwargs)
+ out = str(self.tpl)
+ self.context.vars.clear()
+ return out
+
+
+class Jinja2Template(BaseTemplate):
+ def prepare(self, filters=None, tests=None, **kwargs):
+ from jinja2 import Environment, FunctionLoader
+ if 'prefix' in kwargs: # TODO: to be removed after a while
+ raise RuntimeError('The keyword argument `prefix` has been removed. '
+ 'Use the full jinja2 environment name line_statement_prefix instead.')
+ self.env = Environment(loader=FunctionLoader(self.loader), **kwargs)
+ if filters: self.env.filters.update(filters)
+ if tests: self.env.tests.update(tests)
+ if self.source:
+ self.tpl = self.env.from_string(self.source)
+ else:
+ self.tpl = self.env.get_template(self.filename)
+
+ def render(self, *args, **kwargs):
+ for dictarg in args: kwargs.update(dictarg)
+ _defaults = self.defaults.copy()
+ _defaults.update(kwargs)
+ return self.tpl.render(**_defaults)
+
+ def loader(self, name):
+ fname = self.search(name, self.lookup)
+ if not fname: return
+ with open(fname, "rb") as f:
+ return f.read().decode(self.encoding)
+
+
+class SimpleTemplate(BaseTemplate):
+
+ def prepare(self, escape_func=html_escape, noescape=False, syntax=None, **ka):
+ self.cache = {}
+ enc = self.encoding
+ self._str = lambda x: touni(x, enc)
+ self._escape = lambda x: escape_func(touni(x, enc))
+ self.syntax = syntax
+ if noescape:
+ self._str, self._escape = self._escape, self._str
+
+ @cached_property
+ def co(self):
+ return compile(self.code, self.filename or '<string>', 'exec')
+
+ @cached_property
+ def code(self):
+ source = self.source or open(self.filename, 'rb').read()
+ try:
+ source, encoding = touni(source), 'utf8'
+ except UnicodeError:
+ depr('Template encodings other than utf8 are no longer supported.')
+ source, encoding = touni(source, 'latin1'), 'latin1'
+ parser = StplParser(source, encoding=encoding, syntax=self.syntax)
+ code = parser.translate()
+ self.encoding = parser.encoding
+ return code
+
+ def _rebase(self, _env, _name=None, **kwargs):
+ if _name is None:
+ depr('Rebase function called without arguments.'
+ ' You were probably looking for {{base}}?', True)
+ _env['_rebase'] = (_name, kwargs)
+
+ def _include(self, _env, _name=None, **kwargs):
+ if _name is None:
+ depr('Rebase function called without arguments.'
+ ' You were probably looking for {{base}}?', True)
+ env = _env.copy()
+ env.update(kwargs)
+ if _name not in self.cache:
+ self.cache[_name] = self.__class__(name=_name, lookup=self.lookup)
+ return self.cache[_name].execute(env['_stdout'], env)
+
+ def execute(self, _stdout, kwargs):
+ env = self.defaults.copy()
+ env.update(kwargs)
+ env.update({'_stdout': _stdout, '_printlist': _stdout.extend,
+ 'include': functools.partial(self._include, env),
+ 'rebase': functools.partial(self._rebase, env), '_rebase': None,
+ '_str': self._str, '_escape': self._escape, 'get': env.get,
+ 'setdefault': env.setdefault, 'defined': env.__contains__ })
+ eval(self.co, env)
+ if env.get('_rebase'):
+ subtpl, rargs = env.pop('_rebase')
+ rargs['base'] = ''.join(_stdout) #copy stdout
+ del _stdout[:] # clear stdout
+ return self._include(env, subtpl, **rargs)
+ return env
+
+ def render(self, *args, **kwargs):
+ """ Render the template using keyword arguments as local variables. """
+ env = {}; stdout = []
+ for dictarg in args: env.update(dictarg)
+ env.update(kwargs)
+ self.execute(stdout, env)
+ return ''.join(stdout)
+
+
+class StplSyntaxError(TemplateError): pass
+
+
+class StplParser(object):
+ ''' Parser for stpl templates. '''
+ _re_cache = {} #: Cache for compiled re patterns
+ # This huge pile of voodoo magic splits python code into 8 different tokens.
+ # 1: All kinds of python strings (trust me, it works)
+ _re_tok = '((?m)[urbURB]?(?:\'\'(?!\')|""(?!")|\'{6}|"{6}' \
+ '|\'(?:[^\\\\\']|\\\\.)+?\'|"(?:[^\\\\"]|\\\\.)+?"' \
+ '|\'{3}(?:[^\\\\]|\\\\.|\\n)+?\'{3}' \
+ '|"{3}(?:[^\\\\]|\\\\.|\\n)+?"{3}))'
+ _re_inl = _re_tok.replace('|\\n','') # We re-use this string pattern later
+ # 2: Comments (until end of line, but not the newline itself)
+ _re_tok += '|(#.*)'
+ # 3,4: Keywords that start or continue a python block (only start of line)
+ _re_tok += '|^([ \\t]*(?:if|for|while|with|try|def|class)\\b)' \
+ '|^([ \\t]*(?:elif|else|except|finally)\\b)'
+ # 5: Our special 'end' keyword (but only if it stands alone)
+ _re_tok += '|((?:^|;)[ \\t]*end[ \\t]*(?=(?:%(block_close)s[ \\t]*)?\\r?$|;|#))'
+ # 6: A customizable end-of-code-block template token (only end of line)
+ _re_tok += '|(%(block_close)s[ \\t]*(?=$))'
+ # 7: And finally, a single newline. The 8th token is 'everything else'
+ _re_tok += '|(\\r?\\n)'
+ # Match the start tokens of code areas in a template
+ _re_split = '(?m)^[ \t]*(\\\\?)((%(line_start)s)|(%(block_start)s))(%%?)'
+ # Match inline statements (may contain python strings)
+ _re_inl = '%%(inline_start)s((?:%s|[^\'"\n]*?)+)%%(inline_end)s' % _re_inl
+
+ default_syntax = '<% %> % {{ }}'
+
+ def __init__(self, source, syntax=None, encoding='utf8'):
+ self.source, self.encoding = touni(source, encoding), encoding
+ self.set_syntax(syntax or self.default_syntax)
+ self.code_buffer, self.text_buffer = [], []
+ self.lineno, self.offset = 1, 0
+ self.indent, self.indent_mod = 0, 0
+
+ def get_syntax(self):
+ ''' Tokens as a space separated string (default: <% %> % {{ }}) '''
+ return self._syntax
+
+ def set_syntax(self, syntax):
+ self._syntax = syntax
+ self._tokens = syntax.split()
+ if not syntax in self._re_cache:
+ names = 'block_start block_close line_start inline_start inline_end'
+ etokens = map(re.escape, self._tokens)
+ pattern_vars = dict(zip(names.split(), etokens))
+ patterns = (self._re_split, self._re_tok, self._re_inl)
+ patterns = [re.compile(p%pattern_vars) for p in patterns]
+ self._re_cache[syntax] = patterns
+ self.re_split, self.re_tok, self.re_inl = self._re_cache[syntax]
+
+ syntax = property(get_syntax, set_syntax)
+
+ def translate(self):
+ if self.offset: raise RuntimeError('Parser is a one time instance.')
+ while True:
+ m = self.re_split.search(self.source[self.offset:])
+ if m:
+ text = self.source[self.offset:self.offset+m.start()]
+ self.text_buffer.append(text)
+ self.offset += m.end()
+ if m.group(1): # New escape syntax
+ line, sep, _ = self.source[self.offset:].partition('\n')
+ self.text_buffer.append(m.group(2)+m.group(5)+line+sep)
+ self.offset += len(line+sep)+1
+ continue
+ elif m.group(5): # Old escape syntax
+ depr('Escape code lines with a backslash.')
+ line, sep, _ = self.source[self.offset:].partition('\n')
+ self.text_buffer.append(m.group(2)+line+sep)
+ self.offset += len(line+sep)+1
+ continue
+ self.flush_text()
+ self.read_code(multiline=bool(m.group(4)))
+ else: break
+ self.text_buffer.append(self.source[self.offset:])
+ self.flush_text()
+ return ''.join(self.code_buffer)
+
+ def read_code(self, multiline):
+ code_line, comment, start_line = '', '', self.lineno
+ while True:
+ m = self.re_tok.search(self.source[self.offset:])
+ if not m:
+ code_line += self.source[self.offset:]
+ self.offset = len(self.source)
+ self.write_code(code_line.strip(), comment)
+ return
+ code_line += self.source[self.offset:self.offset+m.start()]
+ self.offset += m.end()
+ _str, _com, _blk1, _blk2, _end, _cend, _nl = m.groups()
+ if _str: # Python string
+ code_line += _str
+ elif _com: # Python comment (up to EOL)
+ comment = _com
+ if multiline and _com.strip().endswith(self._tokens[1]):
+ multiline = False # Allow end-of-block in comments
+ elif _blk1: # Start-block keyword (if/for/while/def/try/...)
+ code_line, self.indent_mod = _blk1, -1
+ self.indent += 1
+ elif _blk2: # Continue-block keyword (else/elif/except/...)
+ code_line, self.indent_mod = _blk2, -1
+ elif _end: # The non-standard 'end'-keyword (ends a block)
+ self.indent -= 1
+ elif _cend: # The end-code-block template token (usually '%>')
+ if multiline: multiline = False
+ else: code_line += _cend
+ else: # \n
+ self.write_code(code_line.strip(), comment)
+ self.lineno += 1
+ code_line, comment, self.indent_mod = '', '', 0
+ if not multiline:
+ break
+
+ def flush_text(self):
+ text = ''.join(self.text_buffer)
+ del self.text_buffer[:]
+ if not text: return
+ parts, pos, nl = [], 0, '\\\n'+' '*self.indent
+ for m in self.re_inl.finditer(text):
+ prefix, pos = text[pos:m.start()], m.end()
+ if prefix:
+ parts.append(nl.join(map(repr, prefix.splitlines(True))))
+ if prefix.endswith('\n'): parts[-1] += nl
+ parts.append(self.process_inline(m.group(1).strip()))
+ if pos < len(text):
+ prefix = text[pos:]
+ lines = prefix.splitlines(True)
+ if lines[-1].endswith('\\\\\n'): lines[-1] = lines[-1][:-3]
+ parts.append(nl.join(map(repr, lines)))
+ code = '_printlist((%s,))' % ', '.join(parts)
+ self.lineno += code.count('\n')+1
+ self.write_code(code)
+
+ def process_inline(self, chunk):
+ if chunk[0] == '!': return '_str(%s)' % chunk[1:]
+ return '_escape(%s)' % chunk
+
+ def write_code(self, line, comment=''):
+ line, comment = self.fix_backward_compatibility(line, comment)
+ code = ' ' * (self.indent+self.indent_mod)
+ code += line.lstrip() + comment + '\n'
+ self.code_buffer.append(code)
+
+ def fix_backward_compatibility(self, line, comment):
+ parts = line.strip().split(None, 2)
+ if parts and parts[0] in ('include', 'rebase'):
+ depr('The include and rebase keywords are functions now.')
+ if len(parts) == 1: return "_printlist([base])", comment
+ elif len(parts) == 2: return "_=%s(%r)" % tuple(parts), comment
+ else: return "_=%s(%r, %s)" % tuple(parts), comment
+ if self.lineno <= 2 and not line.strip() and 'coding' in comment:
+ m = re.match(r"#.*coding[:=]\s*([-\w.]+)", comment)
+ if m:
+ depr('PEP263 encoding strings in templates are deprecated.')
+ enc = m.group(1)
+ self.source = self.source.encode(self.encoding).decode(enc)
+ self.encoding = enc
+ return line, comment.replace('coding','coding*')
+ return line, comment
+
+
+def template(*args, **kwargs):
+ '''
+ Get a rendered template as a string iterator.
+ You can use a name, a filename or a template string as first parameter.
+ Template rendering arguments can be passed as dictionaries
+ or directly (as keyword arguments).
+ '''
+ tpl = args[0] if args else None
+ adapter = kwargs.pop('template_adapter', SimpleTemplate)
+ lookup = kwargs.pop('template_lookup', TEMPLATE_PATH)
+ tplid = (id(lookup), tpl)
+ if tplid not in TEMPLATES or DEBUG:
+ settings = kwargs.pop('template_settings', {})
+ if isinstance(tpl, adapter):
+ TEMPLATES[tplid] = tpl
+ if settings: TEMPLATES[tplid].prepare(**settings)
+ elif "\n" in tpl or "{" in tpl or "%" in tpl or '$' in tpl:
+ TEMPLATES[tplid] = adapter(source=tpl, lookup=lookup, **settings)
+ else:
+ TEMPLATES[tplid] = adapter(name=tpl, lookup=lookup, **settings)
+ if not TEMPLATES[tplid]:
+ abort(500, 'Template (%s) not found' % tpl)
+ for dictarg in args[1:]: kwargs.update(dictarg)
+ return TEMPLATES[tplid].render(kwargs)
+
+mako_template = functools.partial(template, template_adapter=MakoTemplate)
+cheetah_template = functools.partial(template, template_adapter=CheetahTemplate)
+jinja2_template = functools.partial(template, template_adapter=Jinja2Template)
+
+
+def view(tpl_name, **defaults):
+ ''' Decorator: renders a template for a handler.
+ The handler can control its behavior like that:
+
+ - return a dict of template vars to fill out the template
+ - return something other than a dict and the view decorator will not
+ process the template, but return the handler result as is.
+ This includes returning a HTTPResponse(dict) to get,
+ for instance, JSON with autojson or other castfilters.
+ '''
+ def decorator(func):
+ @functools.wraps(func)
+ def wrapper(*args, **kwargs):
+ result = func(*args, **kwargs)
+ if isinstance(result, (dict, DictMixin)):
+ tplvars = defaults.copy()
+ tplvars.update(result)
+ return template(tpl_name, **tplvars)
+ elif result is None:
+ return template(tpl_name, defaults)
+ return result
+ return wrapper
+ return decorator
+
+mako_view = functools.partial(view, template_adapter=MakoTemplate)
+cheetah_view = functools.partial(view, template_adapter=CheetahTemplate)
+jinja2_view = functools.partial(view, template_adapter=Jinja2Template)
+
+
+
+
+
+
+###############################################################################
+# Constants and Globals ########################################################
+###############################################################################
+
+
+TEMPLATE_PATH = ['./', './views/']
+TEMPLATES = {}
+DEBUG = False
+NORUN = False # If set, run() does nothing. Used by load_app()
+
+#: A dict to map HTTP status codes (e.g. 404) to phrases (e.g. 'Not Found')
+HTTP_CODES = httplib.responses
+HTTP_CODES[418] = "I'm a teapot" # RFC 2324
+HTTP_CODES[428] = "Precondition Required"
+HTTP_CODES[429] = "Too Many Requests"
+HTTP_CODES[431] = "Request Header Fields Too Large"
+HTTP_CODES[511] = "Network Authentication Required"
+_HTTP_STATUS_LINES = dict((k, '%d %s'%(k,v)) for (k,v) in HTTP_CODES.items())
+
+#: The default template used for error pages. Override with @error()
+ERROR_PAGE_TEMPLATE = """
+%%try:
+ %%from %s import DEBUG, HTTP_CODES, request, touni
+ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+ <html>
+ <head>
+ <title>Error: {{e.status}}</title>
+ <style type="text/css">
+ html {background-color: #eee; font-family: sans;}
+ body {background-color: #fff; border: 1px solid #ddd;
+ padding: 15px; margin: 15px;}
+ pre {background-color: #eee; border: 1px solid #ddd; padding: 5px;}
+ </style>
+ </head>
+ <body>
+ <h1>Error: {{e.status}}</h1>
+ <p>Sorry, the requested URL <tt>{{repr(request.url)}}</tt>
+ caused an error:</p>
+ <pre>{{e.body}}</pre>
+ %%if DEBUG and e.exception:
+ <h2>Exception:</h2>
+ <pre>{{repr(e.exception)}}</pre>
+ %%end
+ %%if DEBUG and e.traceback:
+ <h2>Traceback:</h2>
+ <pre>{{e.traceback}}</pre>
+ %%end
+ </body>
+ </html>
+%%except ImportError:
+ <b>ImportError:</b> Could not generate the error page. Please add bottle to
+ the import path.
+%%end
+""" % __name__
+
+#: A thread-safe instance of :class:`LocalRequest`. If accessed from within a
+#: request callback, this instance always refers to the *current* request
+#: (even on a multithreaded server).
+request = LocalRequest()
+
+#: A thread-safe instance of :class:`LocalResponse`. It is used to change the
+#: HTTP response for the *current* request.
+response = LocalResponse()
+
+#: A thread-safe namespace. Not used by Bottle.
+local = threading.local()
+
+# Initialize app stack (create first empty Bottle app)
+# BC: 0.6.4 and needed for run()
+app = default_app = AppStack()
+app.push()
+
+#: A virtual package that redirects import statements.
+#: Example: ``import bottle.ext.sqlite`` actually imports `bottle_sqlite`.
+ext = _ImportRedirect('bottle.ext' if __name__ == '__main__' else __name__+".ext", 'bottle_%s').module
+
+if __name__ == '__main__':
+ opt, args, parser = _cmd_options, _cmd_args, _cmd_parser
+ if opt.version:
+ _stdout('Bottle %s\n'%__version__)
+ sys.exit(0)
+ if not args:
+ parser.print_help()
+ _stderr('\nError: No application specified.\n')
+ sys.exit(1)
+
+ sys.path.insert(0, '.')
+ sys.modules.setdefault('bottle', sys.modules['__main__'])
+
+ host, port = (opt.bind or 'localhost'), 8080
+ if ':' in host and host.rfind(']') < host.rfind(':'):
+ host, port = host.rsplit(':', 1)
+ host = host.strip('[]')
+
+ run(args[0], host=host, port=int(port), server=opt.server,
+ reloader=opt.reload, plugins=opt.plugin, debug=opt.debug)
+
+
+
+
+# THE END
diff --git a/frontend/impattern/old/index.html.old b/frontend/impattern/old/index.html.old
new file mode 100644
index 0000000..fbb5850
--- /dev/null
+++ b/frontend/impattern/old/index.html.old
@@ -0,0 +1,305 @@
+<html>
+<head>
+<link href='http://fonts.googleapis.com/css?family=Orienta|Roboto' rel='stylesheet' type='text/css'>
+<style type="text/css">
+body{
+font-family: 'Roboto', sans-serif;
+}
+.title{
+ font-family: 'Orienta', sans-serif;
+ font-size:3em;
+ text-shadow: 2px 4px 3px rgba(153,153,153,0.3);
+ color: #1C1C1C;
+}
+#sample
+ {
+ border-style: outset;
+ border-color: gray;
+ border-width: 5px;
+ }
+table.dithertable {
+ border-width: 5px;
+ border-spacing: 3px;
+ border-style: outset;
+ border-color: gray;
+ border-collapse: separate;
+ background-color: rgb(250, 240, 230);
+}
+table.dithertable th {
+ border-width: medium;
+ padding: 2px;
+ border-style: ridge;
+ border-color: gray;
+ background-color: rgb(255, 255, 240);
+ -moz-border-radius: ;
+}
+table.dithertable td {
+ border-width: medium;
+ padding: 2px;
+ border-style: ridge;
+ border-color: gray;
+ background-color: rgb(255, 255, 240);
+ -moz-border-radius: ;
+ background-color:white;
+}
+.patterns
+ {
+ width:10px;
+ height:10px;
+ cursor:pointer;
+ }
+#dithertable
+ {
+ width:50%;
+ display:inline-block;
+ }
+tr
+ {
+ height:40px;
+ }
+.dontshowme{
+ display: none;
+
+}
+</style>
+
+</head>
+<body>
+<div id="imdither">
+ <img src="img/impattern.png"/>
+</div>
+
+<div id="step1">
+Step 1: Choose your dither
+</div>
+<table class="dithertable" id="dithertable">
+<tr>
+<td class='patterns' style='background-image:url(patterns/1.png)' id='dither_1'>&nbsp;</td>
+<td class='patterns' style='background-image:url(patterns/10.png)' id='dither_10'>&nbsp;</td>
+<td class='patterns' style='background-image:url(patterns/11.png)' id='dither_11'></td>
+<td class='patterns' style='background-image:url(patterns/12.png)' id='dither_12'></td>
+<td class='patterns' style='background-image:url(patterns/13.png)' id='dither_13'></td>
+<td class='patterns' style='background-image:url(patterns/14.png)' id='dither_14'></td>
+<td class='patterns' style='background-image:url(patterns/15.png)' id='dither_15'></td>
+<td class='patterns' style='background-image:url(patterns/16.png)' id='dither_16'></td>
+<td class='patterns' style='background-image:url(patterns/17.png)' id='dither_17'></td>
+<td class='patterns' style='background-image:url(patterns/18.png)' id='dither_18'></td>
+<td class='patterns' style='background-image:url(patterns/19.png)' id='dither_19'></td>
+<td class='patterns' style='background-image:url(patterns/2.png)' id='dither_2'></td>
+<td class='patterns' style='background-image:url(patterns/20.png)' id='dither_20'></td>
+<td class='patterns' style='background-image:url(patterns/21.png)' id='dither_21'></td>
+<td class='patterns' style='background-image:url(patterns/22.png)' id='dither_22'></td>
+<td class='patterns' style='background-image:url(patterns/23.png)' id='dither_23'></td>
+<td class='patterns' style='background-image:url(patterns/24.png)' id='dither_24'></td>
+<td class='patterns' style='background-image:url(patterns/25.png)' id='dither_25'></td>
+<td class='patterns' style='background-image:url(patterns/26.png)' id='dither_26'></td>
+<td class='patterns' style='background-image:url(patterns/27.png)' id='dither_27'></td>
+<td class='patterns' style='background-image:url(patterns/28.png)' id='dither_28'></td>
+<td class='patterns' style='background-image:url(patterns/29.png)' id='dither_29'></td>
+<td class='patterns' style='background-image:url(patterns/3.png)' id='dither_3'></td>
+<td class='patterns' style='background-image:url(patterns/30.png)' id='dither_30'></td>
+</tr>
+<tr>
+<td class='patterns' style='background-image:url(patterns/31.png)' id='dither_31'></td>
+<td class='patterns' style='background-image:url(patterns/32.png)' id='dither_32'></td>
+<td class='patterns' style='background-image:url(patterns/33.png)' id='dither_33'></td>
+<td class='patterns' style='background-image:url(patterns/34.png)' id='dither_34'></td>
+<td class='patterns' style='background-image:url(patterns/35.png)' id='dither_35'></td>
+<td class='patterns' style='background-image:url(patterns/36.png)' id='dither_36'></td>
+<td class='patterns' style='background-image:url(patterns/37.png)' id='dither_37'></td>
+<td class='patterns' style='background-image:url(patterns/38.png)' id='dither_38'></td>
+<td class='patterns' style='background-image:url(patterns/39.png)' id='dither_39'></td>
+<td class='patterns' style='background-image:url(patterns/4.png)' id='dither_4'></td>
+<td class='patterns' style='background-image:url(patterns/40.png)' id='dither_40'></td>
+<td class='patterns' style='background-image:url(patterns/41.png)' id='dither_41'></td>
+<td class='patterns' style='background-image:url(patterns/42.png)' id='dither_42'></td>
+<td class='patterns' style='background-image:url(patterns/43.png)' id='dither_43'></td>
+<td class='patterns' style='background-image:url(patterns/44.png)' id='dither_44'></td>
+<td class='patterns' style='background-image:url(patterns/45.png)' id='dither_45'></td>
+<td class='patterns' style='background-image:url(patterns/46.png)' id='dither_46'></td>
+<td class='patterns' style='background-image:url(patterns/47.png)' id='dither_47'></td>
+<td class='patterns' style='background-image:url(patterns/48.png)' id='dither_48'></td>
+<td class='patterns' style='background-image:url(patterns/49.png)' id='dither_49'></td>
+<td class='patterns' style='background-image:url(patterns/5.png)' id='dither_5'></td>
+<td class='patterns' style='background-image:url(patterns/50.png)' id='dither_50'></td>
+<td class='patterns' style='background-image:url(patterns/51.png)' id='dither_51'></td>
+<td class='patterns' style='background-image:url(patterns/52.png)' id='dither_52'></td>
+</tr>
+<tr>
+
+<td class='patterns' style='background-image:url(patterns/53.png)' id='dither_53'></td>
+<td class='patterns' style='background-image:url(patterns/54.png)' id='dither_54'></td>
+<td class='patterns' style='background-image:url(patterns/55.png)' id='dither_55'></td>
+<td class='patterns' style='background-image:url(patterns/56.png)' id='dither_56'></td>
+<td class='patterns' style='background-image:url(patterns/57.png)' id='dither_57'></td>
+<td class='patterns' style='background-image:url(patterns/58.png)' id='dither_58'></td>
+<td class='patterns' style='background-image:url(patterns/59.png)' id='dither_59'></td>
+<td class='patterns' style='background-image:url(patterns/6.png)' id='dither_6'></td>
+<td class='patterns' style='background-image:url(patterns/60.png)' id='dither_60'></td>
+
+<td class='patterns' style='background-image:url(patterns/61.png)' id='dither_61'></td>
+<td class='patterns' style='background-image:url(patterns/62.png)' id='dither_62'></td>
+<td class='patterns' style='background-image:url(patterns/63.png)' id='dither_63'></td>
+<td class='patterns' style='background-image:url(patterns/64.png)' id='dither_64'></td>
+<td class='patterns' style='background-image:url(patterns/65.png)' id='dither_65'></td>
+<td class='patterns' style='background-image:url(patterns/66.png)' id='dither_66'></td>
+<td class='patterns' style='background-image:url(patterns/67.png)' id='dither_67'></td>
+<td class='patterns' style='background-image:url(patterns/68.png)' id='dither_68'></td>
+<td class='patterns' style='background-image:url(patterns/69.png)' id='dither_69'></td>
+<td class='patterns' style='background-image:url(patterns/7.png)' id='dither_7'></td>
+<td class='patterns' style='background-image:url(patterns/70.png)' id='dither_70'></td>
+<td class='patterns' style='background-image:url(patterns/71.png)' id='dither_71'></td>
+<td class='patterns' style='background-image:url(patterns/72.png)' id='dither_72'></td>
+<td class='patterns' style='background-image:url(patterns/73.png)' id='dither_73'></td>
+<td class='patterns' style='background-image:url(patterns/74.png)' id='dither_74'></td>
+</tr>
+<tr>
+<td class='patterns' style='background-image:url(patterns/75.png)' id='dither_75'></td>
+<td class='patterns' style='background-image:url(patterns/76.png)' id='dither_76'></td>
+<td class='patterns' style='background-image:url(patterns/77.png)' id='dither_77'></td>
+<td class='patterns' style='background-image:url(patterns/78.png)' id='dither_78'></td>
+<td class='patterns' style='background-image:url(patterns/79.png)' id='dither_79'></td>
+<td class='patterns' style='background-image:url(patterns/8.png)' id='dither_8'></td>
+<td class='patterns' style='background-image:url(patterns/80.png)' id='dither_80'></td>
+<td class='patterns' style='background-image:url(patterns/81.png)' id='dither_81'></td>
+<td class='patterns' style='background-image:url(patterns/82.png)' id='dither_82'></td>
+<td class='patterns' style='background-image:url(patterns/83.png)' id='dither_83'></td>
+<td class='patterns' style='background-image:url(patterns/84.png)' id='dither_84'></td>
+<td class='patterns' style='background-image:url(patterns/85.png)' id='dither_85'></td>
+<td class='patterns' style='background-image:url(patterns/86.png)' id='dither_86'></td>
+<td class='patterns' style='background-image:url(patterns/87.png)' id='dither_87'></td>
+<td class='patterns' style='background-image:url(patterns/88.png)' id='dither_88'></td>
+<td class='patterns' style='background-image:url(patterns/89.png)' id='dither_89'></td>
+<td class='patterns' style='background-image:url(patterns/9.png)' id='dither_9'></td>
+<td class='patterns' style='background-image:url(patterns/90.png)' id='dither_90'></td>
+<td class='patterns' style='background-image:url(patterns/91.png)' id='dither_91'></td>
+<td class='patterns' style='background-image:url(patterns/92.png)' id='dither_92'></td>
+<td class='patterns' style='background-image:url(patterns/93.png)' id='dither_93'></td>
+<td class='patterns' style='background-image:url(patterns/94.png)' id='dither_94'></td>
+<td class='patterns' style='background-image:url(patterns/95.png)' id='dither_95'></td>
+<td class='patterns' style='background-image:url(patterns/96.png)' id='dither_96'></td>
+
+</tr>
+<tr>
+<td class='patterns' style='background-image:url(patterns/a0.png)' id='dither_a0'></td>
+<td class='patterns' style='background-image:url(patterns/a1.png)' id='dither_a1'></td>
+<td class='patterns' style='background-image:url(patterns/a10.png)' id='dither_a10'></td>
+<td class='patterns' style='background-image:url(patterns/a11.png)' id='dither_a11'></td>
+<td class='patterns' style='background-image:url(patterns/a12.png)' id='dither_a12'></td>
+<td class='patterns' style='background-image:url(patterns/a13.png)' id='dither_a13'></td>
+<td class='patterns' style='background-image:url(patterns/a14.png)' id='dither_a14'></td>
+<td class='patterns' style='background-image:url(patterns/a15.png)' id='dither_a15'></td>
+<td class='patterns' style='background-image:url(patterns/a16.png)' id='dither_a16'></td>
+<td class='patterns' style='background-image:url(patterns/a17.png)' id='dither_a17'></td>
+<td class='patterns' style='background-image:url(patterns/a18.png)' id='dither_a18'></td>
+<td class='patterns' style='background-image:url(patterns/a19.png)' id='dither_a19'></td>
+<td class='patterns' style='background-image:url(patterns/a2.png)' id='dither_a2'></td>
+<td class='patterns' style='background-image:url(patterns/a20.png)' id='dither_a20'></td>
+<td class='patterns' style='background-image:url(patterns/a21.png)' id='dither_a21'></td>
+<td class='patterns' style='background-image:url(patterns/a22.png)' id='dither_a22'></td>
+<td class='patterns' style='background-image:url(patterns/a23.png)' id='dither_a23'></td>
+<td class='patterns' style='background-image:url(patterns/a24.png)' id='dither_a24'></td>
+<td class='patterns' style='background-image:url(patterns/a25.png)' id='dither_a25'></td>
+<td class='patterns' style='background-image:url(patterns/a26.png)' id='dither_a26'></td>
+<td class='patterns' style='background-image:url(patterns/a27.png)' id='dither_a27'></td>
+<td class='patterns' style='background-image:url(patterns/a28.png)' id='dither_a28'></td>
+<td class='patterns' style='background-image:url(patterns/a29.png)' id='dither_a29'></td>
+<td class='patterns' style='background-image:url(patterns/a3.png)' id='dither_a3'></td>
+
+</tr>
+<tr>
+<td class='patterns' style='background-image:url(patterns/a30.png)' id='dither_a30'></td>
+<td class='patterns' style='background-image:url(patterns/a31.png)' id='dither_a31'></td>
+<td class='patterns' style='background-image:url(patterns/a32.png)' id='dither_a32'></td>
+<td class='patterns' style='background-image:url(patterns/a33.png)' id='dither_a33'></td>
+<td class='patterns' style='background-image:url(patterns/a34.png)' id='dither_a34'></td>
+<td class='patterns' style='background-image:url(patterns/a35.png)' id='dither_a35'></td>
+<td class='patterns' style='background-image:url(patterns/a36.png)' id='dither_a36'></td>
+<td class='patterns' style='background-image:url(patterns/a37.png)' id='dither_a37'></td>
+<td class='patterns' style='background-image:url(patterns/a38.png)' id='dither_a38'></td>
+<td class='patterns' style='background-image:url(patterns/a39.png)' id='dither_a39'></td>
+<td class='patterns' style='background-image:url(patterns/a4.png)' id='dither_a4'></td>
+<td class='patterns' style='background-image:url(patterns/a40.png)' id='dither_a40'></td>
+<td class='patterns' style='background-image:url(patterns/a41.png)' id='dither_a41'></td>
+<td class='patterns' style='background-image:url(patterns/a5.png)' id='dither_a5'></td>
+<td class='patterns' style='background-image:url(patterns/a6.png)' id='dither_a6'></td>
+<td class='patterns' style='background-image:url(patterns/a7.png)' id='dither_a7'></td>
+<td class='patterns' style='background-image:url(patterns/a8.png)' id='dither_a8'></td>
+<td class='patterns' style='background-image:url(patterns/a9.png)' id='dither_a9'></td>
+</tr>
+</table>
+
+
+<div id="sample">&nbsp;
+</div>
+
+</br>
+<span class="parameter">Image to overlay:</span><input type="text/css" class="image_input" value="Enter an image url here"></input>
+<span class="parameter">Or Upload</span><input type="text/css" class="image_input" value="Enter an image url here"></input>
+</br><span class="uploadError dontshowme unsubmitted"></span>
+<button id="submit">SUBMIT</button>
+
+<div class="processing dontshowme"></div>
+<div class="result dontshowme"></div>
+
+<script type="text/javascript" src="jquery.min.js"></script>
+<script type="text/javascript" src="Math.uuid.js"></script>
+<script type="text/javascript">
+function makesample(){
+ theheight = $('#dithertable').height()
+ $('#sample').css({'width':"20%",'height':theheight,'display':'inline-block'})
+}
+makesample()
+
+var preview_box = $("#sample")
+$('.patterns').click(function(){
+ $('.patterns').css({'border-color':'gray','-moz-box-shadow': 'none','-webkit-box-shadow':'none','box-shadow': 'none'});
+ $(this).css({'border-color':'#EE0000','-moz-box-shadow': '0px 0px 9px 3px firebrick','-webkit-box-shadow':'0px 0px 9px 3px firebrick','box-shadow': '0px 0px 9px 3px firebrick'})
+ var dither = $(this).css("background-image");
+ preview_box.css("background-image", dither);
+ });
+$(".image_input").clicked = false;
+$(".image_input").click(function(){
+ if(! $(this).clicked){
+ $(this).attr("value", "");
+ $(this).clicked = true;
+ }
+ })
+
+function showResult(src){
+ img = document.createElement("img");
+ img.src = src;
+ document.body.appendChild(img);
+}
+$("#submit").click(function(){
+ var unique_id = Math.uuid(5,10).toString + "_imdither";
+
+ if (! $(".uploadError").hasClass("dontshowme") ){
+ $(".uploadError").addClass("dontshowme")
+ }
+
+ var image_url = $(".image_input").val()
+ if (! image_url || image_url == "Enter an image url here"){
+ uploadError = $(".uploadError")
+ uploadError.html("you didn't provide an image url")
+ uploadError.removeClass("dontshowme")
+ return false;
+ }
+ $.ajax({
+ type: "POST",
+ url: "process",
+ data: {
+ url: image_url,
+ unique_id: unique_id
+ }
+ }).done(function( data ) {
+ console.log( "Data Saved: " + data );
+ showResult(data);
+ });
+})
+</script>
+
+
+</body>
+</html>
+
diff --git a/frontend/impattern/old/oldpatterns/1.png b/frontend/impattern/old/oldpatterns/1.png
new file mode 100644
index 0000000..a0aeccb
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/1.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/10.png b/frontend/impattern/old/oldpatterns/10.png
new file mode 100644
index 0000000..3865589
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/10.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/11.png b/frontend/impattern/old/oldpatterns/11.png
new file mode 100644
index 0000000..2a8ca34
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/11.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/12.png b/frontend/impattern/old/oldpatterns/12.png
new file mode 100644
index 0000000..4adb35f
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/12.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/13.png b/frontend/impattern/old/oldpatterns/13.png
new file mode 100644
index 0000000..48e9362
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/13.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/14.png b/frontend/impattern/old/oldpatterns/14.png
new file mode 100644
index 0000000..867b0a9
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/14.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/15.png b/frontend/impattern/old/oldpatterns/15.png
new file mode 100644
index 0000000..f37be5a
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/15.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/16.png b/frontend/impattern/old/oldpatterns/16.png
new file mode 100644
index 0000000..7994ced
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/16.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/17.png b/frontend/impattern/old/oldpatterns/17.png
new file mode 100644
index 0000000..9ffa444
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/17.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/18.png b/frontend/impattern/old/oldpatterns/18.png
new file mode 100644
index 0000000..2522e8d
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/18.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/19.png b/frontend/impattern/old/oldpatterns/19.png
new file mode 100644
index 0000000..5b4ac7a
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/19.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/2.png b/frontend/impattern/old/oldpatterns/2.png
new file mode 100644
index 0000000..a6aa256
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/2.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/20.png b/frontend/impattern/old/oldpatterns/20.png
new file mode 100644
index 0000000..57a82c1
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/20.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/21.png b/frontend/impattern/old/oldpatterns/21.png
new file mode 100644
index 0000000..2b671c7
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/21.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/22.png b/frontend/impattern/old/oldpatterns/22.png
new file mode 100644
index 0000000..d28f071
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/22.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/23.png b/frontend/impattern/old/oldpatterns/23.png
new file mode 100644
index 0000000..052cf6f
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/23.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/24.png b/frontend/impattern/old/oldpatterns/24.png
new file mode 100644
index 0000000..4bee000
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/24.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/25.png b/frontend/impattern/old/oldpatterns/25.png
new file mode 100644
index 0000000..cbd1097
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/25.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/26.png b/frontend/impattern/old/oldpatterns/26.png
new file mode 100644
index 0000000..5fc32f4
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/26.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/27.png b/frontend/impattern/old/oldpatterns/27.png
new file mode 100644
index 0000000..18ce493
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/27.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/28.png b/frontend/impattern/old/oldpatterns/28.png
new file mode 100644
index 0000000..5924c44
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/28.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/29.png b/frontend/impattern/old/oldpatterns/29.png
new file mode 100644
index 0000000..16fc2a5
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/29.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/3.png b/frontend/impattern/old/oldpatterns/3.png
new file mode 100644
index 0000000..8c3d334
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/3.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/30.png b/frontend/impattern/old/oldpatterns/30.png
new file mode 100644
index 0000000..50c8289
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/30.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/31.png b/frontend/impattern/old/oldpatterns/31.png
new file mode 100644
index 0000000..3dd944e
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/31.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/32.png b/frontend/impattern/old/oldpatterns/32.png
new file mode 100644
index 0000000..79aeb84
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/32.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/33.png b/frontend/impattern/old/oldpatterns/33.png
new file mode 100644
index 0000000..55def42
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/33.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/34.png b/frontend/impattern/old/oldpatterns/34.png
new file mode 100644
index 0000000..f7616ea
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/34.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/35.png b/frontend/impattern/old/oldpatterns/35.png
new file mode 100644
index 0000000..3ecbaaf
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/35.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/36.png b/frontend/impattern/old/oldpatterns/36.png
new file mode 100644
index 0000000..0243cf7
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/36.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/37.png b/frontend/impattern/old/oldpatterns/37.png
new file mode 100644
index 0000000..012ed79
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/37.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/38.png b/frontend/impattern/old/oldpatterns/38.png
new file mode 100644
index 0000000..9aa54b7
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/38.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/39.png b/frontend/impattern/old/oldpatterns/39.png
new file mode 100644
index 0000000..e98ec53
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/39.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/4.png b/frontend/impattern/old/oldpatterns/4.png
new file mode 100644
index 0000000..473e6e7
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/4.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/40.png b/frontend/impattern/old/oldpatterns/40.png
new file mode 100644
index 0000000..d7d7cba
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/40.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/41.png b/frontend/impattern/old/oldpatterns/41.png
new file mode 100644
index 0000000..5d15dd7
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/41.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/42.png b/frontend/impattern/old/oldpatterns/42.png
new file mode 100644
index 0000000..dedbfe2
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/42.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/43.png b/frontend/impattern/old/oldpatterns/43.png
new file mode 100644
index 0000000..dd690d6
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/43.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/44.png b/frontend/impattern/old/oldpatterns/44.png
new file mode 100644
index 0000000..12afc85
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/44.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/45.png b/frontend/impattern/old/oldpatterns/45.png
new file mode 100644
index 0000000..972933b
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/45.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/46.png b/frontend/impattern/old/oldpatterns/46.png
new file mode 100644
index 0000000..857ef06
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/46.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/47.png b/frontend/impattern/old/oldpatterns/47.png
new file mode 100644
index 0000000..4002e54
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/47.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/48.png b/frontend/impattern/old/oldpatterns/48.png
new file mode 100644
index 0000000..ff785ed
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/48.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/49.png b/frontend/impattern/old/oldpatterns/49.png
new file mode 100644
index 0000000..1a8525f
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/49.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/5.png b/frontend/impattern/old/oldpatterns/5.png
new file mode 100644
index 0000000..7bd6619
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/5.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/50.png b/frontend/impattern/old/oldpatterns/50.png
new file mode 100644
index 0000000..f32d908
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/50.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/51.png b/frontend/impattern/old/oldpatterns/51.png
new file mode 100644
index 0000000..20dc9ca
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/51.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/52.png b/frontend/impattern/old/oldpatterns/52.png
new file mode 100644
index 0000000..0e097fa
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/52.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/53.png b/frontend/impattern/old/oldpatterns/53.png
new file mode 100644
index 0000000..eec7951
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/53.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/54.png b/frontend/impattern/old/oldpatterns/54.png
new file mode 100644
index 0000000..e23a862
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/54.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/55.png b/frontend/impattern/old/oldpatterns/55.png
new file mode 100644
index 0000000..d908a85
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/55.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/56.png b/frontend/impattern/old/oldpatterns/56.png
new file mode 100644
index 0000000..330b589
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/56.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/57.png b/frontend/impattern/old/oldpatterns/57.png
new file mode 100644
index 0000000..d9587f3
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/57.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/58.png b/frontend/impattern/old/oldpatterns/58.png
new file mode 100644
index 0000000..0ccfba0
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/58.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/59.png b/frontend/impattern/old/oldpatterns/59.png
new file mode 100644
index 0000000..673a3b7
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/59.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/6.png b/frontend/impattern/old/oldpatterns/6.png
new file mode 100644
index 0000000..a3b8272
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/6.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/60.png b/frontend/impattern/old/oldpatterns/60.png
new file mode 100644
index 0000000..e8ea7a6
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/60.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/61.png b/frontend/impattern/old/oldpatterns/61.png
new file mode 100644
index 0000000..4a8f42c
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/61.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/62.png b/frontend/impattern/old/oldpatterns/62.png
new file mode 100644
index 0000000..491e211
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/62.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/63.png b/frontend/impattern/old/oldpatterns/63.png
new file mode 100644
index 0000000..456203e
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/63.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/64.png b/frontend/impattern/old/oldpatterns/64.png
new file mode 100644
index 0000000..363c9e1
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/64.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/65.png b/frontend/impattern/old/oldpatterns/65.png
new file mode 100644
index 0000000..40b3ab0
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/65.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/66.png b/frontend/impattern/old/oldpatterns/66.png
new file mode 100644
index 0000000..4c46c0d
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/66.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/67.png b/frontend/impattern/old/oldpatterns/67.png
new file mode 100644
index 0000000..62f44fa
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/67.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/68.png b/frontend/impattern/old/oldpatterns/68.png
new file mode 100644
index 0000000..32bd5bc
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/68.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/69.png b/frontend/impattern/old/oldpatterns/69.png
new file mode 100644
index 0000000..35b5d56
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/69.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/7.png b/frontend/impattern/old/oldpatterns/7.png
new file mode 100644
index 0000000..3e01636
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/7.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/70.png b/frontend/impattern/old/oldpatterns/70.png
new file mode 100644
index 0000000..a6771e5
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/70.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/71.png b/frontend/impattern/old/oldpatterns/71.png
new file mode 100644
index 0000000..649c43f
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/71.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/72.png b/frontend/impattern/old/oldpatterns/72.png
new file mode 100644
index 0000000..d51cde8
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/72.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/73.png b/frontend/impattern/old/oldpatterns/73.png
new file mode 100644
index 0000000..79d7585
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/73.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/74.png b/frontend/impattern/old/oldpatterns/74.png
new file mode 100644
index 0000000..9e91e73
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/74.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/75.png b/frontend/impattern/old/oldpatterns/75.png
new file mode 100644
index 0000000..8702a1e
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/75.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/76.png b/frontend/impattern/old/oldpatterns/76.png
new file mode 100644
index 0000000..618f42a
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/76.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/77.png b/frontend/impattern/old/oldpatterns/77.png
new file mode 100644
index 0000000..a2b5966
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/77.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/78.png b/frontend/impattern/old/oldpatterns/78.png
new file mode 100644
index 0000000..82867f8
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/78.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/79.png b/frontend/impattern/old/oldpatterns/79.png
new file mode 100644
index 0000000..3bbd78d
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/79.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/8.png b/frontend/impattern/old/oldpatterns/8.png
new file mode 100644
index 0000000..73f4d43
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/8.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/80.png b/frontend/impattern/old/oldpatterns/80.png
new file mode 100644
index 0000000..810fba6
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/80.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/81.png b/frontend/impattern/old/oldpatterns/81.png
new file mode 100644
index 0000000..92fa744
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/81.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/82.png b/frontend/impattern/old/oldpatterns/82.png
new file mode 100644
index 0000000..bc30bcf
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/82.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/83.png b/frontend/impattern/old/oldpatterns/83.png
new file mode 100644
index 0000000..caddb63
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/83.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/84.png b/frontend/impattern/old/oldpatterns/84.png
new file mode 100644
index 0000000..4176f9a
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/84.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/85.png b/frontend/impattern/old/oldpatterns/85.png
new file mode 100644
index 0000000..8215f71
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/85.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/86.png b/frontend/impattern/old/oldpatterns/86.png
new file mode 100644
index 0000000..c85e4f7
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/86.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/87.png b/frontend/impattern/old/oldpatterns/87.png
new file mode 100644
index 0000000..2933559
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/87.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/88.png b/frontend/impattern/old/oldpatterns/88.png
new file mode 100644
index 0000000..7793e19
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/88.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/89.png b/frontend/impattern/old/oldpatterns/89.png
new file mode 100644
index 0000000..1523885
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/89.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/9.png b/frontend/impattern/old/oldpatterns/9.png
new file mode 100644
index 0000000..6741ffd
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/9.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/90.png b/frontend/impattern/old/oldpatterns/90.png
new file mode 100644
index 0000000..e001830
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/90.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/91.png b/frontend/impattern/old/oldpatterns/91.png
new file mode 100644
index 0000000..e6e87f0
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/91.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/92.png b/frontend/impattern/old/oldpatterns/92.png
new file mode 100644
index 0000000..30f150d
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/92.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/93.png b/frontend/impattern/old/oldpatterns/93.png
new file mode 100644
index 0000000..fb1c648
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/93.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/94.png b/frontend/impattern/old/oldpatterns/94.png
new file mode 100644
index 0000000..171a461
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/94.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/95.png b/frontend/impattern/old/oldpatterns/95.png
new file mode 100644
index 0000000..27f0f06
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/95.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/96.png b/frontend/impattern/old/oldpatterns/96.png
new file mode 100644
index 0000000..11114ec
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/96.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a0.png b/frontend/impattern/old/oldpatterns/a0.png
new file mode 100644
index 0000000..5fb0b18
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a0.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a1.png b/frontend/impattern/old/oldpatterns/a1.png
new file mode 100644
index 0000000..cab1780
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a1.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a10.png b/frontend/impattern/old/oldpatterns/a10.png
new file mode 100644
index 0000000..193ff24
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a10.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a11.png b/frontend/impattern/old/oldpatterns/a11.png
new file mode 100644
index 0000000..a211a04
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a11.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a12.png b/frontend/impattern/old/oldpatterns/a12.png
new file mode 100644
index 0000000..0c493b9
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a12.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a13.png b/frontend/impattern/old/oldpatterns/a13.png
new file mode 100644
index 0000000..bfa653c
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a13.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a14.png b/frontend/impattern/old/oldpatterns/a14.png
new file mode 100644
index 0000000..10d7b13
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a14.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a15.png b/frontend/impattern/old/oldpatterns/a15.png
new file mode 100644
index 0000000..2381078
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a15.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a16.png b/frontend/impattern/old/oldpatterns/a16.png
new file mode 100644
index 0000000..9636ee5
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a16.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a17.png b/frontend/impattern/old/oldpatterns/a17.png
new file mode 100644
index 0000000..9bc91db
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a17.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a18.png b/frontend/impattern/old/oldpatterns/a18.png
new file mode 100644
index 0000000..a2e2928
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a18.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a19.png b/frontend/impattern/old/oldpatterns/a19.png
new file mode 100644
index 0000000..7d45270
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a19.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a2.png b/frontend/impattern/old/oldpatterns/a2.png
new file mode 100644
index 0000000..7d9c7d9
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a2.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a20.png b/frontend/impattern/old/oldpatterns/a20.png
new file mode 100644
index 0000000..f670cf5
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a20.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a21.png b/frontend/impattern/old/oldpatterns/a21.png
new file mode 100644
index 0000000..14aac9b
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a21.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a22.png b/frontend/impattern/old/oldpatterns/a22.png
new file mode 100644
index 0000000..e9f8a43
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a22.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a23.png b/frontend/impattern/old/oldpatterns/a23.png
new file mode 100644
index 0000000..bbdaa29
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a23.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a24.png b/frontend/impattern/old/oldpatterns/a24.png
new file mode 100644
index 0000000..0746ced
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a24.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a25.png b/frontend/impattern/old/oldpatterns/a25.png
new file mode 100644
index 0000000..2f23bdd
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a25.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a26.png b/frontend/impattern/old/oldpatterns/a26.png
new file mode 100644
index 0000000..0e21976
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a26.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a27.png b/frontend/impattern/old/oldpatterns/a27.png
new file mode 100644
index 0000000..0c11122
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a27.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a28.png b/frontend/impattern/old/oldpatterns/a28.png
new file mode 100644
index 0000000..4469d65
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a28.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a29.png b/frontend/impattern/old/oldpatterns/a29.png
new file mode 100644
index 0000000..e956157
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a29.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a3.png b/frontend/impattern/old/oldpatterns/a3.png
new file mode 100644
index 0000000..41cd44f
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a3.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a30.png b/frontend/impattern/old/oldpatterns/a30.png
new file mode 100644
index 0000000..9058a6d
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a30.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a31.png b/frontend/impattern/old/oldpatterns/a31.png
new file mode 100644
index 0000000..6692715
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a31.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a32.png b/frontend/impattern/old/oldpatterns/a32.png
new file mode 100644
index 0000000..daf16c1
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a32.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a33.png b/frontend/impattern/old/oldpatterns/a33.png
new file mode 100644
index 0000000..b3cee15
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a33.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a34.png b/frontend/impattern/old/oldpatterns/a34.png
new file mode 100644
index 0000000..0557dae
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a34.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a35.png b/frontend/impattern/old/oldpatterns/a35.png
new file mode 100644
index 0000000..66d88c9
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a35.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a36.png b/frontend/impattern/old/oldpatterns/a36.png
new file mode 100644
index 0000000..7abb51b
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a36.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a37.png b/frontend/impattern/old/oldpatterns/a37.png
new file mode 100644
index 0000000..f30a1ce
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a37.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a38.png b/frontend/impattern/old/oldpatterns/a38.png
new file mode 100644
index 0000000..3e03424
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a38.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a39.png b/frontend/impattern/old/oldpatterns/a39.png
new file mode 100644
index 0000000..a802ae0
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a39.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a4.png b/frontend/impattern/old/oldpatterns/a4.png
new file mode 100644
index 0000000..943ecac
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a4.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a40.png b/frontend/impattern/old/oldpatterns/a40.png
new file mode 100644
index 0000000..7e3f149
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a40.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a41.png b/frontend/impattern/old/oldpatterns/a41.png
new file mode 100644
index 0000000..95a7558
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a41.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a5.png b/frontend/impattern/old/oldpatterns/a5.png
new file mode 100644
index 0000000..c0d0801
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a5.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a6.png b/frontend/impattern/old/oldpatterns/a6.png
new file mode 100644
index 0000000..414ebb4
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a6.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a7.png b/frontend/impattern/old/oldpatterns/a7.png
new file mode 100644
index 0000000..e93e21f
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a7.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a8.png b/frontend/impattern/old/oldpatterns/a8.png
new file mode 100644
index 0000000..8fa69bb
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a8.png
Binary files differ
diff --git a/frontend/impattern/old/oldpatterns/a9.png b/frontend/impattern/old/oldpatterns/a9.png
new file mode 100644
index 0000000..98c81ad
--- /dev/null
+++ b/frontend/impattern/old/oldpatterns/a9.png
Binary files differ
diff --git a/frontend/impattern/other_script.py b/frontend/impattern/other_script.py
new file mode 100644
index 0000000..a057646
--- /dev/null
+++ b/frontend/impattern/other_script.py
@@ -0,0 +1,90 @@
+#!/usr/bin/python
+
+import downloader
+import filenamer
+import inventnamer
+import fieldstorager
+import hexdirer
+import cgi
+from subprocess import Popen, PIPE
+import os
+import sys
+
+print "Content-Type: text/html"
+print
+print ""
+
+nametag = "imDither"
+
+MAIN_DIRECTORY = ""
+#BIN_CONVERT = "/usr/bin/convert"
+#BIN_IDENTIFY = "/usr/bin/identify"
+#BIN_COMPOSITE = "/usr/bin/composite"
+BIN_CONVERT = "convert"
+BIN_IDENTIFY = "identify"
+BIN_COMPOSITE = "composite"
+
+PARAM_LIST = "theurl thedither username format"
+
+form = cgi.FieldStorage()
+newvalues = fieldstorager.fieldstorage(PARAM_LIST, form)
+thekeys = PARAM_LIST.split()
+for key in thekeys:
+ globals()[key] = newvalues[key]
+
+if username == None:
+ username = ""
+
+###################################
+### TEST WITH VALUES HERE
+theurl = "http://asdf.us/im/10/friedeggstresstoy_1321140711_1322282769_pepper.gif"
+thedither = "1.png"
+username = "pepper"
+format = "png"
+###################################
+if format == None:
+ format = "png"
+
+class Dither:
+ def file_size (self, file):
+ return os.stat(file)[6]
+ def identify(self, thefile):
+ ident = Popen([BIN_IDENTIFY, thefile], stdout=PIPE).communicate()[0]
+ partz = ident.split(" ")
+ return partz[2].split("x")
+ def makeCanvas(self, dimensions, thefile):
+ os.system(BIN_CONVERT+" -size "+self.dimensions[0]+"x"+self.dimensions[1]+" canvas:transparent "+thefile)
+ def makeMask(self, themask, thedither, thebackground):
+ os.system(BIN_COMPOSITE+" -tile "+thedither+" "+thebackground+" "+themask)
+ #convert thebg.gif -compose Dst_In null: thefile.gif -matte -layers composite new.gif
+ os.system(BIN_CONVERT+" "+themask+" -compose Dst_In null: "+self.mainfile+" -matte -layers composite "+themask)
+ # os.system("rm "+thebackground)
+ def fuseMask(self, themask, theimage):
+ os.system(BIN_COMPOSITE+" "+theimage+" -compose Pin_Light "+themask+" "+theimage)
+ # os.system("rm "+themask)
+ def __init__(self, theurl, thedither, username):
+ self.mainfile = filenamer.filename(theurl, "imDither", username)
+ filepaths = hexdirer.hexdir()
+ self.privatepath = filepaths[0]
+ self.publicpath = filepaths[1]
+ self.privatepath = "" #
+ downloader.download(theurl, self.mainfile, self.privatepath)
+ parts = self.mainfile.split('.')
+ print parts
+ if "gif" in parts[-1]:
+ canvastype = "gif"
+ else:
+ canvastype = "png"
+ self.canvasfile = inventnamer.inventname(canvastype, "canvasfile")
+ self.dimensions = self.identify(self.mainfile)
+ self.makeCanvas(self.dimensions, self.canvasfile)
+ self.theMask = inventnamer.inventname(canvastype, "maskfile")
+ self.makeMask(self.theMask, thedither, self.canvasfile)
+ self.fuseMask(self.theMask, self.mainfile)
+ #self.mainfile = self.mainfile.replace(, do something with s3)
+ print self.mainfile
+ print self.file_size(self.mainfile)
+ print 'width: '+self.dimensions[0]+'px'
+ print 'height: '+self.dimensions[1]+'px'
+daddy = Dither(theurl, thedither, username)
+
diff --git a/frontend/impattern/patterns/1.png b/frontend/impattern/patterns/1.png
new file mode 100644
index 0000000..0ff9c9b
--- /dev/null
+++ b/frontend/impattern/patterns/1.png
Binary files differ
diff --git a/frontend/impattern/patterns/10.png b/frontend/impattern/patterns/10.png
new file mode 100644
index 0000000..8b7c149
--- /dev/null
+++ b/frontend/impattern/patterns/10.png
Binary files differ
diff --git a/frontend/impattern/patterns/11.png b/frontend/impattern/patterns/11.png
new file mode 100644
index 0000000..d83822f
--- /dev/null
+++ b/frontend/impattern/patterns/11.png
Binary files differ
diff --git a/frontend/impattern/patterns/12.png b/frontend/impattern/patterns/12.png
new file mode 100644
index 0000000..1a0fbae
--- /dev/null
+++ b/frontend/impattern/patterns/12.png
Binary files differ
diff --git a/frontend/impattern/patterns/13.png b/frontend/impattern/patterns/13.png
new file mode 100644
index 0000000..162d259
--- /dev/null
+++ b/frontend/impattern/patterns/13.png
Binary files differ
diff --git a/frontend/impattern/patterns/14.png b/frontend/impattern/patterns/14.png
new file mode 100644
index 0000000..888f852
--- /dev/null
+++ b/frontend/impattern/patterns/14.png
Binary files differ
diff --git a/frontend/impattern/patterns/15.png b/frontend/impattern/patterns/15.png
new file mode 100644
index 0000000..c118abd
--- /dev/null
+++ b/frontend/impattern/patterns/15.png
Binary files differ
diff --git a/frontend/impattern/patterns/16.png b/frontend/impattern/patterns/16.png
new file mode 100644
index 0000000..99a8498
--- /dev/null
+++ b/frontend/impattern/patterns/16.png
Binary files differ
diff --git a/frontend/impattern/patterns/17.png b/frontend/impattern/patterns/17.png
new file mode 100644
index 0000000..3b2dc1a
--- /dev/null
+++ b/frontend/impattern/patterns/17.png
Binary files differ
diff --git a/frontend/impattern/patterns/18.png b/frontend/impattern/patterns/18.png
new file mode 100644
index 0000000..6c88fcc
--- /dev/null
+++ b/frontend/impattern/patterns/18.png
Binary files differ
diff --git a/frontend/impattern/patterns/19.png b/frontend/impattern/patterns/19.png
new file mode 100644
index 0000000..343d10c
--- /dev/null
+++ b/frontend/impattern/patterns/19.png
Binary files differ
diff --git a/frontend/impattern/patterns/2.png b/frontend/impattern/patterns/2.png
new file mode 100644
index 0000000..db8b278
--- /dev/null
+++ b/frontend/impattern/patterns/2.png
Binary files differ
diff --git a/frontend/impattern/patterns/20.png b/frontend/impattern/patterns/20.png
new file mode 100644
index 0000000..b151802
--- /dev/null
+++ b/frontend/impattern/patterns/20.png
Binary files differ
diff --git a/frontend/impattern/patterns/21.png b/frontend/impattern/patterns/21.png
new file mode 100644
index 0000000..a4dd846
--- /dev/null
+++ b/frontend/impattern/patterns/21.png
Binary files differ
diff --git a/frontend/impattern/patterns/22.png b/frontend/impattern/patterns/22.png
new file mode 100644
index 0000000..549a7f3
--- /dev/null
+++ b/frontend/impattern/patterns/22.png
Binary files differ
diff --git a/frontend/impattern/patterns/23.png b/frontend/impattern/patterns/23.png
new file mode 100644
index 0000000..5a3e921
--- /dev/null
+++ b/frontend/impattern/patterns/23.png
Binary files differ
diff --git a/frontend/impattern/patterns/24.png b/frontend/impattern/patterns/24.png
new file mode 100644
index 0000000..d1786f4
--- /dev/null
+++ b/frontend/impattern/patterns/24.png
Binary files differ
diff --git a/frontend/impattern/patterns/25.png b/frontend/impattern/patterns/25.png
new file mode 100644
index 0000000..9916934
--- /dev/null
+++ b/frontend/impattern/patterns/25.png
Binary files differ
diff --git a/frontend/impattern/patterns/26.png b/frontend/impattern/patterns/26.png
new file mode 100644
index 0000000..b24b4ad
--- /dev/null
+++ b/frontend/impattern/patterns/26.png
Binary files differ
diff --git a/frontend/impattern/patterns/27.png b/frontend/impattern/patterns/27.png
new file mode 100644
index 0000000..b06d0ff
--- /dev/null
+++ b/frontend/impattern/patterns/27.png
Binary files differ
diff --git a/frontend/impattern/patterns/28.png b/frontend/impattern/patterns/28.png
new file mode 100644
index 0000000..e3cdf2c
--- /dev/null
+++ b/frontend/impattern/patterns/28.png
Binary files differ
diff --git a/frontend/impattern/patterns/29.png b/frontend/impattern/patterns/29.png
new file mode 100644
index 0000000..04adbdb
--- /dev/null
+++ b/frontend/impattern/patterns/29.png
Binary files differ
diff --git a/frontend/impattern/patterns/3.png b/frontend/impattern/patterns/3.png
new file mode 100644
index 0000000..e5a8bfc
--- /dev/null
+++ b/frontend/impattern/patterns/3.png
Binary files differ
diff --git a/frontend/impattern/patterns/30.png b/frontend/impattern/patterns/30.png
new file mode 100644
index 0000000..963dec8
--- /dev/null
+++ b/frontend/impattern/patterns/30.png
Binary files differ
diff --git a/frontend/impattern/patterns/31.png b/frontend/impattern/patterns/31.png
new file mode 100644
index 0000000..ca882f1
--- /dev/null
+++ b/frontend/impattern/patterns/31.png
Binary files differ
diff --git a/frontend/impattern/patterns/32.png b/frontend/impattern/patterns/32.png
new file mode 100644
index 0000000..16613b9
--- /dev/null
+++ b/frontend/impattern/patterns/32.png
Binary files differ
diff --git a/frontend/impattern/patterns/33.png b/frontend/impattern/patterns/33.png
new file mode 100644
index 0000000..0f9407e
--- /dev/null
+++ b/frontend/impattern/patterns/33.png
Binary files differ
diff --git a/frontend/impattern/patterns/34.png b/frontend/impattern/patterns/34.png
new file mode 100644
index 0000000..f74cfde
--- /dev/null
+++ b/frontend/impattern/patterns/34.png
Binary files differ
diff --git a/frontend/impattern/patterns/35.png b/frontend/impattern/patterns/35.png
new file mode 100644
index 0000000..863e55e
--- /dev/null
+++ b/frontend/impattern/patterns/35.png
Binary files differ
diff --git a/frontend/impattern/patterns/36.png b/frontend/impattern/patterns/36.png
new file mode 100644
index 0000000..90ae4fd
--- /dev/null
+++ b/frontend/impattern/patterns/36.png
Binary files differ
diff --git a/frontend/impattern/patterns/37.png b/frontend/impattern/patterns/37.png
new file mode 100644
index 0000000..b89436a
--- /dev/null
+++ b/frontend/impattern/patterns/37.png
Binary files differ
diff --git a/frontend/impattern/patterns/38.png b/frontend/impattern/patterns/38.png
new file mode 100644
index 0000000..4ac8558
--- /dev/null
+++ b/frontend/impattern/patterns/38.png
Binary files differ
diff --git a/frontend/impattern/patterns/39.png b/frontend/impattern/patterns/39.png
new file mode 100644
index 0000000..d05f50d
--- /dev/null
+++ b/frontend/impattern/patterns/39.png
Binary files differ
diff --git a/frontend/impattern/patterns/4.png b/frontend/impattern/patterns/4.png
new file mode 100644
index 0000000..a89724c
--- /dev/null
+++ b/frontend/impattern/patterns/4.png
Binary files differ
diff --git a/frontend/impattern/patterns/40.png b/frontend/impattern/patterns/40.png
new file mode 100644
index 0000000..58d9757
--- /dev/null
+++ b/frontend/impattern/patterns/40.png
Binary files differ
diff --git a/frontend/impattern/patterns/41.png b/frontend/impattern/patterns/41.png
new file mode 100644
index 0000000..84c5723
--- /dev/null
+++ b/frontend/impattern/patterns/41.png
Binary files differ
diff --git a/frontend/impattern/patterns/42.png b/frontend/impattern/patterns/42.png
new file mode 100644
index 0000000..d633b3f
--- /dev/null
+++ b/frontend/impattern/patterns/42.png
Binary files differ
diff --git a/frontend/impattern/patterns/43.png b/frontend/impattern/patterns/43.png
new file mode 100644
index 0000000..a515475
--- /dev/null
+++ b/frontend/impattern/patterns/43.png
Binary files differ
diff --git a/frontend/impattern/patterns/44.png b/frontend/impattern/patterns/44.png
new file mode 100644
index 0000000..de7cb2b
--- /dev/null
+++ b/frontend/impattern/patterns/44.png
Binary files differ
diff --git a/frontend/impattern/patterns/45.png b/frontend/impattern/patterns/45.png
new file mode 100644
index 0000000..794c466
--- /dev/null
+++ b/frontend/impattern/patterns/45.png
Binary files differ
diff --git a/frontend/impattern/patterns/46.png b/frontend/impattern/patterns/46.png
new file mode 100644
index 0000000..79e6720
--- /dev/null
+++ b/frontend/impattern/patterns/46.png
Binary files differ
diff --git a/frontend/impattern/patterns/47.png b/frontend/impattern/patterns/47.png
new file mode 100644
index 0000000..553201d
--- /dev/null
+++ b/frontend/impattern/patterns/47.png
Binary files differ
diff --git a/frontend/impattern/patterns/48.png b/frontend/impattern/patterns/48.png
new file mode 100644
index 0000000..36e284e
--- /dev/null
+++ b/frontend/impattern/patterns/48.png
Binary files differ
diff --git a/frontend/impattern/patterns/49.png b/frontend/impattern/patterns/49.png
new file mode 100644
index 0000000..fd30432
--- /dev/null
+++ b/frontend/impattern/patterns/49.png
Binary files differ
diff --git a/frontend/impattern/patterns/5.png b/frontend/impattern/patterns/5.png
new file mode 100644
index 0000000..cebb2e1
--- /dev/null
+++ b/frontend/impattern/patterns/5.png
Binary files differ
diff --git a/frontend/impattern/patterns/50.png b/frontend/impattern/patterns/50.png
new file mode 100644
index 0000000..bc884e8
--- /dev/null
+++ b/frontend/impattern/patterns/50.png
Binary files differ
diff --git a/frontend/impattern/patterns/51.png b/frontend/impattern/patterns/51.png
new file mode 100644
index 0000000..6a2c0fa
--- /dev/null
+++ b/frontend/impattern/patterns/51.png
Binary files differ
diff --git a/frontend/impattern/patterns/52.png b/frontend/impattern/patterns/52.png
new file mode 100644
index 0000000..3af3ed9
--- /dev/null
+++ b/frontend/impattern/patterns/52.png
Binary files differ
diff --git a/frontend/impattern/patterns/53.png b/frontend/impattern/patterns/53.png
new file mode 100644
index 0000000..bf84248
--- /dev/null
+++ b/frontend/impattern/patterns/53.png
Binary files differ
diff --git a/frontend/impattern/patterns/54.png b/frontend/impattern/patterns/54.png
new file mode 100644
index 0000000..8a2229f
--- /dev/null
+++ b/frontend/impattern/patterns/54.png
Binary files differ
diff --git a/frontend/impattern/patterns/55.png b/frontend/impattern/patterns/55.png
new file mode 100644
index 0000000..3d88454
--- /dev/null
+++ b/frontend/impattern/patterns/55.png
Binary files differ
diff --git a/frontend/impattern/patterns/56.png b/frontend/impattern/patterns/56.png
new file mode 100644
index 0000000..fefbe1e
--- /dev/null
+++ b/frontend/impattern/patterns/56.png
Binary files differ
diff --git a/frontend/impattern/patterns/57.png b/frontend/impattern/patterns/57.png
new file mode 100644
index 0000000..f6f5dd8
--- /dev/null
+++ b/frontend/impattern/patterns/57.png
Binary files differ
diff --git a/frontend/impattern/patterns/58.png b/frontend/impattern/patterns/58.png
new file mode 100644
index 0000000..9816629
--- /dev/null
+++ b/frontend/impattern/patterns/58.png
Binary files differ
diff --git a/frontend/impattern/patterns/59.png b/frontend/impattern/patterns/59.png
new file mode 100644
index 0000000..ea4be4a
--- /dev/null
+++ b/frontend/impattern/patterns/59.png
Binary files differ
diff --git a/frontend/impattern/patterns/6.png b/frontend/impattern/patterns/6.png
new file mode 100644
index 0000000..fe8bbdf
--- /dev/null
+++ b/frontend/impattern/patterns/6.png
Binary files differ
diff --git a/frontend/impattern/patterns/60.png b/frontend/impattern/patterns/60.png
new file mode 100644
index 0000000..0144486
--- /dev/null
+++ b/frontend/impattern/patterns/60.png
Binary files differ
diff --git a/frontend/impattern/patterns/61.png b/frontend/impattern/patterns/61.png
new file mode 100644
index 0000000..49795ba
--- /dev/null
+++ b/frontend/impattern/patterns/61.png
Binary files differ
diff --git a/frontend/impattern/patterns/62.png b/frontend/impattern/patterns/62.png
new file mode 100644
index 0000000..bdee3df
--- /dev/null
+++ b/frontend/impattern/patterns/62.png
Binary files differ
diff --git a/frontend/impattern/patterns/63.png b/frontend/impattern/patterns/63.png
new file mode 100644
index 0000000..27b42bd
--- /dev/null
+++ b/frontend/impattern/patterns/63.png
Binary files differ
diff --git a/frontend/impattern/patterns/64.png b/frontend/impattern/patterns/64.png
new file mode 100644
index 0000000..8424055
--- /dev/null
+++ b/frontend/impattern/patterns/64.png
Binary files differ
diff --git a/frontend/impattern/patterns/65.png b/frontend/impattern/patterns/65.png
new file mode 100644
index 0000000..fec3e1a
--- /dev/null
+++ b/frontend/impattern/patterns/65.png
Binary files differ
diff --git a/frontend/impattern/patterns/66.png b/frontend/impattern/patterns/66.png
new file mode 100644
index 0000000..612e95d
--- /dev/null
+++ b/frontend/impattern/patterns/66.png
Binary files differ
diff --git a/frontend/impattern/patterns/67.png b/frontend/impattern/patterns/67.png
new file mode 100644
index 0000000..f419c07
--- /dev/null
+++ b/frontend/impattern/patterns/67.png
Binary files differ
diff --git a/frontend/impattern/patterns/68.png b/frontend/impattern/patterns/68.png
new file mode 100644
index 0000000..7341240
--- /dev/null
+++ b/frontend/impattern/patterns/68.png
Binary files differ
diff --git a/frontend/impattern/patterns/69.png b/frontend/impattern/patterns/69.png
new file mode 100644
index 0000000..0a45292
--- /dev/null
+++ b/frontend/impattern/patterns/69.png
Binary files differ
diff --git a/frontend/impattern/patterns/7.png b/frontend/impattern/patterns/7.png
new file mode 100644
index 0000000..f841ca6
--- /dev/null
+++ b/frontend/impattern/patterns/7.png
Binary files differ
diff --git a/frontend/impattern/patterns/70.png b/frontend/impattern/patterns/70.png
new file mode 100644
index 0000000..8480de3
--- /dev/null
+++ b/frontend/impattern/patterns/70.png
Binary files differ
diff --git a/frontend/impattern/patterns/71.png b/frontend/impattern/patterns/71.png
new file mode 100644
index 0000000..7ca4d72
--- /dev/null
+++ b/frontend/impattern/patterns/71.png
Binary files differ
diff --git a/frontend/impattern/patterns/72.png b/frontend/impattern/patterns/72.png
new file mode 100644
index 0000000..1a3da86
--- /dev/null
+++ b/frontend/impattern/patterns/72.png
Binary files differ
diff --git a/frontend/impattern/patterns/73.png b/frontend/impattern/patterns/73.png
new file mode 100644
index 0000000..52c5334
--- /dev/null
+++ b/frontend/impattern/patterns/73.png
Binary files differ
diff --git a/frontend/impattern/patterns/74.png b/frontend/impattern/patterns/74.png
new file mode 100644
index 0000000..4e3c915
--- /dev/null
+++ b/frontend/impattern/patterns/74.png
Binary files differ
diff --git a/frontend/impattern/patterns/75.png b/frontend/impattern/patterns/75.png
new file mode 100644
index 0000000..094dd47
--- /dev/null
+++ b/frontend/impattern/patterns/75.png
Binary files differ
diff --git a/frontend/impattern/patterns/76.png b/frontend/impattern/patterns/76.png
new file mode 100644
index 0000000..dd10449
--- /dev/null
+++ b/frontend/impattern/patterns/76.png
Binary files differ
diff --git a/frontend/impattern/patterns/77.png b/frontend/impattern/patterns/77.png
new file mode 100644
index 0000000..73c8b00
--- /dev/null
+++ b/frontend/impattern/patterns/77.png
Binary files differ
diff --git a/frontend/impattern/patterns/78.png b/frontend/impattern/patterns/78.png
new file mode 100644
index 0000000..ba1d28a
--- /dev/null
+++ b/frontend/impattern/patterns/78.png
Binary files differ
diff --git a/frontend/impattern/patterns/79.png b/frontend/impattern/patterns/79.png
new file mode 100644
index 0000000..22de399
--- /dev/null
+++ b/frontend/impattern/patterns/79.png
Binary files differ
diff --git a/frontend/impattern/patterns/8.png b/frontend/impattern/patterns/8.png
new file mode 100644
index 0000000..4941c17
--- /dev/null
+++ b/frontend/impattern/patterns/8.png
Binary files differ
diff --git a/frontend/impattern/patterns/80.png b/frontend/impattern/patterns/80.png
new file mode 100644
index 0000000..5b6c87a
--- /dev/null
+++ b/frontend/impattern/patterns/80.png
Binary files differ
diff --git a/frontend/impattern/patterns/81.png b/frontend/impattern/patterns/81.png
new file mode 100644
index 0000000..26fa933
--- /dev/null
+++ b/frontend/impattern/patterns/81.png
Binary files differ
diff --git a/frontend/impattern/patterns/82.png b/frontend/impattern/patterns/82.png
new file mode 100644
index 0000000..2bfcc05
--- /dev/null
+++ b/frontend/impattern/patterns/82.png
Binary files differ
diff --git a/frontend/impattern/patterns/83.png b/frontend/impattern/patterns/83.png
new file mode 100644
index 0000000..7cf3918
--- /dev/null
+++ b/frontend/impattern/patterns/83.png
Binary files differ
diff --git a/frontend/impattern/patterns/84.png b/frontend/impattern/patterns/84.png
new file mode 100644
index 0000000..5d8e74d
--- /dev/null
+++ b/frontend/impattern/patterns/84.png
Binary files differ
diff --git a/frontend/impattern/patterns/85.png b/frontend/impattern/patterns/85.png
new file mode 100644
index 0000000..be68806
--- /dev/null
+++ b/frontend/impattern/patterns/85.png
Binary files differ
diff --git a/frontend/impattern/patterns/86.png b/frontend/impattern/patterns/86.png
new file mode 100644
index 0000000..d039020
--- /dev/null
+++ b/frontend/impattern/patterns/86.png
Binary files differ
diff --git a/frontend/impattern/patterns/87.png b/frontend/impattern/patterns/87.png
new file mode 100644
index 0000000..ddc2689
--- /dev/null
+++ b/frontend/impattern/patterns/87.png
Binary files differ
diff --git a/frontend/impattern/patterns/88.png b/frontend/impattern/patterns/88.png
new file mode 100644
index 0000000..929c103
--- /dev/null
+++ b/frontend/impattern/patterns/88.png
Binary files differ
diff --git a/frontend/impattern/patterns/89.png b/frontend/impattern/patterns/89.png
new file mode 100644
index 0000000..4ff3225
--- /dev/null
+++ b/frontend/impattern/patterns/89.png
Binary files differ
diff --git a/frontend/impattern/patterns/9.png b/frontend/impattern/patterns/9.png
new file mode 100644
index 0000000..7910721
--- /dev/null
+++ b/frontend/impattern/patterns/9.png
Binary files differ
diff --git a/frontend/impattern/patterns/90.png b/frontend/impattern/patterns/90.png
new file mode 100644
index 0000000..04259e9
--- /dev/null
+++ b/frontend/impattern/patterns/90.png
Binary files differ
diff --git a/frontend/impattern/patterns/91.png b/frontend/impattern/patterns/91.png
new file mode 100644
index 0000000..039af04
--- /dev/null
+++ b/frontend/impattern/patterns/91.png
Binary files differ
diff --git a/frontend/impattern/patterns/92.png b/frontend/impattern/patterns/92.png
new file mode 100644
index 0000000..7a4d348
--- /dev/null
+++ b/frontend/impattern/patterns/92.png
Binary files differ
diff --git a/frontend/impattern/patterns/93.png b/frontend/impattern/patterns/93.png
new file mode 100644
index 0000000..511fee3
--- /dev/null
+++ b/frontend/impattern/patterns/93.png
Binary files differ
diff --git a/frontend/impattern/patterns/94.png b/frontend/impattern/patterns/94.png
new file mode 100644
index 0000000..449c73a
--- /dev/null
+++ b/frontend/impattern/patterns/94.png
Binary files differ
diff --git a/frontend/impattern/patterns/95.png b/frontend/impattern/patterns/95.png
new file mode 100644
index 0000000..70548f8
--- /dev/null
+++ b/frontend/impattern/patterns/95.png
Binary files differ
diff --git a/frontend/impattern/patterns/96.png b/frontend/impattern/patterns/96.png
new file mode 100644
index 0000000..0de8efe
--- /dev/null
+++ b/frontend/impattern/patterns/96.png
Binary files differ
diff --git a/frontend/impattern/patterns/a0.png b/frontend/impattern/patterns/a0.png
new file mode 100644
index 0000000..9606e48
--- /dev/null
+++ b/frontend/impattern/patterns/a0.png
Binary files differ
diff --git a/frontend/impattern/patterns/a1.png b/frontend/impattern/patterns/a1.png
new file mode 100644
index 0000000..2dd534d
--- /dev/null
+++ b/frontend/impattern/patterns/a1.png
Binary files differ
diff --git a/frontend/impattern/patterns/a10.png b/frontend/impattern/patterns/a10.png
new file mode 100644
index 0000000..e950ad0
--- /dev/null
+++ b/frontend/impattern/patterns/a10.png
Binary files differ
diff --git a/frontend/impattern/patterns/a11.png b/frontend/impattern/patterns/a11.png
new file mode 100644
index 0000000..9c52699
--- /dev/null
+++ b/frontend/impattern/patterns/a11.png
Binary files differ
diff --git a/frontend/impattern/patterns/a12.png b/frontend/impattern/patterns/a12.png
new file mode 100644
index 0000000..3b80e68
--- /dev/null
+++ b/frontend/impattern/patterns/a12.png
Binary files differ
diff --git a/frontend/impattern/patterns/a13.png b/frontend/impattern/patterns/a13.png
new file mode 100644
index 0000000..094cb6f
--- /dev/null
+++ b/frontend/impattern/patterns/a13.png
Binary files differ
diff --git a/frontend/impattern/patterns/a14.png b/frontend/impattern/patterns/a14.png
new file mode 100644
index 0000000..d3046c5
--- /dev/null
+++ b/frontend/impattern/patterns/a14.png
Binary files differ
diff --git a/frontend/impattern/patterns/a15.png b/frontend/impattern/patterns/a15.png
new file mode 100644
index 0000000..3096a81
--- /dev/null
+++ b/frontend/impattern/patterns/a15.png
Binary files differ
diff --git a/frontend/impattern/patterns/a16.png b/frontend/impattern/patterns/a16.png
new file mode 100644
index 0000000..bb6affb
--- /dev/null
+++ b/frontend/impattern/patterns/a16.png
Binary files differ
diff --git a/frontend/impattern/patterns/a17.png b/frontend/impattern/patterns/a17.png
new file mode 100644
index 0000000..2c259e6
--- /dev/null
+++ b/frontend/impattern/patterns/a17.png
Binary files differ
diff --git a/frontend/impattern/patterns/a18.png b/frontend/impattern/patterns/a18.png
new file mode 100644
index 0000000..301d419
--- /dev/null
+++ b/frontend/impattern/patterns/a18.png
Binary files differ
diff --git a/frontend/impattern/patterns/a19.png b/frontend/impattern/patterns/a19.png
new file mode 100644
index 0000000..431345f
--- /dev/null
+++ b/frontend/impattern/patterns/a19.png
Binary files differ
diff --git a/frontend/impattern/patterns/a2.png b/frontend/impattern/patterns/a2.png
new file mode 100644
index 0000000..5c26a6e
--- /dev/null
+++ b/frontend/impattern/patterns/a2.png
Binary files differ
diff --git a/frontend/impattern/patterns/a20.png b/frontend/impattern/patterns/a20.png
new file mode 100644
index 0000000..5cc7f26
--- /dev/null
+++ b/frontend/impattern/patterns/a20.png
Binary files differ
diff --git a/frontend/impattern/patterns/a21.png b/frontend/impattern/patterns/a21.png
new file mode 100644
index 0000000..8980947
--- /dev/null
+++ b/frontend/impattern/patterns/a21.png
Binary files differ
diff --git a/frontend/impattern/patterns/a22.png b/frontend/impattern/patterns/a22.png
new file mode 100644
index 0000000..cafcace
--- /dev/null
+++ b/frontend/impattern/patterns/a22.png
Binary files differ
diff --git a/frontend/impattern/patterns/a23.png b/frontend/impattern/patterns/a23.png
new file mode 100644
index 0000000..5fdf851
--- /dev/null
+++ b/frontend/impattern/patterns/a23.png
Binary files differ
diff --git a/frontend/impattern/patterns/a24.png b/frontend/impattern/patterns/a24.png
new file mode 100644
index 0000000..64c9e02
--- /dev/null
+++ b/frontend/impattern/patterns/a24.png
Binary files differ
diff --git a/frontend/impattern/patterns/a25.png b/frontend/impattern/patterns/a25.png
new file mode 100644
index 0000000..bab6cd6
--- /dev/null
+++ b/frontend/impattern/patterns/a25.png
Binary files differ
diff --git a/frontend/impattern/patterns/a26.png b/frontend/impattern/patterns/a26.png
new file mode 100644
index 0000000..fb32ff0
--- /dev/null
+++ b/frontend/impattern/patterns/a26.png
Binary files differ
diff --git a/frontend/impattern/patterns/a27.png b/frontend/impattern/patterns/a27.png
new file mode 100644
index 0000000..d0a8821
--- /dev/null
+++ b/frontend/impattern/patterns/a27.png
Binary files differ
diff --git a/frontend/impattern/patterns/a28.png b/frontend/impattern/patterns/a28.png
new file mode 100644
index 0000000..220a847
--- /dev/null
+++ b/frontend/impattern/patterns/a28.png
Binary files differ
diff --git a/frontend/impattern/patterns/a29.png b/frontend/impattern/patterns/a29.png
new file mode 100644
index 0000000..dc36d31
--- /dev/null
+++ b/frontend/impattern/patterns/a29.png
Binary files differ
diff --git a/frontend/impattern/patterns/a3.png b/frontend/impattern/patterns/a3.png
new file mode 100644
index 0000000..dd045ec
--- /dev/null
+++ b/frontend/impattern/patterns/a3.png
Binary files differ
diff --git a/frontend/impattern/patterns/a30.png b/frontend/impattern/patterns/a30.png
new file mode 100644
index 0000000..f7ea372
--- /dev/null
+++ b/frontend/impattern/patterns/a30.png
Binary files differ
diff --git a/frontend/impattern/patterns/a31.png b/frontend/impattern/patterns/a31.png
new file mode 100644
index 0000000..e04391a
--- /dev/null
+++ b/frontend/impattern/patterns/a31.png
Binary files differ
diff --git a/frontend/impattern/patterns/a32.png b/frontend/impattern/patterns/a32.png
new file mode 100644
index 0000000..022b3fc
--- /dev/null
+++ b/frontend/impattern/patterns/a32.png
Binary files differ
diff --git a/frontend/impattern/patterns/a33.png b/frontend/impattern/patterns/a33.png
new file mode 100644
index 0000000..200c2d6
--- /dev/null
+++ b/frontend/impattern/patterns/a33.png
Binary files differ
diff --git a/frontend/impattern/patterns/a34.png b/frontend/impattern/patterns/a34.png
new file mode 100644
index 0000000..e5d0ddb
--- /dev/null
+++ b/frontend/impattern/patterns/a34.png
Binary files differ
diff --git a/frontend/impattern/patterns/a35.png b/frontend/impattern/patterns/a35.png
new file mode 100644
index 0000000..e334627
--- /dev/null
+++ b/frontend/impattern/patterns/a35.png
Binary files differ
diff --git a/frontend/impattern/patterns/a36.png b/frontend/impattern/patterns/a36.png
new file mode 100644
index 0000000..b7e8233
--- /dev/null
+++ b/frontend/impattern/patterns/a36.png
Binary files differ
diff --git a/frontend/impattern/patterns/a37.png b/frontend/impattern/patterns/a37.png
new file mode 100644
index 0000000..da715d2
--- /dev/null
+++ b/frontend/impattern/patterns/a37.png
Binary files differ
diff --git a/frontend/impattern/patterns/a38.png b/frontend/impattern/patterns/a38.png
new file mode 100644
index 0000000..da1ca80
--- /dev/null
+++ b/frontend/impattern/patterns/a38.png
Binary files differ
diff --git a/frontend/impattern/patterns/a39.png b/frontend/impattern/patterns/a39.png
new file mode 100644
index 0000000..efb59a3
--- /dev/null
+++ b/frontend/impattern/patterns/a39.png
Binary files differ
diff --git a/frontend/impattern/patterns/a4.png b/frontend/impattern/patterns/a4.png
new file mode 100644
index 0000000..f9b0f25
--- /dev/null
+++ b/frontend/impattern/patterns/a4.png
Binary files differ
diff --git a/frontend/impattern/patterns/a40.png b/frontend/impattern/patterns/a40.png
new file mode 100644
index 0000000..8923c32
--- /dev/null
+++ b/frontend/impattern/patterns/a40.png
Binary files differ
diff --git a/frontend/impattern/patterns/a41.png b/frontend/impattern/patterns/a41.png
new file mode 100644
index 0000000..953e5ca
--- /dev/null
+++ b/frontend/impattern/patterns/a41.png
Binary files differ
diff --git a/frontend/impattern/patterns/a5.png b/frontend/impattern/patterns/a5.png
new file mode 100644
index 0000000..293f3c0
--- /dev/null
+++ b/frontend/impattern/patterns/a5.png
Binary files differ
diff --git a/frontend/impattern/patterns/a6.png b/frontend/impattern/patterns/a6.png
new file mode 100644
index 0000000..7cd9ec7
--- /dev/null
+++ b/frontend/impattern/patterns/a6.png
Binary files differ
diff --git a/frontend/impattern/patterns/a7.png b/frontend/impattern/patterns/a7.png
new file mode 100644
index 0000000..c3d9c40
--- /dev/null
+++ b/frontend/impattern/patterns/a7.png
Binary files differ
diff --git a/frontend/impattern/patterns/a8.png b/frontend/impattern/patterns/a8.png
new file mode 100644
index 0000000..7c65020
--- /dev/null
+++ b/frontend/impattern/patterns/a8.png
Binary files differ
diff --git a/frontend/impattern/patterns/a9.png b/frontend/impattern/patterns/a9.png
new file mode 100644
index 0000000..699b370
--- /dev/null
+++ b/frontend/impattern/patterns/a9.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/1.png b/frontend/impattern/semi_patterns/1.png
new file mode 100644
index 0000000..a0aeccb
--- /dev/null
+++ b/frontend/impattern/semi_patterns/1.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/10.png b/frontend/impattern/semi_patterns/10.png
new file mode 100644
index 0000000..3865589
--- /dev/null
+++ b/frontend/impattern/semi_patterns/10.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/11.png b/frontend/impattern/semi_patterns/11.png
new file mode 100644
index 0000000..2a8ca34
--- /dev/null
+++ b/frontend/impattern/semi_patterns/11.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/12.png b/frontend/impattern/semi_patterns/12.png
new file mode 100644
index 0000000..4adb35f
--- /dev/null
+++ b/frontend/impattern/semi_patterns/12.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/13.png b/frontend/impattern/semi_patterns/13.png
new file mode 100644
index 0000000..48e9362
--- /dev/null
+++ b/frontend/impattern/semi_patterns/13.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/14.png b/frontend/impattern/semi_patterns/14.png
new file mode 100644
index 0000000..867b0a9
--- /dev/null
+++ b/frontend/impattern/semi_patterns/14.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/15.png b/frontend/impattern/semi_patterns/15.png
new file mode 100644
index 0000000..f37be5a
--- /dev/null
+++ b/frontend/impattern/semi_patterns/15.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/16.png b/frontend/impattern/semi_patterns/16.png
new file mode 100644
index 0000000..7994ced
--- /dev/null
+++ b/frontend/impattern/semi_patterns/16.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/17.png b/frontend/impattern/semi_patterns/17.png
new file mode 100644
index 0000000..9ffa444
--- /dev/null
+++ b/frontend/impattern/semi_patterns/17.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/18.png b/frontend/impattern/semi_patterns/18.png
new file mode 100644
index 0000000..2522e8d
--- /dev/null
+++ b/frontend/impattern/semi_patterns/18.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/19.png b/frontend/impattern/semi_patterns/19.png
new file mode 100644
index 0000000..5b4ac7a
--- /dev/null
+++ b/frontend/impattern/semi_patterns/19.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/2.png b/frontend/impattern/semi_patterns/2.png
new file mode 100644
index 0000000..a6aa256
--- /dev/null
+++ b/frontend/impattern/semi_patterns/2.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/20.png b/frontend/impattern/semi_patterns/20.png
new file mode 100644
index 0000000..57a82c1
--- /dev/null
+++ b/frontend/impattern/semi_patterns/20.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/21.png b/frontend/impattern/semi_patterns/21.png
new file mode 100644
index 0000000..2b671c7
--- /dev/null
+++ b/frontend/impattern/semi_patterns/21.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/22.png b/frontend/impattern/semi_patterns/22.png
new file mode 100644
index 0000000..d28f071
--- /dev/null
+++ b/frontend/impattern/semi_patterns/22.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/23.png b/frontend/impattern/semi_patterns/23.png
new file mode 100644
index 0000000..052cf6f
--- /dev/null
+++ b/frontend/impattern/semi_patterns/23.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/24.png b/frontend/impattern/semi_patterns/24.png
new file mode 100644
index 0000000..4bee000
--- /dev/null
+++ b/frontend/impattern/semi_patterns/24.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/25.png b/frontend/impattern/semi_patterns/25.png
new file mode 100644
index 0000000..cbd1097
--- /dev/null
+++ b/frontend/impattern/semi_patterns/25.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/26.png b/frontend/impattern/semi_patterns/26.png
new file mode 100644
index 0000000..5fc32f4
--- /dev/null
+++ b/frontend/impattern/semi_patterns/26.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/27.png b/frontend/impattern/semi_patterns/27.png
new file mode 100644
index 0000000..18ce493
--- /dev/null
+++ b/frontend/impattern/semi_patterns/27.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/28.png b/frontend/impattern/semi_patterns/28.png
new file mode 100644
index 0000000..5924c44
--- /dev/null
+++ b/frontend/impattern/semi_patterns/28.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/29.png b/frontend/impattern/semi_patterns/29.png
new file mode 100644
index 0000000..16fc2a5
--- /dev/null
+++ b/frontend/impattern/semi_patterns/29.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/3.png b/frontend/impattern/semi_patterns/3.png
new file mode 100644
index 0000000..8c3d334
--- /dev/null
+++ b/frontend/impattern/semi_patterns/3.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/30.png b/frontend/impattern/semi_patterns/30.png
new file mode 100644
index 0000000..50c8289
--- /dev/null
+++ b/frontend/impattern/semi_patterns/30.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/31.png b/frontend/impattern/semi_patterns/31.png
new file mode 100644
index 0000000..3dd944e
--- /dev/null
+++ b/frontend/impattern/semi_patterns/31.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/32.png b/frontend/impattern/semi_patterns/32.png
new file mode 100644
index 0000000..79aeb84
--- /dev/null
+++ b/frontend/impattern/semi_patterns/32.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/33.png b/frontend/impattern/semi_patterns/33.png
new file mode 100644
index 0000000..55def42
--- /dev/null
+++ b/frontend/impattern/semi_patterns/33.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/34.png b/frontend/impattern/semi_patterns/34.png
new file mode 100644
index 0000000..f7616ea
--- /dev/null
+++ b/frontend/impattern/semi_patterns/34.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/35.png b/frontend/impattern/semi_patterns/35.png
new file mode 100644
index 0000000..3ecbaaf
--- /dev/null
+++ b/frontend/impattern/semi_patterns/35.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/36.png b/frontend/impattern/semi_patterns/36.png
new file mode 100644
index 0000000..0243cf7
--- /dev/null
+++ b/frontend/impattern/semi_patterns/36.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/37.png b/frontend/impattern/semi_patterns/37.png
new file mode 100644
index 0000000..012ed79
--- /dev/null
+++ b/frontend/impattern/semi_patterns/37.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/38.png b/frontend/impattern/semi_patterns/38.png
new file mode 100644
index 0000000..9aa54b7
--- /dev/null
+++ b/frontend/impattern/semi_patterns/38.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/39.png b/frontend/impattern/semi_patterns/39.png
new file mode 100644
index 0000000..e98ec53
--- /dev/null
+++ b/frontend/impattern/semi_patterns/39.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/4.png b/frontend/impattern/semi_patterns/4.png
new file mode 100644
index 0000000..473e6e7
--- /dev/null
+++ b/frontend/impattern/semi_patterns/4.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/40.png b/frontend/impattern/semi_patterns/40.png
new file mode 100644
index 0000000..d7d7cba
--- /dev/null
+++ b/frontend/impattern/semi_patterns/40.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/41.png b/frontend/impattern/semi_patterns/41.png
new file mode 100644
index 0000000..5d15dd7
--- /dev/null
+++ b/frontend/impattern/semi_patterns/41.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/42.png b/frontend/impattern/semi_patterns/42.png
new file mode 100644
index 0000000..dedbfe2
--- /dev/null
+++ b/frontend/impattern/semi_patterns/42.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/43.png b/frontend/impattern/semi_patterns/43.png
new file mode 100644
index 0000000..dd690d6
--- /dev/null
+++ b/frontend/impattern/semi_patterns/43.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/44.png b/frontend/impattern/semi_patterns/44.png
new file mode 100644
index 0000000..12afc85
--- /dev/null
+++ b/frontend/impattern/semi_patterns/44.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/45.png b/frontend/impattern/semi_patterns/45.png
new file mode 100644
index 0000000..972933b
--- /dev/null
+++ b/frontend/impattern/semi_patterns/45.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/46.png b/frontend/impattern/semi_patterns/46.png
new file mode 100644
index 0000000..857ef06
--- /dev/null
+++ b/frontend/impattern/semi_patterns/46.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/47.png b/frontend/impattern/semi_patterns/47.png
new file mode 100644
index 0000000..4002e54
--- /dev/null
+++ b/frontend/impattern/semi_patterns/47.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/48.png b/frontend/impattern/semi_patterns/48.png
new file mode 100644
index 0000000..ff785ed
--- /dev/null
+++ b/frontend/impattern/semi_patterns/48.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/49.png b/frontend/impattern/semi_patterns/49.png
new file mode 100644
index 0000000..1a8525f
--- /dev/null
+++ b/frontend/impattern/semi_patterns/49.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/5.png b/frontend/impattern/semi_patterns/5.png
new file mode 100644
index 0000000..7bd6619
--- /dev/null
+++ b/frontend/impattern/semi_patterns/5.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/50.png b/frontend/impattern/semi_patterns/50.png
new file mode 100644
index 0000000..f32d908
--- /dev/null
+++ b/frontend/impattern/semi_patterns/50.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/51.png b/frontend/impattern/semi_patterns/51.png
new file mode 100644
index 0000000..20dc9ca
--- /dev/null
+++ b/frontend/impattern/semi_patterns/51.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/52.png b/frontend/impattern/semi_patterns/52.png
new file mode 100644
index 0000000..0e097fa
--- /dev/null
+++ b/frontend/impattern/semi_patterns/52.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/53.png b/frontend/impattern/semi_patterns/53.png
new file mode 100644
index 0000000..eec7951
--- /dev/null
+++ b/frontend/impattern/semi_patterns/53.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/54.png b/frontend/impattern/semi_patterns/54.png
new file mode 100644
index 0000000..e23a862
--- /dev/null
+++ b/frontend/impattern/semi_patterns/54.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/55.png b/frontend/impattern/semi_patterns/55.png
new file mode 100644
index 0000000..d908a85
--- /dev/null
+++ b/frontend/impattern/semi_patterns/55.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/56.png b/frontend/impattern/semi_patterns/56.png
new file mode 100644
index 0000000..330b589
--- /dev/null
+++ b/frontend/impattern/semi_patterns/56.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/57.png b/frontend/impattern/semi_patterns/57.png
new file mode 100644
index 0000000..d9587f3
--- /dev/null
+++ b/frontend/impattern/semi_patterns/57.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/58.png b/frontend/impattern/semi_patterns/58.png
new file mode 100644
index 0000000..0ccfba0
--- /dev/null
+++ b/frontend/impattern/semi_patterns/58.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/59.png b/frontend/impattern/semi_patterns/59.png
new file mode 100644
index 0000000..673a3b7
--- /dev/null
+++ b/frontend/impattern/semi_patterns/59.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/6.png b/frontend/impattern/semi_patterns/6.png
new file mode 100644
index 0000000..a3b8272
--- /dev/null
+++ b/frontend/impattern/semi_patterns/6.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/60.png b/frontend/impattern/semi_patterns/60.png
new file mode 100644
index 0000000..e8ea7a6
--- /dev/null
+++ b/frontend/impattern/semi_patterns/60.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/61.png b/frontend/impattern/semi_patterns/61.png
new file mode 100644
index 0000000..4a8f42c
--- /dev/null
+++ b/frontend/impattern/semi_patterns/61.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/62.png b/frontend/impattern/semi_patterns/62.png
new file mode 100644
index 0000000..491e211
--- /dev/null
+++ b/frontend/impattern/semi_patterns/62.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/63.png b/frontend/impattern/semi_patterns/63.png
new file mode 100644
index 0000000..456203e
--- /dev/null
+++ b/frontend/impattern/semi_patterns/63.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/64.png b/frontend/impattern/semi_patterns/64.png
new file mode 100644
index 0000000..363c9e1
--- /dev/null
+++ b/frontend/impattern/semi_patterns/64.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/65.png b/frontend/impattern/semi_patterns/65.png
new file mode 100644
index 0000000..40b3ab0
--- /dev/null
+++ b/frontend/impattern/semi_patterns/65.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/66.png b/frontend/impattern/semi_patterns/66.png
new file mode 100644
index 0000000..4c46c0d
--- /dev/null
+++ b/frontend/impattern/semi_patterns/66.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/67.png b/frontend/impattern/semi_patterns/67.png
new file mode 100644
index 0000000..62f44fa
--- /dev/null
+++ b/frontend/impattern/semi_patterns/67.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/68.png b/frontend/impattern/semi_patterns/68.png
new file mode 100644
index 0000000..32bd5bc
--- /dev/null
+++ b/frontend/impattern/semi_patterns/68.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/69.png b/frontend/impattern/semi_patterns/69.png
new file mode 100644
index 0000000..35b5d56
--- /dev/null
+++ b/frontend/impattern/semi_patterns/69.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/7.png b/frontend/impattern/semi_patterns/7.png
new file mode 100644
index 0000000..3e01636
--- /dev/null
+++ b/frontend/impattern/semi_patterns/7.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/70.png b/frontend/impattern/semi_patterns/70.png
new file mode 100644
index 0000000..a6771e5
--- /dev/null
+++ b/frontend/impattern/semi_patterns/70.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/71.png b/frontend/impattern/semi_patterns/71.png
new file mode 100644
index 0000000..649c43f
--- /dev/null
+++ b/frontend/impattern/semi_patterns/71.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/72.png b/frontend/impattern/semi_patterns/72.png
new file mode 100644
index 0000000..d51cde8
--- /dev/null
+++ b/frontend/impattern/semi_patterns/72.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/73.png b/frontend/impattern/semi_patterns/73.png
new file mode 100644
index 0000000..79d7585
--- /dev/null
+++ b/frontend/impattern/semi_patterns/73.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/74.png b/frontend/impattern/semi_patterns/74.png
new file mode 100644
index 0000000..9e91e73
--- /dev/null
+++ b/frontend/impattern/semi_patterns/74.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/75.png b/frontend/impattern/semi_patterns/75.png
new file mode 100644
index 0000000..8702a1e
--- /dev/null
+++ b/frontend/impattern/semi_patterns/75.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/76.png b/frontend/impattern/semi_patterns/76.png
new file mode 100644
index 0000000..618f42a
--- /dev/null
+++ b/frontend/impattern/semi_patterns/76.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/77.png b/frontend/impattern/semi_patterns/77.png
new file mode 100644
index 0000000..a2b5966
--- /dev/null
+++ b/frontend/impattern/semi_patterns/77.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/78.png b/frontend/impattern/semi_patterns/78.png
new file mode 100644
index 0000000..82867f8
--- /dev/null
+++ b/frontend/impattern/semi_patterns/78.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/79.png b/frontend/impattern/semi_patterns/79.png
new file mode 100644
index 0000000..3bbd78d
--- /dev/null
+++ b/frontend/impattern/semi_patterns/79.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/8.png b/frontend/impattern/semi_patterns/8.png
new file mode 100644
index 0000000..73f4d43
--- /dev/null
+++ b/frontend/impattern/semi_patterns/8.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/80.png b/frontend/impattern/semi_patterns/80.png
new file mode 100644
index 0000000..810fba6
--- /dev/null
+++ b/frontend/impattern/semi_patterns/80.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/81.png b/frontend/impattern/semi_patterns/81.png
new file mode 100644
index 0000000..92fa744
--- /dev/null
+++ b/frontend/impattern/semi_patterns/81.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/82.png b/frontend/impattern/semi_patterns/82.png
new file mode 100644
index 0000000..bc30bcf
--- /dev/null
+++ b/frontend/impattern/semi_patterns/82.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/83.png b/frontend/impattern/semi_patterns/83.png
new file mode 100644
index 0000000..caddb63
--- /dev/null
+++ b/frontend/impattern/semi_patterns/83.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/84.png b/frontend/impattern/semi_patterns/84.png
new file mode 100644
index 0000000..4176f9a
--- /dev/null
+++ b/frontend/impattern/semi_patterns/84.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/85.png b/frontend/impattern/semi_patterns/85.png
new file mode 100644
index 0000000..8215f71
--- /dev/null
+++ b/frontend/impattern/semi_patterns/85.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/86.png b/frontend/impattern/semi_patterns/86.png
new file mode 100644
index 0000000..c85e4f7
--- /dev/null
+++ b/frontend/impattern/semi_patterns/86.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/87.png b/frontend/impattern/semi_patterns/87.png
new file mode 100644
index 0000000..2933559
--- /dev/null
+++ b/frontend/impattern/semi_patterns/87.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/88.png b/frontend/impattern/semi_patterns/88.png
new file mode 100644
index 0000000..7793e19
--- /dev/null
+++ b/frontend/impattern/semi_patterns/88.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/89.png b/frontend/impattern/semi_patterns/89.png
new file mode 100644
index 0000000..1523885
--- /dev/null
+++ b/frontend/impattern/semi_patterns/89.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/9.png b/frontend/impattern/semi_patterns/9.png
new file mode 100644
index 0000000..6741ffd
--- /dev/null
+++ b/frontend/impattern/semi_patterns/9.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/90.png b/frontend/impattern/semi_patterns/90.png
new file mode 100644
index 0000000..e001830
--- /dev/null
+++ b/frontend/impattern/semi_patterns/90.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/91.png b/frontend/impattern/semi_patterns/91.png
new file mode 100644
index 0000000..e6e87f0
--- /dev/null
+++ b/frontend/impattern/semi_patterns/91.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/92.png b/frontend/impattern/semi_patterns/92.png
new file mode 100644
index 0000000..30f150d
--- /dev/null
+++ b/frontend/impattern/semi_patterns/92.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/93.png b/frontend/impattern/semi_patterns/93.png
new file mode 100644
index 0000000..fb1c648
--- /dev/null
+++ b/frontend/impattern/semi_patterns/93.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/94.png b/frontend/impattern/semi_patterns/94.png
new file mode 100644
index 0000000..171a461
--- /dev/null
+++ b/frontend/impattern/semi_patterns/94.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/95.png b/frontend/impattern/semi_patterns/95.png
new file mode 100644
index 0000000..27f0f06
--- /dev/null
+++ b/frontend/impattern/semi_patterns/95.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/96.png b/frontend/impattern/semi_patterns/96.png
new file mode 100644
index 0000000..11114ec
--- /dev/null
+++ b/frontend/impattern/semi_patterns/96.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a0.png b/frontend/impattern/semi_patterns/a0.png
new file mode 100644
index 0000000..5fb0b18
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a0.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a1.png b/frontend/impattern/semi_patterns/a1.png
new file mode 100644
index 0000000..cab1780
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a1.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a10.png b/frontend/impattern/semi_patterns/a10.png
new file mode 100644
index 0000000..193ff24
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a10.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a11.png b/frontend/impattern/semi_patterns/a11.png
new file mode 100644
index 0000000..a211a04
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a11.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a12.png b/frontend/impattern/semi_patterns/a12.png
new file mode 100644
index 0000000..0c493b9
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a12.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a13.png b/frontend/impattern/semi_patterns/a13.png
new file mode 100644
index 0000000..bfa653c
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a13.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a14.png b/frontend/impattern/semi_patterns/a14.png
new file mode 100644
index 0000000..10d7b13
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a14.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a15.png b/frontend/impattern/semi_patterns/a15.png
new file mode 100644
index 0000000..2381078
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a15.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a16.png b/frontend/impattern/semi_patterns/a16.png
new file mode 100644
index 0000000..9636ee5
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a16.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a17.png b/frontend/impattern/semi_patterns/a17.png
new file mode 100644
index 0000000..9bc91db
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a17.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a18.png b/frontend/impattern/semi_patterns/a18.png
new file mode 100644
index 0000000..a2e2928
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a18.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a19.png b/frontend/impattern/semi_patterns/a19.png
new file mode 100644
index 0000000..7d45270
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a19.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a2.png b/frontend/impattern/semi_patterns/a2.png
new file mode 100644
index 0000000..7d9c7d9
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a2.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a20.png b/frontend/impattern/semi_patterns/a20.png
new file mode 100644
index 0000000..f670cf5
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a20.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a21.png b/frontend/impattern/semi_patterns/a21.png
new file mode 100644
index 0000000..14aac9b
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a21.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a22.png b/frontend/impattern/semi_patterns/a22.png
new file mode 100644
index 0000000..e9f8a43
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a22.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a23.png b/frontend/impattern/semi_patterns/a23.png
new file mode 100644
index 0000000..bbdaa29
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a23.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a24.png b/frontend/impattern/semi_patterns/a24.png
new file mode 100644
index 0000000..0746ced
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a24.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a25.png b/frontend/impattern/semi_patterns/a25.png
new file mode 100644
index 0000000..2f23bdd
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a25.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a26.png b/frontend/impattern/semi_patterns/a26.png
new file mode 100644
index 0000000..0e21976
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a26.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a27.png b/frontend/impattern/semi_patterns/a27.png
new file mode 100644
index 0000000..0c11122
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a27.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a28.png b/frontend/impattern/semi_patterns/a28.png
new file mode 100644
index 0000000..4469d65
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a28.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a29.png b/frontend/impattern/semi_patterns/a29.png
new file mode 100644
index 0000000..e956157
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a29.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a3.png b/frontend/impattern/semi_patterns/a3.png
new file mode 100644
index 0000000..41cd44f
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a3.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a30.png b/frontend/impattern/semi_patterns/a30.png
new file mode 100644
index 0000000..9058a6d
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a30.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a31.png b/frontend/impattern/semi_patterns/a31.png
new file mode 100644
index 0000000..6692715
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a31.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a32.png b/frontend/impattern/semi_patterns/a32.png
new file mode 100644
index 0000000..daf16c1
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a32.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a33.png b/frontend/impattern/semi_patterns/a33.png
new file mode 100644
index 0000000..b3cee15
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a33.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a34.png b/frontend/impattern/semi_patterns/a34.png
new file mode 100644
index 0000000..0557dae
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a34.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a35.png b/frontend/impattern/semi_patterns/a35.png
new file mode 100644
index 0000000..66d88c9
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a35.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a36.png b/frontend/impattern/semi_patterns/a36.png
new file mode 100644
index 0000000..7abb51b
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a36.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a37.png b/frontend/impattern/semi_patterns/a37.png
new file mode 100644
index 0000000..f30a1ce
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a37.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a38.png b/frontend/impattern/semi_patterns/a38.png
new file mode 100644
index 0000000..3e03424
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a38.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a39.png b/frontend/impattern/semi_patterns/a39.png
new file mode 100644
index 0000000..a802ae0
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a39.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a4.png b/frontend/impattern/semi_patterns/a4.png
new file mode 100644
index 0000000..943ecac
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a4.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a40.png b/frontend/impattern/semi_patterns/a40.png
new file mode 100644
index 0000000..7e3f149
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a40.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a41.png b/frontend/impattern/semi_patterns/a41.png
new file mode 100644
index 0000000..95a7558
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a41.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a5.png b/frontend/impattern/semi_patterns/a5.png
new file mode 100644
index 0000000..c0d0801
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a5.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a6.png b/frontend/impattern/semi_patterns/a6.png
new file mode 100644
index 0000000..414ebb4
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a6.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a7.png b/frontend/impattern/semi_patterns/a7.png
new file mode 100644
index 0000000..e93e21f
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a7.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a8.png b/frontend/impattern/semi_patterns/a8.png
new file mode 100644
index 0000000..8fa69bb
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a8.png
Binary files differ
diff --git a/frontend/impattern/semi_patterns/a9.png b/frontend/impattern/semi_patterns/a9.png
new file mode 100644
index 0000000..98c81ad
--- /dev/null
+++ b/frontend/impattern/semi_patterns/a9.png
Binary files differ
diff --git a/frontend/impattern/sketch.html b/frontend/impattern/sketch.html
new file mode 100644
index 0000000..c519820
--- /dev/null
+++ b/frontend/impattern/sketch.html
@@ -0,0 +1,231 @@
+<html>
+<head>
+<link href='css/normalize.css' rel='stylesheet' type='text/css'>
+<style type="text/css">
+#canvas_wrapper{
+// position:absolute;
+ display: inline-block;
+white-space: pre-wrap;
+word-wrap: break-word;
+-webkit-user-select: none;
+-moz-user-select: none;
+user-select: none;
+// pointer-events: none;
+}
+.canvas_cell{
+ border: 1px solid black;
+ display: inline-block;
+ width: 1em;
+ height: 1em;
+}
+.canvas_row{
+// position: absolute;
+}
+
+.brush_tools{
+ padding:5px;
+ display: inline-block;
+ background: whitesmoke;
+ border: 1px solid gray;
+ cursor: pointer;
+}
+#brush{
+ background:gray;
+ color: white;
+ border: 1px solid black;
+}
+</style>
+
+</head>
+<body>
+
+<div id="canvas_wrapper">
+</div>
+<table>
+<tr>
+ <td>
+ <input size="2" type="text" id="rows" value="10">ROWS</input>
+ </td>
+</tr>
+<tr>
+ <td>
+ <input size="2" type="text" id="cols" value="10">COLS</input>
+ </td>
+</tr>
+</table>
+
+<div id="tools">
+ <div id="brush" class="brush_tools">Brush</div>
+ <div id="eraser" class="brush_tools">Eraser</div>
+</div>
+<input type="checkbox" id="show_grid" checked>Show grid?</input>
+<button id="drawing_finished">DONE</button>
+</body>
+<script src="js/jquery.min.js" type="text/javascript"></script>
+<script type="text/javascript">
+//dragging event
+var isDragging = false;
+$("body").mousedown(function() {
+ $(window).mousemove(function() {
+ isDragging = true;
+ $(window).unbind("mousemove");
+ });
+}).mouseup(function() {
+ var wasDragging = isDragging;
+ isDragging = false;
+ $(window).unbind("mousemove");
+ if (!wasDragging) { //was clicking
+ }
+});
+
+var c;
+
+window.active_tool = "brush";
+var brush_tools;
+
+
+
+function BrushTools(){
+ var brushtools = this;
+ this.brush = $("#brush");
+ this.eraser = $("#eraser");
+ this.brush_tools = $(".brush_tools");
+ this.active_css = {
+ "border" : "1px solid black",
+ "background" : "gray",
+ "color" : "white",
+ },
+ this.inactive_css = {
+ "border" : "1px solid gray",
+ "background" : "whitesmoke",
+ "color" : "black",
+ };
+ this.activate = function(elem){
+ $(elem).css(this.active_css);
+ window.active_tool = $(elem).attr("id");
+ };
+ this.deactivate = function(elem){
+ $(elem).css(this.inactive_css);
+ };
+// this.cursors = {
+// "brush" : "img/brush.png",
+// "eraser" : "img/eraser.png",
+// };
+ this.brush_tools.click(function(){
+ var that = this;
+ window.active_tool = $(this).attr("id");
+ brushtools.activate(that);
+ brushtools.brush_tools.each(function(){
+ if(this != that){
+ brushtools.deactivate(this);
+ }
+ });
+// $("#canvas_wrapper").css(
+// "cursor" , "url("+brushtools.cursors[window.active_tool]+")"
+// )
+ });
+}
+
+
+
+
+function GridCanvas(){
+ var gridcanvas = this;
+ this.rows = 10;
+ this.cols = 10;
+ this.current_rows = [];
+ this.container = $("#canvas_wrapper");
+ this.paint = function(elem){
+ $(elem).attr("painted", "1");
+ $(elem).css("background", "black");
+ };
+ this.erase = function(elem){
+ $(elem).attr("painted", "0");
+ $(elem).css("background", "white");
+ };
+ this.initialize = function(cols, rows){
+ this.container.html("");
+ this.rows = rows;
+ this.cols = cols;
+ for (var i = 0; i< this.rows; i++){
+ var row = document.createElement("div");
+ $(row).attr("id", "row_"+i)
+ $(row).addClass("canvas_row")
+ for (var j = 0; j< this.cols; j++){
+ var cell = document.createElement("span");
+ $(cell).addClass("canvas_cell")
+ $(cell).attr("painted", "0")
+ $(cell).addClass("column_"+j)
+ $(cell).html("&nbsp;")
+ $(cell).click(function(){
+ if (window.active_tool == 'brush'){
+ gridcanvas.paint(this);
+ }else if(window.active_tool == 'eraser'){
+ gridcanvas.erase(this);
+ }
+ });
+ $(cell).mouseover(function(){
+ if (isDragging){
+ if (window.active_tool == 'brush'){
+ gridcanvas.paint(this);
+ }else if(window.active_tool == 'eraser'){
+ gridcanvas.erase(this);
+ }
+ }
+ });
+ $(row).append(cell)
+ }
+ this.container.append(row)
+ }
+ }
+ this.toggleGrid = function(){
+ if ($("#show_grid").prop("checked")){
+ $(".canvas_cell").css("border","1px solid black");
+ }else{
+ $(".canvas_cell").css("border","none");
+ }
+ }
+ this.serialize = function(){
+ var matrix = [];
+ for (var i = 0; i < this.rows; i++){
+ var row_storage = [];
+ $("#row_"+i+"> span").each(function(){
+ row_storage.push($(this).attr("painted"));
+ });
+ matrix.push(row_storage);
+ }
+ return JSON.stringify({
+ "matrix" : matrix,
+ "width" : this.cols,
+ "height" : this.rows,
+ })
+ }
+}
+$("#cols").change(function(){
+ var cols = $(this).val()
+ c.initialize(cols, c.rows);
+});
+$("#rows").change(function(){
+ var rows = $(this).val()
+ c.initialize(c.cols, rows);
+});
+
+
+
+$(document).ready(function(){
+
+ c = new GridCanvas();
+ brush_tools = new BrushTools();
+ c.initialize($("#cols").val(), $("#rows").val());
+ $("#show_grid").change(function(){
+ c.toggleGrid();
+ });
+ $("#drawing_finished").click(function(){
+
+ console.log(c.serialize());
+ });
+
+});
+
+</script>
+</html>
diff --git a/frontend/impattern/test.gif b/frontend/impattern/test.gif
new file mode 100644
index 0000000..a9723d6
--- /dev/null
+++ b/frontend/impattern/test.gif
Binary files differ
diff --git a/frontend/js/ZeroClipboard.js b/frontend/js/ZeroClipboard.js
new file mode 100644
index 0000000..648a5b6
--- /dev/null
+++ b/frontend/js/ZeroClipboard.js
@@ -0,0 +1,311 @@
+// Simple Set Clipboard System
+// Author: Joseph Huckaby
+
+var ZeroClipboard = {
+
+ version: "1.0.7",
+ clients: {}, // registered upload clients on page, indexed by id
+ moviePath: '/swf/ZeroClipboard.swf', // URL to movie
+ nextId: 1, // ID of next movie
+
+ $: function(thingy) {
+ // simple DOM lookup utility function
+ if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);
+ if (!thingy.addClass) {
+ // extend element with a few useful methods
+ thingy.hide = function() { this.style.display = 'none'; };
+ thingy.show = function() { this.style.display = ''; };
+ thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
+ thingy.removeClass = function(name) {
+ var classes = this.className.split(/\s+/);
+ var idx = -1;
+ for (var k = 0; k < classes.length; k++) {
+ if (classes[k] == name) { idx = k; k = classes.length; }
+ }
+ if (idx > -1) {
+ classes.splice( idx, 1 );
+ this.className = classes.join(' ');
+ }
+ return this;
+ };
+ thingy.hasClass = function(name) {
+ return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
+ };
+ }
+ return thingy;
+ },
+
+ setMoviePath: function(path) {
+ // set path to ZeroClipboard.swf
+ this.moviePath = path;
+ },
+
+ dispatch: function(id, eventName, args) {
+ // receive event from flash movie, send to client
+ var client = this.clients[id];
+ if (client) {
+ client.receiveEvent(eventName, args);
+ }
+ },
+
+ register: function(id, client) {
+ // register new client to receive events
+ this.clients[id] = client;
+ },
+
+ getDOMObjectPosition: function(obj, stopObj) {
+ // get absolute coordinates for dom element
+ var info = {
+ left: 0,
+ top: 0,
+ width: obj.width ? obj.width : obj.offsetWidth,
+ height: obj.height ? obj.height : obj.offsetHeight
+ };
+
+ while (obj && (obj != stopObj)) {
+ info.left += obj.offsetLeft;
+ info.top += obj.offsetTop;
+ obj = obj.offsetParent;
+ }
+
+ return info;
+ },
+
+ Client: function(elem) {
+ // constructor for new simple upload client
+ this.handlers = {};
+
+ // unique ID
+ this.id = ZeroClipboard.nextId++;
+ this.movieId = 'ZeroClipboardMovie_' + this.id;
+
+ // register client with singleton to receive flash events
+ ZeroClipboard.register(this.id, this);
+
+ // create movie
+ if (elem) this.glue(elem);
+ }
+};
+
+ZeroClipboard.Client.prototype = {
+
+ id: 0, // unique ID for us
+ ready: false, // whether movie is ready to receive events or not
+ movie: null, // reference to movie object
+ clipText: '', // text to copy to clipboard
+ handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
+ cssEffects: true, // enable CSS mouse effects on dom container
+ handlers: null, // user event handlers
+
+ glue: function(elem, appendElem, stylesToAdd) {
+ // glue to DOM element
+ // elem can be ID or actual DOM element object
+ this.domElement = ZeroClipboard.$(elem);
+
+ // float just above object, or zIndex 99 if dom element isn't set
+ var zIndex = 99;
+ if (this.domElement.style.zIndex) {
+ zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
+ }
+
+ if (typeof(appendElem) == 'string') {
+ appendElem = ZeroClipboard.$(appendElem);
+ }
+ else if (typeof(appendElem) == 'undefined') {
+ appendElem = document.getElementsByTagName('body')[0];
+ }
+
+ // find X/Y position of domElement
+ var box = ZeroClipboard.getDOMObjectPosition(this.domElement, appendElem);
+
+ // create floating DIV above element
+ this.div = document.createElement('div');
+ var style = this.div.style;
+ style.position = 'absolute';
+ style.left = '' + box.left + 'px';
+ style.top = '' + box.top + 'px';
+ style.width = '' + box.width + 'px';
+ style.height = '' + box.height + 'px';
+ style.zIndex = zIndex;
+
+ if (typeof(stylesToAdd) == 'object') {
+ for (addedStyle in stylesToAdd) {
+ style[addedStyle] = stylesToAdd[addedStyle];
+ }
+ }
+
+ // style.backgroundColor = '#f00'; // debug
+
+ appendElem.appendChild(this.div);
+
+ this.div.innerHTML = this.getHTML( box.width, box.height );
+ },
+
+ getHTML: function(width, height) {
+ // return HTML for movie
+ var html = '';
+ var flashvars = 'id=' + this.id +
+ '&width=' + width +
+ '&height=' + height;
+
+ if (navigator.userAgent.match(/MSIE/)) {
+ // IE gets an OBJECT tag
+ var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
+ html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';
+ }
+ else {
+ // all other browsers get an EMBED tag
+ html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';
+ }
+ return html;
+ },
+
+ hide: function() {
+ // temporarily hide floater offscreen
+ if (this.div) {
+ this.div.style.left = '-2000px';
+ }
+ },
+
+ show: function() {
+ // show ourselves after a call to hide()
+ this.reposition();
+ },
+
+ destroy: function() {
+ // destroy control and floater
+ if (this.domElement && this.div) {
+ this.hide();
+ this.div.innerHTML = '';
+
+ var body = document.getElementsByTagName('body')[0];
+ try { body.removeChild( this.div ); } catch(e) {;}
+
+ this.domElement = null;
+ this.div = null;
+ }
+ },
+
+ reposition: function(elem) {
+ // reposition our floating div, optionally to new container
+ // warning: container CANNOT change size, only position
+ if (elem) {
+ this.domElement = ZeroClipboard.$(elem);
+ if (!this.domElement) this.hide();
+ }
+
+ if (this.domElement && this.div) {
+ var box = ZeroClipboard.getDOMObjectPosition(this.domElement);
+ var style = this.div.style;
+ style.left = '' + box.left + 'px';
+ style.top = '' + box.top + 'px';
+ }
+ },
+
+ setText: function(newText) {
+ // set text to be copied to clipboard
+ this.clipText = newText;
+ if (this.ready) this.movie.setText(newText);
+ },
+
+ addEventListener: function(eventName, func) {
+ // add user event listener for event
+ // event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
+ eventName = eventName.toString().toLowerCase().replace(/^on/, '');
+ if (!this.handlers[eventName]) this.handlers[eventName] = [];
+ this.handlers[eventName].push(func);
+ },
+
+ setHandCursor: function(enabled) {
+ // enable hand cursor (true), or default arrow cursor (false)
+ this.handCursorEnabled = enabled;
+ if (this.ready) this.movie.setHandCursor(enabled);
+ },
+
+ setCSSEffects: function(enabled) {
+ // enable or disable CSS effects on DOM container
+ this.cssEffects = !!enabled;
+ },
+
+ receiveEvent: function(eventName, args) {
+ // receive event from flash
+ eventName = eventName.toString().toLowerCase().replace(/^on/, '');
+
+ // special behavior for certain events
+ switch (eventName) {
+ case 'load':
+ // movie claims it is ready, but in IE this isn't always the case...
+ // bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
+ this.movie = document.getElementById(this.movieId);
+ if (!this.movie) {
+ var self = this;
+ setTimeout( function() { self.receiveEvent('load', null); }, 1 );
+ return;
+ }
+
+ // firefox on pc needs a "kick" in order to set these in certain cases
+ if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
+ var self = this;
+ setTimeout( function() { self.receiveEvent('load', null); }, 100 );
+ this.ready = true;
+ return;
+ }
+
+ this.ready = true;
+ this.movie.setText( this.clipText );
+ this.movie.setHandCursor( this.handCursorEnabled );
+ break;
+
+ case 'mouseover':
+ if (this.domElement && this.cssEffects) {
+ this.domElement.addClass('hover');
+ if (this.recoverActive) this.domElement.addClass('active');
+ }
+ break;
+
+ case 'mouseout':
+ if (this.domElement && this.cssEffects) {
+ this.recoverActive = false;
+ if (this.domElement.hasClass('active')) {
+ this.domElement.removeClass('active');
+ this.recoverActive = true;
+ }
+ this.domElement.removeClass('hover');
+ }
+ break;
+
+ case 'mousedown':
+ if (this.domElement && this.cssEffects) {
+ this.domElement.addClass('active');
+ }
+ break;
+
+ case 'mouseup':
+ if (this.domElement && this.cssEffects) {
+ this.domElement.removeClass('active');
+ this.recoverActive = false;
+ }
+ break;
+ } // switch eventName
+
+ if (this.handlers[eventName]) {
+ for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
+ var func = this.handlers[eventName][idx];
+
+ if (typeof(func) == 'function') {
+ // actual function reference
+ func(this, args);
+ }
+ else if ((typeof(func) == 'object') && (func.length == 2)) {
+ // PHP style object + method, i.e. [myObject, 'myMethod']
+ func[0][ func[1] ](this, args);
+ }
+ else if (typeof(func) == 'string') {
+ // name of function
+ window[func](this, args);
+ }
+ } // foreach event handler defined
+ } // user defined handler for event
+ }
+
+};
diff --git a/frontend/js/colordictbackup.js b/frontend/js/colordictbackup.js
new file mode 120000
index 0000000..6e9d202
--- /dev/null
+++ b/frontend/js/colordictbackup.js
@@ -0,0 +1 @@
+../imgrid/js/colordictbackup.js \ No newline at end of file
diff --git a/frontend/js/colors_iframe.js b/frontend/js/colors_iframe.js
new file mode 120000
index 0000000..7b48e9f
--- /dev/null
+++ b/frontend/js/colors_iframe.js
@@ -0,0 +1 @@
+../imgrid/js/colors_iframe.js \ No newline at end of file
diff --git a/frontend/js/display_result.js b/frontend/js/display_result.js
new file mode 120000
index 0000000..3108446
--- /dev/null
+++ b/frontend/js/display_result.js
@@ -0,0 +1 @@
+../impattern/js/display_result.js \ No newline at end of file
diff --git a/frontend/js/gallery_isotope_config.js b/frontend/js/gallery_isotope_config.js
new file mode 100644
index 0000000..b2be5d4
--- /dev/null
+++ b/frontend/js/gallery_isotope_config.js
@@ -0,0 +1,189 @@
+
+$.Isotope.prototype._getCenteredMasonryColumns = function() {
+ this.width = this.element.width();
+
+ var parentWidth = this.element.parent().width();
+
+ // i.e. options.masonry && options.masonry.columnWidth
+ var colW = this.options.masonry && this.options.masonry.columnWidth ||
+ // or use the size of the first item
+ this.$filteredAtoms.outerWidth(true) ||
+ // if there's no items, use size of container
+ parentWidth;
+
+ var cols = Math.floor( parentWidth / colW );
+ cols = Math.max( cols, 1 );
+
+ // i.e. this.masonry.cols = ....
+ this.masonry.cols = cols;
+ // i.e. this.masonry.columnWidth = ...
+ this.masonry.columnWidth = colW;
+ };
+
+ $.Isotope.prototype._masonryReset = function() {
+ // layout-specific props
+ this.masonry = {};
+ // FIXME shouldn't have to call this again
+ this._getCenteredMasonryColumns();
+ var i = this.masonry.cols;
+ this.masonry.colYs = [];
+ while (i--) {
+ this.masonry.colYs.push( 0 );
+ }
+ };
+
+ $.Isotope.prototype._masonryResizeChanged = function() {
+ var prevColCount = this.masonry.cols;
+ // get updated colCount
+ this._getCenteredMasonryColumns();
+ return ( this.masonry.cols !== prevColCount );
+ };
+
+ $.Isotope.prototype._masonryGetContainerSize = function() {
+ var unusedCols = 0,
+ i = this.masonry.cols;
+ // count unused columns
+ while ( --i ) {
+ if ( this.masonry.colYs[i] !== 0 ) {
+ break;
+ }
+ unusedCols++;
+ }
+
+ return {
+ height : Math.max.apply( Math, this.masonry.colYs ),
+ // fit container to columns that have been used;
+ width : (this.masonry.cols - unusedCols) * this.masonry.columnWidth
+ };
+ };
+
+
+//and once the jquery has loaded...
+$(function(){
+
+ var $container = $('#images');
+
+
+ // add randomish size classes
+ $container.find('.pb').each(function(){
+ var $this = $(this);
+
+ number = parseInt( $this.height(), 10 );
+ if ( number % 7 % 2 === 1 ) {
+ $this.addClass('width2');
+ }
+ if ( number % 3 === 0 ) {
+ $this.addClass('height2');
+ }
+ });
+
+ $container.isotope({
+ itemSelector : '.pb',
+ sortAscending : false,
+ masonry : {
+ columnWidth : 120
+ },
+ getSortData : {
+ date : function( $elem ) {
+ src = $elem.attr('src');
+ var re = /_[0-9]{10}/g;
+ var matches = src.match(re)
+
+ // what.. getting null here -jl 20132712
+ if (! matches) return 0;
+ for (var i=0;i<matches.length;i++){
+ matches[i] = matches[i].replace(/_/g,"");
+ }
+ //mite be wrong FIXME?
+ matches.sort(function(a,b){return b-a});
+ return matches[0];
+
+ },
+ username : function( $elem ) {
+ return $elem.attr('username');
+ },
+ height : function( $elem ) {
+ return $elem.height();
+ },
+ width : function( $elem ) {
+ return $elem.width();
+ },
+ gif : function ( $elem ) {
+ src = $elem.attr('src');
+ var re = /\.gif$/;
+ if (re.test(src)){
+ return 1;
+ }else{
+ return 0;
+ }
+
+ }
+ }
+ });
+ var sorter = {
+ date: function(){$container.isotope({sortBy: "date"})},
+ username: function(){$container.isotope({sortBy: "username"})},
+ height: function(){$container.isotope({sortBy: "height"})},
+ width: function(){$container.isotope({sortBy: "width"})},
+ gif:function(){$container.isotope({sortBy: "gif"})},
+ shuffle: function(){$container.isotope("shuffle")},
+ lombada: function(){
+ var min = 4; var max = 14;
+ var limit = Math.floor(Math.random() * (max - min + 1)) + min;
+
+ var count = 0;
+ var t = setInterval(function(){
+ $container.isotope("shuffle")
+ if (count == limit){
+ clearInterval(t);
+ }
+ count += 1;
+ }, 100)
+
+ }
+ }
+
+
+ $(".sorting-options").each(function(){
+ var $this = $(this);
+ $this.click(function(){
+ var func = $this.attr("id")
+ sorter[func]();
+ })
+ });
+
+// $container.isotope( 'insert', $newEls );
+// $container.append( $newEls ).isotope( 'appended', $newEls );
+ // change size of clicked element
+ $container.delegate( '.bg', 'click', function(){
+ //FIXME add css here
+ $(this).toggleClass('large');
+ $container.isotope('reLayout');
+ });
+
+ // toggle variable sizes of all elements
+ $('#toggle-sizes').find('a').click(function(){
+ $container
+ //FIXME add css here
+ .toggleClass('variable-sizes')
+ .isotope('reLayout');
+ return false;
+ });
+ $(document).ready(function(){ sorter.date(); $container.isotope('reLayout');});
+ $("img").load(function(){
+ $(this).css("display", "inline-block");
+ $container.isotope('reLayout');
+ })
+ window.onload = function(){
+ $(".isotope, .isotope .isotope-item").css({
+ "-webkit-transition-duration": "0.8s",
+ "-moz-transition-duration": "0.8s",
+ "-ms-transition-duration": "0.8s",
+ "-o-transition-duration": "0.8s",
+ "transition-duration": "0.8s"
+
+ });
+ };
+
+ });
+
diff --git a/frontend/js/imbreak-main.js b/frontend/js/imbreak-main.js
new file mode 120000
index 0000000..24bd38f
--- /dev/null
+++ b/frontend/js/imbreak-main.js
@@ -0,0 +1 @@
+../imbreak/js/imbreak-main.js \ No newline at end of file
diff --git a/frontend/js/imgrid-main.js b/frontend/js/imgrid-main.js
new file mode 120000
index 0000000..d555578
--- /dev/null
+++ b/frontend/js/imgrid-main.js
@@ -0,0 +1 @@
+../imgrid/js/imgrid-main.js \ No newline at end of file
diff --git a/frontend/js/index.html b/frontend/js/index.html
new file mode 100644
index 0000000..0dc101b
--- /dev/null
+++ b/frontend/js/index.html
@@ -0,0 +1 @@
+<html><body></body></html>
diff --git a/frontend/js/inputs.js b/frontend/js/inputs.js
new file mode 120000
index 0000000..7dd0da5
--- /dev/null
+++ b/frontend/js/inputs.js
@@ -0,0 +1 @@
+../impattern/js/inputs.js \ No newline at end of file
diff --git a/frontend/js/jcookie.js b/frontend/js/jcookie.js
new file mode 120000
index 0000000..9ea53e1
--- /dev/null
+++ b/frontend/js/jcookie.js
@@ -0,0 +1 @@
+../imbreak/js/jcookie.js \ No newline at end of file
diff --git a/frontend/js/jquery-1.4.4.min.js b/frontend/js/jquery-1.4.4.min.js
new file mode 100644
index 0000000..8f3ca2e
--- /dev/null
+++ b/frontend/js/jquery-1.4.4.min.js
@@ -0,0 +1,167 @@
+/*!
+ * jQuery JavaScript Library v1.4.4
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Nov 11 19:04:53 2010 -0500
+ */
+(function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h=
+h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;k<J.length;k++){h=J[k];h.origType.replace(X,"")===a.type?f.push(h.selector):J.splice(k--,1)}f=c(a.target).closest(f,a.currentTarget);o=0;for(x=f.length;o<x;o++){r=f[o];for(k=0;k<J.length;k++){h=J[k];if(r.selector===h.selector&&(!A||A.test(h.namespace))){l=r.elem;e=null;if(h.preType==="mouseenter"||
+h.preType==="mouseleave"){a.type=h.preType;e=c(a.relatedTarget).closest(h.selector)[0]}if(!e||e!==l)C.push({elem:l,handleObj:h,level:r.level})}}}o=0;for(x=C.length;o<x;o++){f=C[o];if(d&&f.level>d)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La,
+"`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this,
+e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a,
+"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+
+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j,
+s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this,
+j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length},
+toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject=this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j===
+-1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false;
+if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K<Q;K++)if((j=arguments[K])!=null)for(s in j){v=G[s];z=j[s];if(G!==z)if(ga&&z&&(b.isPlainObject(z)||(H=b.isArray(z)))){if(H){H=false;v=v&&b.isArray(v)?v:[]}else v=v&&b.isPlainObject(v)?v:{};G[s]=b.extend(ga,v,z)}else if(z!==B)G[s]=z}return G};b.extend({noConflict:function(j){E.$=e;if(j)E.jQuery=d;return b},isReady:false,readyWait:1,ready:function(j){j===true&&b.readyWait--;
+if(!b.readyWait||j!==true&&!b.isReady){if(!t.body)return setTimeout(b.ready,1);b.isReady=true;if(!(j!==true&&--b.readyWait>0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false);E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload",
+b.ready);var j=false;try{j=E.frameElement==null}catch(s){}t.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in j},isNaN:function(j){return j==null||!r.test(j)||isNaN(j)},type:function(j){return j==null?String(j):R[y.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&&
+!F.call(j,"constructor")&&!F.call(j.constructor.prototype,"isPrototypeOf"))return false;for(var s in j);return s===B||F.call(j,s)},isEmptyObject:function(j){for(var s in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!=="string"||!j)return null;j=b.trim(j);if(C.test(j.replace(J,"@").replace(w,"]").replace(I,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&&
+l.test(j)){var s=t.getElementsByTagName("head")[0]||t.documentElement,v=t.createElement("script");v.type="text/javascript";if(b.support.scriptEval)v.appendChild(t.createTextNode(j));else v.text=j;s.insertBefore(v,s.firstChild);s.removeChild(v)}},nodeName:function(j,s){return j.nodeName&&j.nodeName.toUpperCase()===s.toUpperCase()},each:function(j,s,v){var z,H=0,G=j.length,K=G===B||b.isFunction(j);if(v)if(K)for(z in j){if(s.apply(j[z],v)===false)break}else for(;H<G;){if(s.apply(j[H++],v)===false)break}else if(K)for(z in j){if(s.call(j[z],
+z,j[z])===false)break}else for(v=j[0];H<G&&s.call(v,H,v)!==false;v=j[++H]);return j},trim:O?function(j){return j==null?"":O.call(j)}:function(j){return j==null?"":j.toString().replace(k,"").replace(o,"")},makeArray:function(j,s){var v=s||[];if(j!=null){var z=b.type(j);j.length==null||z==="string"||z==="function"||z==="regexp"||b.isWindow(j)?M.call(v,j):b.merge(v,j)}return v},inArray:function(j,s){if(s.indexOf)return s.indexOf(j);for(var v=0,z=s.length;v<z;v++)if(s[v]===j)return v;return-1},merge:function(j,
+s){var v=j.length,z=0;if(typeof s.length==="number")for(var H=s.length;z<H;z++)j[v++]=s[z];else for(;s[z]!==B;)j[v++]=s[z++];j.length=v;return j},grep:function(j,s,v){var z=[],H;v=!!v;for(var G=0,K=j.length;G<K;G++){H=!!s(j[G],G);v!==H&&z.push(j[G])}return z},map:function(j,s,v){for(var z=[],H,G=0,K=j.length;G<K;G++){H=s(j[G],G,v);if(H!=null)z[z.length]=H}return z.concat.apply([],z)},guid:1,proxy:function(j,s,v){if(arguments.length===2)if(typeof s==="string"){v=j;j=v[s];s=B}else if(s&&!b.isFunction(s)){v=
+s;s=B}if(!s&&j)s=function(){return j.apply(v||this,arguments)};if(j)s.guid=j.guid=j.guid||s.guid||b.guid++;return s},access:function(j,s,v,z,H,G){var K=j.length;if(typeof s==="object"){for(var Q in s)b.access(j,Q,s[Q],z,H,v);return j}if(v!==B){z=!G&&z&&b.isFunction(v);for(Q=0;Q<K;Q++)H(j[Q],s,z?v.call(j[Q],Q,H(j[Q],s)):v,G);return j}return K?H(j[0],s):B},now:function(){return(new Date).getTime()},uaMatch:function(j){j=j.toLowerCase();j=L.exec(j)||g.exec(j)||i.exec(j)||j.indexOf("compatible")<0&&n.exec(j)||
+[];return{browser:j[1]||"",version:j[2]||"0"}},browser:{}});b.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(j,s){R["[object "+s+"]"]=s.toLowerCase()});m=b.uaMatch(m);if(m.browser){b.browser[m.browser]=true;b.browser.version=m.version}if(b.browser.webkit)b.browser.safari=true;if(D)b.inArray=function(j,s){return D.call(s,j)};if(!/\s/.test("\u00a0")){k=/^[\s\xA0]+/;o=/[\s\xA0]+$/}f=b(t);if(t.addEventListener)u=function(){t.removeEventListener("DOMContentLoaded",u,
+false);b.ready()};else if(t.attachEvent)u=function(){if(t.readyState==="complete"){t.detachEvent("onreadystatechange",u);b.ready()}};return E.jQuery=E.$=b}();(function(){c.support={};var a=t.documentElement,b=t.createElement("script"),d=t.createElement("div"),e="script"+c.now();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],l=t.createElement("select"),
+k=l.appendChild(t.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:k.selected,deleteExpando:true,optDisabled:false,checkClone:false,
+scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};l.disabled=true;c.support.optDisabled=!k.disabled;b.type="text/javascript";try{b.appendChild(t.createTextNode("window."+e+"=1;"))}catch(o){}a.insertBefore(b,a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}try{delete b.test}catch(x){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function r(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",r)});d.cloneNode(true).fireEvent("onclick")}d=t.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=t.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var r=t.createElement("div");r.style.width=r.style.paddingLeft="1px";t.body.appendChild(r);c.boxModel=c.support.boxModel=r.offsetWidth===2;if("zoom"in r.style){r.style.display="inline";r.style.zoom=
+1;c.support.inlineBlockNeedsLayout=r.offsetWidth===2;r.style.display="";r.innerHTML="<div style='width:4px;'></div>";c.support.shrinkWrapBlocks=r.offsetWidth!==2}r.innerHTML="<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";var A=r.getElementsByTagName("td");c.support.reliableHiddenOffsets=A[0].offsetHeight===0;A[0].style.display="";A[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&A[0].offsetHeight===0;r.innerHTML="";t.body.removeChild(r).style.display=
+"none"});a=function(r){var A=t.createElement("div");r="on"+r;var C=r in A;if(!C){A.setAttribute(r,"return;");C=typeof A[r]==="function"}return C};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ra={},Ja=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?ra:a;var e=a.nodeType,f=e?a[c.expando]:null,h=
+c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?ra:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando);
+else if(d)delete f[e];else for(var l in a)delete a[l]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,l=e.length;h<l;h++){f=e[h].name;if(f.indexOf("data-")===0){f=f.substr(5);ka(this[0],f,d[f])}}}return d}else if(typeof a==="object")return this.each(function(){c.data(this,
+a)});var k=a.split(".");k[1]=k[1]?"."+k[1]:"";if(b===B){d=this.triggerHandler("getData"+k[1]+"!",[k[0]]);if(d===B&&this.length){d=c.data(this[0],a);d=ka(this[0],a,d)}return d===B&&k[1]?this.data(k[0]):d}else return this.each(function(){var o=c(this),x=[k[0],b];o.triggerHandler("setData"+k[1]+"!",x);c.data(this,a,b);o.triggerHandler("changeData"+k[1]+"!",x)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var e=
+c.data(a,b);if(!d)return e||[];if(!e||c.isArray(d))e=c.data(a,b,c.makeArray(d));else e.push(d);return e}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),e=d.shift();if(e==="inprogress")e=d.shift();if(e){b==="fx"&&d.unshift("inprogress");e.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===B)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,
+a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var sa=/[\n\t]/g,ha=/\s+/,Sa=/\r/g,Ta=/^(?:href|src|style)$/,Ua=/^(?:button|input)$/i,Va=/^(?:button|input|object|select|textarea)$/i,Wa=/^a(?:rea)?$/i,ta=/^(?:radio|checkbox)$/i;c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",
+colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};c.fn.extend({attr:function(a,b){return c.access(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(x){var r=c(this);r.addClass(a.call(this,x,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ha),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===
+1)if(f.className){for(var h=" "+f.className+" ",l=f.className,k=0,o=b.length;k<o;k++)if(h.indexOf(" "+b[k]+" ")<0)l+=" "+b[k];f.className=c.trim(l)}else f.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(o){var x=c(this);x.removeClass(a.call(this,o,x.attr("class")))});if(a&&typeof a==="string"||a===B)for(var b=(a||"").split(ha),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1&&f.className)if(a){for(var h=(" "+f.className+" ").replace(sa," "),
+l=0,k=b.length;l<k;l++)h=h.replace(" "+b[l]+" "," ");f.className=c.trim(h)}else f.className=""}return this},toggleClass:function(a,b){var d=typeof a,e=typeof b==="boolean";if(c.isFunction(a))return this.each(function(f){var h=c(this);h.toggleClass(a.call(this,f,h.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var f,h=0,l=c(this),k=b,o=a.split(ha);f=o[h++];){k=e?k:!l.hasClass(f);l[k?"addClass":"removeClass"](f)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,
+"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(sa," ").indexOf(a)>-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one";
+if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h<e;h++){var l=f[h];if(l.selected&&(c.support.optDisabled?!l.disabled:l.getAttribute("disabled")===null)&&(!l.parentNode.disabled||!c.nodeName(l.parentNode,"optgroup"))){a=c(l).val();if(b)return a;d.push(a)}}return d}if(ta.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Sa,"")}return B}var k=c.isFunction(a);return this.each(function(o){var x=c(this),r=a;if(this.nodeType===1){if(k)r=
+a.call(this,o,x.val());if(r==null)r="";else if(typeof r==="number")r+="";else if(c.isArray(r))r=c.map(r,function(C){return C==null?"":C+""});if(c.isArray(r)&&ta.test(this.type))this.checked=c.inArray(x.val(),r)>=0;else if(c.nodeName(this,"select")){var A=c.makeArray(r);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),A)>=0});if(!A.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},
+attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=Ta.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&Ua.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&
+b.specified?b.value:Va.test(a.nodeName)||Wa.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var X=/\.(.*)$/,ia=/^(?:textarea|input|select)$/i,La=/\./g,Ma=/ /g,Xa=/[^\w\s.|`]/g,Ya=function(a){return a.replace(Xa,"\\$&")},ua={focusin:0,focusout:0};
+c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var l=a.nodeType?"events":"__events__",k=h[l],o=h.handle;if(typeof k==="function"){o=k.handle;k=k.events}else if(!k){a.nodeType||(h[l]=h=function(){});h.events=k={}}if(!o)h.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,
+arguments):B};o.elem=a;b=b.split(" ");for(var x=0,r;l=b[x++];){h=f?c.extend({},f):{handler:d,data:e};if(l.indexOf(".")>-1){r=l.split(".");l=r.shift();h.namespace=r.slice(0).sort().join(".")}else{r=[];h.namespace=""}h.type=l;if(!h.guid)h.guid=d.guid;var A=k[l],C=c.event.special[l]||{};if(!A){A=k[l]=[];if(!C.setup||C.setup.call(a,e,r,o)===false)if(a.addEventListener)a.addEventListener(l,o,false);else a.attachEvent&&a.attachEvent("on"+l,o)}if(C.add){C.add.call(a,h);if(!h.handler.guid)h.handler.guid=
+d.guid}A.push(h);c.event.global[l]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,l=0,k,o,x,r,A,C,J=a.nodeType?"events":"__events__",w=c.data(a),I=w&&w[J];if(w&&I){if(typeof I==="function"){w=I;I=I.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in I)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[l++];){r=f;k=f.indexOf(".")<0;o=[];if(!k){o=f.split(".");f=o.shift();x=RegExp("(^|\\.)"+
+c.map(o.slice(0).sort(),Ya).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(A=I[f])if(d){r=c.event.special[f]||{};for(h=e||0;h<A.length;h++){C=A[h];if(d.guid===C.guid){if(k||x.test(C.namespace)){e==null&&A.splice(h--,1);r.remove&&r.remove.call(a,C)}if(e!=null)break}}if(A.length===0||e!=null&&A.length===1){if(!r.teardown||r.teardown.call(a,o)===false)c.removeEvent(a,f,w.handle);delete I[f]}}else for(h=0;h<A.length;h++){C=A[h];if(k||x.test(C.namespace)){c.event.remove(a,r,C.handler,h);A.splice(h--,1)}}}if(c.isEmptyObject(I)){if(b=
+w.handle)b.elem=null;delete w.events;delete w.handle;if(typeof w==="function")c.removeData(a,J);else c.isEmptyObject(w)&&c.removeData(a)}}}}},trigger:function(a,b,d,e){var f=a.type||a;if(!e){a=typeof a==="object"?a[c.expando]?a:c.extend(c.Event(f),a):c.Event(f);if(f.indexOf("!")>=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===
+8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var l;e=a.target;var k=f.replace(X,""),o=c.nodeName(e,"a")&&k===
+"click",x=c.event.special[k]||{};if((!x._default||x._default.call(d,a)===false)&&!o&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[k]){if(l=e["on"+k])e["on"+k]=null;c.event.triggered=true;e[k]()}}catch(r){}if(l)e["on"+k]=l;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+
+d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var l=d.length;f<l;f++){var k=d[f];if(b||e.test(k.namespace)){a.handler=k.handler;a.data=k.data;a.handleObj=k;k=k.handler.apply(this,h);if(k!==B){a.result=k;if(k===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[c.expando])return a;var b=a;a=c.Event(b);for(var d=this.props.length,e;d;){e=this.props[--d];a[e]=b[e]}if(!a.target)a.target=a.srcElement||t;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=t.documentElement;d=t.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(a.which==null&&(a.charCode!=null||a.keyCode!=null))a.which=a.charCode!=null?a.charCode:a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==B)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,Y(a.origType,a.selector),c.extend({},a,{handler:Ka,guid:a.handler.guid}))},remove:function(a){c.event.remove(this,
+Y(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,d){if(c.isWindow(this))this.onbeforeunload=d},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.removeEvent=t.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent&&a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=
+c.now();this[c.expando]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=ca;var a=this.originalEvent;if(a)if(a.preventDefault)a.preventDefault();else a.returnValue=false},stopPropagation:function(){this.isPropagationStopped=ca;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=ca;this.stopPropagation()},isDefaultPrevented:U,isPropagationStopped:U,isImmediatePropagationStopped:U};
+var va=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},wa=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?wa:va,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?wa:va)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(){if(this.nodeName.toLowerCase()!==
+"form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length){a.liveFired=B;return la("submit",this,arguments)}});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13){a.liveFired=B;return la("submit",this,arguments)}})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};if(!c.support.changeBubbles){var V,
+xa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ia.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=xa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired=
+B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",xa(a))}},setup:function(){if(this.type===
+"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ia.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ia.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}t.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){ua[b]++===0&&t.addEventListener(a,d,true)},teardown:function(){--ua[b]===
+0&&t.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var l=b==="one"?c.proxy(f,function(o){c(this).unbind(o,l);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var k=this.length;h<k;h++)c.event.add(this[h],d,l,e)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&!a.preventDefault)for(var d in a)this.unbind(d,
+a[d]);else{d=0;for(var e=this.length;d<e;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,e){return this.live(b,d,e,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var d=c.Event(a);d.preventDefault();d.stopPropagation();c.event.trigger(d,b,this[0]);return d.result}},toggle:function(a){for(var b=arguments,d=
+1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(e){var f=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,f+1);e.preventDefault();return b[f].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var ya={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,e,f,h){var l,k=0,o,x,r=h||this.selector;h=h?this:c(this.context);if(typeof d===
+"object"&&!d.preventDefault){for(l in d)h[b](l,e,d[l],r);return this}if(c.isFunction(e)){f=e;e=B}for(d=(d||"").split(" ");(l=d[k++])!=null;){o=X.exec(l);x="";if(o){x=o[0];l=l.replace(X,"")}if(l==="hover")d.push("mouseenter"+x,"mouseleave"+x);else{o=l;if(l==="focus"||l==="blur"){d.push(ya[l]+x);l+=x}else l=(ya[l]||l)+x;if(b==="live"){x=0;for(var A=h.length;x<A;x++)c.event.add(h[x],"live."+Y(l,r),{data:e,selector:r,handler:f,origType:l,origHandler:f,preType:o})}else h.unbind("live."+Y(l,r),f)}}return this}});
+c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d,e){if(e==null){e=d;d=null}return arguments.length>0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
+(function(){function a(g,i,n,m,p,q){p=0;for(var u=m.length;p<u;p++){var y=m[p];if(y){var F=false;for(y=y[g];y;){if(y.sizcache===n){F=m[y.sizset];break}if(y.nodeType===1&&!q){y.sizcache=n;y.sizset=p}if(y.nodeName.toLowerCase()===i){F=y;break}y=y[g]}m[p]=F}}}function b(g,i,n,m,p,q){p=0;for(var u=m.length;p<u;p++){var y=m[p];if(y){var F=false;for(y=y[g];y;){if(y.sizcache===n){F=m[y.sizset];break}if(y.nodeType===1){if(!q){y.sizcache=n;y.sizset=p}if(typeof i!=="string"){if(y===i){F=true;break}}else if(k.filter(i,
+[y]).length>0){F=y;break}}y=y[g]}m[p]=F}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,l=true;[0,0].sort(function(){l=false;return 0});var k=function(g,i,n,m){n=n||[];var p=i=i||t;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var q,u,y,F,M,N=true,O=k.isXML(i),D=[],R=g;do{d.exec("");if(q=d.exec(R)){R=q[3];D.push(q[1]);if(q[2]){F=q[3];
+break}}}while(q);if(D.length>1&&x.exec(g))if(D.length===2&&o.relative[D[0]])u=L(D[0]+D[1],i);else for(u=o.relative[D[0]]?[i]:k(D.shift(),i);D.length;){g=D.shift();if(o.relative[g])g+=D.shift();u=L(g,u)}else{if(!m&&D.length>1&&i.nodeType===9&&!O&&o.match.ID.test(D[0])&&!o.match.ID.test(D[D.length-1])){q=k.find(D.shift(),i,O);i=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]}if(i){q=m?{expr:D.pop(),set:C(m)}:k.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&i.parentNode?i.parentNode:i,O);u=q.expr?k.filter(q.expr,
+q.set):q.set;if(D.length>0)y=C(u);else N=false;for(;D.length;){q=M=D.pop();if(o.relative[M])q=D.pop();else M="";if(q==null)q=i;o.relative[M](y,q,O)}}else y=[]}y||(y=u);y||k.error(M||g);if(f.call(y)==="[object Array]")if(N)if(i&&i.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&k.contains(i,y[g])))n.push(u[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&n.push(u[g]);else n.push.apply(n,y);else C(y,n);if(F){k(F,p,n,m);k.uniqueSort(n)}return n};k.uniqueSort=function(g){if(w){h=
+l;g.sort(w);if(h)for(var i=1;i<g.length;i++)g[i]===g[i-1]&&g.splice(i--,1)}return g};k.matches=function(g,i){return k(g,null,null,i)};k.matchesSelector=function(g,i){return k(i,null,null,[g]).length>0};k.find=function(g,i,n){var m;if(!g)return[];for(var p=0,q=o.order.length;p<q;p++){var u,y=o.order[p];if(u=o.leftMatch[y].exec(g)){var F=u[1];u.splice(1,1);if(F.substr(F.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");m=o.find[y](u,i,n);if(m!=null){g=g.replace(o.match[y],"");break}}}}m||(m=i.getElementsByTagName("*"));
+return{set:m,expr:g}};k.filter=function(g,i,n,m){for(var p,q,u=g,y=[],F=i,M=i&&i[0]&&k.isXML(i[0]);g&&i.length;){for(var N in o.filter)if((p=o.leftMatch[N].exec(g))!=null&&p[2]){var O,D,R=o.filter[N];D=p[1];q=false;p.splice(1,1);if(D.substr(D.length-1)!=="\\"){if(F===y)y=[];if(o.preFilter[N])if(p=o.preFilter[N](p,F,n,y,m,M)){if(p===true)continue}else q=O=true;if(p)for(var j=0;(D=F[j])!=null;j++)if(D){O=R(D,p,j,F);var s=m^!!O;if(n&&O!=null)if(s)q=true;else F[j]=false;else if(s){y.push(D);q=true}}if(O!==
+B){n||(F=y);g=g.replace(o.match[N],"");if(!q)return[];break}}}if(g===u)if(q==null)k.error(g);else break;u=g}return F};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var o=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
+POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,i){var n=typeof i==="string",m=n&&!/\W/.test(i);n=n&&!m;if(m)i=i.toLowerCase();m=0;for(var p=g.length,q;m<p;m++)if(q=g[m]){for(;(q=q.previousSibling)&&q.nodeType!==1;);g[m]=n||q&&q.nodeName.toLowerCase()===
+i?q||false:q===i}n&&k.filter(i,g,true)},">":function(g,i){var n,m=typeof i==="string",p=0,q=g.length;if(m&&!/\W/.test(i))for(i=i.toLowerCase();p<q;p++){if(n=g[p]){n=n.parentNode;g[p]=n.nodeName.toLowerCase()===i?n:false}}else{for(;p<q;p++)if(n=g[p])g[p]=m?n.parentNode:n.parentNode===i;m&&k.filter(i,g,true)}},"":function(g,i,n){var m,p=e++,q=b;if(typeof i==="string"&&!/\W/.test(i)){m=i=i.toLowerCase();q=a}q("parentNode",i,p,g,m,n)},"~":function(g,i,n){var m,p=e++,q=b;if(typeof i==="string"&&!/\W/.test(i)){m=
+i=i.toLowerCase();q=a}q("previousSibling",i,p,g,m,n)}},find:{ID:function(g,i,n){if(typeof i.getElementById!=="undefined"&&!n)return(g=i.getElementById(g[1]))&&g.parentNode?[g]:[]},NAME:function(g,i){if(typeof i.getElementsByName!=="undefined"){for(var n=[],m=i.getElementsByName(g[1]),p=0,q=m.length;p<q;p++)m[p].getAttribute("name")===g[1]&&n.push(m[p]);return n.length===0?null:n}},TAG:function(g,i){return i.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,i,n,m,p,q){g=" "+g[1].replace(/\\/g,
+"")+" ";if(q)return g;q=0;for(var u;(u=i[q])!=null;q++)if(u)if(p^(u.className&&(" "+u.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))n||m.push(u);else if(n)i[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n,
+m,p,q){i=g[1].replace(/\\/g,"");if(!q&&o.attrMap[i])g[1]=o.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,i);else{g=k.filter(g[3],i,n,true^p);n||m.push.apply(m,g);return false}else if(o.match.POS.test(g[0])||o.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===
+true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!k(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===
+g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,m){return i===m.length-1},even:function(g,i){return i%2===0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return i<n[3]-0},gt:function(g,i,n){return i>n[3]-0},nth:function(g,i,n){return n[3]-
+0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,m){var p=i[1],q=o.filters[p];if(q)return q(g,n,i,m);else if(p==="contains")return(g.textContent||g.innerText||k.getText([g])||"").indexOf(i[3])>=0;else if(p==="not"){i=i[3];n=0;for(m=i.length;n<m;n++)if(i[n]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+p)},CHILD:function(g,i){var n=i[1],m=g;switch(n){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(n===
+"first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":n=i[2];var p=i[3];if(n===1&&p===0)return true;var q=i[0],u=g.parentNode;if(u&&(u.sizcache!==q||!g.nodeIndex)){var y=0;for(m=u.firstChild;m;m=m.nextSibling)if(m.nodeType===1)m.nodeIndex=++y;u.sizcache=q}m=g.nodeIndex-p;return n===0?m===0:m%n===0&&m/n>=0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===
+i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];n=o.attrHandle[n]?o.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);var m=n+"",p=i[2],q=i[4];return n==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&n!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,i,n,m){var p=o.setFilters[i[2]];
+if(p)return p(g,n,i,m)}}},x=o.match.POS,r=function(g,i){return"\\"+(i-0+1)},A;for(A in o.match){o.match[A]=RegExp(o.match[A].source+/(?![^\[]*\])(?![^\(]*\))/.source);o.leftMatch[A]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[A].source.replace(/\\(\d+)/g,r))}var C=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);return i}return g};try{Array.prototype.slice.call(t.documentElement.childNodes,0)}catch(J){C=function(g,i){var n=0,m=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(m,
+g);else if(typeof g.length==="number")for(var p=g.length;n<p;n++)m.push(g[n]);else for(;g[n];n++)m.push(g[n]);return m}}var w,I;if(t.documentElement.compareDocumentPosition)w=function(g,i){if(g===i){h=true;return 0}if(!g.compareDocumentPosition||!i.compareDocumentPosition)return g.compareDocumentPosition?-1:1;return g.compareDocumentPosition(i)&4?-1:1};else{w=function(g,i){var n,m,p=[],q=[];n=g.parentNode;m=i.parentNode;var u=n;if(g===i){h=true;return 0}else if(n===m)return I(g,i);else if(n){if(!m)return 1}else return-1;
+for(;u;){p.unshift(u);u=u.parentNode}for(u=m;u;){q.unshift(u);u=u.parentNode}n=p.length;m=q.length;for(u=0;u<n&&u<m;u++)if(p[u]!==q[u])return I(p[u],q[u]);return u===n?I(g,q[u],-1):I(p[u],i,1)};I=function(g,i,n){if(g===i)return n;for(g=g.nextSibling;g;){if(g===i)return-1;g=g.nextSibling}return 1}}k.getText=function(g){for(var i="",n,m=0;g[m];m++){n=g[m];if(n.nodeType===3||n.nodeType===4)i+=n.nodeValue;else if(n.nodeType!==8)i+=k.getText(n.childNodes)}return i};(function(){var g=t.createElement("div"),
+i="script"+(new Date).getTime(),n=t.documentElement;g.innerHTML="<a name='"+i+"'/>";n.insertBefore(g,n.firstChild);if(t.getElementById(i)){o.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:B:[]};o.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}n.removeChild(g);
+n=g=null})();(function(){var g=t.createElement("div");g.appendChild(t.createComment(""));if(g.getElementsByTagName("*").length>0)o.find.TAG=function(i,n){var m=n.getElementsByTagName(i[1]);if(i[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")o.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();t.querySelectorAll&&
+function(){var g=k,i=t.createElement("div");i.innerHTML="<p class='TEST'></p>";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){k=function(m,p,q,u){p=p||t;m=m.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u&&!k.isXML(p))if(p.nodeType===9)try{return C(p.querySelectorAll(m),q)}catch(y){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var F=p.getAttribute("id"),M=F||"__sizzle__";F||p.setAttribute("id",M);try{return C(p.querySelectorAll("#"+M+" "+m),q)}catch(N){}finally{F||
+p.removeAttribute("id")}}return g(m,p,q,u)};for(var n in g)k[n]=g[n];i=null}}();(function(){var g=t.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(t.documentElement,"[test!='']:sizzle")}catch(m){n=true}if(i)k.matchesSelector=function(p,q){q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(p))try{if(n||!o.match.PSEUDO.test(q)&&!/!=/.test(q))return i.call(p,q)}catch(u){}return k(q,null,null,[p]).length>0}})();(function(){var g=
+t.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){o.order.splice(1,0,"CLASS");o.find.CLASS=function(i,n,m){if(typeof n.getElementsByClassName!=="undefined"&&!m)return n.getElementsByClassName(i[1])};g=null}}})();k.contains=t.documentElement.contains?function(g,i){return g!==i&&(g.contains?g.contains(i):true)}:t.documentElement.compareDocumentPosition?
+function(g,i){return!!(g.compareDocumentPosition(i)&16)}:function(){return false};k.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var L=function(g,i){for(var n,m=[],p="",q=i.nodeType?[i]:i;n=o.match.PSEUDO.exec(g);){p+=n[0];g=g.replace(o.match.PSEUDO,"")}g=o.relative[g]?g+"*":g;n=0;for(var u=q.length;n<u;n++)k(g,q[n],m);return k.filter(p,m)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=k.getText;c.isXMLDoc=k.isXML;
+c.contains=k.contains})();var Za=/Until$/,$a=/^(?:parents|prevUntil|prevAll)/,ab=/,/,Na=/^.[^:#\[\.,]*$/,bb=Array.prototype.slice,cb=c.expr.match.POS;c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,e=0,f=this.length;e<f;e++){d=b.length;c.find(a,this[e],b);if(e>0)for(var h=d;h<b.length;h++)for(var l=0;l<d;l++)if(b[l]===b[h]){b.splice(h--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,e=b.length;d<e;d++)if(c.contains(this,b[d]))return true})},
+not:function(a){return this.pushStack(ma(this,a,false),"not",a)},filter:function(a){return this.pushStack(ma(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){var d=[],e,f,h=this[0];if(c.isArray(a)){var l,k={},o=1;if(h&&a.length){e=0;for(f=a.length;e<f;e++){l=a[e];k[l]||(k[l]=c.expr.match.POS.test(l)?c(l,b||this.context):l)}for(;h&&h.ownerDocument&&h!==b;){for(l in k){e=k[l];if(e.jquery?e.index(h)>-1:c(h).is(e))d.push({selector:l,elem:h,level:o})}h=
+h.parentNode;o++}}return d}l=cb.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e<f;e++)for(h=this[e];h;)if(l?l.index(h)>-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context):
+c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,
+2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,
+b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Za.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||ab.test(e))&&$a.test(a))f=f.reverse();return this.pushStack(f,a,bb.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===B||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&
+e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var za=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,Aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Ba=/<([\w:]+)/,db=/<tbody/i,eb=/<|&#?\w+;/,Ca=/<(?:script|object|embed|option|style)/i,Da=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/\=([^="'>\s]+\/)>/g,P={option:[1,
+"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};P.optgroup=P.option;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==B)return this.empty().append((this[0]&&this[0].ownerDocument||t).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(za,"").replace(fb,'="$1">').replace($,"")],e)[0]}else return this.cloneNode(true)});if(a===true){na(this,b);na(this.find("*"),b.find("*"))}return b},html:function(a){if(a===B)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(za,""):null;
+else if(typeof a==="string"&&!Ca.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!P[(Ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Aa,"<$1></$2>");try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(e){this.empty().append(a)}}else c.isFunction(a)?this.each(function(f){var h=c(this);h.html(a.call(this,f,h.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=
+c(this),e=d.html();d.replaceWith(a.call(this,b,e))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){var e,f,h,l=a[0],k=[];if(!c.support.checkClone&&arguments.length===3&&typeof l==="string"&&Da.test(l))return this.each(function(){c(this).domManip(a,
+b,d,true)});if(c.isFunction(l))return this.each(function(x){var r=c(this);a[0]=l.call(this,x,b?r.html():B);r.domManip(a,b,d)});if(this[0]){e=l&&l.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:c.buildFragment(a,this,k);h=e.fragment;if(f=h.childNodes.length===1?h=h.firstChild:h.firstChild){b=b&&c.nodeName(f,"tr");f=0;for(var o=this.length;f<o;f++)d.call(b?c.nodeName(this[f],"table")?this[f].getElementsByTagName("tbody")[0]||this[f].appendChild(this[f].ownerDocument.createElement("tbody")):
+this[f]:this[f],f>0||e.cacheable||this.length>1?h.cloneNode(true):h)}k.length&&c.each(k,Oa)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:t;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===t&&!Ca.test(a[0])&&(c.support.checkClone||!Da.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append",
+prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=d.length;f<h;f++){var l=(f>0?this.clone(true):this).get();c(d[f])[b](l);e=e.concat(l)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||t;if(typeof b.createElement==="undefined")b=b.ownerDocument||
+b[0]&&b[0].ownerDocument||t;for(var f=[],h=0,l;(l=a[h])!=null;h++){if(typeof l==="number")l+="";if(l){if(typeof l==="string"&&!eb.test(l))l=b.createTextNode(l);else if(typeof l==="string"){l=l.replace(Aa,"<$1></$2>");var k=(Ba.exec(l)||["",""])[1].toLowerCase(),o=P[k]||P._default,x=o[0],r=b.createElement("div");for(r.innerHTML=o[1]+l+o[2];x--;)r=r.lastChild;if(!c.support.tbody){x=db.test(l);k=k==="table"&&!x?r.firstChild&&r.firstChild.childNodes:o[1]==="<table>"&&!x?r.childNodes:[];for(o=k.length-
+1;o>=0;--o)c.nodeName(k[o],"tbody")&&!k[o].childNodes.length&&k[o].parentNode.removeChild(k[o])}!c.support.leadingWhitespace&&$.test(l)&&r.insertBefore(b.createTextNode($.exec(l)[0]),r.firstChild);l=r.childNodes}if(l.nodeType)f.push(l);else f=c.merge(f,l)}}if(d)for(h=0;f[h];h++)if(e&&c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script"))));
+d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,l=0,k;(k=a[l])!=null;l++)if(!(k.nodeName&&c.noData[k.nodeName.toLowerCase()]))if(d=k[c.expando]){if((b=e[d])&&b.events)for(var o in b.events)f[o]?c.event.remove(k,o):c.removeEvent(k,o,b.handle);if(h)delete k[c.expando];else k.removeAttribute&&k.removeAttribute(c.expando);delete e[d]}}});var Ea=/alpha\([^)]*\)/i,gb=/opacity=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,Fa=/^-?\d+(?:px)?$/i,
+jb=/^-?\d/,kb={position:"absolute",visibility:"hidden",display:"block"},Pa=["Left","Right"],Qa=["Top","Bottom"],W,Ga,aa,lb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===B)return this;return c.access(this,a,b,true,function(d,e,f){return f!==B?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true,
+zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),l=a.style,k=c.cssHooks[h];b=c.cssProps[h]||h;if(d!==B){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!k||!("set"in k)||(d=k.set(a,d))!==B)try{l[b]=d}catch(o){}}}else{if(k&&"get"in k&&(f=k.get(a,false,e))!==B)return f;return l[b]}}},css:function(a,b,d){var e,f=c.camelCase(b),
+h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==B)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=e[f]},camelCase:function(a){return a.replace(hb,lb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=oa(d,b,f);else c.swap(d,kb,function(){h=oa(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="0px"&&aa)h=aa(d,b,b);
+if(h!=null)return h===""||h==="auto"?"0px":h}if(h<0||h==null){h=d.style[b];return h===""||h==="auto"?"0px":h}return typeof h==="string"?h:h+"px"}},set:function(d,e){if(Fa.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return gb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f=
+d.filter||"";d.filter=Ea.test(f)?f.replace(Ea,e):d.filter+" "+e}};if(t.defaultView&&t.defaultView.getComputedStyle)Ga=function(a,b,d){var e;d=d.replace(ib,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return B;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};if(t.documentElement.currentStyle)aa=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],h=a.style;if(!Fa.test(f)&&jb.test(f)){d=h.left;
+e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f===""?"auto":f};W=Ga||aa;if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var mb=c.now(),nb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+ob=/^(?:select|textarea)/i,pb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,qb=/^(?:GET|HEAD)$/,Ra=/\[\]$/,T=/\=\?(&|$)/,ja=/\?/,rb=/([?&])_=[^&]*/,sb=/^(\w+:)?\/\/([^\/?#]+)/,tb=/%20/g,ub=/#.*$/,Ha=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ha)return Ha.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b===
+"object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(l,k){if(k==="success"||k==="notmodified")h.html(f?c("<div>").append(l.responseText.replace(nb,"")).find(f):l.responseText);d&&h.each(d,[l.responseText,k,l])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&
+!this.disabled&&(this.checked||ob.test(this.nodeName)||pb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})},
+getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html",
+script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),l=qb.test(h);b.url=b.url.replace(ub,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ja.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data||
+!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+mb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var k=E[d];E[d]=function(m){if(c.isFunction(k))k(m);else{E[d]=B;try{delete E[d]}catch(p){}}f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);r&&r.removeChild(A)}}if(b.dataType==="script"&&b.cache===null)b.cache=
+false;if(b.cache===false&&l){var o=c.now(),x=b.url.replace(rb,"$1_="+o);b.url=x+(x===b.url?(ja.test(b.url)?"&":"?")+"_="+o:"")}if(b.data&&l)b.url+=(ja.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");o=(o=sb.exec(b.url))&&(o[1]&&o[1].toLowerCase()!==location.protocol||o[2].toLowerCase()!==location.host);if(b.dataType==="script"&&h==="GET"&&o){var r=t.getElementsByTagName("head")[0]||t.documentElement,A=t.createElement("script");if(b.scriptCharset)A.charset=b.scriptCharset;
+A.src=b.url;if(!d){var C=false;A.onload=A.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);A.onload=A.onreadystatechange=null;r&&A.parentNode&&r.removeChild(A)}}}r.insertBefore(A,r.firstChild);return B}var J=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!l||a&&a.contentType)w.setRequestHeader("Content-Type",
+b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}o||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(I){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&&
+c.triggerGlobal(b,"ajaxSend",[w,b]);var L=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){J||c.handleComplete(b,w,e,f);J=true;if(w)w.onreadystatechange=c.noop}else if(!J&&w&&(w.readyState===4||m==="timeout")){J=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d||
+c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&Function.prototype.call.call(g,w);L("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){w&&!J&&L("timeout")},b.timeout);try{w.send(l||b.data==null?null:b.data)}catch(n){c.handleError(b,w,null,n);c.handleComplete(b,w,e,f)}b.async||L();return w}},param:function(a,b){var d=[],e=function(h,l){l=c.isFunction(l)?l():l;d[d.length]=
+encodeURIComponent(h)+"="+encodeURIComponent(l)};if(b===B)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)da(f,a[f],b,e);return d.join("&").replace(tb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess",
+[b,a])},handleComplete:function(a,b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),
+e=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}});
+if(E.ActiveXObject)c.ajaxSettings.xhr=function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var ea={},vb=/^(?:toggle|show|hide)$/,wb=/^([+\-]=)?([\d+.\-]+)(.*)$/,ba,pa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show",
+3),a,b,d);else{d=0;for(var e=this.length;d<e;d++){a=this[d];b=a.style.display;if(!c.data(a,"olddisplay")&&b==="none")b=a.style.display="";b===""&&c.css(a,"display")==="none"&&c.data(a,"olddisplay",qa(a.nodeName))}for(d=0;d<e;d++){a=this[d];b=a.style.display;if(b===""||b==="none")a.style.display=c.data(a,"olddisplay")||""}return this}},hide:function(a,b,d){if(a||a===0)return this.animate(S("hide",3),a,b,d);else{a=0;for(b=this.length;a<b;a++){d=c.css(this[a],"display");d!=="none"&&c.data(this[a],"olddisplay",
+d)}for(a=0;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b,d){var e=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||e?this.each(function(){var f=e?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(S("toggle",3),a,b,d);return this},fadeTo:function(a,b,d,e){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d,e)},animate:function(a,b,d,e){var f=c.speed(b,
+d,e);if(c.isEmptyObject(a))return this.each(f.complete);return this[f.queue===false?"each":"queue"](function(){var h=c.extend({},f),l,k=this.nodeType===1,o=k&&c(this).is(":hidden"),x=this;for(l in a){var r=c.camelCase(l);if(l!==r){a[r]=a[l];delete a[l];l=r}if(a[l]==="hide"&&o||a[l]==="show"&&!o)return h.complete.call(this);if(k&&(l==="height"||l==="width")){h.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(c.css(this,"display")==="inline"&&c.css(this,"float")==="none")if(c.support.inlineBlockNeedsLayout)if(qa(this.nodeName)===
+"inline")this.style.display="inline-block";else{this.style.display="inline";this.style.zoom=1}else this.style.display="inline-block"}if(c.isArray(a[l])){(h.specialEasing=h.specialEasing||{})[l]=a[l][1];a[l]=a[l][0]}}if(h.overflow!=null)this.style.overflow="hidden";h.curAnim=c.extend({},a);c.each(a,function(A,C){var J=new c.fx(x,h,A);if(vb.test(C))J[C==="toggle"?o?"show":"hide":C](a);else{var w=wb.exec(C),I=J.cur()||0;if(w){var L=parseFloat(w[2]),g=w[3]||"px";if(g!=="px"){c.style(x,A,(L||1)+g);I=(L||
+1)/J.cur()*I;c.style(x,A,I+g)}if(w[1])L=(w[1]==="-="?-1:1)*L+I;J.custom(I,L,g)}else J.custom(I,C,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var e=d.length-1;e>=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b,
+d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a*
+Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(l){return f.step(l)}
+var f=this,h=c.fx;this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;e.elem=this.elem;if(e()&&c.timers.push(e)&&!ba)ba=setInterval(h.tick,h.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;
+this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(k,o){f.style["overflow"+o]=h.overflow[k]})}this.options.hide&&c(this.elem).hide();if(this.options.hide||
+this.options.show)for(var l in this.options.curAnim)c.style(this.elem,l,this.options.orig[l]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=
+c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},interval:13,stop:function(){clearInterval(ba);ba=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===
+b.elem}).length};var xb=/^t(?:able|d|h)$/i,Ia=/^(?:body|html)$/i;c.fn.offset="getBoundingClientRect"in t.documentElement?function(a){var b=this[0],d;if(a)return this.each(function(l){c.offset.setOffset(this,a,l)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);try{d=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,h=f.documentElement;if(!d||!c.contains(h,b))return d||{top:0,left:0};b=f.body;f=fa(f);return{top:d.top+(f.pageYOffset||c.support.boxModel&&
+h.scrollTop||b.scrollTop)-(h.clientTop||b.clientTop||0),left:d.left+(f.pageXOffset||c.support.boxModel&&h.scrollLeft||b.scrollLeft)-(h.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(x){c.offset.setOffset(this,a,x)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d,e=b.offsetParent,f=b.ownerDocument,h=f.documentElement,l=f.body;d=(f=f.defaultView)?f.getComputedStyle(b,null):b.currentStyle;
+for(var k=b.offsetTop,o=b.offsetLeft;(b=b.parentNode)&&b!==l&&b!==h;){if(c.offset.supportsFixedPosition&&d.position==="fixed")break;d=f?f.getComputedStyle(b,null):b.currentStyle;k-=b.scrollTop;o-=b.scrollLeft;if(b===e){k+=b.offsetTop;o+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&xb.test(b.nodeName))){k+=parseFloat(d.borderTopWidth)||0;o+=parseFloat(d.borderLeftWidth)||0}e=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"){k+=
+parseFloat(d.borderTopWidth)||0;o+=parseFloat(d.borderLeftWidth)||0}d=d}if(d.position==="relative"||d.position==="static"){k+=l.offsetTop;o+=l.offsetLeft}if(c.offset.supportsFixedPosition&&d.position==="fixed"){k+=Math.max(h.scrollTop,l.scrollTop);o+=Math.max(h.scrollLeft,l.scrollLeft)}return{top:k,left:o}};c.offset={initialize:function(){var a=t.body,b=t.createElement("div"),d,e,f,h=parseFloat(c.css(a,"marginTop"))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",
+height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);d=b.firstChild;e=d.firstChild;f=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=e.offsetTop!==5;this.doesAddBorderForTableAndCells=
+f.offsetTop===5;e.style.position="fixed";e.style.top="20px";this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15;e.style.position=e.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==h;a.removeChild(b);c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.css(a,
+"marginTop"))||0;d+=parseFloat(c.css(a,"marginLeft"))||0}return{top:b,left:d}},setOffset:function(a,b,d){var e=c.css(a,"position");if(e==="static")a.style.position="relative";var f=c(a),h=f.offset(),l=c.css(a,"top"),k=c.css(a,"left"),o=e==="absolute"&&c.inArray("auto",[l,k])>-1;e={};var x={};if(o)x=f.position();l=o?x.top:parseInt(l,10)||0;k=o?x.left:parseInt(k,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+l;if(b.left!=null)e.left=b.left-h.left+k;"using"in b?b.using.call(a,
+e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Ia.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||t.body;a&&!Ia.test(a.nodeName)&&
+c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==B)return this.each(function(){if(h=fa(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=fa(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();
+c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(l){var k=c(this);k[d](e.call(this,l,k[d]()))});if(c.isWindow(f))return f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b];else if(f.nodeType===9)return Math.max(f.documentElement["client"+
+b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]);else if(e===B){f=c.css(f,d);var h=parseFloat(f);return c.isNaN(h)?f:h}else return this.css(d,typeof e==="string"?e:e+"px")}})})(window);
diff --git a/frontend/js/jquery-1.5.2.min.js b/frontend/js/jquery-1.5.2.min.js
new file mode 100644
index 0000000..f78f96a
--- /dev/null
+++ b/frontend/js/jquery-1.5.2.min.js
@@ -0,0 +1,16 @@
+/*!
+ * jQuery JavaScript Library v1.5.2
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Mar 31 15:28:23 2011 -0400
+ */
+(function(a,b){function ci(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cf(a){if(!b_[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";b_[a]=c}return b_[a]}function ce(a,b){var c={};d.each(cd.concat.apply([],cd.slice(0,b)),function(){c[this]=a});return c}function b$(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bZ(){try{return new a.XMLHttpRequest}catch(b){}}function bY(){d(a).unload(function(){for(var a in bW)bW[a](0,1)})}function bS(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h==="string"&&(f[h.toLowerCase()]=a.converters[h]);l=k,k=e[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=f[m]||f["* "+k];if(!n){p=b;for(o in f){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=f[j[1]+" "+k];if(p){o=f[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&d.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bR(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bQ(a,b,c,e){if(d.isArray(b)&&b.length)d.each(b,function(b,f){c||bs.test(a)?e(a,f):bQ(a+"["+(typeof f==="object"||d.isArray(f)?b:"")+"]",f,c,e)});else if(c||b==null||typeof b!=="object")e(a,b);else if(d.isArray(b)||d.isEmptyObject(b))e(a,"");else for(var f in b)bQ(a+"["+f+"]",b[f],c,e)}function bP(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bJ,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l==="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bP(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bP(a,c,d,e,"*",g));return l}function bO(a){return function(b,c){typeof b!=="string"&&(c=b,b="*");if(d.isFunction(c)){var e=b.toLowerCase().split(bD),f=0,g=e.length,h,i,j;for(;f<g;f++)h=e[f],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bq(a,b,c){var e=b==="width"?bk:bl,f=b==="width"?a.offsetWidth:a.offsetHeight;if(c==="border")return f;d.each(e,function(){c||(f-=parseFloat(d.css(a,"padding"+this))||0),c==="margin"?f+=parseFloat(d.css(a,"margin"+this))||0:f-=parseFloat(d.css(a,"border"+this+"Width"))||0});return f}function bc(a,b){b.src?d.ajax({url:b.src,async:!1,dataType:"script"}):d.globalEval(b.text||b.textContent||b.innerHTML||""),b.parentNode&&b.parentNode.removeChild(b)}function bb(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function ba(a,b){if(b.nodeType===1){var c=b.nodeName.toLowerCase();b.clearAttributes(),b.mergeAttributes(a);if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(d.expando)}}function _(a,b){if(b.nodeType===1&&d.hasData(a)){var c=d.expando,e=d.data(a),f=d.data(b,e);if(e=e[c]){var g=e.events;f=f[c]=d.extend({},e);if(g){delete f.handle,f.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)d.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function $(a,b){return d.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Q(a,b,c){if(d.isFunction(b))return d.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return d.grep(a,function(a,d){return a===b===c});if(typeof b==="string"){var e=d.grep(a,function(a){return a.nodeType===1});if(L.test(b))return d.filter(b,e,!c);b=d.filter(b,e)}return d.grep(a,function(a,e){return d.inArray(a,b)>=0===c})}function P(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function H(a,b){return(a&&a!=="*"?a+".":"")+b.replace(t,"`").replace(u,"&")}function G(a){var b,c,e,f,g,h,i,j,k,l,m,n,o,p=[],q=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;i<t.length;i++)g=t[i],g.origType.replace(r,"")===a.type?q.push(g.selector):t.splice(i--,1);f=d(a.target).closest(q,a.currentTarget);for(j=0,k=f.length;j<k;j++){m=f[j];for(i=0;i<t.length;i++){g=t[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,e=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,e=d(a.relatedTarget).closest(g.selector)[0];(!e||e!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){f=p[j];if(c&&f.level>c)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,o=f.handleObj.origHandler.apply(f.elem,arguments);if(o===!1||a.isPropagationStopped()){c=f.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function E(a,c,e){var f=d.extend({},e[0]);f.type=a,f.originalEvent={},f.liveFired=b,d.event.handle.call(c,f),f.isDefaultPrevented()&&e[0].preventDefault()}function y(){return!0}function x(){return!1}function i(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function h(a,c,e){if(e===b&&a.nodeType===1){e=a.getAttribute("data-"+c);if(typeof e==="string"){try{e=e==="true"?!0:e==="false"?!1:e==="null"?null:d.isNaN(e)?g.test(e)?d.parseJSON(e):e:parseFloat(e)}catch(f){}d.data(a,c,e)}else e=b}return e}var c=a.document,d=function(){function G(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(G,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x,y,z=Object.prototype.toString,A=Object.prototype.hasOwnProperty,B=Array.prototype.push,C=Array.prototype.slice,D=String.prototype.trim,E=Array.prototype.indexOf,F={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5.2",length:0,size:function(){return this.length},toArray:function(){return C.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?B.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),x.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(C.apply(this,arguments),"slice",C.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:B,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){e=i[c],f=a[c];if(i===f)continue;l&&f&&(d.isPlainObject(f)||(g=d.isArray(f)))?(g?(g=!1,h=e&&d.isArray(e)?e:[]):h=e&&d.isPlainObject(e)?e:{},i[c]=d.extend(l,h,f)):f!==b&&(i[c]=f)}return i},d.extend({noConflict:function(b){a.$=f,b&&(a.jQuery=e);return d},isReady:!1,readyWait:1,ready:function(a){a===!0&&d.readyWait--;if(!d.readyWait||a!==!0&&!d.isReady){if(!c.body)return setTimeout(d.ready,1);d.isReady=!0;if(a!==!0&&--d.readyWait>0)return;x.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=d._Deferred();if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",y,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",y),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&G()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):F[z.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!A.call(a,"constructor")&&!A.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||A.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.head||c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g<h;)if(c.apply(a[g++],e)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(var j=a[0];g<h&&c.call(j,g,j)!==!1;j=a[++g]){}return a},trim:D?function(a){return a==null?"":D.call(a)}:function(a){return a==null?"":(a+"").replace(j,"").replace(k,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var e=d.type(a);a.length==null||e==="string"||e==="function"||e==="regexp"||d.isWindow(a)?B.call(c,a):d.merge(c,a)}return c},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length==="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,b,c){var d=[],e;for(var f=0,g=a.length;f<g;f++)e=b(a[f],f,c),e!=null&&(d[d.length]=e);return d.concat.apply([],d)},guid:1,proxy:function(a,c,e){arguments.length===2&&(typeof c==="string"?(e=a,a=e[c],c=b):c&&!d.isFunction(c)&&(e=c,c=b)),!c&&a&&(c=function(){return a.apply(e||this,arguments)}),a&&(c.guid=a.guid=a.guid||c.guid||d.guid++);return c},access:function(a,c,e,f,g,h){var i=a.length;if(typeof c==="object"){for(var j in c)d.access(a,j,c[j],f,g,e);return a}if(e!==b){f=!h&&f&&d.isFunction(e);for(var k=0;k<i;k++)g(a[k],c,f?e.call(a[k],k,g(a[k],c)):e,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}d.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.subclass=this.subclass,a.fn.init=function b(b,c){c&&c instanceof d&&!(c instanceof a)&&(c=a(c));return d.fn.init.call(this,b,c,e)},a.fn.init.prototype=a.fn;var e=a(c);return a},browser:{}}),d.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){F["[object "+b+"]"]=b.toLowerCase()}),w=d.uaMatch(v),w.browser&&(d.browser[w.browser]=!0,d.browser.version=w.version),d.browser.webkit&&(d.browser.safari=!0),E&&(d.inArray=function(a,b){return E.call(b,a)}),i.test(" ")&&(j=/^[\s\xA0]+/,k=/[\s\xA0]+$/),g=d(c),c.addEventListener?y=function(){c.removeEventListener("DOMContentLoaded",y,!1),d.ready()}:c.attachEvent&&(y=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",y),d.ready())});return d}(),e="then done fail isResolved isRejected promise".split(" "),f=[].slice;d.extend({_Deferred:function(){var a=[],b,c,e,f={done:function(){if(!e){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=d.type(i),j==="array"?f.done.apply(f,i):j==="function"&&a.push(i);k&&f.resolveWith(k[0],k[1])}return this},resolveWith:function(d,f){if(!e&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(d,f)}finally{b=[d,f],c=0}}return this},resolve:function(){f.resolveWith(this,arguments);return this},isResolved:function(){return c||b},cancel:function(){e=1,a=[];return this}};return f},Deferred:function(a){var b=d._Deferred(),c=d._Deferred(),f;d.extend(b,{then:function(a,c){b.done(a).fail(c);return this},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,promise:function(a){if(a==null){if(f)return f;f=a={}}var c=e.length;while(c--)a[e[c]]=b[e[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?f.call(arguments,0):c,--g||h.resolveWith(h,f.call(b,0))}}var b=arguments,c=0,e=b.length,g=e,h=e<=1&&a&&d.isFunction(a.promise)?a:d.Deferred();if(e>1){for(;c<e;c++)b[c]&&d.isFunction(b[c].promise)?b[c].promise().then(i(c),h.reject):--g;g||h.resolveWith(h,b)}else h!==a&&h.resolveWith(h,e?[a]:[]);return h.promise()}}),function(){d.support={};var b=c.createElement("div");b.style.display="none",b.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=b.getElementsByTagName("input")[0];if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,noCloneEvent:!0,noCloneChecked:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0,reliableMarginRight:!0},i.checked=!0,d.support.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,d.support.optDisabled=!h.disabled;var j=null;d.support.scriptEval=function(){if(j===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(j=!0,delete a[f]):j=!1,b.removeChild(e)}return j};try{delete b.test}catch(k){d.support.deleteExpando=!1}!b.addEventListener&&b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function l(){d.support.noCloneEvent=!1,b.detachEvent("onclick",l)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";var m=c.createDocumentFragment();m.appendChild(b.firstChild),d.support.checkClone=m.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(a.style.width="1px",a.style.marginRight="0",d.support.reliableMarginRight=(parseInt(c.defaultView.getComputedStyle(a,null).marginRight,10)||0)===0),b.removeChild(a).style.display="none",a=e=null}});var n=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function");return d};d.support.submitBubbles=n("submit"),d.support.changeBubbles=n("change"),b=e=f=null}}();var g=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!i(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={},j||(k[l].toJSON=d.noop));if(typeof c==="object"||typeof c==="function")f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c);i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,g=b.nodeType,h=g?d.cache:b,j=g?b[d.expando]:d.expando;if(!h[j])return;if(c){var k=e?h[j][f]:h[j];if(k){delete k[c];if(!i(k))return}}if(e){delete h[j][f];if(!i(h[j]))return}var l=h[j][f];d.support.deleteExpando||h!=a?delete h[j]:h[j]=null,l?(h[j]={},g||(h[j].toJSON=d.noop),h[j][f]=l):g&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var f=this[0].attributes,g;for(var i=0,j=f.length;i<j;i++)g=f[i].name,g.indexOf("data-")===0&&(g=g.substr(5),h(this[0],g,e[g]))}}return e}if(typeof a==="object")return this.each(function(){d.data(this,a)});var k=a.split(".");k[1]=k[1]?"."+k[1]:"";if(c===b){e=this.triggerHandler("getData"+k[1]+"!",[k[0]]),e===b&&this.length&&(e=d.data(this[0],a),e=h(this[0],a,e));return e===b&&k[1]?this.data(k[0]):e}return this.each(function(){var b=d(this),e=[k[0],c];b.triggerHandler("setData"+k[1]+"!",e),d.data(this,a,c),b.triggerHandler("changeData"+k[1]+"!",e)})},removeData:function(a){return this.each(function(){d.removeData(this,a)})}}),d.extend({queue:function(a,b,c){if(a){b=(b||"fx")+"queue";var e=d._data(a,b);if(!c)return e||[];!e||d.isArray(c)?e=d._data(a,b,d.makeArray(c)):e.push(c);return e}},dequeue:function(a,b){b=b||"fx";var c=d.queue(a,b),e=c.shift();e==="inprogress"&&(e=c.shift()),e&&(b==="fx"&&c.unshift("inprogress"),e.call(a,function(){d.dequeue(a,b)})),c.length||d.removeData(a,b+"queue",!0)}}),d.fn.extend({queue:function(a,c){typeof a!=="string"&&(c=a,a="fx");if(c===b)return d.queue(this[0],a);return this.each(function(b){var e=d.queue(this,a,c);a==="fx"&&e[0]!=="inprogress"&&d.dequeue(this,a)})},dequeue:function(a){return this.each(function(){d.dequeue(this,a)})},delay:function(a,b){a=d.fx?d.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){d.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var j=/[\n\t\r]/g,k=/\s+/,l=/\r/g,m=/^(?:href|src|style)$/,n=/^(?:button|input)$/i,o=/^(?:button|input|object|select|textarea)$/i,p=/^a(?:rea)?$/i,q=/^(?:radio|checkbox)$/i;d.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"},d.fn.extend({attr:function(a,b){return d.access(this,a,b,!0,d.attr)},removeAttr:function(a,b){return this.each(function(){d.attr(this,a,""),this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.addClass(a.call(this,b,c.attr("class")))});if(a&&typeof a==="string"){var b=(a||"").split(k);for(var c=0,e=this.length;c<e;c++){var f=this[c];if(f.nodeType===1)if(f.className){var g=" "+f.className+" ",h=f.className;for(var i=0,j=b.length;i<j;i++)g.indexOf(" "+b[i]+" ")<0&&(h+=" "+b[i]);f.className=d.trim(h)}else f.className=a}}return this},removeClass:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.removeClass(a.call(this,b,c.attr("class")))});if(a&&typeof a==="string"||a===b){var c=(a||"").split(k);for(var e=0,f=this.length;e<f;e++){var g=this[e];if(g.nodeType===1&&g.className)if(a){var h=(" "+g.className+" ").replace(j," ");for(var i=0,l=c.length;i<l;i++)h=h.replace(" "+c[i]+" "," ");g.className=d.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,e=typeof b==="boolean";if(d.isFunction(a))return this.each(function(c){var e=d(this);e.toggleClass(a.call(this,c,e.attr("class"),b),b)});return this.each(function(){if(c==="string"){var f,g=0,h=d(this),i=b,j=a.split(k);while(f=j[g++])i=e?i:!h.hasClass(f),h[i?"addClass":"removeClass"](f)}else if(c==="undefined"||c==="boolean")this.className&&d._data(this,"__className__",this.className),this.className=this.className||a===!1?"":d._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(j," ").indexOf(b)>-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,i=c.type==="select-one";if(f<0)return null;for(var j=i?f:0,k=i?f+1:h.length;j<k;j++){var m=h[j];if(m.selected&&(d.support.optDisabled?!m.disabled:m.getAttribute("disabled")===null)&&(!m.parentNode.disabled||!d.nodeName(m.parentNode,"optgroup"))){a=d(m).val();if(i)return a;g.push(a)}}if(i&&!g.length&&h.length)return d(h[f]).val();return g}if(q.test(c.type)&&!d.support.checkOn)return c.getAttribute("value")===null?"on":c.value;return(c.value||"").replace(l,"")}return b}var n=d.isFunction(a);return this.each(function(b){var c=d(this),e=a;if(this.nodeType===1){n&&(e=a.call(this,b,c.val())),e==null?e="":typeof e==="number"?e+="":d.isArray(e)&&(e=d.map(e,function(a){return a==null?"":a+""}));if(d.isArray(e)&&q.test(this.type))this.checked=d.inArray(c.val(),e)>=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=m.test(c);if(c==="selected"&&!d.support.optSelected){var j=a.parentNode;j&&(j.selectedIndex,j.parentNode&&j.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&n.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var k=a.getAttributeNode("tabIndex");return k&&k.specified?k.value:o.test(a.nodeName)||p.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var l=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return l===null?b:l}h&&(a[c]=e);return a[c]}});var r=/\.(.*)$/,s=/^(?:textarea|input|select)$/i,t=/\./g,u=/ /g,v=/[^\w\s.|`]/g,w=function(a){return a.replace(v,"\\$&")};d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){try{d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a)}catch(h){}if(f===!1)f=x;else if(!f)return;var i,j;f.handler&&(i=f,f=i.handler),f.guid||(f.guid=d.guid++);var k=d._data(c);if(!k)return;var l=k.events,m=k.handle;l||(k.events=l={}),m||(k.handle=m=function(a){return typeof d!=="undefined"&&d.event.triggered!==a.type?d.event.handle.apply(m.elem,arguments):b}),m.elem=c,e=e.split(" ");var n,o=0,p;while(n=e[o++]){j=i?d.extend({},i):{handler:f,data:g},n.indexOf(".")>-1?(p=n.split("."),n=p.shift(),j.namespace=p.slice(0).sort().join(".")):(p=[],j.namespace=""),j.type=n,j.guid||(j.guid=f.guid);var q=l[n],r=d.event.special[n]||{};if(!q){q=l[n]=[];if(!r.setup||r.setup.call(c,g,p,m)===!1)c.addEventListener?c.addEventListener(n,m,!1):c.attachEvent&&c.attachEvent("on"+n,m)}r.add&&(r.add.call(c,j),j.handler.guid||(j.handler.guid=f.guid)),q.push(j),d.event.global[n]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=x);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in t)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),w).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!e){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))d.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=d.event.special[h]||{};for(j=f||0;j<p.length;j++){q=p[j];if(e.guid===q.guid){if(l||n.test(q.namespace))f==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(f!=null)break}}if(p.length===0||f!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&d.removeEvent(a,h,s.handle),g=null,delete t[h]}if(d.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,d.isEmptyObject(s)&&d.removeData(a,b,!0)}}},trigger:function(a,c,e){var f=a.type||a,g=arguments[3];if(!g){a=typeof a==="object"?a[d.expando]?a:d.extend(d.Event(f),a):d.Event(f),f.indexOf("!")>=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=d._data(e,"handle");h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(r,""),n=d.nodeName(l,"a")&&m==="click",o=d.event.special[m]||{};if((!o._default||o._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=a.type,l[m]())}catch(p){}k&&(l["on"+m]=k),d.event.triggered=b}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,"events"),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l<m;l++){var n=f[l];if(e||h.test(n.namespace)){c.handler=n.handler,c.data=n.data,c.handleObj=n;var o=n.handler.apply(this,k);o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[d.expando])return a;var e=a;a=d.Event(e);for(var f=this.props.length,g;f;)g=this.props[--f],a[g]=e[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=c.documentElement,i=c.body;a.pageX=a.clientX+(h&&h.scrollLeft||i&&i.scrollLeft||0)-(h&&h.clientLeft||i&&i.clientLeft||0),a.pageY=a.clientY+(h&&h.scrollTop||i&&i.scrollTop||0)-(h&&h.clientTop||i&&i.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:d.proxy,special:{ready:{setup:d.bindReady,teardown:d.noop},live:{add:function(a){d.event.add(this,H(a.origType,a.selector),d.extend({},a,{handler:G,guid:a.handler.guid}))},remove:function(a){d.event.remove(this,H(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){d.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},d.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},d.Event=function(a){if(!this.preventDefault)return new d.Event(a);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?y:x):this.type=a,this.timeStamp=d.now(),this[d.expando]=!0},d.Event.prototype={preventDefault:function(){this.isDefaultPrevented=y;var a=this.originalEvent;a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=y;var a=this.originalEvent;a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=y,this.stopPropagation()},isDefaultPrevented:x,isPropagationStopped:x,isImmediatePropagationStopped:x};var z=function(a){var b=a.relatedTarget;try{if(b&&b!==c&&!b.parentNode)return;while(b&&b!==this)b=b.parentNode;b!==this&&(a.type=a.data,d.event.handle.apply(this,arguments))}catch(e){}},A=function(a){a.type=a.data,d.event.handle.apply(this,arguments)};d.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){d.event.special[a]={setup:function(c){d.event.add(this,b,c&&c.selector?A:z,a)},teardown:function(a){d.event.remove(this,b,a&&a.selector?A:z)}}}),d.support.submitBubbles||(d.event.special.submit={setup:function(a,b){if(this.nodeName&&this.nodeName.toLowerCase()!=="form")d.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&d(b).closest("form").length&&E("submit",this,arguments)}),d.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&d(b).closest("form").length&&a.keyCode===13&&E("submit",this,arguments)});else return!1},teardown:function(a){d.event.remove(this,".specialSubmit")}});if(!d.support.changeBubbles){var B,C=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},D=function D(a){var c=a.target,e,f;if(s.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=C(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f)a.type="change",a.liveFired=b,d.event.trigger(a,arguments[1],c)}};d.event.special.change={filters:{focusout:D,beforedeactivate:D,click:function(a){var b=a.target,c=b.type;(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")&&D.call(this,a)},keydown:function(a){var b=a.target,c=b.type;(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&D.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",C(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in B)d.event.add(this,c+".specialChange",B[c]);return s.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return s.test(this.nodeName)}},B=d.event.special.change.filters,B.focus=B.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function f(a){var c=d.event.fix(a);c.type=b,c.originalEvent={},d.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var e=0;d.event.special[b]={setup:function(){e++===0&&c.addEventListener(a,f,!0)},teardown:function(){--e===0&&c.removeEventListener(a,f,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i<j;i++)d.event.add(this[i],a,h,e);return this}}),d.fn.extend({unbind:function(a,b){if(typeof a!=="object"||a.preventDefault)for(var e=0,f=this.length;e<f;e++)d.event.remove(this[e],a,b);else for(var c in a)this.unbind(c,a[c]);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){d.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var c=d.Event(a);c.preventDefault(),c.stopPropagation(),d.event.trigger(c,b,this[0]);return c.result}},toggle:function(a){var b=arguments,c=1;while(c<b.length)d.proxy(a,b[c++]);return this.click(d.proxy(a,function(e){var f=(d._data(this,"lastToggle"+a.guid)||0)%c;d._data(this,"lastToggle"+a.guid,f+1),e.preventDefault();return b[f].apply(this,arguments)||!1}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var F={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};d.each(["live","die"],function(a,c){d.fn[c]=function(a,e,f,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:d(this.context);if(typeof a==="object"&&!a.preventDefault){for(var o in a)n[c](o,e,a[o],m);return this}d.isFunction(e)&&(f=e,e=b),a=(a||"").split(" ");while((h=a[i++])!=null){j=r.exec(h),k="",j&&(k=j[0],h=h.replace(r,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,h==="focus"||h==="blur"?(a.push(F[h]+k),h=h+k):h=(F[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)d.event.add(n[p],"live."+H(h,m),{data:e,selector:m,handler:f,origType:h,origHandler:f,preType:l});else n.unbind("live."+H(h,m),f)}return this}}),d.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){d.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!=="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(f.call(n)==="[object Array]")if(u)if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&e.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&e.push(j[t]);else e.push.apply(e,n);else p(n,e);o&&(k(o,h,e,g),k.uniqueSort(e));return e};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!=="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(f){if(f===!0)continue}else g=o=!0}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b==="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1){}a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=u;typeof b==="string"&&!j.test(b)&&(b=b.toLowerCase(),d=b,g=t),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=u;typeof b==="string"&&!j.test(b)&&(b=b.toLowerCase(),d=b,g=t),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return"text"===c&&(b===c||b===null)},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(a===b){g=!0;return 0}if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};d.find=k,d.expr=k.selectors,d.expr[":"]=d.expr.filters,d.unique=k.uniqueSort,d.text=k.getText,d.isXMLDoc=k.isXML,d.contains=k.contains}();var I=/Until$/,J=/^(?:parents|prevUntil|prevAll)/,K=/,/,L=/^.[^:#\[\.,]*$/,M=Array.prototype.slice,N=d.expr.match.POS,O={children:!0,contents:!0,next:!0,prev:!0};d.fn.extend({find:function(a){var b=this.pushStack("","find",a),c=0;for(var e=0,f=this.length;e<f;e++){c=b.length,d.find(a,this[e],b);if(e>0)for(var g=c;g<b.length;g++)for(var h=0;h<c;h++)if(b[h]===b[g]){b.splice(g--,1);break}}return b},has:function(a){var b=d(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(d.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(Q(this,a,!1),"not",a)},filter:function(a){return this.pushStack(Q(this,a,!0),"filter",a)},is:function(a){return!!a&&d.filter(a,this).length>0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e<f;e++)i=a[e],j[i]||(j[i]=d.expr.match.POS.test(i)?d(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=N.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e<f;e++){g=this[e];while(g){if(l?l.index(g)>-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(P(c[0])||P(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=M.call(arguments);I.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!O[a]?d.unique(f):f,(this.length>1||K.test(e))&&J.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var R=/ jQuery\d+="(?:\d+|null)"/g,S=/^\s+/,T=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,U=/<([\w:]+)/,V=/<tbody/i,W=/<|&#?\w+;/,X=/<(?:script|object|embed|option|style)/i,Y=/checked\s*(?:[^=]|=\s*.checked.)/i,Z={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};Z.optgroup=Z.option,Z.tbody=Z.tfoot=Z.colgroup=Z.caption=Z.thead,Z.th=Z.td,d.support.htmlSerialize||(Z._default=[1,"div<div>","</div>"]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(R,""):null;if(typeof a!=="string"||X.test(a)||!d.support.leadingWhitespace&&S.test(a)||Z[(U.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(T,"<$1></$2>");try{for(var c=0,e=this.length;c<e;c++)this[c].nodeType===1&&(d.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(f){this.empty().append(a)}}return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(d.isFunction(a))return this.each(function(b){var c=d(this),e=c.html();c.replaceWith(a.call(this,b,e))});typeof a!=="string"&&(a=d(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;d(this).remove(),b?d(b).before(a):d(c).append(a)})}return this.length?this.pushStack(d(d.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,e){var f,g,h,i,j=a[0],k=[];if(!d.support.checkClone&&arguments.length===3&&typeof j==="string"&&Y.test(j))return this.each(function(){d(this).domManip(a,c,e,!0)});if(d.isFunction(j))return this.each(function(f){var g=d(this);a[0]=j.call(this,f,c?g.html():b),g.domManip(a,c,e)});if(this[0]){i=j&&j.parentNode,d.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?f={fragment:i}:f=d.buildFragment(a,this,k),h=f.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&d.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)e.call(c?$(this[l],g):this[l],f.cacheable||m>1&&l<n?d.clone(h,!0,!0):h)}k.length&&d.each(k,bc)}return this}}),d.buildFragment=function(a,b,e){var f,g,h,i=b&&b[0]?b[0].ownerDocument||b[0]:c;a.length===1&&typeof a[0]==="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!X.test(a[0])&&(d.support.checkClone||!Y.test(a[0]))&&(g=!0,h=d.fragments[a[0]],h&&(h!==1&&(f=h))),f||(f=i.createDocumentFragment(),d.clean(a,i,f,e)),g&&(d.fragments[a[0]]=h?f:1);return{fragment:f,cacheable:g}},d.fragments={},d.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){d.fn[a]=function(c){var e=[],f=d(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&f.length===1){f[b](this[0]);return this}for(var h=0,i=f.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if((!d.support.noCloneEvent||!d.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){ba(a,e),f=bb(a),g=bb(e);for(h=0;f[h];++h)ba(f[h],g[h])}if(b){_(a,e);if(c){f=bb(a),g=bb(e);for(h=0;f[h];++h)_(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||W.test(i)){if(typeof i==="string"){i=i.replace(T,"<$1></$2>");var j=(U.exec(i)||["",""])[1].toLowerCase(),k=Z[j]||Z._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=V.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]==="<table>"&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&S.test(i)&&m.insertBefore(b.createTextNode(S.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var bd=/alpha\([^)]*\)/i,be=/opacity=([^)]*)/,bf=/-([a-z])/ig,bg=/([A-Z]|^ms)/g,bh=/^-?\d+(?:px)?$/i,bi=/^-?\d/,bj={position:"absolute",visibility:"hidden",display:"block"},bk=["Left","Right"],bl=["Top","Bottom"],bm,bn,bo,bp=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bm(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bm)return bm(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bf,bp)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bq(a,b,e):d.swap(a,bj,function(){f=bq(a,b,e)});if(f<=0){f=bm(a,b,b),f==="0px"&&bo&&(f=bo(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!bh.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return be.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=bd.test(f)?f.replace(bd,e):c.filter+" "+e}}),d(function(){d.support.reliableMarginRight||(d.cssHooks.marginRight={get:function(a,b){var c;d.swap(a,{display:"inline-block"},function(){b?c=bm(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bn=function(a,c,e){var f,g,h;e=e.replace(bg,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bo=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bh.test(d)&&bi.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bm=bn||bo,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var br=/%20/g,bs=/\[\]$/,bt=/\r?\n/g,bu=/#.*$/,bv=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bw=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bx=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,by=/^(?:GET|HEAD)$/,bz=/^\/\//,bA=/\?/,bB=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bC=/^(?:select|textarea)/i,bD=/\s+/,bE=/([?&])_=[^&]*/,bF=/(^|\-)([a-z])/g,bG=function(a,b,c){return b+c.toUpperCase()},bH=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bI=d.fn.load,bJ={},bK={},bL,bM;try{bL=c.location.href}catch(bN){bL=c.createElement("a"),bL.href="",bL=bL.href}bM=bH.exec(bL.toLowerCase())||[],d.fn.extend({load:function(a,c,e){if(typeof a!=="string"&&bI)return bI.apply(this,arguments);if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var g=a.slice(f,a.length);a=a.slice(0,f)}var h="GET";c&&(d.isFunction(c)?(e=c,c=b):typeof c==="object"&&(c=d.param(c,d.ajaxSettings.traditional),h="POST"));var i=this;d.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?d("<div>").append(c.replace(bB,"")).find(g):c)),e&&i.each(e,[c,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bC.test(this.nodeName)||bw.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(bt,"\r\n")}}):{name:b.name,value:c.replace(bt,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,c){d[c]=function(a,e,f,g){d.isFunction(e)&&(g=g||f,f=e,e=b);return d.ajax({type:c,url:a,data:e,success:f,dataType:g})}}),d.extend({getScript:function(a,c){return d.get(a,b,c,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a,b){b?d.extend(!0,a,d.ajaxSettings,b):(b=a,a=d.extend(!0,d.ajaxSettings,b));for(var c in {context:1,url:1})c in b?a[c]=b[c]:c in d.ajaxSettings&&(a[c]=d.ajaxSettings[c]);return a},ajaxSettings:{url:bL,isLocal:bx.test(bM[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bO(bJ),ajaxTransport:bO(bK),ajax:function(a,c){function v(a,c,l,n){if(r!==2){r=2,p&&clearTimeout(p),o=b,m=n||"",u.readyState=a?4:0;var q,t,v,w=l?bR(e,u,l):b,x,y;if(a>=200&&a<300||a===304){if(e.ifModified){if(x=u.getResponseHeader("Last-Modified"))d.lastModified[k]=x;if(y=u.getResponseHeader("Etag"))d.etag[k]=y}if(a===304)c="notmodified",q=!0;else try{t=bS(e,w),c="success",q=!0}catch(z){c="parsererror",v=z}}else{v=c;if(!c||a)c="error",a<0&&(a=0)}u.status=a,u.statusText=c,q?h.resolveWith(f,[t,c,u]):h.rejectWith(f,[u,c,v]),u.statusCode(j),j=b,s&&g.trigger("ajax"+(q?"Success":"Error"),[u,e,q?t:v]),i.resolveWith(f,[u,c]),s&&(g.trigger("ajaxComplete",[u,e]),--d.active||d.event.trigger("ajaxStop"))}}typeof a==="object"&&(c=a,a=b),c=c||{};var e=d.ajaxSetup({},c),f=e.context||e,g=f!==e&&(f.nodeType||f instanceof d)?d(f):d.event,h=d.Deferred(),i=d._Deferred(),j=e.statusCode||{},k,l={},m,n,o,p,q,r=0,s,t,u={readyState:0,setRequestHeader:function(a,b){r||(l[a.toLowerCase().replace(bF,bG)]=b);return this},getAllResponseHeaders:function(){return r===2?m:null},getResponseHeader:function(a){var c;if(r===2){if(!n){n={};while(c=bv.exec(m))n[c[1].toLowerCase()]=c[2]}c=n[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){r||(e.mimeType=a);return this},abort:function(a){a=a||"abort",o&&o.abort(a),v(0,a);return this}};h.promise(u),u.success=u.done,u.error=u.fail,u.complete=i.done,u.statusCode=function(a){if(a){var b;if(r<2)for(b in a)j[b]=[j[b],a[b]];else b=a[u.status],u.then(b,b)}return this},e.url=((a||e.url)+"").replace(bu,"").replace(bz,bM[1]+"//"),e.dataTypes=d.trim(e.dataType||"*").toLowerCase().split(bD),e.crossDomain==null&&(q=bH.exec(e.url.toLowerCase()),e.crossDomain=q&&(q[1]!=bM[1]||q[2]!=bM[2]||(q[3]||(q[1]==="http:"?80:443))!=(bM[3]||(bM[1]==="http:"?80:443)))),e.data&&e.processData&&typeof e.data!=="string"&&(e.data=d.param(e.data,e.traditional)),bP(bJ,e,c,u);if(r===2)return!1;s=e.global,e.type=e.type.toUpperCase(),e.hasContent=!by.test(e.type),s&&d.active++===0&&d.event.trigger("ajaxStart");if(!e.hasContent){e.data&&(e.url+=(bA.test(e.url)?"&":"?")+e.data),k=e.url;if(e.cache===!1){var w=d.now(),x=e.url.replace(bE,"$1_="+w);e.url=x+(x===e.url?(bA.test(e.url)?"&":"?")+"_="+w:"")}}if(e.data&&e.hasContent&&e.contentType!==!1||c.contentType)l["Content-Type"]=e.contentType;e.ifModified&&(k=k||e.url,d.lastModified[k]&&(l["If-Modified-Since"]=d.lastModified[k]),d.etag[k]&&(l["If-None-Match"]=d.etag[k])),l.Accept=e.dataTypes[0]&&e.accepts[e.dataTypes[0]]?e.accepts[e.dataTypes[0]]+(e.dataTypes[0]!=="*"?", */*; q=0.01":""):e.accepts["*"];for(t in e.headers)u.setRequestHeader(t,e.headers[t]);if(e.beforeSend&&(e.beforeSend.call(f,u,e)===!1||r===2)){u.abort();return!1}for(t in {success:1,error:1,complete:1})u[t](e[t]);o=bP(bK,e,c,u);if(o){u.readyState=1,s&&g.trigger("ajaxSend",[u,e]),e.async&&e.timeout>0&&(p=setTimeout(function(){u.abort("timeout")},e.timeout));try{r=1,o.send(l,v)}catch(y){status<2?v(-1,y):d.error(y)}}else v(-1,"No Transport");return u},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){f(this.name,this.value)});else for(var g in a)bQ(g,a[g],c,f);return e.join("&").replace(br,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bT=d.now(),bU=/(\=)\?(&|$)|\?\?/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bT++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){var f=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bU.test(b.url)||f&&bU.test(b.data))){var g,h=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2",m=function(){a[h]=i,g&&d.isFunction(i)&&a[h](g[0])};b.jsonp!==!1&&(j=j.replace(bU,l),b.url===j&&(f&&(k=k.replace(bU,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},e.then(m,m),b.converters["script json"]=function(){g||d.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bV=d.now(),bW,bX;d.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&bZ()||b$()}:bZ,bX=d.ajaxSettings.xhr(),d.support.ajax=!!bX,d.support.cors=bX&&"withCredentials"in bX,bX=b,d.support.ajax&&d.ajaxTransport(function(a){if(!a.crossDomain||d.support.cors){var c;return{send:function(e,f){var g=a.xhr(),h,i;a.username?g.open(a.type,a.url,a.async,a.username,a.password):g.open(a.type,a.url,a.async);if(a.xhrFields)for(i in a.xhrFields)g[i]=a.xhrFields[i];a.mimeType&&g.overrideMimeType&&g.overrideMimeType(a.mimeType),!a.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(i in e)g.setRequestHeader(i,e[i])}catch(j){}g.send(a.hasContent&&a.data||null),c=function(e,i){var j,k,l,m,n;try{if(c&&(i||g.readyState===4)){c=b,h&&(g.onreadystatechange=d.noop,delete bW[h]);if(i)g.readyState!==4&&g.abort();else{j=g.status,l=g.getAllResponseHeaders(),m={},n=g.responseXML,n&&n.documentElement&&(m.xml=n),m.text=g.responseText;try{k=g.statusText}catch(o){k=""}j||!a.isLocal||a.crossDomain?j===1223&&(j=204):j=m.text?200:404}}}catch(p){i||f(-1,p)}m&&f(j,k,m,l)},a.async&&g.readyState!==4?(bW||(bW={},bY()),h=bV++,g.onreadystatechange=bW[h]=c):c()},abort:function(){c&&c(0,1)}}}});var b_={},ca=/^(?:toggle|show|hide)$/,cb=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cc,cd=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(ce("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)e=this[g],f=e.style.display,!d._data(e,"olddisplay")&&f==="none"&&(f=e.style.display=""),f===""&&d.css(e,"display")==="none"&&d._data(e,"olddisplay",cf(e.nodeName));for(g=0;g<h;g++){e=this[g],f=e.style.display;if(f===""||f==="none")e.style.display=d._data(e,"olddisplay")||""}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ce("hide",3),a,b,c);for(var e=0,f=this.length;e<f;e++){var g=d.css(this[e],"display");g!=="none"&&!d._data(this[e],"olddisplay")&&d._data(this[e],"olddisplay",g)}for(e=0;e<f;e++)this[e].style.display="none";return this},_toggle:d.fn.toggle,toggle:function(a,b,c){var e=typeof a==="boolean";d.isFunction(a)&&d.isFunction(b)?this._toggle.apply(this,arguments):a==null||e?this.each(function(){var b=e?a:d(this).is(":hidden");d(this)[b?"show":"hide"]()}):this.animate(ce("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,e){var f=d.speed(b,c,e);if(d.isEmptyObject(a))return this.each(f.complete);return this[f.queue===!1?"each":"queue"](function(){var b=d.extend({},f),c,e=this.nodeType===1,g=e&&d(this).is(":hidden"),h=this;for(c in a){var i=d.camelCase(c);c!==i&&(a[i]=a[c],delete a[c],c=i);if(a[c]==="hide"&&g||a[c]==="show"&&!g)return b.complete.call(this);if(e&&(c==="height"||c==="width")){b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(d.css(this,"display")==="inline"&&d.css(this,"float")==="none")if(d.support.inlineBlockNeedsLayout){var j=cf(this.nodeName);j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)}else this.style.display="inline-block"}d.isArray(a[c])&&((b.specialEasing=b.specialEasing||{})[c]=a[c][1],a[c]=a[c][0])}b.overflow!=null&&(this.style.overflow="hidden"),b.curAnim=d.extend({},a),d.each(a,function(c,e){var f=new d.fx(h,b,c);if(ca.test(e))f[e==="toggle"?g?"show":"hide":e](a);else{var i=cb.exec(e),j=f.cur();if(i){var k=parseFloat(i[2]),l=i[3]||(d.cssNumber[c]?"":"px");l!=="px"&&(d.style(h,c,(k||1)+l),j=(k||1)/f.cur()*j,d.style(h,c,j+l)),i[1]&&(k=(i[1]==="-="?-1:1)*k+j),f.custom(j,k,l)}else f.custom(j,e,"")}});return!0})},stop:function(a,b){var c=d.timers;a&&this.queue([]),this.each(function(){for(var a=c.length-1;a>=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:ce("show",1),slideUp:ce("hide",1),slideToggle:ce("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=d.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||(d.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!cc&&(cc=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||d.fx.stop()},interval:13,stop:function(){clearInterval(cc),cc=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){d.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),d.expr&&d.expr.filters&&(d.expr.filters.animated=function(a){return d.grep(d.timers,function(b){return a===b.elem}).length});var cg=/^t(?:able|d|h)$/i,ch=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?d.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){d.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return d.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,g=f.documentElement;if(!c||!d.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=f.body,i=ci(f),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||d.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||d.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:d.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){d.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return d.offset.bodyOffset(b);d.offset.initialize();var c,e=b.offsetParent,f=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(d.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===e&&(l+=b.offsetTop,m+=b.offsetLeft,d.offset.doesNotAddBorder&&(!d.offset.doesAddBorderForTableAndCells||!cg.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),f=e,e=b.offsetParent),d.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;d.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},d.offset={initialize:function(){var a=c.body,b=c.createElement("div"),e,f,g,h,i=parseFloat(d.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=(e==="absolute"||e==="fixed")&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=ch.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!ch.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=ci(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=ci(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}}),a.jQuery=a.$=d})(window); \ No newline at end of file
diff --git a/frontend/js/jquery-1.6.2.min.js b/frontend/js/jquery-1.6.2.min.js
new file mode 100644
index 0000000..48590ec
--- /dev/null
+++ b/frontend/js/jquery-1.6.2.min.js
@@ -0,0 +1,18 @@
+/*!
+ * jQuery JavaScript Library v1.6.2
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Jun 30 14:16:56 2011 -0400
+ */
+(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bC.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bR,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bX(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bX(a,c,d,e,"*",g));return l}function bW(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bN),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bA(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bv:bw;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bg(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function W(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(R.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(x,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(H)return H.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g](h)}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/\:|^on/,v,w;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.
+shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,N(a.origType,a.selector),f.extend({},a,{handler:M,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,N(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?E:D):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=E;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=E;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=E,this.stopPropagation()},isDefaultPrevented:D,isPropagationStopped:D,isImmediatePropagationStopped:D};var F=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},G=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?G:F,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?G:F)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&K("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&K("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var H,I=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var L={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||D,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=x.exec(h),k="",j&&(k=j[0],h=h.replace(x,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,L[h]?(a.push(L[h]+k),h=h+k):h=(L[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+N(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+N(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var O=/Until$/,P=/^(?:parents|prevUntil|prevAll)/,Q=/,/,R=/^.[^:#\[\.,]*$/,S=Array.prototype.slice,T=f.expr.match.POS,U={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(W(this,a,!1),"not",a)},filter:function(a){return this.pushStack(W(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=T.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/<tbody/i,ba=/<|&#?\w+;/,bb=/<(?:script|object|embed|option|style)/i,bc=/checked\s*(?:[^=]|=\s*.checked.)/i,bd=/\/(java|ecma)script/i,be=/^\s*<!(?:\[CDATA\[|\-\-)/,bf={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bc.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bg(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bm)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!bb.test(a[0])&&(f.support.checkClone||!bc.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j
+)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1></$2>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bl(k[i]);else bl(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bd.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bn=/alpha\([^)]*\)/i,bo=/opacity=([^)]*)/,bp=/([A-Z]|^ms)/g,bq=/^-?\d+(?:px)?$/i,br=/^-?\d/,bs=/^[+\-]=/,bt=/[^+\-\.\de]+/g,bu={position:"absolute",visibility:"hidden",display:"block"},bv=["Left","Right"],bw=["Top","Bottom"],bx,by,bz;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bx(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bs.test(d)&&(d=+d.replace(bt,"")+parseFloat(f.css(a,c)),h="number"),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bx)return bx(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bA(a,b,d);f.swap(a,bu,function(){e=bA(a,b,d)});return e}},set:function(a,b){if(!bq.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cs(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cr("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cr("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cs(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cr("show",1),slideUp:cr("hide",1),slideToggle:cr("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function h(a){return d.step(a)}var d=this,e=f.fx,g;this.startTime=cn||cp(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,h.elem=this.elem,h()&&f.timers.push(h)&&!cl&&(co?(cl=!0,g=function(){cl&&(co(g),e.tick())},co(g)):cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||cp(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var ct=/^t(?:able|d|h)$/i,cu=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cv(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!ct.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file
diff --git a/frontend/js/jquery-1.6.4.min.js b/frontend/js/jquery-1.6.4.min.js
new file mode 120000
index 0000000..168445e
--- /dev/null
+++ b/frontend/js/jquery-1.6.4.min.js
@@ -0,0 +1 @@
+../imgrid/js/jquery-1.6.4.min.js \ No newline at end of file
diff --git a/frontend/js/jquery-1.7.2.min.js b/frontend/js/jquery-1.7.2.min.js
new file mode 100644
index 0000000..16ad06c
--- /dev/null
+++ b/frontend/js/jquery-1.7.2.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.7.2 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
+a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
+.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file
diff --git a/frontend/js/jquery-ui-1.8.16.custom.min.js b/frontend/js/jquery-ui-1.8.16.custom.min.js
new file mode 100644
index 0000000..3042d0b
--- /dev/null
+++ b/frontend/js/jquery-ui-1.8.16.custom.min.js
@@ -0,0 +1,84 @@
+/*!
+ * jQuery UI 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.16",
+keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({propAttr:c.fn.prop||c.fn.attr,_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=
+this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,
+"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":
+"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,
+outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,
+"tabindex"),d=isNaN(b);return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&
+a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&
+c.ui.isOverAxis(b,e,i)}})}})(jQuery);
+;/*!
+ * jQuery UI Widget 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)try{b(d).triggerHandler("remove")}catch(e){}k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(d){}});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=
+function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):
+d;if(e&&d.charAt(0)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=
+b.extend(true,{},this.options,this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+
+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",
+c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
+;/*!
+ * jQuery UI Mouse 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ * jquery.ui.widget.js
+ */
+(function(b){var d=false;b(document).mouseup(function(){d=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(c){return a._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(true===b.data(c.target,a.widgetName+".preventClickEvent")){b.removeData(c.target,a.widgetName+".preventClickEvent");c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
+this.widgetName)},_mouseDown:function(a){if(!d){this._mouseStarted&&this._mouseUp(a);this._mouseDownEvent=a;var c=this,f=a.which==1,g=typeof this.options.cancel=="string"&&a.target.nodeName?b(a.target).closest(this.options.cancel).length:false;if(!f||g||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=
+this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();return true}}true===b.data(a.target,this.widgetName+".preventClickEvent")&&b.removeData(a.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(e){return c._mouseMove(e)};this._mouseUpDelegate=function(e){return c._mouseUp(e)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return d=true}},_mouseMove:function(a){if(b.browser.msie&&
+!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=
+false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
+;/*
+ * jQuery UI Slider 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.mouse.js
+ * jquery.ui.widget.js
+ */
+(function(d){d.widget("ui.slider",d.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",range:false,step:1,value:0,values:null},_create:function(){var a=this,b=this.options,c=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f=b.values&&b.values.length||1,e=[];this._mouseSliding=this._keySliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider ui-slider-"+
+this.orientation+" ui-widget ui-widget-content ui-corner-all"+(b.disabled?" ui-slider-disabled ui-disabled":""));this.range=d([]);if(b.range){if(b.range===true){if(!b.values)b.values=[this._valueMin(),this._valueMin()];if(b.values.length&&b.values.length!==2)b.values=[b.values[0],b.values[0]]}this.range=d("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(b.range==="min"||b.range==="max"?" ui-slider-range-"+b.range:""))}for(var j=c.length;j<f;j+=1)e.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
+this.handles=c.add(d(e.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(g){g.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(g){d(this).data("index.ui-slider-handle",
+g)});this.handles.keydown(function(g){var k=true,l=d(this).data("index.ui-slider-handle"),i,h,m;if(!a.options.disabled){switch(g.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:k=false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");i=a._start(g,l);if(i===false)return}break}m=a.options.step;i=a.options.values&&a.options.values.length?
+(h=a.values(l)):(h=a.value());switch(g.keyCode){case d.ui.keyCode.HOME:h=a._valueMin();break;case d.ui.keyCode.END:h=a._valueMax();break;case d.ui.keyCode.PAGE_UP:h=a._trimAlignValue(i+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(i-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(i===a._valueMax())return;h=a._trimAlignValue(i+m);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(i===a._valueMin())return;h=a._trimAlignValue(i-
+m);break}a._slide(g,l,h);return k}}).keyup(function(g){var k=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(g,k);a._change(g,k);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();
+return this},_mouseCapture:function(a){var b=this.options,c,f,e,j,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});f=this._valueMax()-this._valueMin()+1;j=this;this.handles.each(function(k){var l=Math.abs(c-j.values(k));if(f>l){f=l;e=d(this);g=k}});if(b.range===true&&this.values(1)===b.min){g+=1;e=d(this.handles[g])}if(this._start(a,g)===false)return false;
+this._mouseSliding=true;j._handleIndex=g;e.addClass("ui-state-active").focus();b=e.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-e.width()/2,top:a.pageY-b.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b=
+this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b=
+this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);
+c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var f;if(this.options.values&&this.options.values.length){f=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>f||b===1&&c<f))c=f;if(c!==this.values(b)){f=this.values();f[b]=c;a=this._trigger("slide",a,{handle:this.handles[b],value:c,values:f});this.values(b?0:1);a!==false&&this.values(b,c,true)}}else if(c!==this.value()){a=this._trigger("slide",a,{handle:this.handles[b],value:c});
+a!==false&&this.value(c)}},_stop:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("change",a,c)}},value:function(a){if(arguments.length){this.options.value=
+this._trimAlignValue(a);this._refreshValue();this._change(null,0)}else return this._value()},values:function(a,b){var c,f,e;if(arguments.length>1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e<c.length;e+=1){c[e]=this._trimAlignValue(f[e]);this._change(null,e)}this._refreshValue()}else return this.options.values&&this.options.values.length?this._values(a):
+this.value();else return this._values()},_setOption:function(a,b){var c,f=0;if(d.isArray(this.options.values))f=this.options.values.length;d.Widget.prototype._setOption.apply(this,arguments);switch(a){case "disabled":if(b){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.propAttr("disabled",true);this.element.addClass("ui-disabled")}else{this.handles.propAttr("disabled",false);this.element.removeClass("ui-disabled")}break;case "orientation":this._detectOrientation();
+this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case "value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case "values":this._animateOff=true;this._refreshValue();for(c=0;c<f;c+=1)this._change(null,c);this._animateOff=false;break}},_value:function(){var a=this.options.value;return a=this._trimAlignValue(a)},_values:function(a){var b,c;if(arguments.length){b=this.options.values[a];
+return b=this._trimAlignValue(b)}else{b=this.options.values.slice();for(c=0;c<b.length;c+=1)b[c]=this._trimAlignValue(b[c]);return b}},_trimAlignValue:function(a){if(a<=this._valueMin())return this._valueMin();if(a>=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a=
+this.options.range,b=this.options,c=this,f=!this._animateOff?b.animate:false,e,j={},g,k,l,i;if(this.options.values&&this.options.values.length)this.handles.each(function(h){e=(c.values(h)-c._valueMin())/(c._valueMax()-c._valueMin())*100;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";d(this).stop(1,1)[f?"animate":"css"](j,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(h===0)c.range.stop(1,1)[f?"animate":"css"]({left:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({width:e-
+g+"%"},{queue:false,duration:b.animate})}else{if(h===0)c.range.stop(1,1)[f?"animate":"css"]({bottom:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({height:e-g+"%"},{queue:false,duration:b.animate})}g=e});else{k=this.value();l=this._valueMin();i=this._valueMax();e=i!==l?(k-l)/(i-l)*100:0;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[f?"animate":"css"](j,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[f?"animate":"css"]({width:e+"%"},
+b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[f?"animate":"css"]({width:100-e+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[f?"animate":"css"]({height:e+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[f?"animate":"css"]({height:100-e+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.16"})})(jQuery);
+; \ No newline at end of file
diff --git a/frontend/js/jquery-ui.min.js b/frontend/js/jquery-ui.min.js
new file mode 120000
index 0000000..4d744ec
--- /dev/null
+++ b/frontend/js/jquery-ui.min.js
@@ -0,0 +1 @@
+../imbreak/js/jquery-ui.min.js \ No newline at end of file
diff --git a/frontend/js/jquery.cookie.js b/frontend/js/jquery.cookie.js
new file mode 120000
index 0000000..63f5c56
--- /dev/null
+++ b/frontend/js/jquery.cookie.js
@@ -0,0 +1 @@
+../imbreak/js/jquery.cookie.js \ No newline at end of file
diff --git a/frontend/js/jquery.isotope.min.js b/frontend/js/jquery.isotope.min.js
new file mode 100644
index 0000000..ea4afad
--- /dev/null
+++ b/frontend/js/jquery.isotope.min.js
@@ -0,0 +1,13 @@
+/**
+ * Isotope v1.5.25
+ * An exquisite jQuery plugin for magical layouts
+ * http://isotope.metafizzy.co
+ *
+ * Commercial use requires one-time purchase of a commercial license
+ * http://isotope.metafizzy.co/docs/license.html
+ *
+ * Non-commercial use is licensed under the MIT License
+ *
+ * Copyright 2013 Metafizzy
+ */
+(function(a,b,c){"use strict";var d=a.document,e=a.Modernizr,f=function(a){return a.charAt(0).toUpperCase()+a.slice(1)},g="Moz Webkit O Ms".split(" "),h=function(a){var b=d.documentElement.style,c;if(typeof b[a]=="string")return a;a=f(a);for(var e=0,h=g.length;e<h;e++){c=g[e]+a;if(typeof b[c]=="string")return c}},i=h("transform"),j=h("transitionProperty"),k={csstransforms:function(){return!!i},csstransforms3d:function(){var a=!!h("perspective");if(a){var c=" -o- -moz- -ms- -webkit- -khtml- ".split(" "),d="@media ("+c.join("transform-3d),(")+"modernizr)",e=b("<style>"+d+"{#modernizr{height:3px}}"+"</style>").appendTo("head"),f=b('<div id="modernizr" />').appendTo("html");a=f.height()===3,f.remove(),e.remove()}return a},csstransitions:function(){return!!j}},l;if(e)for(l in k)e.hasOwnProperty(l)||e.addTest(l,k[l]);else{e=a.Modernizr={_version:"1.6ish: miniModernizr for Isotope"};var m=" ",n;for(l in k)n=k[l](),e[l]=n,m+=" "+(n?"":"no-")+l;b("html").addClass(m)}if(e.csstransforms){var o=e.csstransforms3d?{translate:function(a){return"translate3d("+a[0]+"px, "+a[1]+"px, 0) "},scale:function(a){return"scale3d("+a+", "+a+", 1) "}}:{translate:function(a){return"translate("+a[0]+"px, "+a[1]+"px) "},scale:function(a){return"scale("+a+") "}},p=function(a,c,d){var e=b.data(a,"isoTransform")||{},f={},g,h={},j;f[c]=d,b.extend(e,f);for(g in e)j=e[g],h[g]=o[g](j);var k=h.translate||"",l=h.scale||"",m=k+l;b.data(a,"isoTransform",e),a.style[i]=m};b.cssNumber.scale=!0,b.cssHooks.scale={set:function(a,b){p(a,"scale",b)},get:function(a,c){var d=b.data(a,"isoTransform");return d&&d.scale?d.scale:1}},b.fx.step.scale=function(a){b.cssHooks.scale.set(a.elem,a.now+a.unit)},b.cssNumber.translate=!0,b.cssHooks.translate={set:function(a,b){p(a,"translate",b)},get:function(a,c){var d=b.data(a,"isoTransform");return d&&d.translate?d.translate:[0,0]}}}var q,r;e.csstransitions&&(q={WebkitTransitionProperty:"webkitTransitionEnd",MozTransitionProperty:"transitionend",OTransitionProperty:"oTransitionEnd otransitionend",transitionProperty:"transitionend"}[j],r=h("transitionDuration"));var s=b.event,t=b.event.handle?"handle":"dispatch",u;s.special.smartresize={setup:function(){b(this).bind("resize",s.special.smartresize.handler)},teardown:function(){b(this).unbind("resize",s.special.smartresize.handler)},handler:function(a,b){var c=this,d=arguments;a.type="smartresize",u&&clearTimeout(u),u=setTimeout(function(){s[t].apply(c,d)},b==="execAsap"?0:100)}},b.fn.smartresize=function(a){return a?this.bind("smartresize",a):this.trigger("smartresize",["execAsap"])},b.Isotope=function(a,c,d){this.element=b(c),this._create(a),this._init(d)};var v=["width","height"],w=b(a);b.Isotope.settings={resizable:!0,layoutMode:"masonry",containerClass:"isotope",itemClass:"isotope-item",hiddenClass:"isotope-hidden",hiddenStyle:{opacity:0,scale:.001},visibleStyle:{opacity:1,scale:1},containerStyle:{position:"relative",overflow:"hidden"},animationEngine:"best-available",animationOptions:{queue:!1,duration:800},sortBy:"original-order",sortAscending:!0,resizesContainer:!0,transformsEnabled:!0,itemPositionDataEnabled:!1},b.Isotope.prototype={_create:function(a){this.options=b.extend({},b.Isotope.settings,a),this.styleQueue=[],this.elemCount=0;var c=this.element[0].style;this.originalStyle={};var d=v.slice(0);for(var e in this.options.containerStyle)d.push(e);for(var f=0,g=d.length;f<g;f++)e=d[f],this.originalStyle[e]=c[e]||"";this.element.css(this.options.containerStyle),this._updateAnimationEngine(),this._updateUsingTransforms();var h={"original-order":function(a,b){return b.elemCount++,b.elemCount},random:function(){return Math.random()}};this.options.getSortData=b.extend(this.options.getSortData,h),this.reloadItems(),this.offset={left:parseInt(this.element.css("padding-left")||0,10),top:parseInt(this.element.css("padding-top")||0,10)};var i=this;setTimeout(function(){i.element.addClass(i.options.containerClass)},0),this.options.resizable&&w.bind("smartresize.isotope",function(){i.resize()}),this.element.delegate("."+this.options.hiddenClass,"click",function(){return!1})},_getAtoms:function(a){var b=this.options.itemSelector,c=b?a.filter(b).add(a.find(b)):a,d={position:"absolute"};return c=c.filter(function(a,b){return b.nodeType===1}),this.usingTransforms&&(d.left=0,d.top=0),c.css(d).addClass(this.options.itemClass),this.updateSortData(c,!0),c},_init:function(a){this.$filteredAtoms=this._filter(this.$allAtoms),this._sort(),this.reLayout(a)},option:function(a){if(b.isPlainObject(a)){this.options=b.extend(!0,this.options,a);var c;for(var d in a)c="_update"+f(d),this[c]&&this[c]()}},_updateAnimationEngine:function(){var a=this.options.animationEngine.toLowerCase().replace(/[ _\-]/g,""),b;switch(a){case"css":case"none":b=!1;break;case"jquery":b=!0;break;default:b=!e.csstransitions}this.isUsingJQueryAnimation=b,this._updateUsingTransforms()},_updateTransformsEnabled:function(){this._updateUsingTransforms()},_updateUsingTransforms:function(){var a=this.usingTransforms=this.options.transformsEnabled&&e.csstransforms&&e.csstransitions&&!this.isUsingJQueryAnimation;a||(delete this.options.hiddenStyle.scale,delete this.options.visibleStyle.scale),this.getPositionStyles=a?this._translate:this._positionAbs},_filter:function(a){var b=this.options.filter===""?"*":this.options.filter;if(!b)return a;var c=this.options.hiddenClass,d="."+c,e=a.filter(d),f=e;if(b!=="*"){f=e.filter(b);var g=a.not(d).not(b).addClass(c);this.styleQueue.push({$el:g,style:this.options.hiddenStyle})}return this.styleQueue.push({$el:f,style:this.options.visibleStyle}),f.removeClass(c),a.filter(b)},updateSortData:function(a,c){var d=this,e=this.options.getSortData,f,g;a.each(function(){f=b(this),g={};for(var a in e)!c&&a==="original-order"?g[a]=b.data(this,"isotope-sort-data")[a]:g[a]=e[a](f,d);b.data(this,"isotope-sort-data",g)})},_sort:function(){var a=this.options.sortBy,b=this._getSorter,c=this.options.sortAscending?1:-1,d=function(d,e){var f=b(d,a),g=b(e,a);return f===g&&a!=="original-order"&&(f=b(d,"original-order"),g=b(e,"original-order")),(f>g?1:f<g?-1:0)*c};this.$filteredAtoms.sort(d)},_getSorter:function(a,c){return b.data(a,"isotope-sort-data")[c]},_translate:function(a,b){return{translate:[a,b]}},_positionAbs:function(a,b){return{left:a,top:b}},_pushPosition:function(a,b,c){b=Math.round(b+this.offset.left),c=Math.round(c+this.offset.top);var d=this.getPositionStyles(b,c);this.styleQueue.push({$el:a,style:d}),this.options.itemPositionDataEnabled&&a.data("isotope-item-position",{x:b,y:c})},layout:function(a,b){var c=this.options.layoutMode;this["_"+c+"Layout"](a);if(this.options.resizesContainer){var d=this["_"+c+"GetContainerSize"]();this.styleQueue.push({$el:this.element,style:d})}this._processStyleQueue(a,b),this.isLaidOut=!0},_processStyleQueue:function(a,c){var d=this.isLaidOut?this.isUsingJQueryAnimation?"animate":"css":"css",f=this.options.animationOptions,g=this.options.onLayout,h,i,j,k;i=function(a,b){b.$el[d](b.style,f)};if(this._isInserting&&this.isUsingJQueryAnimation)i=function(a,b){h=b.$el.hasClass("no-transition")?"css":d,b.$el[h](b.style,f)};else if(c||g||f.complete){var l=!1,m=[c,g,f.complete],n=this;j=!0,k=function(){if(l)return;var b;for(var c=0,d=m.length;c<d;c++)b=m[c],typeof b=="function"&&b.call(n.element,a,n);l=!0};if(this.isUsingJQueryAnimation&&d==="animate")f.complete=k,j=!1;else if(e.csstransitions){var o=0,p=this.styleQueue[0],s=p&&p.$el,t;while(!s||!s.length){t=this.styleQueue[o++];if(!t)return;s=t.$el}var u=parseFloat(getComputedStyle(s[0])[r]);u>0&&(i=function(a,b){b.$el[d](b.style,f).one(q,k)},j=!1)}}b.each(this.styleQueue,i),j&&k(),this.styleQueue=[]},resize:function(){this["_"+this.options.layoutMode+"ResizeChanged"]()&&this.reLayout()},reLayout:function(a){this["_"+this.options.layoutMode+"Reset"](),this.layout(this.$filteredAtoms,a)},addItems:function(a,b){var c=this._getAtoms(a);this.$allAtoms=this.$allAtoms.add(c),b&&b(c)},insert:function(a,b){this.element.append(a);var c=this;this.addItems(a,function(a){var d=c._filter(a);c._addHideAppended(d),c._sort(),c.reLayout(),c._revealAppended(d,b)})},appended:function(a,b){var c=this;this.addItems(a,function(a){c._addHideAppended(a),c.layout(a),c._revealAppended(a,b)})},_addHideAppended:function(a){this.$filteredAtoms=this.$filteredAtoms.add(a),a.addClass("no-transition"),this._isInserting=!0,this.styleQueue.push({$el:a,style:this.options.hiddenStyle})},_revealAppended:function(a,b){var c=this;setTimeout(function(){a.removeClass("no-transition"),c.styleQueue.push({$el:a,style:c.options.visibleStyle}),c._isInserting=!1,c._processStyleQueue(a,b)},10)},reloadItems:function(){this.$allAtoms=this._getAtoms(this.element.children())},remove:function(a,b){this.$allAtoms=this.$allAtoms.not(a),this.$filteredAtoms=this.$filteredAtoms.not(a);var c=this,d=function(){a.remove(),b&&b.call(c.element)};a.filter(":not(."+this.options.hiddenClass+")").length?(this.styleQueue.push({$el:a,style:this.options.hiddenStyle}),this._sort(),this.reLayout(d)):d()},shuffle:function(a){this.updateSortData(this.$allAtoms),this.options.sortBy="random",this._sort(),this.reLayout(a)},destroy:function(){var a=this.usingTransforms,b=this.options;this.$allAtoms.removeClass(b.hiddenClass+" "+b.itemClass).each(function(){var b=this.style;b.position="",b.top="",b.left="",b.opacity="",a&&(b[i]="")});var c=this.element[0].style;for(var d in this.originalStyle)c[d]=this.originalStyle[d];this.element.unbind(".isotope").undelegate("."+b.hiddenClass,"click").removeClass(b.containerClass).removeData("isotope"),w.unbind(".isotope")},_getSegments:function(a){var b=this.options.layoutMode,c=a?"rowHeight":"columnWidth",d=a?"height":"width",e=a?"rows":"cols",g=this.element[d](),h,i=this.options[b]&&this.options[b][c]||this.$filteredAtoms["outer"+f(d)](!0)||g;h=Math.floor(g/i),h=Math.max(h,1),this[b][e]=h,this[b][c]=i},_checkIfSegmentsChanged:function(a){var b=this.options.layoutMode,c=a?"rows":"cols",d=this[b][c];return this._getSegments(a),this[b][c]!==d},_masonryReset:function(){this.masonry={},this._getSegments();var a=this.masonry.cols;this.masonry.colYs=[];while(a--)this.masonry.colYs.push(0)},_masonryLayout:function(a){var c=this,d=c.masonry;a.each(function(){var a=b(this),e=Math.ceil(a.outerWidth(!0)/d.columnWidth);e=Math.min(e,d.cols);if(e===1)c._masonryPlaceBrick(a,d.colYs);else{var f=d.cols+1-e,g=[],h,i;for(i=0;i<f;i++)h=d.colYs.slice(i,i+e),g[i]=Math.max.apply(Math,h);c._masonryPlaceBrick(a,g)}})},_masonryPlaceBrick:function(a,b){var c=Math.min.apply(Math,b),d=0;for(var e=0,f=b.length;e<f;e++)if(b[e]===c){d=e;break}var g=this.masonry.columnWidth*d,h=c;this._pushPosition(a,g,h);var i=c+a.outerHeight(!0),j=this.masonry.cols+1-f;for(e=0;e<j;e++)this.masonry.colYs[d+e]=i},_masonryGetContainerSize:function(){var a=Math.max.apply(Math,this.masonry.colYs);return{height:a}},_masonryResizeChanged:function(){return this._checkIfSegmentsChanged()},_fitRowsReset:function(){this.fitRows={x:0,y:0,height:0}},_fitRowsLayout:function(a){var c=this,d=this.element.width(),e=this.fitRows;a.each(function(){var a=b(this),f=a.outerWidth(!0),g=a.outerHeight(!0);e.x!==0&&f+e.x>d&&(e.x=0,e.y=e.height),c._pushPosition(a,e.x,e.y),e.height=Math.max(e.y+g,e.height),e.x+=f})},_fitRowsGetContainerSize:function(){return{height:this.fitRows.height}},_fitRowsResizeChanged:function(){return!0},_cellsByRowReset:function(){this.cellsByRow={index:0},this._getSegments(),this._getSegments(!0)},_cellsByRowLayout:function(a){var c=this,d=this.cellsByRow;a.each(function(){var a=b(this),e=d.index%d.cols,f=Math.floor(d.index/d.cols),g=(e+.5)*d.columnWidth-a.outerWidth(!0)/2,h=(f+.5)*d.rowHeight-a.outerHeight(!0)/2;c._pushPosition(a,g,h),d.index++})},_cellsByRowGetContainerSize:function(){return{height:Math.ceil(this.$filteredAtoms.length/this.cellsByRow.cols)*this.cellsByRow.rowHeight+this.offset.top}},_cellsByRowResizeChanged:function(){return this._checkIfSegmentsChanged()},_straightDownReset:function(){this.straightDown={y:0}},_straightDownLayout:function(a){var c=this;a.each(function(a){var d=b(this);c._pushPosition(d,0,c.straightDown.y),c.straightDown.y+=d.outerHeight(!0)})},_straightDownGetContainerSize:function(){return{height:this.straightDown.y}},_straightDownResizeChanged:function(){return!0},_masonryHorizontalReset:function(){this.masonryHorizontal={},this._getSegments(!0);var a=this.masonryHorizontal.rows;this.masonryHorizontal.rowXs=[];while(a--)this.masonryHorizontal.rowXs.push(0)},_masonryHorizontalLayout:function(a){var c=this,d=c.masonryHorizontal;a.each(function(){var a=b(this),e=Math.ceil(a.outerHeight(!0)/d.rowHeight);e=Math.min(e,d.rows);if(e===1)c._masonryHorizontalPlaceBrick(a,d.rowXs);else{var f=d.rows+1-e,g=[],h,i;for(i=0;i<f;i++)h=d.rowXs.slice(i,i+e),g[i]=Math.max.apply(Math,h);c._masonryHorizontalPlaceBrick(a,g)}})},_masonryHorizontalPlaceBrick:function(a,b){var c=Math.min.apply(Math,b),d=0;for(var e=0,f=b.length;e<f;e++)if(b[e]===c){d=e;break}var g=c,h=this.masonryHorizontal.rowHeight*d;this._pushPosition(a,g,h);var i=c+a.outerWidth(!0),j=this.masonryHorizontal.rows+1-f;for(e=0;e<j;e++)this.masonryHorizontal.rowXs[d+e]=i},_masonryHorizontalGetContainerSize:function(){var a=Math.max.apply(Math,this.masonryHorizontal.rowXs);return{width:a}},_masonryHorizontalResizeChanged:function(){return this._checkIfSegmentsChanged(!0)},_fitColumnsReset:function(){this.fitColumns={x:0,y:0,width:0}},_fitColumnsLayout:function(a){var c=this,d=this.element.height(),e=this.fitColumns;a.each(function(){var a=b(this),f=a.outerWidth(!0),g=a.outerHeight(!0);e.y!==0&&g+e.y>d&&(e.x=e.width,e.y=0),c._pushPosition(a,e.x,e.y),e.width=Math.max(e.x+f,e.width),e.y+=g})},_fitColumnsGetContainerSize:function(){return{width:this.fitColumns.width}},_fitColumnsResizeChanged:function(){return!0},_cellsByColumnReset:function(){this.cellsByColumn={index:0},this._getSegments(),this._getSegments(!0)},_cellsByColumnLayout:function(a){var c=this,d=this.cellsByColumn;a.each(function(){var a=b(this),e=Math.floor(d.index/d.rows),f=d.index%d.rows,g=(e+.5)*d.columnWidth-a.outerWidth(!0)/2,h=(f+.5)*d.rowHeight-a.outerHeight(!0)/2;c._pushPosition(a,g,h),d.index++})},_cellsByColumnGetContainerSize:function(){return{width:Math.ceil(this.$filteredAtoms.length/this.cellsByColumn.rows)*this.cellsByColumn.columnWidth}},_cellsByColumnResizeChanged:function(){return this._checkIfSegmentsChanged(!0)},_straightAcrossReset:function(){this.straightAcross={x:0}},_straightAcrossLayout:function(a){var c=this;a.each(function(a){var d=b(this);c._pushPosition(d,c.straightAcross.x,0),c.straightAcross.x+=d.outerWidth(!0)})},_straightAcrossGetContainerSize:function(){return{width:this.straightAcross.x}},_straightAcrossResizeChanged:function(){return!0}},b.fn.imagesLoaded=function(a){function h(){a.call(c,d)}function i(a){var c=a.target;c.src!==f&&b.inArray(c,g)===-1&&(g.push(c),--e<=0&&(setTimeout(h),d.unbind(".imagesLoaded",i)))}var c=this,d=c.find("img").add(c.filter("img")),e=d.length,f="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==",g=[];return e||h(),d.bind("load.imagesLoaded error.imagesLoaded",i).each(function(){var a=this.src;this.src=f,this.src=a}),c};var x=function(b){a.console&&a.console.error(b)};b.fn.isotope=function(a,c){if(typeof a=="string"){var d=Array.prototype.slice.call(arguments,1);this.each(function(){var c=b.data(this,"isotope");if(!c){x("cannot call methods on isotope prior to initialization; attempted to call method '"+a+"'");return}if(!b.isFunction(c[a])||a.charAt(0)==="_"){x("no such method '"+a+"' for isotope instance");return}c[a].apply(c,d)})}else this.each(function(){var d=b.data(this,"isotope");d?(d.option(a),d._init(c)):b.data(this,"isotope",new b.Isotope(a,this,c))});return this}})(window,jQuery); \ No newline at end of file
diff --git a/frontend/js/jquery.js b/frontend/js/jquery.js
new file mode 100644
index 0000000..16ad06c
--- /dev/null
+++ b/frontend/js/jquery.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.7.2 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"<!doctype html>":"")+"<html><body>"),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function ca(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function b_(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bD.test(a)?d(a,e):b_(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&f.type(b)==="object")for(var e in b)b_(a+"["+e+"]",b[e],c,d);else d(a,b)}function b$(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bZ(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bS,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bZ(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bZ(a,c,d,e,"*",g));return l}function bY(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bO),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bB(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?1:0,g=4;if(d>0){if(c!=="border")for(;e<g;e+=2)c||(d-=parseFloat(f.css(a,"padding"+bx[e]))||0),c==="margin"?d+=parseFloat(f.css(a,c+bx[e]))||0:d-=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0;return d+"px"}d=by(a,b);if(d<0||d==null)d=a.style[b];if(bt.test(d))return d;d=parseFloat(d)||0;if(c)for(;e<g;e+=2)d+=parseFloat(f.css(a,"padding"+bx[e]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+bx[e]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+bx[e]))||0);return d+"px"}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;b.nodeType===1&&(b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?b.outerHTML=a.outerHTML:c!=="input"||a.type!=="checkbox"&&a.type!=="radio"?c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text):(a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value)),b.removeAttribute(f.expando),b.removeAttribute("_submit_attached"),b.removeAttribute("_change_attached"))}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c,i[c][d])}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h,i){var j,k=d==null,l=0,m=a.length;if(d&&typeof d=="object"){for(l in d)e.access(a,c,l,d[l],1,h,f);g=1}else if(f!==b){j=i===b&&e.isFunction(f),k&&(j?(j=c,c=function(a,b,c){return j.call(e(a),c)}):(c.call(a,f),c=null));if(c)for(;l<m;l++)c(a[l],d,j?f.call(a[l],l,c(a[l],d)):f,i);g=1}return g?a:k?c.call(a):m?c(a[0],d):h},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m,n=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?n(g):h==="function"&&(!a.unique||!p.has(g))&&c.push(g)},o=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,j=!0,m=k||0,k=0,l=c.length;for(;c&&m<l;m++)if(c[m].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}j=!1,c&&(a.once?e===!0?p.disable():c=[]:d&&d.length&&(e=d.shift(),p.fireWith(e[0],e[1])))},p={add:function(){if(c){var a=c.length;n(arguments),j?l=c.length:e&&e!==!0&&(k=a,o(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){j&&f<=l&&(l--,f<=m&&m--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&p.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(j?a.once||d.push([b,c]):(!a.once||!e)&&o(b,c));return this},fire:function(){p.fireWith(this,arguments);return this},fired:function(){return!!i}};return p};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p=c.createElement("div"),q=c.documentElement;p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="<div "+n+"display:block;'><div style='"+t+"0;display:block;overflow:hidden;'></div></div>"+"<table "+n+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="<table><tr><td style='"+t+"0;display:none'></td><td>t</td></tr></table>",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h,i,j=this[0],k=0,m=null;if(a===b){if(this.length){m=f.data(j);if(j.nodeType===1&&!f._data(j,"parsedAttrs")){g=j.attributes;for(i=g.length;k<i;k++)h=g[k].name,h.indexOf("data-")===0&&(h=f.camelCase(h.substring(5)),l(j,h,m[h]));f._data(j,"parsedAttrs",!0)}}return m}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!";return f.access(this,function(c){if(c===b){m=this.triggerHandler("getData"+e,[d[0]]),m===b&&j&&(m=f.data(j,a),m=l(j,a,m));return m===b&&d[1]?this.data(d[0]):m}d[1]=c,this.each(function(){var b=f(this);b.triggerHandler("setData"+e,d),f.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length<d)return f.queue(this[0],a);return c===b?this:this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise(c)}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,f.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i<g;i++)e=d[i],e&&(c=f.propFix[e]||e,h=u.test(e),h||f.attr(a,e,""),a.removeAttribute(v?e:c),h&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0,coords:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(
+a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:g&&G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=f.event.special[c.type]||{},j=[],k,l,m,n,o,p,q,r,s,t,u;g[0]=c,c.delegateTarget=this;if(!i.preDispatch||i.preDispatch.call(this,c)!==!1){if(e&&(!c.button||c.type!=="click")){n=f(this),n.context=this.ownerDocument||this;for(m=c.target;m!=this;m=m.parentNode||this)if(m.disabled!==!0){p={},r=[],n[0]=m;for(k=0;k<e;k++)s=d[k],t=s.selector,p[t]===b&&(p[t]=s.quick?H(m,s.quick):n.is(t)),p[t]&&r.push(s);r.length&&j.push({elem:m,matches:r})}}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k<j.length&&!c.isPropagationStopped();k++){q=j[k],c.currentTarget=q.elem;for(l=0;l<q.matches.length&&!c.isImmediatePropagationStopped();l++){s=q.matches[l];if(h||!c.namespace&&!s.namespace||c.namespace_re&&c.namespace_re.test(s.namespace))c.data=s.data,c.handleObj=s,o=((f.event.special[s.origType]||{}).handle||s.handler).apply(q.elem,g),o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()))}}i.postDispatch&&i.postDispatch.call(this,c);return c.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),d._submit_attached=!0)})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9||d===11){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.globalPOS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")[\\s/>]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f
+.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(f.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(g){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,function(a,b){b.src?f.ajax({type:"GET",global:!1,url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1></$2>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]==="<table>"&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i<u;i++)bn(l[i]);else bn(l);l.nodeType?j.push(l):j=f.merge(j,l)}if(d){g=function(a){return!a.type||be.test(a.type)};for(k=0;j[k];k++){h=j[k];if(e&&f.nodeName(h,"script")&&(!h.type||be.test(h.type)))e.push(h.parentNode?h.parentNode.removeChild(h):h);else{if(h.nodeType===1){var v=f.grep(h.getElementsByTagName("script"),g);j.splice.apply(j,[k+1,0].concat(v))}d.appendChild(h)}}}return j},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bp=/alpha\([^)]*\)/i,bq=/opacity=([^)]*)/,br=/([A-Z]|^ms)/g,bs=/^[\-+]?(?:\d*\.)?\d+$/i,bt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,bu=/^([\-+])=([\-+.\de]+)/,bv=/^margin/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Top","Right","Bottom","Left"],by,bz,bA;f.fn.css=function(a,c){return f.access(this,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)},a,c,arguments.length>1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),(e===""&&f.css(d,"display")==="none"||!f.contains(d.ownerDocument.documentElement,d))&&f._data(d,"olddisplay",cu(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ct("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(ct("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o,p,q;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]);if((k=f.cssHooks[g])&&"expand"in k){l=k.expand(a[g]),delete a[g];for(i in l)i in a||(a[i]=l[i])}}for(g in a){h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cu(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cm.test(h)?(q=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),q?(f._data(this,"toggle"+i,q==="show"?"hide":"show"),j[q]()):j[h]()):(m=cn.exec(h),n=j.cur(),m?(o=parseFloat(m[2]),p=m[3]||(f.cssNumber[i]?"":"px"),p!=="px"&&(f.style(this,i,(o||1)+p),n=(o||1)/j.cur()*n,f.style(this,i,n+p)),m[1]&&(o=(m[1]==="-="?-1:1)*o+n),j.custom(n,o,p)):j.custom(n,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:ct("show",1),slideUp:ct("hide",1),slideToggle:ct("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a){return a},swing:function(a){return-Math.cos(a*Math.PI)/2+.5}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cq||cr(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){f._data(e.elem,"fxshow"+e.prop)===b&&(e.options.hide?f._data(e.elem,"fxshow"+e.prop,e.start):e.options.show&&f._data(e.elem,"fxshow"+e.prop,e.end))},h()&&f.timers.push(h)&&!co&&(co=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cq||cr(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(co),co=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(cp.concat.apply([],cp),function(a,b){b.indexOf("margin")&&(f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)})}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cv,cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?cv=function(a,b,c,d){try{d=a.getBoundingClientRect()}catch(e){}if(!d||!f.contains(c,a))return d?{top:d.top,left:d.left}:{top:0,left:0};var g=b.body,h=cy(b),i=c.clientTop||g.clientTop||0,j=c.clientLeft||g.clientLeft||0,k=h.pageYOffset||f.support.boxModel&&c.scrollTop||g.scrollTop,l=h.pageXOffset||f.support.boxModel&&c.scrollLeft||g.scrollLeft,m=d.top+k-i,n=d.left+l-j;return{top:m,left:n}}:cv=function(a,b,c){var d,e=a.offsetParent,g=a,h=b.body,i=b.defaultView,j=i?i.getComputedStyle(a,null):a.currentStyle,k=a.offsetTop,l=a.offsetLeft;while((a=a.parentNode)&&a!==h&&a!==c){if(f.support.fixedPosition&&j.position==="fixed")break;d=i?i.getComputedStyle(a,null):a.currentStyle,k-=a.scrollTop,l-=a.scrollLeft,a===e&&(k+=a.offsetTop,l+=a.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(a.nodeName))&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),g=e,e=a.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"&&(k+=parseFloat(d.borderTopWidth)||0,l+=parseFloat(d.borderLeftWidth)||0),j=d}if(j.position==="relative"||j.position==="static")k+=h.offsetTop,l+=h.offsetLeft;f.support.fixedPosition&&j.position==="fixed"&&(k+=Math.max(c.scrollTop,h.scrollTop),l+=Math.max(c.scrollLeft,h.scrollLeft));return{top:k,left:l}},f.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){f.offset.setOffset(this,a,b)});var c=this[0],d=c&&c.ownerDocument;if(!d)return null;if(c===d.body)return f.offset.bodyOffset(c);return cv(c,d,d.documentElement)},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file
diff --git a/frontend/js/jquery.md5.js b/frontend/js/jquery.md5.js
new file mode 100644
index 0000000..0333717
--- /dev/null
+++ b/frontend/js/jquery.md5.js
@@ -0,0 +1,230 @@
+
+ /**
+ * jQuery MD5 hash algorithm function
+ *
+ * <code>
+ * Calculate the md5 hash of a String
+ * String $.md5 ( String str )
+ * </code>
+ *
+ * Calculates the MD5 hash of str using the » RSA Data Security, Inc. MD5 Message-Digest Algorithm, and returns that hash.
+ * MD5 (Message-Digest algorithm 5) is a widely-used cryptographic hash function with a 128-bit hash value. MD5 has been employed in a wide variety of security applications, and is also commonly used to check the integrity of data. The generated hash is also non-reversable. Data cannot be retrieved from the message digest, the digest uniquely identifies the data.
+ * MD5 was developed by Professor Ronald L. Rivest in 1994. Its 128 bit (16 byte) message digest makes it a faster implementation than SHA-1.
+ * This script is used to process a variable length message into a fixed-length output of 128 bits using the MD5 algorithm. It is fully compatible with UTF-8 encoding. It is very useful when u want to transfer encrypted passwords over the internet. If you plan using UTF-8 encoding in your project don't forget to set the page encoding to UTF-8 (Content-Type meta tag).
+ * This function orginally get from the WebToolkit and rewrite for using as the jQuery plugin.
+ *
+ * Example
+ * Code
+ * <code>
+ * $.md5("I'm Persian.");
+ * </code>
+ * Result
+ * <code>
+ * "b8c901d0f02223f9761016cfff9d68df"
+ * </code>
+ *
+ * @alias Muhammad Hussein Fattahizadeh < muhammad [AT] semnanweb [DOT] com >
+ * @link http://www.semnanweb.com/jquery-plugin/md5.html
+ * @see http://www.webtoolkit.info/
+ * @license http://www.gnu.org/licenses/gpl.html [GNU General Public License]
+ * @param {jQuery} {md5:function(string))
+ * @return string
+ */
+
+ (function($){
+
+ var rotateLeft = function(lValue, iShiftBits) {
+ return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
+ }
+
+ var addUnsigned = function(lX, lY) {
+ var lX4, lY4, lX8, lY8, lResult;
+ lX8 = (lX & 0x80000000);
+ lY8 = (lY & 0x80000000);
+ lX4 = (lX & 0x40000000);
+ lY4 = (lY & 0x40000000);
+ lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
+ if (lX4 & lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
+ if (lX4 | lY4) {
+ if (lResult & 0x40000000) return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
+ else return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
+ } else {
+ return (lResult ^ lX8 ^ lY8);
+ }
+ }
+
+ var F = function(x, y, z) {
+ return (x & y) | ((~ x) & z);
+ }
+
+ var G = function(x, y, z) {
+ return (x & z) | (y & (~ z));
+ }
+
+ var H = function(x, y, z) {
+ return (x ^ y ^ z);
+ }
+
+ var I = function(x, y, z) {
+ return (y ^ (x | (~ z)));
+ }
+
+ var FF = function(a, b, c, d, x, s, ac) {
+ a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));
+ return addUnsigned(rotateLeft(a, s), b);
+ };
+
+ var GG = function(a, b, c, d, x, s, ac) {
+ a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));
+ return addUnsigned(rotateLeft(a, s), b);
+ };
+
+ var HH = function(a, b, c, d, x, s, ac) {
+ a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));
+ return addUnsigned(rotateLeft(a, s), b);
+ };
+
+ var II = function(a, b, c, d, x, s, ac) {
+ a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));
+ return addUnsigned(rotateLeft(a, s), b);
+ };
+
+ var convertToWordArray = function(string) {
+ var lWordCount;
+ var lMessageLength = string.length;
+ var lNumberOfWordsTempOne = lMessageLength + 8;
+ var lNumberOfWordsTempTwo = (lNumberOfWordsTempOne - (lNumberOfWordsTempOne % 64)) / 64;
+ var lNumberOfWords = (lNumberOfWordsTempTwo + 1) * 16;
+ var lWordArray = Array(lNumberOfWords - 1);
+ var lBytePosition = 0;
+ var lByteCount = 0;
+ while (lByteCount < lMessageLength) {
+ lWordCount = (lByteCount - (lByteCount % 4)) / 4;
+ lBytePosition = (lByteCount % 4) * 8;
+ lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
+ lByteCount++;
+ }
+ lWordCount = (lByteCount - (lByteCount % 4)) / 4;
+ lBytePosition = (lByteCount % 4) * 8;
+ lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
+ lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
+ lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
+ return lWordArray;
+ };
+
+ var wordToHex = function(lValue) {
+ var WordToHexValue = "", WordToHexValueTemp = "", lByte, lCount;
+ for (lCount = 0; lCount <= 3; lCount++) {
+ lByte = (lValue >>> (lCount * 8)) & 255;
+ WordToHexValueTemp = "0" + lByte.toString(16);
+ WordToHexValue = WordToHexValue + WordToHexValueTemp.substr(WordToHexValueTemp.length - 2, 2);
+ }
+ return WordToHexValue;
+ };
+
+ var uTF8Encode = function(string) {
+ string = string.replace(/\x0d\x0a/g, "\x0a");
+ var output = "";
+ for (var n = 0; n < string.length; n++) {
+ var c = string.charCodeAt(n);
+ if (c < 128) {
+ output += String.fromCharCode(c);
+ } else if ((c > 127) && (c < 2048)) {
+ output += String.fromCharCode((c >> 6) | 192);
+ output += String.fromCharCode((c & 63) | 128);
+ } else {
+ output += String.fromCharCode((c >> 12) | 224);
+ output += String.fromCharCode(((c >> 6) & 63) | 128);
+ output += String.fromCharCode((c & 63) | 128);
+ }
+ }
+ return output;
+ };
+
+ $.extend({
+ md5: function(string) {
+ var x = Array();
+ var k, AA, BB, CC, DD, a, b, c, d;
+ var S11=7, S12=12, S13=17, S14=22;
+ var S21=5, S22=9 , S23=14, S24=20;
+ var S31=4, S32=11, S33=16, S34=23;
+ var S41=6, S42=10, S43=15, S44=21;
+ string = uTF8Encode(string);
+ x = convertToWordArray(string);
+ a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
+ for (k = 0; k < x.length; k += 16) {
+ AA = a; BB = b; CC = c; DD = d;
+ a = FF(a, b, c, d, x[k+0], S11, 0xD76AA478);
+ d = FF(d, a, b, c, x[k+1], S12, 0xE8C7B756);
+ c = FF(c, d, a, b, x[k+2], S13, 0x242070DB);
+ b = FF(b, c, d, a, x[k+3], S14, 0xC1BDCEEE);
+ a = FF(a, b, c, d, x[k+4], S11, 0xF57C0FAF);
+ d = FF(d, a, b, c, x[k+5], S12, 0x4787C62A);
+ c = FF(c, d, a, b, x[k+6], S13, 0xA8304613);
+ b = FF(b, c, d, a, x[k+7], S14, 0xFD469501);
+ a = FF(a, b, c, d, x[k+8], S11, 0x698098D8);
+ d = FF(d, a, b, c, x[k+9], S12, 0x8B44F7AF);
+ c = FF(c, d, a, b, x[k+10], S13, 0xFFFF5BB1);
+ b = FF(b, c, d, a, x[k+11], S14, 0x895CD7BE);
+ a = FF(a, b, c, d, x[k+12], S11, 0x6B901122);
+ d = FF(d, a, b, c, x[k+13], S12, 0xFD987193);
+ c = FF(c, d, a, b, x[k+14], S13, 0xA679438E);
+ b = FF(b, c, d, a, x[k+15], S14, 0x49B40821);
+ a = GG(a, b, c, d, x[k+1], S21, 0xF61E2562);
+ d = GG(d, a, b, c, x[k+6], S22, 0xC040B340);
+ c = GG(c, d, a, b, x[k+11], S23, 0x265E5A51);
+ b = GG(b, c, d, a, x[k+0], S24, 0xE9B6C7AA);
+ a = GG(a, b, c, d, x[k+5], S21, 0xD62F105D);
+ d = GG(d, a, b, c, x[k+10], S22, 0x2441453);
+ c = GG(c, d, a, b, x[k+15], S23, 0xD8A1E681);
+ b = GG(b, c, d, a, x[k+4], S24, 0xE7D3FBC8);
+ a = GG(a, b, c, d, x[k+9], S21, 0x21E1CDE6);
+ d = GG(d, a, b, c, x[k+14], S22, 0xC33707D6);
+ c = GG(c, d, a, b, x[k+3], S23, 0xF4D50D87);
+ b = GG(b, c, d, a, x[k+8], S24, 0x455A14ED);
+ a = GG(a, b, c, d, x[k+13], S21, 0xA9E3E905);
+ d = GG(d, a, b, c, x[k+2], S22, 0xFCEFA3F8);
+ c = GG(c, d, a, b, x[k+7], S23, 0x676F02D9);
+ b = GG(b, c, d, a, x[k+12], S24, 0x8D2A4C8A);
+ a = HH(a, b, c, d, x[k+5], S31, 0xFFFA3942);
+ d = HH(d, a, b, c, x[k+8], S32, 0x8771F681);
+ c = HH(c, d, a, b, x[k+11], S33, 0x6D9D6122);
+ b = HH(b, c, d, a, x[k+14], S34, 0xFDE5380C);
+ a = HH(a, b, c, d, x[k+1], S31, 0xA4BEEA44);
+ d = HH(d, a, b, c, x[k+4], S32, 0x4BDECFA9);
+ c = HH(c, d, a, b, x[k+7], S33, 0xF6BB4B60);
+ b = HH(b, c, d, a, x[k+10], S34, 0xBEBFBC70);
+ a = HH(a, b, c, d, x[k+13], S31, 0x289B7EC6);
+ d = HH(d, a, b, c, x[k+0], S32, 0xEAA127FA);
+ c = HH(c, d, a, b, x[k+3], S33, 0xD4EF3085);
+ b = HH(b, c, d, a, x[k+6], S34, 0x4881D05);
+ a = HH(a, b, c, d, x[k+9], S31, 0xD9D4D039);
+ d = HH(d, a, b, c, x[k+12], S32, 0xE6DB99E5);
+ c = HH(c, d, a, b, x[k+15], S33, 0x1FA27CF8);
+ b = HH(b, c, d, a, x[k+2], S34, 0xC4AC5665);
+ a = II(a, b, c, d, x[k+0], S41, 0xF4292244);
+ d = II(d, a, b, c, x[k+7], S42, 0x432AFF97);
+ c = II(c, d, a, b, x[k+14], S43, 0xAB9423A7);
+ b = II(b, c, d, a, x[k+5], S44, 0xFC93A039);
+ a = II(a, b, c, d, x[k+12], S41, 0x655B59C3);
+ d = II(d, a, b, c, x[k+3], S42, 0x8F0CCC92);
+ c = II(c, d, a, b, x[k+10], S43, 0xFFEFF47D);
+ b = II(b, c, d, a, x[k+1], S44, 0x85845DD1);
+ a = II(a, b, c, d, x[k+8], S41, 0x6FA87E4F);
+ d = II(d, a, b, c, x[k+15], S42, 0xFE2CE6E0);
+ c = II(c, d, a, b, x[k+6], S43, 0xA3014314);
+ b = II(b, c, d, a, x[k+13], S44, 0x4E0811A1);
+ a = II(a, b, c, d, x[k+4], S41, 0xF7537E82);
+ d = II(d, a, b, c, x[k+11], S42, 0xBD3AF235);
+ c = II(c, d, a, b, x[k+2], S43, 0x2AD7D2BB);
+ b = II(b, c, d, a, x[k+9], S44, 0xEB86D391);
+ a = addUnsigned(a, AA);
+ b = addUnsigned(b, BB);
+ c = addUnsigned(c, CC);
+ d = addUnsigned(d, DD);
+ }
+ var tempValue = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);
+ return tempValue.toLowerCase();
+ }
+ });
+ })(jQuery); \ No newline at end of file
diff --git a/frontend/js/jquery.min.js b/frontend/js/jquery.min.js
new file mode 120000
index 0000000..0413a58
--- /dev/null
+++ b/frontend/js/jquery.min.js
@@ -0,0 +1 @@
+../imbreak/js/jquery.min.js \ No newline at end of file
diff --git a/frontend/js/main.js b/frontend/js/main.js
new file mode 120000
index 0000000..1c1c131
--- /dev/null
+++ b/frontend/js/main.js
@@ -0,0 +1 @@
+../imgrid/js/main.js \ No newline at end of file
diff --git a/frontend/js/maincopy.js b/frontend/js/maincopy.js
new file mode 120000
index 0000000..317b9cd
--- /dev/null
+++ b/frontend/js/maincopy.js
@@ -0,0 +1 @@
+../imgrid/js/maincopy.js \ No newline at end of file
diff --git a/frontend/js/okgradient-0.1.js b/frontend/js/okgradient-0.1.js
new file mode 100644
index 0000000..a28c11c
--- /dev/null
+++ b/frontend/js/okgradient-0.1.js
@@ -0,0 +1,149 @@
+(function($){
+
+ $.okgradient = function(el, options){
+ var base = this;
+ base.$el = $(el);
+ base.el = el;
+ base.$el.data("okgradient", base);
+
+ var width = $(window).width();
+ var height = $(window).height();
+
+ var browsers = " -webkit- -moz- -o- -ms-".split(" ");
+
+ base.init = function(){
+ base.options = $.extend({}, $.okgradient.options, options);
+ base.build();
+ };
+
+ base.build = function(){
+ base.start();
+ if (base.options.type in base.actions) {
+ base.action = base.actions[ base.options.type ];
+ }
+ };
+
+ base.start = function () {
+ $(window).bind({
+ mousemove: base.mousemove
+ });
+ base.mousemove({ pageX: $(window).width() / 2, pageY: $(window).height() / 2 });
+ if (base.options.transparent) {
+ base.el.style.color = "transparent";
+ }
+ };
+
+ base.parsecolor = function (rgb) {
+ var x = rgb.replace('rgb(','').replace(')','').split(',');
+ return [parseInt(x[0]), parseInt(x[1]), parseInt(x[2])];
+ };
+
+ base.scale = function (x, xbasis, newbasis) {
+ return (x - xbasis[0]) / (xbasis[1] - xbasis[0]) * (newbasis[1] - newbasis[0]) + newbasis[0];
+ };
+ base.clamp = function (x, min, max) {
+ return Math.max(min, Math.min(max, x));
+ };
+ base.parse_range = function (x, range) {
+ if (typeof range === "number") return range;
+ return base.scale(x, [0,1], range);
+ };
+
+ base.average_rgb = function (a, b, distance) {
+ var x = [];
+ for (var i = 0; i < 3; i++)
+ x[i] = Math.floor( a[i] * distance + b[i] * (1-distance) )
+ return x;
+ };
+
+ base.setoption = function (key, value) {
+ if (typeof key === "string") {
+ base.options[key] = value;
+ } else {
+ base.options = $.extend(base.options, key);
+ }
+ base.mousemove(base);
+ };
+
+ base.mousemove = function (e){
+ var offset = base.$el.offset(),
+ x = e.pageX,
+ y = e.pageY;
+ cy = offset.top + base.$el.height() / 2,
+ cx = offset.left + base.$el.width() / 2,
+ dx = (cx - x),
+ dy = (cy - y),
+ distance = Math.sqrt(dx*dx + dy*dy),
+ ratio = 1 - distance / $(window).height();
+ base.pageX = x;
+ base.pageY = y;
+ base.action(ratio);
+ };
+
+ base.opacity = function (ratio) {
+ base.el.style.opacity = ratio;
+ };
+
+ base.hsl = function (ratio, ranges) {
+ var hue = base.parse_range(ratio, ranges.hue),
+ sat = base.parse_range(ratio, ranges.saturation),
+ lum = base.parse_range(ratio, ranges.luminance);
+ if ("alpha" in ranges) {
+ var alpha = base.parse_range(ratio, ranges.alpha);
+ return "hsla(" + hue + "," + sat + "%," + lum + "%," + alpha + ")";
+ } else {
+ return "hsl(" + hue + "," + sat + "%," + lum + "%)";
+ }
+ };
+
+ base.background = function (ratio) {
+ var color = base.hsl(ratio, base.options);
+ base.el.style.background = color;
+ };
+
+ base.backgroundRadialGradient = function (ratio) {
+ var start = base.hsl(ratio, base.options.start),
+ end = base.hsl(ratio, base.options.end);
+ var gradient = 'radial-gradient(bottom, ' + start + ' 0%, ' + end + ' 100%);';
+ var gradients = "";
+ for (var i = 0, len = browsers.length; i < len; i++)
+ gradients += "background: " + browsers[i] + gradient + ";";
+ base.el.style.cssText = gradients;
+ };
+
+ base.backgroundLinearGradient = function (ratio) {
+ var start = base.hsl(ratio, base.options.start),
+ end = base.hsl(ratio, base.options.end);
+ var gradient = 'linear-gradient(bottom, ' + start + ' 0%, ' + end + ' 100%);';
+ var gradients = "";
+ for (var i = 0, len = browsers.length; i < len; i++)
+ gradients += "background: " + browsers[i] + gradient + ";";
+ base.el.style.cssText = gradients;
+ };
+
+ // initialize action to no-op
+ base.action = function(){};
+ base.actions = {
+ "opacity": base.opacity,
+ "background": base.background,
+ "background linear-gradient": base.backgroundLinearGradient,
+ "background radial-gradient": base.backgroundRadialGradient,
+ };
+
+ base.init();
+ };
+
+ $.okgradient.options = {
+ hue: [0,360],
+ saturation: [50,50],
+ luminance: [50,50],
+ opacity: [1,1],
+ };
+
+ $.fn.okgradient = function(options){
+ return this.each(function(){
+ (new $.okgradient(this, options));
+ });
+ };
+
+})(jQuery);
diff --git a/frontend/js/overlay.js b/frontend/js/overlay.js
new file mode 120000
index 0000000..dd2be26
--- /dev/null
+++ b/frontend/js/overlay.js
@@ -0,0 +1 @@
+../impattern/js/overlay.js \ No newline at end of file
diff --git a/frontend/js/pbembed.js b/frontend/js/pbembed.js
new file mode 100644
index 0000000..97fa667
--- /dev/null
+++ b/frontend/js/pbembed.js
@@ -0,0 +1,65 @@
+$(function(){
+
+// test if Photoblaster is being loaded in an iframe (=dump.fm) or not
+var isEmbed = window != window.parent;
+
+if(isEmbed) {
+
+ /*
+ * jQuery postMessage - v0.5 - 9/11/2009
+ * http://benalman.com/projects/jquery-postmessage-plugin/
+ *
+ * Copyright (c) 2009 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+ (function($){var g,d,j=1,a,b=this,f=!1,h="postMessage",e="addEventListener",c,i=b[h]&&!$.browser.opera;$[h]=function(k,l,m){if(!l){return}k=typeof k==="string"?k:$.param(k);m=m||parent;if(i){m[h](k,l.replace(/([^:]+:\/\/[^\/]+).*/,"$1"))}else{if(l){m.location=l.replace(/#.*$/,"")+"#"+(+new Date)+(j++)+"&"+k}}};$.receiveMessage=c=function(l,m,k){if(i){if(l){a&&c();a=function(n){if((typeof m==="string"&&n.origin!==m)||($.isFunction(m)&&m(n.origin)===f)){return f}l(n)}}if(b[e]){b[l?e:"removeEventListener"]("message",a,f)}else{b[l?"attachEvent":"detachEvent"]("onmessage",a)}}else{g&&clearInterval(g);g=null;if(l){k=typeof m==="number"?m:typeof k==="number"?k:100;g=setInterval(function(){var o=document.location.hash,n=/^#?\d+&/;if(o!==d&&n.test(o)){d=o;l({data:o.replace(n,"")})}},k)}}}})(jQuery);
+
+ /* end postMessage */
+
+ var parent_url = decodeURIComponent( document.location.hash.replace( /^#/, '' ) );
+
+ // add click-to-dump to output image
+ $('#output-img').live("click", function(){
+ $.postMessage(JSON.stringify({'command':'paste_url_to_dump_msginput', 'url':$(this).attr('src')}), parent_url, parent );
+ });
+
+ // listen for a command from the parent.
+ $.receiveMessage(function(e){
+ try{
+ var data = JSON.parse(e.data)
+
+ if ( data.command == 'image_url' ) {
+
+ $("#img-url").val(data.url);
+
+ $("#img-url").prev().css('background-color', 'white');
+ $("#img-background").prev().css('background-color', 'white');
+
+ } else if ( data.command == 'background_url' ) {
+
+ $("#img-background").val(data.url);
+
+ $("#img-url").prev().css('background-color', 'white');
+ $("#img-background").prev().css('background-color', 'white');
+
+ } else if ( data.command == 'img_drag' ) {
+
+ // highlight while dragging to show which field this drag will go to
+ $("#img-background").prev().css('background-color', 'white');
+ $("#img-url").prev().css('background-color', 'yellow');
+
+ } else if ( data.command == 'background_drag' ) {
+
+ $("#img-url").prev().css('background-color', 'white');
+ $("#img-background").prev().css('background-color', 'yellow');
+
+ }
+ }catch(e){
+ console.log('receiveMessage (iframe): JSON parse error');
+ }
+ });
+
+} //isEmbed
+});
+
diff --git a/frontend/js/photoblaster-0.1.js b/frontend/js/photoblaster-0.1.js
new file mode 100644
index 0000000..43fc785
--- /dev/null
+++ b/frontend/js/photoblaster-0.1.js
@@ -0,0 +1,22 @@
+(function($){
+ $.photoblaster = function(url, name, success, error){
+ if (! url) return;
+ var API_HEADER = "#@im",
+ success = success || function (data) {},
+ error = error || function () {},
+ params = {
+ 'url': url,
+ 'name': name || 'api',
+ 'transparent': true,
+ 'fuzz': 5,
+ };
+ $.ajax({
+ 'url': "http://asdf.us/cgi-bin/im/generate",
+ 'data': params,
+ 'dataType': "jsonp",
+ 'success': success,
+ 'error': error
+ });
+ };
+})(jQuery);
+
diff --git a/frontend/js/popup.js b/frontend/js/popup.js
new file mode 120000
index 0000000..7b52e23
--- /dev/null
+++ b/frontend/js/popup.js
@@ -0,0 +1 @@
+../imgrid/js/popup.js \ No newline at end of file
diff --git a/frontend/js/preview.js b/frontend/js/preview.js
new file mode 120000
index 0000000..16cbafb
--- /dev/null
+++ b/frontend/js/preview.js
@@ -0,0 +1 @@
+../impattern/js/preview.js \ No newline at end of file
diff --git a/frontend/js/requests.js b/frontend/js/requests.js
new file mode 100644
index 0000000..8c8fc34
--- /dev/null
+++ b/frontend/js/requests.js
@@ -0,0 +1,6 @@
+var PATTERNS_URL = "/cgi-bin/im/getpatterns"
+var PROCESS_URL = "/cgi-bin/im/impattern"
+var NEW_PATTERN_URL = "/cgi-bin/im/newpattern"
+
+
+//needs a loading gif
diff --git a/frontend/js/sketch.js b/frontend/js/sketch.js
new file mode 120000
index 0000000..9e4ec4c
--- /dev/null
+++ b/frontend/js/sketch.js
@@ -0,0 +1 @@
+../impattern/js/sketch.js \ No newline at end of file
diff --git a/frontend/js/sliders.js b/frontend/js/sliders.js
new file mode 120000
index 0000000..6ebbd4f
--- /dev/null
+++ b/frontend/js/sliders.js
@@ -0,0 +1 @@
+../imgrid/js/sliders.js \ No newline at end of file
diff --git a/frontend/js/soundmanager2.js b/frontend/js/soundmanager2.js
new file mode 100644
index 0000000..46528c9
--- /dev/null
+++ b/frontend/js/soundmanager2.js
@@ -0,0 +1,2838 @@
+/** @license
+ * SoundManager 2: Javascript Sound for the Web
+ * --------------------------------------------
+ * http://schillmania.com/projects/soundmanager2/
+ *
+ * Copyright (c) 2007, Scott Schiller. All rights reserved.
+ * Code provided under the BSD License:
+ * http://schillmania.com/projects/soundmanager2/license.txt
+ *
+ * V2.97a.20101010
+ */
+
+/*jslint white: false, onevar: true, undef: true, nomen: false, eqeqeq: true, plusplus: false, bitwise: true, regexp: true, newcap: true, immed: true, regexp: false */
+/*global window, SM2_DEFER, sm2Debugger, alert, console, document, navigator, setTimeout, setInterval, clearInterval, Audio */
+
+(function(window) {
+
+var soundManager = null;
+
+function SoundManager(smURL, smID) {
+
+ this.flashVersion = 8; // version of flash to require, either 8 or 9. Some API features require Flash 9.
+ this.debugMode = true; // enable debugging output (div#soundmanager-debug, OR console if available+configured)
+ this.debugFlash = false; // enable debugging output inside SWF, troubleshoot Flash/browser issues
+ this.useConsole = true; // use firebug/safari console.log()-type debug console if available
+ this.consoleOnly = false; // if console is being used, do not create/write to #soundmanager-debug
+ this.waitForWindowLoad = false; // force SM2 to wait for window.onload() before trying to call soundManager.onload()
+ this.nullURL = 'about:blank'; // path to "null" (empty) MP3 file, used to unload sounds (Flash 8 only)
+ this.allowPolling = true; // allow flash to poll for status update (required for whileplaying() events, peak, sound spectrum functions to work.)
+ this.useFastPolling = false; // uses lower flash timer interval for higher callback frequency, best combined with useHighPerformance
+ this.useMovieStar = true; // enable support for Flash 9.0r115+ (codename "MovieStar") MPEG4 audio formats (AAC, M4V, FLV, MOV etc.)
+ this.bgColor = '#ffffff'; // movie (.swf) background color, eg. '#000000'
+ this.useHighPerformance = false; // position:fixed flash movie can help increase js/flash speed, minimize lag
+ this.flashLoadTimeout = 1000; // msec to wait for flash movie to load before failing (0 = infinity)
+ this.wmode = null; // string: flash rendering mode - null, transparent, opaque (last two allow layering of HTML on top)
+ this.allowScriptAccess = 'always'; // for scripting the SWF (object/embed property), either 'always' or 'sameDomain'
+ this.useFlashBlock = false; // *requires flashblock.css, see demos* - allow recovery from flash blockers. Wait indefinitely and apply timeout CSS to SWF, if applicable.
+ this.useHTML5Audio = false; // Beta feature: Use HTML 5 Audio() where API is supported (most Safari, Chrome versions), Firefox (no MP3/MP4.) Ideally, transparent vs. Flash API where possible.
+ this.html5Test = /^probably$/i; // HTML5 Audio().canPlayType() test. /^(probably|maybe)$/i if you want to be more liberal/risky.
+ this.ondebuglog = false; // callback made with each log message, regardless of debugMode
+
+ this.audioFormats = {
+ // determines HTML5 support, flash requirements
+ // eg. if MP3 or MP4 required, Flash fallback is used if HTML5 can't play it
+ // shotgun approach to MIME testing due to browser variance
+ 'mp3': {
+ 'type': ['audio/mpeg; codecs="mp3"','audio/mpeg','audio/mp3','audio/MPA','audio/mpa-robust'],
+ 'required': true
+ },
+ 'mp4': {
+ 'related': ['aac','m4a'], // additional formats under the MP4 container
+ 'type': ['audio/mp4; codecs="mp4a.40.2"','audio/aac','audio/x-m4a','audio/MP4A-LATM','audio/mpeg4-generic'],
+ 'required': true
+ },
+ 'ogg': {
+ 'type': ['audio/ogg; codecs=vorbis'],
+ 'required': false
+ },
+ 'wav': {
+ 'type': ['audio/wav; codecs="1"','audio/wav','audio/wave','audio/x-wav'],
+ 'required': false
+ }
+ };
+
+ this.defaultOptions = {
+ 'autoLoad': false, // enable automatic loading (otherwise .load() will be called on demand with .play(), the latter being nicer on bandwidth - if you want to .load yourself, you also can)
+ 'stream': true, // allows playing before entire file has loaded (recommended)
+ 'autoPlay': false, // enable playing of file as soon as possible (much faster if "stream" is true)
+ 'loops': 1, // how many times to repeat the sound (position will wrap around to 0, setPosition() will break out of loop when >0)
+ 'onid3': null, // callback function for "ID3 data is added/available"
+ 'onload': null, // callback function for "load finished"
+ 'whileloading': null, // callback function for "download progress update" (X of Y bytes received)
+ 'onplay': null, // callback for "play" start
+ 'onpause': null, // callback for "pause"
+ 'onresume': null, // callback for "resume" (pause toggle)
+ 'whileplaying': null, // callback during play (position update)
+ 'onstop': null, // callback for "user stop"
+ 'onfailure': null, // callback function for when playing fails
+ 'onfinish': null, // callback function for "sound finished playing"
+ 'onbeforefinish': null, // callback for "before sound finished playing (at [time])"
+ 'onbeforefinishtime': 5000, // offset (milliseconds) before end of sound to trigger beforefinish (eg. 1000 msec = 1 second)
+ 'onbeforefinishcomplete': null,// function to call when said sound finishes playing
+ 'onjustbeforefinish': null, // callback for [n] msec before end of current sound
+ 'onjustbeforefinishtime': 200, // [n] - if not using, set to 0 (or null handler) and event will not fire.
+ 'multiShot': true, // let sounds "restart" or layer on top of each other when played multiple times, rather than one-shot/one at a time
+ 'multiShotEvents': false, // fire multiple sound events (currently onfinish() only) when multiShot is enabled
+ 'position': null, // offset (milliseconds) to seek to within loaded sound data.
+ 'pan': 0, // "pan" settings, left-to-right, -100 to 100
+ 'type': null, // MIME-like hint for file pattern / canPlay() tests, eg. audio/mp3
+ 'usePolicyFile': false, // enable crossdomain.xml request for audio on remote domains (for ID3/waveform access)
+ 'volume': 100 // self-explanatory. 0-100, the latter being the max.
+ };
+
+ this.flash9Options = { // flash 9-only options, merged into defaultOptions if flash 9 is being used
+ 'isMovieStar': null, // "MovieStar" MPEG4 audio mode. Null (default) = auto detect MP4, AAC etc. based on URL. true = force on, ignore URL
+ 'usePeakData': false, // enable left/right channel peak (level) data
+ 'useWaveformData': false, // enable sound spectrum (raw waveform data) - WARNING: CPU-INTENSIVE: may set CPUs on fire.
+ 'useEQData': false, // enable sound EQ (frequency spectrum data) - WARNING: Also CPU-intensive.
+ 'onbufferchange': null, // callback for "isBuffering" property change
+ 'ondataerror': null, // callback for waveform/eq data access error (flash playing audio in other tabs/domains)
+ 'onstats': null // callback for when connection & play times have been measured
+ };
+
+ this.movieStarOptions = { // flash 9.0r115+ MPEG4 audio options, merged into defaultOptions if flash 9+movieStar mode is enabled
+ 'bufferTime': 3, // seconds of data to buffer before playback begins (null = flash default of 0.1 seconds - if AAC playback is gappy, try increasing.)
+ 'serverURL': null, // rtmp: FMS or FMIS server to connect to, required when requesting media via RTMP or one of its variants
+ 'onconnect': null, // rtmp: callback for connection to flash media server
+ 'bufferTimes': null, // array of buffer sizes to use. Size increases as buffer fills up.
+ 'duration': null // rtmp: song duration (msec)
+ };
+
+ this.version = null;
+ this.versionNumber = 'V2.97a.20101010';
+ this.movieURL = null;
+ this.url = (smURL || null);
+ this.altURL = null;
+ this.swfLoaded = false;
+ this.enabled = false;
+ this.o = null;
+ this.movieID = 'sm2-container';
+ this.id = (smID || 'sm2movie');
+ this.swfCSS = {
+ 'swfBox': 'sm2-object-box',
+ 'swfDefault': 'movieContainer',
+ 'swfError': 'swf_error', // SWF loaded, but SM2 couldn't start (other error)
+ 'swfTimedout': 'swf_timedout',
+ 'swfUnblocked': 'swf_unblocked', // or loaded OK
+ 'sm2Debug': 'sm2_debug',
+ 'highPerf': 'high_performance',
+ 'flashDebug': 'flash_debug'
+ };
+ this.oMC = null;
+ this.sounds = {};
+ this.soundIDs = [];
+ this.muted = false;
+ this.debugID = 'soundmanager-debug';
+ this.debugURLParam = /([#?&])debug=1/i;
+ this.specialWmodeCase = false;
+ this.didFlashBlock = false;
+
+ this.filePattern = null;
+ this.filePatterns = {
+ 'flash8': /\.mp3(\?.*)?$/i,
+ 'flash9': /\.mp3(\?.*)?$/i
+ };
+
+ this.baseMimeTypes = /^\s*audio\/(?:x-)?(?:mp(?:eg|3))\s*(?:$|;)/i; // mp3
+ this.netStreamMimeTypes = /^\s*audio\/(?:x-)?(?:mp(?:eg|3))\s*(?:$|;)/i; // mp3, mp4, aac etc.
+ this.netStreamTypes = ['aac', 'flv', 'mov', 'mp4', 'm4v', 'f4v', 'm4a', 'mp4v', '3gp', '3g2']; // Flash v9.0r115+ "moviestar" formats
+ this.netStreamPattern = new RegExp('\\.(' + this.netStreamTypes.join('|') + ')(\\?.*)?$', 'i');
+ this.mimePattern = this.baseMimeTypes;
+
+ this.features = {
+ 'buffering': false,
+ 'peakData': false,
+ 'waveformData': false,
+ 'eqData': false,
+ 'movieStar': false
+ };
+
+ this.sandbox = {
+ // <d>
+ 'type': null,
+ 'types': {
+ 'remote': 'remote (domain-based) rules',
+ 'localWithFile': 'local with file access (no internet access)',
+ 'localWithNetwork': 'local with network (internet access only, no local access)',
+ 'localTrusted': 'local, trusted (local+internet access)'
+ },
+ 'description': null,
+ 'noRemote': null,
+ 'noLocal': null
+ // </d>
+ };
+
+ this.hasHTML5 = null; // switch for handling logic
+ this.html5 = { // stores canPlayType() results, etc. treat as read-only.
+ // mp3: boolean
+ // mp4: boolean
+ 'usingFlash': null // set if/when flash fallback is needed
+ };
+ this.ignoreFlash = false; // used for special cases (eg. iPad/iPhone/palm OS?)
+
+ // --- private SM2 internals ---
+
+ var SMSound,
+ _s = this, _sm = 'soundManager', _id, _ua = navigator.userAgent, _wl = window.location.href.toString(), _fV = this.flashVersion, _doc = document, _win = window, _doNothing, _init, _onready = [], _debugOpen = true, _debugTS, _didAppend = false, _appendSuccess = false, _didInit = false, _disabled = false, _windowLoaded = false, _wDS, _wdCount = 0, _initComplete, _mixin, _addOnReady, _processOnReady, _initUserOnload, _go, _delayWaitForEI, _waitForEI, _setVersionInfo, _handleFocus, _beginInit, _strings, _initMovie, _dcLoaded, _didDCLoaded, _getDocument, _createMovie, _die, _mobileFlash, _setPolling, _debugLevels = ['log', 'info', 'warn', 'error'], _defaultFlashVersion = 8, _disableObject, _failSafely, _normalizeMovieURL, _oRemoved = null, _oRemovedHTML = null, _str, _flashBlockHandler, _getSWFCSS, _toggleDebug, _loopFix, _policyFix, _complain, _idCheck, _waitingForEI = false, _initPending = false, _smTimer, _onTimer, _startTimer, _stopTimer, _needsFlash = null, _featureCheck, _html5OK, _html5Only = false, _html5CanPlay, _html5Ext, _dcIE, _testHTML5, _addEvt, _removeEvt, _slice = Array.prototype.slice,
+ _is_pre = _ua.match(/pre\//i),
+ _iPadOrPhone = _ua.match(/(ipad|iphone)/i),
+ _isMobile = (_ua.match(/mobile/i) || _is_pre || _iPadOrPhone),
+ _isIE = (_ua.match(/MSIE/i)),
+ _isSafari = (_ua.match(/safari/i) && !_ua.match(/chrome/i)),
+ _hasConsole = (typeof console !== 'undefined' && typeof console.log !== 'undefined'),
+ _isFocused = (typeof _doc.hasFocus !== 'undefined'?_doc.hasFocus():null),
+ _tryInitOnFocus = (typeof _doc.hasFocus === 'undefined' && _isSafari),
+ _okToDisable = !_tryInitOnFocus;
+
+ this._use_maybe = (_wl.match(/sm2\-useHTML5Maybe\=1/i)); // temporary feature: #sm2-useHTML5Maybe=1 forces loose canPlay() check
+ this._overHTTP = (_doc.location?_doc.location.protocol.match(/http/i):null);
+ this.useAltURL = !this._overHTTP; // use altURL if not "online"
+
+ if (_iPadOrPhone || _is_pre) {
+ // might as well force it on Apple + Palm, flash support unlikely
+ _s.useHTML5Audio = true;
+ _s.ignoreFlash = true;
+ }
+
+ if (_is_pre || this._use_maybe) {
+ // less-strict canPlayType() checking option
+ _s.html5Test = /^(probably|maybe)$/i;
+ }
+
+ // Temporary feature: allow force of HTML5 via URL: #sm2-usehtml5audio=0 or 1
+ // <d>
+ (function(){
+ var a = '#sm2-usehtml5audio=', l = _wl, b = null;
+ if (l.indexOf(a) !== -1) {
+ b = (l.substr(l.indexOf(a)+a.length) === '1');
+ if (typeof console !== 'undefined' && typeof console.log !== 'undefined') {
+ console.log((b?'Enabling ':'Disabling ')+'useHTML5Audio via URL parameter');
+ }
+ _s.useHTML5Audio = b;
+ }
+ }());
+ // </d>
+
+ // --- public API methods ---
+
+ this.supported = function() {
+ return (_needsFlash?(_didInit && !_disabled):(_s.useHTML5Audio && _s.hasHTML5));
+ };
+
+ this.getMovie = function(smID) {
+ return _isIE?_win[smID]:(_isSafari?_id(smID) || _doc[smID]:_id(smID));
+ };
+
+ this.loadFromXML = function(sXmlUrl) {
+ try {
+ _s.o._loadFromXML(sXmlUrl);
+ } catch(e) {
+ _failSafely();
+ }
+ return true;
+ };
+
+ this.createSound = function(oOptions) {
+ var _cs = 'soundManager.createSound(): ',
+ thisOptions = null, oSound = null, _tO = null;
+ if (!_didInit || !_s.supported()) {
+ _complain(_cs + _str(!_didInit?'notReady':'notOK'));
+ return false;
+ }
+ if (arguments.length === 2) {
+ // function overloading in JS! :) ..assume simple createSound(id,url) use case
+ oOptions = {
+ 'id': arguments[0],
+ 'url': arguments[1]
+ };
+ }
+ thisOptions = _mixin(oOptions); // inherit from defaultOptions
+ _tO = thisOptions; // alias
+ // <d>
+ if (_tO.id.toString().charAt(0).match(/^[0-9]$/)) {
+ _s._wD(_cs + _str('badID', _tO.id), 2);
+ }
+ _s._wD(_cs + _tO.id + ' (' + _tO.url + ')', 1);
+ // </d>
+ if (_idCheck(_tO.id, true)) {
+ _s._wD(_cs + _tO.id + ' exists', 1);
+ return _s.sounds[_tO.id];
+ }
+
+ function make() {
+ thisOptions = _loopFix(thisOptions);
+ _s.sounds[_tO.id] = new SMSound(_tO);
+ _s.soundIDs.push(_tO.id);
+ return _s.sounds[_tO.id];
+ }
+
+ if (_html5OK(_tO)) {
+ oSound = make();
+ _s._wD('Loading sound '+_tO.id+' from HTML5');
+ oSound._setup_html5(_tO);
+ } else {
+ if (_fV > 8 && _s.useMovieStar) {
+ if (_tO.isMovieStar === null) {
+ _tO.isMovieStar = ((_tO.serverURL || (_tO.type?_tO.type.match(_s.netStreamPattern):false)||_tO.url.match(_s.netStreamPattern))?true:false);
+ }
+ if (_tO.isMovieStar) {
+ _s._wD(_cs + 'using MovieStar handling');
+ }
+ if (_tO.isMovieStar) {
+ if (_tO.usePeakData) {
+ _wDS('noPeak');
+ _tO.usePeakData = false;
+ }
+ if (_tO.loops > 1) {
+ _wDS('noNSLoop');
+ }
+ }
+ }
+ _tO = _policyFix(_tO, _cs);
+ oSound = make();
+ if (_fV === 8) {
+ _s.o._createSound(_tO.id, _tO.onjustbeforefinishtime, _tO.loops||1, _tO.usePolicyFile);
+ } else {
+ _s.o._createSound(_tO.id, _tO.url, _tO.onjustbeforefinishtime, _tO.usePeakData, _tO.useWaveformData, _tO.useEQData, _tO.isMovieStar, (_tO.isMovieStar?_tO.bufferTime:false), _tO.loops||1, _tO.serverURL, _tO.duration||null, _tO.autoPlay, true, _tO.bufferTimes, _tO.onstats ? true : false, _tO.autoLoad, _tO.usePolicyFile);
+ if (!_tO.serverURL) {
+ // We are connected immediately
+ oSound.connected = true;
+ if (_tO.onconnect) {
+ _tO.onconnect.apply(oSound);
+ }
+ }
+ }
+ }
+ if (_tO.autoLoad || _tO.autoPlay) {
+ if (oSound) {
+ if (_s.isHTML5) {
+ oSound.autobuffer = 'auto'; // early HTML5 implementation (non-standard)
+ oSound.preload = 'auto'; // standard
+ } else {
+ oSound.load(_tO);
+ }
+ }
+ }
+ if (_tO.autoPlay) {
+ oSound.play();
+ }
+ return oSound;
+ };
+
+ this.destroySound = function(sID, _bFromSound) {
+ // explicitly destroy a sound before normal page unload, etc.
+ if (!_idCheck(sID)) {
+ return false;
+ }
+ var oS = _s.sounds[sID], i;
+ oS._iO = {}; // Disable all callbacks while the sound is being destroyed
+ oS.stop();
+ oS.unload();
+ for (i = 0; i < _s.soundIDs.length; i++) {
+ if (_s.soundIDs[i] === sID) {
+ _s.soundIDs.splice(i, 1);
+ break;
+ }
+ }
+ if (!_bFromSound) {
+ // ignore if being called from SMSound instance
+ oS.destruct(true);
+ }
+ oS = null;
+ delete _s.sounds[sID];
+ return true;
+ };
+
+ this.load = function(sID, oOptions) {
+ if (!_idCheck(sID)) {
+ return false;
+ }
+ return _s.sounds[sID].load(oOptions);
+ };
+
+ this.unload = function(sID) {
+ if (!_idCheck(sID)) {
+ return false;
+ }
+ return _s.sounds[sID].unload();
+ };
+
+ this.play = function(sID, oOptions) {
+ var fN = 'soundManager.play(): ';
+ if (!_didInit || !_s.supported()) {
+ _complain(fN + _str(!_didInit?'notReady':'notOK'));
+ return false;
+ }
+ if (!_idCheck(sID)) {
+ if (!(oOptions instanceof Object)) {
+ oOptions = {
+ url: oOptions
+ }; // overloading use case: play('mySound','/path/to/some.mp3');
+ }
+ if (oOptions && oOptions.url) {
+ // overloading use case, create+play: .play('someID',{url:'/path/to.mp3'});
+ _s._wD(fN + 'attempting to create "' + sID + '"', 1);
+ oOptions.id = sID;
+ return _s.createSound(oOptions).play();
+ } else {
+ return false;
+ }
+ }
+ return _s.sounds[sID].play(oOptions);
+ };
+
+ this.start = this.play; // just for convenience
+
+ this.setPosition = function(sID, nMsecOffset) {
+ if (!_idCheck(sID)) {
+ return false;
+ }
+ return _s.sounds[sID].setPosition(nMsecOffset);
+ };
+
+ this.stop = function(sID) {
+ if (!_idCheck(sID)) {
+ return false;
+ }
+ _s._wD('soundManager.stop(' + sID + ')', 1);
+ return _s.sounds[sID].stop();
+ };
+
+ this.stopAll = function() {
+ _s._wD('soundManager.stopAll()', 1);
+ for (var oSound in _s.sounds) {
+ if (_s.sounds[oSound] instanceof SMSound) {
+ _s.sounds[oSound].stop(); // apply only to sound objects
+ }
+ }
+ };
+
+ this.pause = function(sID) {
+ if (!_idCheck(sID)) {
+ return false;
+ }
+ return _s.sounds[sID].pause();
+ };
+
+ this.pauseAll = function() {
+ for (var i = _s.soundIDs.length; i--;) {
+ _s.sounds[_s.soundIDs[i]].pause();
+ }
+ };
+
+ this.resume = function(sID) {
+ if (!_idCheck(sID)) {
+ return false;
+ }
+ return _s.sounds[sID].resume();
+ };
+
+ this.resumeAll = function() {
+ for (var i = _s.soundIDs.length; i--;) {
+ _s.sounds[_s.soundIDs[i]].resume();
+ }
+ };
+
+ this.togglePause = function(sID) {
+ if (!_idCheck(sID)) {
+ return false;
+ }
+ return _s.sounds[sID].togglePause();
+ };
+
+ this.setPan = function(sID, nPan) {
+ if (!_idCheck(sID)) {
+ return false;
+ }
+ return _s.sounds[sID].setPan(nPan);
+ };
+
+ this.setVolume = function(sID, nVol) {
+ if (!_idCheck(sID)) {
+ return false;
+ }
+ return _s.sounds[sID].setVolume(nVol);
+ };
+
+ this.mute = function(sID) {
+ var fN = 'soundManager.mute(): ',
+ i = 0;
+ if (typeof sID !== 'string') {
+ sID = null;
+ }
+ if (!sID) {
+ _s._wD(fN + 'Muting all sounds');
+ for (i = _s.soundIDs.length; i--;) {
+ _s.sounds[_s.soundIDs[i]].mute();
+ }
+ _s.muted = true;
+ } else {
+ if (!_idCheck(sID)) {
+ return false;
+ }
+ _s._wD(fN + 'Muting "' + sID + '"');
+ return _s.sounds[sID].mute();
+ }
+ return true;
+ };
+
+ this.muteAll = function() {
+ _s.mute();
+ };
+
+ this.unmute = function(sID) {
+ var fN = 'soundManager.unmute(): ', i;
+ if (typeof sID !== 'string') {
+ sID = null;
+ }
+ if (!sID) {
+ _s._wD(fN + 'Unmuting all sounds');
+ for (i = _s.soundIDs.length; i--;) {
+ _s.sounds[_s.soundIDs[i]].unmute();
+ }
+ _s.muted = false;
+ } else {
+ if (!_idCheck(sID)) {
+ return false;
+ }
+ _s._wD(fN + 'Unmuting "' + sID + '"');
+ return _s.sounds[sID].unmute();
+ }
+ return true;
+ };
+
+ this.unmuteAll = function() {
+ _s.unmute();
+ };
+
+ this.toggleMute = function(sID) {
+ if (!_idCheck(sID)) {
+ return false;
+ }
+ return _s.sounds[sID].toggleMute();
+ };
+
+ this.getMemoryUse = function() {
+ if (_fV === 8) {
+ return 0;
+ }
+ if (_s.o) {
+ return parseInt(_s.o._getMemoryUse(), 10);
+ }
+ };
+
+ this.disable = function(bNoDisable) {
+ // destroy all functions
+ if (typeof bNoDisable === 'undefined') {
+ bNoDisable = false;
+ }
+ if (_disabled) {
+ return false;
+ }
+ _disabled = true;
+ _wDS('shutdown', 1);
+ for (var i = _s.soundIDs.length; i--;) {
+ _disableObject(_s.sounds[_s.soundIDs[i]]);
+ }
+ _initComplete(bNoDisable); // fire "complete", despite fail
+ _removeEvt(_win, 'load', _initUserOnload);
+ return true;
+ };
+
+ this.canPlayMIME = function(sMIME) {
+ var result;
+ if (_s.hasHTML5) {
+ result = _html5CanPlay({type:sMIME});
+ }
+ if (!_needsFlash || result) {
+ // no flash, or OK
+ return result;
+ } else {
+ return (sMIME?(sMIME.match(_s.mimePattern)?true:false):null);
+ }
+ };
+
+ this.canPlayURL = function(sURL) {
+ var result;
+ if (_s.hasHTML5) {
+ result = _html5CanPlay(sURL);
+ }
+ if (!_needsFlash || result) {
+ // no flash, or OK
+ return result;
+ } else {
+ return (sURL?(sURL.match(_s.filePattern)?true:false):null);
+ }
+ };
+
+ this.canPlayLink = function(oLink) {
+ if (typeof oLink.type !== 'undefined' && oLink.type) {
+ if (_s.canPlayMIME(oLink.type)) {
+ return true;
+ }
+ }
+ return _s.canPlayURL(oLink.href);
+ };
+
+ this.getSoundById = function(sID, suppressDebug) {
+ if (!sID) {
+ throw new Error('SoundManager.getSoundById(): sID is null/undefined');
+ }
+ var result = _s.sounds[sID];
+ if (!result && !suppressDebug) {
+ _s._wD('"' + sID + '" is an invalid sound ID.', 2);
+ }
+ return result;
+ };
+
+ this.onready = function(oMethod, oScope) {
+ if (oMethod && oMethod instanceof Function) {
+ if (_didInit) {
+ _wDS('queue');
+ }
+ if (!oScope) {
+ oScope = _win;
+ }
+ _addOnReady(oMethod, oScope);
+ _processOnReady();
+ return true;
+ } else {
+ throw _str('needFunction');
+ }
+ };
+
+ this.getMoviePercent = function() {
+ return (_s.o && typeof _s.o.PercentLoaded !== 'undefined'?_s.o.PercentLoaded():null);
+ };
+
+ this._writeDebug = function(sText, sType, bTimestamp) {
+ // If the debug log callback is set, always call it, regardless of debugMode
+ if (_s.ondebuglog) {
+ _s.ondebuglog(sText, sType, bTimestamp);
+ }
+ // pseudo-private console.log()-style output
+ // <d>
+ var sDID = 'soundmanager-debug', o, oItem, sMethod;
+ if (!_s.debugMode) {
+ return false;
+ }
+ if (typeof bTimestamp !== 'undefined' && bTimestamp) {
+ sText = sText + ' | ' + new Date().getTime();
+ }
+ if (_hasConsole && _s.useConsole) {
+ sMethod = _debugLevels[sType];
+ if (typeof console[sMethod] !== 'undefined') {
+ console[sMethod](sText);
+ } else {
+ console.log(sText);
+ }
+ if (_s.useConsoleOnly) {
+ return true;
+ }
+ }
+ try {
+ o = _id(sDID);
+ if (!o) {
+ return false;
+ }
+ oItem = _doc.createElement('div');
+ if (++_wdCount % 2 === 0) {
+ oItem.className = 'sm2-alt';
+ }
+ if (typeof sType === 'undefined') {
+ sType = 0;
+ } else {
+ sType = parseInt(sType, 10);
+ }
+ oItem.appendChild(_doc.createTextNode(sText));
+ if (sType) {
+ if (sType >= 2) {
+ oItem.style.fontWeight = 'bold';
+ }
+ if (sType === 3) {
+ oItem.style.color = '#ff3333';
+ }
+ }
+ // o.appendChild(oItem); // top-to-bottom
+ o.insertBefore(oItem, o.firstChild); // bottom-to-top
+ } catch(e) {
+ // oh well
+ }
+ o = null;
+ // </d>
+ return true;
+ };
+ this._wD = this._writeDebug; // alias
+
+ this._debug = function() {
+ // <d>
+ _wDS('currentObj', 1);
+ for (var i = 0, j = _s.soundIDs.length; i < j; i++) {
+ _s.sounds[_s.soundIDs[i]]._debug();
+ }
+ // </d>
+ };
+
+ this.reboot = function() {
+ // attempt to reset and init SM2
+ _s._wD('soundManager.reboot()');
+ if (_s.soundIDs.length) {
+ _s._wD('Destroying ' + _s.soundIDs.length + ' SMSound objects...');
+ }
+ for (var i = _s.soundIDs.length; i--;) {
+ _s.sounds[_s.soundIDs[i]].destruct();
+ }
+ // trash ze flash
+ try {
+ if (_isIE) {
+ _oRemovedHTML = _s.o.innerHTML;
+ }
+ _oRemoved = _s.o.parentNode.removeChild(_s.o);
+ _s._wD('Flash movie removed.');
+ } catch(e) {
+ // uh-oh.
+ _wDS('badRemove', 2);
+ }
+ // actually, force recreate of movie.
+ _oRemovedHTML = _oRemoved = null;
+ _s.enabled = _didInit = _waitingForEI = _initPending = _didAppend = _appendSuccess = _disabled = _s.swfLoaded = false;
+ _s.soundIDs = _s.sounds = [];
+ _s.o = null;
+ for (i = _onready.length; i--;) {
+ _onready[i].fired = false;
+ }
+ _s._wD(_sm + ': Rebooting...');
+ _win.setTimeout(function() {
+ _s.beginDelayedInit();
+ }, 20);
+ };
+
+ this.destruct = function() {
+ _s._wD('soundManager.destruct()');
+ _s.disable(true);
+ };
+
+ this.beginDelayedInit = function() {
+ // _s._wD('soundManager.beginDelayedInit()');
+ _windowLoaded = true;
+ _dcLoaded();
+ setTimeout(_beginInit, 20);
+ _delayWaitForEI();
+ };
+
+ // --- SMSound (sound object) instance ---
+
+ SMSound = function(oOptions) {
+ var _t = this, _resetProperties, _add_html5_events, _stop_html5_timer, _start_html5_timer, _get_html5_duration, _a;
+ this.sID = oOptions.id;
+ this.url = oOptions.url;
+ this.options = _mixin(oOptions);
+ this.instanceOptions = this.options; // per-play-instance-specific options
+ this._iO = this.instanceOptions; // short alias
+ // assign property defaults
+ this.pan = this.options.pan;
+ this.volume = this.options.volume;
+ this._lastURL = null;
+ this.isHTML5 = false;
+
+ // --- public methods ---
+
+ this.id3 = {};
+
+ this._debug = function() {
+ // <d>
+ // pseudo-private console.log()-style output
+ if (_s.debugMode) {
+ var stuff = null, msg = [], sF, sfBracket, maxLength = 64;
+ for (stuff in _t.options) {
+ if (_t.options[stuff] !== null) {
+ if (_t.options[stuff] instanceof Function) {
+ // handle functions specially
+ sF = _t.options[stuff].toString();
+ sF = sF.replace(/\s\s+/g, ' '); // normalize spaces
+ sfBracket = sF.indexOf('{');
+ msg.push(' ' + stuff + ': {' + sF.substr(sfBracket + 1, (Math.min(Math.max(sF.indexOf('\n') - 1, maxLength), maxLength))).replace(/\n/g, '') + '... }');
+ } else {
+ msg.push(' ' + stuff + ': ' + _t.options[stuff]);
+ }
+ }
+ }
+ _s._wD('SMSound() merged options: {\n' + msg.join(', \n') + '\n}');
+ }
+ // </d>
+ };
+
+ this._debug();
+
+ this.load = function(oOptions) {
+ var oS = null;
+ if (typeof oOptions !== 'undefined') {
+ _t._iO = _mixin(oOptions);
+ _t.instanceOptions = _t._iO;
+ } else {
+ oOptions = _t.options;
+ _t._iO = oOptions;
+ _t.instanceOptions = _t._iO;
+ if (_t._lastURL && _t._lastURL !== _t.url) {
+ _wDS('manURL');
+ _t._iO.url = _t.url;
+ _t.url = null;
+ }
+ }
+ _s._wD('soundManager.load(): ' + _t._iO.url, 1);
+ if (_t._iO.url === _t.url && _t.readyState !== 0 && _t.readyState !== 2) {
+ _wDS('onURL', 1);
+ return _t;
+ }
+ _t._lastURL = _t.url;
+ _t.loaded = false;
+ _t.readyState = 1;
+ _t.playState = 0;
+ if (_html5OK(_t._iO)) {
+ _s._wD('HTML 5 load: '+_t._iO.url);
+ oS = _t._setup_html5(_t._iO);
+ oS.load();
+ if (_t._iO.autoPlay) {
+ _t.play();
+ }
+ } else {
+ try {
+ _t.isHTML5 = false;
+ _t._iO = _policyFix(_loopFix(_t._iO));
+ if (_fV === 8) {
+ _s.o._load(_t.sID, _t._iO.url, _t._iO.stream, _t._iO.autoPlay, (_t._iO.whileloading?1:0), _t._iO.loops||1, _t._iO.usePolicyFile);
+ } else {
+ _s.o._load(_t.sID, _t._iO.url, _t._iO.stream?true:false, _t._iO.autoPlay?true:false, _t._iO.loops||1, _t._iO.autoLoad?true:false, _t._iO.usePolicyFile);
+ }
+ } catch(e) {
+ _wDS('smError', 2);
+ _debugTS('onload', false);
+ _die();
+ }
+ }
+ return _t;
+ };
+
+ this.unload = function() {
+ // Flash 8/AS2 can't "close" a stream - fake it by loading an empty MP3
+ // Flash 9/AS3: Close stream, preventing further load
+ if (_t.readyState !== 0) {
+ _s._wD('SMSound.unload(): "' + _t.sID + '"');
+ if (!_t.isHTML5) {
+ if (_fV === 8) {
+ _s.o._unload(_t.sID, _s.nullURL);
+ } else {
+ _s.o._unload(_t.sID);
+ }
+ } else {
+ _stop_html5_timer();
+ if (_a) {
+ // abort()-style method here, stop loading? (doesn't exist?)
+ _a.pause();
+ _a.src = _s.nullURL; // needed? does nulling object work? any better way to cancel/unload/abort?
+ _a.load();
+ _t._audio = null;
+ _a = null;
+ // delete _t._audio;
+ }
+ }
+ // reset load/status flags
+ _resetProperties();
+ }
+ return _t;
+ };
+
+ this.destruct = function(_bFromSM) {
+ _s._wD('SMSound.destruct(): "' + _t.sID + '"');
+ if (!_t.isHTML5) {
+ // kill sound within Flash
+ // Disable the onfailure handler
+ _t._iO.onfailure = null;
+ _s.o._destroySound(_t.sID);
+ } else {
+ _stop_html5_timer();
+ if (_a) {
+ _a.pause();
+ _a.src = 'about:blank';
+ _a.load();
+ _t._audio = null;
+ _a = null;
+ // delete _t._audio;
+ }
+ }
+ if (!_bFromSM) {
+ _s.destroySound(_t.sID, true); // ensure deletion from controller
+ }
+ };
+
+ this.play = function(oOptions, _updatePlayState) {
+ var fN = 'SMSound.play(): ', allowMulti;
+ _updatePlayState = (typeof _updatePlayState === 'undefined' ? true : _updatePlayState);
+ if (!oOptions) {
+ oOptions = {};
+ }
+ _t._iO = _mixin(oOptions, _t._iO);
+ _t._iO = _mixin(_t._iO, _t.options);
+ _t.instanceOptions = _t._iO;
+ if (_t._iO.serverURL) {
+ if (!_t.connected) {
+ if (!_t.getAutoPlay()) {
+ _s._wD(fN+' Netstream not connected yet - setting autoPlay');
+ _t.setAutoPlay(true);
+ }
+ return _t;
+ }
+ }
+ if (_html5OK(_t._iO)) {
+ _t._setup_html5(_t._iO);
+ _start_html5_timer();
+ }
+ // KJV paused sounds have playState 1. We want these sounds to play.
+ if (_t.playState === 1 && !_t.paused) {
+ allowMulti = _t._iO.multiShot;
+ if (!allowMulti) {
+ _s._wD(fN + '"' + _t.sID + '" already playing (one-shot)', 1);
+ return _t;
+ } else {
+ _s._wD(fN + '"' + _t.sID + '" already playing (multi-shot)', 1);
+ if (_t.isHTML5) {
+ // TODO: BUG?
+ _t.setPosition(_t._iO.position);
+ }
+ }
+ }
+ if (!_t.loaded) {
+ if (_t.readyState === 0) {
+ _s._wD(fN + 'Attempting to load "' + _t.sID + '"', 1);
+ // try to get this sound playing ASAP
+ if (!_t.isHTML5) {
+ if (!_t._iO.serverURL) {
+ _t._iO.autoPlay = true;
+ _t.load(_t._iO);
+ }
+ } else {
+ _t.load(_t._iO);
+ _t.readyState = 1;
+ }
+ } else if (_t.readyState === 2) {
+ _s._wD(fN + 'Could not load "' + _t.sID + '" - exiting', 2);
+ return _t;
+ } else {
+ _s._wD(fN + '"' + _t.sID + '" is loading - attempting to play..', 1);
+ }
+ } else {
+ _s._wD(fN + '"' + _t.sID + '"');
+ }
+ // Streams will pause when their buffer is full if they are not auto-playing.
+ // In this case paused is true, but the song hasn't started playing yet. If
+ // we just call resume() the onplay() callback will never be called.
+
+ // Also, if we just call resume() in this case and the sound has been muted
+ // (volume is 0), it will never have its volume set so sound will be heard
+ // when it shouldn't.
+ if (_t.paused && _t.position && _t.position > 0) { // https://gist.github.com/37b17df75cc4d7a90bf6
+ _s._wD(fN + '"' + _t.sID + '" is resuming from paused state',1);
+ _t.resume();
+ } else {
+ _s._wD(fN+'"'+ _t.sID+'" is starting to play');
+ _t.playState = 1;
+ _t.paused = false;
+ if (!_t.instanceCount || _t._iO.multiShotEvents || (_fV > 8 && !_t.isHTML5 && !_t.getAutoPlay())) {
+ _t.instanceCount++;
+ }
+ _t.position = (typeof _t._iO.position !== 'undefined' && !isNaN(_t._iO.position)?_t._iO.position:0);
+ _t._iO = _policyFix(_loopFix(_t._iO));
+ if (_t._iO.onplay && _updatePlayState) {
+ _t._iO.onplay.apply(_t);
+ }
+ _t.setVolume(_t._iO.volume, true);
+ _t.setPan(_t._iO.pan, true);
+ if (!_t.isHTML5) {
+ _s.o._start(_t.sID, _t._iO.loops || 1, (_fV === 9?_t.position:_t.position / 1000));
+ } else {
+ _start_html5_timer();
+ _t._setup_html5().play();
+ }
+ }
+ return _t;
+ };
+
+ this.start = this.play; // just for convenience
+
+ this.stop = function(bAll) {
+ if (_t.playState === 1) {
+ _t._onbufferchange(0);
+ _t.resetOnPosition(0);
+ if (!_t.isHTML5) {
+ _t.playState = 0;
+ }
+ _t.paused = false;
+ if (_t._iO.onstop) {
+ _t._iO.onstop.apply(_t);
+ }
+ if (!_t.isHTML5) {
+ _s.o._stop(_t.sID, bAll);
+ // hack for netStream: just unload
+ if (_t._iO.serverURL) {
+ _t.unload();
+ }
+ } else {
+ if (_a) {
+ _t.setPosition(0); // act like Flash, though
+ _a.pause(); // html5 has no stop()
+ _t.playState = 0;
+ _t._onTimer(); // and update UI
+ _stop_html5_timer();
+ _t.unload();
+ }
+ }
+ _t.instanceCount = 0;
+ _t._iO = {};
+ }
+ return _t;
+ };
+
+ this.setAutoPlay = function(autoPlay) {
+ _s._wD('sound '+_t.sID+' turned autoplay ' + (autoPlay ? 'on' : 'off'));
+ _t._iO.autoPlay = autoPlay;
+ _s.o._setAutoPlay(_t.sID, autoPlay);
+ if (autoPlay) {
+ // KJV Only increment the instanceCount if the sound isn't loaded (TODO: verify RTMP)
+ if (!_t.instanceCount && _t.readyState === 1) {
+ _t.instanceCount++;
+ _s._wD('sound '+_t.sID+' incremented instance count to '+_t.instanceCount);
+ }
+ }
+ };
+
+ this.getAutoPlay = function() {
+ return _t._iO.autoPlay;
+ };
+
+ this.setPosition = function(nMsecOffset, bNoDebug) {
+ if (nMsecOffset === undefined) {
+ nMsecOffset = 0;
+ }
+ // KJV Use the duration from the instance options, if we don't have a track duration yet.
+ // Auto-loading streams with a starting position in their options will start playing
+ // as soon as they connect. In the start() call we set the position on the stream,
+ // but because the stream hasn't played _t.duration won't have been set (that is
+ // done in whileloading()). So if we don't have a duration yet, use the duration
+ // from the instance options, if available.
+ var position, offset = (_t.isHTML5 ? Math.max(nMsecOffset,0) : Math.min(_t.duration || _t._iO.duration, Math.max(nMsecOffset, 0))); // position >= 0 and <= current available (loaded) duration
+ _t.position = offset;
+ _t.resetOnPosition(_t.position);
+ if (!_t.isHTML5) {
+ position = _fV === 9 ? _t.position : _t.position / 1000;
+ // KJV We want our sounds to play on seek. A progressive download that
+ // is loaded has paused = false so resume() does nothing and the sound
+ // doesn't play. Handle that case here.
+ if (_t.playState === 0) {
+ _t.play({ position: position });
+ } else {
+ _s.o._setPosition(_t.sID, position, (_t.paused || !_t.playState)); // if paused or not playing, will not resume (by playing)
+ // if (_t.paused) {
+ // _t.resume();
+ // }
+ }
+ } else if (_a) {
+ _s._wD('setPosition(): setting position to '+(_t.position / 1000));
+ if (_t.playState) {
+ // DOM/JS errors/exceptions to watch out for:
+ // if seek is beyond (loaded?) position, "DOM exception 11"
+ // "INDEX_SIZE_ERR": DOM exception 1
+ try {
+ _a.currentTime = _t.position / 1000;
+ } catch(e) {
+ _s._wD('setPosition('+_t.position+'): WARN: Caught exception: '+e.message, 2);
+ }
+ } else {
+ _s._wD('HTML 5 warning: cannot set position while playState == 0 (not playing)',2);
+ }
+ if (_t.paused) { // if paused, refresh UI right away
+ _t._onTimer(true); // force update
+ if (_t._iO.useMovieStar) {
+ _t.resume();
+ }
+ }
+ }
+ return _t;
+ };
+
+ this.pause = function(bCallFlash) {
+ if (_t.paused || (_t.playState === 0 && _t.readyState !== 1)) {
+ return _t;
+ }
+ _s._wD('SMSound.pause()');
+ _t.paused = true;
+ if (!_t.isHTML5) {
+ if (bCallFlash || bCallFlash === undefined) {
+ _s.o._pause(_t.sID);
+ }
+ } else {
+ _t._setup_html5().pause();
+ _stop_html5_timer();
+ }
+ if (_t._iO.onpause) {
+ _t._iO.onpause.apply(_t);
+ }
+ return _t;
+ };
+
+ this.resume = function() {
+ // When auto-loaded streams pause on buffer full they have a playState of 0.
+ // We need to make sure that the playState is set to 1 when these streams "resume".
+ if (!_t.paused) {
+ return _t;
+ }
+ _s._wD('SMSound.resume()');
+ _t.paused = false;
+ _t.playState = 1; // TODO: verify that this is needed.
+ if (!_t.isHTML5) {
+ _s.o._pause(_t.sID); // flash method is toggle-based (pause/resume)
+ } else {
+ _t._setup_html5().play();
+ _start_html5_timer();
+ }
+ if (_t._iO.onresume) {
+ _t._iO.onresume.apply(_t);
+ }
+ return _t;
+ };
+
+ this.togglePause = function() {
+ _s._wD('SMSound.togglePause()');
+ if (_t.playState === 0) {
+ _t.play({
+ position: (_fV === 9 && !_t.isHTML5 ? _t.position:_t.position / 1000)
+ });
+ return _t;
+ }
+ if (_t.paused) {
+ _t.resume();
+ } else {
+ _t.pause();
+ }
+ return _t;
+ };
+
+ this.setPan = function(nPan, bInstanceOnly) {
+ if (typeof nPan === 'undefined') {
+ nPan = 0;
+ }
+ if (typeof bInstanceOnly === 'undefined') {
+ bInstanceOnly = false;
+ }
+ if (!_t.isHTML5) {
+ _s.o._setPan(_t.sID, nPan);
+ } // else { no HTML5 pan? }
+ _t._iO.pan = nPan;
+ if (!bInstanceOnly) {
+ _t.pan = nPan;
+ }
+ return _t;
+ };
+
+ this.setVolume = function(nVol, bInstanceOnly) {
+ if (typeof nVol === 'undefined') {
+ nVol = 100;
+ }
+ if (typeof bInstanceOnly === 'undefined') {
+ bInstanceOnly = false;
+ }
+ if (!_t.isHTML5) {
+ _s.o._setVolume(_t.sID, (_s.muted && !_t.muted) || _t.muted?0:nVol);
+ } else if (_a) {
+ _a.volume = nVol/100;
+ }
+ _t._iO.volume = nVol;
+ if (!bInstanceOnly) {
+ _t.volume = nVol;
+ }
+ return _t;
+ };
+
+ this.mute = function() {
+ _t.muted = true;
+ if (!_t.isHTML5) {
+ _s.o._setVolume(_t.sID, 0);
+ } else if (_a) {
+ _a.muted = true;
+ }
+ return _t;
+ };
+
+ this.unmute = function() {
+ _t.muted = false;
+ var hasIO = typeof _t._iO.volume !== 'undefined';
+ if (!_t.isHTML5) {
+ _s.o._setVolume(_t.sID, hasIO?_t._iO.volume:_t.options.volume);
+ } else if (_a) {
+ _a.muted = false;
+ }
+ return _t;
+ };
+
+ this.toggleMute = function() {
+ return (_t.muted?_t.unmute():_t.mute());
+ };
+
+ this.onposition = function(nPosition, oMethod, oScope) {
+ // TODO: allow for ranges, too? eg. (nPosition instanceof Array)
+ _t._onPositionItems.push({
+ position: nPosition,
+ method: oMethod,
+ scope: (typeof oScope !== 'undefined'?oScope:_t),
+ fired: false
+ });
+ return _t;
+ };
+
+ this.processOnPosition = function() {
+ var i, item, j = _t._onPositionItems.length;
+ if (!j || !_t.playState || _t._onPositionFired >= j) {
+ return false;
+ }
+ for (i=j; i--;) {
+ item = _t._onPositionItems[i];
+ if (!item.fired && _t.position >= item.position) {
+ item.method.apply(item.scope,[item.position]);
+ item.fired = true;
+ _s._onPositionFired++;
+ }
+ }
+ return true;
+ };
+
+ this.resetOnPosition = function(nPosition) {
+ // reset "fired" for items interested in this position
+ var i, item, j = _t._onPositionItems.length;
+ if (!j) {
+ return false;
+ }
+ for (i=j; i--;) {
+ item = _t._onPositionItems[i];
+ if (item.fired && nPosition <= item.position) {
+ item.fired = false;
+ _s._onPositionFired--;
+ }
+ }
+ return true;
+ };
+
+ // pseudo-private soundManager reference
+
+ this._onTimer = function(bForce) {
+ // HTML 5-only _whileplaying() etc.
+ var time, x = {};
+ if (_t._hasTimer || bForce) {
+ if (_a && (bForce || ((_t.playState > 0 || _t.readyState === 1) && !_t.paused))) { // TODO: May not need to track readyState (1 = loading)
+ _t.duration = _get_html5_duration();
+ _t.durationEstimate = _t.duration;
+ time = _a.currentTime?_a.currentTime*1000:0;
+ _t._whileplaying(time,x,x,x,x);
+ return true;
+ } else {
+ _s._wD('_onTimer: Warn for "'+_t.sID+'": '+(!_a?'Could not find element. ':'')+(_t.playState === 0?'playState bad, 0?':'playState = '+_t.playState+', OK'));
+ return false;
+ }
+ }
+ };
+
+ // --- private internals ---
+
+ _get_html5_duration = function() {
+ var d = (_a?_a.duration*1000:undefined);
+ return (d && !isNaN(d)?d:null);
+ };
+
+ _start_html5_timer = function() {
+ if (_t.isHTML5) {
+ _startTimer(_t);
+ }
+ };
+
+ _stop_html5_timer = function() {
+ if (_t.isHTML5) {
+ _stopTimer(_t);
+ }
+ };
+
+ _resetProperties = function(bLoaded) {
+ _t._onPositionItems = [];
+ _t._onPositionFired = 0;
+ _t._hasTimer = null;
+ _t._added_events = null;
+ _t._audio = null;
+ _a = null;
+ _t.bytesLoaded = null;
+ _t.bytesTotal = null;
+ _t.position = null;
+ _t.duration = (_t._iO && _t._iO.duration?_t._iO.duration:null);
+ _t.durationEstimate = null;
+ _t.failures = 0;
+ _t.loaded = false;
+ _t.playState = 0;
+ _t.paused = false;
+ _t.readyState = 0; // 0 = uninitialised, 1 = loading, 2 = failed/error, 3 = loaded/success
+ _t.muted = false;
+ _t.didBeforeFinish = false;
+ _t.didJustBeforeFinish = false;
+ _t.isBuffering = false;
+ _t.instanceOptions = {};
+ _t.instanceCount = 0;
+ _t.peakData = {
+ left: 0,
+ right: 0
+ };
+ _t.waveformData = {
+ left: [],
+ right: []
+ };
+ _t.eqData = []; // legacy: 1D array
+ _t.eqData.left = [];
+ _t.eqData.right = [];
+ };
+
+ _resetProperties();
+
+ // pseudo-private methods used by soundManager
+
+ this._setup_html5 = function(oOptions) {
+ var _iO = _mixin(_t._iO, oOptions);
+ if (_a) {
+ if (_t.url !== _iO.url) {
+ _s._wD('setting new URL on existing object: '+_iO.url);
+ _a.src = _iO.url;
+ }
+ } else {
+ _s._wD('creating HTML 5 audio element with URL: '+_iO.url);
+ _t._audio = new Audio(_iO.url);
+ _a = _t._audio;
+ _t.isHTML5 = true;
+ _add_html5_events();
+ }
+ _a.loop = (_iO.loops>1?'loop':'');
+ return _t._audio;
+ };
+
+ // related private methods
+
+ _add_html5_events = function() {
+ if (_t._added_events) {
+ return false;
+ }
+ _t._added_events = true;
+
+ function _add(oEvt, oFn, bCapture) {
+ return (_a ? _a.addEventListener(oEvt, oFn, bCapture||false) : null);
+ }
+
+ _add('load', function(e) {
+ _s._wD('HTML5::load: '+_t.sID);
+ if (_a) {
+ _t._onbufferchange(0);
+ _t._whileloading(_t.bytesTotal, _t.bytesTotal, _get_html5_duration());
+ _t._onload(true);
+ }
+ }, false);
+
+ _add('canplay', function(e) {
+ _s._wD('HTML5::canplay: '+_t.sID);
+ // enough has loaded to play
+ _t._onbufferchange(0);
+ },false);
+
+ _add('waiting', function(e) {
+ _s._wD('HTML5::waiting: '+_t.sID);
+ // playback faster than download rate, etc.
+ _t._onbufferchange(1);
+ },false);
+
+ _add('progress', function(e) { // not supported everywhere yet..
+ _s._wD('HTML5::progress: '+_t.sID+': loaded/total: '+(e.loaded||0)+'/'+(e.total||1));
+ if (!_t.loaded && _a) {
+ _t._onbufferchange(0); // if progress, likely not buffering
+ _t._whileloading(e.loaded||0, e.total||1, _get_html5_duration());
+ }
+ }, false);
+
+ _add('error', function(e) {
+ if (_a) {
+ _s._wD('HTML5::error: '+_a.error.code);
+ // call load with error state?
+ _t._onload(false);
+ }
+ }, false);
+
+ _add('loadstart', function(e) {
+ _s._wD('HTML5::loadstart: '+_t.sID);
+ // assume buffering at first
+ _t._onbufferchange(1);
+ }, false);
+
+ _add('play', function(e) {
+ _s._wD('HTML5::play: '+_t.sID);
+ // once play starts, no buffering
+ _t._onbufferchange(0);
+ }, false);
+
+ // TODO: verify if this is actually implemented anywhere yet.
+ _add('playing', function(e) {
+ _s._wD('HTML5::playing: '+_t.sID);
+ // once play starts, no buffering
+ _t._onbufferchange(0);
+ }, false);
+
+ _add('timeupdate', function(e) {
+ _t._onTimer();
+ }, false);
+
+ // avoid stupid premature event-firing bug in Safari(?)
+ setTimeout(function(){
+ if (_t && _a) {
+ _add('ended',function(e) {
+ _s._wD('HTML5::ended: '+_t.sID);
+ _t._onfinish();
+ }, false);
+ }
+ }, 250);
+ return true;
+ };
+
+ // --- "private" methods called by Flash ---
+
+ this._whileloading = function(nBytesLoaded, nBytesTotal, nDuration, nBufferLength) {
+ _t.bytesLoaded = nBytesLoaded;
+ _t.bytesTotal = nBytesTotal;
+ _t.duration = Math.floor(nDuration);
+ _t.bufferLength = nBufferLength;
+ if (!_t._iO.isMovieStar) {
+ if (_t._iO.duration) {
+ // use options, if specified and larger
+ _t.durationEstimate = (_t.duration > _t._iO.duration) ? _t.duration : _t._iO.duration;
+ } else {
+ _t.durationEstimate = parseInt((_t.bytesTotal / _t.bytesLoaded) * _t.duration, 10);
+ }
+ if (_t.durationEstimate === undefined) {
+ _t.durationEstimate = _t.duration;
+ }
+ _t.bufferLength = nBufferLength;
+ if (_t.readyState !== 3 && _t._iO.whileloading) {
+ _t._iO.whileloading.apply(_t);
+ }
+ } else {
+ _t.durationEstimate = _t.duration;
+ if (_t.readyState !== 3 && _t._iO.whileloading) {
+ _t._iO.whileloading.apply(_t);
+ }
+ }
+ };
+
+ this._onid3 = function(oID3PropNames, oID3Data) {
+ // oID3PropNames: string array (names)
+ // ID3Data: string array (data)
+ _s._wD('SMSound._onid3(): "' + this.sID + '" ID3 data received.');
+ var oData = [], i, j;
+ for (i = 0, j = oID3PropNames.length; i < j; i++) {
+ oData[oID3PropNames[i]] = oID3Data[i];
+ }
+ _t.id3 = _mixin(_t.id3, oData);
+ if (_t._iO.onid3) {
+ _t._iO.onid3.apply(_t);
+ }
+ };
+
+ this._whileplaying = function(nPosition, oPeakData, oWaveformDataLeft, oWaveformDataRight, oEQData) {
+ if (isNaN(nPosition) || nPosition === null) {
+ return false; // Flash may return NaN at times
+ }
+ if (_t.playState === 0 && nPosition > 0) {
+ // invalid position edge case for end/stop
+ nPosition = 0;
+ }
+ _t.position = nPosition;
+ _t.processOnPosition();
+ if (_fV > 8 && !_t.isHTML5) {
+ if (_t._iO.usePeakData && typeof oPeakData !== 'undefined' && oPeakData) {
+ _t.peakData = {
+ left: oPeakData.leftPeak,
+ right: oPeakData.rightPeak
+ };
+ }
+ if (_t._iO.useWaveformData && typeof oWaveformDataLeft !== 'undefined' && oWaveformDataLeft) {
+ _t.waveformData = {
+ left: oWaveformDataLeft.split(','),
+ right: oWaveformDataRight.split(',')
+ };
+ }
+ if (_t._iO.useEQData) {
+ if (typeof oEQData !== 'undefined' && oEQData && oEQData.leftEQ) {
+ var eqLeft = oEQData.leftEQ.split(',');
+ _t.eqData = eqLeft;
+ _t.eqData.left = eqLeft;
+ if (typeof oEQData.rightEQ !== 'undefined' && oEQData.rightEQ) {
+ _t.eqData.right = oEQData.rightEQ.split(',');
+ }
+ }
+ }
+ }
+ if (_t.playState === 1) {
+ // special case/hack: ensure buffering is false if loading from cache (and not yet started)
+ if (!_t.isHTML5 && _s.flashVersion === 8 && !_t.position && _t.isBuffering) {
+ _t._onbufferchange(0);
+ }
+ if (_t._iO.whileplaying) {
+ _t._iO.whileplaying.apply(_t); // flash may call after actual finish
+ }
+ if ((_t.loaded || (!_t.loaded && _t._iO.isMovieStar)) && _t._iO.onbeforefinish && _t._iO.onbeforefinishtime && !_t.didBeforeFinish && _t.duration - _t.position <= _t._iO.onbeforefinishtime) {
+ _t._onbeforefinish();
+ }
+ }
+ return true;
+ };
+
+ this._onconnect = function(bSuccess) {
+ var fN = 'SMSound._onconnect(): ';
+ bSuccess = (bSuccess === 1);
+ _s._wD(fN+'"'+_t.sID+'"'+(bSuccess?' connected.':' failed to connect? - '+_t.url), (bSuccess?1:2));
+ _t.connected = bSuccess;
+ if (bSuccess) {
+ _t.failures = 0;
+ if (_t._iO.onconnect) {
+ _t._iO.onconnect.apply(_t,[bSuccess]);
+ }
+ // don't play if the sound is being destroyed
+ if (_idCheck(_t.sID) && (_t.options.autoLoad || _t.getAutoPlay())) {
+ _t.play(undefined, _t.getAutoPlay()); // only update the play state if auto playing
+ }
+ }
+ };
+
+ this._onload = function(nSuccess) {
+ var fN = 'SMSound._onload(): ', loadOK = (nSuccess?true:false);
+ _s._wD(fN + '"' + _t.sID + '"' + (loadOK?' loaded.':' failed to load? - ' + _t.url), (loadOK?1:2));
+ // <d>
+ if (!loadOK && !_t.isHTML5) {
+ if (_s.sandbox.noRemote === true) {
+ _s._wD(fN + _str('noNet'), 1);
+ }
+ if (_s.sandbox.noLocal === true) {
+ _s._wD(fN + _str('noLocal'), 1);
+ }
+ }
+ // </d>
+ _t.loaded = loadOK;
+ _t.readyState = loadOK?3:2;
+ _t._onbufferchange(0);
+ if (_t._iO.onload) {
+ _t._iO.onload.apply(_t, [loadOK]);
+ }
+ return true;
+ };
+
+ // fire onfailure() only once at most
+ // at this point we just recreate failed sounds rather than trying to reconnect.
+ this._onfailure = function(msg, level, code) {
+ _t.failures++;
+ _s._wD('SMSound._onfailure(): "'+_t.sID+'" count '+_t.failures);
+ if (_t._iO.onfailure && _t.failures === 1) {
+ _t._iO.onfailure(_t, msg, level, code);
+ } else {
+ _s._wD('SMSound._onfailure(): ignoring');
+ }
+ };
+
+ this._onbeforefinish = function() {
+ if (!_t.didBeforeFinish) {
+ _t.didBeforeFinish = true;
+ if (_t._iO.onbeforefinish) {
+ _s._wD('SMSound._onbeforefinish(): "' + _t.sID + '"');
+ _t._iO.onbeforefinish.apply(_t);
+ }
+ }
+ };
+
+ this._onjustbeforefinish = function(msOffset) {
+ if (!_t.didJustBeforeFinish) {
+ _t.didJustBeforeFinish = true;
+ if (_t._iO.onjustbeforefinish) {
+ _s._wD('SMSound._onjustbeforefinish(): "' + _t.sID + '"');
+ _t._iO.onjustbeforefinish.apply(_t);
+ }
+ }
+ };
+
+ // KJV - connect & play time callback from Flash
+ this._onstats = function(stats) {
+ if (_t._iO.onstats) {
+ _t._iO.onstats(_t, stats);
+ }
+ };
+
+ this._onfinish = function() {
+ // _s._wD('SMSound._onfinish(): "' + _t.sID + '" got instanceCount '+_t.instanceCount);
+ _t._onbufferchange(0);
+ _t.resetOnPosition(0);
+ if (_t._iO.onbeforefinishcomplete) {
+ _t._iO.onbeforefinishcomplete.apply(_t);
+ }
+ // reset some state items
+ _t.didBeforeFinish = false;
+ _t.didJustBeforeFinish = false;
+ if (_t.instanceCount) {
+ _t.instanceCount--;
+ if (!_t.instanceCount) {
+ // reset instance options
+ _t.playState = 0;
+ _t.paused = false;
+ _t.instanceCount = 0;
+ _t.instanceOptions = {};
+ _stop_html5_timer();
+ }
+ if (!_t.instanceCount || _t._iO.multiShotEvents) {
+ // fire onfinish for last, or every instance
+ if (_t._iO.onfinish) {
+ _s._wD('SMSound._onfinish(): "' + _t.sID + '"');
+ _t._iO.onfinish.apply(_t);
+ }
+ }
+ }
+ };
+
+ this._onbufferchange = function(nIsBuffering) {
+ var fN = 'SMSound._onbufferchange()';
+ if (_t.playState === 0) {
+ // ignore if not playing
+ return false;
+ }
+ if ((nIsBuffering && _t.isBuffering) || (!nIsBuffering && !_t.isBuffering)) {
+ return false;
+ }
+ _t.isBuffering = (nIsBuffering === 1);
+ if (_t._iO.onbufferchange) {
+ _s._wD(fN + ': ' + nIsBuffering);
+ _t._iO.onbufferchange.apply(_t);
+ }
+ return true;
+ };
+
+ this._ondataerror = function(sError) {
+ // flash 9 wave/eq data handler
+ if (_t.playState > 0) { // hack: called at start, and end from flash at/after onfinish()
+ _s._wD('SMSound._ondataerror(): ' + sError);
+ if (_t._iO.ondataerror) {
+ _t._iO.ondataerror.apply(_t);
+ }
+ }
+ };
+
+ }; // SMSound()
+
+ // --- private SM2 internals ---
+
+ _getDocument = function() {
+ return (_doc.body?_doc.body:(_doc._docElement?_doc.documentElement:_doc.getElementsByTagName('div')[0]));
+ };
+
+ _id = function(sID) {
+ return _doc.getElementById(sID);
+ };
+
+ _mixin = function(oMain, oAdd) {
+ // non-destructive merge
+ var o1 = {}, i, o2, o;
+ for (i in oMain) { // clone c1
+ if (oMain.hasOwnProperty(i)) {
+ o1[i] = oMain[i];
+ }
+ }
+ o2 = (typeof oAdd === 'undefined'?_s.defaultOptions:oAdd);
+ for (o in o2) {
+ if (o2.hasOwnProperty(o) && typeof o1[o] === 'undefined') {
+ o1[o] = o2[o];
+ }
+ }
+ return o1;
+ };
+
+ (function() {
+ var old = (_win.attachEvent),
+ evt = {
+ add: (old?'attachEvent':'addEventListener'),
+ remove: (old?'detachEvent':'removeEventListener')
+ };
+
+ function getArgs(oArgs) {
+ var args = _slice.call(oArgs), len = args.length;
+ if (old) {
+ args[1] = 'on' + args[1]; // prefix
+ if (len > 3) {
+ args.pop(); // no capture
+ }
+ } else if (len === 3) {
+ args.push(false);
+ }
+ return args;
+ }
+
+ function apply(args, sType) {
+ var oFunc = args.shift()[evt[sType]];
+ if (old) {
+ oFunc(args[0], args[1]);
+ } else {
+ oFunc.apply(this, args);
+ }
+ }
+
+ _addEvt = function() {
+ apply(getArgs(arguments), 'add');
+ };
+
+ _removeEvt = function() {
+ apply(getArgs(arguments), 'remove');
+ };
+ }());
+
+ _html5OK = function(iO) {
+ return ((iO.type?_html5CanPlay({type:iO.type}):false)||_html5CanPlay(iO.url));
+ };
+
+ _html5CanPlay = function(sURL) {
+ // try to find MIME, test and return truthiness
+ if (!_s.useHTML5Audio || !_s.hasHTML5) {
+ return false;
+ }
+ var result, mime, fileExt, item, aF = _s.audioFormats;
+ if (!_html5Ext) {
+ _html5Ext = [];
+ for (item in aF) {
+ if (aF.hasOwnProperty(item)) {
+ _html5Ext.push(item);
+ if (aF[item].related) {
+ _html5Ext = _html5Ext.concat(aF[item].related);
+ }
+ }
+ }
+ _html5Ext = new RegExp('\\.('+_html5Ext.join('|')+')','i');
+ }
+ mime = (typeof sURL.type !== 'undefined'?sURL.type:null);
+ fileExt = (typeof sURL === 'string'?sURL.toLowerCase().match(_html5Ext):null); // TODO: Strip URL queries, etc.
+ if (!fileExt || !fileExt.length) {
+ if (!mime) {
+ return false;
+ }
+ } else {
+ fileExt = fileExt[0].substr(1); // "mp3", for example
+ }
+ if (fileExt && typeof _s.html5[fileExt] !== 'undefined') {
+ // result known
+ return _s.html5[fileExt];
+ } else {
+ if (!mime) {
+ if (fileExt && _s.html5[fileExt]) {
+ return _s.html5[fileExt];
+ } else {
+ // best-case guess, audio/whatever-dot-filename-format-you're-playing
+ mime = 'audio/'+fileExt;
+ }
+ }
+ result = _s.html5.canPlayType(mime);
+ _s.html5[fileExt] = result;
+ // _s._wD('canPlayType, found result: '+result);
+ return result;
+ }
+ };
+
+ _testHTML5 = function() {
+ if (!_s.useHTML5Audio || typeof Audio === 'undefined') {
+ return false;
+ }
+ var a = (typeof Audio !== 'undefined' ? new Audio():null), item, support = {}, aF, i;
+ function _cp(m) {
+ var canPlay, i, j, isOK = false;
+ if (!a || typeof a.canPlayType !== 'function') {
+ return false;
+ }
+ if (m instanceof Array) {
+ // iterate through all mime types, return any successes
+ for (i=0, j=m.length; i<j && !isOK; i++) {
+ if (_s.html5[m[i]] || a.canPlayType(m[i]).match(_s.html5Test)) {
+ isOK = true;
+ _s.html5[m[i]] = true;
+ }
+ }
+ return isOK;
+ } else {
+ canPlay = (a && typeof a.canPlayType === 'function' ? a.canPlayType(m) : false);
+ return (canPlay && (canPlay.match(_s.html5Test)?true:false));
+ }
+ }
+ // test all registered formats + codecs
+ aF = _s.audioFormats;
+ for (item in aF) {
+ if (aF.hasOwnProperty(item)) {
+ support[item] = _cp(aF[item].type);
+ // assign result to related formats, too
+ if (aF[item] && aF[item].related) {
+ for (i=0; i<aF[item].related.length; i++) {
+ _s.html5[aF[item].related[i]] = support[item];
+ }
+ }
+ }
+ }
+ support.canPlayType = (a?_cp:null);
+ _s.html5 = _mixin(_s.html5, support);
+ return true;
+ };
+
+ _strings = {
+ // <d>
+ notReady: 'Not loaded yet - wait for soundManager.onload()/onready()',
+ notOK: 'Audio support is not available.',
+ appXHTML: _sm + '::createMovie(): appendChild/innerHTML set failed. May be app/xhtml+xml DOM-related.',
+ spcWmode: _sm + '::createMovie(): Removing wmode, preventing win32 below-the-fold SWF loading issue',
+ swf404: _sm + ': Verify that %s is a valid path.',
+ tryDebug: 'Try ' + _sm + '.debugFlash = true for more security details (output goes to SWF.)',
+ checkSWF: 'See SWF output for more debug info.',
+ localFail: _sm + ': Non-HTTP page (' + _doc.location.protocol + ' URL?) Review Flash player security settings for this special case:\nhttp://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html\nMay need to add/allow path, eg. c:/sm2/ or /users/me/sm2/',
+ waitFocus: _sm + ': Special case: Waiting for focus-related event..',
+ waitImpatient: _sm + ': Getting impatient, still waiting for Flash%s...',
+ waitForever: _sm + ': Waiting indefinitely for Flash (will recover if unblocked)...',
+ needFunction: _sm + '.onready(): Function object expected',
+ badID: 'Warning: Sound ID "%s" should be a string, starting with a non-numeric character',
+ noMS: 'MovieStar mode not enabled. Exiting.',
+ currentObj: '--- ' + _sm + '._debug(): Current sound objects ---',
+ waitEI: _sm + '::initMovie(): Waiting for ExternalInterface call from Flash..',
+ waitOnload: _sm + ': Waiting for window.onload()',
+ docLoaded: _sm + ': Document already loaded',
+ onload: _sm + '::initComplete(): calling soundManager.onload()',
+ onloadOK: _sm + '.onload() complete',
+ init: '-- ' + _sm + '::init() --',
+ didInit: _sm + '::init(): Already called?',
+ flashJS: _sm + ': Attempting to call Flash from JS..',
+ noPolling: _sm + ': Polling (whileloading()/whileplaying() support) is disabled.',
+ secNote: 'Flash security note: Network/internet URLs will not load due to security restrictions. Access can be configured via Flash Player Global Security Settings Page: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html',
+ badRemove: 'Warning: Failed to remove flash movie.',
+ noPeak: 'Warning: peakData features unsupported for movieStar formats',
+ shutdown: _sm + '.disable(): Shutting down',
+ queue: _sm + '.onready(): Queueing handler',
+ smFail: _sm + ': Failed to initialise.',
+ smError: 'SMSound.load(): Exception: JS-Flash communication failed, or JS error.',
+ fbTimeout: 'No flash response, applying .'+_s.swfCSS.swfTimedout+' CSS..',
+ fbLoaded: 'Flash loaded',
+ fbHandler: 'soundManager::flashBlockHandler()',
+ manURL: 'SMSound.load(): Using manually-assigned URL',
+ onURL: _sm + '.load(): current URL already assigned.',
+ badFV: 'soundManager.flashVersion must be 8 or 9. "%s" is invalid. Reverting to %s.',
+ as2loop: 'Note: Setting stream:false so looping can work (flash 8 limitation)',
+ noNSLoop: 'Note: Looping not implemented for MovieStar formats',
+ needfl9: 'Note: Switching to flash 9, required for MP4 formats.',
+ mfTimeout: 'Setting flashLoadTimeout = 0 (infinite) for off-screen, mobile flash case',
+ mfOn: 'mobileFlash::enabling on-screen flash repositioning',
+ policy: 'Enabling usePolicyFile for data access'
+ // </d>
+ };
+
+ _id = function(sID) {
+ return _doc.getElementById(sID);
+ };
+
+ _str = function() { // o [,items to replace]
+ // <d>
+ var args = _slice.call(arguments), // real array, please
+ o = args.shift(), // first arg
+ str = (_strings && _strings[o]?_strings[o]:''), i, j;
+ if (str && args && args.length) {
+ for (i = 0, j = args.length; i < j; i++) {
+ str = str.replace('%s', args[i]);
+ }
+ }
+ return str;
+ // </d>
+ };
+
+ _loopFix = function(sOpt) {
+ // flash 8 requires stream = false for looping to work
+ if (_fV === 8 && sOpt.loops > 1 && sOpt.stream) {
+ _wDS('as2loop');
+ sOpt.stream = false;
+ }
+ return sOpt;
+ };
+
+ _policyFix = function(sOpt, sPre) {
+ if (sOpt && !sOpt.usePolicyFile && (sOpt.onid3 || sOpt.usePeakData || sOpt.useWaveformData || sOpt.useEQData)) {
+ _s._wD((sPre?sPre+':':'') + _str('policy'));
+ sOpt.usePolicyFile = true;
+ }
+ return sOpt;
+ };
+
+ _complain = function(sMsg) {
+ if (typeof console !== 'undefined' && typeof console.warn !== 'undefined') {
+ console.warn(sMsg);
+ } else {
+ _s._wD(sMsg);
+ }
+ };
+
+ _doNothing = function() {
+ return false;
+ };
+
+ _disableObject = function(o) {
+ for (var oProp in o) {
+ if (o.hasOwnProperty(oProp) && typeof o[oProp] === 'function') {
+ o[oProp] = _doNothing;
+ }
+ }
+ oProp = null;
+ };
+
+ _failSafely = function(bNoDisable) {
+ // general failure exception handler
+ if (typeof bNoDisable === 'undefined') {
+ bNoDisable = false;
+ }
+ if (_disabled || bNoDisable) {
+ _wDS('smFail', 2);
+ _s.disable(bNoDisable);
+ }
+ };
+
+ _normalizeMovieURL = function(smURL) {
+ var urlParams = null;
+ if (smURL) {
+ if (smURL.match(/\.swf(\?\.*)?$/i)) {
+ urlParams = smURL.substr(smURL.toLowerCase().lastIndexOf('.swf?') + 4);
+ if (urlParams) {
+ return smURL; // assume user knows what they're doing
+ }
+ } else if (smURL.lastIndexOf('/') !== smURL.length - 1) {
+ smURL = smURL + '/';
+ }
+ }
+ return (smURL && smURL.lastIndexOf('/') !== - 1?smURL.substr(0, smURL.lastIndexOf('/') + 1):'./') + _s.movieURL;
+ };
+
+ _setVersionInfo = function() {
+ if (_fV !== 8 && _fV !== 9) {
+ _s._wD(_str('badFV', _fV, _defaultFlashVersion));
+ _s.flashVersion = _defaultFlashVersion;
+ }
+ var isDebug = (_s.debugMode || _s.debugFlash?'_debug.swf':'.swf'); // debug flash movie, if applicable
+ if (_s.flashVersion < 9 && _s.useHTML5Audio && _s.audioFormats.mp4.required) {
+ _s._wD(_str('needfl9'));
+ _s.flashVersion = 9;
+ }
+ _fV = _s.flashVersion; // short-hand for internal use
+ _s.version = _s.versionNumber + (_html5Only?' (HTML5-only mode)':(_fV === 9?' (AS3/Flash 9)':' (AS2/Flash 8)'));
+ // set up default options
+ if (_fV > 8) {
+ _s.defaultOptions = _mixin(_s.defaultOptions, _s.flash9Options);
+ _s.features.buffering = true;
+ }
+ if (_fV > 8 && _s.useMovieStar) {
+ // flash 9+ support for movieStar formats as well as MP3
+ _s.defaultOptions = _mixin(_s.defaultOptions, _s.movieStarOptions);
+ _s.filePatterns.flash9 = new RegExp('\\.(mp3|' + _s.netStreamTypes.join('|') + ')(\\?.*)?$', 'i');
+ _s.mimePattern = _s.netStreamMimeTypes;
+ _s.features.movieStar = true;
+ } else {
+ _s.features.movieStar = false;
+ }
+ _s.filePattern = _s.filePatterns[(_fV !== 8?'flash9':'flash8')];
+ _s.movieURL = (_fV === 8?'soundmanager2.swf':'soundmanager2_flash9.swf').replace('.swf',isDebug);
+ _s.features.peakData = _s.features.waveformData = _s.features.eqData = (_fV > 8);
+ };
+
+ _setPolling = function(bPolling, bHighPerformance) {
+ if (!_s.o || !_s.allowPolling) {
+ return false;
+ }
+ _s.o._setPolling(bPolling, bHighPerformance);
+ };
+
+ (function() {
+ var old = (_win.attachEvent),
+ evt = {
+ add: (old?'attachEvent':'addEventListener'),
+ remove: (old?'detachEvent':'removeEventListener')
+ };
+
+ function getArgs(oArgs) {
+ var args = _slice.call(oArgs), len = args.length;
+ if (old) {
+ args[1] = 'on' + args[1]; // prefix
+ if (len > 3) {
+ args.pop(); // no capture
+ }
+ } else if (len === 3) {
+ args.push(false);
+ }
+ return args;
+ }
+
+ function apply(args, sType) {
+ var oFunc = args.shift()[evt[sType]];
+ if (old) {
+ oFunc(args[0], args[1]);
+ } else {
+ oFunc.apply(this, args);
+ }
+ }
+
+ _addEvt = function() {
+ apply(getArgs(arguments), 'add');
+ };
+
+ _removeEvt = function() {
+ apply(getArgs(arguments), 'remove');
+ };
+ }());
+
+ function _initDebug() {
+ if (_s.debugURLParam.test(_wl)) {
+ _s.debugMode = true; // allow force of debug mode via URL
+ }
+ // <d>
+ if (_id(_s.debugID)) {
+ return false;
+ }
+ var oD, oDebug, oTarget, oToggle, tmp;
+ if (_s.debugMode && !_id(_s.debugID) && ((!_hasConsole || !_s.useConsole) || (_s.useConsole && _hasConsole && !_s.consoleOnly))) {
+ oD = _doc.createElement('div');
+ oD.id = _s.debugID + '-toggle';
+ oToggle = {
+ 'position': 'fixed',
+ 'bottom': '0px',
+ 'right': '0px',
+ 'width': '1.2em',
+ 'height': '1.2em',
+ 'lineHeight': '1.2em',
+ 'margin': '2px',
+ 'textAlign': 'center',
+ 'border': '1px solid #999',
+ 'cursor': 'pointer',
+ 'background': '#fff',
+ 'color': '#333',
+ 'zIndex': 10001
+ };
+ oD.appendChild(_doc.createTextNode('-'));
+ oD.onclick = _toggleDebug;
+ oD.title = 'Toggle SM2 debug console';
+ if (_ua.match(/msie 6/i)) {
+ oD.style.position = 'absolute';
+ oD.style.cursor = 'hand';
+ }
+ for (tmp in oToggle) {
+ if (oToggle.hasOwnProperty(tmp)) {
+ oD.style[tmp] = oToggle[tmp];
+ }
+ }
+ oDebug = _doc.createElement('div');
+ oDebug.id = _s.debugID;
+ oDebug.style.display = (_s.debugMode?'block':'none');
+ if (_s.debugMode && !_id(oD.id)) {
+ try {
+ oTarget = _getDocument();
+ oTarget.appendChild(oD);
+ } catch(e2) {
+ throw new Error(_str('appXHTML'));
+ }
+ oTarget.appendChild(oDebug);
+ }
+ }
+ oTarget = null;
+ // </d>
+ }
+
+ _mobileFlash = (function(){
+
+ var oM = null;
+
+ function resetPosition() {
+ if (oM) {
+ oM.left = oM.top = '-9999px';
+ }
+ }
+
+ function reposition() {
+ oM.left = _win.scrollX+'px';
+ oM.top = _win.scrollY+'px';
+ }
+
+ function setReposition(bOn) {
+ _s._wD('mobileFlash::flash on-screen hack: '+(bOn?'ON':'OFF'));
+ var f = _win[(bOn?'add':'remove')+'EventListener'];
+ f('resize', reposition, false);
+ f('scroll', reposition, false);
+ }
+
+ function check(inDoc) {
+ // mobile flash (Android for starters) check
+ oM = _s.oMC.style;
+ if (_ua.match(/android/i)) {
+ if (inDoc) {
+ if (_s.flashLoadTimeout) {
+ _s._wDS('mfTimeout');
+ _s.flashLoadTimeout = 0;
+ }
+ return false;
+ }
+ _s._wD('mfOn');
+ oM.position = 'absolute';
+ oM.left = oM.top = '0px';
+ setReposition(true);
+ _s.onready(function(){
+ setReposition(false); // detach
+ resetPosition(); // restore when OK/timed out
+ });
+ reposition();
+ }
+ return true;
+ }
+
+ return {
+ 'check': check
+ };
+
+ }());
+
+ _createMovie = function(smID, smURL) {
+
+ var specialCase = null,
+ remoteURL = (smURL?smURL:_s.url),
+ localURL = (_s.altURL?_s.altURL:remoteURL),
+ oEmbed, oMovie, oTarget = _getDocument(), tmp, movieHTML, oEl, extraClass = _getSWFCSS(), s, x, sClass, side = '100%', isRTL = null, html = _doc.getElementsByTagName('html')[0];
+ isRTL = (html && html.dir && html.dir.match(/rtl/i));
+ smID = (typeof smID === 'undefined'?_s.id:smID);
+
+ if (_didAppend && _appendSuccess) {
+ return false; // ignore if already succeeded
+ }
+
+ function _initMsg() {
+ _s._wD('-- SoundManager 2 ' + _s.version + (!_html5Only && _s.useHTML5Audio?(_s.hasHTML5?' + HTML5 audio':', no HTML5 audio support'):'') + (_s.useMovieStar?', MovieStar mode':'') + (_s.useHighPerformance?', high performance mode, ':', ') + ((_s.useFastPolling?'fast':'normal') + ' polling') + (_s.wmode?', wmode: ' + _s.wmode:'') + (_s.debugFlash?', flash debug mode':'') + (_s.useFlashBlock?', flashBlock mode':'') + ' --', 1);
+ }
+
+ if (_html5Only) {
+ _setVersionInfo();
+ _initMsg();
+ _s.oMC = _id(_s.movieID);
+ _init();
+ // prevent multiple init attempts
+ _didAppend = true;
+ _appendSuccess = true;
+ return false;
+ }
+
+ _didAppend = true;
+
+ // safety check for legacy (change to Flash 9 URL)
+ _setVersionInfo();
+ _s.url = _normalizeMovieURL(this._overHTTP?remoteURL:localURL);
+ smURL = _s.url;
+
+ _s.wmode = (!_s.wmode && _s.useHighPerformance && !_s.useMovieStar?'transparent':_s.wmode);
+
+ if (_s.wmode !== null && !_isIE && !_s.useHighPerformance && navigator.platform.match(/win32/i)) {
+ _s.specialWmodeCase = true;
+ // extra-special case: movie doesn't load until scrolled into view when using wmode = anything but 'window' here
+ // does not apply when using high performance (position:fixed means on-screen), OR infinite flash load timeout
+ _wDS('spcWmode');
+ _s.wmode = null;
+ }
+
+ oEmbed = {
+ 'name': smID,
+ 'id': smID,
+ 'src': smURL,
+ 'width': side,
+ 'height': side,
+ 'quality': 'high',
+ 'allowScriptAccess': _s.allowScriptAccess,
+ 'bgcolor': _s.bgColor,
+ 'pluginspage': 'http://www.macromedia.com/go/getflashplayer',
+ 'type': 'application/x-shockwave-flash',
+ 'wmode': _s.wmode
+ };
+
+ if (_s.debugFlash) {
+ oEmbed.FlashVars = 'debug=1';
+ }
+
+ if (!_s.wmode) {
+ delete oEmbed.wmode; // don't write empty attribute
+ }
+
+ if (_isIE) {
+ // IE is "special".
+ oMovie = _doc.createElement('div');
+ movieHTML = '<object id="' + smID + '" data="' + smURL + '" type="' + oEmbed.type + '" width="' + oEmbed.width + '" height="' + oEmbed.height + '"><param name="movie" value="' + smURL + '" /><param name="AllowScriptAccess" value="' + _s.allowScriptAccess + '" /><param name="quality" value="' + oEmbed.quality + '" />' + (_s.wmode?'<param name="wmode" value="' + _s.wmode + '" /> ':'') + '<param name="bgcolor" value="' + _s.bgColor + '" />' + (_s.debugFlash?'<param name="FlashVars" value="' + oEmbed.FlashVars + '" />':'') + '<!-- --></object>';
+ } else {
+ oMovie = _doc.createElement('embed');
+ for (tmp in oEmbed) {
+ if (oEmbed.hasOwnProperty(tmp)) {
+ oMovie.setAttribute(tmp, oEmbed[tmp]);
+ }
+ }
+ }
+
+ _initDebug();
+ extraClass = _getSWFCSS();
+ oTarget = _getDocument();
+
+ if (oTarget) {
+ _s.oMC = _id(_s.movieID)?_id(_s.movieID):_doc.createElement('div');
+ if (!_s.oMC.id) {
+ _s.oMC.id = _s.movieID;
+ _s.oMC.className = _s.swfCSS.swfDefault + ' ' + extraClass;
+ // "hide" flash movie
+ s = null;
+ oEl = null;
+ if (!_s.useFlashBlock) {
+ if (_s.useHighPerformance) {
+ s = {
+ 'position': 'fixed',
+ 'width': '8px',
+ 'height': '8px',
+ // >= 6px for flash to run fast, >= 8px to start up under Firefox/win32 in some cases. odd? yes.
+ 'bottom': '0px',
+ 'left': '0px',
+ 'overflow': 'hidden'
+ };
+ } else {
+ s = {
+ 'position': 'absolute',
+ 'width': '6px',
+ 'height': '6px',
+ 'top': '-9999px',
+ 'left': '-9999px'
+ };
+ if (isRTL) {
+ s.left = Math.abs(parseInt(s.left,10))+'px';
+ }
+ }
+ }
+ if (_ua.match(/webkit/i)) {
+ _s.oMC.style.zIndex = 10000; // soundcloud-reported render/crash fix, safari 5
+ }
+ if (!_s.debugFlash) {
+ for (x in s) {
+ if (s.hasOwnProperty(x)) {
+ _s.oMC.style[x] = s[x];
+ }
+ }
+ }
+ try {
+ if (!_isIE) {
+ _s.oMC.appendChild(oMovie);
+ }
+ oTarget.appendChild(_s.oMC);
+ if (_isIE) {
+ oEl = _s.oMC.appendChild(_doc.createElement('div'));
+ oEl.className = _s.swfCSS.swfBox;
+ oEl.innerHTML = movieHTML;
+ }
+ _appendSuccess = true;
+ } catch(e) {
+ throw new Error(_str('appXHTML'));
+ }
+ _mobileFlash.check();
+ } else {
+ // it's already in the document.
+ sClass = _s.oMC.className;
+ _s.oMC.className = (sClass?sClass+' ':_s.swfCSS.swfDefault) + (extraClass?' '+extraClass:'');
+ _s.oMC.appendChild(oMovie);
+ if (_isIE) {
+ oEl = _s.oMC.appendChild(_doc.createElement('div'));
+ oEl.className = _s.swfCSS.swfBox;
+ oEl.innerHTML = movieHTML;
+ }
+ _appendSuccess = true;
+ _mobileFlash.check(true);
+ }
+ }
+
+ if (specialCase) {
+ _s._wD(specialCase);
+ }
+
+ _initMsg();
+ _s._wD('soundManager::createMovie(): Trying to load ' + smURL + (!this._overHTTP && _s.altURL?' (alternate URL)':''), 1);
+
+ return true;
+ };
+
+ _idCheck = this.getSoundById;
+
+ _initMovie = function() {
+ if (_html5Only) {
+ _createMovie();
+ return false;
+ }
+ // attempt to get, or create, movie
+ if (_s.o) {
+ return false; // may already exist
+ }
+ _s.o = _s.getMovie(_s.id); // inline markup
+ if (!_s.o) {
+ if (!_oRemoved) {
+ // try to create
+ _createMovie(_s.id, _s.url);
+ } else {
+ // try to re-append removed movie after reboot()
+ if (!_isIE) {
+ _s.oMC.appendChild(_oRemoved);
+ } else {
+ _s.oMC.innerHTML = _oRemovedHTML;
+ }
+ _oRemoved = null;
+ _didAppend = true;
+ }
+ _s.o = _s.getMovie(_s.id);
+ }
+ if (_s.o) {
+ _s._wD('soundManager::initMovie(): Got '+_s.o.nodeName+' element ('+(_didAppend?'created via JS':'static HTML')+')');
+ _wDS('waitEI');
+ }
+ if (_s.oninitmovie instanceof Function) {
+ setTimeout(_s.oninitmovie, 1);
+ }
+ return true;
+ };
+
+ _go = function(sURL) {
+ // where it all begins.
+ if (sURL) {
+ _s.url = sURL;
+ }
+ _initMovie();
+ };
+
+ _delayWaitForEI = function() {
+ setTimeout(_waitForEI, 500);
+ };
+
+ _waitForEI = function() {
+ if (_waitingForEI) {
+ return false;
+ }
+ _waitingForEI = true;
+ _removeEvt(_win, 'load', _delayWaitForEI);
+ if (_tryInitOnFocus && !_isFocused) {
+ _wDS('waitFocus');
+ return false;
+ }
+ var p;
+ if (!_didInit) {
+ p = _s.getMoviePercent();
+ _s._wD(_str('waitImpatient', (p === 100?' (SWF loaded)':(p > 0?' (SWF ' + p + '% loaded)':''))));
+ }
+ setTimeout(function() {
+ p = _s.getMoviePercent();
+ if (!_didInit) {
+ _s._wD(_sm + ': No Flash response within expected time.\nLikely causes: ' + (p === 0?'Loading ' + _s.movieURL + ' may have failed (and/or Flash ' + _fV + '+ not present?), ':'') + 'Flash blocked or JS-Flash security error.' + (_s.debugFlash?' ' + _str('checkSWF'):''), 2);
+ if (!this._overHTTP && p) {
+ _wDS('localFail', 2);
+ if (!_s.debugFlash) {
+ _wDS('tryDebug', 2);
+ }
+ }
+ if (p === 0) {
+ // if 0 (not null), probably a 404.
+ _s._wD(_str('swf404', _s.url));
+ }
+ _debugTS('flashtojs', false, ': Timed out' + this._overHTTP?' (Check flash security or flash blockers)':' (No plugin/missing SWF?)');
+ }
+ // give up / time-out, depending
+ if (!_didInit && _okToDisable) {
+ if (p === null) {
+ // SWF failed. Maybe blocked.
+ if (_s.useFlashBlock || _s.flashLoadTimeout === 0) {
+ if (_s.useFlashBlock) {
+ _flashBlockHandler();
+ }
+ _wDS('waitForever');
+ } else {
+ // old SM2 behaviour, simply fail
+ _failSafely(true);
+ }
+ } else {
+ // flash loaded? Shouldn't be a blocking issue, then.
+ if (_s.flashLoadTimeout === 0) {
+ _wDS('waitForever');
+ } else {
+ _failSafely(true);
+ }
+ }
+ }
+ }, _s.flashLoadTimeout);
+ };
+
+ _go = function(sURL) {
+ // where it all begins.
+ if (sURL) {
+ _s.url = sURL;
+ }
+ _initMovie();
+ };
+
+ // <d>
+ _wDS = function(o, errorLevel) {
+ if (!o) {
+ return '';
+ } else {
+ return _s._wD(_str(o), errorLevel);
+ }
+ };
+
+ if (_wl.indexOf('debug=alert') + 1 && _s.debugMode) {
+ _s._wD = function(sText) {alert(sText);};
+ }
+
+ _toggleDebug = function() {
+ var o = _id(_s.debugID),
+ oT = _id(_s.debugID + '-toggle');
+ if (!o) {
+ return false;
+ }
+ if (_debugOpen) {
+ // minimize
+ oT.innerHTML = '+';
+ o.style.display = 'none';
+ } else {
+ oT.innerHTML = '-';
+ o.style.display = 'block';
+ }
+ _debugOpen = !_debugOpen;
+ };
+
+ _debugTS = function(sEventType, bSuccess, sMessage) {
+ // troubleshooter debug hooks
+ if (typeof sm2Debugger !== 'undefined') {
+ try {
+ sm2Debugger.handleEvent(sEventType, bSuccess, sMessage);
+ } catch(e) {
+ // oh well
+ }
+ }
+ return true;
+ };
+ // </d>
+
+ _getSWFCSS = function() {
+ var css = [];
+ if (_s.debugMode) {
+ css.push(_s.swfCSS.sm2Debug);
+ }
+ if (_s.debugFlash) {
+ css.push(_s.swfCSS.flashDebug);
+ }
+ if (_s.useHighPerformance) {
+ css.push(_s.swfCSS.highPerf);
+ }
+ return css.join(' ');
+ };
+
+ _flashBlockHandler = function() {
+ // *possible* flash block situation.
+ var name = _str('fbHandler'), p = _s.getMoviePercent();
+ if (!_s.supported()) {
+ if (_needsFlash) {
+ // make the movie more visible, so user can fix
+ _s.oMC.className = _getSWFCSS() + ' ' + _s.swfCSS.swfDefault + ' ' + (p === null?_s.swfCSS.swfTimedout:_s.swfCSS.swfError);
+ _s._wD(name+': '+_str('fbTimeout')+(p?' ('+_str('fbLoaded')+')':''));
+ }
+ _s.didFlashBlock = true;
+ _processOnReady(true); // fire onready(), complain lightly
+ if (_s.onerror instanceof Function) {
+ _s.onerror.apply(_win);
+ }
+ } else {
+ // SM2 loaded OK (or recovered)
+ if (_s.didFlashBlock) {
+ _s._wD(name+': Unblocked');
+ }
+ if (_s.oMC) {
+ _s.oMC.className = _getSWFCSS() + ' ' + _s.swfCSS.swfDefault + (' '+_s.swfCSS.swfUnblocked);
+ }
+ }
+ };
+
+ _handleFocus = function() {
+ function cleanup() {
+ _removeEvt(_win, 'focus', _handleFocus);
+ _removeEvt(_win, 'load', _handleFocus);
+ }
+ if (_isFocused || !_tryInitOnFocus) {
+ cleanup();
+ return true;
+ }
+ _okToDisable = true;
+ _isFocused = true;
+ _s._wD('soundManager::handleFocus()');
+ if (_isSafari && _tryInitOnFocus) {
+ // giant Safari 3.1 hack - assume mousemove = focus given lack of focus event
+ _removeEvt(_win, 'mousemove', _handleFocus);
+ }
+ // allow init to restart
+ _waitingForEI = false;
+ cleanup();
+ return true;
+ };
+
+ _initComplete = function(bNoDisable) {
+ if (_didInit) {
+ return false;
+ }
+ if (_html5Only) {
+ // all good.
+ _s._wD('-- SoundManager 2: loaded --');
+ _didInit = true;
+ _processOnReady();
+ _initUserOnload();
+ return true;
+ }
+ var sClass = _s.oMC.className,
+ wasTimeout = (_s.useFlashBlock && _s.flashLoadTimeout && !_s.getMoviePercent());
+ if (!wasTimeout) {
+ _didInit = true;
+ }
+ _s._wD('-- SoundManager 2 ' + (_disabled?'failed to load':'loaded') + ' (' + (_disabled?'security/load error':'OK') + ') --', 1);
+ if (_disabled || bNoDisable) {
+ if (_s.useFlashBlock) {
+ _s.oMC.className = _getSWFCSS() + ' ' + (_s.getMoviePercent() === null?_s.swfCSS.swfTimedout:_s.swfCSS.swfError);
+ }
+ _processOnReady();
+ _debugTS('onload', false);
+ if (_s.onerror instanceof Function) {
+ _s.onerror.apply(_win);
+ }
+ return false;
+ } else {
+ _debugTS('onload', true);
+ }
+ if (_s.waitForWindowLoad && !_windowLoaded) {
+ _wDS('waitOnload');
+ _addEvt(_win, 'load', _initUserOnload);
+ return false;
+ } else {
+ if (_s.waitForWindowLoad && _windowLoaded) {
+ _wDS('docLoaded');
+ }
+ _initUserOnload();
+ }
+ return true;
+ };
+
+ _addOnReady = function(oMethod, oScope) {
+ _onready.push({
+ 'method': oMethod,
+ 'scope': (oScope || null),
+ 'fired': false
+ });
+ };
+
+ _processOnReady = function(ignoreInit) {
+ if (!_didInit && !ignoreInit) {
+ // not ready yet.
+ return false;
+ }
+ var status = {
+ success: (ignoreInit?_s.supported():!_disabled)
+ },
+ queue = [], i, j,
+ canRetry = (!_s.useFlashBlock || (_s.useFlashBlock && !_s.supported()));
+ for (i = 0, j = _onready.length; i < j; i++) {
+ if (_onready[i].fired !== true) {
+ queue.push(_onready[i]);
+ }
+ }
+ if (queue.length) {
+ _s._wD(_sm + ': Firing ' + queue.length + ' onready() item' + (queue.length > 1?'s':''));
+ for (i = 0, j = queue.length; i < j; i++) {
+ if (queue[i].scope) {
+ queue[i].method.apply(queue[i].scope, [status]);
+ } else {
+ queue[i].method(status);
+ }
+ if (!canRetry) { // flashblock case doesn't count here
+ queue[i].fired = true;
+ }
+ }
+ }
+ return true;
+ };
+
+ _initUserOnload = function() {
+ _win.setTimeout(function() {
+ if (_s.useFlashBlock) {
+ _flashBlockHandler();
+ }
+ _processOnReady();
+ _wDS('onload', 1);
+ // call user-defined "onload", scoped to window
+ if (_s.onload instanceof Function) {
+ _s.onload.apply(_win);
+ }
+ _wDS('onloadOK', 1);
+ if (_s.waitForWindowLoad) {
+ _addEvt(_win, 'load', _initUserOnload);
+ }
+ },1);
+ };
+
+ _featureCheck = function() {
+ var needsFlash, item,
+ isBadSafari = (!_wl.match(/usehtml5audio/i) && !_wl.match(/sm2\-ignorebadua/i) && _isSafari && _ua.match(/OS X 10_6_(3|4)/i)), // Safari 4 and 5 occasionally fail to load/play HTML5 audio on Snow Leopard due to bug(s) in QuickTime X and/or other underlying frameworks. :/ Known Apple "radar" bug. https://bugs.webkit.org/show_bug.cgi?id=32159
+ isSpecial = (_ua.match(/iphone os (1|2|3_0|3_1)/i)?true:false); // iPhone <= 3.1 has broken HTML5 audio(), but firmware 3.2 (iPad) + iOS4 works.
+ if (isSpecial) {
+ _s.hasHTML5 = false; // has Audio(), but is broken; let it load links directly.
+ _html5Only = true; // ignore flash case, however
+ if (_s.oMC) {
+ _s.oMC.style.display = 'none';
+ }
+ return false;
+ }
+ if (_s.useHTML5Audio) {
+ if (!_s.html5 || !_s.html5.canPlayType) {
+ _s._wD('SoundManager: No HTML5 Audio() support detected.');
+ _s.hasHTML5 = false;
+ return true;
+ } else {
+ _s.hasHTML5 = true;
+ }
+ if (isBadSafari) {
+ _s._wD('SoundManager::Note: Buggy HTML5 Audio in Safari on OS X 10.6.[3|4], see https://bugs.webkit.org/show_bug.cgi?id=32159 - disabling HTML5 audio',1);
+ _s.useHTML5Audio = false;
+ _s.hasHTML5 = false;
+ return true;
+ }
+ } else {
+ // flash required.
+ return true;
+ }
+ for (item in _s.audioFormats) {
+ if (_s.audioFormats.hasOwnProperty(item) && _s.audioFormats[item].required && !_s.html5.canPlayType(_s.audioFormats[item].type)) {
+ // may need flash for this format?
+ needsFlash = true;
+ }
+ }
+ // sanity check..
+ if (_s.ignoreFlash) {
+ needsFlash = false;
+ }
+ _html5Only = (_s.useHTML5Audio && _s.hasHTML5 && !needsFlash);
+ return needsFlash;
+ };
+
+ _init = function() {
+ var item, tests = [];
+ _wDS('init');
+
+ // called after onload()
+ if (_didInit) {
+ _wDS('didInit');
+ return false;
+ }
+
+ function _cleanup() {
+ _removeEvt(_win, 'load', _s.beginDelayedInit);
+ }
+
+ if (_s.hasHTML5) {
+ for (item in _s.audioFormats) {
+ if (_s.audioFormats.hasOwnProperty(item)) {
+ tests.push(item+': '+_s.html5[item]);
+ }
+ }
+ _s._wD('-- SoundManager 2: HTML5 support tests ('+_s.html5Test+'): '+tests.join(', ')+' --',1);
+ }
+
+ if (_html5Only) {
+ if (!_didInit) {
+ // we don't need no steenking flash!
+ _cleanup();
+ _s.enabled = true;
+ _initComplete();
+ }
+ return true;
+ }
+
+ // flash path
+ _initMovie();
+ try {
+ _wDS('flashJS');
+ _s.o._externalInterfaceTest(false); // attempt to talk to Flash
+ if (!_s.allowPolling) {
+ _wDS('noPolling', 1);
+ } else {
+ _setPolling(true, _s.useFastPolling?true:false);
+ }
+ if (!_s.debugMode) {
+ _s.o._disableDebug();
+ }
+ _s.enabled = true;
+ _debugTS('jstoflash', true);
+ } catch(e) {
+ _s._wD('js/flash exception: ' + e.toString());
+ _debugTS('jstoflash', false);
+ _failSafely(true); // don't disable, for reboot()
+ _initComplete();
+ return false;
+ }
+ _initComplete();
+ // event cleanup
+ _cleanup();
+ return true;
+ };
+
+ _beginInit = function() {
+ if (_initPending) {
+ return false;
+ }
+ _createMovie();
+ _initMovie();
+ _initPending = true;
+ return true;
+ };
+
+ _dcLoaded = function() {
+ if (_didDCLoaded) {
+ return false;
+ }
+ _didDCLoaded = true;
+ _initDebug();
+ _testHTML5();
+ _s.html5.usingFlash = _featureCheck();
+ _needsFlash = _s.html5.usingFlash;
+ _didDCLoaded = true;
+ if (_doc.removeEventListener) {
+ _doc.removeEventListener('DOMContentLoaded', _dcLoaded, false);
+ }
+ _go();
+ return true;
+ };
+
+ _startTimer = function(oSound) {
+ if (!oSound._hasTimer) {
+ oSound._hasTimer = true;
+ }
+ };
+
+ _stopTimer = function(oSound) {
+ if (oSound._hasTimer) {
+ oSound._hasTimer = false;
+ }
+ };
+
+ _die = function() {
+ if (_s.onerror instanceof Function) {
+ _s.onerror();
+ }
+ _s.disable();
+ };
+
+ // pseudo-private methods called by Flash
+
+ this._setSandboxType = function(sandboxType) {
+ // <d>
+ var sb = _s.sandbox;
+ sb.type = sandboxType;
+ sb.description = sb.types[(typeof sb.types[sandboxType] !== 'undefined'?sandboxType:'unknown')];
+ _s._wD('Flash security sandbox type: ' + sb.type);
+ if (sb.type === 'localWithFile') {
+ sb.noRemote = true;
+ sb.noLocal = false;
+ _wDS('secNote', 2);
+ } else if (sb.type === 'localWithNetwork') {
+ sb.noRemote = false;
+ sb.noLocal = true;
+ } else if (sb.type === 'localTrusted') {
+ sb.noRemote = false;
+ sb.noLocal = false;
+ }
+ // </d>
+ };
+
+ this._externalInterfaceOK = function(flashDate) {
+ // flash callback confirming flash loaded, EI working etc.
+ // flashDate = approx. timing/delay info for JS/flash bridge
+ if (_s.swfLoaded) {
+ return false;
+ }
+ var eiTime = new Date().getTime();
+ _s._wD('soundManager::externalInterfaceOK()' + (flashDate?' (~' + (eiTime - flashDate) + ' ms)':''));
+ _debugTS('swf', true);
+ _debugTS('flashtojs', true);
+ _s.swfLoaded = true;
+ _tryInitOnFocus = false;
+ if (_isIE) {
+ // IE needs a timeout OR delay until window.onload - may need TODO: investigating
+ setTimeout(_init, 100);
+ } else {
+ _init();
+ }
+ };
+
+ _dcIE = function() {
+ if (_doc.readyState === 'complete') {
+ _dcLoaded();
+ _doc.detachEvent('onreadystatechange', _dcIE);
+ }
+ return true;
+ };
+
+ // focus and window load, init
+ if (!_s.hasHTML5 || _needsFlash) {
+ // only applies to Flash mode
+ _addEvt(_win, 'focus', _handleFocus);
+ _addEvt(_win, 'load', _handleFocus);
+ _addEvt(_win, 'load', _delayWaitForEI);
+ if (_isSafari && _tryInitOnFocus) {
+ _addEvt(_win, 'mousemove', _handleFocus); // massive Safari focus hack
+ }
+ }
+
+ if (_doc.addEventListener) {
+ _doc.addEventListener('DOMContentLoaded', _dcLoaded, false);
+ } else if (_doc.attachEvent) {
+ _doc.attachEvent('onreadystatechange', _dcIE);
+ } else {
+ // no add/attachevent support - safe to assume no JS -> Flash either
+ _debugTS('onload', false);
+ _die();
+ }
+
+ if (_doc.readyState === 'complete') {
+ setTimeout(_dcLoaded,100);
+ }
+
+} // SoundManager()
+
+// var SM2_DEFER = true;
+// details: http://www.schillmania.com/projects/soundmanager2/doc/getstarted/#lazy-loading
+
+if (typeof SM2_DEFER === 'undefined' || !SM2_DEFER) {
+ soundManager = new SoundManager();
+}
+
+// public interfaces
+window.SoundManager = SoundManager; // constructor
+window.soundManager = soundManager; // public instance: API, Flash callbacks etc.
+
+}(window));
diff --git a/frontend/js/titleScrambler.js b/frontend/js/titleScrambler.js
new file mode 100644
index 0000000..6948cbf
--- /dev/null
+++ b/frontend/js/titleScrambler.js
@@ -0,0 +1,56 @@
+var titleSwitch = true;
+var FillerChars = [ "(",")","|","1","4","\\", "9","_" ];
+var titleArray = document.title.split("");
+var titleArrayCopy = titleArray.slice(0);
+var titleLength = titleArray.length
+
+function marqueeArray(arr){
+ var first = arr[0]
+ arr.shift()
+}
+
+function replaceArray(arr, char){
+ arr[randomChoice(arr)] = char
+}
+var titleUpdateInterval = 300
+function randomChoice(arr){
+ var rand = Math.random();
+ rand *= arr.length;
+ rand = Math.floor(rand)
+ return rand;
+}
+var titleUpdate = setInterval(function(){
+ if (titleSwitch === true){
+ marqueeArray(titleArray);
+ document.title = titleArray.join("")
+ if (titleArray.length === 1){
+ document.title = "";
+ titleArray = titleArrayCopy.slice(0);
+ document.title = titleArray.join("");
+ if (titleSwitch){
+ titleSwitch = false;
+ }else{
+ titleSwitch = true;
+ titleUpdateInterval = 100;
+ }
+ }
+ }else{
+
+ replaceArray(titleArray, FillerChars[randomChoice(FillerChars)]);
+ document.title = titleArray.join("")
+ if (titleArray[(titleArray.length-1)] in FillerChars){
+ console.log("it's in there");
+ titleArray = titleArrayCopy.slice(0);
+ document.title = titleArray.join("");
+ if (titleSwitch){
+ titleSwitch = false;
+ titleUpdateInterval = 300;
+ }else{
+ titleSwitch = true;
+ }
+
+ }
+ }
+
+ }, titleUpdateInterval);
+
diff --git a/frontend/js/urls.js b/frontend/js/urls.js
new file mode 120000
index 0000000..018f8c5
--- /dev/null
+++ b/frontend/js/urls.js
@@ -0,0 +1 @@
+../impattern/js/urls.js \ No newline at end of file
diff --git a/frontend/js/username.js b/frontend/js/username.js
new file mode 120000
index 0000000..d7b2691
--- /dev/null
+++ b/frontend/js/username.js
@@ -0,0 +1 @@
+../impattern/js/username.js \ No newline at end of file
diff --git a/frontend/js/what.html b/frontend/js/what.html
new file mode 100644
index 0000000..1acd364
--- /dev/null
+++ b/frontend/js/what.html
@@ -0,0 +1,7 @@
+<div id="waht"></div>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript">
+$("#waht").html("what")
+
+</script>
+
diff --git a/frontend/js/zepto-0.7.zip b/frontend/js/zepto-0.7.zip
new file mode 100644
index 0000000..f46af99
--- /dev/null
+++ b/frontend/js/zepto-0.7.zip
Binary files differ
diff --git a/frontend/js/zepto.js b/frontend/js/zepto.js
new file mode 100644
index 0000000..2419eac
--- /dev/null
+++ b/frontend/js/zepto.js
@@ -0,0 +1,4 @@
+// Zepto.js
+// (c) 2010, 2011 Thomas Fuchs
+// Zepto.js may be freely distributed under the MIT license.
+(function(a){String.prototype.trim===a&&(String.prototype.trim=function(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}),Array.prototype.reduce===a&&(Array.prototype.reduce=function(b){if(this===void 0||this===null)throw new TypeError;var c=Object(this),d=c.length>>>0,e=0,f;if(typeof b!="function")throw new TypeError;if(d==0&&arguments.length==1)throw new TypeError;if(arguments.length>=2)f=arguments[1];else do{if(e in c){f=c[e++];break}if(++e>=d)throw new TypeError}while(!0);while(e<d)e in c&&(f=b.call(a,f,c[e],e,c)),e++;return f})})();var Zepto=function(){function K(a,c){c(a);for(b in a.childNodes)K(a.childNodes[b],c)}function J(a,b,c){var d=!a||a==3?b:b.parentNode;d.insertBefore(c,a?a==1?b.nextSibling:a==2?b:null:d.firstChild)}function I(a,b,c,d){return s(b)?b.call(a,c,d):b}function H(b,c){return c===a?G(b):G(b).filter(c)}function G(b,d){if(!b)return F();if(d!==a)return G(d).find(b);if(s(b))return G(g).ready(b);if(b instanceof F)return b;var e;u(b)?e=w(b):m.indexOf(b.nodeType)>=0||b===window?(e=[b],b=null):l.test(b)?(e=E(b,RegExp.$1),b=null):b.nodeType&&b.nodeType==3?e=[b]:e=c(g,b);return F(e,b)}function F(a,b){a=a||e,a.__proto__=F.prototype,a.selector=b||"";return a}function E(b,c){c===a&&l.test(b)&&RegExp.$1,c in r||(c="*");var d=r[c];d.innerHTML=""+b;return f.call(d.childNodes)}function D(a){var b,c;h[a]||(b=g.createElement(a),g.body.appendChild(b),c=j(b,"").getPropertyValue("display"),b.parentNode.removeChild(b),c=="none"&&(c="block"),h[a]=c);return h[a]}function C(a,b){return typeof b=="number"&&!k[z(a)]?b+"px":b}function B(a){return a in i?i[a]:i[a]=new RegExp("(^|\\s)"+a+"(\\s|$)")}function A(a){return a.filter(function(a,b,c){return c.indexOf(a)==b})}function z(a){return a.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function y(a){return a.replace(/-+(.)?/g,function(a,b){return b?b.toUpperCase():""})}function x(a){return a.length>0?[].concat.apply([],a):a}function w(b){return b.filter(function(b){return b!==a&&b!==null})}function v(a){return typeof a.length=="number"}function u(a){return a instanceof Array}function t(a){return a instanceof Object}function s(a){return{}.toString.call(a)=="[object Function]"}var a,b,c,d,e=[],f=e.slice,g=window.document,h={},i={},j=g.defaultView.getComputedStyle,k={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},l=/^\s*<(\w+)[^>]*>/,m=[1,9,11],n=["prepend","after","before","append"],o=["append","prepend"],p=g.createElement("table"),q=g.createElement("tr"),r={tr:g.createElement("tbody"),tbody:p,thead:p,tfoot:p,td:q,th:q,"*":g.createElement("div")};G.extend=function(a){f.call(arguments,1).forEach(function(c){for(b in c)a[b]=c[b]});return a},G.qsa=c=function(a,b){return f.call(a.querySelectorAll(b))},G.isFunction=s,G.isObject=t,G.isArray=u,G.map=function(a,b){var c,d=[],e,f;if(v(a))for(e=0;e<a.length;e++)c=b(a[e],e),c!=null&&d.push(c);else for(f in a)c=b(a[f],f),c!=null&&d.push(c);return x(d)},G.each=function(a,b){var c,d;if(v(a)){for(c=0;c<a.length;c++)if(b(c,a[c])===!1)return a}else for(d in a)if(b(d,a[d])===!1)return a;return a},G.fn={forEach:e.forEach,reduce:e.reduce,push:e.push,indexOf:e.indexOf,concat:e.concat,map:function(a){return G.map(this,function(b,c){return a.call(b,c,b)})},slice:function(){return G(f.apply(this,arguments))},ready:function(a){(g.readyState=="complete"||g.readyState=="loaded")&&a(),g.addEventListener("DOMContentLoaded",a,!1);return this},get:function(b){return b===a?this:this[b]},size:function(){return this.length},remove:function(){return this.each(function(){this.parentNode!=null&&this.parentNode.removeChild(this)})},each:function(a){this.forEach(function(b,c){a.call(b,c,b)});return this},filter:function(a){return G([].filter.call(this,function(b){return c(b.parentNode,a).indexOf(b)>=0}))},end:function(){return this.prevObject||G()},add:function(a,b){return G(A(this.concat(G(a,b))))},is:function(a){return this.length>0&&G(this[0]).filter(a).length>0},not:function(b){var c=[];if(s(b)&&b.call!==a)this.each(function(a){b.call(this,a)||c.push(this)});else{var d=typeof b=="string"?this.filter(b):v(b)&&s(b.item)?f.call(b):G(b);this.forEach(function(a){d.indexOf(a)<0&&c.push(a)})}return G(c)},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return G(this[0])},last:function(){return G(this[this.length-1])},find:function(a){var b;this.length==1?b=c(this[0],a):b=this.map(function(){return c(this,a)});return G(b)},closest:function(b,d){var e=this[0],f=c(d!==a?d:g,b);f.length===0&&(e=null);while(e&&e!==g&&f.indexOf(e)<0)e=e.parentNode;return G(e!==g&&e)},parents:function(a){var b=[],c=this;while(c.length>0)c=G.map(c,function(a){if((a=a.parentNode)&&a!==g&&b.indexOf(a)<0){b.push(a);return a}});return H(b,a)},parent:function(a){return H(A(this.pluck("parentNode")),a)},children:function(a){return H(this.map(function(){return f.call(this.children)}),a)},siblings:function(a){return H(this.map(function(a,b){return f.call(b.parentNode.children).filter(function(a){return a!==b})}),a)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(a){return this.map(function(){return this[a]})},show:function(){return this.each(function(){this.style.display=="none"&&(this.style.display=null),j(this,"").getPropertyValue("display")=="none"&&(this.style.display=D(this.nodeName))})},replaceWith:function(a){return this.each(function(){var b=this.parentNode,c=this.nextSibling;G(this).remove(),c?G(c).before(a):G(b).append(a)})},wrap:function(a){return this.each(function(){G(this).wrapAll(G(a)[0].cloneNode(!1))})},wrapAll:function(a){this[0]&&(G(this[0]).before(a=G(a)),a.append(this));return this},unwrap:function(){this.parent().each(function(){G(this).replaceWith(G(this).children())});return this},hide:function(){return this.css("display","none")},toggle:function(b){return(b===a?this.css("display")=="none":b)?this.show():this.hide()},prev:function(){return G(this.pluck("previousElementSibling"))},next:function(){return G(this.pluck("nextElementSibling"))},html:function(b){return b===a?this.length>0?this[0].innerHTML:null:this.each(function(a){var c=this.innerHTML;G(this).empty().append(I(this,b,a,c))})},text:function(b){return b===a?this.length>0?this[0].textContent:null:this.each(function(){this.textContent=b})},attr:function(c,d){return typeof c=="string"&&d===a?this.length>0&&this[0].nodeName=="INPUT"&&this[0].type=="text"&&c=="value"?this.val():this.length>0?this[0].getAttribute(c)||(c in this[0]?this[0][c]:a):a:this.each(function(a){if(t(c))for(b in c)this.setAttribute(b,c[b]);else this.setAttribute(c,I(this,d,a,this.getAttribute(c)))})},removeAttr:function(a){return this.each(function(){this.removeAttribute(a)})},data:function(a,b){return this.attr("data-"+a,b)},val:function(b){return b===a?this.length>0?this[0].value:null:this.each(function(){this.value=b})},offset:function(){if(this.length==0)return null;var a=this[0].getBoundingClientRect();return{left:a.left+g.body.scrollLeft,top:a.top+g.body.scrollTop,width:a.width,height:a.height}},css:function(c,d){if(d===a&&typeof c=="string")return this[0].style[y(c)]||j(this[0],"").getPropertyValue(c);var e="";for(b in c)e+=z(b)+":"+C(b,c[b])+";";typeof c=="string"&&(e=z(c)+":"+C(c,d));return this.each(function(){this.style.cssText+=";"+e})},index:function(a){return a?this.indexOf(G(a)[0]):this.parent().children().indexOf(this[0])},hasClass:function(a){return this.length<1?!1:B(a).test(this[0].className)},addClass:function(a){return this.each(function(b){d=[];var c=this.className,e=I(this,a,b,c);e.split(/\s+/g).forEach(function(a){G(this).hasClass(a)||d.push(a)},this),d.length&&(this.className+=(c?" ":"")+d.join(" "))})},removeClass:function(b){return this.each(function(c){if(b===a)return this.className="";d=this.className,I(this,b,c,d).split(/\s+/g).forEach(function(a){d=d.replace(B(a)," ")}),this.className=d.trim()})},toggleClass:function(b,c){return this.each(function(d){var e=this.className,f=I(this,b,d,e);c!==a&&!c||G(this).hasClass(f)?G(this).removeClass(f):G(this).addClass(f)})}},"filter,add,not,eq,first,last,find,closest,parents,parent,children,siblings".split(",").forEach(function(a){var b=G.fn[a];G.fn[a]=function(){var a=b.apply(this,arguments);a.prevObject=this;return a}}),["width","height"].forEach(function(b){G.fn[b]=function(c){var d;return c===a?(d=this.offset())&&d[b]:this.css(b,c)}}),n.forEach(function(a,b){G.fn[a]=function(a){var c=typeof a=="object"?a:E(a);"length"in c||(c=[c]);if(c.length<1)return this;var d=this.length,e=d>1,f=b<2;return this.each(function(a,g){for(var h=0;h<c.length;h++){var i=c[f?c.length-h-1:h];K(i,function(a){a.nodeName!=null&&a.nodeName.toUpperCase()==="SCRIPT"&&window.eval.call(window,a.innerHTML)}),e&&a<d-1&&(i=i.cloneNode(!0)),J(b,g,i)}})}}),o.forEach(function(a){G.fn[a+"To"]=function(b){typeof b!="object"&&(b=G(b)),b[a](this);return this}}),F.prototype=G.fn;return G}();"$"in window||(window.$=Zepto),function(a){function n(b){var c=a.extend({originalEvent:b},b);a.each(m,function(a,d){c[a]=function(){this[d]=k;return b[a].apply(b,arguments)},c[d]=l});return c}function j(a,b,d,g){var h=e(a);(b||"").split(/\s/).forEach(function(b){f(a,b,d,g).forEach(function(b){delete c[h][b.i],a.removeEventListener(b.e,b.proxy,!1)})})}function i(b,d,f,h,i){var j=e(b),k=c[j]||(c[j]=[]);d.split(/\s/).forEach(function(c){var d=i||f,e=function(a){var c=d.apply(b,[a].concat(a.data));c===!1&&a.preventDefault();return c},j=a.extend(g(c),{fn:f,proxy:e,sel:h,del:i,i:k.length});k.push(j),b.addEventListener(j.e,e,!1)})}function h(a){return new RegExp("(?:^| )"+a.replace(" "," .* ?")+"(?: |$)")}function g(a){var b=(""+a).split(".");return{e:b[0],ns:b.slice(1).sort().join(" ")}}function f(a,b,d,f){b=g(b);if(b.ns)var i=h(b.ns);return(c[e(a)]||[]).filter(function(a){return a&&(!b.e||a.e==b.e)&&(!b.ns||i.test(a.ns))&&(!d||a.fn==d)&&(!f||a.sel==f)})}function e(a){return a._zid||(a._zid=d++)}var b=a.qsa,c={},d=1;a.event={add:i,remove:j},a.fn.bind=function(a,b){return this.each(function(){i(this,a,b)})},a.fn.unbind=function(a,b){return this.each(function(){j(this,a,b)})},a.fn.one=function(a,b){return this.each(function(){var c=this;i(this,a,function(e){b.call(c,e),j(c,a,arguments.callee)})})};var k=function(){return!0},l=function(){return!1},m={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};a.fn.delegate=function(c,d,e){return this.each(function(f,g){i(g,d,e,c,function(d,f){var h=d.target,i=b(g,c);while(h&&i.indexOf(h)<0)h=h.parentNode;h&&h!==g&&h!==document&&e.call(h,a.extend(n(d),{currentTarget:h,liveFired:g}),f)})})},a.fn.undelegate=function(a,b,c){return this.each(function(){j(this,b,c,a)})},a.fn.live=function(b,c){a(document.body).delegate(this.selector,b,c);return this},a.fn.die=function(b,c){a(document.body).undelegate(this.selector,b,c);return this},a.fn.trigger=function(b,c){typeof b=="string"&&(b=a.Event(b)),b.data=c;return this.each(function(){this.dispatchEvent(b)})},a.fn.triggerHandler=function(b,c){var d,e;this.each(function(g,h){d=n(typeof b=="string"?a.Event(b):b),d.data=c,d.target=h,a.each(f(h,b.type||b),function(a,b){e=b.proxy(d);if(d.isImmediatePropagationStopped())return!1})});return e},"focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout change select keydown keypress keyup error".split(" ").forEach(function(b){a.fn[b]=function(a){return this.bind(b,a)}}),["focus","blur"].forEach(function(b){a.fn[b]=function(a){if(a)this.bind(b,a);else if(this.length)try{this.get(0)[b]()}catch(c){}return this}}),a.Event=function(b,c){var d=document.createEvent("Events");c&&a.extend(d,c),d.initEvent(b,!c||c.bubbles!==!1,!0);return d}}(Zepto),function(a){function b(a){var a=a,b={},c=a.match(/(Android)\s+([\d.]+)/),d=a.match(/(iPad).*OS\s([\d_]+)/),e=!d&&a.match(/(iPhone\sOS)\s([\d_]+)/),f=a.match(/(webOS|hpwOS)[\s\/]([\d.]+)/),g=f&&a.match(/TouchPad/),h=a.match(/(BlackBerry).*Version\/([\d.]+)/);c&&(b.android=!0,b.version=c[2]),e&&(b.ios=!0,b.version=e[2].replace(/_/g,"."),b.iphone=!0),d&&(b.ios=!0,b.version=d[2].replace(/_/g,"."),b.ipad=!0),f&&(b.webos=!0,b.version=f[2]),g&&(b.touchpad=!0),h&&(b.blackberry=!0,b.version=h[2]);return b}a.os=b(navigator.userAgent),a.__detect=b;var c=navigator.userAgent.match(/WebKit\/([\d.]+)/);a.browser=c?{webkit:!0,version:c[1]}:{webkit:!1}}(Zepto),function(a,b){var c=["scale","scaleX","scaleY","translate","translateX","translateY","translate3d","skew","skewX","skewY","rotate","rotateX","rotateY","rotateZ","rotate3d","matrix"];a.fn.anim=function(a,d,e,f){var g=[],h={},i,j=this,k;for(i in a)c.indexOf(i)>=0?g.push(i+"("+a[i]+")"):h[i]=a[i];k=function(){j.css({"-webkit-transition":"none"}),f&&f()},d>0?this.one("webkitTransitionEnd",k):setTimeout(k,0),g.length>0&&(h["-webkit-transform"]=g.join(" ")),h["-webkit-transition"]="all "+(d!==b?d:.5)+"s "+(e||""),setTimeout(function(){j.css(h)},0);return this}}(Zepto),function(a){function e(){}var b=0,c=a.isObject,d;a.ajaxJSONP=function(c){var d="jsonp"+ ++b,e=document.createElement("script");window[d]=function(a){c.success(a),delete window[d]},e.src=c.url.replace(/=\?/,"="+d),a("head").append(e)},a.ajaxSettings={type:"GET",beforeSend:e,success:e,error:e,complete:e,accepts:{script:"text/javascript, application/javascript",json:"application/json",xml:"application/xml, text/xml",html:"text/html",text:"text/plain"}},a.ajax=function(b){b=b||{};var e=a.extend({},b);for(d in a.ajaxSettings)e[d]||(e[d]=a.ajaxSettings[d]);if(/=\?/.test(e.url))return a.ajaxJSONP(e);e.url||(e.url=window.location.toString()),e.data&&!e.contentType&&(e.contentType="application/x-www-form-urlencoded"),c(e.data)&&(e.data=a.param(e.data));if(e.type.match(/get/i)&&e.data){var f=e.data;e.url.match(/\?.*=/)?f="&"+f:f[0]!="?"&&(f="?"+f),e.url+=f}var g=e.accepts[e.dataType],h=new XMLHttpRequest;e.headers=a.extend({"X-Requested-With":"XMLHttpRequest"},e.headers||{}),g&&(e.headers.Accept=g),h.onreadystatechange=function(){if(h.readyState==4){var a,b=!1;if(h.status>=200&&h.status<300||h.status==0){if(g=="application/json"&&h.responseText!="")try{a=JSON.parse(h.responseText)}catch(c){b=c}else a=h.responseText;b?e.error(h,"parsererror",b):e.success(a,"success",h)}else b=!0,e.error(h,"error");e.complete(h,b?"error":"success")}},h.open(e.type,e.url,!0);if(e.beforeSend(h,e)===!1){h.abort();return!1}e.contentType&&(e.headers["Content-Type"]=e.contentType);for(name in e.headers)h.setRequestHeader(name,e.headers[name]);h.send(e.data);return h},a.get=function(b,c){a.ajax({url:b,success:c})},a.post=function(b,c,d,e){a.isFunction(c)&&(e=e||d,d=c,c=null),a.ajax({type:"POST",url:b,data:c,success:d,dataType:e})},a.getJSON=function(b,c){a.ajax({url:b,success:c,dataType:"json"})},a.fn.load=function(b,c){if(!this.length)return this;var d=this,e=b.split(/\s/),f;e.length>1&&(b=e[0],f=e[1]),a.get(b,function(b){d.html(f?a(document.createElement("div")).html(b).find(f).html():b),c&&c()});return this},a.param=function(b,e){var f=[],g=function(a,b){f.push(encodeURIComponent(e?e+"["+a+"]":a)+"="+encodeURIComponent(b))},h=a.isArray(b);for(d in b)c(b[d])?f.push(a.param(b[d],e?e+"["+d+"]":d)):g(h?"":d,b[d]);return f.join("&").replace("%20","+")}}(Zepto),function(a){a.fn.serializeArray=function(){var b=[],c;a(Array.prototype.slice.call(this.get(0).elements)).each(function(){c=a(this),(c.attr("type")!=="radio"||c.is(":checked"))&&(c.attr("type")!=="checkbox"||!!c.is(":checked"))&&b.push({name:c.attr("name"),value:c.val()})});return b},a.fn.serialize=function(){var a=[];this.serializeArray().forEach(function(b){a.push(encodeURIComponent(b.name)+"="+encodeURIComponent(b.value))});return a.join("&")},a.fn.submit=function(b){if(b)this.bind("submit",b);else if(this.length){var c=a.Event("submit");this.eq(0).trigger(c),c.defaultPrevented||this.get(0).submit()}return this}}(Zepto),function(a){function g(){b.last&&Date.now()-b.last>=f&&(a(b.target).trigger("longTap"),b={})}function e(a,b,c,d){var e=Math.abs(a-b),f=Math.abs(c-d);return e>=f?a-b>0?"Left":"Right":c-d>0?"Up":"Down"}function d(a){return"tagName"in a?a:a.parentNode}var b={},c,f=750;a(document).ready(function(){a(document.body).bind("touchstart",function(a){var e=Date.now(),h=e-(b.last||e);b.target=d(a.touches[0].target),c&&clearTimeout(c),b.x1=a.touches[0].pageX,b.y1=a.touches[0].pageY,h>0&&h<=250&&(b.isDoubleTap=!0),b.last=e,setTimeout(g,f)}).bind("touchmove",function(a){b.x2=a.touches[0].pageX,b.y2=a.touches[0].pageY}).bind("touchend",function(d){b.isDoubleTap?(a(b.target).trigger("doubleTap"),b={}):b.x2>0||b.y2>0?((Math.abs(b.x1-b.x2)>30||Math.abs(b.y1-b.y2)>30)&&a(b.target).trigger("swipe")&&a(b.target).trigger("swipe"+e(b.x1,b.x2,b.y1,b.y2)),b.x1=b.x2=b.y1=b.y2=b.last=0):"last"in b&&(c=setTimeout(function(){c=null,a(b.target).trigger("tap"),b={}},250))}).bind("touchcancel",function(){b={}})}),["swipe","swipeLeft","swipeRight","swipeUp","swipeDown","doubleTap","tap","longTap"].forEach(function(b){a.fn[b]=function(a){return this.bind(b,a)}})}(Zepto)
diff --git a/frontend/server/simple_proxy.py b/frontend/server/simple_proxy.py
new file mode 100644
index 0000000..8588887
--- /dev/null
+++ b/frontend/server/simple_proxy.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+import http.server
+import urllib.request
+import re
+
+class MyHTTPRequestHandler(http.server.CGIHTTPRequestHandler ):
+ def end_headers(self):
+ self.send_my_headers()
+
+ http.server.CGIHTTPRequestHandler .end_headers(self)
+
+ def send_my_headers(self):
+ self.send_header("Access-Control-Allow-Origin", "*")
+
+ def do_GET(self):
+ if self.path[0:14] == "/cgi-bin/proxy":
+ self.copyfile(urllib.request.urlopen(self.path[15:]), self.wfile)
+ super().do_GET();
+ else:
+ super().do_GET()
+
+ def do_POST(self):
+ super().do_POST();
+
+if __name__ == '__main__':
+ http.server.test(port=8181, HandlerClass=MyHTTPRequestHandler)
+
diff --git a/pbserver.py b/pbserver.py
index 36a53a1..33415d6 100755
--- a/pbserver.py
+++ b/pbserver.py
@@ -1,5 +1,5 @@
#!/usr/bin/python2.7
-from bottle import route, run, post, request
+from bottle import route, run, post, request, static_file
from pb.gradient import Gradient
from pb.imgrid import Imgrid
@@ -172,4 +172,41 @@ def pattern():
raise;
return json.dumps({ 'error' : 'Request could not be processed' })
-run(host='0.0.0.0', server='flup', port=8999, debug=True)
+#static routes
+@route('/im/<filename>')
+def server_static(filename):
+ return static_file(filename, root='frontend/im/')
+@route('/im')
+def server_static():
+ return static_file("index.html", root='frontend/im/')
+@route('/imgrid')
+def server_static():
+ return static_file("index.html", root='frontend/imgrid/')
+@route('/imgradient')
+def server_static():
+ return static_file("index.html", root='frontend/imgradient/')
+@route('/imlandscape')
+def server_static():
+ return static_file("index.html", root='frontend/imlandscape/')
+@route('/impattern')
+def server_static():
+ return static_file("index.html", root='frontend/impattern/')
+@route('/imbreak')
+def server_static():
+ return static_file("index.html", root='frontend/imbreak/')
+@route('/')
+def server_static():
+ return static_file("index.html", root='frontend/im/')
+@route('/css/<filename>')
+def server_static(filename):
+ return static_file(filename, root='frontend/css/')
+@route('/js/<filename>')
+def server_static(filename):
+ return static_file(filename, root='frontend/js/')
+@route('/img/<filename>')
+def server_static(filename):
+ return static_file(filename, root='frontend/img/')
+
+
+#run(host='0.0.0.0', server='flup', port=8999, debug=True)
+run(host='0.0.0.0', port=8999, debug=True)