<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://jogamp.org/bugzilla/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.2"
          urlbase="https://jogamp.org/bugzilla/"
          
          maintainer="sgothel@jausoft.com"
>

    <bug>
          <bug_id>982</bug_id>
          
          <creation_ts>2014-02-23 10:06:11 +0100</creation_ts>
          <short_desc>TextureIO fails to load some Targa image files</short_desc>
          <delta_ts>2014-08-04 19:55:25 +0200</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>3</classification_id>
          <classification>JogAmp</classification>
          <product>Jogl</product>
          <component>util</component>
          <version>2</version>
          <rep_platform>All</rep_platform>
          <op_sys>all</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>---</priority>
          <bug_severity>minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Julien Gouesse">gouessej</reporter>
          <assigned_to name="Sven Gothel">sgothel</assigned_to>
          <cc>gouessej</cc>
    
    <cc>michael.esemplare</cc>
          
          <cf_type>DEFECT</cf_type>
          <cf_scm_refs>9d7a7e55c95fcf29ce1ed0804fd7791c1c1147de</cf_scm_refs>
          <cf_workaround>---</cf_workaround>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>3780</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Gouesse">gouessej</who>
    <bug_when>2014-02-23 10:06:11 +0100</bug_when>
    <thetext>This Targa image file cannot be loaded by TextureIO:
https://github.com/Renanse/Ardor3D/blob/master/ardor3d-core/src/main/resources/com/ardor3d/renderer/state/notloaded.tga

I get the following stack trace when attempting to load it:
java.io.IOException: No suitable reader for given stream
        at com.jogamp.opengl.util.texture.TextureIO.newTextureDataImpl(TextureIO.java:888)
        at com.jogamp.opengl.util.texture.TextureIO.newTextureData(TextureIO.java:243)
        at com.ardor3d.image.util.jogl.JoglImageLoader.load(JoglImageLoader.java:105)
        at com.ardor3d.image.util.ImageLoaderUtil.loadImage(ImageLoaderUtil.java:77)
        at com.ardor3d.image.util.ImageLoaderUtil.loadImage(ImageLoaderUtil.java:54)
        at com.ardor3d.util.TextureManager.loadFromKey(TextureManager.java:207)
        at com.ardor3d.util.TextureManager.load(TextureManager.java:136)
        at com.ardor3d.util.TextureManager.load(TextureManager.java:110)
        at com.ardor3d.renderer.state.TextureState.loadDefaultTexture(TextureState.java:303)
        at com.ardor3d.renderer.state.TextureState.&lt;init&gt;(TextureState.java:91)
        at com.ardor3d.example.canvas.RotatingCubeGame.init(RotatingCubeGame.java:83)
        at com.ardor3d.example.canvas.JoglNewtAwtExample.main(JoglNewtAwtExample.java:130) 

You can reproduce this bug with the following example:
https://github.com/Renanse/Ardor3D/blob/master/ardor3d-examples/src/main/java/com/ardor3d/example/canvas/JoglNewtAwtExample.java

You can modify this existing JUnit test to give it a try:
https://github.com/sgothel/jogl/blob/master/src/test/com/jogamp/opengl/test/junit/jogl/util/texture/TestTGATextureFromFileNEWT.java</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3839</commentid>
    <comment_count>1</comment_count>
    <who name="Michael">michael.esemplare</who>
    <bug_when>2014-03-09 08:57:08 +0100</bug_when>
    <thetext>Looking at the TGAImage class and the tga file in question, it seems to be expected...

private void decodeImage(GLProfile glp, LEDataInputStream dIn) throws IOException {
        switch (header.imageType()) {
        case Header.UCOLORMAPPED:
            throw new IOException(&quot;TGADecoder Uncompressed Colormapped images not supported&quot;);

        case Header.UTRUECOLOR:    // pixelDepth 15, 16, 24 and 32
            switch (header.pixelDepth) {
            case 16:
                throw new IOException(&quot;TGADecoder Compressed 16-bit True Color images not supported&quot;);

            case 24:
            case 32:
                decodeRGBImageU24_32(glp, dIn);
                break;
            }
            break;

        case Header.UBLACKWHITE:
            throw new IOException(&quot;TGADecoder Uncompressed Grayscale images not supported&quot;);

        case Header.COLORMAPPED:
            throw new IOException(&quot;TGADecoder Compressed Colormapped images not supported&quot;);

        case Header.TRUECOLOR:
            throw new IOException(&quot;TGADecoder Compressed True Color images not supported&quot;);

        case Header.BLACKWHITE:
            throw new IOException(&quot;TGADecoder Compressed Grayscale images not supported&quot;);
        }
    }

