Challenge:
Winner?:
No
Code Snippet:
sync on sync rate 0 randomize timer() #constant B_WIDTH 48 #constant B_HEIGHT 16 #constant B_TYPES 10 select rnd(3) case 0 : offset = 0 : range = 45 : endcase case 1 : offset = 135 : range = 25 : endcase case 2 : offset = 200 : range = 30 : endcase case 3 : offset = 70 : range = 30 : endcase endselect for i = 1 to B_TYPES makeBrickImage( hsv2dword(offset + rnd(range), 0.8, 0.8), i) next i Type Block x as integer y as integer BlockType as integer EndType GRID_WIDTH as integer : GRID_HEIGHT as integer GRID_WIDTH = screen width() / B_WIDTH GRID_HEIGHT = screen height() / B_HEIGHT * 0.25 dim grid(GRID_WIDTH, GRID_HEIGHT) as Block for i = 0 to GRID_WIDTH-1 for j = 0 to GRID_HEIGHT-1 grid(i, j).x = i * B_WIDTH grid(i, j).y = j * B_HEIGHT grid(i, j).BlockType = rnd(B_TYPES-1)+1 sNum = 1 + i + (j * GRID_WIDTH) sprite sNum, grid(i, j).x, grid(i, j).y, grid(i, j).BlockType set sprite sNum, 0, 0 next j next i `Player datatoimage(1000) Type Coord2D x as float y as float EndType Type PlayerData p as Coord2D v as Coord2D angV as float ang as float EndType Player as PlayerData Player.p.x = screen width() * 0.5 Player.p.y = screen height() * 0.8 Player.v.x = -120.0 Player.v.y = -120.0 Player.angV = 45.0 Player.ang = 45.0 sprite 1000, Player.p.x, Player.p.y, 1000 set sprite 1000, 1, 1 size sprite 1000, B_WIDTH * 0.5, B_WIDTH * 0.5 offset sprite 1000, B_WIDTH * 0.25, B_WIDTH * 0.25 frameTime# = 1.0 startTime = timer() do frameTime# = (frameTime# * 0.8) + ((timer() - startTime) * 0.2) frameTimeS# = frameTime# * 0.001 startTime = timer() gosub ProcessPlayer sync loop end ProcessPlayer: inc Player.p.x, Player.v.x * frameTimeS# inc Player.p.y, Player.v.y * frameTimeS# inc Player.ang, Player.angV * frameTimeS# sprite 1000, Player.p.x, Player.p.y, 1000 rotate sprite 1000, Player.ang spriteCol = sprite collision(1000, 0) if spriteCol > 0 text 0, screen height() - 20, "COLLISION: " + str$(spriteCol) Player.v.y = -Player.v.y delete sprite spriteCol endif if Player.p.x < 0 Player.v.x = -Player.v.x else if Player.p.x + sprite width(1000) > B_WIDTH * GRID_WIDTH Player.v.x = -Player.v.x endif endif if Player.p.y + sprite height(1000) > screen height() then Player.v.y = -Player.v.y return function makeBrickImage(B_COL as DWORD, imgNum as integer) make memblock 1, 12 + (B_WIDTH * B_HEIGHT * 4) write memblock dword 1, 0, B_WIDTH write memblock dword 1, 4, B_HEIGHT write memblock dword 1, 8, 32 i = 12 while i < get memblock size(1)-1 write memblock dword 1, i, B_COL inc i, 4 endwhile `HIGH-LIGHT TempCol as DWORD r = rgbr(B_COL)*1.25 : if r > 255 then r = 255 g = rgbg(B_COL)*1.25 : if g > 255 then g = 255 b = rgbb(B_COL)*1.25 : if b > 255 then b = 255 TempCol = rgb(r,g,b) `Fill the top row for i = 0 to B_WIDTH-1 : write memblock dword 1, 12 + (i*4) , TempCol : next i `Fill the left column (ie once every n-width pixels) for i = 0 to B_HEIGHT-1 : write memblock dword 1, 12 + (i*B_WIDTH*4) , TempCol : next i `LOW-LIGHT r = rgbr(B_COL)*0.75 g = rgbg(B_COL)*0.75 b = rgbb(B_COL)*0.75 TempCol = rgb(r,g,b) `Fill the bottom row (ie, 1 row offset by "the width * the height -1) T = B_WIDTH * (B_HEIGHT-1) * 4 for i = 1 to B_WIDTH-1 : write memblock dword 1, 12 + T + (i*4) , TempCol : next i `Fill the right column (ie once every n-width pixels + width-1) T = (B_WIDTH-1) * 4 for i = 0 to B_HEIGHT-1 : write memblock dword 1, 12 + T + (i*B_WIDTH*4) , TempCol : next i make image from memblock imgNum, 1 delete memblock 1 endfunction function datatoimage(image) memblock=1 read size make memblock 1,size read sx `as dword read sy `as dword read depth `as dword write memblock dword 1,0,sx write memblock dword 1,4,sy write memblock dword 1,8,depth for x=0 to sx-1 for y=0 to sy-1 pos=(y*sx+x)*4+12 read b `as byte read g `as byte read r `as byte read a `as byte write memblock byte 1,pos,b write memblock byte 1,pos+1,g write memblock byte 1,pos+2,r write memblock byte 1,pos+3,a next y next x make image from memblock image,1 endfunction remstart h: 0.0 => 360.0 s: 0.0 => 1.0 v: 0.0 => 1.0 returns: Color as DWORD remend function hsv2dword(H as float, S as float, V as float) `Sanitize the input... if H < 0.0 then H = 0.0 else if H > 360.0 then H = 360.0 if S < 0.0 then S = 0.0 else if S > 1.0 then S = 1.0 if V < 0.0 then V = 0.0 else if V > 1.0 then V = 1.0 `Variable for returned Colour returnCol as DWORD `Section of the Hue Hi as integer : Hi = (H / 60.0) mod 6 `f is a fraction of the section f as float : f = (H / 60.0) - Hi `p, q and t are temp variables used to work out the rgb values before we know where to put them p as float : p = V * (1.0 - S) q as float : q = V * (1.0 - (f * S)) t as float : t = V * (1.0 - ((1.0 - f) * S)) `Depending on the section worked out above, we store the rgb value appropriately... R as float : G as float : B as float select Hi case 0 : R = V : G = t : B = p : endcase case 1 : R = q : G = V : B = p : endcase case 2 : R = p : G = V : B = t : endcase case 3 : R = p : G = q : B = V : endcase case 4 : R = t : G = p : B = V : endcase case 5 : R = V : G = p : B = q : endcase endselect `Sanitize the output - just incase of floating point errors... if R < 0.0 then R = 0.0 else if R > 1.0 then R = 1.0 if G < 0.0 then G = 0.0 else if G > 1.0 then G = 1.0 if B < 0.0 then B = 0.0 else if B > 1.0 then B = 1.0 `Convert to Bytes and then convert to a DWORD using the rgb() function rByte as byte : rByte = R * 255 gByte as byte : gByte = G * 255 bByte as byte : bByte = B * 255 returnCol = rgb(rByte, gByte, bByte) endfunction returnCol data 16396 data 64 data 64 data 32 data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,217,217,219,1,231,231,231,13,246,246,246,13,237,242,247,19,234,241,246,44,160,206,225,46,82,157,201,46,74,177,225,46,66,212,255,33,59,207,255,13,54,200,250,13,52,185,231,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,183,222,1,222,222,244,19,246,243,248,54,248,248,248,105,247,247,247,164,245,250,255,206,252,252,252,209,236,242,247,215,230,236,239,241,142,185,208,242,85,133,178,242,77,166,213,242,69,210,255,229,61,211,255,209,55,209,255,206,49,206,255,168,43,203,255,135,38,198,255,77,33,191,248,25,32,176,227,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,212,241,6,202,202,243,63,220,220,247,156,247,250,255,212,250,251,251,242,249,249,249,255,248,252,255,255,254,254,254,255,239,244,249,255,228,234,231,255,175,202,217,255,97,150,188,255,88,140,184,255,79,176,223,255,71,214,255,255,63,212,255,255,56,210,255,255,50,208,255,255,44,205,255,255,39,200,255,251,34,196,253,219,30,192,250,164,27,188,247,98,23,182,242,36,27,156,205,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,234,251,6,226,226,251,63,217,217,248,168,217,217,249,241,245,245,253,255,253,253,253,255,252,255,255,255,250,250,250,255,255,255,255,255,242,243,243,255,233,238,242,255,194,213,217,255,110,167,197,255,100,146,186,255,90,168,212,255,81,210,255,255,73,214,255,255,65,212,255,255,58,210,255,255,51,208,255,255,46,207,255,255,40,203,255,255,35,198,255,255,31,195,252,255,27,190,250,254,24,186,246,226,21,181,242,142,18,176,238,43,20,154,206,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251,251,254,1,247,247,255,57,240,240,255,168,232,232,253,241,223,223,251,255,241,241,254,255,254,254,255,255,254,254,254,255,253,255,253,255,251,254,251,255,246,249,246,255,238,241,238,255,214,224,223,255,145,185,207,255,112,154,191,255,102,161,202,255,92,202,245,255,83,217,255,255,75,215,255,255,67,213,255,255,59,210,255,255,53,209,255,255,47,207,255,255,41,205,255,255,36,201,255,255,32,196,255,255,28,193,251,255,24,188,248,255,21,183,244,255,19,179,240,228,17,175,237,142,15,171,233,43,20,138,184,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,10,255,255,255,108,251,251,255,231,244,244,255,255,236,236,254,255,236,236,254,255,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,244,247,244,255,230,235,232,255,186,204,218,255,125,169,200,255,114,160,198,255,104,190,230,255,94,219,255,255,85,218,255,255,76,215,255,255,68,213,255,255,60,211,255,255,54,209,255,255,47,207,255,255,42,206,255,255,37,203,255,255,32,198,255,255,28,194,253,255,25,189,249,255,22,186,245,255,19,181,242,255,17,178,239,255,15,173,236,228,13,168,232,108,12,159,219,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,31,255,255,255,158,255,255,255,249,255,255,255,255,247,247,255,255,239,239,255,255,250,250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,255,253,255,255,255,255,255,240,244,248,255,220,224,232,255,146,187,209,255,128,166,199,255,116,180,217,255,105,214,255,255,95,220,255,255,86,218,255,255,77,215,255,255,69,213,255,255,61,211,255,255,54,209,255,255,48,208,255,255,42,206,255,255,37,205,255,255,33,201,255,255,29,196,255,255,25,192,251,255,22,187,248,255,19,182,244,255,17,179,240,255,15,174,237,255,13,170,233,249,12,166,230,151,11,162,226,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,1,255,255,255,64,255,255,255,200,255,255,255,255,255,255,255,255,255,255,255,255,249,249,255,255,247,247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,253,253,255,253,254,254,255,234,239,237,255,188,210,221,255,140,176,205,255,129,174,208,255,117,205,243,255,106,223,255,255,96,221,255,255,86,218,255,255,78,216,255,255,69,213,255,255,62,211,255,255,55,209,255,255,48,208,255,255,42,206,255,255,37,205,255,255,33,203,255,255,29,199,255,255,25,194,254,255,22,189,250,255,19,185,246,255,17,181,243,255,15,177,239,255,13,172,236,255,12,168,232,254,11,165,228,187,11,161,225,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,10,255,255,255,108,255,255,255,231,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,250,250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,254,255,255,248,252,248,255,223,230,234,255,152,192,213,255,141,175,206,255,129,192,226,255,117,221,255,255,106,223,255,255,96,221,255,255,87,218,255,255,78,216,255,255,69,213,255,255,62,211,255,255,55,209,255,255,48,208,255,255,43,206,255,255,37,205,255,255,33,203,255,255,29,200,255,255,25,188,247,255,22,145,193,255,19,102,141,255,17,152,207,255,15,178,240,255,13,173,237,255,12,170,233,255,11,166,230,255,11,162,226,217,11,150,214,74,15,102,156,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,10,255,255,255,149,255,255,255,249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,255,254,255,252,250,252,255,237,239,239,255,190,210,221,255,152,184,210,255,140,181,213,255,129,214,248,255,117,226,255,255,106,223,255,255,96,221,255,255,86,218,255,255,78,216,255,255,69,213,255,255,62,211,255,255,55,209,255,255,48,208,255,255,42,206,255,255,37,205,255,255,33,203,255,255,29,188,243,255,25,123,162,255,22,38,56,255,19,19,19,255,17,104,144,255,15,180,243,255,13,176,239,255,12,172,234,255,11,168,231,255,11,165,227,255,11,160,224,238,11,134,197,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,3,255,255,255,110,255,255,255,249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,254,255,255,247,247,247,255,220,225,228,255,163,195,214,255,151,182,211,255,139,198,229,255,128,225,255,255,116,226,255,255,105,223,255,255,95,220,255,255,86,218,255,255,77,215,255,255,69,213,255,255,61,211,255,255,54,209,255,255,48,208,255,255,42,206,255,255,37,205,255,255,33,182,235,255,29,102,135,255,25,25,41,255,22,22,22,255,19,66,93,255,17,156,209,255,15,181,244,255,13,177,240,255,12,173,237,255,11,170,233,255,11,166,230,255,11,162,225,255,11,155,218,224,11,108,171,55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,74,255,255,255,238,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,248,251,253,255,239,237,239,255,197,212,220,255,160,187,213,255,149,186,215,255,137,215,247,255,125,228,255,255,114,225,255,255,104,223,255,255,94,220,255,255,85,218,255,255,76,215,255,255,68,213,255,255,60,211,255,255,54,209,255,255,47,207,255,255,42,206,255,255,37,175,224,255,32,80,105,255,28,28,28,255,25,25,25,255,22,22,22,255,19,90,125,255,17,168,223,255,15,183,245,255,13,178,242,255,12,174,238,255,11,171,234,255,11,167,231,255,11,164,227,255,11,160,224,255,11,134,196,191,11,90,154,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,253,255,45,255,255,255,217,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,253,255,255,254,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,253,255,255,255,250,251,251,255,228,231,232,255,174,202,217,255,158,186,213,255,146,197,227,255,135,227,255,255,123,228,255,255,112,225,255,255,102,222,255,255,92,219,255,255,83,217,255,255,75,215,255,255,67,213,255,255,59,210,255,255,53,209,255,255,47,207,255,255,41,206,255,255,36,127,163,255,32,32,32,255,28,34,49,255,24,40,57,255,21,21,21,255,19,19,19,255,17,81,113,255,15,163,220,255,13,180,243,255,12,176,239,255,11,172,236,255,11,168,232,255,11,165,228,255,11,161,225,255,11,154,218,254,11,108,170,146,11,88,152,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, data 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,241,255,24,247,247,255,187,251,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,251,251,255,255,248,248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,252,254,255,255,246,247,247,255,214,223,228,255,165,194,215,255,154,188,216,255,143,210,241,255,132,230,255,255,120,227,255,255,110,224,255,255,100,222,255,255,90,219,255,255,81,216,255,255,73,214,255,255,65,212,255,255,58,210,255,255,51,208,255,255,46,207,255,255,40,205,255,255,35,175,225,255,31,119,155,255,27,151,198,255,24,155,205,255,21,73,101,255,18,18,18,255,16,16,16,255,14,79,111,255,13,159,215,255,12,178,240,255,11,173,237,255,11,170,233,255,11,166,230,255,11,162,226,255,11,159,222,255,11,124,185,245,11,89,153,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,