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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>100179</bug_id>
          
          <creation_ts>2012-10-23 18:44:56 -0700</creation_ts>
          <short_desc>Honor image orientation in GraphicsContextSkia</short_desc>
          <delta_ts>2012-10-25 11:56:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>100191</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nico Weber">thakis</reporter>
          <assigned_to name="Nico Weber">thakis</assigned_to>
          <cc>eric</cc>
    
    <cc>noel.gordon</cc>
    
    <cc>senorblanco</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>749215</commentid>
    <comment_count>0</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-10-23 18:44:56 -0700</bug_when>
    <thetext>Honor image orientation in GraphicsContextSkia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749216</commentid>
    <comment_count>1</comment_count>
      <attachid>170287</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-10-23 18:48:15 -0700</bug_when>
    <thetext>Created attachment 170287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749219</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 18:56:42 -0700</bug_when>
    <thetext>Attachment 170287 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/graphics/skia/ImageSkia.cpp:592:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749230</commentid>
    <comment_count>3</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-10-23 19:09:26 -0700</bug_when>
    <thetext>+timothy_horton for the CG change (see changelog)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749248</commentid>
    <comment_count>4</comment_count>
      <attachid>170295</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-10-23 19:35:26 -0700</bug_when>
    <thetext>Created attachment 170295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749252</commentid>
    <comment_count>5</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-10-23 19:48:47 -0700</bug_when>
    <thetext>+senorblanco for skia review

+eseidel, +noel.gordon fyi</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749875</commentid>
    <comment_count>6</comment_count>
      <attachid>170295</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-10-24 11:51:02 -0700</bug_when>
    <thetext>Comment on attachment 170295
Patch

I don&apos;t grok all of the special cases, but the skia stuff looks ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749878</commentid>
    <comment_count>7</comment_count>
      <attachid>170295</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-10-24 11:52:29 -0700</bug_when>
    <thetext>Comment on attachment 170295
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749915</commentid>
    <comment_count>8</comment_count>
      <attachid>170295</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 12:30:57 -0700</bug_when>
    <thetext>Comment on attachment 170295
Patch

Clearing flags on attachment: 170295

Committed r132384: &lt;http://trac.webkit.org/changeset/132384&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749916</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 12:31:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750252</commentid>
    <comment_count>10</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-10-24 17:44:22 -0700</bug_when>
    <thetext>cc&apos;d people: It looks like this isn&apos;t quite correct for inline &lt;img&gt; tags. It works for image documents (which I had checked in all orientations in Safari manually ), and tests passed with the apple port -- I forgot they don&apos;t run pixel tests by default. I&apos;m looking at the regression now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750315</commentid>
    <comment_count>11</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-10-24 19:42:38 -0700</bug_when>
    <thetext>Fix in bug 100319</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750373</commentid>
    <comment_count>12</comment_count>
      <attachid>170295</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-24 22:37:47 -0700</bug_when>
    <thetext>Comment on attachment 170295
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=170295&amp;action=review

&gt; Source/WebCore/platform/graphics/ImageOrientation.h:45
&gt; +    OriginRightTop = 8, // 270 degree CW rotation

The spec says 8 is Left/Bottom.  Why the change?

8 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750377</commentid>
    <comment_count>13</comment_count>
      <attachid>170295</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-10-24 22:42:28 -0700</bug_when>
    <thetext>Comment on attachment 170295
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=170295&amp;action=review

&gt;&gt; Source/WebCore/platform/graphics/ImageOrientation.h:45
&gt;&gt; +    OriginRightTop = 8, // 270 degree CW rotation
&gt; 
&gt; The spec says 8 is Left/Bottom.  Why the change?
&gt; 
&gt; 8 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.