The exception I am thrown is:

java.io.IOException: TGADecoder Compressed True Color images not supported
	at com.jogamp.opengl.util.texture.spi.TGAImage.decodeImage(TGAImage.java:276)
	at com.jogamp.opengl.util.texture.spi.TGAImage.read(TGAImage.java:373)
	at com.jogamp.opengl.util.texture.spi.TGAImage.read(TGAImage.java:364)
	at com.jogamp.opengl.test.junit.jogl.util.texture.TestBug982TGAImageCreateFromData.testImpl(TestBug982TGAImageCreateFromData.java:63)
	at com.jogamp.opengl.test.junit.jogl.util.texture.TestBug982TGAImageCreateFromData.test00_TGAImage_LoadFromFile(TestBug982TGAImageCreateFromData.java:69)
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3841</commentid>
    <comment_count>2</comment_count>
    <who name="Julien Gouesse">gouessej</who>
    <bug_when>2014-03-09 16:10:33 +0100</bug_when>
    <thetext>(In reply to comment #1)
&gt; Looking at the TGAImage class and the tga file in question, it seems to be
&gt; expected...
&gt; 
&gt; private void decodeImage(GLProfile glp, LEDataInputStream dIn) throws
&gt; IOException {
&gt;         switch (header.imageType()) {
&gt;         case Header.UCOLORMAPPED:
&gt;             throw new IOException(&quot;TGADecoder Uncompressed Colormapped
&gt; images not supported&quot;);
&gt; 
&gt;         case Header.UTRUECOLOR:    // pixelDepth 15, 16, 24 and 32
&gt;             switch (header.pixelDepth) {
&gt;             case 16:
&gt;                 throw new IOException(&quot;TGADecoder Compressed 16-bit True
&gt; Color images not supported&quot;);
&gt; 
&gt;             case 24:
&gt;             case 32:
&gt;                 decodeRGBImageU24_32(glp, dIn);
&gt;                 break;
&gt;             }
&gt;             break;
&gt; 
&gt;         case Header.UBLACKWHITE:
&gt;             throw new IOException(&quot;TGADecoder Uncompressed Grayscale images
&gt; not supported&quot;);
&gt; 
&gt;         case Header.COLORMAPPED:
&gt;             throw new IOException(&quot;TGADecoder Compressed Colormapped images
&gt; not supported&quot;);
&gt; 
&gt;         case Header.TRUECOLOR:
&gt;             throw new IOException(&quot;TGADecoder Compressed True Color images
&gt; not supported&quot;);
&gt; 
&gt;         case Header.BLACKWHITE:
&gt;             throw new IOException(&quot;TGADecoder Compressed Grayscale images
&gt; not supported&quot;);
&gt;         }
&gt;     }
&gt; 
&gt; The exception I am thrown is:
&gt; 
&gt; java.io.IOException: TGADecoder Compressed True Color images not supported
&gt; 	at
&gt; com.jogamp.opengl.util.texture.spi.TGAImage.decodeImage(TGAImage.java:276)
&gt; 	at com.jogamp.opengl.util.texture.spi.TGAImage.read(TGAImage.java:373)
&gt; 	at com.jogamp.opengl.util.texture.spi.TGAImage.read(TGAImage.java:364)
&gt; 	at
&gt; com.jogamp.opengl.test.junit.jogl.util.texture.
&gt; TestBug982TGAImageCreateFromData.testImpl(TestBug982TGAImageCreateFromData.
&gt; java:63)
&gt; 	at
&gt; com.jogamp.opengl.test.junit.jogl.util.texture.
&gt; TestBug982TGAImageCreateFromData.
&gt; test00_TGAImage_LoadFromFile(TestBug982TGAImageCreateFromData.java:69)
&gt; ...

Thank you for investigating. There is a lack to support for RLE compression in TGAImage, &quot;truecolor&quot; is already supported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3842</commentid>
    <comment_count>3</comment_count>
    <who name="Julien Gouesse">gouessej</who>
    <bug_when>2014-03-09 16:32:05 +0100</bug_when>
    <thetext>(In reply to comment #1)

&gt; 
&gt;         case Header.COLORMAPPED:
&gt;             throw new IOException(&quot;TGADecoder Compressed Colormapped images
&gt; not supported&quot;);
&gt; 
&gt;         case Header.TRUECOLOR:
&gt;             throw new IOException(&quot;TGADecoder Compressed True Color images
&gt; not supported&quot;);
&gt; 
&gt;         case Header.BLACKWHITE:
&gt;             throw new IOException(&quot;TGADecoder Compressed Grayscale images
&gt; not supported&quot;);
&gt;         }
&gt;     }
&gt; 
&gt; The exception I am thrown is:
&gt; 
&gt; java.io.IOException: TGADecoder Compressed True Color images not supported
&gt; 	at
&gt; com.jogamp.opengl.util.texture.spi.TGAImage.decodeImage(TGAImage.java:276)
&gt; 	at com.jogamp.opengl.util.texture.spi.TGAImage.read(TGAImage.java:373)
&gt; 	at com.jogamp.opengl.util.texture.spi.TGAImage.read(TGAImage.java:364)
&gt; 	at
&gt; com.jogamp.opengl.test.junit.jogl.util.texture.
&gt; TestBug982TGAImageCreateFromData.testImpl(TestBug982TGAImageCreateFromData.
&gt; java:63)
&gt; 	at
&gt; com.jogamp.opengl.test.junit.jogl.util.texture.
&gt; TestBug982TGAImageCreateFromData.
&gt; test00_TGAImage_LoadFromFile(TestBug982TGAImageCreateFromData.java:69)
&gt; ...
Which version of JOGL do you use? RLE support was added in 2013 in this class, only 16-bits compressed truecolor TGA files are still unsupported:
https://github.com/sgothel/jogl/blob/master/src/jogl/classes/com/jogamp/opengl/util/texture/spi/TGAImage.java#L279

