<?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>85942</bug_id>
          
          <creation_ts>2012-05-08 18:28:47 -0700</creation_ts>
          <short_desc>Assertion failure running Mozilla&apos;s WebGL performance regression tests</short_desc>
          <delta_ts>2012-05-23 16:45:29 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>86515</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>aestes</cc>
    
    <cc>dino</cc>
    
    <cc>gman</cc>
    
    <cc>jamesr</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>619057</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-08 18:28:47 -0700</bug_when>
    <thetext>While running Mozilla&apos;s WebGL performance regression tests from http://hg.mozilla.org/users/bjacob_mozilla.com/webgl-perf-tests/raw-file/tip/webgl-performance-tests.html in a debug build of WebKit (reproduced here in Chromium), the following assertion is hit:

ASSERT(sourceDataFormat == SourceFormatRGBA32F || sourceDataFormat == SourceFormatRGB32F...

in:

#0  0x00007f12af6201e3 in WebCore::GraphicsContext3D::packPixels (
    this=0x7f129d75c5c0, sourceData=0x7f12988f3000 &quot;4(&quot;, 
    sourceDataFormat=WebCore::GraphicsContext3D::SourceFormatBGRA8, 
    width=1024, height=1024, sourceUnpackAlignment=0, destinationFormat=6407, 
    destinationType=5126, 
    alphaOp=WebCore::GraphicsContext3D::AlphaDoUnmultiply, 
    destinationData=0x7f129b0b0000)
    at ../../third_party/WebKit/Source/WebCore/platform/graphics/GraphicsContext3D.cpp:1545
#1  0x00007f12af6c5d2a in WebCore::GraphicsContext3D::getImageData (
    this=0x7f129d75c5c0, image=0x7f129e03d780, format=6407, type=5126, 
    premultiplyAlpha=false, ignoreGammaAndColorProfile=false, outputVector=...)
    at ../../third_party/WebKit/Source/WebCore/platform/graphics/skia/GraphicsContext3DSkia.cpp:86
#2  0x00007f12af61cbdc in WebCore::GraphicsContext3D::extractImageData (
    this=0x7f129d75c5c0, image=0x7f129e03d780, format=6407, type=5126, 
    flipY=false, premultiplyAlpha=false, ignoreGammaAndColorProfile=false, 
    data=...)
    at ../../third_party/WebKit/Source/WebCore/platform/graphics/GraphicsContext3D.cpp:173
#3  0x00007f12ad9a4685 in WebCore::WebGLRenderingContext::texSubImage2DImpl (
    this=0x7f129dfe8580, target=3553, level=0, xoffset=0, yoffset=0, 
    format=6407, type=5126, image=0x7f129e03d780, flipY=false, 
    premultiplyAlpha=false, ec=@0x7fff26b6181c: 0)
    at ../../third_party/WebKit/Source/WebCore/html/canvas/WebGLRenderingContext.cpp:3725
#4  0x00007f12ad9a4d93 in WebCore::WebGLRenderingContext::texSubImage2D (
    this=0x7f129dfe8580, target=3553, level=0, xoffset=0, yoffset=0, 
    format=6407, type=5126, canvas=0x7f129e041400, ec=@0x7fff26b6181c: 0)
    at ../../third_party/WebKit/Source/WebCore/html/canvas/WebGLRenderingContext.cpp:3809

This test suite is testing operations such as uploading an HTMLCanvasElement via texImage2D to a format and type of RGB and FLOAT. These code paths haven&apos;t been tested and are missing in the current code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622172</commentid>
    <comment_count>1</comment_count>
      <attachid>141540</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-11 18:20:57 -0700</bug_when>
    <thetext>Created attachment 141540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622176</commentid>
    <comment_count>2</comment_count>
      <attachid>141540</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-11 18:28:18 -0700</bug_when>
    <thetext>Comment on attachment 141540
Patch

Can we add the tests that verify this behavior at the same time as the code change, or is that infeasible?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622430</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-12 17:01:52 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 141540 [details])
&gt; Can we add the tests that verify this behavior at the same time as the code change, or is that infeasible?

It&apos;s not feasible. These tests run only on bots with real GPUS, not virtual machines or (generally) headless bots. They will be run on Chromium&apos;s GPU waterfall so there will be some automated coverage, though downstream rather than on webkit.org.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622949</commentid>
    <comment_count>4</comment_count>
      <attachid>141540</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-05-14 07:07:47 -0700</bug_when>
    <thetext>Comment on attachment 141540
Patch

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

OK.  r=me

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.cpp:715
&gt; +        const float scaleFactor = 1.0f / 255.0f;

Nit:  this could be hoisted out of the loop.

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.cpp:728
&gt; +        const float scaleFactor = 1.0f / 255.0f;

Same here.

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.cpp:1099
&gt; +        float scaleFactor = 1.0f / (source[3] ? source[3] : 1.0f);

Might be clearer as
  float scaleFactor = source[3] ? 1.0f / source[3] : 1.0f;

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.cpp:1137
&gt; +        float scaleFactor = 1.0f / (source[3] ? source[3] : 1.0f);

Same here.

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.cpp:1178
&gt; +        float scaleFactor = 1.0f / (source[3] ? source[3] : 1.0f);

Same here.

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.cpp:1209
&gt; +        float scaleFactor = 1.0f / (source[3] ? source[3] : 1.0f);

Same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623066</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-14 10:10:40 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 141540 [details] [details])
&gt; &gt; Can we add the tests that verify this behavior at the same time as the code change, or is that infeasible?
&gt; 
&gt; It&apos;s not feasible. These tests run only on bots with real GPUS, not virtual machines or (generally) headless bots. They will be run on Chromium&apos;s GPU waterfall so there will be some automated coverage, though downstream rather than on webkit.org.

If we can&apos;t get that test, can we at least add a test in this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624402</commentid>
    <comment_count>6</comment_count>
      <attachid>142030</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-15 12:42:46 -0700</bug_when>
    <thetext>Created attachment 142030
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624403</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-15 12:43:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 141540 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=141540&amp;action=review
&gt; 
&gt; OK.  r=me
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext3D.cpp:715
&gt; &gt; +        const float scaleFactor = 1.0f / 255.0f;
&gt; 
&gt; Nit:  this could be hoisted out of the loop.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext3D.cpp:728
&gt; &gt; +        const float scaleFactor = 1.0f / 255.0f;
&gt; 
&gt; Same here.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext3D.cpp:1099
&gt; &gt; +        float scaleFactor = 1.0f / (source[3] ? source[3] : 1.0f);
&gt; 
&gt; Might be clearer as
&gt;   float scaleFactor = source[3] ? 1.0f / source[3] : 1.0f;
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext3D.cpp:1137
&gt; &gt; +        float scaleFactor = 1.0f / (source[3] ? source[3] : 1.0f);
&gt; 
&gt; Same here.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext3D.cpp:1178
&gt; &gt; +        float scaleFactor = 1.0f / (source[3] ? source[3] : 1.0f);
&gt; 
&gt; Same here.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext3D.cpp:1209
&gt; &gt; +        float scaleFactor = 1.0f / (source[3] ? source[3] : 1.0f);
&gt; 
&gt; Same here.

Thanks for your review. Cleanups applied in patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624409</commentid>
    <comment_count>8</comment_count>
      <attachid>142030</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-15 12:44:39 -0700</bug_when>
    <thetext>Comment on attachment 142030
Patch for landing

Absolutely no test at all?  How is anyone else supposed to patch this code without regressing this behavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624415</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-15 12:48:43 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 142030 [details])
&gt; Absolutely no test at all?  How is anyone else supposed to patch this code without regressing this behavior?

Regressions will be caught by developers running the WebGL conformance tests locally on their machine, or in automated fashion on the Chromium GPU waterfall. We could add GPU bots to test these code paths on build.webkit.org. This is a lot of work however and should not block fixing of an issue for which tests exist in a canonical place (even if they aren&apos;t, unfortunately, layout tests).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624430</commentid>
    <comment_count>10</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-05-15 12:57:02 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 142030 [details] [details])
&gt; &gt; Absolutely no test at all?  How is anyone else supposed to patch this code without regressing this behavior?
&gt; 
&gt; Regressions will be caught by developers running the WebGL conformance tests locally on their machine, or in automated fashion on the Chromium GPU waterfall. We could add GPU bots to test these code paths on build.webkit.org. This is a lot of work however and should not block fixing of an issue for which tests exist in a canonical place (even if they aren&apos;t, unfortunately, layout tests).

Is the issue lack of (guaranteed) support for FP32 texture formats?  Does the current version of Mesa on Chrome&apos;s DRT support them?  If so, could we turn them into layout tests, and simply mark them as Skipped on non-Chrome platforms?  Or just put the tests in platform/chromium?  If not, presumably a newer version of Mesa supports FP32, and we can just chuck it in the &quot;do this after Mesa upgrade&quot; bucket.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624463</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-15 13:18:32 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; (From update of attachment 142030 [details] [details] [details])
&gt; &gt; &gt; Absolutely no test at all?  How is anyone else supposed to patch this code without regressing this behavior?
&gt; &gt; 
&gt; &gt; Regressions will be caught by developers running the WebGL conformance tests locally on their machine, or in automated fashion on the Chromium GPU waterfall. We could add GPU bots to test these code paths on build.webkit.org. This is a lot of work however and should not block fixing of an issue for which tests exist in a canonical place (even if they aren&apos;t, unfortunately, layout tests).
&gt; 
&gt; Is the issue lack of (guaranteed) support for FP32 texture formats?  Does the current version of Mesa on Chrome&apos;s DRT support them?  If so, could we turn them into layout tests, and simply mark them as Skipped on non-Chrome platforms?  Or just put the tests in platform/chromium?  If not, presumably a newer version of Mesa supports FP32, and we can just chuck it in the &quot;do this after Mesa upgrade&quot; bucket.