Right, &quot;The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.&quot; describes a 90 degree rotation to the left, i.e. a 270 degree clockwise rotation. (The 0th row is the topmost row.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750386</commentid>
    <comment_count>14</comment_count>
      <attachid>170295</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-24 22:52:57 -0700</bug_when>
    <thetext>Comment on attachment 170295
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=170295&amp;action=review

&gt;&gt;&gt; Source/WebCore/platform/graphics/ImageOrientation.h:45
&gt;&gt;&gt; +    OriginRightTop = 8, // 270 degree CW rotation
&gt;&gt; 
&gt;&gt; The spec says 8 is Left/Bottom.  Why the change?
&gt;&gt; 
&gt;&gt; 8 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.
&gt; 
&gt; Right, &quot;The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.&quot; describes a 90 degree rotation to the left, i.e. a 270 degree clockwise rotation. (The 0th row is the topmost row.)

Sure, I don&apos;t disagree on your math.  It&apos;s the enum name change which concerns me?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750387</commentid>
    <comment_count>15</comment_count>
      <attachid>170295</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-24 22:53:52 -0700</bug_when>
    <thetext>Comment on attachment 170295
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=170295&amp;action=review

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/ImageOrientation.h:45
&gt;&gt;&gt;&gt; +    OriginRightTop = 8, // 270 degree CW rotation
&gt;&gt;&gt; 
&gt;&gt;&gt; The spec says 8 is Left/Bottom.  Why the change?
&gt;&gt;&gt; 
&gt;&gt;&gt; 8 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.
&gt;&gt; 
&gt;&gt; Right, &quot;The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.&quot; describes a 90 degree rotation to the left, i.e. a 270 degree clockwise rotation. (The 0th row is the topmost row.)
&gt; 
&gt; Sure, I don&apos;t disagree on your math.  It&apos;s the enum name change which concerns me?

Rather, I agree that -90 = 270.  But Origin Left Bottom != Origin Right Top, and the spec seems to say 8 = Origin Left Bottom, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750390</commentid>
    <comment_count>16</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-10-24 23:00:22 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 170295 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170295&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/ImageOrientation.h:45
&gt; &gt;&gt;&gt;&gt; +    OriginRightTop = 8, // 270 degree CW rotation
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; The spec says 8 is Left/Bottom.  Why the change?
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; 8 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.
&gt; &gt;&gt; 
&gt; &gt;&gt; Right, &quot;The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.&quot; describes a 90 degree rotation to the left, i.e. a 270 degree clockwise rotation. (The 0th row is the topmost row.)
&gt; &gt; 
&gt; &gt; Sure, I don&apos;t disagree on your math.  It&apos;s the enum name change which concerns me?
&gt; 
&gt; Rather, I agree that -90 = 270.  But Origin Left Bottom != Origin Right Top, and the spec seems to say 8 = Origin Left Bottom, no?

If you rotate an image 90 deg to the left to undistort it, then its origin was in the right top, which is the name after my cl. I think the old name didn&apos;t match the spec. (Also see the other two documents linked from the cl description)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750391</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-24 23:03:14 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; &gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/ImageOrientation.h:45
&gt; &gt; &gt;&gt;&gt;&gt; +    OriginRightTop = 8, // 270 degree CW rotation
&gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt;&gt;&gt; The spec says 8 is Left/Bottom.  Why the change?
&gt; &gt; &gt;&gt;&gt; 
&gt; &gt; &gt;&gt;&gt; 8 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; Right, &quot;The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.&quot; describes a 90 degree rotation to the left, i.e. a 270 degree clockwise rotation. (The 0th row is the topmost row.)
&gt; &gt; &gt; 
&gt; &gt; &gt; Sure, I don&apos;t disagree on your math.  It&apos;s the enum name change which concerns me?
&gt; &gt; 
&gt; &gt; Rather, I agree that -90 = 270.  But Origin Left Bottom != Origin Right Top, and the spec seems to say 8 = Origin Left Bottom, no?
&gt; 
&gt; If you rotate an image 90 deg to the left to undistort it, then its origin was in the right top, which is the name after my cl. I think the old name didn&apos;t match the spec. (Also see the other two documents linked from the cl description)

I&apos;m trying to work backwards from a litteral reading of the spec:
8 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.

that means the origin is at the &quot;Visual left hand side&quot; and the &quot;visual bottom&quot;, which to me seems like Origin Left Bottom, or?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750724</commentid>
    <comment_count>18</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-10-25 05:54:43 -0700</bug_when>
    <thetext>(In reply to comment #17)

&gt; I&apos;m trying to work backwards from a litteral reading of the spec:
&gt; 8 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.

Yeap.

&gt; that means the origin is at the &quot;Visual left hand side&quot; and the &quot;visual bottom&quot;, which to me seems like Origin Left Bottom, or?

Left-Bottom is correct, but that describes the 0th row and 0th column positions only. They are not origins, nor should they be talked about as if they were.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750776</commentid>
    <comment_count>19</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-10-25 07:01:44 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; &gt; Sure, I don&apos;t disagree on your math.  It&apos;s the enum name change which concerns me?

The name change resulted in the selection of an incorrect transformFromDefault() (that code wasn&apos;t altered), and that broke fast/images/exif-orientation.html ...

&gt; &gt; 
&gt; &gt; Rather, I agree that -90 = 270.  But Origin Left Bottom != Origin Right Top, and the spec seems to say 8 = Origin Left Bottom, no?
&gt; 
&gt; If you rotate an image 90 deg to the left to undistort it, then its origin was in the right top, which is the name after my cl. 

Sure but exif orientation labels, Left-Bottom etc, are not origins - they only describe the 0th row and column position which is not the same thing.

For example, Left-Bottom is the 0th row-column position for orientation 8.  The enum label change made orientation 8 images use the transformFromDefault() for orientation 6.  No wonder fast/images/exif-orientation.html failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750795</commentid>
    <comment_count>20</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-10-25 07:24:04 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; I think the old name didn&apos;t match the specs. (Also see the other two documents linked from the cl description)

The old names matched the spec, I believe.  Reading from JEITA CP-3451, page 18, http://www.exif.org/Exif2-2.PDF, the orientation defines the position of the 0th row and 0th column.  Writing them down I get:

1 Top-Left
2 Top-Right
3 Bottom-Right
4 Bottom-Left
5 Left-Top
6 Right-Top
7 Right-Bottom
8 Left-Bottom

http://trac.webkit.org/browser/trunk/Source/WebCore/platform/graphics/ImageOrientation.h?rev=113486#L38 is the old code. It says:

OriginTopLeft = 1, // default
OriginTopRight = 2, // mirror along y-axes
OriginBottomRight = 3, // 180 degree rotation
OriginBottomLeft = 4, // mirror along the x-axes
OriginLeftTop = 5, // -90 degree rotation + mirror along x-axes
OriginRightTop = 6, // 90 degree rotation
OriginRightBottom = 7, // 90 degree rotation + mirror along x-axes
OriginLeftBottom = 8, // -90 degree rotation

These old names exactly match the EXIF 2.2 (current) spec an I think we should restore and use them to avoid further confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750816</commentid>
    <comment_count>21</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-10-25 07:45:00 -0700</bug_when>
    <thetext>I think both patches match the spec, they just look at it in a different way.

The original names asked &quot;if the image origin is transformed by the orientation, where does it end up?&quot;, while the current names ask &quot;which point on the image should be transformed to the origin when applying the orientation transform?&quot;

The transforms corresponding to this are inverse of each other. The first four transforms are reflections, and they are self-inverse, so it doesn&apos;t make a difference for them. The other four transforms are rotations, and for them the interpretation is important. I think it effectively amounts to deciding if the affinetransform returned by this class should be applied in a left-handed or a right-handed coordinate system. The original behavior needed a left-handed system, the current behavior a right-handed one. WebKit&apos;s &quot;default&quot; coordinate system is right-handed I think (origin in the upper left), so the current behavior seems a bit more natural to me. But if people prefer, I can revert the enum rename and tweak the skia drawing code to work with a lefthanded imageorientation transform instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750860</commentid>
    <comment_count>22</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-10-25 08:34:42 -0700</bug_when>
    <thetext>Given that these names were correct, how did the CG port work?  Reading from ...

http://trac.webkit.org/browser/trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp?rev=117083#L369

the code first pre-translates the destRect (accounting for inverted y co-ords on the mac) and sets the destRect origin to 0,0

  // Flip the coords.
  CGContextTranslateCTM(context, adjustedDestRect.x(), adjustedDestRect.maxY());
  CGContextScaleCTM(context, 1, -1);
  adjustedDestRect.setLocation(FloatPoint());

The code then applies transformFromDefault() for the orientation:

  if (orientation != DefaultImageOrientation) {
      CGContextConcatCTM(context, orientation.transformFromDefault(adjustedDestRect.size()));
      if (orientation.usesWidthAsHeight()) {
      // The destination rect will have it&apos;s width and height already reversed for the orientation of
      // the image, as it was needed for page layout, so we need to reverse it back here.
      adjustedDestRect = FloatRect(adjustedDestRect.x(), adjustedDestRect.y(), adjustedDestRect.height(), adjustedDestRect.width());
      }
  }

and finally paints the image.  Seems sensible to me, works fine for imageDocument, and passes fast/images/exif-orientation.html.  Skia could do something similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750877</commentid>
    <comment_count>23</comment_count>
      <attachid>170662</attachid>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-10-25 08:48:26 -0700</bug_when>
    <thetext>Created attachment 170662
exif-orientation-method-one.git.diff

Assuming the changes the CG are reverted, this git diff for ImageSkia.cpp makes fast/images/exif-orientation.html pass locally for me.

Note sure why I need to scale(-1,1) for exif orientations 5-8 to make that test pass, added a FIXME about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750892</commentid>
    <comment_count>24</comment_count>
      <attachid>170665</attachid>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-10-25 09:03:23 -0700</bug_when>
    <thetext>Created attachment 170665
exif-orientation-method-two.git.diff

Assuming the CG changes were reverted, this second approach writes out the transforms and translations in place.

So I don&apos;t use transformFromDefault(), which is sad, but the code might help spot why the scale(-1,-1) is needed for Skia.  The scale(-1,-1) is embedded in the affine transform for orientations 5-8 here, and again, fast/images/exif-orientation.html passes locally for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751080</commentid>
    <comment_count>25</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-10-25 11:56:55 -0700</bug_when>
    <thetext>Alright, a different fix is in https://bugs.webkit.org/show_bug.cgi?id=100401 . By popular request, it reverts the changes to ImageOrientation (and to the mac port code) and instead makes the skia code work with the left-hand coordinate frame.

I&apos;m happy with either patch. The new patch does have the property that it&apos;s more similar to the currently checked-in code, but I&apos;m not sure if that&apos;s an advantage or not :-)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170287</attachid>
            <date>2012-10-23 18:48:15 -0700</date>
            <delta_ts>2012-10-23 19:35:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100179-20121023184658.patch</filename>
            <type>text/plain</type>
            <size>8897</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxOTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjlmYjhlMWZiMDNkMjEy
NTYzNmJjNmZhYjVjMjdhM2I4YmFjYzgxZS4uNzJmZGEyYWI2YzQyNmI1YzIwMWNkNWQzNWZhZGFj
ODliM2I3NjgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACiAyMDEyLTEwLTIzICBOaWNv
IFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAorICAgICAgICBIb25vciBpbWFnZSBvcmll
bnRhdGlvbiBpbiBHcmFwaGljc0NvbnRleHRTa2lhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIGZpeCBhIGJ1ZyBpbiBJbWFnZU9yaWVudGF0aW9u
Lmg6IFNvbWUgb2YgdGhlIHZhbHVlcyB3ZXJlCisgICAgICAgIHN3aXRjaGVkLiBUaGV5IG5vdyBt
YXRjaCB0aGUgZGVzY3JpcHRpb24gaW4gdGhlIGV4aWYgc3BlYyBhdAorICAgICAgICBodHRwOi8v
d3d3LmV4aWYub3JnL0V4aWYyLTIuUERGIHBhZ2UgMTgsIGFuZCB0aGUgbm90ZXMgYXQKKyAgICAg
ICAgaHR0cDovL3d3dy5zbm8ucGh5LnF1ZWVuc3UuY2EvfnBoaWwvZXhpZnRvb2wvVGFnTmFtZXMv
RVhJRi5odG1sIGFuZAorICAgICAgICB0aGUgcGljdHVyZSBhdCBodHRwOi8vd3d3Ljgwc2lkZWEu
Y29tL2FyY2hpdmVzLzIzMTYuCisKKyAgICAgICAgVGhleSBzaG93ZWQgdXAgY29ycmVjdGx5IGlu
IFNhZmFyaSBiZWNhdXNlIHRoZSBvcmllbnRhdGlvbiB0cmFuc2Zvcm0KKyAgICAgICAgd2FzIGRv
bmUgYWZ0ZXIgZmxpcHBpbmcgWS4gTGV0IHRoZSBmbGlwcGluZyBoYXBwZW4gbGF0ZXIuIEkgdmVy
aWZpZWQKKyAgICAgICAgdGhhdCBmbGlwcGluZyB0cmFuc2Zvcm1hdGlvbiBvcmRlciBhbmQgZml4
aW5nIHRoZSBleGlmIGVudW0gY2FuY2VsbGVkCisgICAgICAgIGVhY2ggb3RoZXIgb3V0LCBzbyB0
aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGFwcGxlIHBvcnQuCisKKyAgICAgICAgTm90IGhvb2tl
ZCB1cCB5ZXQsIHNvIG5vIG9ic2VydmFibGUgZGlmZmVyZW5jZS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VPcmllbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbjo6
dXNlc1dpZHRoQXNIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbjo6
ZnJvbUVYSUZWYWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0
aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50U2tCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZSk6CisKKzIwMTItMTAtMjMgIE5p
Y28gV2ViZXIgIDx0aGFraXNAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFBhc3Mgb24gZXhpZiBv
cmllbnRhdGlvbiBmcm9tIEltYWdlU291cmNlIHdoZW4gdXNpbmcgdGhlIG9wZW4tc291cmNlIGlt
YWdlIGRlY29kZXJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDAxNjQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgKaW5kZXggMjBiMzA4MWZiZmI5ZTYzMzUwZmI4MDlkNjI2OTgxZTljYjNhZThmOS4u
ZjQ0OWZiYzFiMjk3Y2QzZjIxZDc5MmEzYTZhZTZmOTQ4OTZjMDAzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0yMDQsNyArMjA0LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNp
emUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRT
aXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IpOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7Ci0jaWYgVVNFKENHKQorI2lm
IFVTRShDRykgfHwgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
UmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtKSBPVkVSUklERTsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmgKaW5k
ZXggODZiZTVmZTc3YWJiZDk5YTBjYjJjYmE0YTY3OGU0N2NjZmU5NmQxNi4uMjQxMDYxODdhMzQw
ZDM3ODRmOGRkYmFhOGE3YzhlYzIwMzFlNzlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uaApAQCAtMzYsMTMgKzM2LDEzIEBA
IGNsYXNzIEZsb2F0U2l6ZTsKIGVudW0gSW1hZ2VPcmllbnRhdGlvbkVudW0gewogICAgIC8vICJU
b3BMZWZ0IiBtZWFucyB0aGF0IHRoZSAwIHJvdyBzdGFydHMgYXQgdGhlIFRvcCwgdGhlIDAgY29s
dW1uIHN0YXJ0cyBhdCB0aGUgTGVmdC4KICAgICBPcmlnaW5Ub3BMZWZ0ID0gMSwgLy8gZGVmYXVs
dAotICAgIE9yaWdpblRvcFJpZ2h0ID0gMiwgLy8gbWlycm9yIGFsb25nIHktYXhlcworICAgIE9y
aWdpblRvcFJpZ2h0ID0gMiwgLy8gbWlycm9yIGFsb25nIHktYXhpcwogICAgIE9yaWdpbkJvdHRv
bVJpZ2h0ID0gMywgLy8gMTgwIGRlZ3JlZSByb3RhdGlvbgotICAgIE9yaWdpbkJvdHRvbUxlZnQg
PSA0LCAvLyBtaXJyb3IgYWxvbmcgdGhlIHgtYXhlcwotICAgIE9yaWdpbkxlZnRUb3AgPSA1LCAv
LyAtOTAgZGVncmVlIHJvdGF0aW9uICsgbWlycm9yIGFsb25nIHgtYXhlcwotICAgIE9yaWdpblJp
Z2h0VG9wID0gNiwgLy8gOTAgZGVncmVlIHJvdGF0aW9uCi0gICAgT3JpZ2luUmlnaHRCb3R0b20g
PSA3LCAvLyA5MCBkZWdyZWUgcm90YXRpb24gKyBtaXJyb3IgYWxvbmcgeC1heGVzCi0gICAgT3Jp
Z2luTGVmdEJvdHRvbSA9IDgsIC8vIC05MCBkZWdyZWUgcm90YXRpb24KKyAgICBPcmlnaW5Cb3R0
b21MZWZ0ID0gNCwgLy8gbWlycm9yIGFsb25nIHRoZSB4LWF4aXMKKyAgICBPcmlnaW5SaWdodEJv
dHRvbSA9IDUsIC8vIG1pcnJvciBhbG9uZyB4LWF4aXMgKyAyNzAgZGVncmVlIENXIHJvdGF0aW9u
CisgICAgT3JpZ2luTGVmdEJvdHRvbSA9IDYsIC8vIDkwIGRlZ3JlZSBDVyByb3RhdGlvbgorICAg
IE9yaWdpbkxlZnRUb3AgPSA3LCAvLyBtaXJyb3IgYWxvbmcgeC1heGlzICsgOTAgZGVncmVlIENX
IHJvdGF0aW9uCisgICAgT3JpZ2luUmlnaHRUb3AgPSA4LCAvLyAyNzAgZGVncmVlIENXIHJvdGF0
aW9uCiAgICAgLy8gQWxsIG90aGVyIHZhbHVlcyBhcmUgInJlc2VydmVkIiBhcyBvZiBFWElGIDIu
MgogICAgIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uID0gT3JpZ2luVG9wTGVmdCwKIH07CkBAIC02
Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBib29sIHVzZXNXaWR0aEFzSGVpZ2h0KCkgY29uc3QK
ICAgICB7CiAgICAgICAgIC8vIFZhbHVlcyA1IHRocm91Z2ggOCBhbGwgZmxpcCB0aGUgd2lkdGgv
aGVpZ2h0LgotICAgICAgICByZXR1cm4gbV9vcmllbnRhdGlvbiA+PSBPcmlnaW5MZWZ0VG9wOwor
ICAgICAgICByZXR1cm4gbV9vcmllbnRhdGlvbiA+PSBPcmlnaW5SaWdodEJvdHRvbTsKICAgICB9
CiAKICAgICAvLyBJbWFnZU9yaWVudGF0aW9uRW51bSBjdXJyZW50bHkgbWF0Y2hlcyBFWElGIHZh
bHVlcywgaG93ZXZlciBjb2RlIG91dHNpZGUKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uIGZyb21FWElGVmFsdWUoaW50IGV4aWZWYWx1ZSkKICAg
ICB7CiAgICAgICAgIC8vIFZhbHVlcyBkaXJlY3QgZnJvbSBpbWFnZXMgbWF5IGJlIGludmFsaWQs
IGluIHdoaWNoIGNhc2Ugd2UgdXNlIHRoZSBkZWZhdWx0LgotICAgICAgICBpZiAoZXhpZlZhbHVl
IDwgT3JpZ2luVG9wTGVmdCB8fCBleGlmVmFsdWUgPiBPcmlnaW5MZWZ0Qm90dG9tKQorICAgICAg
ICBpZiAoZXhpZlZhbHVlIDwgT3JpZ2luVG9wTGVmdCB8fCBleGlmVmFsdWUgPiBPcmlnaW5SaWdo
dFRvcCkKICAgICAgICAgICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlT3JpZW50YXRpb25FbnVtPihleGlmVmFsdWUpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAxNDE0MmY2Y2QwNjE3YWQyZDE1MjJiN2I0NWYx
YmZiZDg0MzQ0ZDQ0Li5hMmEwODU5NmRiMWE5MDI5ZDMwNDY2YzIxMzk4YjE2YWJhOGMwYTkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zMjYsMTEgKzMyNiw2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0
U2l6ZSYKIAogICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKIAotICAgIC8v
IEZsaXAgdGhlIGNvb3Jkcy4KLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgYWRq
dXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QubWF4WSgpKTsKLSAgICBDR0NvbnRl
eHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7Ci0gICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRMb2Nh
dGlvbihGbG9hdFBvaW50KCkpOwotCiAgICAgaWYgKG9yaWVudGF0aW9uICE9IERlZmF1bHRJbWFn
ZU9yaWVudGF0aW9uKSB7CiAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBvcmll
bnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOwog
ICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkgewpAQCAtMzQwLDYg
KzMzNSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUlt
YWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmCiAgICAgICAgIH0KICAgICB9CiAgICAg
CisgICAgLy8gRmxpcCB0aGUgY29vcmRzLgorICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250
ZXh0LCBhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC5tYXhZKCkpOworICAg
IENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKKyAgICBhZGp1c3RlZERlc3RSZWN0
LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CisKICAgICAvLyBBZGp1c3QgdGhlIGNvbG9yIHNw
YWNlLgogICAgIGltYWdlID0gSW1hZ2U6OmltYWdlV2l0aENvbG9yU3BhY2UoaW1hZ2UuZ2V0KCks
IHN0eWxlQ29sb3JTcGFjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAppbmRleCBlNWE1MjQxMWQyMTlmN2RiYmI5ODBlNjBm
ZDllYWMyNzYwODA2M2ZhLi41MTA3NjNhMjRjYTc4YzNlMjY2ODRhNzgwMzEwY2M2YmNkYjAwOGIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdl
U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFn
ZVNraWEuY3BwCkBAIC0zODksOSArMzg5LDkgQEAgc3RhdGljIHZvaWQgcGFpbnRTa0JpdG1hcChQ
bGF0Zm9ybUNvbnRleHRTa2lhKiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWcKICAg
ICB9CiAKICAgICBpZiAocmVzYW1wbGluZyA9PSBSRVNBTVBMRV9OT05FKSB7Ci0gICAgICAvLyBG
SVhNRTogVGhpcyBpcyB0byBub3QgYnJlYWsgdGVzdHMgKGl0IHJlc3VsdHMgaW4gdGhlIGZpbHRl
ciBiaXRtYXAgZmxhZwotICAgICAgLy8gYmVpbmcgc2V0IHRvIHRydWUpLiBXZSBuZWVkIHRvIGRl
Y2lkZSBpZiB3ZSByZXNwZWN0IFJFU0FNUExFX05PTkUKLSAgICAgIC8vIGJlaW5nIHJldHVybmVk
IGZyb20gY29tcHV0ZVJlc2FtcGxpbmdNb2RlLgorICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyB0
byBub3QgYnJlYWsgdGVzdHMgKGl0IHJlc3VsdHMgaW4gdGhlIGZpbHRlciBiaXRtYXAgZmxhZwor
ICAgICAgICAvLyBiZWluZyBzZXQgdG8gdHJ1ZSkuIFdlIG5lZWQgdG8gZGVjaWRlIGlmIHdlIHJl
c3BlY3QgUkVTQU1QTEVfTk9ORQorICAgICAgICAvLyBiZWluZyByZXR1cm5lZCBmcm9tIGNvbXB1
dGVSZXNhbXBsaW5nTW9kZS4KICAgICAgICAgcmVzYW1wbGluZyA9IFJFU0FNUExFX0xJTkVBUjsK
ICAgICB9CiAgICAgcmVzYW1wbGluZyA9IGxpbWl0UmVzYW1wbGluZ01vZGUocGxhdGZvcm1Db250
ZXh0LCByZXNhbXBsaW5nKTsKQEAgLTU4NSw2ICs1ODUsMTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6
Y2hlY2tGb3JTb2xpZENvbG9yKCkKIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKIHsKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIHNy
Y1JlY3QsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKTsKK30KKwordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVj
dEltYWdlT3JpZW50YXRpb24pCit7CiAgICAgaWYgKCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTYwMyw2ICs2MDksMjEgQEAgdm9pZCBCaXRtYXBJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKICAg
ICBpZiAobm9ybVNyY1JlY3QuaXNFbXB0eSgpIHx8IG5vcm1Ec3RSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRyYXcuCiAKKyAgICBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uID0gRGVmYXVsdEltYWdlT3JpZW50YXRpb247CisgICAgaWYgKHNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uID09IFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKQorICAgICAg
ICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsK
KworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZUNvbnRleHQoKmN0eHQsIGZhbHNl
KTsKKyAgICBpZiAob3JpZW50YXRpb24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24pIHsKKyAg
ICAgICAgc2F2ZUNvbnRleHQuc2F2ZSgpOworICAgICAgICBjdHh0LT5jb25jYXRDVE0ob3JpZW50
YXRpb24udHJhbnNmb3JtRnJvbURlZmF1bHQobm9ybURzdFJlY3Quc2l6ZSgpKSk7CisgICAgICAg
IGlmIChvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7CisgICAgICAgICAgICAvLyBU
aGUgZGVzdGluYXRpb24gcmVjdCB3aWxsIGhhdmUgaXQncyB3aWR0aCBhbmQgaGVpZ2h0IGFscmVh
ZHkgcmV2ZXJzZWQgZm9yIHRoZSBvcmllbnRhdGlvbiBvZgorICAgICAgICAgICAgLy8gdGhlIGlt
YWdlLCBhcyBpdCB3YXMgbmVlZGVkIGZvciBwYWdlIGxheW91dCwgc28gd2UgbmVlZCB0byByZXZl
cnNlIGl0IGJhY2sgaGVyZS4KKyAgICAgICAgICAgIG5vcm1Ec3RSZWN0ID0gRmxvYXRSZWN0KG5v
cm1Ec3RSZWN0LngoKSwgbm9ybURzdFJlY3QueSgpLCBub3JtRHN0UmVjdC5oZWlnaHQoKSwgbm9y
bURzdFJlY3Qud2lkdGgoKSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBwYWludFNrQml0bWFw
KGN0eHQtPnBsYXRmb3JtQ29udGV4dCgpLAogICAgICAgICAqYm0sCiAgICAgICAgIG5vcm1TcmNS
ZWN0LAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170295</attachid>
            <date>2012-10-23 19:35:26 -0700</date>
            <delta_ts>2012-10-24 22:53:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100179-20121023193402.patch</filename>
            <type>text/plain</type>
            <size>9036</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxOTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjlmYjhlMWZiMDNkMjEy
NTYzNmJjNmZhYjVjMjdhM2I4YmFjYzgxZS4uNzJmZGEyYWI2YzQyNmI1YzIwMWNkNWQzNWZhZGFj
ODliM2I3NjgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACiAyMDEyLTEwLTIzICBOaWNv
IFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAorICAgICAgICBIb25vciBpbWFnZSBvcmll
bnRhdGlvbiBpbiBHcmFwaGljc0NvbnRleHRTa2lhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAxNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBbHNvIGZpeCBhIGJ1ZyBpbiBJbWFnZU9yaWVudGF0aW9u
Lmg6IFNvbWUgb2YgdGhlIHZhbHVlcyB3ZXJlCisgICAgICAgIHN3aXRjaGVkLiBUaGV5IG5vdyBt
YXRjaCB0aGUgZGVzY3JpcHRpb24gaW4gdGhlIGV4aWYgc3BlYyBhdAorICAgICAgICBodHRwOi8v
d3d3LmV4aWYub3JnL0V4aWYyLTIuUERGIHBhZ2UgMTgsIGFuZCB0aGUgbm90ZXMgYXQKKyAgICAg
ICAgaHR0cDovL3d3dy5zbm8ucGh5LnF1ZWVuc3UuY2EvfnBoaWwvZXhpZnRvb2wvVGFnTmFtZXMv
RVhJRi5odG1sIGFuZAorICAgICAgICB0aGUgcGljdHVyZSBhdCBodHRwOi8vd3d3Ljgwc2lkZWEu
Y29tL2FyY2hpdmVzLzIzMTYuCisKKyAgICAgICAgVGhleSBzaG93ZWQgdXAgY29ycmVjdGx5IGlu
IFNhZmFyaSBiZWNhdXNlIHRoZSBvcmllbnRhdGlvbiB0cmFuc2Zvcm0KKyAgICAgICAgd2FzIGRv
bmUgYWZ0ZXIgZmxpcHBpbmcgWS4gTGV0IHRoZSBmbGlwcGluZyBoYXBwZW4gbGF0ZXIuIEkgdmVy
aWZpZWQKKyAgICAgICAgdGhhdCBmbGlwcGluZyB0cmFuc2Zvcm1hdGlvbiBvcmRlciBhbmQgZml4
aW5nIHRoZSBleGlmIGVudW0gY2FuY2VsbGVkCisgICAgICAgIGVhY2ggb3RoZXIgb3V0LCBzbyB0
aGlzIGhhcyBubyBlZmZlY3Qgb24gdGhlIGFwcGxlIHBvcnQuCisKKyAgICAgICAgTm90IGhvb2tl
ZCB1cCB5ZXQsIHNvIG5vIG9ic2VydmFibGUgZGlmZmVyZW5jZS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VPcmllbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbjo6
dXNlc1dpZHRoQXNIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbjo6
ZnJvbUVYSUZWYWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0
aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50U2tCaXRtYXApOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZSk6CisKKzIwMTItMTAtMjMgIE5p
Y28gV2ViZXIgIDx0aGFraXNAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFBhc3Mgb24gZXhpZiBv
cmllbnRhdGlvbiBmcm9tIEltYWdlU291cmNlIHdoZW4gdXNpbmcgdGhlIG9wZW4tc291cmNlIGlt
YWdlIGRlY29kZXJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDAxNjQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmgKaW5kZXggMjBiMzA4MWZiZmI5ZTYzMzUwZmI4MDlkNjI2OTgxZTljYjNhZThmOS4u
ZjQ0OWZiYzFiMjk3Y2QzZjIxZDc5MmEzYTZhZTZmOTQ4OTZjMDAzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0yMDQsNyArMjA0LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNp
emUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRT
aXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IpOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3Bh
Y2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7Ci0jaWYgVVNFKENHKQorI2lm
IFVTRShDRykgfHwgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
UmVzcGVjdEltYWdlT3JpZW50YXRpb25FbnVtKSBPVkVSUklERTsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmgKaW5k
ZXggODZiZTVmZTc3YWJiZDk5YTBjYjJjYmE0YTY3OGU0N2NjZmU5NmQxNi4uMjQxMDYxODdhMzQw
ZDM3ODRmOGRkYmFhOGE3YzhlYzIwMzFlNzlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uaApAQCAtMzYsMTMgKzM2LDEzIEBA
IGNsYXNzIEZsb2F0U2l6ZTsKIGVudW0gSW1hZ2VPcmllbnRhdGlvbkVudW0gewogICAgIC8vICJU
b3BMZWZ0IiBtZWFucyB0aGF0IHRoZSAwIHJvdyBzdGFydHMgYXQgdGhlIFRvcCwgdGhlIDAgY29s
dW1uIHN0YXJ0cyBhdCB0aGUgTGVmdC4KICAgICBPcmlnaW5Ub3BMZWZ0ID0gMSwgLy8gZGVmYXVs
dAotICAgIE9yaWdpblRvcFJpZ2h0ID0gMiwgLy8gbWlycm9yIGFsb25nIHktYXhlcworICAgIE9y
aWdpblRvcFJpZ2h0ID0gMiwgLy8gbWlycm9yIGFsb25nIHktYXhpcwogICAgIE9yaWdpbkJvdHRv
bVJpZ2h0ID0gMywgLy8gMTgwIGRlZ3JlZSByb3RhdGlvbgotICAgIE9yaWdpbkJvdHRvbUxlZnQg
PSA0LCAvLyBtaXJyb3IgYWxvbmcgdGhlIHgtYXhlcwotICAgIE9yaWdpbkxlZnRUb3AgPSA1LCAv
LyAtOTAgZGVncmVlIHJvdGF0aW9uICsgbWlycm9yIGFsb25nIHgtYXhlcwotICAgIE9yaWdpblJp
Z2h0VG9wID0gNiwgLy8gOTAgZGVncmVlIHJvdGF0aW9uCi0gICAgT3JpZ2luUmlnaHRCb3R0b20g
PSA3LCAvLyA5MCBkZWdyZWUgcm90YXRpb24gKyBtaXJyb3IgYWxvbmcgeC1heGVzCi0gICAgT3Jp
Z2luTGVmdEJvdHRvbSA9IDgsIC8vIC05MCBkZWdyZWUgcm90YXRpb24KKyAgICBPcmlnaW5Cb3R0
b21MZWZ0ID0gNCwgLy8gbWlycm9yIGFsb25nIHRoZSB4LWF4aXMKKyAgICBPcmlnaW5SaWdodEJv
dHRvbSA9IDUsIC8vIG1pcnJvciBhbG9uZyB4LWF4aXMgKyAyNzAgZGVncmVlIENXIHJvdGF0aW9u
CisgICAgT3JpZ2luTGVmdEJvdHRvbSA9IDYsIC8vIDkwIGRlZ3JlZSBDVyByb3RhdGlvbgorICAg
IE9yaWdpbkxlZnRUb3AgPSA3LCAvLyBtaXJyb3IgYWxvbmcgeC1heGlzICsgOTAgZGVncmVlIENX
IHJvdGF0aW9uCisgICAgT3JpZ2luUmlnaHRUb3AgPSA4LCAvLyAyNzAgZGVncmVlIENXIHJvdGF0
aW9uCiAgICAgLy8gQWxsIG90aGVyIHZhbHVlcyBhcmUgInJlc2VydmVkIiBhcyBvZiBFWElGIDIu
MgogICAgIERlZmF1bHRJbWFnZU9yaWVudGF0aW9uID0gT3JpZ2luVG9wTGVmdCwKIH07CkBAIC02
Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBib29sIHVzZXNXaWR0aEFzSGVpZ2h0KCkgY29uc3QK
ICAgICB7CiAgICAgICAgIC8vIFZhbHVlcyA1IHRocm91Z2ggOCBhbGwgZmxpcCB0aGUgd2lkdGgv
aGVpZ2h0LgotICAgICAgICByZXR1cm4gbV9vcmllbnRhdGlvbiA+PSBPcmlnaW5MZWZ0VG9wOwor
ICAgICAgICByZXR1cm4gbV9vcmllbnRhdGlvbiA+PSBPcmlnaW5SaWdodEJvdHRvbTsKICAgICB9
CiAKICAgICAvLyBJbWFnZU9yaWVudGF0aW9uRW51bSBjdXJyZW50bHkgbWF0Y2hlcyBFWElGIHZh
bHVlcywgaG93ZXZlciBjb2RlIG91dHNpZGUKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBJbWFnZU9yaWVudGF0aW9uIGZyb21FWElGVmFsdWUoaW50IGV4aWZWYWx1ZSkKICAg
ICB7CiAgICAgICAgIC8vIFZhbHVlcyBkaXJlY3QgZnJvbSBpbWFnZXMgbWF5IGJlIGludmFsaWQs
IGluIHdoaWNoIGNhc2Ugd2UgdXNlIHRoZSBkZWZhdWx0LgotICAgICAgICBpZiAoZXhpZlZhbHVl
IDwgT3JpZ2luVG9wTGVmdCB8fCBleGlmVmFsdWUgPiBPcmlnaW5MZWZ0Qm90dG9tKQorICAgICAg
ICBpZiAoZXhpZlZhbHVlIDwgT3JpZ2luVG9wTGVmdCB8fCBleGlmVmFsdWUgPiBPcmlnaW5SaWdo
dFRvcCkKICAgICAgICAgICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEltYWdlT3JpZW50YXRpb25FbnVtPihleGlmVmFsdWUpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCAxNDE0MmY2Y2QwNjE3YWQyZDE1MjJiN2I0NWYx
YmZiZDg0MzQ0ZDQ0Li5hMmEwODU5NmRiMWE5MDI5ZDMwNDY2YzIxMzk4YjE2YWJhOGMwYTkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zMjYsMTEgKzMyNiw2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2VQdHIsIGNvbnN0IEZsb2F0
U2l6ZSYKIAogICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKIAotICAgIC8v
IEZsaXAgdGhlIGNvb3Jkcy4KLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgYWRq
dXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QubWF4WSgpKTsKLSAgICBDR0NvbnRl
eHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7Ci0gICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRMb2Nh
dGlvbihGbG9hdFBvaW50KCkpOwotCiAgICAgaWYgKG9yaWVudGF0aW9uICE9IERlZmF1bHRJbWFn
ZU9yaWVudGF0aW9uKSB7CiAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBvcmll
bnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOwog
ICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkgewpAQCAtMzQwLDYg
KzMzNSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUlt
YWdlUHRyIGltYWdlUHRyLCBjb25zdCBGbG9hdFNpemUmCiAgICAgICAgIH0KICAgICB9CiAgICAg
CisgICAgLy8gRmxpcCB0aGUgY29vcmRzLgorICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250
ZXh0LCBhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC5tYXhZKCkpOworICAg
IENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKKyAgICBhZGp1c3RlZERlc3RSZWN0
LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CisKICAgICAvLyBBZGp1c3QgdGhlIGNvbG9yIHNw
YWNlLgogICAgIGltYWdlID0gSW1hZ2U6OmltYWdlV2l0aENvbG9yU3BhY2UoaW1hZ2UuZ2V0KCks
IHN0eWxlQ29sb3JTcGFjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAppbmRleCBlNWE1MjQxMWQyMTlmN2RiYmI5ODBlNjBm
ZDllYWMyNzYwODA2M2ZhLi5jNTFjYjZiODdjYTZlZGZmNDRiMGU5NTZjMTJlMTBkYzRjYTE0NmY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdl
U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFn
ZVNraWEuY3BwCkBAIC0zODksOSArMzg5LDkgQEAgc3RhdGljIHZvaWQgcGFpbnRTa0JpdG1hcChQ
bGF0Zm9ybUNvbnRleHRTa2lhKiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWcKICAg
ICB9CiAKICAgICBpZiAocmVzYW1wbGluZyA9PSBSRVNBTVBMRV9OT05FKSB7Ci0gICAgICAvLyBG
SVhNRTogVGhpcyBpcyB0byBub3QgYnJlYWsgdGVzdHMgKGl0IHJlc3VsdHMgaW4gdGhlIGZpbHRl
ciBiaXRtYXAgZmxhZwotICAgICAgLy8gYmVpbmcgc2V0IHRvIHRydWUpLiBXZSBuZWVkIHRvIGRl
Y2lkZSBpZiB3ZSByZXNwZWN0IFJFU0FNUExFX05PTkUKLSAgICAgIC8vIGJlaW5nIHJldHVybmVk
IGZyb20gY29tcHV0ZVJlc2FtcGxpbmdNb2RlLgorICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyB0
byBub3QgYnJlYWsgdGVzdHMgKGl0IHJlc3VsdHMgaW4gdGhlIGZpbHRlciBiaXRtYXAgZmxhZwor
ICAgICAgICAvLyBiZWluZyBzZXQgdG8gdHJ1ZSkuIFdlIG5lZWQgdG8gZGVjaWRlIGlmIHdlIHJl
c3BlY3QgUkVTQU1QTEVfTk9ORQorICAgICAgICAvLyBiZWluZyByZXR1cm5lZCBmcm9tIGNvbXB1
dGVSZXNhbXBsaW5nTW9kZS4KICAgICAgICAgcmVzYW1wbGluZyA9IFJFU0FNUExFX0xJTkVBUjsK
ICAgICB9CiAgICAgcmVzYW1wbGluZyA9IGxpbWl0UmVzYW1wbGluZ01vZGUocGxhdGZvcm1Db250
ZXh0LCByZXNhbXBsaW5nKTsKQEAgLTU4Miw4ICs1ODIsMTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6
Y2hlY2tGb3JTb2xpZENvbG9yKCkKICAgICB9CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCkKK3sKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIHNyY1JlY3Qs
IGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsK
K30KKwordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAgaWYg
KCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm47CkBAIC02MDMsNiArNjA3
LDIxIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsCiAgICAgaWYgKG5vcm1TcmNSZWN0LmlzRW1wdHkoKSB8fCBu
b3JtRHN0UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBkcmF3
LgogCisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IERlZmF1bHRJbWFnZU9yaWVu
dGF0aW9uOworICAgIGlmIChzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9PSBSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbikKKyAgICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9u
QXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHNhdmVDb250ZXh0KCpjdHh0LCBmYWxzZSk7CisgICAgaWYgKG9yaWVudGF0aW9uICE9IERlZmF1
bHRJbWFnZU9yaWVudGF0aW9uKSB7CisgICAgICAgIHNhdmVDb250ZXh0LnNhdmUoKTsKKyAgICAg
ICAgY3R4dC0+Y29uY2F0Q1RNKG9yaWVudGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KG5vcm1E
c3RSZWN0LnNpemUoKSkpOworICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWln
aHQoKSkgeworICAgICAgICAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJlY3Qgd2lsbCBoYXZlIGl0
J3Mgd2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24g
b2YKKyAgICAgICAgICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBs
YXlvdXQsIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCisgICAgICAgICAgICBu
b3JtRHN0UmVjdCA9IEZsb2F0UmVjdChub3JtRHN0UmVjdC54KCksIG5vcm1Ec3RSZWN0LnkoKSwg
bm9ybURzdFJlY3QuaGVpZ2h0KCksIG5vcm1Ec3RSZWN0LndpZHRoKCkpOworICAgICAgICB9Cisg
ICAgfQorCiAgICAgcGFpbnRTa0JpdG1hcChjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSwKICAgICAg
ICAgKmJtLAogICAgICAgICBub3JtU3JjUmVjdCwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>170662</attachid>
            <date>2012-10-25 08:48:26 -0700</date>
            <delta_ts>2012-10-25 08:48:26 -0700</delta_ts>
            <desc>exif-orientation-method-one.git.diff</desc>
            <filename>exif-natural-orientation-method-one.git.diff</filename>
            <type>application/octet-stream</type>
            <size>2954</size>
            <attacher name="noel gordon">noel.gordon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VT
a2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lh
LmNwcAppbmRleCBlNWE1MjQxLi5mZDU5ZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCkBAIC00NDksNiArNDQ5LDggQEAg
Ym9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKICAgICBpZiAoY2xlYXJN
ZXRhZGF0YSkKICAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKCisgICAgbV9vcmllbnRh
dGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOworCiAgICAgaWYgKG1fZnJhbWUpIHsKICAg
ICAgICAgLy8gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCgpIGFsbG9jYXRlZCB8bV9m
cmFtZXwgYW5kIHBhc3NlZAogICAgICAgICAvLyBvd25lcnNoaXAgdG8gQml0bWFwSW1hZ2U7IHdl
IG11c3QgZGVsZXRlIGl0IGhlcmUuCkBAIC01ODIsOCArNTg0LDEyIEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgfQogfQoKLXZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgQml0bWFwSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3sKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIHNyY1Jl
Y3QsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
KTsKK30KKwordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAg
aWYgKCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm47CkBAIC02MDMsMTIg
KzYwOSw0MCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogICAgIGlmIChub3JtU3JjUmVjdC5pc0VtcHR5KCkg
fHwgbm9ybURzdFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47IC8vIE5vdGhpbmcgdG8g
ZHJhdy4KCisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbjsKKyAgICBpZiAoc2hvdWxk
UmVzcGVjdEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCisgICAg
ICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUp
OworCisgICAgaWYgKG9yaWVudGF0aW9uICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKSB7Cisg
ICAgICAgIGZsb2F0IGggPSBub3JtRHN0UmVjdC5oZWlnaHQoKTsKKyAgICAgICAgZmxvYXQgdyA9
IG5vcm1Ec3RSZWN0LndpZHRoKCk7CisKKyAgICAgICAgY3R4dC0+c2F2ZSgpOworICAgICAgICBp
ZiAoIW9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpCisgICAgICAgICAgICBjdHh0LT50
cmFuc2xhdGUobm9ybURzdFJlY3QueCgpLCBub3JtRHN0UmVjdC55KCkpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGN0eHQtPnRyYW5zbGF0ZShub3JtRHN0UmVjdC54KCkgKyB3LCBub3Jt
RHN0UmVjdC55KCkgKyBoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBGb3Igb3JpZW50YXRpb25z
IDUtOCwgdXNlIG9mIHRyYW5zZm9ybUZyb21EZWZhdWx0KCkgcmVxdWlyZXMKKyAgICAgICAgICAg
IC8vIHRoYXQgd2UgLTEsLTEgc2NhbGUgdG8gbWFrZSBmYXN0L2ltYWdlcy9leGlmLW9yaWVudGF0
aW9uLmh0bWwgcGFzcy4KKyAgICAgICAgICAgIC8vIFRoZSBDRyBwb3J0IGRvZXNuJ3QgbmVlZCB0
byBkbyB0aGlzLCBzbyB3aHkgZG8gd2U/CisgICAgICAgICAgICBjdHh0LT5zY2FsZShJbnRTaXpl
KC0xLCAtMSkpOworICAgICAgICAgICAgLy8gTGF5b3V0IHJldmVyc2VkIHdpZHRoL2hlaWdodCBm
b3IgdGhlc2Ugb3JpZW50YXRpb25zLCBzd2FwIHRoZW0gYmFjay4KKyAgICAgICAgICAgIG5vcm1E
c3RSZWN0LnNldFNpemUoRmxvYXRTaXplKGgsIHcpKTsKKyAgICAgICAgfQorCisgICAgICAgIGN0
eHQtPmNvbmNhdENUTShvcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChJbnRTaXplKHcs
IGgpKSk7CisgICAgICAgIG5vcm1Ec3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7Cisg
ICAgfQorCiAgICAgcGFpbnRTa0JpdG1hcChjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSwKICAgICAg
ICAgKmJtLAogICAgICAgICBub3JtU3JjUmVjdCwKICAgICAgICAgbm9ybURzdFJlY3QsCiAgICAg
ICAgIFdlYkNvcmVDb21wb3NpdGVUb1NraWFDb21wb3NpdGUoY29tcG9zaXRlT3ApKTsKCisgICAg
aWYgKG9yaWVudGF0aW9uICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKQorICAgICAgICBjdHh0
LT5yZXN0b3JlKCk7CisKICAgICBpZiAoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBpbWFnZU9i
c2VydmVyKCkpCiAgICAgICAgIG9ic2VydmVyLT5kaWREcmF3KHRoaXMpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>170665</attachid>
            <date>2012-10-25 09:03:23 -0700</date>
            <delta_ts>2012-10-25 09:03:23 -0700</delta_ts>
            <desc>exif-orientation-method-two.git.diff</desc>
            <filename>exif-natural-orientation-method-two.git.diff</filename>
            <type>application/octet-stream</type>
            <size>3553</size>
            <attacher name="noel gordon">noel.gordon</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VT
a2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lh
LmNwcAppbmRleCBlNWE1MjQxLi4zMjA3OGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCkBAIC00NDksNiArNDQ5LDggQEAg
Ym9vbCBGcmFtZURhdGE6OmNsZWFyKGJvb2wgY2xlYXJNZXRhZGF0YSkKICAgICBpZiAoY2xlYXJN
ZXRhZGF0YSkKICAgICAgICAgbV9oYXZlTWV0YWRhdGEgPSBmYWxzZTsKCisgICAgbV9vcmllbnRh
dGlvbiA9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uOworCiAgICAgaWYgKG1fZnJhbWUpIHsKICAg
ICAgICAgLy8gSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCgpIGFsbG9jYXRlZCB8bV9m
cmFtZXwgYW5kIHBhc3NlZAogICAgICAgICAvLyBvd25lcnNoaXAgdG8gQml0bWFwSW1hZ2U7IHdl
IG11c3QgZGVsZXRlIGl0IGhlcmUuCkBAIC01ODIsOCArNTg0LDEyIEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmNoZWNrRm9yU29saWRDb2xvcigpCiAgICAgfQogfQoKLXZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgQml0bWFwSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3sKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIHNyY1Jl
Y3QsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBEb05vdFJlc3BlY3RJbWFnZU9yaWVudGF0aW9u
KTsKK30KKwordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiB7CiAgICAg
aWYgKCFtX3NvdXJjZS5pbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm47CkBAIC02MDMsMTIg
KzYwOSw0OCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogICAgIGlmIChub3JtU3JjUmVjdC5pc0VtcHR5KCkg
fHwgbm9ybURzdFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47IC8vIE5vdGhpbmcgdG8g
ZHJhdy4KCisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbjsKKyAgICBpZiAoc2hvdWxk
UmVzcGVjdEltYWdlT3JpZW50YXRpb24gPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCisgICAg
ICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUp
OworCisgICAgaWYgKG9yaWVudGF0aW9uICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKSB7Cisg
ICAgICAgIGZsb2F0IHcgPSBub3JtRHN0UmVjdC53aWR0aCgpOworICAgICAgICBmbG9hdCBoID0g
bm9ybURzdFJlY3QuaGVpZ2h0KCk7CisKKyAgICAgICAgY3R4dC0+c2F2ZSgpOworICAgICAgICBp
ZiAob3JpZW50YXRpb24gPT0gT3JpZ2luVG9wUmlnaHQpCisgICAgICAgICAgICBjdHh0LT5jb25j
YXRDVE0oQWZmaW5lVHJhbnNmb3JtKC0xLCAwLCAwLCArMSwgbm9ybURzdFJlY3QueCgpICsgdywg
bm9ybURzdFJlY3QueSgpICsgMCkpOworICAgICAgICBlbHNlIGlmIChvcmllbnRhdGlvbiA9PSBP
cmlnaW5Cb3R0b21SaWdodCkKKyAgICAgICAgICAgIGN0eHQtPmNvbmNhdENUTShBZmZpbmVUcmFu
c2Zvcm0oLTEsIDAsIDAsIC0xLCBub3JtRHN0UmVjdC54KCkgKyB3LCBub3JtRHN0UmVjdC55KCkg
KyBoKSk7CisgICAgICAgIGVsc2UgaWYgKG9yaWVudGF0aW9uID09IE9yaWdpbkJvdHRvbUxlZnQp
CisgICAgICAgICAgICBjdHh0LT5jb25jYXRDVE0oQWZmaW5lVHJhbnNmb3JtKCsxLCAwLCAwLCAt
MSwgbm9ybURzdFJlY3QueCgpICsgMCwgbm9ybURzdFJlY3QueSgpICsgaCkpOworICAgICAgICBl
bHNlIGlmIChvcmllbnRhdGlvbiA9PSBPcmlnaW5MZWZ0VG9wKQorICAgICAgICAgICAgY3R4dC0+
Y29uY2F0Q1RNKEFmZmluZVRyYW5zZm9ybSgwLCArMSwgKzEsIDAsIG5vcm1Ec3RSZWN0LngoKSAr
IDAsIG5vcm1Ec3RSZWN0LnkoKSArIDApKTsKKyAgICAgICAgZWxzZSBpZiAob3JpZW50YXRpb24g
PT0gT3JpZ2luUmlnaHRUb3ApCisgICAgICAgICAgICBjdHh0LT5jb25jYXRDVE0oQWZmaW5lVHJh
bnNmb3JtKDAsICsxLCAtMSwgMCwgbm9ybURzdFJlY3QueCgpICsgdywgbm9ybURzdFJlY3QueSgp
ICsgMCkpOworICAgICAgICBlbHNlIGlmIChvcmllbnRhdGlvbiA9PSBPcmlnaW5SaWdodEJvdHRv
bSkKKyAgICAgICAgICAgIGN0eHQtPmNvbmNhdENUTShBZmZpbmVUcmFuc2Zvcm0oMCwgLTEsIC0x
LCAwLCBub3JtRHN0UmVjdC54KCkgKyB3LCBub3JtRHN0UmVjdC55KCkgKyBoKSk7CisgICAgICAg
IGVsc2UgaWYgKG9yaWVudGF0aW9uID09IE9yaWdpbkxlZnRCb3R0b20pCisgICAgICAgICAgICBj
dHh0LT5jb25jYXRDVE0oQWZmaW5lVHJhbnNmb3JtKDAsIC0xLCArMSwgMCwgbm9ybURzdFJlY3Qu
eCgpICsgMCwgbm9ybURzdFJlY3QueSgpICsgaCkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICBub3JtRHN0UmVjdC5zZXRMb2NhdGlv
bihGbG9hdFBvaW50KCkpOworCisgICAgICAgIGlmIChvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hl
aWdodCgpKQorICAgICAgICAgICAvLyBMYXlvdXQgcmV2ZXJzZWQgd2lkdGgvaGVpZ2h0IGZvciB0
aGVzZSBvcmllbnRhdGlvbnMsIHN3YXAgdGhlbSBiYWNrLgorICAgICAgICAgICBub3JtRHN0UmVj
dC5zZXRTaXplKEZsb2F0U2l6ZShoLCB3KSk7CisgICAgfQorCiAgICAgcGFpbnRTa0JpdG1hcChj
dHh0LT5wbGF0Zm9ybUNvbnRleHQoKSwKICAgICAgICAgKmJtLAogICAgICAgICBub3JtU3JjUmVj
dCwKICAgICAgICAgbm9ybURzdFJlY3QsCiAgICAgICAgIFdlYkNvcmVDb21wb3NpdGVUb1NraWFD
b21wb3NpdGUoY29tcG9zaXRlT3ApKTsKCisgICAgaWYgKG9yaWVudGF0aW9uICE9IERlZmF1bHRJ
bWFnZU9yaWVudGF0aW9uKQorICAgICAgICBjdHh0LT5yZXN0b3JlKCk7CisKICAgICBpZiAoSW1h
Z2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBpbWFnZU9ic2VydmVyKCkpCiAgICAgICAgIG9ic2VydmVy
LT5kaWREcmF3KHRoaXMpOwogfQ==
</data>

          </attachment>
      

    </bug>

</bugzilla>