The Gimp doesn&apos;t give me a lot of information about the image data :s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3843</commentid>
    <comment_count>4</comment_count>
    <who name="Julien Gouesse">gouessej</who>
    <bug_when>2014-03-09 16:48:11 +0100</bug_when>
    <thetext>&quot;For 16 bits each colour component is stored as 5 bits and the remaining bit is a binary alpha value.&quot;
http://www.paulbourke.net/dataformats/tga/

It matches with this format:
http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/javax/media/opengl/GL.html#GL_RGB5_A1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3845</commentid>
    <comment_count>5</comment_count>
      <attachid>606</attachid>
    <who name="Michael">michael.esemplare</who>
    <bug_when>2014-03-09 23:30:06 +0100</bug_when>
    <thetext>Created attachment 606
Test case for targa image

Thanks for pointing that out, I didn&apos;t realize I was using a much older version. 

The unit test passes against master and 2.1.4.

I have attached the test if you wish to run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4015</commentid>
    <comment_count>6</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2014-07-10 14:05:19 +0200</bug_when>
    <thetext>9d7a7e55c95fcf29ce1ed0804fd7791c1c1147de:
  Added RLE32 tga file to be tested w/ pre-existing unit test TestTGATextureFromFileNEWT.

As mentioned above - not a bug, all works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4025</commentid>
    <comment_count>7</comment_count>
    <who name="Julien Gouesse">gouessej</who>
    <bug_when>2014-07-12 23:58:06 +0200</bug_when>
    <thetext>Sorry but it doesn&apos;t work with the image I mentioned in my very first post:
https://github.com/Renanse/Ardor3D/blob/master/ardor3d-core/src/main/resources/com/ardor3d/renderer/state/notloaded.tga