Yes, the primary issue is that there are no webkit.org bots (even the Chromium bots) that would be able to reliably run these tests. I do agree that we should aim to run them, and have filed https://bugs.webkit.org/show_bug.cgi?id=86516 to track this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624471</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-15 13:23:13 -0700</bug_when>
    <thetext>I see, I wasn&apos;t aware of that restriction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624741</commentid>
    <comment_count>13</comment_count>
      <attachid>142030</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-15 17:00:10 -0700</bug_when>
    <thetext>Comment on attachment 142030
Patch for landing

Clearing flags on attachment: 142030

Committed r117191: &lt;http://trac.webkit.org/changeset/117191&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624742</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-15 17:00:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632155</commentid>
    <comment_count>15</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-05-23 16:13:03 -0700</bug_when>
    <thetext>What (if any) is the symptom of this bug in release builds?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632166</commentid>
    <comment_count>16</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-05-23 16:28:18 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; What (if any) is the symptom of this bug in release builds?

In Chrome the renderer process crashes -- the heap is corrupted by writing beyond the end of a WTF::Vector, TCMalloc catches the corruption and crashes. I didn&apos;t test in Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632185</commentid>
    <comment_count>17</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-05-23 16:45:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/11520387&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141540</attachid>
            <date>2012-05-11 18:20:57 -0700</date>
            <delta_ts>2012-05-15 12:42:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85942-20120511182056.patch</filename>
            <type>text/plain</type>
            <size>19640</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2ODMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q0YWIyNjVkMWE2OTM5
