From 25bc1116fb9fcb59e65a842d3d5230cb11de51f6 Mon Sep 17 00:00:00 2001 From: treeform Date: Fri, 11 Feb 2022 14:27:11 -0800 Subject: [PATCH 1/9] Improve bitmap reader. --- src/pixie/fileformats/bmp.nim | 27 ++++++++++++++++++++++----- tests/test_bmp.nim | 7 +++++++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/pixie/fileformats/bmp.nim b/src/pixie/fileformats/bmp.nim index 9853d7f..a45523b 100644 --- a/src/pixie/fileformats/bmp.nim +++ b/src/pixie/fileformats/bmp.nim @@ -1,9 +1,12 @@ -import chroma, flatty/binny, pixie/common, pixie/images +import bitops, chroma, flatty/binny, pixie/common, pixie/images # See: https://en.wikipedia.org/wiki/BMP_file_format const bmpSignature* = "BM" +proc colorMaskShift(color: uint32, mask: uint32): uint8 = + ((color and mask) shr (mask.firstSetBit() - 1)).uint8 + proc decodeBmp*(data: string): Image {.raises: [PixieError].} = ## Decodes bitmap data into an Image. @@ -16,8 +19,21 @@ proc decodeBmp*(data: string): Image {.raises: [PixieError].} = height = data.readInt32(22).int bits = data.readUint16(28).int compression = data.readUint32(30).int + dibHeader = data.readInt32(14).int + var offset = data.readUInt32(10).int + # Default channels if header does not contain them: + redChan = 0x00FF0000.uint32 + greenChan = 0x0000FF00.uint32 + blueChan = 0x000000FF.uint32 + alphaChan = 0xFF000000.uint32 + + if dibHeader == 108: + redChan = data.readUInt32(54) + greenChan = data.readUInt32(58) + blueChan = data.readUInt32(62) + alphaChan = data.readUInt32(66) if bits notin [32, 24]: raise newException(PixieError, "Unsupported BMP data format") @@ -35,10 +51,11 @@ proc decodeBmp*(data: string): Image {.raises: [PixieError].} = for x in 0 ..< result.width: var rgba: ColorRGBA if bits == 32: - rgba.r = data.readUint8(offset + 0) - rgba.g = data.readUint8(offset + 1) - rgba.b = data.readUint8(offset + 2) - rgba.a = data.readUint8(offset + 3) + let color = data.readUint32(offset) + rgba.r = color.colorMaskShift(redChan) + rgba.g = color.colorMaskShift(greenChan) + rgba.b = color.colorMaskShift(blueChan) + rgba.a = color.colorMaskShift(alphaChan) offset += 4 elif bits == 24: rgba.r = data.readUint8(offset + 2) diff --git a/tests/test_bmp.nim b/tests/test_bmp.nim index 78b8c5d..d5716dc 100644 --- a/tests/test_bmp.nim +++ b/tests/test_bmp.nim @@ -36,3 +36,10 @@ block: "tests/fileformats/bmp/knight." & $bits & ".master.bmp" )) writeFile("tests/fileformats/bmp/knight." & $bits & ".bmp", encodeBmp(image)) + + +block: + let image = decodeBmp(readFile( + "tests/fileformats/bmp/rgb.24.master.bmp" + )) + writeFile("tests/fileformats/bmp/rgb.24.bmp", encodeBmp(image)) From 104006212fc40d7058d0108658574ab790996ace Mon Sep 17 00:00:00 2001 From: treeform Date: Fri, 11 Feb 2022 14:27:20 -0800 Subject: [PATCH 2/9] Add test files. --- tests/fileformats/bmp/rgb.24.bmp | Bin 0 -> 921722 bytes tests/fileformats/bmp/rgb.24.master.bmp | Bin 0 -> 921654 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/fileformats/bmp/rgb.24.bmp create mode 100644 tests/fileformats/bmp/rgb.24.master.bmp diff --git a/tests/fileformats/bmp/rgb.24.bmp b/tests/fileformats/bmp/rgb.24.bmp new file mode 100644 index 0000000000000000000000000000000000000000..02b40352d3847d531bb0d16772273bcccc26ac8f GIT binary patch literal 921722 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

eMb|2?a0<-P&z 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

jWnS+IqR`C?AhQIuPm_l;v$-Zd7dSIcg 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 literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/rgb.24.master.bmp b/tests/fileformats/bmp/rgb.24.master.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0b4f2f9a240209ec9be857ff0bb6e489ef0e2875 GIT binary patch literal 921654 zcmeF42b^R_b+3D-)5M+4yR&J+=GCq?Nkoev6HPWIJ!23Uj7YXIVB<_M0xUV;2iOLi zAY+r$!y+Su2|^+$Sy?M>UTw~kch39%b#Haw?&+SHjhddRo!{BIIn=GLug(e|n_59)}8kd)K>HpTn;`;VSheUA9PV_k2o^TYlS+ai>K zPzFL72xZ_xmVqL-lI+#;7~dhuUM-JxeA)iueMjf6KW?n+`{SymW1S!NpZ+%tc^2|4 zlz~tNLKzsn3{+#1wvRXO%C9l@dG%a-BFXsQb?kQw*9v(Q%0MUsp$vpFFnSp%=Vqn# zLLQduw5r+;Tq!OZaNt*JT6jz?l@|mY{oe*>1Uafy^MxWIUh z4RuM#gHQ%S8JN&z!1J|Qnq;s)Ce&@AZm&=VlH3(L#o9TkI$MZzu-t_#M^+|e15~LlOhs;96R8tq>-?}k@F0|d^IQh7rIn1C&^q