JFPSM still complains:
 [java] juil. 12, 2014 10:52:22 PM com.ardor3d.util.resource.ResourceLocatorTool locateResource
        [java] Avertissement: Unable to locate: file:/home/gouessej/Documents/programmation/java/workspace/tuer/md2/soldier.md2
        [java] juil. 12, 2014 10:52:22 PM com.ardor3d.util.TextureManager load
        [java] Avertissement: Could not load image...  source was null. defaultTexture used.
        [java] libEGL warning: failed to create a pipe screen for i965
        [java] juil. 12, 2014 10:52:29 PM com.ardor3d.image.util.ImageLoaderUtil loadImage
        [java] Avertissement: Could not load Image.
        [java] java.io.IOException: No suitable reader for given stream
        [java] 	at com.jogamp.opengl.util.texture.TextureIO.newTextureDataImpl(TextureIO.java:851)
        [java] 	at com.jogamp.opengl.util.texture.TextureIO.newTextureData(TextureIO.java:245)
        [java] 	at com.ardor3d.image.util.jogl.JoglImageLoader.load(JoglImageLoader.java:105)
        [java] 	at com.ardor3d.image.util.ImageLoaderUtil.loadImage(ImageLoaderUtil.java:77)
        [java] 	at com.ardor3d.image.util.ImageLoaderUtil.loadImage(ImageLoaderUtil.java:54)
        [java] 	at com.ardor3d.util.TextureManager.loadFromKey(TextureManager.java:207)
        [java] 	at com.ardor3d.util.TextureManager.load(TextureManager.java:136)
        [java] 	at com.ardor3d.util.TextureManager.load(TextureManager.java:110)
        [java] 	at com.ardor3d.renderer.state.TextureState.loadDefaultTexture(TextureState.java:303)
        [java] 	at com.ardor3d.renderer.state.TextureState.getDefaultTexture(TextureState.java:292)
        [java] 	at com.ardor3d.util.TextureManager.load(TextureManager.java:131)
        [java] 	at com.ardor3d.util.TextureManager.load(TextureManager.java:93)
        [java] 	at com.ardor3d.extension.model.md2.Md2Importer.loadTexture(Md2Importer.java:356)
        [java] 	at com.ardor3d.extension.model.md2.Md2Importer.load(Md2Importer.java:337)
        [java] 	at jfpsm.ModelConverterViewer$ModelConversionSwingWorker.doInBackground(ModelConverterViewer.java:371)
        [java] 	at jfpsm.ModelConverterViewer$ModelConversionSwingWorker.doInBackground(ModelConverterViewer.java:318)
        [java] 	at javax.swing.SwingWorker$1.call(SwingWorker.java:296)
        [java] 	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        [java] 	at javax.swing.SwingWorker.run(SwingWorker.java:335)
        [java] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        [java] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        [java] 	at java.lang.Thread.run(Thread.java:744)
        [java] juil. 12, 2014 10:52:29 PM com.ardor3d.util.TextureManager loadFromKey
        [java] Avertissement: (image null) Could not load: URLResourceSource [url=jar:file:/home/gouessej/Documents/programmation/java/workspace/tuer/lib/ardor3d/ardor3d-core-1.0-SNAPSHOT.jar!/com/ardor3d/renderer/state/notloaded.tga, type=.tga]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4027</commentid>
    <comment_count>8</comment_count>
    <who name="Julien Gouesse">gouessej</who>
    <bug_when>2014-07-14 15:51:20 +0200</bug_when>
    <thetext>I&apos;ve just added the problematic image into the unit test:
https://github.com/sgothel/jogl/pull/78

It seems to work but I still get an exception. It probably exhibits another bug elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4060</commentid>
    <comment_count>9</comment_count>
    <who name="Julien Gouesse">gouessej</who>
    <bug_when>2014-07-31 21:27:48 +0200</bug_when>
    <thetext>In JoglImageLoader, I do this:
final TextureData textureData = TextureIO.newTextureData(_capsUtil.getProfile(), is, true, null);