MTEzYmRkNjdmZGIwMDZkNjhlOWI2ODk4Yy4uYWVkOTRkMjhlZTFiZDExZmIwZGJlZmQwMGM5OTJl
OTMxYzJlMzAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA1LTExICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBBc3NlcnRpb24gZmFpbHVy
ZSBydW5uaW5nIE1vemlsbGEncyBXZWJHTCBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHRlc3RzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTk0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIGluY29y
cmVjdCBhc3N1bXB0aW9ucyBhYm91dCBzb3VyY2UgZm9ybWF0cyBhbmQgYnVmZmVyIHNpemVzCisg
ICAgICAgIHdoZW4gdXBsb2FkaW5nIHRvIGZsb2F0aW5nLXBvaW50IHRleHR1cmVzLiBBZGRlZCBj
b2RlIHBhdGhzCisgICAgICAgIHN1cHBvcnRpbmcgdGhlIG5lY2Vzc2FyeSBjb252ZXJzaW9ucy4K
KworICAgICAgICBUZXN0cyBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIFdlYkdMIGNvbmZvcm1hbmNl
IHN1aXRlIHdoaWNoIGNvdmVyCisgICAgICAgIHRoZXNlIG5ldyBjb2RlIHBhdGhzOyB0aGV5IHZl
cmlmeSB1cGxvYWRzIG9mIEhUTUxDYW52YXNFbGVtZW50LAorICAgICAgICBIVE1MSW1hZ2VFbGVt
ZW50LCBIVE1MVmlkZW9FbGVtZW50LCBhbmQgSW1hZ2VEYXRhIHRvCisgICAgICAgIGZsb2F0aW5n
LXBvaW50IHRleHR1cmVzLiBIb3dldmVyLCBiZWNhdXNlIGZsb2F0aW5nLXBvaW50IHRleHR1cmUK
KyAgICAgICAgc3VwcG9ydCBpcyBvcHRpb25hbCwgYW5kIGdlbmVyYWxseSBvbmx5IHN1cHBvcnRl
ZCBvbiBib3RzIHdoaWNoCisgICAgICAgIHJ1biB3aXRoIHJlYWwgR1BVcyBhbmQgbm90IGluIHZp
cnR1YWwgbWFjaGluZXMsIGl0IGlzbid0IGZlYXNpYmxlCisgICAgICAgIHRvIGluY29ycG9yYXRl
IHRoZXNlIHRlc3RzIGFzIGxheW91dCB0ZXN0cy4KKworICAgICAgICBSYW4gdGhlIG5ldyBXZWJH
TCBjb25mb3JtYW5jZSB0ZXN0cyBpbiBDaHJvbWl1bSBvbiBMaW51eDsgYWxsCisgICAgICAgIHBh
c3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZXh0cmFjdEltYWdlRGF0YSk6
CisgICAgICAgIFByb3Blcmx5IGNvbXB1dGUgc2l6ZSBvZiBkZXN0aW5hdGlvbiBidWZmZXIuCisK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICBBZGQgcGFjay91bnBhY2sgcm91dGluZXMgZm9y
IGNvbnZlcnRpbmcgUkdCQTgvQkdSQTggdG8gZmxvYXRpbmcgcG9pbnQuCisKKyAgICAgICAgKFdl
YkNvcmU6OmRvRmxvYXRpbmdQb2ludFBhY2tpbmcpOgorICAgICAgICBTdXBwb3J0IFJHQkE4IGFu
ZCBCR1JBOCBzb3VyY2UgZm9ybWF0cy4KKworICAgICAgICAoV2ViQ29yZTo6aXNGbG9hdGluZ1Bv
aW50U291cmNlKToKKyAgICAgICAgRmFjdG9yZWQgb3V0IGxvZ2ljIGZvciBhc3NlcnRpb25zLgor
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFja1BpeGVscyk6CisgICAg
ICAgIEdlbmVyYWxpemVkIGFzc2VydGlvbnMgYW5kIGxvZ2ljLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgUHJvcGVy
bHkgY29tcHV0ZSBzaXplIG9mIGRlc3RpbmF0aW9uIGJ1ZmZlci4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6CisgICAgICAgIFByb3Blcmx5IGNv
bXB1dGUgc2l6ZSBvZiBkZXN0aW5hdGlvbiBidWZmZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEpOgorICAgICAgICBQcm9wZXJseSBjb21wdXRl
IHNpemUgb2YgZGVzdGluYXRpb24gYnVmZmVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6CisgICAgICAgIFByb3Blcmx5IGNvbXB1dGUg
c2l6ZSBvZiBkZXN0aW5hdGlvbiBidWZmZXIuCisKIDIwMTItMDUtMTEgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBDb21jYXN0IHdlYnNpdGUgZGlzcGxh
eXMgYm90dG9tIG9mIHBhZ2Ugd2hlbiBsb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAppbmRleCBjMWIzNmY2MDQ1
MDNhZTQyYzQzNDg3MGZjYjc1NzFmZGFjM2JiZWE4Li4zMGFmNTM3NTEwNDMyNzU0NmFiODMzYzhh
YTQzNDEzODhkYzg0YTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCkBAIC0yMDAsOCArMjAwLDEzIEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0M0Q6OmV4dHJhY3RJbWFnZURhdGEoSW1hZ2VEYXRhKiBpbWFnZURhdGEs
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbnQgd2lkdGggPSBpbWFnZURhdGEtPndpZHRo
KCk7CiAgICAgaW50IGhlaWdodCA9IGltYWdlRGF0YS0+aGVpZ2h0KCk7Ci0gICAgaW50IGRhdGFC
eXRlcyA9IHdpZHRoICogaGVpZ2h0ICogNDsKLSAgICBkYXRhLnJlc2l6ZShkYXRhQnl0ZXMpOwor
CisgICAgdW5zaWduZWQgaW50IHBhY2tlZFNpemU7CisgICAgLy8gT3V0cHV0IGRhdGEgaXMgdGln
aHRseSBwYWNrZWQgKGFsaWdubWVudCA9PSAxKS4KKyAgICBpZiAoY29tcHV0ZUltYWdlU2l6ZUlu
Qnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCAxLCAmcGFja2VkU2l6ZSwgMCkgIT0g
R3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ZGF0YS5yZXNpemUocGFja2VkU2l6ZSk7CisKICAgICBpZiAoIXBhY2tQaXhlbHMoaW1hZ2VEYXRh
LT5kYXRhKCktPmRhdGEoKSwKICAgICAgICAgICAgICAgICAgICAgU291cmNlRm9ybWF0UkdCQTgs
CiAgICAgICAgICAgICAgICAgICAgIHdpZHRoLApAQCAtNzA0LDYgKzcwOSwzMiBAQCB2b2lkIHVu
cGFja09uZVJvd09mQTE2QmlnVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90
KiBkZXN0aW5hdGlvbiwgdQogICAgIH0KIH0KIAordm9pZCB1bnBhY2tPbmVSb3dPZlJHQkE4VG9S
R0JBMzJGKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
cGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSAx
LjBmIC8gMjU1LjBmOworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXSAqIHNjYWxl
RmFjdG9yOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9y
OworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yOworICAg
ICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVszXSAqIHNjYWxlRmFjdG9yOworICAgICAgICBz
b3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9Cit9CisKK3ZvaWQg
dW5wYWNrT25lUm93T2ZCR1JBOFRvUkdCQTMyRihjb25zdCB1aW50OF90KiBzb3VyY2UsIGZsb2F0
KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGNvbnN0
IGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIDI1NS4wZjsKKyAgICAgICAgZGVzdGluYXRpb25b
MF0gPSBzb3VyY2VbMl0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBz
b3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2Vb
MF0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSBzb3VyY2VbM10gKiBz
Y2FsZUZhY3RvcjsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9
IDQ7CisgICAgfQorfQorCiB2b2lkIHVucGFja09uZVJvd09mUkdCMzJGVG9SR0JBMzJGKGNvbnN0
IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1Bl
clJvdykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsg
KytpKSB7CkBAIC0xMDYyLDYgKzEwOTMsMzEgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9S
R0IzMkZQcmVtdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXQKICAg
ICB9CiB9CiAKK3ZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvUkdCMzJGVW5tdWx0aXBseShjb25z
dCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQ
ZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7
ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAoc291cmNlWzNdID8g
c291cmNlWzNdIDogMS4wZik7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICog
c2NhbGVGYWN0b3I7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdICogc2NhbGVG
YWN0b3I7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzJdICogc2NhbGVGYWN0b3I7
CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSAzOworICAgIH0K
K30KKworLy8gVXNlZCBvbmx5IGR1cmluZyBSR0JBOCBvciBCR1JBOCAtPiBmbG9hdGluZy1wb2lu
dCB1cGxvYWRzLgordm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SR0JBMzJGKGNvbnN0IGZsb2F0
KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7
CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOworICAgICAgICBkZXN0aW5hdGlv
blsxXSA9IHNvdXJjZVsxXTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMl07Cisg
ICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzNdOworICAgICAgICBzb3VyY2UgKz0gNDsK
KyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9Cit9CisKIHZvaWQgcGFja09uZVJvd09m
UkdCQTMyRlRvUkdCQTMyRlByZW11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBk
ZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKICAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CkBAIC0xMDc1LDYgKzExMzEs
MTkgQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SR0JBMzJGUHJlbXVsdGlwbHkoY29uc3Qg
ZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmEKICAgICB9CiB9CiAKK3ZvaWQgcGFja09uZVJv
d09mUkdCQTMyRlRvUkdCQTMyRlVubXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZmxvYXQg
c2NhbGVGYWN0b3IgPSAxLjBmIC8gKHNvdXJjZVszXSA/IHNvdXJjZVszXSA6IDEuMGYpOworICAg
ICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yOworICAgICAgICBk
ZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9yOworICAgICAgICBkZXN0aW5h
dGlvblsyXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yOworICAgICAgICBkZXN0aW5hdGlvblsz
XSA9IHNvdXJjZVszXTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9u
ICs9IDQ7CisgICAgfQorfQorCiB2b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZUb0EzMkYoY29uc3Qg
ZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVy
Um93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyAr
K2kpIHsKQEAgLTExMDMsNiArMTE3MiwxNSBAQCB2b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1Iz
MkZQcmVtdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpbwogICAg
IH0KIH0KIAordm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SMzJGVW5tdWx0aXBseShjb25zdCBm
bG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJS
b3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsr
aSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAoc291cmNlWzNdID8gc291
cmNlWzNdIDogMS4wZik7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2Nh
bGVGYWN0b3I7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSAx
OworICAgIH0KK30KIAogdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SQTMyRihjb25zdCBmbG9h
dCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cp
CiB7CkBAIC0xMTE5LDcgKzExOTcsMTggQEAgdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SQTMy
RlByZW11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGkKICAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CiAgICAgICAg
IGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdOwogICAgICAgICBkZXN0aW5hdGlvblswXSA9
IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yOwotICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNjYWxl
RmFjdG9yOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVszXTsKKyAgICAgICAgc291
cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDI7CisgICAgfQorfQorCit2b2lkIHBh
Y2tPbmVSb3dPZlJHQkEzMkZUb1JBMzJGVW5tdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBm
bG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBm
bG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAoc291cmNlWzNdID8gc291cmNlWzNdIDogMS4wZik7
CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7CisgICAg
ICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzNdOwogICAgICAgICBzb3VyY2UgKz0gNDsKICAg
ICAgICAgZGVzdGluYXRpb24gKz0gMjsKICAgICB9CkBAIC0xMzY3LDYgKzE0NTYsMTYgQEAgc3Rh
dGljIHZvaWQgZG9GbG9hdGluZ1BvaW50UGFja2luZyhjb25zdCB2b2lkKiBzb3VyY2VEYXRhLAog
ewogICAgIHN3aXRjaCAoc291cmNlRGF0YUZvcm1hdCkgewogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlNvdXJjZUZvcm1hdFJHQkE4OiB7CisgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VF
bGVtZW50c1BlclJvdyA9IGNvbXB1dGVTb3VyY2VFbGVtZW50c1BlclJvdzx1aW50OF90Pih3aWR0
aCwgNCwgc291cmNlVW5wYWNrQWxpZ25tZW50KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNr
aW5nPHVpbnQ4X3QsIGZsb2F0LCBmbG9hdD4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNv
dXJjZURhdGEpLCB1bnBhY2tPbmVSb3dPZlJHQkE4VG9SR0JBMzJGLCB3aWR0aCwgaGVpZ2h0LCBz
b3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCByb3dQYWNraW5nRnVuYywgZGVz
dGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEJHUkE4OiB7CisgICAgICAgIHVuc2ln
bmVkIGludCBzb3VyY2VFbGVtZW50c1BlclJvdyA9IGNvbXB1dGVTb3VyY2VFbGVtZW50c1BlclJv
dzx1aW50OF90Pih3aWR0aCwgNCwgc291cmNlVW5wYWNrQWxpZ25tZW50KTsKKyAgICAgICAgZG9V
bnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIGZsb2F0LCBmbG9hdD4oc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB1bnBhY2tPbmVSb3dPZkJHUkE4VG9SR0JBMzJGLCB3
aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCByb3dQ
YWNraW5nRnVuYywgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJHQkEzMkY6
IHsKICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUm93ID0gY29tcHV0ZVNv
dXJjZUVsZW1lbnRzUGVyUm93PGZsb2F0Pih3aWR0aCwgNCwgc291cmNlVW5wYWNrQWxpZ25tZW50
KTsKICAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZSA9IHN0YXRpY19jYXN0PGNvbnN0IGZsb2F0
Kj4oc291cmNlRGF0YSk7CiAgICAgICAgIGNvbnN0IGZsb2F0KiBlbmRQb2ludGVyID0gc291cmNl
ICsgaGVpZ2h0ICogc291cmNlRWxlbWVudHNQZXJSb3c7CkBAIC0xNDAzLDYgKzE1MDIsMjMgQEAg
c3RhdGljIHZvaWQgZG9GbG9hdGluZ1BvaW50UGFja2luZyhjb25zdCB2b2lkKiBzb3VyY2VEYXRh
LAogICAgIH0KIH0KIAorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorc3RhdGljIGJvb2wgaXNGbG9h
dGluZ1BvaW50U291cmNlKEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRhRm9ybWF0IGZvcm1h
dCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlNvdXJjZUZvcm1hdFJHQkEzMkY6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNl
Rm9ybWF0UkdCMzJGOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJB
MzJGOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFIzMkY6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QTMyRjoKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKyNl
bmRpZgorCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNz
Q29udGV4dDNEOjpTb3VyY2VEYXRhRm9ybWF0IHNvdXJjZURhdGFGb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB3aWR0aCwKQEAgLTE1MzksMTYg
KzE2NTUsMjEgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6cGFja1BpeGVscyhjb25zdCB1aW50
OF90KiBzb3VyY2VEYXRhLAogICAgIH0KICAgICBjYXNlIEZMT0FUOiB7CiAgICAgICAgIC8vIE9w
ZW5HTCBFUywgYW5kIHRoZXJlZm9yZSBXZWJHTCwgcmVxdWlyZSB0aGF0IHRoZSBmb3JtYXQgYW5k
Ci0gICAgICAgIC8vIGludGVybmFsZm9ybWF0IGJlIGlkZW50aWNhbCwgd2hpY2ggaW1wbGllcyB0
aGF0IHRoZSBzb3VyY2UgYW5kCi0gICAgICAgIC8vIGRlc3RpbmF0aW9uIGZvcm1hdHMgd2lsbCBi
b3RoIGJlIGZsb2F0aW5nLXBvaW50IGluIHRoaXMgYnJhbmNoIC0tIGF0Ci0gICAgICAgIC8vIGxl
YXN0LCB1bnRpbCBXZWJLaXQgc3VwcG9ydHMgZmxvYXRpbmctcG9pbnQgaW1hZ2UgZm9ybWF0cyBu
YXRpdmVseS4KLSAgICAgICAgQVNTRVJUKHNvdXJjZURhdGFGb3JtYXQgPT0gU291cmNlRm9ybWF0
UkdCQTMyRiB8fCBzb3VyY2VEYXRhRm9ybWF0ID09IFNvdXJjZUZvcm1hdFJHQjMyRgotICAgICAg
ICAgICAgICAgfHwgc291cmNlRGF0YUZvcm1hdCA9PSBTb3VyY2VGb3JtYXRSQTMyRiB8fCBzb3Vy
Y2VEYXRhRm9ybWF0ID09IFNvdXJjZUZvcm1hdFIzMkYKLSAgICAgICAgICAgICAgIHx8IHNvdXJj
ZURhdGFGb3JtYXQgPT0gU291cmNlRm9ybWF0QTMyRik7Ci0gICAgICAgIC8vIEJlY2F1c2UgV2Vi
S2l0IGRvZXNuJ3QgdXNlIGZsb2F0aW5nLXBvaW50IGNvbG9yIGNoYW5uZWxzIGZvciBhbnl0aGlu
ZwotICAgICAgICAvLyBpbnRlcm5hbGx5LCB0aGVyZSdzIG5vIGNoYW5jZSB3ZSBoYXZlIHRvIGRv
IGEgKGxvc3N5KSB1bm11bHRpcGx5Ci0gICAgICAgIC8vIG9wZXJhdGlvbi4KLSAgICAgICAgQVNT
RVJUKGFscGhhT3AgPT0gQWxwaGFEb05vdGhpbmcgfHwgYWxwaGFPcCA9PSBBbHBoYURvUHJlbXVs
dGlwbHkpOworICAgICAgICAvLyBpbnRlcm5hbGZvcm1hdCBiZSBpZGVudGljYWwuIFRoaXMgbWVh
bnMgdGhhdCB3aGVuZXZlciB0aGUKKyAgICAgICAgLy8gZGV2ZWxvcGVyIHN1cHBsaWVzIGFuIEFy
cmF5QnVmZmVyVmlldyBvbiB0aGlzIGNvZGUgcGF0aCwKKyAgICAgICAgLy8gdGhlIHNvdXJjZSBk
YXRhIHdpbGwgYmUgaW4gYSBmbG9hdGluZy1wb2ludCBmb3JtYXQuCisgICAgICAgIC8vCisgICAg
ICAgIC8vIFRoZSBvbmx5IHRpbWUgdGhlIHNvdXJjZSBkYXRhIHdpbGwgbm90IGJlIGZsb2F0aW5n
LXBvaW50IGlzCisgICAgICAgIC8vIHdoZW4gdXBsb2FkaW5nIGEgRE9NIGVsZW1lbnQgb3IgSW1h
Z2VEYXRhIGFzIGEKKyAgICAgICAgLy8gZmxvYXRpbmctcG9pbnQgdGV4dHVyZS4gT25seSBSR0JB
OCBhbmQgQkdSQTggYXJlIGhhbmRsZWQgaW4KKyAgICAgICAgLy8gdGhpcyBjYXNlLgorICAgICAg
ICBBU1NFUlQoaXNGbG9hdGluZ1BvaW50U291cmNlKHNvdXJjZURhdGFGb3JtYXQpCisgICAgICAg
ICAgICAgICB8fCBzb3VyY2VEYXRhRm9ybWF0ID09IFNvdXJjZUZvcm1hdFJHQkE4CisgICAgICAg
ICAgICAgICB8fCBzb3VyY2VEYXRhRm9ybWF0ID09IFNvdXJjZUZvcm1hdEJHUkE4KTsKKyAgICAg
ICAgLy8gV2hlbiB1cGxvYWRpbmcgYSBjYW52YXMgaW50byBhIGZsb2F0aW5nLXBvaW50IHRleHR1
cmUsCisgICAgICAgIC8vIHVubXVsdGlwbGljYXRpb24gbWF5IGJlIG5lY2Vzc2FyeS4KKyAgICAg
ICAgQVNTRVJUKChhbHBoYU9wID09IEFscGhhRG9Ob3RoaW5nIHx8IGFscGhhT3AgPT0gQWxwaGFE
b1ByZW11bHRpcGx5KQorICAgICAgICAgICAgICAgfHwgIWlzRmxvYXRpbmdQb2ludFNvdXJjZShz
b3VyY2VEYXRhRm9ybWF0KSk7CiAgICAgICAgIC8vIEZvciB0aGUgc291cmNlIGZvcm1hdHMgd2l0
aCBhbiBldmVuIG51bWJlciBvZiBjaGFubmVscyAoUkdCQTMyRiwKICAgICAgICAgLy8gUkEzMkYp
IGl0IGlzIGd1YXJhbnRlZWQgdGhhdCB0aGUgcGl4ZWwgZGF0YSBpcyB0aWdodGx5IHBhY2tlZCBi
ZWNhdXNlCiAgICAgICAgIC8vIHVucGFjayBhbGlnbm1lbnQgPD0gc2l6ZW9mKGZsb2F0KSAqIG51
bWJlciBvZiBjaGFubmVscy4KQEAgLTE1NzAsMTQgKzE2OTEsMjUgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHQzRDo6cGFja1BpeGVscyhjb25zdCB1aW50OF90KiBzb3VyY2VEYXRhLAogICAgICAgICAg
ICAgY2FzZSBBbHBoYURvUHJlbXVsdGlwbHk6CiAgICAgICAgICAgICAgICAgZG9GbG9hdGluZ1Bv
aW50UGFja2luZyhzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBz
b3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCBwYWNrT25lUm93T2ZSR0JBMzJGVG9S
R0IzMkZQcmVtdWx0aXBseSwgMyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgY2FzZSBBbHBoYURvVW5tdWx0aXBseToKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5n
UG9pbnRQYWNraW5nKHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIHBhY2tPbmVSb3dPZlJHQkEzMkZU
b1JHQjMyRlVubXVsdGlwbHksIDMpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUkdCQToKLSAgICAgICAgICAg
IC8vIEFscGhhRG9Ob3RoaW5nIGlzIGhhbmRsZWQgYWJvdmUgd2l0aCBmYXN0IHBhdGguCi0gICAg
ICAgICAgICBBU1NFUlQoYWxwaGFPcCA9PSBBbHBoYURvUHJlbXVsdGlwbHkpOwotICAgICAgICAg
ICAgZG9GbG9hdGluZ1BvaW50UGFja2luZyhzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCBwYWNrT25l
Um93T2ZSR0JBMzJGVG9SR0JBMzJGUHJlbXVsdGlwbHksIDQpOworICAgICAgICAgICAgLy8gQWxw
aGFEb05vdGhpbmcgZm9yIFJHQkEzMkYgLT4gUkdCQSBpcyBoYW5kbGVkIGFib3ZlIHdpdGggZmFz
dCBwYXRoLgorICAgICAgICAgICAgQVNTRVJUKGFscGhhT3AgIT0gQWxwaGFEb05vdGhpbmcgfHwg
c291cmNlRGF0YUZvcm1hdCAhPSBTb3VyY2VGb3JtYXRSR0JBMzJGKTsKKyAgICAgICAgICAgIHN3
aXRjaCAoYWxwaGFPcCkgeworICAgICAgICAgICAgY2FzZSBBbHBoYURvTm90aGluZzoKKyAgICAg
ICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nKHNvdXJjZURhdGEsIHNvdXJjZURhdGFG
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24s
IHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JHQkEzMkYsIDQpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBBbHBoYURvUHJlbXVsdGlwbHk6CisgICAgICAgICAgICAgICAg
ZG9GbG9hdGluZ1BvaW50UGFja2luZyhzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCBwYWNrT25lUm93
T2ZSR0JBMzJGVG9SR0JBMzJGUHJlbXVsdGlwbHksIDQpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBBbHBoYURvVW5tdWx0aXBseToKKyAgICAgICAgICAgICAgICBk
b0Zsb2F0aW5nUG9pbnRQYWNraW5nKHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIHBhY2tPbmVSb3dP
ZlJHQkEzMkZUb1JHQkEzMkZVbm11bHRpcGx5LCA0KTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFMUEhBOgog
ICAgICAgICAgICAgLy8gRnJvbSB0aGUgZGVza3RvcCBPcGVuR0wgY29udmVyc2lvbiBydWxlcyAo
T3BlbkdMIDIuMQpAQCAtMTU5Niw4ICsxNzI4LDkgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
cGFja1BpeGVscyhjb25zdCB1aW50OF90KiBzb3VyY2VEYXRhLAogICAgICAgICAgICAgY2FzZSBB
bHBoYURvUHJlbXVsdGlwbHk6CiAgICAgICAgICAgICAgICAgZG9GbG9hdGluZ1BvaW50UGFja2lu
Zyhzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBh
Y2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SMzJGUHJlbXVs
dGlwbHksIDEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGNhc2Ug
QWxwaGFEb1VubXVsdGlwbHk6CisgICAgICAgICAgICAgICAgZG9GbG9hdGluZ1BvaW50UGFja2lu
Zyhzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBh
Y2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SMzJGVW5tdWx0
aXBseSwgMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBMVU1JTkFOQ0VfQUxQSEE6CkBAIC0xNjExLDggKzE3
NDQsOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZURhdGEsCiAgICAgICAgICAgICBjYXNlIEFscGhhRG9QcmVtdWx0aXBseToKICAgICAg
ICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nKHNvdXJjZURhdGEsIHNvdXJjZURhdGFG
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24s
IHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JBMzJGUHJlbXVsdGlwbHksIDIpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFEb1VubXVsdGlwbHk6CisgICAg
ICAgICAgICAgICAgZG9GbG9hdGluZ1BvaW50UGFja2luZyhzb3VyY2VEYXRhLCBzb3VyY2VEYXRh
Rm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9u
LCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SQTMyRlVubXVsdGlwbHksIDIpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5kZXggOGQzOTY5MjE0MThkZDMxZTEw
NDMwYTA5NzZhY2VmZjI2OThhMDMwNC4uMGZhMjc0NWUwMWUxN2M4NzM0NGRkMGZlYTc1OWI4MjI2
ZDVjZDdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKQEAgLTE4NSw3ICsx
ODUsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFn
ZSwgdW5zaWduZWQgaW50IGZvcm1hdCwgdW5zaWduZWQKICAgICAgICAgICAgICsrc3JjVW5wYWNr
QWxpZ25tZW50OwogICAgIH0KIAotICAgIG91dHB1dFZlY3Rvci5yZXNpemUod2lkdGggKiBoZWln
aHQgKiA0KTsKKyAgICB1bnNpZ25lZCBpbnQgcGFja2VkU2l6ZTsKKyAgICAvLyBPdXRwdXQgZGF0
YSBpcyB0aWdodGx5IHBhY2tlZCAoYWxpZ25tZW50ID09IDEpLgorICAgIGlmIChjb21wdXRlSW1h
Z2VTaXplSW5CeXRlcyhmb3JtYXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIDEsICZwYWNrZWRTaXpl
LCAwKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBvdXRwdXRWZWN0b3IucmVzaXplKHBhY2tlZFNpemUpOworCiAgICAgcmV0dXJuIHBh
Y2tQaXhlbHMoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShpbWFnZVN1cmZhY2UuZ2V0KCkp
LCBTb3VyY2VGb3JtYXRCR1JBOCwKICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0
LCBzcmNVbnBhY2tBbGlnbm1lbnQsIGZvcm1hdCwgdHlwZSwgYWxwaGFPcCwgb3V0cHV0VmVjdG9y
LmRhdGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDU3YWJlNzFhMzY4ZGQ5OGUx
MTgxMzEzMTdjZTQ5ZjIwOWI2NmUzNzMuLmUwNDRiOGQ5YTc3ZGMwMTk5ODRmNjU4OGU5YjAyZTIz
ZDUzYTJhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC0yNDAsNyArMjQwLDEzIEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAgaWYg
KCFwaXhlbERhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjb25zdCBVSW50OCogcmdi
YSA9IENGRGF0YUdldEJ5dGVQdHIocGl4ZWxEYXRhLmdldCgpKTsKLSAgICBvdXRwdXRWZWN0b3Iu
cmVzaXplKHdpZHRoICogaGVpZ2h0ICogNCk7CisKKyAgICB1bnNpZ25lZCBpbnQgcGFja2VkU2l6
ZTsKKyAgICAvLyBPdXRwdXQgZGF0YSBpcyB0aWdodGx5IHBhY2tlZCAoYWxpZ25tZW50ID09IDEp
LgorICAgIGlmIChjb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhmb3JtYXQsIHR5cGUsIHdpZHRoLCBo
ZWlnaHQsIDEsICZwYWNrZWRTaXplLCAwKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1Ip
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBvdXRwdXRWZWN0b3IucmVzaXplKHBhY2tlZFNp
emUpOworCiAgICAgdW5zaWduZWQgaW50IHNyY1VucGFja0FsaWdubWVudCA9IDA7CiAgICAgc2l6
ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KGNnSW1hZ2UpOwogICAgIHVu
c2lnbmVkIGludCBwYWRkaW5nID0gYnl0ZXNQZXJSb3cgLSBiaXRzUGVyUGl4ZWwgLyA4ICogd2lk
dGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzRFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4IGUxYzJiNDk0MmFiNmJlNjJkMjgzYTQ0ZDU0
MzQ3NzA1NjljNmUxZjQuLmFmOTVlNGY3NDk4YTdmN2M2YmEzMzIyYmE0MDgxMjRjZDU4MWNiZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC0xNjE0LDcgKzE2MTQsMTMgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKICAgICBBbHBoYU9wIG5l
ZWRlZEFscGhhT3AgPSBBbHBoYURvTm90aGluZzsKICAgICBpZiAocHJlbXVsdGlwbHlBbHBoYSkK
ICAgICAgICAgbmVlZGVkQWxwaGFPcCA9IEFscGhhRG9QcmVtdWx0aXBseTsKLSAgICBvdXRwdXRW
ZWN0b3IucmVzaXplKG5hdGl2ZUltYWdlLmJ5dGVDb3VudCgpKTsKKworICAgIHVuc2lnbmVkIGlu
dCBwYWNrZWRTaXplOworICAgIC8vIE91dHB1dCBkYXRhIGlzIHRpZ2h0bHkgcGFja2VkIChhbGln
bm1lbnQgPT0gMSkuCisgICAgaWYgKGNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwgdHlw
ZSwgaW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSwgMSwgJnBhY2tlZFNpemUsIDApICE9
IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IG91dHB1dFZlY3Rvci5yZXNpemUocGFja2VkU2l6ZSk7CisKICAgICByZXR1cm4gcGFja1BpeGVs
cyhuYXRpdmVJbWFnZS5iaXRzKCksIFNvdXJjZUZvcm1hdEJHUkE4LCBpbWFnZS0+d2lkdGgoKSwg
aW1hZ2UtPmhlaWdodCgpLCAwLCBmb3JtYXQsIHR5cGUsIG5lZWRlZEFscGhhT3AsIG91dHB1dFZl
Y3Rvci5kYXRhKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKaW5kZXggZjM0
MTE1MmQwYmU1NDNmYTg3Zjk1MDdjMDZhN2U5MmVhY2QxMWZkNC4uMDE5MDM3YzQ1NzU0NTg4ZTI4
NjMzMzc5N2ZjODgwYzg4NmY0Y2RmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcApA
QCAtNzksNyArNzksMTEgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKElt
YWdlKiBpbWFnZSwKICAgICBjb25zdCBTa0JpdG1hcCYgc2tpYUltYWdlUmVmID0gc2tpYUltYWdl
LT5iaXRtYXAoKTsKICAgICBTa0F1dG9Mb2NrUGl4ZWxzIGxvY2soc2tpYUltYWdlUmVmKTsKICAg
ICBBU1NFUlQoc2tpYUltYWdlUmVmLnJvd0J5dGVzKCkgPT0gc2tpYUltYWdlUmVmLndpZHRoKCkg
KiA0KTsKLSAgICBvdXRwdXRWZWN0b3IucmVzaXplKHNraWFJbWFnZVJlZi5yb3dCeXRlcygpICog
c2tpYUltYWdlUmVmLmhlaWdodCgpKTsKKyAgICB1bnNpZ25lZCBpbnQgcGFja2VkU2l6ZTsKKyAg
ICAvLyBPdXRwdXQgZGF0YSBpcyB0aWdodGx5IHBhY2tlZCAoYWxpZ25tZW50ID09IDEpLgorICAg
IGlmIChjb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhmb3JtYXQsIHR5cGUsIHNraWFJbWFnZVJlZi53
aWR0aCgpLCBza2lhSW1hZ2VSZWYuaGVpZ2h0KCksIDEsICZwYWNrZWRTaXplLCAwKSAhPSBHcmFw
aGljc0NvbnRleHQzRDo6Tk9fRVJST1IpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBvdXRw
dXRWZWN0b3IucmVzaXplKHBhY2tlZFNpemUpOwogICAgIHJldHVybiBwYWNrUGl4ZWxzKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNraWFJbWFnZVJlZi5nZXRQaXhlbHMoKSksCiAg
ICAgICAgICAgICAgICAgICAgICAgU0tfQjMyX1NISUZUID8gU291cmNlRm9ybWF0UkdCQTggOiBT
b3VyY2VGb3JtYXRCR1JBOCwKICAgICAgICAgICAgICAgICAgICAgICBza2lhSW1hZ2VSZWYud2lk
dGgoKSwgc2tpYUltYWdlUmVmLmhlaWdodCgpLCAwLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142030</attachid>
            <date>2012-05-15 12:42:46 -0700</date>
            <delta_ts>2012-05-15 17:00:09 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-85942-20120515124245.patch</filename>
            <type>text/plain</type>
            <size>19663</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3MTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U5OWFkMzI5MDc4MjEx