2hR6EGtR1e+jY> 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¶Wfewz}{ok7hi9D8tTtX)o1!5^!|FkH~%hU_kt29 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 Date: Fri, 11 Feb 2022 14:28:26 -0800 Subject: [PATCH 3/9] f --- tests/test_bmp.nim | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_bmp.nim b/tests/test_bmp.nim index d5716dc..ee6af3e 100644 --- a/tests/test_bmp.nim +++ b/tests/test_bmp.nim @@ -37,7 +37,6 @@ block: )) writeFile("tests/fileformats/bmp/knight." & $bits & ".bmp", encodeBmp(image)) - block: let image = decodeBmp(readFile( "tests/fileformats/bmp/rgb.24.master.bmp" From ffc1b90c5f4b590fb22079d98e17fffb79c021b6 Mon Sep 17 00:00:00 2001 From: treeform Date: Fri, 11 Feb 2022 16:09:38 -0800 Subject: [PATCH 4/9] Fail when channel maks is 0. --- src/pixie/fileformats/bmp.nim | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/pixie/fileformats/bmp.nim b/src/pixie/fileformats/bmp.nim index a45523b..d955224 100644 --- a/src/pixie/fileformats/bmp.nim +++ b/src/pixie/fileformats/bmp.nim @@ -24,16 +24,20 @@ proc decodeBmp*(data: string): Image {.raises: [PixieError].} = var offset = data.readUInt32(10).int # Default channels if header does not contain them: - redChan = 0x00FF0000.uint32 - greenChan = 0x0000FF00.uint32 - blueChan = 0x000000FF.uint32 - alphaChan = 0xFF000000.uint32 + redChannel = 0x00FF0000.uint32 + greenChannel = 0x0000FF00.uint32 + blueChannel = 0x000000FF.uint32 + alphaChannel = 0xFF000000.uint32 if dibHeader == 108: - redChan = data.readUInt32(54) - greenChan = data.readUInt32(58) - blueChan = data.readUInt32(62) - alphaChan = data.readUInt32(66) + redChannel = data.readUInt32(54) + greenChannel = data.readUInt32(58) + blueChannel = data.readUInt32(62) + alphaChannel = data.readUInt32(66) + + if redChannel == 0 or greenChannel == 0 or + blueChannel == 0 or alphaChannel == 0: + raise newException(PixieError, "Unsupported 0 channel mask.") if bits notin [32, 24]: raise newException(PixieError, "Unsupported BMP data format") @@ -52,10 +56,10 @@ proc decodeBmp*(data: string): Image {.raises: [PixieError].} = var rgba: ColorRGBA if bits == 32: let color = data.readUint32(offset) - rgba.r = color.colorMaskShift(redChan) - rgba.g = color.colorMaskShift(greenChan) - rgba.b = color.colorMaskShift(blueChan) - rgba.a = color.colorMaskShift(alphaChan) + rgba.r = color.colorMaskShift(redChannel) + rgba.g = color.colorMaskShift(greenChannel) + rgba.b = color.colorMaskShift(blueChannel) + rgba.a = color.colorMaskShift(alphaChannel) offset += 4 elif bits == 24: rgba.r = data.readUint8(offset + 2) From 4dc50d97787c023f8569b87ac3b70531ab41f7fa Mon Sep 17 00:00:00 2001 From: treeform Date: Fri, 11 Feb 2022 20:08:09 -0800 Subject: [PATCH 5/9] Read more bmp formats. --- src/pixie/fileformats/bmp.nim | 169 ++++++++++++++++++++++++++++++---- tests/fuzz_bmp.nim | 38 ++++++++ tests/test_bmp.nim | 7 +- 3 files changed, 194 insertions(+), 20 deletions(-) create mode 100644 tests/fuzz_bmp.nim diff --git a/src/pixie/fileformats/bmp.nim b/src/pixie/fileformats/bmp.nim index d955224..97771c0 100644 --- a/src/pixie/fileformats/bmp.nim +++ b/src/pixie/fileformats/bmp.nim @@ -1,6 +1,9 @@ import bitops, chroma, flatty/binny, pixie/common, pixie/images +import print, strutils + # See: https://en.wikipedia.org/wiki/BMP_file_format +# See: https://bmptestsuite.sourceforge.io/ const bmpSignature* = "BM" @@ -10,64 +13,192 @@ proc colorMaskShift(color: uint32, mask: uint32): uint8 = proc decodeBmp*(data: string): Image {.raises: [PixieError].} = ## Decodes bitmap data into an Image. + if data.len < 48: + raise newException(PixieError, "Invalid BMP data") + # BMP Header if data[0 .. 1] != "BM": raise newException(PixieError, "Invalid BMP data") let - width = data.readInt32(18).int - height = data.readInt32(22).int bits = data.readUint16(28).int compression = data.readUint32(30).int dibHeader = data.readInt32(14).int - var + numColors = data.readInt32(46).int + width = data.readInt32(18).int + height = data.readInt32(22).int offset = data.readUInt32(10).int # Default channels if header does not contain them: redChannel = 0x00FF0000.uint32 greenChannel = 0x0000FF00.uint32 blueChannel = 0x000000FF.uint32 alphaChannel = 0xFF000000.uint32 + useAlpha = false + flipVertical = false + + if numColors < 0: + raise newException(PixieError, "Invalid BMP data") + if dibHeader notin [40, 108]: + raise newException(PixieError, "Invalid BMP data") + + var + colorTable = newSeq[ColorRGBA](numColors) if dibHeader == 108: + if data.len < 14 + dibHeader: + raise newException(PixieError, "Invalid BMP data") + redChannel = data.readUInt32(54) greenChannel = data.readUInt32(58) blueChannel = data.readUInt32(62) alphaChannel = data.readUInt32(66) + useAlpha = true + + if bits == 8 and numColors == 0: + numColors = 256 + colorTable = newSeq[ColorRGBA](numColors) + + if numColors > 0: + if data.len < 14 + dibHeader + numColors * 4: + raise newException(PixieError, "Invalid BMP data") + + var colorOffset = dibHeader + 14 + for i in 0 ..< numColors: + var rgba: ColorRGBA + if colorOffset + 3 > data.len - 2: + raise newException(PixieError, "Truncated BMP data") + rgba.r = data.readUint8(colorOffset + 2) + rgba.g = data.readUint8(colorOffset + 1) + rgba.b = data.readUint8(colorOffset + 0) + rgba.a = 255 + colorOffset += 4 + colorTable[i] = rgba if redChannel == 0 or greenChannel == 0 or blueChannel == 0 or alphaChannel == 0: raise newException(PixieError, "Unsupported 0 channel mask.") - if bits notin [32, 24]: + if bits notin [1, 4, 8, 32, 24]: raise newException(PixieError, "Unsupported BMP data format") if compression notin [0, 3]: raise newException(PixieError, "Unsupported BMP data format") - let channels = if bits == 32: 4 else: 3 - if width * height * channels + offset > data.len: - raise newException(PixieError, "Invalid BMP data size") + if height < 0: + height = -height + flipVertical = true result = newImage(width, height) + let startOffset = offset - for y in 0 ..< result.height: - for x in 0 ..< result.width: - var rgba: ColorRGBA - if bits == 32: - let color = data.readUint32(offset) - rgba.r = color.colorMaskShift(redChannel) - rgba.g = color.colorMaskShift(greenChannel) - rgba.b = color.colorMaskShift(blueChannel) - rgba.a = color.colorMaskShift(alphaChannel) - offset += 4 - elif bits == 24: + if bits == 1: + var + haveBits = 0 + colorBits: uint8 = 0 + for y in 0 ..< result.height: + # pad the row + haveBits = 0 + let padding = (offset - startOffset) mod 4 + if padding > 0: + offset += 4 - padding + for x in 0 ..< result.width: + if offset >= data.len: + raise newException(PixieError, "Truncated BMP data") + var rgba: ColorRGBA + if haveBits == 0: + colorBits = data.readUint8(offset) + haveBits = 8 + offset += 1 + if (colorBits and 0b1000_0000) == 0: + rgba = colorTable[0] + else: + rgba = colorTable[1] + colorBits = colorBits shl 1 + dec haveBits + result[x, result.height - y - 1] = rgba.rgbx() + + elif bits == 4: + var + haveBits = 0 + colorBits: uint8 = 0 + for y in 0 ..< result.height: + # pad the row + haveBits = 0 + let padding = (offset - startOffset) mod 4 + if padding > 0: + offset += 4 - padding + for x in 0 ..< result.width: + if offset >= data.len: + raise newException(PixieError, "Truncated BMP data") + var rgba: ColorRGBA + if haveBits == 0: + colorBits = data.readUint8(offset) + haveBits = 8 + offset += 1 + let index = (colorBits and 0b1111_0000) shr 4 + if index.int >= numColors: + raise newException(PixieError, "Invalid BMP index") + rgba = colorTable[index] + colorBits = colorBits shl 4 + haveBits -= 4 + result[x, result.height - y - 1] = rgba.rgbx() + + elif bits == 8: + for y in 0 ..< result.height: + # pad the row + let padding = (offset - startOffset) mod 4 + if padding > 0: + offset += 4 - padding + for x in 0 ..< result.width: + if offset >= data.len: + raise newException(PixieError, "Truncated BMP data") + var rgba: ColorRGBA + let index = data.readUint8(offset) + offset += 1 + if index.int >= numColors: + raise newException(PixieError, "Invalid BMP index") + rgba = colorTable[index] + result[x, result.height - y - 1] = rgba.rgbx() + + elif bits == 24: + for y in 0 ..< result.height: + # pad the row + let padding = (offset - startOffset) mod 4 + if padding >= 0: + offset += 4 - padding + for x in 0 ..< result.width: + if offset + 3 > data.len: + raise newException(PixieError, "Truncated BMP data") + var rgba: ColorRGBA rgba.r = data.readUint8(offset + 2) rgba.g = data.readUint8(offset + 1) rgba.b = data.readUint8(offset + 0) rgba.a = 255 offset += 3 - result[x, result.height - y - 1] = rgba.rgbx() + result[x, result.height - y - 1] = rgba.rgbx() + + + if bits == 32: + + for y in 0 ..< result.height: + for x in 0 ..< result.width: + if offset >= data.len - 2: + raise newException(PixieError, "Truncated BMP data") + var rgba: ColorRGBA + let color = data.readUint32(offset) + rgba.r = color.colorMaskShift(redChannel) + rgba.g = color.colorMaskShift(greenChannel) + rgba.b = color.colorMaskShift(blueChannel) + if useAlpha: + rgba.a = color.colorMaskShift(alphaChannel) + else: + rgba.a = 255 + offset += 4 + result[x, result.height - y - 1] = rgba.rgbx() + + if flipVertical: + result.flipVertical() proc decodeBmp*(data: seq[uint8]): Image {.inline, raises: [PixieError].} = ## Decodes bitmap data into an Image. diff --git a/tests/fuzz_bmp.nim b/tests/fuzz_bmp.nim new file mode 100644 index 0000000..e742430 --- /dev/null +++ b/tests/fuzz_bmp.nim @@ -0,0 +1,38 @@ +import pixie/common, pixie/fileformats/bmp, random, strformat, flatty/binny, os + +randomize() + +var originals = @[readFile("tests/fileformats/bmp/knight.32.bmp")] +for file in walkFiles("tests/fileformats/bmp/bmpsuite/*"): + originals.add(readFile(file)) + +for i in 0 ..< 100_000: + var data = originals[rand(originals.len-1)] + let + pos = rand(data.len-1) + value = rand(255).char + # pos = 27355 + # value = '&' + data[pos] = value + + let + width = data.readInt32(18).int + height = data.readInt32(22).int + numColors = data.readInt32(46).int + if abs(width) > 1000 or abs(height) > 1000 or numColors > 1000: + echo "too big" + continue + + echo &"{i} {pos} {repr(value)}" + try: + let img = decodeBmp(data) + doAssert img.height > 0 and img.width > 0 + except PixieError: + discard + + data = data[0 ..< pos] + try: + let img = decodeBmp(data) + doAssert img.height > 0 and img.width > 0 + except PixieError: + discard diff --git a/tests/test_bmp.nim b/tests/test_bmp.nim index ee6af3e..5d903f3 100644 --- a/tests/test_bmp.nim +++ b/tests/test_bmp.nim @@ -1,4 +1,4 @@ -import chroma, pixie, pixie/fileformats/bmp +import chroma, pixie, pixie/fileformats/bmp, os, strutils # block: # var image = newImage(4, 2) @@ -42,3 +42,8 @@ block: "tests/fileformats/bmp/rgb.24.master.bmp" )) writeFile("tests/fileformats/bmp/rgb.24.bmp", encodeBmp(image)) + +block: + for file in walkFiles("tests/fileformats/bmp/bmpsuite/*"): + let image = decodeBmp(readFile(file)) + image.writeFile(file.replace("bmpsuite", "output") & ".png") From c2350c964265d113f02d5bcac2afac8e6eea04b6 Mon Sep 17 00:00:00 2001 From: treeform Date: Fri, 11 Feb 2022 20:08:59 -0800 Subject: [PATCH 6/9] Fixes. --- src/pixie/fileformats/bmp.nim | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/pixie/fileformats/bmp.nim b/src/pixie/fileformats/bmp.nim index 97771c0..673220e 100644 --- a/src/pixie/fileformats/bmp.nim +++ b/src/pixie/fileformats/bmp.nim @@ -1,7 +1,5 @@ import bitops, chroma, flatty/binny, pixie/common, pixie/images -import print, strutils - # See: https://en.wikipedia.org/wiki/BMP_file_format # See: https://bmptestsuite.sourceforge.io/ @@ -178,7 +176,6 @@ proc decodeBmp*(data: string): Image {.raises: [PixieError].} = offset += 3 result[x, result.height - y - 1] = rgba.rgbx() - if bits == 32: for y in 0 ..< result.height: From 81b82e227785297a08dbcbf9b8224e0f256355e3 Mon Sep 17 00:00:00 2001 From: treeform Date: Fri, 11 Feb 2022 20:11:01 -0800 Subject: [PATCH 7/9] Morepretty --- src/pixie/fileformats/bmp.nim | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/pixie/fileformats/bmp.nim b/src/pixie/fileformats/bmp.nim index 673220e..4f2a5bd 100644 --- a/src/pixie/fileformats/bmp.nim +++ b/src/pixie/fileformats/bmp.nim @@ -28,9 +28,9 @@ proc decodeBmp*(data: string): Image {.raises: [PixieError].} = height = data.readInt32(22).int offset = data.readUInt32(10).int # Default channels if header does not contain them: - redChannel = 0x00FF0000.uint32 + redChannel = 0x00FF0000.uint32 greenChannel = 0x0000FF00.uint32 - blueChannel = 0x000000FF.uint32 + blueChannel = 0x000000FF.uint32 alphaChannel = 0xFF000000.uint32 useAlpha = false flipVertical = false @@ -75,7 +75,7 @@ proc decodeBmp*(data: string): Image {.raises: [PixieError].} = if redChannel == 0 or greenChannel == 0 or blueChannel == 0 or alphaChannel == 0: - raise newException(PixieError, "Unsupported 0 channel mask.") + raise newException(PixieError, "Unsupported 0 channel mask.") if bits notin [1, 4, 8, 32, 24]: raise newException(PixieError, "Unsupported BMP data format") @@ -177,7 +177,6 @@ proc decodeBmp*(data: string): Image {.raises: [PixieError].} = result[x, result.height - y - 1] = rgba.rgbx() if bits == 32: - for y in 0 ..< result.height: for x in 0 ..< result.width: if offset >= data.len - 2: From d250e4be01d2776e244e65b2e4732eaadc9cb9e2 Mon Sep 17 00:00:00 2001 From: treeform Date: Fri, 11 Feb 2022 21:08:24 -0800 Subject: [PATCH 8/9] Fixed fuzzing. --- src/pixie/fileformats/bmp.nim | 20 ++++++++++---------- tests/fuzz_bmp.nim | 14 +++++++------- tests/test_bmp.nim | 3 ++- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/pixie/fileformats/bmp.nim b/src/pixie/fileformats/bmp.nim index 4f2a5bd..6a69efe 100644 --- a/src/pixie/fileformats/bmp.nim +++ b/src/pixie/fileformats/bmp.nim @@ -35,8 +35,8 @@ proc decodeBmp*(data: string): Image {.raises: [PixieError].} = useAlpha = false flipVertical = false - if numColors < 0: - raise newException(PixieError, "Invalid BMP data") + if numColors < 0 or numColors > 256: + raise newException(PixieError, "Invalid number of colors") if dibHeader notin [40, 108]: raise newException(PixieError, "Invalid BMP data") @@ -101,10 +101,10 @@ proc decodeBmp*(data: string): Image {.raises: [PixieError].} = if padding > 0: offset += 4 - padding for x in 0 ..< result.width: - if offset >= data.len: - raise newException(PixieError, "Truncated BMP data") var rgba: ColorRGBA if haveBits == 0: + if offset >= data.len: + raise newException(PixieError, "Truncated BMP data") colorBits = data.readUint8(offset) haveBits = 8 offset += 1 @@ -127,10 +127,10 @@ proc decodeBmp*(data: string): Image {.raises: [PixieError].} = if padding > 0: offset += 4 - padding for x in 0 ..< result.width: - if offset >= data.len: - raise newException(PixieError, "Truncated BMP data") var rgba: ColorRGBA if haveBits == 0: + if offset >= data.len: + raise newException(PixieError, "Truncated BMP data") colorBits = data.readUint8(offset) haveBits = 8 offset += 1 @@ -163,10 +163,10 @@ proc decodeBmp*(data: string): Image {.raises: [PixieError].} = for y in 0 ..< result.height: # pad the row let padding = (offset - startOffset) mod 4 - if padding >= 0: + if padding > 0: offset += 4 - padding for x in 0 ..< result.width: - if offset + 3 > data.len: + if offset + 2 >= data.len: raise newException(PixieError, "Truncated BMP data") var rgba: ColorRGBA rgba.r = data.readUint8(offset + 2) @@ -176,10 +176,10 @@ proc decodeBmp*(data: string): Image {.raises: [PixieError].} = offset += 3 result[x, result.height - y - 1] = rgba.rgbx() - if bits == 32: + elif bits == 32: for y in 0 ..< result.height: for x in 0 ..< result.width: - if offset >= data.len - 2: + if offset + 3 >= data.len: raise newException(PixieError, "Truncated BMP data") var rgba: ColorRGBA let color = data.readUint32(offset) diff --git a/tests/fuzz_bmp.nim b/tests/fuzz_bmp.nim index e742430..9ab3ee5 100644 --- a/tests/fuzz_bmp.nim +++ b/tests/fuzz_bmp.nim @@ -2,12 +2,13 @@ import pixie/common, pixie/fileformats/bmp, random, strformat, flatty/binny, os randomize() -var originals = @[readFile("tests/fileformats/bmp/knight.32.bmp")] +var originals = @["tests/fileformats/bmp/knight.32.bmp"] for file in walkFiles("tests/fileformats/bmp/bmpsuite/*"): - originals.add(readFile(file)) + originals.add(file) -for i in 0 ..< 100_000: - var data = originals[rand(originals.len-1)] +for i in 0 ..< 1000: + let file = originals[rand(originals.len-1)] + var data = readFile(file) let pos = rand(data.len-1) value = rand(255).char @@ -18,12 +19,11 @@ for i in 0 ..< 100_000: let width = data.readInt32(18).int height = data.readInt32(22).int - numColors = data.readInt32(46).int - if abs(width) > 1000 or abs(height) > 1000 or numColors > 1000: + if abs(width) > 1000 or abs(height) > 1000: echo "too big" continue - echo &"{i} {pos} {repr(value)}" + echo &"{i} {file} {pos} {repr(value)}" try: let img = decodeBmp(data) doAssert img.height > 0 and img.width > 0 diff --git a/tests/test_bmp.nim b/tests/test_bmp.nim index 5d903f3..80761e5 100644 --- a/tests/test_bmp.nim +++ b/tests/test_bmp.nim @@ -45,5 +45,6 @@ block: block: for file in walkFiles("tests/fileformats/bmp/bmpsuite/*"): + # echo file let image = decodeBmp(readFile(file)) - image.writeFile(file.replace("bmpsuite", "output") & ".png") + #image.writeFile(file.replace("bmpsuite", "output") & ".png") From 7198d2623dd882bdd159b7a6620bd86c0ddffe7c Mon Sep 17 00:00:00 2001 From: treeform Date: Fri, 11 Feb 2022 21:08:33 -0800 Subject: [PATCH 9/9] add test sutie images --- .../bmp/bmpsuite/ spaces in filename.bmp | Bin 0 -> 230454 bytes tests/fileformats/bmp/bmpsuite/1bpp-1x1.bmp | Bin 0 -> 66 bytes .../bmp/bmpsuite/1bpp-320x240-color.bmp | Bin 0 -> 9662 bytes .../bmpsuite/1bpp-320x240-overlappingcolor.bmp | Bin 0 -> 9662 bytes .../fileformats/bmp/bmpsuite/1bpp-320x240.bmp | Bin 0 -> 9662 bytes .../fileformats/bmp/bmpsuite/1bpp-321x240.bmp | Bin 0 -> 10622 bytes .../fileformats/bmp/bmpsuite/1bpp-322x240.bmp | Bin 0 -> 10622 bytes .../fileformats/bmp/bmpsuite/1bpp-323x240.bmp | Bin 0 -> 10622 bytes .../fileformats/bmp/bmpsuite/1bpp-324x240.bmp | Bin 0 -> 10622 bytes .../fileformats/bmp/bmpsuite/1bpp-325x240.bmp | Bin 0 -> 10622 bytes .../fileformats/bmp/bmpsuite/1bpp-326x240.bmp | Bin 0 -> 10622 bytes .../fileformats/bmp/bmpsuite/1bpp-327x240.bmp | Bin 0 -> 10622 bytes .../fileformats/bmp/bmpsuite/1bpp-328x240.bmp | Bin 0 -> 10622 bytes .../fileformats/bmp/bmpsuite/1bpp-329x240.bmp | Bin 0 -> 10622 bytes .../fileformats/bmp/bmpsuite/1bpp-330x240.bmp | Bin 0 -> 10622 bytes .../fileformats/bmp/bmpsuite/1bpp-331x240.bmp | Bin 0 -> 10622 bytes .../fileformats/bmp/bmpsuite/1bpp-332x240.bmp | Bin 0 -> 10622 bytes .../fileformats/bmp/bmpsuite/1bpp-333x240.bmp | Bin 0 -> 10622 bytes .../fileformats/bmp/bmpsuite/1bpp-334x240.bmp | Bin 0 -> 10622 bytes .../fileformats/bmp/bmpsuite/1bpp-335x240.bmp | Bin 0 -> 10622 bytes .../bmp/bmpsuite/1bpp-topdown-320x240.bmp | Bin 0 -> 9662 bytes tests/fileformats/bmp/bmpsuite/24bpp-1x1.bmp | Bin 0 -> 58 bytes .../fileformats/bmp/bmpsuite/24bpp-320x240.bmp | Bin 0 -> 230454 bytes .../fileformats/bmp/bmpsuite/24bpp-321x240.bmp | Bin 0 -> 231414 bytes .../fileformats/bmp/bmpsuite/24bpp-322x240.bmp | Bin 0 -> 232374 bytes .../fileformats/bmp/bmpsuite/24bpp-323x240.bmp | Bin 0 -> 233334 bytes .../bmp/bmpsuite/24bpp-imagesize-zero.bmp | Bin 0 -> 230454 bytes .../bmp/bmpsuite/24bpp-topdown-320x240.bmp | Bin 0 -> 230454 bytes .../bmp/bmpsuite/32bpp-101110-320x240.bmp | Bin 0 -> 307266 bytes tests/fileformats/bmp/bmpsuite/32bpp-1x1.bmp | Bin 0 -> 58 bytes .../fileformats/bmp/bmpsuite/32bpp-320x240.bmp | Bin 0 -> 307254 bytes .../32bpp-888-optimalpalette-320x240.bmp | Bin 0 -> 307290 bytes .../bmpsuite/32bpp-optimalpalette-320x240.bmp | Bin 0 -> 307278 bytes .../bmp/bmpsuite/32bpp-topdown-320x240.bmp | Bin 0 -> 307254 bytes tests/fileformats/bmp/bmpsuite/4bpp-1x1.bmp | Bin 0 -> 82 bytes .../fileformats/bmp/bmpsuite/4bpp-320x240.bmp | Bin 0 -> 38478 bytes .../fileformats/bmp/bmpsuite/4bpp-321x240.bmp | Bin 0 -> 39438 bytes .../fileformats/bmp/bmpsuite/4bpp-322x240.bmp | Bin 0 -> 39438 bytes .../fileformats/bmp/bmpsuite/4bpp-323x240.bmp | Bin 0 -> 39438 bytes .../fileformats/bmp/bmpsuite/4bpp-324x240.bmp | Bin 0 -> 39438 bytes .../fileformats/bmp/bmpsuite/4bpp-325x240.bmp | Bin 0 -> 39438 bytes .../fileformats/bmp/bmpsuite/4bpp-326x240.bmp | Bin 0 -> 39438 bytes .../fileformats/bmp/bmpsuite/4bpp-327x240.bmp | Bin 0 -> 39438 bytes .../bmp/bmpsuite/4bpp-topdown-320x240.bmp | Bin 0 -> 38478 bytes tests/fileformats/bmp/bmpsuite/8bpp-1x1.bmp | Bin 0 -> 82 bytes .../fileformats/bmp/bmpsuite/8bpp-1x64000.bmp | Bin 0 -> 256078 bytes .../fileformats/bmp/bmpsuite/8bpp-320x240.bmp | Bin 0 -> 76878 bytes .../fileformats/bmp/bmpsuite/8bpp-321x240.bmp | Bin 0 -> 77838 bytes .../fileformats/bmp/bmpsuite/8bpp-322x240.bmp | Bin 0 -> 77838 bytes .../fileformats/bmp/bmpsuite/8bpp-323x240.bmp | Bin 0 -> 77838 bytes .../bmp/bmpsuite/8bpp-colorsimportant-two.bmp | Bin 0 -> 76878 bytes .../bmp/bmpsuite/8bpp-colorsused-zero.bmp | Bin 0 -> 77878 bytes .../bmp/bmpsuite/8bpp-topdown-320x240.bmp | Bin 0 -> 76878 bytes .../bmp/bmpsuite/misleadingextension.jpg | Bin 0 -> 230454 bytes 54 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/fileformats/bmp/bmpsuite/ spaces in filename.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-1x1.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-320x240-color.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-320x240-overlappingcolor.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-320x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-321x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-322x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-323x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-324x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-325x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-326x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-327x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-328x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-329x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-330x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-331x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-332x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-333x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-334x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-335x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/1bpp-topdown-320x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/24bpp-1x1.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/24bpp-320x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/24bpp-321x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/24bpp-322x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/24bpp-323x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/24bpp-imagesize-zero.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/24bpp-topdown-320x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/32bpp-101110-320x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/32bpp-1x1.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/32bpp-320x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/32bpp-888-optimalpalette-320x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/32bpp-optimalpalette-320x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/32bpp-topdown-320x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/4bpp-1x1.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/4bpp-320x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/4bpp-321x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/4bpp-322x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/4bpp-323x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/4bpp-324x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/4bpp-325x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/4bpp-326x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/4bpp-327x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/4bpp-topdown-320x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/8bpp-1x1.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/8bpp-1x64000.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/8bpp-320x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/8bpp-321x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/8bpp-322x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/8bpp-323x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/8bpp-colorsimportant-two.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/8bpp-colorsused-zero.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/8bpp-topdown-320x240.bmp create mode 100644 tests/fileformats/bmp/bmpsuite/misleadingextension.jpg diff --git a/tests/fileformats/bmp/bmpsuite/ spaces in filename.bmp b/tests/fileformats/bmp/bmpsuite/ spaces in filename.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9d4a9837bc30b532fa674614df5cafe3edf82f07 GIT binary patch literal 230454 zcmeI!QF7Y^0EA(8xCBSw1bt?B=T;n+M{ZD*dLj(Yw3&RF)?0o})2fnpBk#W(=eOTK z{_)f0>G*hj{c?Q$`r&f<>-hJ><>%w?<2dgBdA#K5tD^);;D<=yQ%4Duz+eK`A3w)~ zUoQQ5Qvz=i74|iO!lMM9X8Uxs-?#txA^>mywm-&CfWo5$+ON-m0JL8R@IQ8FzYf3s zLINOla{CVL*BMqpNC2cxZr`E(I>Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn z@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK z_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~X zliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz z467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w? zonaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d z`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx z0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+P zBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRL zf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke z?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djo zVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=< zGpvG;07#wOzC-(UhE)&}0I8GPcWA%PunIx~Aa!#44(-<&RzXMrq)u+%q5V3;DhLUH z)XD8Tv|ndf1t9^DI=Ov^_UjC*AS3`%C%5m=ew|?zgakn9g4tv{PK&6M&0< z|7nN9qXfRV-%rnX&(G!K%JsOta-QFxJiq+u-|O8MuiOjI7r%6i-tqen=D{9kYtDs7 z3Ea%;ekteZ?$>nQI#2H9$CdlLueows-M{$rEqcf8_n`*;BVnJ<@W#p literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/1bpp-1x1.bmp b/tests/fileformats/bmp/bmpsuite/1bpp-1x1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..508b73ce867d480be69cec38dff535686c4532a4 GIT binary patch literal 66 pcmZ?rbz*=3J0PV2#EftZVlgnV0PzcE2xbC{K#2eU|1;DB2>_Vv36TH* literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/1bpp-320x240-color.bmp b/tests/fileformats/bmp/bmpsuite/1bpp-320x240-color.bmp new file mode 100644 index 0000000000000000000000000000000000000000..282498dd369d9b37afbd9380e1b29f47a87cb905 GIT binary patch literal 9662 zcmeIuF-`(u07PLJ8Y}e(HYOgy!sx_C8{?5MYGLP%yn@%TB(Vo~z(**IY(Y7{fqCk> zi{I_T$N6M^u7~%F;pORMvKV$ceC0e1zyF$TURwWTcw4L{s}sK2zw_0ov-Iw*Zg&4B zpJ;pJZ4S}v(2%KYUC@xJY+cZhscc=)kg054(2%KYUC@xJY+cZhscc=)kg054(2%KY zUC@xJY+cZhscc=)kg054(2%KYUC@xJY+cZhscc=)kg054(2%KYUC@xJY+cZhscc=) zkg054(2%KYUC@xJY+cZhscc=)kg054(2%KYUC@xJY+cZhscc=)kg054(2%KYUC@xJ zY+cZhscc=)kg4n;TwdO0pJ%6=yZ(2-*Lxiu^twkKUyge2^T_9py6*1#T_;z|{r~Ug Sii2G@UyVAyA8hyGfArcwa1Esyeb&Cjmq}sRBIWy&yl+^$ z@w>izJDsi1<@kO!zC54JKF6JpUpWus?>`osm)1WS--aRIlh1OPbXMNITyKbx(utKt28c==#9`x^FO_{#M-{Qh%3zO??y__kWDw!Yh)i{bEuYw7LVTyOtH zKGEiqH#tPlp&?V*x}YIb*}9-1Q`x$pAye79pdnM)x}YIb*}9-1Q`x$pAye79pdnM) zx}YIb*}9-1Q`x$pAye79pdnM)x}YIb*}9-1Q`x$pAye79pdnM)x}YIb*}9-1Q`x$p zAye79pdnM)x}YIb*}9-1Q`x$pAye79pdnM)x}YIb*}9-1Q`x$pAye79pdnM)x}YIb z*}9-1Q`x$pAye6XxIDkkKTc1^yY9N*%bgDQdhS6-7n7d*H1WBU&fR{$>G*Q_|NlFl S*xR|qYSQ)l!L}d%cmDu1!n`N| literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/1bpp-321x240.bmp b/tests/fileformats/bmp/bmpsuite/1bpp-321x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..754c829779b7e9c65b11ab5e327a66945739b80e GIT binary patch literal 10622 zcmeI0Jr2S!3`Wy*VFGSYMz{e3LWKnu#Eqx~3~U^YYcL|QB7$Qxc&fs{_FN_XiCaZa zpPkg}-C-8gmeNn9t*Q_na<1ga*2?(3wifk?btxrx*MHfGb8aQpiBs!8*Z8+yex$-z zalpY;0S7pcA2eN(CvDY$100M19N?gfLjwmmxNQP@Fc@%vgA0p*9?%1Npr&9NfCC(S zHb4*P0X^uiBsC_*kl+9ZBLD|D=;F}80S<1PfF2A69N^%>f?C@b25~`L5EoWkIbG`8 uWL&0)^EM9t;=7N-dGQ>MKg^-nck{f)(c)dk;ZNG>Qki8xKZU;Q?E3*?8tlXX literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/1bpp-322x240.bmp b/tests/fileformats/bmp/bmpsuite/1bpp-322x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..caedf4be97ebe099a21869a8d95396025142f921 GIT binary patch literal 10622 zcmeI%F%E(-6oBCZi<5c-9Q6hcMhJ^8#v5s(4sITaBX|u*6IWw>BJl~$OqcVm~zOtvGbi;i~gU9PAB(d>|jl2bm-T^JY}QK^1Vo!TFCt+;e|W4IFS#0UU5hYe$a* z4(4A3`Jfm$;9!OY>&Z6;#jEORa1zM1ly~h&M8z7Iq%ZYuH7wH_rY*MvJf(Y2=%*KiQpx z<>k$r-K=(psqwaydLm_=8S{`flgn8t^Y=Uy>qkP>G>y9J?iS))NlCF`|KUjq)274RVd0S@30L&7)k0Y1P7zlqQ=kT)Y5=mYwo0|P$52lzm~Xph~WXMOYm zeLx@32lPRrpin4${S!qe(Mfa?om2{;>A?Sohz2@|PU^sb5AXp#kT=Pj5(S(uf)s!Q zIOwDRAK=43^Wk*KZ{tzgH$HFepcmi09nO>2aQtBn$-bNC)fS6a8V)`2p;8->u5K-p KdI?>9Ctq*eL6#o? literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/1bpp-325x240.bmp b/tests/fileformats/bmp/bmpsuite/1bpp-325x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..314eec28ec83180642fa833cf6eeceaa5573b310 GIT binary patch literal 10622 zcmeI2u?oU45Qfuq(8;>FI_euZh!jC|5#PvyI=K00zJ{aV(9L*FGMr1B4o-fN)YzP* z{CxKxSGwLG=f;nf9A`2&nK4iK&g9dKQuZHtnAV>O2j`sn)xI1^a3wQk)Dl$c%N1Y$ z(mQ5Ctk(k_0v70i4%#5#0UqGN*H0}2bu+4gKj05KG2j6n;DLIfI!=uPbu+4gPvVn0 zG2j6n;DNeH-IOfgd3CS?bU+7P6yO0K;DH`8GC(Avt#Yy4hm+PSZgfXP0I@Vk?!5ZOd9V^<~@E H%{!4FB~yR^ literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/1bpp-326x240.bmp b/tests/fileformats/bmp/bmpsuite/1bpp-326x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4a077fe64d0249bc0d7581f6e992d8cd5383b9dc GIT binary patch literal 10622 zcmeI2F$%&!5JfjhBM8PLSn3TdM1qCdh&M8z7Iq%ZYgh`Ff^o8&;@c#f!pgU@>za%q zeBS(FLRP!O%=xjjb!u~+IQOvc#6I;X?EF0oGxbNpQdO1wYTsrST-uBoFAFO4a{1T4 z^o$!4>-9i~fCW0BgBk=pzymz^`l&KdHybtZ2mC=310LW39;g@6aVief%|;D;5}(w> zfCqSh2kItu)3Si))xiqT0Ufj`zymzM13hHJ06jwx0v*snZ4n;e0Uqe3>7^|T{<&v3 zU9#I`9IT*Ahx0Za{3Ldtj^@$#aO`mp(XpH7HO&|AI33hDyEN+&TS_vvZR>Xz^|EdI H`klxR-h*`U literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/1bpp-327x240.bmp b/tests/fileformats/bmp/bmpsuite/1bpp-327x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..18eed54db5ae91734e0067d6ce4cf579b602b83d GIT binary patch literal 10622 zcmeI2I|{-;5Qg(Wv{H{?sW-3?2{y42Z)89%?7UKL;594-YmGBI2F50j!tUF!k7Oqy zeEc)X4!hYM7Evf`Y3EY&IEo(9$8u=NWd5F7O~Msxs;Y8l&BIuX3#nboON=uAxZ%%T zrJovL8*sqEQ~?J#5FbLkEa3nL_vJ(n1_KUoaBfkd2lRj*^k;!}mQsL&QGf#+$is*R z$SIg3zyS_*NYoxZpa=92mJTHx;NTXK=)qvX0S?YB$hCc8;1~D>exW~2vx`r(@ZOudo~9UAl2cM6Mui=2{PR|A zyBxL=2OLxtaDW5zL!2*bIKaWIoajMezyS`%Ej)Ta59lFm7C2`G3UE*gaDW4G7|{SR z1$6{Cz@eQILyaEL1A2%@hZ+uWFo#I=pfKP72jdpR+P*OG3;Y7V2%9Eij)4LklmZ;! zK+I7z5MwKsTmD$gRS|vj3%&y$3G<7ZeBMxUcS>fH2xFnE@nM!E4x~^ MwZ+g5+u9b}5A3U*UH||9 literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/1bpp-330x240.bmp b/tests/fileformats/bmp/bmpsuite/1bpp-330x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cabb99f686ffcf5eba2221324f59f2256b04f822 GIT binary patch literal 10622 zcmeI0I|{-;5J1>X!!2w5Amf_860{*$mg zUNXD8-0r6?#6q_dT{k`F?z->k;-l32x7^k&T(OOaL}wj`g-E3jBt(3T5BT5<2lc{JfP+zh103j2T4jI(9O6C#KHvjBFm`GjsF{ZeDBxg5 zzyS`;zrpYE0Uz)|G?-)Z6yRVK-~b24(pDMZ0Ef7bfDib94~(4}2WsY+0tz^o5pZZZ z9MAc6JhJnyx_Me>{lDbyvcW954Tmq_2LQE>N}R?l^V(HZ$hw%FJy(O85Mc>u$pxJ%~tj)p1&g99@N^s71>7b@^8< z-?TO=asv!Fs1tC2L;H0w1|RSNAH)Uyrl$Z0r2q#wFs{~~0S<78#|Zd<5BR{`sd1oU zjVYjjgBk$`I5gh|U*ZEk;DfkejmcAhgHnJ49GFXM&j1HF#A5_}zz2L_?$kI?vBnfo zz(I}h9M0GLJ{jwESATKY*uh_N_jWi>Zo{cZ8*u*gNsPM3PmzVl E2ek;Nga7~l literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/1bpp-332x240.bmp b/tests/fileformats/bmp/bmpsuite/1bpp-332x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..de3c493dc617ce36964287d2ebf1814e774f6806 GIT binary patch literal 10622 zcmeI2y$*sf7)482oWw_P)XCMs7~-OX#y65g9o&30U&9R(cRyRcG*kyEgWD)FFa8?c)z%wWbIKUyy37?|} z^zf~R(SqKT;GhKH00*BN@E4jP;Q$9E00%f2)>hsk zz(XnsIKUyE7tsTHKo8zSv8I5R#!LIT01v4%A{^kL1mFM%ymX@hJcE*e100%n!q?~l zJ$&ooaLO-}k+!ydPaZe6|CiXU9n6!TVc+2yl4IBRvmGv;X&hpPZOl5vRKj>52R9$h*KiaZ72~C6;dE%@;P$07O_OUW zAAfWGOXjQX*i~gF^+@)0=G;||nQXBXGJeT*_f?NpAp~>Q(#%6B<$|Pg523KP%Ra7p z*df;?w&DQ?l?5E&U?&LlfF968OrYdV{fvME9FzbY;1F{I{z5Y(9N?e?-~b25zm>NL z@Q?}u4sfvZB6>g%=plM2{wd(4@zQZFz(eYc2nRSQ0XV<`FI{T@&!8mW0EhaWh)48* z9=`RkKj!D*KzrN1Cl5>C`Ah7^_a@2Du>0W|l4BRQlkZQTX&fxWHfBG>me$=hwPo$1 Ly=`M#)a9@^o=a2gPV`$Yd8w7YP{*SaB*nU!R@59N%K>} z;p#vVa2|Y=A%y=m9;%<&$+&KO*1&2PFUpIK;I9f1xWR9N?e?-~b25-pW@5 zct`~S2RPWch#t@bdWas1Jq5fpUOL7CJfucMIKV*(zyS_;=|%&11|%+UjS z_|?PloL{FCt?l}rJZ=5(FMUftS|rcm&|?nCeK(JbA1~i&94x~wWeD^ln<$ZFt7A@%S*; z<2}B{TQqm>_WMmImz!bVspGxeJsq8{4mkIqFk~wO~STS9wA!EgKp@xhV(}fx`R!kRa$XGF5 zs3Bv;bfJcf71M>iW!=wOc7IqJpZs_K0lKKZMF0Q* literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/24bpp-1x1.bmp b/tests/fileformats/bmp/bmpsuite/24bpp-1x1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..fa6c104e5c3fac6d997644d7aa8271a2dfd3c59f GIT binary patch literal 58 lcmZ?rwPJt(Ga#h_#Eft(0hV9^k}sGc7%TuJ{xdL~0RU%h1n2+& literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/24bpp-320x240.bmp b/tests/fileformats/bmp/bmpsuite/24bpp-320x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9d4a9837bc30b532fa674614df5cafe3edf82f07 GIT binary patch literal 230454 zcmeI!QF7Y^0EA(8xCBSw1bt?B=T;n+M{ZD*dLj(Yw3&RF)?0o})2fnpBk#W(=eOTK z{_)f0>G*hj{c?Q$`r&f<>-hJ><>%w?<2dgBdA#K5tD^);;D<=yQ%4Duz+eK`A3w)~ zUoQQ5Qvz=i74|iO!lMM9X8Uxs-?#txA^>mywm-&CfWo5$+ON-m0JL8R@IQ8FzYf3s zLINOla{CVL*BMqpNC2cxZr`E(I>Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn z@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK z_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~X zliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz z467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w? zonaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d z`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx z0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+P zBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRL zf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke z?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djo zVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=< zGpvG;07#wOzC-(UhE)&}0I8GPcWA%PunIx~Aa!#44(-<&RzXMrq)u+%q5V3;DhLUH z)XD8Tv|ndf1t9^DI=Ov^_UjC*AS3`%C%5m=ew|?zgakn9g4tv{PK&6M&0< z|7nN9qXfRV-%rnX&(G!K%JsOta-QFxJiq+u-|O8MuiOjI7r%6i-tqen=D{9kYtDs7 z3Ea%;ekteZ?$>nQI#2H9$CdlLueows-M{$rEqcf8_n`*;BVnJ<@W#p literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/24bpp-321x240.bmp b/tests/fileformats/bmp/bmpsuite/24bpp-321x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9925d29945907d8e44489fdb9d3b4e884d328fa1 GIT binary patch literal 231414 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 literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/24bpp-323x240.bmp b/tests/fileformats/bmp/bmpsuite/24bpp-323x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c5138f434b1aafdfcf7591c6fa32a21339c71bbc GIT binary patch literal 233334 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 MffD%Y1dc8L1N$8J#Q*>R literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/24bpp-imagesize-zero.bmp b/tests/fileformats/bmp/bmpsuite/24bpp-imagesize-zero.bmp new file mode 100644 index 0000000000000000000000000000000000000000..578eaf5e385d3a8aa26941281083e29b305d627d GIT binary patch literal 230454 zcmeI!QF7Y^0EA(8xCBSw1bt?B=T;n+M{ZD*dLj(Yw3&RF)?0o})2fnpBk#W(=eOTK z{_)f0>G*hj{c?Q$`r&f<>-hJ><>%w?>+$FDlBchZ5-5QmB7sjGB~Su`30!~t91niE z^yf_pyh&8p*8~cW5_p>J)6st4{^N@Py#3q$7(W3Dj}mCVJ_7>KejUL7*rEM8{Pqh8 zfYizDJG5VCSOp;gkUF`2hxY3Xs~{u*QYW|X(0-j^6@&yp>g4tv+OIRLf{*}6o!q`d z`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx z0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+P zBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRL zf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke z?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djo zVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=< zGpvG;07#wOzC-(UhE)&}0I8GPcWA%PunIx~Aa!#44(-<&RzXMrq)u+%q5V3;DhLUH z)XD8Tv|ndf1t9^DI=Ov^_UjC*AS3`%C%5m=ew|?zgakn9g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_ zzs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{ z08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM( z1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@ z5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVm zeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz; zx9`w?onaM(1VHNK_8r=NY)myavgW zGpqZhoTIy6(|PMWxtAYT?(e?l%4v1~;?K9}9k<_y8u){;e5h<*@i6W86(N0P@>LKL z0I8GPcX*He9-ores-^#Odj@>-f{c&(Y>R?gRy+aclJ%J+ONl41t9^DI=Ov^oBf`@ YsdiEVC9smf!~T}sgOxxDye5Ia0UvJVZ~y=R literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/24bpp-topdown-320x240.bmp b/tests/fileformats/bmp/bmpsuite/24bpp-topdown-320x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b50375e6d06c0658ff85cd5a85265a0472e8d08f GIT binary patch literal 230454 zcmeI#QBorX0EA(-ynv4$!4vGW<-51?u-*cL$dDzd$d|>m`=^#-GMVlq{dXtq&%b>B z^}D-=+vn5IkEfrXKHc4Ye}8}f>F$Sz(|32L$A3Fr^6=BG1WMq4k-%x;-AbSY<`Q`P z_&L4oozJ1uOTDFkxAauQYU~cT?eDDDA=?ae$XusIMlbirt|Knuq^%Nc@aE<+*zGNS7 zPv4Kvzfb3%@BDG}bnWx`%QJ`MQvT?1TcsxexAj&&e*1+-2|VrV)up^Rd4BgeJ`Rr2 zogZ92`j#_?!{x>8_v0t_RiBaC`>lWYJ^zpO)up^Rd4BgeJ`Rr2ogZ92`j#_?!{x>8 z_p7eye?G)dG+`Al?~gk2V4aq0gyVmeTOghTbA!i;9a8q z>Rjg!nZlz4+OH3Z09kO+P zBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRL zf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke z?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djo zVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=< zGpvG;07#wOzC-(UhE)&}0I8GPcWA%PunIx~Aa!#44(-<&RzXMrq)u+%q5V3;DhLUH z)XD8Tv|ndf1t9^DI=Ov^_UjC*AS3`%C%5m=ew|?zgakn9g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_ zzs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{ z08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM( z1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@ z5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVm zeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz; zx9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6 zo!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wz zXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KQkPx!00msBfe)ejZ4l zXZ-H>cYpkRxqZF69=~3X-`-p`~ z_{Tr~6|7oxn!- z{No@0__wg7kjX#(@sEE6s}>#k$3On@Z(&OzlYji=d@{fP~<6pt5MMwVekAM7I*iy*kAOHBrzk*eZj{M^v z|M<7CrI5)#{_&501*;Yv`Nu#0@o!;EA(Man;~)PDRxLX6kAM8*-@=wcCja=yKmHZ0 zT6E+e|M`~_{Tr~6|7oxn!-{No@0__wg7kjX#( z@sEE6s}>#k$3On@Z(&OzlYji=d@{fP~<6pt5MMwVekAM7I*iy*kAOHBrzk*eZj{M^v|M<7CrI5)#{_&50 z1*;Yv`Nu#0@o!;EA(Man;~)PDRxLX6kAM8*-@=wcCja=yKmHZ0T6E+e|M`~_{Tr~6|7oxn!-{No@0__wg7kjX#(@sEE6s}>#k$3On@ zZ(&OzlYji=d@{fP~ z<6pt5MMwVekAM7I*iy*kAOHBrzk*eZj{M^v|M<7CrI5)#{_&501*;Yv`Nu#0@o!;E zA(Man;~)PDRxLX6kAM8*-@=wcCja=yKmHZ0T6E+e|M`~_{Tr~6|7ox-|G~UfB)z6?3u6gk$+A9j{8Q}=lg$iV{W_$ VzK{37>s+U4Wd_WE8Td9c@Gr*7BXj@& literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/32bpp-1x1.bmp b/tests/fileformats/bmp/bmpsuite/32bpp-1x1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d1b33e41e43507fbfd07dba75d1515cb26329f06 GIT binary patch literal 58 lcmZ?rwPJt(Ga#h_#EfvP0Aw*RumJH3W(Wog0Ez!V3;<`51S9|e literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/32bpp-320x240.bmp b/tests/fileformats/bmp/bmpsuite/32bpp-320x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9b635739b0158e2964c5dac2fd5c253ebd0ece4c GIT binary patch literal 307254 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 K&cOdW1AhaxpXONr literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/32bpp-888-optimalpalette-320x240.bmp b/tests/fileformats/bmp/bmpsuite/32bpp-888-optimalpalette-320x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..77deadbf33558202ae0e3a1d8f3cd516874b1ba8 GIT binary patch literal 307290 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 literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/32bpp-topdown-320x240.bmp b/tests/fileformats/bmp/bmpsuite/32bpp-topdown-320x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e8a388cbea472e9e1ea349ad1424b2e39b2afa3c GIT binary patch literal 307254 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 Oas^xgSKueU0{;U-Vd!=M literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/4bpp-1x1.bmp b/tests/fileformats/bmp/bmpsuite/4bpp-1x1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..edc72d8b6beccc47a65671d4e637f4062d2bbe3a GIT binary patch literal 82 wcmZ?r4Pt-*KOm(6#Efvv0+s-gFPI^i4J^XI@E-^v07yd+!~g&P861Fu05H@GcK`qY literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/4bpp-320x240.bmp b/tests/fileformats/bmp/bmpsuite/4bpp-320x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9f952944faedd386b33e2c084a579d078dd0dd55 GIT binary patch literal 38478 zcmeIyJ#Ld>6hz@K0@1th2B_%S077Yr9p-0{Ix$m z^y{$yc*pDWJ+J3`UOpex_wYUIr(Yg8CX-Brd;FqwqtRx_}F z5I0=0qo019Edi5Bh;B6l`v-Bu6+8Or$Jr7vnS|(8Gq8UUH(ar!pMIPz0h39HZZ!k@ z2XVs{JNoIz*%C0Bgy>c?uzwIYT(P5{ew-}Brd;FqwqtRx_}F5I0=0qo019Edi5Bh;B6l z`v-Bu6+8Or$Jr7vnS|(8Gq8UUH(ar!pMIPz0h39HZZ!k@2XVs{JNoIz*%C0Bgy>c? zuzwIYT(P5{ew-}Brd;FqwqtRx_}F5I0=0qo019Edi5Bh;B6l`v-Bu6+8Or$Jr7vnS|(8 zGq8UUH(ar!pMIPz0h39HZZ!k@2XVs{JNoIz*%C0Bgy>c?uzwIYT(P5{ew-}Brd;Fqwqt zRx_}F5I0=0qo019Edi5Bh;B6l`v-Bu6+8Or$Jr7vnS|(8Gq8UUH(ar!pMIPz0h39H zZZ!k@2XVs{JNoIz*%C0Bgy>c?uzwIYT(P5{ew-}uto>+AY{Jb#?y`N4Uho51g!g!tXf;P>ip&U;qx_o z&wu%?_w|Ce-s<)7hdwi#6Zz8RzqPEIVKK z^U#OWzSnlf4>zoj54Wtx8`f9PSWw@9@llQi;bx}hgbw+1wcSI4p}XujCr3Hv#;$ui+|1OR&>^3$wtGl0 zbeA3HpHA5)9pC$2mF5F*kPI+u>%W=7bLUbhX_>f}y+YI44Ir*3Qn39d2f7 zPUw(NSKB=#7`n@jb8?hpZtS|Z!_7?12_5q3YP*L7LwDJ6PL6V{ot+&!+|1OR&>^3$ zwtGl0beA3HY9OYO$J3Dr`nW;IULq1(?_mE)d zE<4W2QI5H>>)sAGGc_l4$fv9A9uf@QWyd)=%CUBKcIf}y+YI44Ir=Ekmj zJKW6FoX{bkuC{wfFm#t4=j15I+S%E$!_7?12_5q3YP*L7LwDJ6PL6WSja~P4xS6Rr zp+i1hZTFC1=q@|X$x)8Av$JD|o0*yuI^@&Ub`J@L?y}>Y9OalByYB69GgEUyhkUx) z?jga@U3Q$4qa15zXU7gVGc_l4$fv9A9uf@QWyiVyhvRZ(<<7b6U%Gp)9C5jvDZgLg zjK^g;9hdo>@6-BOvGvbg$~j^#*U{IPZ9aIIn$v_R2AC zIi8;J>izP^r@KC!)-cZtzTEW|?P(tOlE^Rt_Ahlyz7@S@;d literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/4bpp-322x240.bmp b/tests/fileformats/bmp/bmpsuite/4bpp-322x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..dc8479251b9ff9099b71bc2b6f033dfc133e43c8 GIT binary patch literal 39438 zcmeIyF>2gU6a`S3gp>glvw^rtpB)&t38#!V>#)TPGt2~u8kk{*naU&zm|=#Q zAW;J|%rH}#L;*9*FcTzdV1^lHDw8N+h8bppL=DU^!%Sro1QH88^rGnGjcFvAQpL81m`m|>FvCn`5(UgK!%UEL3@2t08%==e=|6exhT=xpLS-;cbe4rkec|I@mc#hBW zdaYki<33c6r_s{d*!s9$dfa>S_V-@i$7LMaX`S(Qh-2*II_f$89rXC3$NjnP?Otbn uI>j1ZG1Mck^?iKv43F}Q(c>Ss8yoQe literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/4bpp-323x240.bmp b/tests/fileformats/bmp/bmpsuite/4bpp-323x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..158fcab99ac8e1856888e30b92616a42f4005f5b GIT binary patch literal 39438 zcmeH{J#G|15JuYq5h72p7l4G^HvkiYw80(@PQ!5sxxvykqX}M>S(P^MF4Al7kH2yS ztvCMO=Wp+Sj`e(>pP%OY%flFd=J&&RyUu_87~}Vw?fq_@jB%bn+nL|nYn;#LvE2K4 z9OH1h^AmUcaK-ufbj^9b=6v;zne{aopXHb_KFKjx-(KT?!p_*4T#=IPjGZYp!2o=^ zLHB@Rgf2Sl$x)8Q*?FMD?M$f&2H?{Tx(5s+bkSi?j&jV(E?I}$nNkxBz^5B@4;V)1 zqQjmXuz%W7=9rolX$E@sXw|pu_DWVNZ^7%*rlVhufJ_6AZwo8*~pCM(Co$o*d;^oSg?c+|HDmU;sYdpnJeD zLKhwOi3ohdcJ0DQVZ_kdx9E;{VVQI5sgd7#7XOsNS5;L{Dd2Mi;0(P2-H za?HvuS%=%1QWFforyFz+7)I!#!=4=FSe%^)I^52bnqUAv-JpBGFhUm{_T(tXtn89? zxSc6A!2o=^LHB@Rgf2Sl$x)8Q*?FMD?M$f&2H?{Tx(5s+bkSi?j&jV(E?I}$nNkxB zz^5B@4;V)1qQjmXuz%W7=9rolX$E@s{UO8@0dHeK^7auSF zxIOE`Dat$_@cyjVYR}>Eo_an14_`jJYx4IE-1G7U=QQ7K&#!&Q`B3lrJdW{ChWGM^ GdB?vtW*_PR literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/4bpp-324x240.bmp b/tests/fileformats/bmp/bmpsuite/4bpp-324x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b5416d54ca50e413d46d5c43402d93f9889e8d3f GIT binary patch literal 39438 zcmeIyL2eUK5QO0ufmkBV!WUr0o*STSLGr?fgVS&vmfXO+8D}D;e^=4+Y9wk1F|Rrj zPv2DM>$i_T$M$@m-#^d4&rf6gnV(PN{g(gwF~;wAx4$2@WQ^KktcVA^&^bWag5_XR~~Rf1)Cz3x)G&R7t)jAd9OGEm z7-tZ*0^2(^OdnyZsB9j`IAV`$0HRi4d#8r!BWx9w&Epuyy2dzzs1?}WsbTsETSaB_ zIK~lsTmulb0^2(^OdnyZsB9j`IMy}B8APqX_D&7cN7yPVo5wMZ*y9?2s1?}WsbTsE zTSaB_IL5KAG0q@r1-5r;m_EW*QQ16>al{_i07R|8_D&7cN7yPVo5wMZb&YWbQ7f>$ zQ^WKTwu;K;af~DOxCS6<1-5r;m_EW*QQ16>aja{MGl*J&?VTE?kFZr#HjiT*vBxz4 zQ7f>$Q^WKTwu;K;ag1YKW1Kl)(>qE=vgr-tbxY!#Kw;}}QmaScG!3T*GxFnxrrqOy4$<5<@iXArdl+dDN(A7QJg zY#zrrVvlP8qE=vgr-tbxY!#Kw;~2-f#yEqh71-XXVfqMLMP>6i#u0m50}!EIQxa?QLXX{G% zA$1L#zufV>ESK{#zt7Lh`nCRZy*%!=2l($>fxU|wzTWXPue4rl{dW7x9TnQ0{Eg#$ z#~b2&?epuXj;}9z{v&t1^G;Q?z3bCuUFP|M_jkRm_6*NQ+Uxmd??3ym8ho~X)!>H| lmCavv=Kcj|io5Lr{`*#7@1ln59p_6u^fT`$4G%LI<1an7O4k4Y literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/4bpp-325x240.bmp b/tests/fileformats/bmp/bmpsuite/4bpp-325x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b768df906a09b57fa988eb2ee81c81941848bc8f GIT binary patch literal 39438 zcmeIyL2eUK5QO0ufmou=Qvizr#RN#2T?1CV;pS<^1BCnWWCfdj&ZEN zYH$WoD^QiQdHM)j>!pTqj3f5A1|Vt$s&Y0@A7N{~)G&^5tZR%jh+2WFoXyim*jg_& zjAI!pTqjALD6oI%tIROM`*KEl>|sbL)Bh&`?Wh+2WFoXyim z*jg_&jAI<@8siM2R-h_p^Yjt6)=LfJ7)R`J4M5ZiROM`*KEl>|sbL)BSl1Y55VZnT zIh&`Cu(e)l7{@qbk81#;R-h_p^Yjt6)=LfJ7{|KCID@DasLI(qeT1#`Qo}gL5qn$% z5VZnTIh&`Cu(e)l7{@r)HO3i4tw2@I=IJABt(O|cF^<^d8i1%3sLI(qeT1#`Qo}gL zv92-BAZi7wayCyNVQanAFphD=9@hXwtw2@I=IJABt(O|cF^+YOaRyNV;r%^H2_g7P?fWJ z`UqR=rG{~gV_jpMLDULVV;t)m;|!u! zpekqc^bxk!OAX@~N9=J8K-3CU=_72dmm0<~j@aWGfT$Iy%Go@9gst^b!#KvVt})IaY6YrtHcua6 zYrWJkj&Z~u*8oJVKvmA>=_72dmm0<~j&+T322m?em9u&J2wUr=hH;D|_P7QhY6Yrt zHcua6YrWJkj&ZDOj5CN@fvTL%(?{4^FExzg|K+%t2m5>tK-3CUtEN)<8Idg|9vY^*Rc899S`$L>&4a|m#^H>%H0lc z9OpaU5a(;3Uwd_Yd(rbRx#R8Yw5RP|A5QBs&lh}s*V}5(@VKYFo^SU3=lZJ#pRHdt o_(#@D4PSTW{R_?%ce@7o?^}VohRxSI&X>CH=W$5G-3%VbKe_r&&;S4c literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/4bpp-326x240.bmp b/tests/fileformats/bmp/bmpsuite/4bpp-326x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1dd42b7113d83714cd94c93e3252c6b7c9e6b7bc GIT binary patch literal 39438 zcmeIyO^TCY6hz^#Q5*^xWCM1te#LwC@=N$4PlRC&oL;EDZL_cr+P zq;7xy`u@juetlbCKd#R&Puuo;eSg~Cp65TmZ`-dom(O?S$+o?$f0x(#e)-s5US77{ z&%V6rK66$1O5&7W_Tma z6q@DUyR@~B)J;--uA`2;V`d7?a_?Q*+DGapsXo_HN8T|rg=V?;E^X~2b(2(|>!>5| zn3+Pe+T?}+ zc~50rqC?+-leU5q;8Vxa~*Z$9WzsCmV58g);>}< zN%gsoI`WR0DKyKycWG-MshgzwTt^*w$IKL(<=(rrwU5+IQhlzYj=W=L3e9rwUE115 z>L#f^*HK5_F*Ai`x%Vz@?IU%QRG;gpBk!1*LbKd^m$vqix=E_fb<~k}%uJzK?!8M} z`$*j+)#p0u$UA1H&@A`frLBFWZj$PA9d+a#GgD}md+*ZLK2kSH^|_8Z@{XA)G|Rnr zX=@*;o22?&M;&>`%oLjC-n+E5kJL?4eXgU9yklkx&2sNu+S*6zCaFHxQAge}Glgck z_bzSiBXyHhpX;b2@0giFv)p@^w)T;_Nvh9v)RA}0Orcrsy-QpBNZlmW=Q`@hJ7%WP zEcf1}t$n0!lIn9Eb>tm0Q)rfZ@6y&jQa4HUxsE#Wj+rSm%e{ALYagkbr21S(9eKyh z6q@DUyR@~B)J;--uA`2;V`d7?a_?Q*+DGapsXo_HN8T|rg=V?;E^X~2b(2(|>-b+e z?#heje9aV^<=(rrU41N%xVt_Rf0#WJe=9vjpI@Hwu-hFEyY+Q_Kb}5LKb{_*k9N)c z-)Ff$OWM9Z<9A_B4E+0N)GP^bZ+i|_eXTK0nm^^TV?Is_%#8^>O~=+p_$8b$Y)!PL}0RKc`dQr`K{g9G30< zpUrN6_h++vcg=bKc-48j=6v#w9riUCpXAsvKFYC`-(K@y!p_*4R*@0yjGY-R;edd` zq+#a+Kqcb{pt$J2P6s0Re?c_Yh*GkQ~?KD95Jk5p}qo87<*}fWoAE2(eN~ zj%#w1+#a+Kqc zb{pt$J2P6s0Re?c_Yh*GkQ~?KD95Jk5p}qo87<*}fWoAE2(eN~j%#w1+#a+Kqcb{pt$J2P6s0Re?c z_Yh*GkQ~?KD95Jk5p}qo87<*}fWoAE2(eN~j%#w1+#a+Kqcb{pt$J2P6s0Re?c_Yh*GkQ~?KD95Jk z5p}qo87<*}fWoAE2(eN~j%#w1+#a+Kqcb{pt$J2P6s0Re?c_Yh*GkQ~?KD95Jk5p}qo87<*}fWoAE z2(eN~j%#w1+# za+Kqcb{pt$J2P6s0Re?c_Yh*GkQ~?KD95Jk5p}qo87<*}fWoAE2(eN~j%#w1mwm$27zrNOA zclB;JJI8-<$6Z}%z1aG3dU;1S_j0OUAK|SW>lq&*)?=^Ny>dJ~<?e*Y#QN z_G_8z0snc{$7dN?@9~s}vBjbBL&2OET@mRObU7n+u z?eD{x{x!eL`HrI=W8C5V#)1 z`hR(UzO|2Q-`QVo-0N~}Mz?zNGrzh9GLpN}^>>-$U31Hi&CmS$PJNllJs)yO-IcDt z%ZTrqTYhYQ=ErX|bn?LmAMGLyAAIl;4V`@O!AHAD!v`OHL_;SZeDKjO((u6tAJNds z2OoU2i!^-j!ACT7^1%lm?IH~yeDDzsoqX`YN4rSF2OoSyLnj}6@X;>P@WBTk(a^~U zAAGcnG<@*EM>KTu!3Q7hA`KsW@DUB2eDJ|XyGX+aAACeZCm($9(Js>P!3Q7F(8&iM ze6))+eDJ|XG<5R82OsSs4Ig~)5e=Pu@WDsBNW%vod_+ShAAIo9F4FM92OrVU$p;^N zw2L%+@WDqkbn?LmAMGLyAAIl;4V`@O!AHAD!v`OHL_;SZeDKjO((u6tAJNds2OoU2 bi!^-j!ACT7^1%lm?IO*(9Cp3ddFSg7$DaIV literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/8bpp-1x1.bmp b/tests/fileformats/bmp/bmpsuite/8bpp-1x1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..27ec19a1da04c71a3638571a2f63835f881f3bc9 GIT binary patch literal 82 wcmZ?r4Pt-*KOm(6#Efvv0hV9^k}sGcm<=q#!0;akApl525X1lf{~17P0WiD^KL7v# literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/8bpp-1x64000.bmp b/tests/fileformats/bmp/bmpsuite/8bpp-1x64000.bmp new file mode 100644 index 0000000000000000000000000000000000000000..47ce803f4d6918c4a794725b4fe43ffc8870f186 GIT binary patch literal 256078 zcmeIw!3}^Q3Fl!;S#yr6b46yxR!#8-3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# MzyJdbF!0B~2k@o#F8}}l literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/8bpp-320x240.bmp b/tests/fileformats/bmp/bmpsuite/8bpp-320x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0b4d52cdbbe0ffec801a98467354ed0d9cfd1b90 GIT binary patch literal 76878 zcmeIzO>Wa*00!Z>Nf1Y2!66WPdjBJ^;Kd3b~{a-V*=OC0fA|{zC7ui zpLQ-!JJA4ePFx-y25nrTfh`p3UX)TrS(+ s+x?z=W_tmRIA`MvjS{>^v$1Gznyy*UB*$hL;SPjs-6!2kdN literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/8bpp-321x240.bmp b/tests/fileformats/bmp/bmpsuite/8bpp-321x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e3157dd25862439cfe44622a366970a0f9275f17 GIT binary patch literal 77838 zcmeIzO_I`J00!X%2FsP_aHm($y`I_Qxbz12C8Q9nnzor(toj=ne%^K#PX+k;?ZfAJ zTF&=z`#5f2#?xQpexBZs-_!Kt(>(n=PV4R6`pPt&$Is=A`^&%Sd_GTeXP>}8oll)T z0?XArpAOGD$LF1wXPr}qyQwqWP56>whVb#aA4mR$u0sh0S%!ckrwk<&WEldEoHCS9 zkYxxsa>`IbL6#xl$SFe!1zCoGBc}`{6l56!j+`=-P>^K^IC9ERLP3@x;K(UM2?be( zfFq|2B@|>C0*;(Alu(dm2sm=eP(neLA>ha`IbL6#xl$SFe!1zCoGBc}`{ z6l56!j+`=-P>^K^IC9ERLP3@x;K(UM2?be(fFq|2B@|>C0*;(Alu(dm2sm=eP(neL zA>ha`IbL6#xl$SFe!1zCoGBc}`{6l56!j+`=-P>^K^IC9ERLP3@x;K(UM z2?be(fFq|2B@|>C0*;(Alu(dm2sm=eP(neLA>ha`IbL6#xl$SFe!1zCoG zBc}`{6l56!j+`=-P>^K^IC9ERLP3@x;K(UM2?be(fFq|2B@|>C0*;(Alu(dm2sm=e zP(neLA>ha`IbL6#xl$SFe!1zCoGBc}`{6l56!j+`=-P>^K^IC9ERLP3@x z;K(UM2?be(fFq|2B@|>C0*;(Alu(dm2sm=eP(neLA>ha`IbL6#xl$SFe! z1zCoGBc}`{6l56!j+`=-P>^K^IC9ERLP3@x;K(UM2?be(fFq|2B@|>C0*;(Alu(dm z2sm=eP(neLA>ha`IbL6#xl$SFe!1zCoGBc}`{6l56!j+`=-P>^K^IC9ER zLP3@x;K(UM2?be(fFq|2B@|>C0*;(Alu(dm2sm=eP(neLA>haVpji=Lce|fyTFrJSm+wZmbGe3G69-em@9{1zO zzi@XQu5KIPjp6Ecd47F$dywI9&QM-#kiBkrc}rj4wwI@Wy*PIr{_8rtegED*zQSg> zT%NCAhgYauz3pT0`jyjlcxSkL@s6{8122B-Vw*F(GhDbHJ{e{>1oofp Y^Kf}z>% literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/8bpp-322x240.bmp b/tests/fileformats/bmp/bmpsuite/8bpp-322x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..dc8774a930b0a47f1bc4f6b9c66c274fbaec05c4 GIT binary patch literal 77838 zcmeIzO>z=p00!Z2LdJ6CIo#i0=+cbWk#&-L(y)wpm`Pt9%d;d4i=ku642L%@QxpPQh zxqhel=~3tOxbyt5GiP|%I>W<+&lzUOpRdPl>|f|Qv{Kw<$ToJ#&`NQaA=}s`Lo3By zhHPV(46PJ*8M2LCGPF|MWym&m$9W%kcji&fC>E&+G5~@%qB@e0g%Y-->_py_ezB<1WL~aU1&= zZm+}5?E-jXxVi1mudiMnWVkwKXsE_pU5D>ohqv$F+s9Yf47ZCD zufr?Ut={Eh@cNb0b@=K!T)%jivwZ`ve%s^a!Q~tJy6wef&hVAt%60e2FvIQR?C{z=p00!Z2LaYN^To*#G486L*Y@G#+Xh8f}q>~R|X7rG8L6^0oijUF=8R2XK6G4P z(&!;WO@(2GNTY`gH5G;#B8?t0)KnN|h%|c0P*Y);A=2m}LrsNYhDf7_3^f&o86u4y zGSpNUW{5O;$WT*Zm?6^WAwx}tVTMSfhYU3ph8ZG_9x~Ka7-onxddN^yVVEJ(=pjQ* zg<*zBqlXMN6^0oijUF=8R2XK6G4P(&!;WO@(2GNTY`gH5G;#B8?t0)KnN| zh%|c0P*Y);A=2m}LrsNYhDf7_3^f&o86u4yGSpNUW{5O;$WT*Zm?6^WAwx}tVTMSf zhYU3ph8ZG_9x~Ka7-onxddN^yVVEJ(=pjQ*g<*zBqlXMN6^0oijUF=8R2XK6G4P(&!;WO@(2GNTY`gH5G;#B8?t0)KnN|h%|c0P*Y);A=2m}LrsNYhDf7_3^f&o z86u4yGSpNUW{5O;$WT*Zm?6^WAwx}tVTMSfhYU3ph8ZG_9x~Ka7-onxddN^yVVEJ( z=pjQ*g<*zBqlXMN6^0oijUF=8R2XK6G4P(&!;WO@(2GNTY`gH5G;#B8?t0 z)KnN|h%|c0P*Y);A=2m}LrsNYhDf7_3^f&o86u4yGSpNUW{5O;$WT*Zm?6^WAwx}t zVTMSfhYU3ph8ZG_9x~Ka7-onxddN^yVVEJ(=pjQ*g<*zBqlXMN6^0oijUF=8R2XK6 zG4P(&!;WO@(2GNTY`gH5G;#B8?t0)KnN|h%|c0P*Y);A=2m}LrsNYhDf7_ z3^f&o86u4yGSpNUW{5O;$WT*Zm?6^WAwx}tVTMSfhYU3ph8ZG_9x~Ka7-onxddN^y zVVEJ(=pjQ*g<*zBqlXMN6^0oijUF=8R2XK6G4P(&!;WO@(2GNTY`gH5G;# zB8?t0)KnN|h%|c0P*Y);A=2m}LrsNYhDf7_3^f&o86u4yGSpNUW{5O;$WT*Zm?6^W zAwx}tVTMSfhYU3ph8ZG_9x~Ka7-onxddN^yVVEJ(=pjQ*g<*zBqlXMN6^0oijUF=8 zR2XK6G4P(&!;WO@(2GNTY`gH5G;#B8?t0)KnN|h%|c0P*Y);A=2m}LrsNY zhDf7_3^f&o86u4yGSpNUW{5O;$WT*Zm?6^WAwx}tVTMSfhYU3ph8ZG_9x~Ka7-onx zdRPsocb=zv&*^bT3mgwK{I7=R^=dqym*3mt<%RkA{N#GS7XRjZFTx zT!*XM74XJzb=#iruU;QyxH@O3FE>UJH!BE0CJI literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/8bpp-colorsimportant-two.bmp b/tests/fileformats/bmp/bmpsuite/8bpp-colorsimportant-two.bmp new file mode 100644 index 0000000000000000000000000000000000000000..dc8005f7f4e2e8b44da94a9d003193191727b590 GIT binary patch literal 76878 zcmeIzO>Wa*00!YWKZv8S;1GyCz5fwda)b1-G2Y^@^w1Q z=ViRUjMumE@z;2t4xh($obmn7(_wji8Xu42bshiKGv3$#hwJrvm^%9eE}b0$({wpL z>71T+&QCj+{B~LAw~OzbUw-_xy3fS?boZap;x<2;n3A8-;x<2;n3A8-;x<2;n3A8- z;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2; zn3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8- z;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2; zn3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8- z;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2; zn3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8- z;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2; zn3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8- z;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2; zn3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8- z;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2; zn3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8- z;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2; zn3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8- z;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2; zn3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8-;x<2;n3A8- z;x<2;n3A8-;x<2;n3A8-;x<2;m@@lK|9Ot`oSt@!z`kvMALX~+hL_9yzTJ}J^Gv*6 z@Av8LYkB(}pLYA5_L-QUo^e)|B z-}1Z;zMI+l@sHU3Hy-ruW?SyD`EpCk=eyrb+5Pv%FUA|zT_?XcjNVK4n{7Os%j3CR vZhvpLd+zbwJYUcFvfqEdKfkkm z4)gVL8itS4>zC>6kLh(BKFoO-K8?foeo_e%+4b^nNB@@Aq?h`&b^o!_$u6ai59#?HOlfSzhMbmL8JpWW7J)nBVENVJ$lI zZA%ZT<+D5VLp;AX{g&r-;=7rxZ-0xOzv)5W4%>3Z=G!eT@9%yyW#{jeFUA|zT_?X+ zjNVK4!!|ve%j3D+ZhvpLGxzvxp0C&RVc&nhKEJb;yYkELy=U`JKHDD1+jH5A6L61g HYY6-VU3uqO literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/8bpp-topdown-320x240.bmp b/tests/fileformats/bmp/bmpsuite/8bpp-topdown-320x240.bmp new file mode 100644 index 0000000000000000000000000000000000000000..27d40fda87103a1b29553999abc3793738dab67f GIT binary patch literal 76878 zcmeI!O>Wa*00v>ZNf1kp!Gc2|_VoTo;1*w-e!ees3>3e!C|?Zz4eN}uLan#P1A4xDeX5r`mz$lx z`+mdeLe=@Z_s`;;^OxT}un+e?_?@5BtKaEK9?$bQg_lFw^NZ*ALiXu5{r^P`7d`B^dc`O(9!{Hz%J{ODm;_S82kL_VOM@ujD3Feuq!_+#y&rK*p;6ZW1k;A?8?uIvCoelcI9Wq z*yl$NyYjPQ?DM0CUHMrt_W9AnuKcVR`~2u(SAJHEeSY+?D?cm7K0kWcm7f)3pC3K! z%Fl|i&yOB<^P`7d`B^dc`O(9!{Hz%J{ODm;_S82kL_VOM@ujD3Feuq!_+#y&rK*p;6ZW1k;A?8?uIvCoelcI9Wq*yl$NyYjPQ z?DM0CUHMrt_W9AnuKcVR`~2u(SAJHEeSY+?D?cm7K0kWcm7f)3pC3K!%Fl|i&yOB< z^P`7d`B^dc`O(9!{Hz%J{ODm;_S82kL_ zVOM@ujD3Feuq!_+#y&rK*p;6ZW1k;A?8?uIvCoelcI9Wq*yl$NyYjPQ?DM0CUHMrt z_W9AnuKcVR`~2u(SAJHEeSY+?D?cm7K0kWcm7f)3pC3K!%Fl|i&yOB<^P`7d`B^dc`O(9!{Hz%J{ODm66|7 literal 0 HcmV?d00001 diff --git a/tests/fileformats/bmp/bmpsuite/misleadingextension.jpg b/tests/fileformats/bmp/bmpsuite/misleadingextension.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9d4a9837bc30b532fa674614df5cafe3edf82f07 GIT binary patch literal 230454 zcmeI!QF7Y^0EA(8xCBSw1bt?B=T;n+M{ZD*dLj(Yw3&RF)?0o})2fnpBk#W(=eOTK z{_)f0>G*hj{c?Q$`r&f<>-hJ><>%w?<2dgBdA#K5tD^);;D<=yQ%4Duz+eK`A3w)~ zUoQQ5Qvz=i74|iO!lMM9X8Uxs-?#txA^>mywm-&CfWo5$+ON-m0JL8R@IQ8FzYf3s zLINOla{CVL*BMqpNC2cxZr`E(I>Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn z@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK z_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~X zliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz z467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w? zonaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d z`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx z0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+P zBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRL zf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke z?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djoVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=g4tv+OIRLf{*}6o!q`d`*ns@5E1~XliPP_zs|4Ram34qke?K`wzXIKRx0gyVmeTVkz467g{08%Hn@6djo zVHJb~KkO+PBmhz;x9`w?onaM(1VHNK_8r=< zGpvG;07#wOzC-(UhE)&}0I8GPcWA%PunIx~Aa!#44(-<&RzXMrq)u+%q5V3;DhLUH z)XD8Tv|ndf1t9^DI=Ov^_UjC*AS3`%C%5m=ew|?zgakn9g4tv{PK&6M&0< z|7nN9qXfRV-%rnX&(G!K%JsOta-QFxJiq+u-|O8MuiOjI7r%6i-tqen=D{9kYtDs7 z3Ea%;ekteZ?$>nQI#2H9$CdlLueows-M{$rEqcf8_n`*;BVnJ<@W#p literal 0 HcmV?d00001