It has no chance to work with TGA because of this test in TGATextureProvider:
if (TGA.equals(fileSuffix)) {

I don&apos;t know yet how I&apos;ll work around this limitation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4061</commentid>
    <comment_count>10</comment_count>
    <who name="Julien Gouesse">gouessej</who>
    <bug_when>2014-07-31 22:51:21 +0200</bug_when>
    <thetext>Feel free to close this bug as invalid. The image I provided in in true color 32 bits, the problem comes from Ardor3D except if we consider that JOGL should be able to guess which image type contains the passed input stream (with a file suffix set to null). I&apos;ll implement this mechanism in Ardor3D, maybe we should move it into JOGL itself, it should be the subject of a distinct bug report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4062</commentid>
    <comment_count>11</comment_count>
    <who name="Julien Gouesse">gouessej</who>
    <bug_when>2014-08-02 23:57:18 +0200</bug_when>
    <thetext>The real bug has been fixed in Ardor3D:
https://github.com/gouessej/Ardor3D/blob/master/ardor3d-jogl/src/main/java/com/ardor3d/image/util/jogl/JoglImageLoader.java#L148

Sven, please tell me whether this kind of thing should be moved into JOGL.

My bug report is invalid as JOGL&apos;s TGA loader was already able to load the default image used in Ardor3D since the very beginning. Ardor3D AWT image loader was the only loader able to &quot;guess&quot; the image format until I fixed that in com.ardor3d.image.util.jogl.JoglImageLoader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4069</commentid>
    <comment_count>12</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2014-08-04 19:52:45 +0200</bug_when>
    <thetext>(In reply to comment #11)
&gt; The real bug has been fixed in Ardor3D:
&gt; https://github.com/gouessej/Ardor3D/blob/master/ardor3d-jogl/src/main/java/
&gt; com/ardor3d/image/util/jogl/JoglImageLoader.java#L148
&gt; 
&gt; Sven, please tell me whether this kind of thing should be moved into JOGL.
&gt; 
&gt; My bug report is invalid as JOGL&apos;s TGA loader was already able to load the
&gt; default image used in Ardor3D since the very beginning. Ardor3D AWT image
&gt; loader was the only loader able to &quot;guess&quot; the image format until I fixed
&gt; that in com.ardor3d.image.util.jogl.JoglImageLoader.

That would be _excellent_, i.e. the image format auto-detection!

IMHO it would be nice to have a static method returning the type,
as well as an overloaded &apos;load&apos; texture method.

Nice!

I will cherry pick your lines and commit as you as author.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4071</commentid>
    <comment_count>13</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2014-08-04 19:55:25 +0200</bug_when>
    <thetext>(In reply to comment #12)
&gt; 
&gt; Nice!
&gt; 
&gt; I will cherry pick your lines and commit as you as author.

Bug 1042</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>606</attachid>
            <date>2014-03-09 23:30:06 +0100</date>
            <delta_ts>2014-03-09 23:30:06 +0100</delta_ts>
            <desc>Test case for targa image</desc>
            <filename>TestBug982TGAImageReadFromFile.java</filename>
            <type>text/x-java</type>
            <size>1763</size>
            <attacher name="Michael">michael.esemplare</attacher>
            
              <data encoding="base64">cGFja2FnZSBjb20uam9nYW1wLm9wZW5nbC50ZXN0Lmp1bml0LmpvZ2wudXRpbC50ZXh0dXJlOw0K
DQppbXBvcnQgamF2YS5pby5GaWxlOw0KaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOw0K
aW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQppbXBvcnQgamF2YS5uZXQuVVJJU3ludGF4RXhj
ZXB0aW9uOw0KaW1wb3J0IGphdmEubmV0LlVSTDsNCmltcG9ydCBqYXZhLm5ldC5VUkxDb25uZWN0
aW9uOw0KaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7DQoNCmltcG9ydCBqYXZheC5tZWRpYS5v
cGVuZ2wuR0w7DQppbXBvcnQgamF2YXgubWVkaWEub3BlbmdsLkdMUHJvZmlsZTsNCg0KaW1wb3J0
IG9yZy5qdW5pdC5BZnRlcjsNCmltcG9ydCBvcmcuanVuaXQuQXNzZXJ0Ow0KaW1wb3J0IG9yZy5q
dW5pdC5CZWZvcmU7DQppbXBvcnQgb3JnLmp1bml0LlRlc3Q7DQoNCmltcG9ydCBjb20uam9nYW1w
LmNvbW1vbi51dGlsLklPVXRpbDsNCmltcG9ydCBjb20uam9nYW1wLm9wZW5nbC51dGlsLnRleHR1
cmUuc3BpLkREU0ltYWdlOw0KaW1wb3J0IGNvbS5qb2dhbXAub3BlbmdsLnV0aWwudGV4dHVyZS5z
cGkuVEdBSW1hZ2U7DQppbXBvcnQgY29tLmpvZ2FtcC5vcGVuZ2wudXRpbC50ZXh0dXJlLnNwaS5E
RFNJbWFnZS5JbWFnZUluZm87DQoNCnB1YmxpYyBjbGFzcyBUZXN0QnVnOTgyVEdBSW1hZ2VSZWFk
RnJvbUZpbGUgew0KCQ0KCUZpbGUgdGVzdFRHQUltYWdlMDE7DQoJc3RhdGljIEdMUHJvZmlsZSBn
bHAgPSBHTFByb2ZpbGUuZ2V0RGVmYXVsdCgpOw0KCQ0KCUBCZWZvcmUNCiAgICBwdWJsaWMgdm9p
ZCBzZXR1cCgpIHRocm93cyBUaHJvd2FibGUgew0KCQl0ZXN0VEdBSW1hZ2UwMSA9IGluaXRGaWxl
KCJub3Rsb2FkZWQudGdhIik7DQogICAgfQ0KCQ0KICAgIEBBZnRlcg0KICAgIHB1YmxpYyB2b2lk
IHRlYXJkb3duKCkgew0KICAgIAl0ZXN0VEdBSW1hZ2UwMSA9IG51bGw7DQogICAgfQ0KICAgIA0K
ICAgIHByaXZhdGUgRmlsZSBpbml0RmlsZShTdHJpbmcgZmlsZW5hbWUpIHRocm93cyBVUklTeW50
YXhFeGNlcHRpb24gew0KICAgIAlVUkxDb25uZWN0aW9uIGNvbm5lY3Rpb24gPSBJT1V0aWwuZ2V0
UmVzb3VyY2UoZ2V0Q2xhc3MoKSwgZmlsZW5hbWUpOw0KICAgIAlBc3NlcnQuYXNzZXJ0Tm90TnVs
bChjb25uZWN0aW9uKTsNCiAgICAJVVJMIHVybCA9IGNvbm5lY3Rpb24uZ2V0VVJMKCk7DQogICAg
CUZpbGUgZmlsZSA9IG5ldyBGaWxlKHVybC50b1VSSSgpKTsNCiAgICAJQXNzZXJ0LmFzc2VydFRy
dWUoZmlsZS5leGlzdHMoKSk7DQogICAgCXJldHVybiBmaWxlOw0KICAgIH0NCiAgICANCiAgICBw
cml2YXRlIHZvaWQgdGVzdEltcGwoRmlsZSBmaWxlKSB0aHJvd3MgSU9FeGNlcHRpb24gew0KICAg
IAlUR0FJbWFnZSB0Z2FJbWFnZSA9IFRHQUltYWdlLnJlYWQoZ2xwLCBuZXcgRmlsZUlucHV0U3Ry
ZWFtKHRlc3RUR0FJbWFnZTAxKSk7DQogICAgCUFzc2VydC5hc3NlcnROb3ROdWxsKHRnYUltYWdl
KTsNCiAgICB9DQogICAgDQogICAgDQogICAgQFRlc3QNCiAgICBwdWJsaWMgdm9pZCB0ZXN0MDBf
VEdBSW1hZ2VfUmVhZEZyb21GaWxlICgpIHRocm93cyBJT0V4Y2VwdGlvbiB7DQogICAgCXRlc3RJ
bXBsKHRlc3RUR0FJbWFnZTAxKTsNCiAgICB9DQogICAgDQoJcHVibGljIHN0YXRpYyB2b2lkIG1h
aW4oU3RyaW5nW10gYXJncykgew0KCQlvcmcuanVuaXQucnVubmVyLkpVbml0Q29yZS5tYWluKFRl
c3RCdWc5ODJUR0FJbWFnZVJlYWRGcm9tRmlsZS5jbGFzcy5nZXROYW1lKCkpOw0KCX0NCn0=
</data>

          </attachment>
      

    </bug>

</bugzilla>