MzZiODBlMDM2ZWRhYTgyZTE2YjQ5YWY0MC4uNzIyZTllN2NiODEwZGE5MGNkNjYyYzliYjRlM2M2
ZmVhMTliMjAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA1LTE1ICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBBc3NlcnRpb24gZmFpbHVy
ZSBydW5uaW5nIE1vemlsbGEncyBXZWJHTCBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHRlc3RzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTk0MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFN0ZXBoZW4gV2hpdGUuCisKKyAgICAgICAgRml4ZWQgaW5jb3Jy
ZWN0IGFzc3VtcHRpb25zIGFib3V0IHNvdXJjZSBmb3JtYXRzIGFuZCBidWZmZXIgc2l6ZXMKKyAg
ICAgICAgd2hlbiB1cGxvYWRpbmcgdG8gZmxvYXRpbmctcG9pbnQgdGV4dHVyZXMuIEFkZGVkIGNv
ZGUgcGF0aHMKKyAgICAgICAgc3VwcG9ydGluZyB0aGUgbmVjZXNzYXJ5IGNvbnZlcnNpb25zLgor
CisgICAgICAgIFRlc3RzIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgV2ViR0wgY29uZm9ybWFuY2Ug
c3VpdGUgd2hpY2ggY292ZXIKKyAgICAgICAgdGhlc2UgbmV3IGNvZGUgcGF0aHM7IHRoZXkgdmVy
aWZ5IHVwbG9hZHMgb2YgSFRNTENhbnZhc0VsZW1lbnQsCisgICAgICAgIEhUTUxJbWFnZUVsZW1l
bnQsIEhUTUxWaWRlb0VsZW1lbnQsIGFuZCBJbWFnZURhdGEgdG8KKyAgICAgICAgZmxvYXRpbmct
cG9pbnQgdGV4dHVyZXMuIEhvd2V2ZXIsIGJlY2F1c2UgZmxvYXRpbmctcG9pbnQgdGV4dHVyZQor
ICAgICAgICBzdXBwb3J0IGlzIG9wdGlvbmFsLCBhbmQgZ2VuZXJhbGx5IG9ubHkgc3VwcG9ydGVk
IG9uIGJvdHMgd2hpY2gKKyAgICAgICAgcnVuIHdpdGggcmVhbCBHUFVzIGFuZCBub3QgaW4gdmly
dHVhbCBtYWNoaW5lcywgaXQgaXNuJ3QgZmVhc2libGUKKyAgICAgICAgdG8gaW5jb3Jwb3JhdGUg
dGhlc2UgdGVzdHMgYXMgbGF5b3V0IHRlc3RzLgorCisgICAgICAgIFJhbiB0aGUgbmV3IFdlYkdM
IGNvbmZvcm1hbmNlIHRlc3RzIGluIENocm9taXVtIG9uIExpbnV4OyBhbGwKKyAgICAgICAgcGFz
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpleHRyYWN0SW1hZ2VEYXRhKToK
KyAgICAgICAgUHJvcGVybHkgY29tcHV0ZSBzaXplIG9mIGRlc3RpbmF0aW9uIGJ1ZmZlci4KKwor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIEFkZCBwYWNrL3VucGFjayByb3V0aW5lcyBmb3Ig
Y29udmVydGluZyBSR0JBOC9CR1JBOCB0byBmbG9hdGluZyBwb2ludC4KKworICAgICAgICAoV2Vi
Q29yZTo6ZG9GbG9hdGluZ1BvaW50UGFja2luZyk6CisgICAgICAgIFN1cHBvcnQgUkdCQTggYW5k
IEJHUkE4IHNvdXJjZSBmb3JtYXRzLgorCisgICAgICAgIChXZWJDb3JlOjppc0Zsb2F0aW5nUG9p
bnRTb3VyY2UpOgorICAgICAgICBGYWN0b3JlZCBvdXQgbG9naWMgZm9yIGFzc2VydGlvbnMuCisK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwYWNrUGl4ZWxzKToKKyAgICAg
ICAgR2VuZXJhbGl6ZWQgYXNzZXJ0aW9ucyBhbmQgbG9naWMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEpOgorICAgICAgICBQcm9wZXJs
eSBjb21wdXRlIHNpemUgb2YgZGVzdGluYXRpb24gYnVmZmVyLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgUHJvcGVybHkgY29t
cHV0ZSBzaXplIG9mIGRlc3RpbmF0aW9uIGJ1ZmZlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6CisgICAgICAgIFByb3Blcmx5IGNvbXB1dGUg
c2l6ZSBvZiBkZXN0aW5hdGlvbiBidWZmZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgUHJvcGVybHkgY29tcHV0ZSBz
aXplIG9mIGRlc3RpbmF0aW9uIGJ1ZmZlci4KKwogMjAxMi0wNS0xNSAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgT3B0aW1pemUgc2F2ZS9yZXN0b3JlIHdpdGggbm8g
ZHJhd2luZyBvcGVyYXRpb25zIGJldHdlZW4gdGhlbSAoc2hvd3MgdXAgb24gc29tZSBjYW52YXMg
YmVuY2htYXJrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmNwcAppbmRleCBjMWIzNmY2MDQ1MDNhZTQyYzQzNDg3MGZjYjc1
NzFmZGFjM2JiZWE4Li5mMDE1NTZiMjQzZjQ5Yjg5NWFmYWUzMGM3ZmEzNmE1MGEzNmNiYTM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwCkBAIC0yMDAsOCArMjAwLDEzIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OmV4dHJhY3RJbWFnZURhdGEoSW1hZ2VEYXRhKiBpbWFnZURhdGEsCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpbnQgd2lkdGggPSBpbWFnZURhdGEtPndpZHRoKCk7CiAgICAgaW50IGhlaWdo
dCA9IGltYWdlRGF0YS0+aGVpZ2h0KCk7Ci0gICAgaW50IGRhdGFCeXRlcyA9IHdpZHRoICogaGVp
Z2h0ICogNDsKLSAgICBkYXRhLnJlc2l6ZShkYXRhQnl0ZXMpOworCisgICAgdW5zaWduZWQgaW50
IHBhY2tlZFNpemU7CisgICAgLy8gT3V0cHV0IGRhdGEgaXMgdGlnaHRseSBwYWNrZWQgKGFsaWdu
bWVudCA9PSAxKS4KKyAgICBpZiAoY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBl
LCB3aWR0aCwgaGVpZ2h0LCAxLCAmcGFja2VkU2l6ZSwgMCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6
Ok5PX0VSUk9SKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZGF0YS5yZXNpemUocGFja2Vk
U2l6ZSk7CisKICAgICBpZiAoIXBhY2tQaXhlbHMoaW1hZ2VEYXRhLT5kYXRhKCktPmRhdGEoKSwK
ICAgICAgICAgICAgICAgICAgICAgU291cmNlRm9ybWF0UkdCQTgsCiAgICAgICAgICAgICAgICAg
ICAgIHdpZHRoLApAQCAtNzA0LDYgKzcwOSwzMiBAQCB2b2lkIHVucGFja09uZVJvd09mQTE2Qmln
VG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdQog
ICAgIH0KIH0KIAordm9pZCB1bnBhY2tPbmVSb3dPZlJHQkE4VG9SR0JBMzJGKGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93
KQoreworICAgIGNvbnN0IGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIDI1NS4wZjsKKyAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAg
IGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7CisgICAgICAgIGRlc3Rp
bmF0aW9uWzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7CisgICAgICAgIGRlc3RpbmF0aW9u
WzJdID0gc291cmNlWzJdICogc2NhbGVGYWN0b3I7CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0g
c291cmNlWzNdICogc2NhbGVGYWN0b3I7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBk
ZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKwordm9pZCB1bnBhY2tPbmVSb3dPZkJHUkE4VG9S
R0JBMzJGKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQoreworICAgIGNvbnN0IGZsb2F0IHNjYWxlRmFjdG9yID0gMS4w
ZiAvIDI1NS4wZjsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJv
dzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzJdICogc2NhbGVGYWN0
b3I7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7Cisg
ICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7CisgICAgICAg
IGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzNdICogc2NhbGVGYWN0b3I7CisgICAgICAgIHNvdXJj
ZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KK30KKwogdm9pZCB1bnBh
Y2tPbmVSb3dPZlJHQjMyRlRvUkdCQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVz
dGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7CiAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewpAQCAtMTA2Miw2ICsxMDkzLDMx
IEBAIHZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvUkdCMzJGUHJlbXVsdGlwbHkoY29uc3QgZmxv
YXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0CiAgICAgfQogfQogCit2b2lkIHBhY2tPbmVSb3dP
ZlJHQkEzMkZUb1JHQjMyRlVubXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZmxvYXQgc2Nh
bGVGYWN0b3IgPSBzb3VyY2VbM10gPyAxLjBmIC8gc291cmNlWzNdIDogMS4wZjsKKyAgICAgICAg
ZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGlu
YXRpb25bMV0gPSBzb3VyY2VbMV0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25b
Ml0gPSBzb3VyY2VbMl0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAg
ICAgIGRlc3RpbmF0aW9uICs9IDM7CisgICAgfQorfQorCisvLyBVc2VkIG9ubHkgZHVyaW5nIFJH
QkE4IG9yIEJHUkE4IC0+IGZsb2F0aW5nLXBvaW50IHVwbG9hZHMuCit2b2lkIHBhY2tPbmVSb3dP
ZlJHQkEzMkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9u
LCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBz
b3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdOworICAgICAgICBk
ZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXTsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSBzb3Vy
Y2VbM107CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSA0Owor
ICAgIH0KK30KKwogdm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SR0JBMzJGUHJlbXVsdGlwbHko
Y29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4
ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVy
Um93OyArK2kpIHsKQEAgLTEwNzUsNiArMTEzMSwxOSBAQCB2b2lkIHBhY2tPbmVSb3dPZlJHQkEz
MkZUb1JHQkEzMkZQcmVtdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGlu
YQogICAgIH0KIH0KIAordm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SR0JBMzJGVW5tdWx0aXBs
eShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBw
aXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQ
ZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSA/IDEu
MGYgLyBzb3VyY2VbM10gOiAxLjBmOworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVsw
XSAqIHNjYWxlRmFjdG9yOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXSAqIHNj
YWxlRmFjdG9yOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFj
dG9yOworICAgICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVszXTsKKyAgICAgICAgc291cmNl
ICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQorfQorCiB2b2lkIHBhY2tP
bmVSb3dPZlJHQkEzMkZUb0EzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewogICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKQEAgLTExMDMsNiArMTE3MiwxNSBAQCB2
b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1IzMkZQcmVtdWx0aXBseShjb25zdCBmbG9hdCogc291
cmNlLCBmbG9hdCogZGVzdGluYXRpbwogICAgIH0KIH0KIAordm9pZCBwYWNrT25lUm93T2ZSR0JB
MzJGVG9SMzJGVW5tdWx0aXBseShjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3Rv
ciA9IHNvdXJjZVszXSA/IDEuMGYgLyBzb3VyY2VbM10gOiAxLjBmOworICAgICAgICBkZXN0aW5h
dGlvblswXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yOworICAgICAgICBzb3VyY2UgKz0gNDsK
KyAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKKyAgICB9Cit9CiAKIHZvaWQgcGFja09uZVJvd09m
UkdCQTMyRlRvUkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1
bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewpAQCAtMTExOSw3ICsxMTk3LDE4IEBAIHZvaWQg
cGFja09uZVJvd09mUkdCQTMyRlRvUkEzMkZQcmVtdWx0aXBseShjb25zdCBmbG9hdCogc291cmNl
LCBmbG9hdCogZGVzdGluYXRpCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhl
bHNQZXJSb3c7ICsraSkgewogICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXTsK
ICAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsKLSAgICAg
ICAgZGVzdGluYXRpb25bMV0gPSBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25bMV0g
PSBzb3VyY2VbM107CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiAr
PSAyOworICAgIH0KK30KKwordm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SQTMyRlVubXVsdGlw
bHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQg
cGl4ZWxzUGVyUm93KQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxz
UGVyUm93OyArK2kpIHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gPyAx
LjBmIC8gc291cmNlWzNdIDogMS4wZjsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2Vb
MF0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbM107CiAg
ICAgICAgIHNvdXJjZSArPSA0OwogICAgICAgICBkZXN0aW5hdGlvbiArPSAyOwogICAgIH0KQEAg
LTEzNjcsNiArMTQ1NiwxNiBAQCBzdGF0aWMgdm9pZCBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nKGNv
bnN0IHZvaWQqIHNvdXJjZURhdGEsCiB7CiAgICAgc3dpdGNoIChzb3VyY2VEYXRhRm9ybWF0KSB7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdCQTg6IHsKKyAgICAg
ICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUm93ID0gY29tcHV0ZVNvdXJjZUVsZW1l
bnRzUGVyUm93PHVpbnQ4X3Q+KHdpZHRoLCA0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQpOworICAg
ICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgZmxvYXQsIGZsb2F0PihzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHVucGFja09uZVJvd09mUkdCQThUb1JH
QkEzMkYsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRh
dGEsIHJvd1BhY2tpbmdGdW5jLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0
QkdSQTg6IHsKKyAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUm93ID0gY29t
cHV0ZVNvdXJjZUVsZW1lbnRzUGVyUm93PHVpbnQ4X3Q+KHdpZHRoLCA0LCBzb3VyY2VVbnBhY2tB
bGlnbm1lbnQpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgZmxvYXQs
IGZsb2F0PihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHVucGFja09u
ZVJvd09mQkdSQThUb1JHQkEzMkYsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUm93
LCBkZXN0aW5hdGlvbkRhdGEsIHJvd1BhY2tpbmdGdW5jLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVy
UGl4ZWwpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6U291cmNlRm9ybWF0UkdCQTMyRjogewogICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxl
bWVudHNQZXJSb3cgPSBjb21wdXRlU291cmNlRWxlbWVudHNQZXJSb3c8ZmxvYXQ+KHdpZHRoLCA0
LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQpOwogICAgICAgICBjb25zdCBmbG9hdCogc291cmNlID0g
c3RhdGljX2Nhc3Q8Y29uc3QgZmxvYXQqPihzb3VyY2VEYXRhKTsKICAgICAgICAgY29uc3QgZmxv
YXQqIGVuZFBvaW50ZXIgPSBzb3VyY2UgKyBoZWlnaHQgKiBzb3VyY2VFbGVtZW50c1BlclJvdzsK
QEAgLTE0MDMsNiArMTUwMiwyMyBAQCBzdGF0aWMgdm9pZCBkb0Zsb2F0aW5nUG9pbnRQYWNraW5n
KGNvbnN0IHZvaWQqIHNvdXJjZURhdGEsCiAgICAgfQogfQogCisKKyNpZiAhQVNTRVJUX0RJU0FC
TEVECitzdGF0aWMgYm9vbCBpc0Zsb2F0aW5nUG9pbnRTb3VyY2UoR3JhcGhpY3NDb250ZXh0M0Q6
OlNvdXJjZURhdGFGb3JtYXQgZm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdCQTMyRjoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0IzMkY6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6U291cmNlRm9ybWF0UkEzMkY6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
U291cmNlRm9ybWF0UjMyRjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3Jt
YXRBMzJGOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorI2VuZGlmCisKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnBh
Y2tQaXhlbHMoY29uc3QgdWludDhfdCogc291cmNlRGF0YSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZURhdGFGb3JtYXQgc291cmNl
RGF0YUZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IHdpZHRoLApAQCAtMTUzOSwxNiArMTY1NSwyMSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNE
OjpwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZURhdGEsCiAgICAgfQogICAgIGNhc2Ug
RkxPQVQ6IHsKICAgICAgICAgLy8gT3BlbkdMIEVTLCBhbmQgdGhlcmVmb3JlIFdlYkdMLCByZXF1
aXJlIHRoYXQgdGhlIGZvcm1hdCBhbmQKLSAgICAgICAgLy8gaW50ZXJuYWxmb3JtYXQgYmUgaWRl
bnRpY2FsLCB3aGljaCBpbXBsaWVzIHRoYXQgdGhlIHNvdXJjZSBhbmQKLSAgICAgICAgLy8gZGVz
dGluYXRpb24gZm9ybWF0cyB3aWxsIGJvdGggYmUgZmxvYXRpbmctcG9pbnQgaW4gdGhpcyBicmFu
Y2ggLS0gYXQKLSAgICAgICAgLy8gbGVhc3QsIHVudGlsIFdlYktpdCBzdXBwb3J0cyBmbG9hdGlu
Zy1wb2ludCBpbWFnZSBmb3JtYXRzIG5hdGl2ZWx5LgotICAgICAgICBBU1NFUlQoc291cmNlRGF0
YUZvcm1hdCA9PSBTb3VyY2VGb3JtYXRSR0JBMzJGIHx8IHNvdXJjZURhdGFGb3JtYXQgPT0gU291
cmNlRm9ybWF0UkdCMzJGCi0gICAgICAgICAgICAgICB8fCBzb3VyY2VEYXRhRm9ybWF0ID09IFNv
dXJjZUZvcm1hdFJBMzJGIHx8IHNvdXJjZURhdGFGb3JtYXQgPT0gU291cmNlRm9ybWF0UjMyRgot
ICAgICAgICAgICAgICAgfHwgc291cmNlRGF0YUZvcm1hdCA9PSBTb3VyY2VGb3JtYXRBMzJGKTsK
LSAgICAgICAgLy8gQmVjYXVzZSBXZWJLaXQgZG9lc24ndCB1c2UgZmxvYXRpbmctcG9pbnQgY29s
b3IgY2hhbm5lbHMgZm9yIGFueXRoaW5nCi0gICAgICAgIC8vIGludGVybmFsbHksIHRoZXJlJ3Mg
bm8gY2hhbmNlIHdlIGhhdmUgdG8gZG8gYSAobG9zc3kpIHVubXVsdGlwbHkKLSAgICAgICAgLy8g
b3BlcmF0aW9uLgotICAgICAgICBBU1NFUlQoYWxwaGFPcCA9PSBBbHBoYURvTm90aGluZyB8fCBh
bHBoYU9wID09IEFscGhhRG9QcmVtdWx0aXBseSk7CisgICAgICAgIC8vIGludGVybmFsZm9ybWF0
IGJlIGlkZW50aWNhbC4gVGhpcyBtZWFucyB0aGF0IHdoZW5ldmVyIHRoZQorICAgICAgICAvLyBk
ZXZlbG9wZXIgc3VwcGxpZXMgYW4gQXJyYXlCdWZmZXJWaWV3IG9uIHRoaXMgY29kZSBwYXRoLAor
ICAgICAgICAvLyB0aGUgc291cmNlIGRhdGEgd2lsbCBiZSBpbiBhIGZsb2F0aW5nLXBvaW50IGZv
cm1hdC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhlIG9ubHkgdGltZSB0aGUgc291cmNlIGRh
dGEgd2lsbCBub3QgYmUgZmxvYXRpbmctcG9pbnQgaXMKKyAgICAgICAgLy8gd2hlbiB1cGxvYWRp
bmcgYSBET00gZWxlbWVudCBvciBJbWFnZURhdGEgYXMgYQorICAgICAgICAvLyBmbG9hdGluZy1w
b2ludCB0ZXh0dXJlLiBPbmx5IFJHQkE4IGFuZCBCR1JBOCBhcmUgaGFuZGxlZCBpbgorICAgICAg
ICAvLyB0aGlzIGNhc2UuCisgICAgICAgIEFTU0VSVChpc0Zsb2F0aW5nUG9pbnRTb3VyY2Uoc291
cmNlRGF0YUZvcm1hdCkKKyAgICAgICAgICAgICAgIHx8IHNvdXJjZURhdGFGb3JtYXQgPT0gU291
cmNlRm9ybWF0UkdCQTgKKyAgICAgICAgICAgICAgIHx8IHNvdXJjZURhdGFGb3JtYXQgPT0gU291
cmNlRm9ybWF0QkdSQTgpOworICAgICAgICAvLyBXaGVuIHVwbG9hZGluZyBhIGNhbnZhcyBpbnRv
IGEgZmxvYXRpbmctcG9pbnQgdGV4dHVyZSwKKyAgICAgICAgLy8gdW5tdWx0aXBsaWNhdGlvbiBt
YXkgYmUgbmVjZXNzYXJ5LgorICAgICAgICBBU1NFUlQoKGFscGhhT3AgPT0gQWxwaGFEb05vdGhp
bmcgfHwgYWxwaGFPcCA9PSBBbHBoYURvUHJlbXVsdGlwbHkpCisgICAgICAgICAgICAgICB8fCAh
aXNGbG9hdGluZ1BvaW50U291cmNlKHNvdXJjZURhdGFGb3JtYXQpKTsKICAgICAgICAgLy8gRm9y
IHRoZSBzb3VyY2UgZm9ybWF0cyB3aXRoIGFuIGV2ZW4gbnVtYmVyIG9mIGNoYW5uZWxzIChSR0JB
MzJGLAogICAgICAgICAvLyBSQTMyRikgaXQgaXMgZ3VhcmFudGVlZCB0aGF0IHRoZSBwaXhlbCBk
YXRhIGlzIHRpZ2h0bHkgcGFja2VkIGJlY2F1c2UKICAgICAgICAgLy8gdW5wYWNrIGFsaWdubWVu
dCA8PSBzaXplb2YoZmxvYXQpICogbnVtYmVyIG9mIGNoYW5uZWxzLgpAQCAtMTU3MCwxNCArMTY5
MSwyNSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZURhdGEsCiAgICAgICAgICAgICBjYXNlIEFscGhhRG9QcmVtdWx0aXBseToKICAgICAg
ICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nKHNvdXJjZURhdGEsIHNvdXJjZURhdGFG
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24s
IHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JHQjMyRlByZW11bHRpcGx5LCAzKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBjYXNlIEFscGhhRG9Vbm11bHRpcGx5OgorICAg
ICAgICAgICAgICAgIGRvRmxvYXRpbmdQb2ludFBhY2tpbmcoc291cmNlRGF0YSwgc291cmNlRGF0
YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlv
biwgcGFja09uZVJvd09mUkdCQTMyRlRvUkdCMzJGVW5tdWx0aXBseSwgMyk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBSR0JBOgotICAgICAgICAgICAgLy8gQWxwaGFEb05vdGhpbmcgaXMgaGFuZGxlZCBhYm92
ZSB3aXRoIGZhc3QgcGF0aC4KLSAgICAgICAgICAgIEFTU0VSVChhbHBoYU9wID09IEFscGhhRG9Q
cmVtdWx0aXBseSk7Ci0gICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nKHNvdXJjZURh
dGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVu
dCwgZGVzdGluYXRpb24sIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JHQkEzMkZQcmVtdWx0aXBseSwg
NCk7CisgICAgICAgICAgICAvLyBBbHBoYURvTm90aGluZyBmb3IgUkdCQTMyRiAtPiBSR0JBIGlz
IGhhbmRsZWQgYWJvdmUgd2l0aCBmYXN0IHBhdGguCisgICAgICAgICAgICBBU1NFUlQoYWxwaGFP
cCAhPSBBbHBoYURvTm90aGluZyB8fCBzb3VyY2VEYXRhRm9ybWF0ICE9IFNvdXJjZUZvcm1hdFJH
QkEzMkYpOworICAgICAgICAgICAgc3dpdGNoIChhbHBoYU9wKSB7CisgICAgICAgICAgICBjYXNl
IEFscGhhRG9Ob3RoaW5nOgorICAgICAgICAgICAgICAgIGRvRmxvYXRpbmdQb2ludFBhY2tpbmco
c291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNr
QWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgcGFja09uZVJvd09mUkdCQTMyRlRvUkdCQTMyRiwgNCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFscGhhRG9QcmVtdWx0
aXBseToKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nKHNvdXJjZURhdGEs
IHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwg
ZGVzdGluYXRpb24sIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JHQkEzMkZQcmVtdWx0aXBseSwgNCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFscGhhRG9Vbm11bHRp
cGx5OgorICAgICAgICAgICAgICAgIGRvRmxvYXRpbmdQb2ludFBhY2tpbmcoc291cmNlRGF0YSwg
c291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBk
ZXN0aW5hdGlvbiwgcGFja09uZVJvd09mUkdCQTMyRlRvUkdCQTMyRlVubXVsdGlwbHksIDQpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQUxQSEE6CiAgICAgICAgICAgICAvLyBGcm9tIHRoZSBkZXNrdG9wIE9w
ZW5HTCBjb252ZXJzaW9uIHJ1bGVzIChPcGVuR0wgMi4xCkBAIC0xNTk2LDggKzE3MjgsOSBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWNrUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZURh
dGEsCiAgICAgICAgICAgICBjYXNlIEFscGhhRG9QcmVtdWx0aXBseToKICAgICAgICAgICAgICAg
ICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nKHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIHBhY2tPbmVS
b3dPZlJHQkEzMkZUb1IzMkZQcmVtdWx0aXBseSwgMSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgY2FzZSBBbHBoYURvVW5tdWx0aXBseToKKyAgICAgICAgICAgICAg
ICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nKHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIHBhY2tPbmVS
b3dPZlJHQkEzMkZUb1IzMkZVbm11bHRpcGx5LCAxKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIExVTUlOQU5D
RV9BTFBIQToKQEAgLTE2MTEsOCArMTc0NCw5IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnBh
Y2tQaXhlbHMoY29uc3QgdWludDhfdCogc291cmNlRGF0YSwKICAgICAgICAgICAgIGNhc2UgQWxw
aGFEb1ByZW11bHRpcGx5OgogICAgICAgICAgICAgICAgIGRvRmxvYXRpbmdQb2ludFBhY2tpbmco
c291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNr
QWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgcGFja09uZVJvd09mUkdCQTMyRlRvUkEzMkZQcmVtdWx0
aXBseSwgMik7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgY2FzZSBB
bHBoYURvVW5tdWx0aXBseToKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5n
KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFj
a0FsaWdubWVudCwgZGVzdGluYXRpb24sIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JBMzJGVW5tdWx0
aXBseSwgMik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcApp
bmRleCA4ZDM5NjkyMTQxOGRkMzFlMTA0MzBhMDk3NmFjZWZmMjY5OGEwMzA0Li4wZmEyNzQ1ZTAx
ZTE3Yzg3MzQ0ZGQwZmVhNzU5YjgyMjZkNWNkN2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQz
RENhaXJvLmNwcApAQCAtMTg1LDcgKzE4NSwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdlLCB1bnNpZ25lZCBpbnQgZm9ybWF0LCB1bnNpZ25lZAog
ICAgICAgICAgICAgKytzcmNVbnBhY2tBbGlnbm1lbnQ7CiAgICAgfQogCi0gICAgb3V0cHV0VmVj
dG9yLnJlc2l6ZSh3aWR0aCAqIGhlaWdodCAqIDQpOworICAgIHVuc2lnbmVkIGludCBwYWNrZWRT
aXplOworICAgIC8vIE91dHB1dCBkYXRhIGlzIHRpZ2h0bHkgcGFja2VkIChhbGlnbm1lbnQgPT0g
MSkuCisgICAgaWYgKGNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwgdHlwZSwgd2lkdGgs
IGhlaWdodCwgMSwgJnBhY2tlZFNpemUsIDApICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJP
UikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG91dHB1dFZlY3Rvci5yZXNpemUocGFja2Vk
U2l6ZSk7CisKICAgICByZXR1cm4gcGFja1BpeGVscyhjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9k
YXRhKGltYWdlU3VyZmFjZS5nZXQoKSksIFNvdXJjZUZvcm1hdEJHUkE4LAogICAgICAgICAgICAg
ICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIHNyY1VucGFja0FsaWdubWVudCwgZm9ybWF0LCB0eXBl
LCBhbHBoYU9wLCBvdXRwdXRWZWN0b3IuZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAK
aW5kZXggNTdhYmU3MWEzNjhkZDk4ZTExODEzMTMxN2NlNDlmMjA5YjY2ZTM3My4uZTA0NGI4ZDlh
NzdkYzAxOTk4NGY2NTg4ZTliMDJlMjNkNTNhMmE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAK
QEAgLTI0MCw3ICsyNDAsMTMgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRh
KEltYWdlKiBpbWFnZSwKICAgICBpZiAoIXBpeGVsRGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGNvbnN0IFVJbnQ4KiByZ2JhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihwaXhlbERhdGEuZ2V0
KCkpOwotICAgIG91dHB1dFZlY3Rvci5yZXNpemUod2lkdGggKiBoZWlnaHQgKiA0KTsKKworICAg
IHVuc2lnbmVkIGludCBwYWNrZWRTaXplOworICAgIC8vIE91dHB1dCBkYXRhIGlzIHRpZ2h0bHkg
cGFja2VkIChhbGlnbm1lbnQgPT0gMSkuCisgICAgaWYgKGNvbXB1dGVJbWFnZVNpemVJbkJ5dGVz
KGZvcm1hdCwgdHlwZSwgd2lkdGgsIGhlaWdodCwgMSwgJnBhY2tlZFNpemUsIDApICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpOT19FUlJPUikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG91dHB1
dFZlY3Rvci5yZXNpemUocGFja2VkU2l6ZSk7CisKICAgICB1bnNpZ25lZCBpbnQgc3JjVW5wYWNr
QWxpZ25tZW50ID0gMDsKICAgICBzaXplX3QgYnl0ZXNQZXJSb3cgPSBDR0ltYWdlR2V0Qnl0ZXNQ
ZXJSb3coY2dJbWFnZSk7CiAgICAgdW5zaWduZWQgaW50IHBhZGRpbmcgPSBieXRlc1BlclJvdyAt
IGJpdHNQZXJQaXhlbCAvIDggKiB3aWR0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggZTFj
MmI0OTQyYWI2YmU2MmQyODNhNDRkNTQzNDc3MDU2OWM2ZTFmNC4uYWY5NWU0Zjc0OThhN2Y3YzZi
YTMzMjJiYTQwODEyNGNkNTgxY2JkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTE2MTQs
NyArMTYxNCwxMyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2Uq
IGltYWdlLAogICAgIEFscGhhT3AgbmVlZGVkQWxwaGFPcCA9IEFscGhhRG9Ob3RoaW5nOwogICAg
IGlmIChwcmVtdWx0aXBseUFscGhhKQogICAgICAgICBuZWVkZWRBbHBoYU9wID0gQWxwaGFEb1By
ZW11bHRpcGx5OwotICAgIG91dHB1dFZlY3Rvci5yZXNpemUobmF0aXZlSW1hZ2UuYnl0ZUNvdW50
KCkpOworCisgICAgdW5zaWduZWQgaW50IHBhY2tlZFNpemU7CisgICAgLy8gT3V0cHV0IGRhdGEg
aXMgdGlnaHRseSBwYWNrZWQgKGFsaWdubWVudCA9PSAxKS4KKyAgICBpZiAoY29tcHV0ZUltYWdl
U2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCBpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgp
LCAxLCAmcGFja2VkU2l6ZSwgMCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgb3V0cHV0VmVjdG9yLnJlc2l6ZShwYWNrZWRTaXplKTsK
KwogICAgIHJldHVybiBwYWNrUGl4ZWxzKG5hdGl2ZUltYWdlLmJpdHMoKSwgU291cmNlRm9ybWF0
QkdSQTgsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCksIDAsIGZvcm1hdCwgdHlwZSwg
bmVlZGVkQWxwaGFPcCwgb3V0cHV0VmVjdG9yLmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250
ZXh0M0RTa2lhLmNwcAppbmRleCBmMzQxMTUyZDBiZTU0M2ZhODdmOTUwN2MwNmE3ZTkyZWFjZDEx
ZmQ0Li4wMTkwMzdjNDU3NTQ1ODhlMjg2MzMzNzk3ZmM4ODBjODg2ZjRjZGYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNE
U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFw
aGljc0NvbnRleHQzRFNraWEuY3BwCkBAIC03OSw3ICs3OSwxMSBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdlLAogICAgIGNvbnN0IFNrQml0bWFwJiBz
a2lhSW1hZ2VSZWYgPSBza2lhSW1hZ2UtPmJpdG1hcCgpOwogICAgIFNrQXV0b0xvY2tQaXhlbHMg
bG9jayhza2lhSW1hZ2VSZWYpOwogICAgIEFTU0VSVChza2lhSW1hZ2VSZWYucm93Qnl0ZXMoKSA9
PSBza2lhSW1hZ2VSZWYud2lkdGgoKSAqIDQpOwotICAgIG91dHB1dFZlY3Rvci5yZXNpemUoc2tp
YUltYWdlUmVmLnJvd0J5dGVzKCkgKiBza2lhSW1hZ2VSZWYuaGVpZ2h0KCkpOworICAgIHVuc2ln
bmVkIGludCBwYWNrZWRTaXplOworICAgIC8vIE91dHB1dCBkYXRhIGlzIHRpZ2h0bHkgcGFja2Vk
IChhbGlnbm1lbnQgPT0gMSkuCisgICAgaWYgKGNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1h
dCwgdHlwZSwgc2tpYUltYWdlUmVmLndpZHRoKCksIHNraWFJbWFnZVJlZi5oZWlnaHQoKSwgMSwg
JnBhY2tlZFNpemUsIDApICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIG91dHB1dFZlY3Rvci5yZXNpemUocGFja2VkU2l6ZSk7CiAgICAg
cmV0dXJuIHBhY2tQaXhlbHMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc2tpYUlt
YWdlUmVmLmdldFBpeGVscygpKSwKICAgICAgICAgICAgICAgICAgICAgICBTS19CMzJfU0hJRlQg
PyBTb3VyY2VGb3JtYXRSR0JBOCA6IFNvdXJjZUZvcm1hdEJHUkE4LAogICAgICAgICAgICAgICAg
ICAgICAgIHNraWFJbWFnZVJlZi53aWR0aCgpLCBza2lhSW1hZ2VSZWYuaGVpZ2h0KCksIDAsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>