<?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>91949</bug_id>
          
          <creation_ts>2012-07-22 15:25:17 -0700</creation_ts>
          <short_desc>[chromium] Show search tickmarks on css-styled scrollbars</short_desc>
          <delta_ts>2012-07-23 19:19:38 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nico Weber">thakis</reporter>
          <assigned_to name="Nico Weber">thakis</assigned_to>
          <cc>enne</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>675356</commentid>
    <comment_count>0</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-07-22 15:25:17 -0700</bug_when>
    <thetext>[chromium] Show search tickmarks on css-styled scrollbars</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675357</commentid>
    <comment_count>1</comment_count>
      <attachid>153708</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-07-22 15:28:52 -0700</bug_when>
    <thetext>Created attachment 153708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675359</commentid>
    <comment_count>2</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-07-22 15:29:49 -0700</bug_when>
    <thetext>Note: I haven&apos;t tried this on win/linux yet, so I&apos;m not sure the vector drawing looks right. (It looks fine if I use that code on mac though.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675960</commentid>
    <comment_count>3</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-07-23 13:42:07 -0700</bug_when>
    <thetext>I&apos;ve now tested this on linux. Looks good.

The tickmark bitmap can be removed on the chromium side once this CL has landed and rolled into chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675985</commentid>
    <comment_count>4</comment_count>
      <attachid>153708</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-23 14:05:11 -0700</bug_when>
    <thetext>Comment on attachment 153708
Patch

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

This really needs a test.  Could you add a function to window.internals to call DocumentMarkerController::addTextMatchMarker and then write a layout test that adds a few markers so we can verify that these functions do the right thing?

&gt; Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.mm:232
&gt; -    // Inset by 2 on the left and 3 on the right.
&gt; +    // Inset a bit.
&gt;      tickmarkTrackRect.setX(tickmarkTrackRect.x() + 2);
&gt;      tickmarkTrackRect.setWidth(tickmarkTrackRect.width() - 5);

This is why we can&apos;t have nice comments.  ;)

&gt; Source/WebCore/rendering/RenderScrollbarTheme.cpp:143
&gt; +    ScrollbarTheme::theme()-&gt;paintTickmarks(context, scrollbar, rect);

Don&apos;t render theme scrollbars all look the same on all platforms? Can you convince me further why different platforms would need different tickmark drawing code?

The ScrollbarThemeChromiumMac::paintGivenTickmarks function looks nearly identical to ScrollbarThemeChromium::paintTickmarks.  I still wonder why it should be duplicated and not just moved down to ScrollbarThemeComposite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675988</commentid>
    <comment_count>5</comment_count>
      <attachid>153708</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-07-23 14:08:48 -0700</bug_when>
    <thetext>Comment on attachment 153708
Patch

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

Thanks. Will add a test (which would be a pixel test, right?)

&gt;&gt; Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.mm:232
&gt;&gt;      tickmarkTrackRect.setWidth(tickmarkTrackRect.width() - 5);
&gt; 
&gt; This is why we can&apos;t have nice comments.  ;)

Well, the comment was correct, I just changed it because it felt too specific. (I guess I could remove it altogether.)

&gt;&gt; Source/WebCore/rendering/RenderScrollbarTheme.cpp:143
&gt;&gt; +    ScrollbarTheme::theme()-&gt;paintTickmarks(context, scrollbar, rect);
&gt; 
&gt; Don&apos;t render theme scrollbars all look the same on all platforms? Can you convince me further why different platforms would need different tickmark drawing code?
&gt; 
&gt; The ScrollbarThemeChromiumMac::paintGivenTickmarks function looks nearly identical to ScrollbarThemeChromium::paintTickmarks.  I still wonder why it should be duplicated and not just moved down to ScrollbarThemeComposite.

No. They look different on chromium/mac and chromium/elsewhere for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676010</commentid>
    <comment_count>6</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-07-23 14:26:10 -0700</bug_when>
    <thetext>Also, it looks like addTextMatchMarker() is called on all ports (for normal search highlights), but most ports don&apos;t want tickmarks on their scrollbars.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676193</commentid>
    <comment_count>7</comment_count>
      <attachid>153905</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-07-23 17:04:27 -0700</bug_when>
    <thetext>Created attachment 153905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676195</commentid>
    <comment_count>8</comment_count>
      <attachid>153907</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-07-23 17:05:51 -0700</bug_when>
    <thetext>Created attachment 153907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676218</commentid>
    <comment_count>9</comment_count>
      <attachid>153914</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-07-23 17:29:18 -0700</bug_when>
    <thetext>Created attachment 153914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676221</commentid>
    <comment_count>10</comment_count>
      <attachid>153915</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-07-23 17:34:48 -0700</bug_when>
    <thetext>Created attachment 153915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676242</commentid>
    <comment_count>11</comment_count>
      <attachid>153914</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-23 17:47:18 -0700</bug_when>
    <thetext>Comment on attachment 153914
Patch

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

Is that pixel output right? It looks like the scrollbar is all the way at the bottom, but the text hasn&apos;t scrolled.

&gt; LayoutTests/fast/scrolling/scrollbar-tickmarks-styled.html:19
&gt; +&lt;script&gt;

Somewhere in this script block, please add:

if (window.testRunner)
    testRunner.dumpAsText(true);

This&apos;ll make the text output just an empty line, which will signal to other developers that only the pixels matter.  See: http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree

&gt; LayoutTests/fast/scrolling/scrollbar-tickmarks-styled.html:24
&gt; +    elt.clientWidth;

Are you trying to force layout here? Could you just force layout in window.internals.addTextMatchMarker if this is needed?

&gt; LayoutTests/fast/scrolling/scrollbar-tickmarks-styled.html:55
&gt; +&lt;p&gt;p0 asdf asdf
&gt; +&lt;p&gt;p1 asdf asdf
&gt; +&lt;p&gt;p2 asdf asdf
&gt; +&lt;p&gt;p3 asdf asdf
&gt; +&lt;p&gt;p4 asdf asdf
&gt; +&lt;p&gt;p5 asdf asdf
&gt; +&lt;p&gt;p6 asdf asdf
&gt; +&lt;p&gt;p7 asdf asdf
&gt; +&lt;p&gt;p8 asdf asdf
&gt; +&lt;p&gt;p9 asdf asdf
&gt; +
&gt; +
&gt; +&lt;p&gt;p10 asdf asdf
&gt; +&lt;p&gt;p11 asdf asdf
&gt; +&lt;p&gt;p12 asdf asdf
&gt; +&lt;p&gt;p13 asdf asdf
&gt; +&lt;p&gt;p14 asdf asdf
&gt; +&lt;p&gt;p15 asdf asdf
&gt; +&lt;p&gt;p16 &lt;span id=&quot;elt&quot;&gt;asdf&lt;/span&gt; asdf
&gt; +&lt;p&gt;p17 asdf asdf
&gt; +&lt;p&gt;p18 asdf asdf
&gt; +&lt;p&gt;p19 asdf asdf

A small test nit, but can you not put text output in this test? Even with font smoothing, this&apos;ll look different on different platforms.  You could replace this with a really tall document body and an absolutely positioned div that you can select.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676249</commentid>
    <comment_count>12</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-07-23 17:53:55 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 153914 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153914&amp;action=review
&gt; 
&gt; Is that pixel output right? It looks like the scrollbar is all the way at the bottom, but the text hasn&apos;t scrolled.

The green bit is the track; the thumb is gray and is at the top.

&gt; 
&gt; &gt; LayoutTests/fast/scrolling/scrollbar-tickmarks-styled.html:19
&gt; &gt; +&lt;script&gt;
&gt; 
&gt; Somewhere in this script block, please add:
&gt; 
&gt; if (window.testRunner)
&gt;     testRunner.dumpAsText(true);

Done.

&gt; &gt; LayoutTests/fast/scrolling/scrollbar-tickmarks-styled.html:24
&gt; &gt; +    elt.clientWidth;
&gt; 
&gt; Are you trying to force layout here? Could you just force layout in window.internals.addTextMatchMarker if this is needed?

Good point. Done.

&gt; 
&gt; &gt; LayoutTests/fast/scrolling/scrollbar-tickmarks-styled.html:55
&gt; &gt; +&lt;p&gt;p0 asdf asdf
&gt; &gt; +&lt;p&gt;p1 asdf asdf
&gt; &gt; +&lt;p&gt;p2 asdf asdf
&gt; &gt; +&lt;p&gt;p3 asdf asdf
&gt; &gt; +&lt;p&gt;p4 asdf asdf
&gt; &gt; +&lt;p&gt;p5 asdf asdf
&gt; &gt; +&lt;p&gt;p6 asdf asdf
&gt; &gt; +&lt;p&gt;p7 asdf asdf
&gt; &gt; +&lt;p&gt;p8 asdf asdf
&gt; &gt; +&lt;p&gt;p9 asdf asdf
&gt; &gt; +
&gt; &gt; +
&gt; &gt; +&lt;p&gt;p10 asdf asdf
&gt; &gt; +&lt;p&gt;p11 asdf asdf
&gt; &gt; +&lt;p&gt;p12 asdf asdf
&gt; &gt; +&lt;p&gt;p13 asdf asdf
&gt; &gt; +&lt;p&gt;p14 asdf asdf
&gt; &gt; +&lt;p&gt;p15 asdf asdf
&gt; &gt; +&lt;p&gt;p16 &lt;span id=&quot;elt&quot;&gt;asdf&lt;/span&gt; asdf
&gt; &gt; +&lt;p&gt;p17 asdf asdf
&gt; &gt; +&lt;p&gt;p18 asdf asdf
&gt; &gt; +&lt;p&gt;p19 asdf asdf
&gt; 
&gt; A small test nit, but can you not put text output in this test? Even with font smoothing, this&apos;ll look different on different platforms.  You could replace this with a really tall document body and an absolutely positioned div that you can select.

Does it matter? The tickmarks are platform-specific anyhow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676250</commentid>
    <comment_count>13</comment_count>
      <attachid>153921</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-07-23 17:54:38 -0700</bug_when>
    <thetext>Created attachment 153921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676253</commentid>
    <comment_count>14</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-23 17:57:32 -0700</bug_when>
    <thetext>(In reply to comment #12)

&gt; &gt; A small test nit, but can you not put text output in this test? Even with font smoothing, this&apos;ll look different on different platforms.  You could replace this with a really tall document body and an absolutely positioned div that you can select.
&gt; 
&gt; Does it matter? The tickmarks are platform-specific anyhow.

Some? When possible, I&apos;d prefer not to test more than is necessary. If font rendering changes ever-so-slightly, this test shouldn&apos;t fail.  It&apos;s not that we don&apos;t have the tools to rebaseline changes like that, but I&apos;d prefer not to add to the problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676264</commentid>
    <comment_count>15</comment_count>
      <attachid>153927</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-07-23 18:04:57 -0700</bug_when>
    <thetext>Created attachment 153927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676265</commentid>
    <comment_count>16</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-07-23 18:05:12 -0700</bug_when>
    <thetext>Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676268</commentid>
    <comment_count>17</comment_count>
      <attachid>153927</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-23 18:07:12 -0700</bug_when>
    <thetext>Comment on attachment 153927
Patch

R=me.  Thanks for taking the time to add the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676273</commentid>
    <comment_count>18</comment_count>
      <attachid>153929</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-07-23 18:14:38 -0700</bug_when>
    <thetext>Created attachment 153929
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676321</commentid>
    <comment_count>19</comment_count>
      <attachid>153929</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 19:19:34 -0700</bug_when>
    <thetext>Comment on attachment 153929
Patch for landing

Clearing flags on attachment: 153929

Committed r123418: &lt;http://trac.webkit.org/changeset/123418&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676322</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 19:19:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153708</attachid>
            <date>2012-07-22 15:28:52 -0700</date>
            <delta_ts>2012-07-23 17:04:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91949-20120722152847.patch</filename>
            <type>text/plain</type>
            <size>9782</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNlN2IyNzZjYjhlMThi
ZGYzOGI2YTBmY2NhZDc0NmViZjY1NzA1Zi4uODA1NTFkODRhZmYyY2Y2MjhkODZhMzgxNGNhMjdj
ZDU0NzQ0MmQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA3LTIyICBOaWNv
IFdlYmVyICA8bmljb2xhc3dlYmVyQGdteC5kZT4KKworICAgICAgICBbY2hyb21pdW1dIFNob3cg
c2VhcmNoIHRpY2ttYXJrcyBvbiBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxOTQ5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGxldHRpbmcg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtzKCkKKyAgICAgICAgZGVsZWdhdGUg
dG8gdGhlIG5hdGl2ZSBTY3JvbGxiYXJUaGVtZS4gVG8gbWFrZSB0aGlzIHBvc3NpYmxlLAorICAg
ICAgICBtb3ZlIHBhaW50VGlja21hcmtzKCkgZnJvbSBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB0
byB0aGUKKyAgICAgICAgc3VwZXJjbGFzcyBTY3JvbGxiYXJUaGVtZS4KKworICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICBNb3ZlZCBwYWludFRpY2ttYXJrcygpIGZyb20g
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUgdG8gaGVyZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZS5oOgorICAgICAgICBSZW1vdmUgcGFpbnRUaWNrbWFya3MoKS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlja21hcmtz
KToKKyAgICAgICAgU3dpdGNoIHRvIGRyYXdpbmcgdGlja21hcmtzIGFzIHZlY3RvcnMsIHNvIHRo
ZXkgY2FuIGJlIGFyYml0cmFyaWx5IHdpZGUuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYyk6CisgICAgICAgIEltcGxlbWVudCBwYWludFRpY2ttYXJrcygpLCBzbyB0aGF0IGNz
cy1zdHlsZWQgc2Nyb2xsYmFycyBnZXQgdGlja21hcmtzIG9uIG1hYy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICBJ
bXBsZW1lbnQgcGFpbnRUaWNrbWFya3MoKSwgc28gdGhhdCBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMg
Z2V0IHRpY2ttYXJrcyBvbiBtYWMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWlu
dFRpY2ttYXJrcyk6CisgICAgICAgIERlbGVnYXRlIHRvIHRoZSBuYXRpdmUgU2Nyb2xsYmFyVGhl
bWUgZm9yIHRpY2ttYXJrIGRyYXdpbmcuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFJlbmRlclNjcm9sbGJh
clRoZW1lKToKKyAgICAgICAgT3ZlcnJpZGUgcGFpbnRUaWNrbWFya3MoKS4KKwogMjAxMi0wNy0y
MCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVO
QUJMRV9EQVRBTElTVCB0byBFTkFCTEVfREFUQUxJU1RfRUxFTUVOVApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKaW5kZXggNWZlNDViMWE0NzM2NTcxNmJmMmI3MmE0NmRh
YmFlYjZhZjBiZmZlNC4uY2NjYzJmOTI1NmZkMzIyOGQzNDFmM2M2ZTkxNjU4YmM5YTU1NWRlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCkBAIC04Niw2ICs4Niw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmll
dyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkg
eyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KICAgICBz
dGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQtPmZpbGxSZWN0KGNvcm5l
clJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7IH0KIAorICAgIHZpcnR1
YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFu
Z0FyZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgY29u
c3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykgJiYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKaW5kZXggNjk2ZGIxMmIxOTc3
N2RjZDYwN2VlMDQ2MWEyMTUwMWM5MDBkNjBmNS4uZGZkMTVlZDE4ODc4MzA4YTE3ZGFjNTQwMThm
NTU1NjE5OGJmOGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZS5oCkBAIC02MCw3ICs2MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
aHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JikgeyB9CiAKICAgICB2aXJ0
dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW0uY3BwCmluZGV4IDY4MmQ4MmQ1YjMzNzkxOGIyNWQwOThiYTc3MTczNGU3OTE1
MDVlOTEuLjRhNDkzOGFjODA4NGYyNDkwZjI0NGVhYTFiYjM2MjE5ZjUxMjFhNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW0uY3BwCkBAIC0xMTMsMTQgKzExMyw4IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bTo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXJUCiAgICAgaWYgKCF0aWNrbWFya3Muc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAv
LyBHZXQgdGhlIGltYWdlIGZvciB0aGUgdGlja21hcmtzLgotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoUmVmUHRyPEltYWdlPiwgZGFzaCwgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGlj
a21hcmtEYXNoIikpKTsKLSAgICBpZiAoZGFzaC0+aXNOdWxsKCkpIHsKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb250ZXh0LT5z
YXZlKCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0
KTsKKyAgICBjb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOwogCiAgICAgZm9yIChW
ZWN0b3I8SW50UmVjdD46OmNvbnN0X2l0ZXJhdG9yIGkgPSB0aWNrbWFya3MuYmVnaW4oKTsgaSAh
PSB0aWNrbWFya3MuZW5kKCk7ICsraSkgewogICAgICAgICAvLyBDYWxjdWxhdGUgaG93IGZhciBk
b3duIChpbiAlKSB0aGUgdGljay1tYXJrIHNob3VsZCBhcHBlYXIuCkBAIC0xMjksMTEgKzEyMywx
NCBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlja21hcmtzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVAogICAgICAgICAvLyBDYWxjdWxhdGUgaG93IGZh
ciBkb3duIChpbiBwaXhlbHMpIHRoZSB0aWNrLW1hcmsgc2hvdWxkIGFwcGVhci4KICAgICAgICAg
Y29uc3QgaW50IHlQb3MgPSByZWN0LnkoKSArIChyZWN0LmhlaWdodCgpICogcGVyY2VudCk7CiAK
LSAgICAgICAgSW50UG9pbnQgdGljayhzY3JvbGxiYXItPngoKSwgeVBvcyk7Ci0gICAgICAgIGNv
bnRleHQtPmRyYXdJbWFnZShkYXNoLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0aWNrKTsK
LSAgICB9CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigweENDLCAweEFBLCAw
eDAwLCAweEZGKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIEZsb2F0UmVjdCB0aWNr
UmVjdChyZWN0LngoKSwgeVBvcywgcmVjdC53aWR0aCgpLCAzKTsKKyAgICAgICAgY29udGV4dC0+
ZmlsbFJlY3QodGlja1JlY3QpOwogCi0gICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAgICBj
b250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMHhGRiwgMHhERCwgMHgwMCwgMHhGRiksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBGbG9hdFJlY3QgdGlja1N0cm9rZShyZWN0LngoKSwg
eVBvcyArIDEsIHJlY3Qud2lkdGgoKSwgMSk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHRp
Y2tTdHJva2UpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bU1hYy5oCmluZGV4IDE5MzQ2ZTcyM2JhYjI4N2Y5OGUxN2M4MTJkYjU4M2ExYzIwNjcw
MjAuLmVmYmRkMDk5MmMyNDMwMjQxYmU1YzkzMWJjNjM5OWRjOGI4YmUwYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1N
YWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjLmgKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGRhbWFnZVJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVh
cyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRh
bE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIE9W
RVJSSURFOwogICAgIAogcHJpdmF0ZToKICAgICB2b2lkIHBhaW50R2l2ZW5UaWNrbWFya3MoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgY29u
c3QgVmVjdG9yPEludFJlY3Q+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQppbmRleCA3NWU0
YTI5Yzg4YzIzNzMzZTMyOTY3YTQwZjk1ZGVkOWFiMjI4MzU2Li43M2Q3OWIwYmNiZGVjNzI0ZGE2
MjU1MDNiMTMyNDcwMTA2NGZlNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KQEAgLTIy
Nyw3ICsyMjcsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQwogICAgIH0KICAgICAvLyBUaGUg
ZW5kcyBhcmUgcm91bmRlZCBhbmQgdGhlIHRodW1iIGRvZXNuJ3QgZ28gdGhlcmUuCiAgICAgdGlj
a21hcmtUcmFja1JlY3QuaW5mbGF0ZVkoLXRpY2ttYXJrVHJhY2tSZWN0LndpZHRoKCkpOwotICAg
IC8vIEluc2V0IGJ5IDIgb24gdGhlIGxlZnQgYW5kIDMgb24gdGhlIHJpZ2h0LgorICAgIC8vIElu
c2V0IGEgYml0LgogICAgIHRpY2ttYXJrVHJhY2tSZWN0LnNldFgodGlja21hcmtUcmFja1JlY3Qu
eCgpICsgMik7CiAgICAgdGlja21hcmtUcmFja1JlY3Quc2V0V2lkdGgodGlja21hcmtUcmFja1Jl
Y3Qud2lkdGgoKSAtIDUpOwogICAgIHBhaW50R2l2ZW5UaWNrbWFya3MoZHJhd2luZ0NvbnRleHQs
IHNjcm9sbGJhciwgdGlja21hcmtUcmFja1JlY3QsIHRpY2ttYXJrcyk7CkBAIC00MDksNSArNDA5
LDI1IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRPdmVyaGFuZ0FyZWFz
KFNjcm9sbFZpZXcqIHZpZXcsIEdyYXBoaWNzQ29uCiAgICAgfQogfQogCit2b2lkIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWM6OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
K3sKKyAgICAvLyBOb3RlOiBUaGlzIGlzIG9ubHkgdXNlZCBmb3IgY3NzLXN0eWxlZCBzY3JvbGxi
YXJzIG9uIG1hYy4KKyAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpICE9IFZlcnRpY2Fs
U2Nyb2xsYmFyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocmVjdC5oZWlnaHQoKSA8PSAw
IHx8IHJlY3Qud2lkdGgoKSA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8SW50
UmVjdD4gdGlja21hcmtzOworICAgIHNjcm9sbGJhci0+Z2V0VGlja21hcmtzKHRpY2ttYXJrcyk7
CisgICAgaWYgKCF0aWNrbWFya3Muc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJ
bnNldCBhIGJpdC4KKyAgICBJbnRSZWN0IHRpY2ttYXJrVHJhY2tSZWN0ID0gcmVjdDsKKyAgICB0
aWNrbWFya1RyYWNrUmVjdC5zZXRYKHRpY2ttYXJrVHJhY2tSZWN0LngoKSArIDEpOworICAgIHRp
Y2ttYXJrVHJhY2tSZWN0LnNldFdpZHRoKHRpY2ttYXJrVHJhY2tSZWN0LndpZHRoKCkgLSAyKTsK
KyAgICBwYWludEdpdmVuVGlja21hcmtzKGNvbnRleHQsIHNjcm9sbGJhciwgdGlja21hcmtUcmFj
a1JlY3QsIHRpY2ttYXJrcyk7Cit9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCmluZGV4IDQ0ZTJhYTYzMWRjMjgxNTAxNzRiYzIy
NTIzMGU4YjZhYWI3ZDBkMzUuLjZkMmUwOWIyZTJiYWNlYWU0ZTE5N2ZjNjQxZTc2YWM3MmQ3YjU3
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJU
aGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRo
ZW1lLmNwcApAQCAtMTM4LDQgKzEzOCw5IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBh
aW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsCiAgICAg
dG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+cGFpbnRQYXJ0KGNvbnRleHQsIFRodW1iUGFy
dCwgcmVjdCk7CiB9CiAKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtz
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+
cGFpbnRUaWNrbWFya3MoY29udGV4dCwgc2Nyb2xsYmFyLCByZWN0KTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAppbmRleCA5Y2Vm
Mzk0OWZhOWY0ZGM3MTg5Mzg3N2Y4YzEwYzlkZTYyNDhmNDQ3Li5jMTRkZTNmYmNlOTNmZjcxMjFl
MGM1Yzc0YmYzNDNhYTFiZTg3MGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyVGhlbWUuaApAQCAtNzMsNiArNzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50
VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwogCiAgICAg
dmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153905</attachid>
            <date>2012-07-23 17:04:27 -0700</date>
            <delta_ts>2012-07-23 17:05:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91949-20120723170420.patch</filename>
            <type>text/plain</type>
            <size>21160</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzEwMzdiYTlkZjA2NDI5
MmIwMTRiNWQ2YjYxZGI0ZGRiYWQxNjEwNS4uOTZhMmJhN2ZiNzUxODRlNzA3ZWVkZGIwMGY2YjQw
ZDM3ZTc5YjExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA3LTIzICBOaWNv
IFdlYmVyICA8bmljb2xhc3dlYmVyQGdteC5kZT4KKworICAgICAgICBbY2hyb21pdW1dIFNob3cg
c2VhcmNoIHRpY2ttYXJrcyBvbiBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxOTQ5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGxldHRpbmcg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtzKCkKKyAgICAgICAgZGVsZWdhdGUg
dG8gdGhlIG5hdGl2ZSBTY3JvbGxiYXJUaGVtZS4gVG8gbWFrZSB0aGlzIHBvc3NpYmxlLAorICAg
ICAgICBtb3ZlIHBhaW50VGlja21hcmtzKCkgZnJvbSBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB0
byB0aGUKKyAgICAgICAgc3VwZXJjbGFzcyBTY3JvbGxiYXJUaGVtZS4KKworICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICBNb3ZlZCBwYWludFRpY2ttYXJrcygpIGZyb20g
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUgdG8gaGVyZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZS5oOgorICAgICAgICBSZW1vdmUgcGFpbnRUaWNrbWFya3MoKS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlja21hcmtz
KToKKyAgICAgICAgU3dpdGNoIHRvIGRyYXdpbmcgdGlja21hcmtzIGFzIHZlY3RvcnMsIHNvIHRo
ZXkgY2FuIGJlIGFyYml0cmFyaWx5IHdpZGUuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYyk6CisgICAgICAgIEltcGxlbWVudCBwYWludFRpY2ttYXJrcygpLCBzbyB0aGF0IGNz
cy1zdHlsZWQgc2Nyb2xsYmFycyBnZXQgdGlja21hcmtzIG9uIG1hYy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICBJ
bXBsZW1lbnQgcGFpbnRUaWNrbWFya3MoKSwgc28gdGhhdCBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMg
Z2V0IHRpY2ttYXJrcyBvbiBtYWMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWlu
dFRpY2ttYXJrcyk6CisgICAgICAgIERlbGVnYXRlIHRvIHRoZSBuYXRpdmUgU2Nyb2xsYmFyVGhl
bWUgZm9yIHRpY2ttYXJrIGRyYXdpbmcuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFJlbmRlclNjcm9sbGJh
clRoZW1lKToKKyAgICAgICAgT3ZlcnJpZGUgcGFpbnRUaWNrbWFya3MoKS4KKwogMjAxMi0wNy0y
MyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAg
ICAgIFtFRkxdIG1lZGlhL2NvbnRyb2xzLXN0eWxpbmcuaHRtbCBpcyBmYWlsaW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IDA1NTEw
NzcxMTRiNGJjN2VhN2I4YjFjNGVjZTk1ZTEwNDNlZDg1ZGUuLmFkOTUyMTcwMTIxZWRkYzFjMTJk
YzIwMDI2Y2IzNDFhNTY0NTNkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogaW5saW5lIGJvb2wgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpwb3NzaWJseUhhc01h
cmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzIHR5cGVzKQogeworLy9mcHJpbnRmKHN0
ZGVyciwgInBvc3NpYmx5IGNoZWNrICVkXG4iLCB0eQogICAgIHJldHVybiBtX3Bvc3NpYmx5RXhp
c3RpbmdNYXJrZXJUeXBlcy5pbnRlcnNlY3RzKHR5cGVzKTsKIH0KIApAQCAtOTIsMTYgKzkzLDE5
IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXJUb05vZGUoTm9kZSog
bm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsCiB9CiAKIAotdm9pZCBEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXI6OmFkZFRleHRNYXRjaE1hcmtlcihSYW5nZSogcmFuZ2UsIGJvb2wgYWN0aXZlTWF0
Y2gpCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkVGV4dE1hdGNoTWFya2VyKGNv
bnN0IFJhbmdlKiByYW5nZSwgYm9vbCBhY3RpdmVNYXRjaCkKIHsKK2ZwcmludGYoc3RkZXJyLCAi
YmVmb3JlIG1hcmtlZCB0ZXh0IGxvb3BcbiIpOwogICAgIC8vIFVzZSBhIFRleHRJdGVyYXRvciB0
byB2aXNpdCB0aGUgcG90ZW50aWFsbHkgbXVsdGlwbGUgbm9kZXMgdGhlIHJhbmdlIGNvdmVycy4K
ICAgICBmb3IgKFRleHRJdGVyYXRvciBtYXJrZWRUZXh0KHJhbmdlKTsgIW1hcmtlZFRleHQuYXRF
bmQoKTsgbWFya2VkVGV4dC5hZHZhbmNlKCkpIHsKK2ZwcmludGYoc3RkZXJyLCAibWFya2VkIHRl
eHQgbG9vcFxuIik7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gdGV4dFBpZWNlID0gbWFya2VkVGV4
dC5yYW5nZSgpOwogICAgICAgICBpbnQgZXhjZXB0aW9uID0gMDsKICAgICAgICAgdW5zaWduZWQg
c3RhcnRPZmZzZXQgPSB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KGV4Y2VwdGlvbik7CiAgICAgICAg
IHVuc2lnbmVkIGVuZE9mZnNldCA9IHRleHRQaWVjZS0+ZW5kT2Zmc2V0KGV4Y2VwdGlvbik7CiAg
ICAgICAgIGFkZE1hcmtlcih0ZXh0UGllY2UtPnN0YXJ0Q29udGFpbmVyKGV4Y2VwdGlvbiksIERv
Y3VtZW50TWFya2VyKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGFjdGl2ZU1hdGNoKSk7CiAgICAg
ICAgIGlmIChlbmRPZmZzZXQgPiBzdGFydE9mZnNldCkgeworZnByaW50ZihzdGRlcnIsICJtYXJr
ZWQgdGV4dCBsb29wIGZvdW5kIHNvbWV0aGluZ1xuIik7CiAgICAgICAgICAgICAvLyBSZW5kZXJl
ZCByZWN0cyBmb3IgbWFya2VycyBpbiBXZWJLaXQgYXJlIG5vdCBwb3B1bGF0ZWQgdW50aWwgZWFj
aCB0aW1lCiAgICAgICAgICAgICAvLyB0aGUgbWFya2VycyBhcmUgcGFpbnRlZC4gSG93ZXZlciwg
d2UgbmVlZCBpdCB0byBoYXBwZW4gc29vbmVyLCBiZWNhdXNlCiAgICAgICAgICAgICAvLyB0aGUg
d2hvbGUgcHVycG9zZSBvZiB0aWNrbWFya3Mgb24gdGhlIHNjcm9sbGJhciBpcyB0byBzaG93IHdo
ZXJlCkBAIC0xMzcsNiArMTQxLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFk
ZE1hcmtlcihOb2RlKiBub2RlLCBjb25zdCBEb2N1bWVudE1hcmtlciYgbmV3TWEKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9wb3NzaWJseUV4aXN0aW5nTWFya2VyVHlwZXMuYWRkKG5ld01hcmtl
ci50eXBlKCkpOworZnByaW50ZihzdGRlcnIsICJhZGRlZCBtYXJrZXIgJWRcbiIsIG5ld01hcmtl
ci50eXBlKCkpOwogCiAgICAgTWFya2VyTGlzdCogbGlzdCA9IG1fbWFya2Vycy5nZXQobm9kZSk7
CiAKQEAgLTM5MSwyNSArMzk2LDM0IEBAIFZlY3RvcjxJbnRSZWN0PiBEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXI6OnJlbmRlcmVkUmVjdHNGb3JNYXJrZXJzKERvY3VtZW50TWFya2VyCiB7CiAgICAg
VmVjdG9yPEludFJlY3Q+IHJlc3VsdDsKIAotICAgIGlmICghcG9zc2libHlIYXNNYXJrZXJzKG1h
cmtlclR5cGUpKQorZnByaW50ZihzdGRlcnIsICIgICByZW5kZXJlZFJlY3RzRm9yTWFya2Vyc1xu
Iik7CisgICAgaWYgKCFwb3NzaWJseUhhc01hcmtlcnMobWFya2VyVHlwZSkpIHsKK2ZwcmludGYo
c3RkZXJyLCAiICBlYXJseSBleGl0IDBcbiIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OworfQog
ICAgIEFTU0VSVCghKG1fbWFya2Vycy5pc0VtcHR5KCkpKTsKIAogICAgIC8vIG91dGVyIGxvb3A6
IHByb2Nlc3MgZWFjaCBub2RlCiAgICAgTWFya2VyTWFwOjppdGVyYXRvciBlbmQgPSBtX21hcmtl
cnMuZW5kKCk7CiAgICAgZm9yIChNYXJrZXJNYXA6Oml0ZXJhdG9yIG5vZGVJdGVyYXRvciA9IG1f
bWFya2Vycy5iZWdpbigpOyBub2RlSXRlcmF0b3IgIT0gZW5kOyArK25vZGVJdGVyYXRvcikgewor
ZnByaW50ZihzdGRlcnIsICIgIGxvb3AgMFxuIik7CiAgICAgICAgIC8vIGlubmVyIGxvb3A7IHBy
b2Nlc3MgZWFjaCBtYXJrZXIgaW4gdGhpcyBub2RlCiAgICAgICAgIE1hcmtlckxpc3QqIGxpc3Qg
PSBub2RlSXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgdW5zaWduZWQgbWFya2VyQ291bnQgPSBs
aXN0LT5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgbWFya2VySW5kZXggPSAwOyBtYXJr
ZXJJbmRleCA8IG1hcmtlckNvdW50OyArK21hcmtlckluZGV4KSB7CitmcHJpbnRmKHN0ZGVyciwg
IiAgbG9vcCAxXG4iKTsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIm
IG1hcmtlciA9IGxpc3QtPmF0KG1hcmtlckluZGV4KTsKIAogICAgICAgICAgICAgLy8gc2tpcCBt
YXJrZXIgdGhhdCBpcyB3cm9uZyB0eXBlCi0gICAgICAgICAgICBpZiAobWFya2VyLnR5cGUoKSAh
PSBtYXJrZXJUeXBlKQorICAgICAgICAgICAgaWYgKG1hcmtlci50eXBlKCkgIT0gbWFya2VyVHlw
ZSkgeworZnByaW50ZihzdGRlcnIsICIgc2tpcCAwXG4iKTsKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKK30KIAotICAgICAgICAgICAgaWYgKCFtYXJrZXIuaXNSZW5kZXJlZCgpKQorICAgICAg
ICAgICAgaWYgKCFtYXJrZXIuaXNSZW5kZXJlZCgpKSB7CitmcHJpbnRmKHN0ZGVyciwgIiBza2lw
IDFcbiIpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworfQogCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKG1hcmtlci5yZW5kZXJlZFJlY3QoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAppbmRleCA2YTM3MjQ4MDA3NmJm
YWNhZWJkMTMwY2JmZGE2NDRlZTM3YjhkOWNjLi44ZGQyYjA0ZmYwNzFiYjlhNjAxZjQwMWYxMDcx
YWY2ODA5M2Q4ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE1hcmtlcihS
YW5nZSosIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uKTsKICAgICB2b2lkIGFkZE1hcmtlclRvTm9kZShOb2RlKiwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUpOwogICAgIHZv
aWQgYWRkTWFya2VyVG9Ob2RlKE5vZGUqLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgUGFzc1JlZlB0cjxEb2N1bWVudE1h
cmtlckRldGFpbHM+KTsKLSAgICB2b2lkIGFkZFRleHRNYXRjaE1hcmtlcihSYW5nZSosIGJvb2wg
YWN0aXZlTWF0Y2gpOworICAgIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdlKiwg
Ym9vbCBhY3RpdmVNYXRjaCk7CiAKICAgICB2b2lkIGNvcHlNYXJrZXJzKE5vZGUqIHNyY05vZGUs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQgbGVuZ3RoLCBOb2RlKiBkc3ROb2RlLCBpbnQgZGVs
dGEpOwogICAgIGJvb2wgaGFzTWFya2VycyhSYW5nZSosIERvY3VtZW50TWFya2VyOjpNYXJrZXJU
eXBlcyA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5k
ZXggZDczNmNlNTNkMzE5OWU5YzQ0M2IxMTNjNDE0ZmE5Yjc0OTg4M2ExNC4uM2E5ZmI0OGQ4MDUw
MTQ3ZWM5ODFmMjA5ZjIxZDkzMTY3YjJmMGFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC0xNTgy
LDcgKzE1ODIsNyBAQCBOb2RlKiBSYW5nZTo6cGFzdExhc3ROb2RlKCkgY29uc3QKICAgICByZXR1
cm4gbV9lbmQuY29udGFpbmVyKCktPnRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKIH0KIAotSW50UmVj
dCBSYW5nZTo6Ym91bmRpbmdCb3goKQorSW50UmVjdCBSYW5nZTo6Ym91bmRpbmdCb3goKSBjb25z
dAogewogICAgIEludFJlY3QgcmVzdWx0OwogICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0czsKQEAg
LTE1OTMsNyArMTU5Myw3IEBAIEludFJlY3QgUmFuZ2U6OmJvdW5kaW5nQm94KCkKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIFJhbmdlOjp0ZXh0UmVjdHMoVmVjdG9yPEludFJlY3Q+JiBy
ZWN0cywgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIFJhbmdlSW5GaXhlZFBvc2l0aW9uKiBpbkZp
eGVkKQordm9pZCBSYW5nZTo6dGV4dFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGJvb2wg
dXNlU2VsZWN0aW9uSGVpZ2h0LCBSYW5nZUluRml4ZWRQb3NpdGlvbiogaW5GaXhlZCkgY29uc3QK
IHsKICAgICBOb2RlKiBzdGFydENvbnRhaW5lciA9IG1fc3RhcnQuY29udGFpbmVyKCk7CiAgICAg
Tm9kZSogZW5kQ29udGFpbmVyID0gbV9lbmQuY29udGFpbmVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCmluZGV4
IDhmMGU5OGI0NzgwODZhOTUyODRlNTAzYjJjMzA3YzljNDlmZjJlZjAuLjA0OGNkNjk5MmQ1Y2M1
YTZjNWMxZmJhOGI4NjAxNDc1ZTgwYjgzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCkBAIC0xMTIsNyArMTEy
LDcgQEAgcHVibGljOgogCiAgICAgU2hhZG93Um9vdCogc2hhZG93Um9vdCgpIGNvbnN0OwogCi0g
ICAgSW50UmVjdCBib3VuZGluZ0JveCgpOworICAgIEludFJlY3QgYm91bmRpbmdCb3goKSBjb25z
dDsKICAgICAKICAgICBlbnVtIFJhbmdlSW5GaXhlZFBvc2l0aW9uIHsKICAgICAgICAgTm90Rml4
ZWRQb3NpdGlvbiwKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICAKICAg
ICAvLyBOb3QgdHJhbnNmb3JtLWZyaWVuZGx5Ci0gICAgdm9pZCB0ZXh0UmVjdHMoVmVjdG9yPElu
dFJlY3Q+JiwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgUmFuZ2VJbkZpeGVkUG9z
aXRpb24qID0gMCk7CisgICAgdm9pZCB0ZXh0UmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgYm9vbCB1
c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgUmFuZ2VJbkZpeGVkUG9zaXRpb24qID0gMCkgY29u
c3Q7CiAgICAgLy8gVHJhbnNmb3JtLWZyaWVuZGx5CiAgICAgdm9pZCB0ZXh0UXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlLCBSYW5nZUluRml4
ZWRQb3NpdGlvbiogPSAwKSBjb25zdDsKICAgICB2b2lkIGdldEJvcmRlckFuZFRleHRRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCmluZGV4IDdjYTNkYmVlYWI3NGM2NTM1NjA1MTM5NTgzZjZkOWM2NzBkZjlmMzYuLjAy
NThmZTBhODEyMTc2MjMxYTc0NWYyYzkyOWY3OGNmNzc3NGQ1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTMzNyw2ICszMzcsNyBAQCBUZXh0SXRlcmF0b3I6
OlRleHRJdGVyYXRvcihjb25zdCBSYW5nZSogciwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZp
b3IpCiAgICAgbV9wb3NpdGlvbk5vZGUgPSBtX25vZGU7CiAjZW5kaWYKIAorZnByaW50ZihzdGRl
cnIsICJhYm91dCB0byBhZHZhbmNlXG4iKTsKICAgICAvLyBpZGVudGlmeSB0aGUgZmlyc3QgcnVu
CiAgICAgYWR2YW5jZSgpOwogfQpAQCAtMzgyLDYgKzM4Myw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9y
OjphZHZhbmNlKCkKICAgICB9CiAKICAgICB3aGlsZSAobV9ub2RlICYmIG1fbm9kZSAhPSBtX3Bh
c3RFbmROb2RlKSB7CitmcHJpbnRmKHN0ZGVyciwgIiAgdGV4dCBpdGVyYXRvciBpdGVyYXRpb25c
biIpOwogICAgICAgICBpZiAoIW1fc2hvdWxkU3RvcCAmJiBtX3N0b3BzT25Gb3JtQ29udHJvbHMg
JiYgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVtZW50KG1f
bm9kZSkpCiAgICAgICAgICAgICBtX3Nob3VsZFN0b3AgPSB0cnVlOwogCkBAIC0zOTcsMTQgKzM5
OSwxNiBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAgICAgICAgIAogICAgICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpOwogICAgICAgICBpZiAo
IXJlbmRlcmVyKSB7CitmcHJpbnRmKHN0ZGVyciwgIm5vIHJlbmRlcmVyXG4iKTsKICAgICAgICAg
ICAgIG1faGFuZGxlZE5vZGUgPSB0cnVlOwogICAgICAgICAgICAgbV9oYW5kbGVkQ2hpbGRyZW4g
PSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gaGFuZGxlIGN1cnJlbnQg
bm9kZSBhY2NvcmRpbmcgdG8gaXRzIHR5cGUKICAgICAgICAgICAgIGlmICghbV9oYW5kbGVkTm9k
ZSkgewotICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNUZXh0KCkgJiYgbV9ub2RlLT5u
b2RlVHlwZSgpID09IE5vZGU6OlRFWFRfTk9ERSkgLy8gRklYTUU6IFdoYXQgYWJvdXQgQ0RBVEFf
U0VDVElPTl9OT0RFPworICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNUZXh0KCkgJiYg
bV9ub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlRFWFRfTk9ERSkgeyAvLyBGSVhNRTogV2hhdCBh
Ym91dCBDREFUQV9TRUNUSU9OX05PREU/CitmcHJpbnRmKHN0ZGVyciwgInRleHQgbm9kZVxuIik7
CiAgICAgICAgICAgICAgICAgICAgIG1faGFuZGxlZE5vZGUgPSBoYW5kbGVUZXh0Tm9kZSgpOwot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyICYmIChyZW5kZXJlci0+aXNJbWFnZSgp
IHx8IHJlbmRlcmVyLT5pc1dpZGdldCgpIHx8CisgICAgICAgICAgICAgICAgfWVsc2UgaWYgKHJl
bmRlcmVyICYmIChyZW5kZXJlci0+aXNJbWFnZSgpIHx8IHJlbmRlcmVyLT5pc1dpZGdldCgpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbmRlcmVyLT5ub2RlKCkgJiYgcmVuZGVyZXIt
Pm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChz
dGF0aWNfY2FzdDxFbGVtZW50Kj4ocmVuZGVyZXItPm5vZGUoKSktPmlzRm9ybUNvbnRyb2xFbGVt
ZW50KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KHJlbmRlcmVyLT5ub2RlKCkpLT5oYXNUYWdOYW1lKGxlZ2VuZFRhZykKQEAgLTQxMyw2ICs0MTcs
NyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAgICAgICAgICAgICAgICAgICAgIG1f
aGFuZGxlZE5vZGUgPSBoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIG1faGFuZGxlZE5vZGUgPSBoYW5kbGVOb25UZXh0Tm9k
ZSgpOworZnByaW50ZihzdGRlcnIsICIlZCAlcFxuIiwgbV9oYW5kbGVkTm9kZSwgbV9wb3NpdGlv
bk5vZGUpOwogICAgICAgICAgICAgICAgIGlmIChtX3Bvc2l0aW9uTm9kZSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtNTM2LDYgKzU0MSw3IEBAIGJvb2wg
VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAKIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5k
bGVUZXh0Qm94KCkKIHsgICAgCitmcHJpbnRmKHN0ZGVyciwgImhhbmRsZVRleHRCb3hcbiIpOwog
ICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gbV9maXJzdExldHRlclRleHQgPyBtX2ZpcnN0TGV0
dGVyVGV4dCA6IHRvUmVuZGVyVGV4dChtX25vZGUtPnJlbmRlcmVyKCkpOwogICAgIGlmIChyZW5k
ZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIW1faWdub3Jlc1N0eWxl
VmlzaWJpbGl0eSkgewogICAgICAgICBtX3RleHRCb3ggPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmgKaW5kZXggNWZlNDViMWE0NzM2NTcxNmJmMmI3MmE0NmRhYmFl
YjZhZjBiZmZlNC4uY2NjYzJmOTI1NmZkMzIyOGQzNDFmM2M2ZTkxNjU4YmM5YTU1NWRlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCkBAIC04Niw2ICs4Niw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyos
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBk
ZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KICAgICBzdGF0
aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJl
Y3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7IH0KIAorICAgIHZpcnR1YWwg
dm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IEludFJlY3QmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0Fy
ZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgY29uc3Qg
SW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykgJiYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKaW5kZXggNjk2ZGIxMmIxOTc3N2Rj
ZDYwN2VlMDQ2MWEyMTUwMWM5MDBkNjBmNS4uZGZkMTVlZDE4ODc4MzA4YTE3ZGFjNTQwMThmNTU1
NjE5OGJmOGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZS5oCkBAIC02MCw3ICs2MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBw
YWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0
IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVt
YihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3Qm
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JikgeyB9CiAKICAgICB2aXJ0dWFs
IEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW0uY3BwCmluZGV4IDY4MmQ4MmQ1YjMzNzkxOGIyNWQwOThiYTc3MTczNGU3OTE1MDVl
OTEuLjRhNDkzOGFjODA4NGYyNDkwZjI0NGVhYTFiYjM2MjE5ZjUxMjFhNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW0uY3BwCkBAIC0xMTMsMTQgKzExMyw4IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bTo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJU
CiAgICAgaWYgKCF0aWNrbWFya3Muc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBH
ZXQgdGhlIGltYWdlIGZvciB0aGUgdGlja21hcmtzLgotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
UmVmUHRyPEltYWdlPiwgZGFzaCwgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGlja21h
cmtEYXNoIikpKTsKLSAgICBpZiAoZGFzaC0+aXNOdWxsKCkpIHsKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb250ZXh0LT5zYXZl
KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsK
KyAgICBjb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOwogCiAgICAgZm9yIChWZWN0
b3I8SW50UmVjdD46OmNvbnN0X2l0ZXJhdG9yIGkgPSB0aWNrbWFya3MuYmVnaW4oKTsgaSAhPSB0
aWNrbWFya3MuZW5kKCk7ICsraSkgewogICAgICAgICAvLyBDYWxjdWxhdGUgaG93IGZhciBkb3du
IChpbiAlKSB0aGUgdGljay1tYXJrIHNob3VsZCBhcHBlYXIuCkBAIC0xMjksMTEgKzEyMywxNCBA
QCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVAogICAgICAgICAvLyBDYWxjdWxhdGUgaG93IGZhciBk
b3duIChpbiBwaXhlbHMpIHRoZSB0aWNrLW1hcmsgc2hvdWxkIGFwcGVhci4KICAgICAgICAgY29u
c3QgaW50IHlQb3MgPSByZWN0LnkoKSArIChyZWN0LmhlaWdodCgpICogcGVyY2VudCk7CiAKLSAg
ICAgICAgSW50UG9pbnQgdGljayhzY3JvbGxiYXItPngoKSwgeVBvcyk7Ci0gICAgICAgIGNvbnRl
eHQtPmRyYXdJbWFnZShkYXNoLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0aWNrKTsKLSAg
ICB9CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigweENDLCAweEFBLCAweDAw
LCAweEZGKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIEZsb2F0UmVjdCB0aWNrUmVj
dChyZWN0LngoKSwgeVBvcywgcmVjdC53aWR0aCgpLCAzKTsKKyAgICAgICAgY29udGV4dC0+Zmls
bFJlY3QodGlja1JlY3QpOwogCi0gICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMHhGRiwgMHhERCwgMHgwMCwgMHhGRiksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBGbG9hdFJlY3QgdGlja1N0cm9rZShyZWN0LngoKSwgeVBv
cyArIDEsIHJlY3Qud2lkdGgoKSwgMSk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHRpY2tT
dHJva2UpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1h
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYy5oCmluZGV4IDE5MzQ2ZTcyM2JhYjI4N2Y5OGUxN2M4MTJkYjU4M2ExYzIwNjcwMjAu
LmVmYmRkMDk5MmMyNDMwMjQxYmU1YzkzMWJjNjM5OWRjOGI4YmUwYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjLmgKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBw
YWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhT
Y3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92
ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIE9WRVJS
SURFOwogICAgIAogcHJpdmF0ZToKICAgICB2b2lkIHBhaW50R2l2ZW5UaWNrbWFya3MoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgY29uc3Qg
VmVjdG9yPEludFJlY3Q+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQppbmRleCA3NWU0YTI5
Yzg4YzIzNzMzZTMyOTY3YTQwZjk1ZGVkOWFiMjI4MzU2Li42YTgzMmVkNWE2YjVlMGZhMzUxMmMz
YTlhZjE0MWI5ZjMyMDQ3ZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KQEAgLTIyNyw3
ICsyMjcsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQwogICAgIH0KICAgICAvLyBUaGUgZW5k
cyBhcmUgcm91bmRlZCBhbmQgdGhlIHRodW1iIGRvZXNuJ3QgZ28gdGhlcmUuCiAgICAgdGlja21h
cmtUcmFja1JlY3QuaW5mbGF0ZVkoLXRpY2ttYXJrVHJhY2tSZWN0LndpZHRoKCkpOwotICAgIC8v
IEluc2V0IGJ5IDIgb24gdGhlIGxlZnQgYW5kIDMgb24gdGhlIHJpZ2h0LgorICAgIC8vIEluc2V0
IGEgYml0LgogICAgIHRpY2ttYXJrVHJhY2tSZWN0LnNldFgodGlja21hcmtUcmFja1JlY3QueCgp
ICsgMik7CiAgICAgdGlja21hcmtUcmFja1JlY3Quc2V0V2lkdGgodGlja21hcmtUcmFja1JlY3Qu
d2lkdGgoKSAtIDUpOwogICAgIHBhaW50R2l2ZW5UaWNrbWFya3MoZHJhd2luZ0NvbnRleHQsIHNj
cm9sbGJhciwgdGlja21hcmtUcmFja1JlY3QsIHRpY2ttYXJrcyk7CkBAIC00MDksNSArNDA5LDMy
IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNj
cm9sbFZpZXcqIHZpZXcsIEdyYXBoaWNzQ29uCiAgICAgfQogfQogCit2b2lkIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWM6OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sK
K2ZwcmludGYoc3RkZXJyLCAiICAgICAgICBwYWludFRpY2ttYXJrc1xuIik7CisgICAgLy8gTm90
ZTogVGhpcyBpcyBvbmx5IHVzZWQgZm9yIGNzcy1zdHlsZWQgc2Nyb2xsYmFycyBvbiBtYWMuCisg
ICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSAhPSBWZXJ0aWNhbFNjcm9sbGJhcikgewor
ZnByaW50ZihzdGRlcnIsICJlYXJseSByZXR1cm4gMVxuIik7CisgICAgICAgIHJldHVybjsKK30K
KworICAgIGlmIChyZWN0LmhlaWdodCgpIDw9IDAgfHwgcmVjdC53aWR0aCgpIDw9IDApIHsKK2Zw
cmludGYoc3RkZXJyLCAiZWFybHkgcmV0dXJuIDJcbiIpOworICAgICAgICByZXR1cm47Cit9CisK
KyAgICBWZWN0b3I8SW50UmVjdD4gdGlja21hcmtzOworICAgIHNjcm9sbGJhci0+Z2V0VGlja21h
cmtzKHRpY2ttYXJrcyk7CisgICAgaWYgKCF0aWNrbWFya3Muc2l6ZSgpKSB7CitmcHJpbnRmKHN0
ZGVyciwgImVhcmx5IHJldHVybiAzXG4iKTsKKyAgICAgICAgcmV0dXJuOworfQorCisgICAgLy8g
SW5zZXQgYSBiaXQuCisgICAgSW50UmVjdCB0aWNrbWFya1RyYWNrUmVjdCA9IHJlY3Q7CisgICAg
dGlja21hcmtUcmFja1JlY3Quc2V0WCh0aWNrbWFya1RyYWNrUmVjdC54KCkgKyAxKTsKKyAgICB0
aWNrbWFya1RyYWNrUmVjdC5zZXRXaWR0aCh0aWNrbWFya1RyYWNrUmVjdC53aWR0aCgpIC0gMik7
CisgICAgcGFpbnRHaXZlblRpY2ttYXJrcyhjb250ZXh0LCBzY3JvbGxiYXIsIHRpY2ttYXJrVHJh
Y2tSZWN0LCB0aWNrbWFya3MpOworfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAppbmRleCA0NGUyYWE2MzFkYzI4MTUwMTc0YmMy
MjUyMzBlOGI2YWFiN2QwZDM1Li42ZDJlMDliMmUyYmFjZWFlNGUxOTdmYzY0MWU3NmFjNzJkN2I1
NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
VGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJU
aGVtZS5jcHAKQEAgLTEzOCw0ICsxMzgsOSBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpw
YWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbAogICAg
IHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnBhaW50UGFydChjb250ZXh0LCBUaHVtYlBh
cnQsIHJlY3QpOwogfQogCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJr
cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkt
PnBhaW50VGlja21hcmtzKGNvbnRleHQsIHNjcm9sbGJhciwgcmVjdCk7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggOWNl
ZjM5NDlmYTlmNGRjNzE4OTM4NzdmOGMxMGM5ZGU2MjQ4ZjQ0Ny4uYzE0ZGUzZmJjZTkzZmY3MTIx
ZTBjNWM3NGJmMzQzYWExYmU4NzBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmgKQEAgLTczLDYgKzczLDcgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CiAgICAgdmlydHVh
bCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50
UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgSW50UmVjdCBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCBlMzIxNDIzMTY5M2ZjOTE5ZGY0MWU3YTQ1NGY3Nzg5Njc4MGUzZGZm
Li5hYTA3NWQ0OTA0YTVjNzExZDZiZWMzZWMwNmNiZTc2MmNmMGRhNzlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02MjQsNiArNjI0LDEyIEBAIFN0cmluZyBJbnRlcm5h
bHM6Om1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG1h
cmtlclR5cGUsCiAgICAgcmV0dXJuIG1hcmtlci0+ZGVzY3JpcHRpb24oKTsKIH0KIAordm9pZCBJ
bnRlcm5hbHM6OmFkZFRleHRNYXRjaE1hcmtlcihjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgaXNB
Y3RpdmUpCit7CisgICAgcmFuZ2UtPm93bmVyRG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRUZXh0
TWF0Y2hNYXJrZXIocmFuZ2UsIGlzQWN0aXZlKTsKK2ZwcmludGYoc3RkZXJyLCAiYWRkZWQgbWFy
a2VyXG4iKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNldFNjcm9sbFZpZXdQb3NpdGlvbihEb2N1
bWVudCogZG9jdW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCAwNDAwNTIzNzhlZThkNTVhMjQ2ZjBjNTYyMDAyMDhlZjYzZWMwOGJl
Li40YTEyZTAyMjRhNDc5YjdlNjQ3NmE0ZTJiYzA1YjAyMjMyMzk3YTU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWdu
ZWQgbWFya2VyQ291bnRGb3JOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2VGb3JOb2RlKE5vZGUqLCBjb25z
dCBTdHJpbmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgU3RyaW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBt
YXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYWRk
VGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdlKiwgYm9vbCBpc0FjdGl2ZSk7CiAKICAgICB2b2lk
IHNldFNjcm9sbFZpZXdQb3NpdGlvbihEb2N1bWVudCosIGxvbmcgeCwgbG9uZyB5LCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiBtb2RlLCBpbnQgZ2FwLCBFeGNlcHRpb25Db2RlJiBlYykgeyBzZXRQYWdpbmF0
aW9uKGRvY3VtZW50LCBtb2RlLCBnYXAsIDAsIGVjKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCmluZGV4IGZkZTQ1NzdlYjNjZjdiZTJjOGRiOWI0ZTgwNWJiNWM1OGI5ZmJhMjgu
LmJiNTNiZjdiYTMxZDMyMTlmYzNjMzBlZGFjMzYzZGE5NzlhNWY3MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTg2LDYgKzg2LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgbWFya2VyQ291bnRGb3JOb2RlKGluIE5vZGUgbm9kZSwgaW4g
RE9NU3RyaW5nIG1hcmtlclR5cGUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBSYW5n
ZSBtYXJrZXJSYW5nZUZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBET01TdHJpbmcgbWFya2VyVHlw
ZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAg
IERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBET01T
dHJpbmcgbWFya2VyVHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CisgICAgICAgIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKGluIFJhbmdlIHJhbmdlLCBp
biBib29sZWFuIGlzQWN0aXZlKTsKIAogICAgICAgICB2b2lkIHNldFNjcm9sbFZpZXdQb3NpdGlv
bihpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyB4LCBpbiBsb25nIHkpIHJhaXNlcyhET01F
eGNlcHRpb24pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153907</attachid>
            <date>2012-07-23 17:05:51 -0700</date>
            <delta_ts>2012-07-23 17:29:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91949-20120723170543.patch</filename>
            <type>text/plain</type>
            <size>22519</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzEwMzdiYTlkZjA2NDI5
MmIwMTRiNWQ2YjYxZGI0ZGRiYWQxNjEwNS4uOTZhMmJhN2ZiNzUxODRlNzA3ZWVkZGIwMGY2YjQw
ZDM3ZTc5YjExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA3LTIzICBOaWNv
IFdlYmVyICA8bmljb2xhc3dlYmVyQGdteC5kZT4KKworICAgICAgICBbY2hyb21pdW1dIFNob3cg
c2VhcmNoIHRpY2ttYXJrcyBvbiBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxOTQ5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGxldHRpbmcg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtzKCkKKyAgICAgICAgZGVsZWdhdGUg
dG8gdGhlIG5hdGl2ZSBTY3JvbGxiYXJUaGVtZS4gVG8gbWFrZSB0aGlzIHBvc3NpYmxlLAorICAg
ICAgICBtb3ZlIHBhaW50VGlja21hcmtzKCkgZnJvbSBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB0
byB0aGUKKyAgICAgICAgc3VwZXJjbGFzcyBTY3JvbGxiYXJUaGVtZS4KKworICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICBNb3ZlZCBwYWludFRpY2ttYXJrcygpIGZyb20g
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUgdG8gaGVyZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZS5oOgorICAgICAgICBSZW1vdmUgcGFpbnRUaWNrbWFya3MoKS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlja21hcmtz
KToKKyAgICAgICAgU3dpdGNoIHRvIGRyYXdpbmcgdGlja21hcmtzIGFzIHZlY3RvcnMsIHNvIHRo
ZXkgY2FuIGJlIGFyYml0cmFyaWx5IHdpZGUuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYyk6CisgICAgICAgIEltcGxlbWVudCBwYWludFRpY2ttYXJrcygpLCBzbyB0aGF0IGNz
cy1zdHlsZWQgc2Nyb2xsYmFycyBnZXQgdGlja21hcmtzIG9uIG1hYy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICBJ
bXBsZW1lbnQgcGFpbnRUaWNrbWFya3MoKSwgc28gdGhhdCBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMg
Z2V0IHRpY2ttYXJrcyBvbiBtYWMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWlu
dFRpY2ttYXJrcyk6CisgICAgICAgIERlbGVnYXRlIHRvIHRoZSBuYXRpdmUgU2Nyb2xsYmFyVGhl
bWUgZm9yIHRpY2ttYXJrIGRyYXdpbmcuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFJlbmRlclNjcm9sbGJh
clRoZW1lKToKKyAgICAgICAgT3ZlcnJpZGUgcGFpbnRUaWNrbWFya3MoKS4KKwogMjAxMi0wNy0y
MyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAg
ICAgIFtFRkxdIG1lZGlhL2NvbnRyb2xzLXN0eWxpbmcuaHRtbCBpcyBmYWlsaW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IDA1NTEw
NzcxMTRiNGJjN2VhN2I4YjFjNGVjZTk1ZTEwNDNlZDg1ZGUuLmFkOTUyMTcwMTIxZWRkYzFjMTJk
YzIwMDI2Y2IzNDFhNTY0NTNkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogaW5saW5lIGJvb2wgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpwb3NzaWJseUhhc01h
cmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzIHR5cGVzKQogeworLy9mcHJpbnRmKHN0
ZGVyciwgInBvc3NpYmx5IGNoZWNrICVkXG4iLCB0eQogICAgIHJldHVybiBtX3Bvc3NpYmx5RXhp
c3RpbmdNYXJrZXJUeXBlcy5pbnRlcnNlY3RzKHR5cGVzKTsKIH0KIApAQCAtOTIsMTYgKzkzLDE5
IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXJUb05vZGUoTm9kZSog
bm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsCiB9CiAKIAotdm9pZCBEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXI6OmFkZFRleHRNYXRjaE1hcmtlcihSYW5nZSogcmFuZ2UsIGJvb2wgYWN0aXZlTWF0
Y2gpCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkVGV4dE1hdGNoTWFya2VyKGNv
bnN0IFJhbmdlKiByYW5nZSwgYm9vbCBhY3RpdmVNYXRjaCkKIHsKK2ZwcmludGYoc3RkZXJyLCAi
YmVmb3JlIG1hcmtlZCB0ZXh0IGxvb3BcbiIpOwogICAgIC8vIFVzZSBhIFRleHRJdGVyYXRvciB0
byB2aXNpdCB0aGUgcG90ZW50aWFsbHkgbXVsdGlwbGUgbm9kZXMgdGhlIHJhbmdlIGNvdmVycy4K
ICAgICBmb3IgKFRleHRJdGVyYXRvciBtYXJrZWRUZXh0KHJhbmdlKTsgIW1hcmtlZFRleHQuYXRF
bmQoKTsgbWFya2VkVGV4dC5hZHZhbmNlKCkpIHsKK2ZwcmludGYoc3RkZXJyLCAibWFya2VkIHRl
eHQgbG9vcFxuIik7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gdGV4dFBpZWNlID0gbWFya2VkVGV4
dC5yYW5nZSgpOwogICAgICAgICBpbnQgZXhjZXB0aW9uID0gMDsKICAgICAgICAgdW5zaWduZWQg
c3RhcnRPZmZzZXQgPSB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KGV4Y2VwdGlvbik7CiAgICAgICAg
IHVuc2lnbmVkIGVuZE9mZnNldCA9IHRleHRQaWVjZS0+ZW5kT2Zmc2V0KGV4Y2VwdGlvbik7CiAg
ICAgICAgIGFkZE1hcmtlcih0ZXh0UGllY2UtPnN0YXJ0Q29udGFpbmVyKGV4Y2VwdGlvbiksIERv
Y3VtZW50TWFya2VyKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQsIGFjdGl2ZU1hdGNoKSk7CiAgICAg
ICAgIGlmIChlbmRPZmZzZXQgPiBzdGFydE9mZnNldCkgeworZnByaW50ZihzdGRlcnIsICJtYXJr
ZWQgdGV4dCBsb29wIGZvdW5kIHNvbWV0aGluZ1xuIik7CiAgICAgICAgICAgICAvLyBSZW5kZXJl
ZCByZWN0cyBmb3IgbWFya2VycyBpbiBXZWJLaXQgYXJlIG5vdCBwb3B1bGF0ZWQgdW50aWwgZWFj
aCB0aW1lCiAgICAgICAgICAgICAvLyB0aGUgbWFya2VycyBhcmUgcGFpbnRlZC4gSG93ZXZlciwg
d2UgbmVlZCBpdCB0byBoYXBwZW4gc29vbmVyLCBiZWNhdXNlCiAgICAgICAgICAgICAvLyB0aGUg
d2hvbGUgcHVycG9zZSBvZiB0aWNrbWFya3Mgb24gdGhlIHNjcm9sbGJhciBpcyB0byBzaG93IHdo
ZXJlCkBAIC0xMzcsNiArMTQxLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFk
ZE1hcmtlcihOb2RlKiBub2RlLCBjb25zdCBEb2N1bWVudE1hcmtlciYgbmV3TWEKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9wb3NzaWJseUV4aXN0aW5nTWFya2VyVHlwZXMuYWRkKG5ld01hcmtl
ci50eXBlKCkpOworZnByaW50ZihzdGRlcnIsICJhZGRlZCBtYXJrZXIgJWRcbiIsIG5ld01hcmtl
ci50eXBlKCkpOwogCiAgICAgTWFya2VyTGlzdCogbGlzdCA9IG1fbWFya2Vycy5nZXQobm9kZSk7
CiAKQEAgLTM5MSwyNSArMzk2LDM0IEBAIFZlY3RvcjxJbnRSZWN0PiBEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXI6OnJlbmRlcmVkUmVjdHNGb3JNYXJrZXJzKERvY3VtZW50TWFya2VyCiB7CiAgICAg
VmVjdG9yPEludFJlY3Q+IHJlc3VsdDsKIAotICAgIGlmICghcG9zc2libHlIYXNNYXJrZXJzKG1h
cmtlclR5cGUpKQorZnByaW50ZihzdGRlcnIsICIgICByZW5kZXJlZFJlY3RzRm9yTWFya2Vyc1xu
Iik7CisgICAgaWYgKCFwb3NzaWJseUhhc01hcmtlcnMobWFya2VyVHlwZSkpIHsKK2ZwcmludGYo
c3RkZXJyLCAiICBlYXJseSBleGl0IDBcbiIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OworfQog
ICAgIEFTU0VSVCghKG1fbWFya2Vycy5pc0VtcHR5KCkpKTsKIAogICAgIC8vIG91dGVyIGxvb3A6
IHByb2Nlc3MgZWFjaCBub2RlCiAgICAgTWFya2VyTWFwOjppdGVyYXRvciBlbmQgPSBtX21hcmtl
cnMuZW5kKCk7CiAgICAgZm9yIChNYXJrZXJNYXA6Oml0ZXJhdG9yIG5vZGVJdGVyYXRvciA9IG1f
bWFya2Vycy5iZWdpbigpOyBub2RlSXRlcmF0b3IgIT0gZW5kOyArK25vZGVJdGVyYXRvcikgewor
ZnByaW50ZihzdGRlcnIsICIgIGxvb3AgMFxuIik7CiAgICAgICAgIC8vIGlubmVyIGxvb3A7IHBy
b2Nlc3MgZWFjaCBtYXJrZXIgaW4gdGhpcyBub2RlCiAgICAgICAgIE1hcmtlckxpc3QqIGxpc3Qg
PSBub2RlSXRlcmF0b3ItPnNlY29uZDsKICAgICAgICAgdW5zaWduZWQgbWFya2VyQ291bnQgPSBs
aXN0LT5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgbWFya2VySW5kZXggPSAwOyBtYXJr
ZXJJbmRleCA8IG1hcmtlckNvdW50OyArK21hcmtlckluZGV4KSB7CitmcHJpbnRmKHN0ZGVyciwg
IiAgbG9vcCAxXG4iKTsKICAgICAgICAgICAgIGNvbnN0IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIm
IG1hcmtlciA9IGxpc3QtPmF0KG1hcmtlckluZGV4KTsKIAogICAgICAgICAgICAgLy8gc2tpcCBt
YXJrZXIgdGhhdCBpcyB3cm9uZyB0eXBlCi0gICAgICAgICAgICBpZiAobWFya2VyLnR5cGUoKSAh
PSBtYXJrZXJUeXBlKQorICAgICAgICAgICAgaWYgKG1hcmtlci50eXBlKCkgIT0gbWFya2VyVHlw
ZSkgeworZnByaW50ZihzdGRlcnIsICIgc2tpcCAwXG4iKTsKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKK30KIAotICAgICAgICAgICAgaWYgKCFtYXJrZXIuaXNSZW5kZXJlZCgpKQorICAgICAg
ICAgICAgaWYgKCFtYXJrZXIuaXNSZW5kZXJlZCgpKSB7CitmcHJpbnRmKHN0ZGVyciwgIiBza2lw
IDFcbiIpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworfQogCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKG1hcmtlci5yZW5kZXJlZFJlY3QoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAppbmRleCA2YTM3MjQ4MDA3NmJm
YWNhZWJkMTMwY2JmZGE2NDRlZTM3YjhkOWNjLi44ZGQyYjA0ZmYwNzFiYjlhNjAxZjQwMWYxMDcx
YWY2ODA5M2Q4ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE1hcmtlcihS
YW5nZSosIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uKTsKICAgICB2b2lkIGFkZE1hcmtlclRvTm9kZShOb2RlKiwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGxlbmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUpOwogICAgIHZv
aWQgYWRkTWFya2VyVG9Ob2RlKE5vZGUqLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgUGFzc1JlZlB0cjxEb2N1bWVudE1h
cmtlckRldGFpbHM+KTsKLSAgICB2b2lkIGFkZFRleHRNYXRjaE1hcmtlcihSYW5nZSosIGJvb2wg
YWN0aXZlTWF0Y2gpOworICAgIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdlKiwg
Ym9vbCBhY3RpdmVNYXRjaCk7CiAKICAgICB2b2lkIGNvcHlNYXJrZXJzKE5vZGUqIHNyY05vZGUs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQgbGVuZ3RoLCBOb2RlKiBkc3ROb2RlLCBpbnQgZGVs
dGEpOwogICAgIGJvb2wgaGFzTWFya2VycyhSYW5nZSosIERvY3VtZW50TWFya2VyOjpNYXJrZXJU
eXBlcyA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKaW5k
ZXggZDczNmNlNTNkMzE5OWU5YzQ0M2IxMTNjNDE0ZmE5Yjc0OTg4M2ExNC4uM2E5ZmI0OGQ4MDUw
MTQ3ZWM5ODFmMjA5ZjIxZDkzMTY3YjJmMGFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCkBAIC0xNTgy
LDcgKzE1ODIsNyBAQCBOb2RlKiBSYW5nZTo6cGFzdExhc3ROb2RlKCkgY29uc3QKICAgICByZXR1
cm4gbV9lbmQuY29udGFpbmVyKCktPnRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKIH0KIAotSW50UmVj
dCBSYW5nZTo6Ym91bmRpbmdCb3goKQorSW50UmVjdCBSYW5nZTo6Ym91bmRpbmdCb3goKSBjb25z
dAogewogICAgIEludFJlY3QgcmVzdWx0OwogICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0czsKQEAg
LTE1OTMsNyArMTU5Myw3IEBAIEludFJlY3QgUmFuZ2U6OmJvdW5kaW5nQm94KCkKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIFJhbmdlOjp0ZXh0UmVjdHMoVmVjdG9yPEludFJlY3Q+JiBy
ZWN0cywgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIFJhbmdlSW5GaXhlZFBvc2l0aW9uKiBpbkZp
eGVkKQordm9pZCBSYW5nZTo6dGV4dFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGJvb2wg
dXNlU2VsZWN0aW9uSGVpZ2h0LCBSYW5nZUluRml4ZWRQb3NpdGlvbiogaW5GaXhlZCkgY29uc3QK
IHsKICAgICBOb2RlKiBzdGFydENvbnRhaW5lciA9IG1fc3RhcnQuY29udGFpbmVyKCk7CiAgICAg
Tm9kZSogZW5kQ29udGFpbmVyID0gbV9lbmQuY29udGFpbmVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCmluZGV4
IDhmMGU5OGI0NzgwODZhOTUyODRlNTAzYjJjMzA3YzljNDlmZjJlZjAuLjA0OGNkNjk5MmQ1Y2M1
YTZjNWMxZmJhOGI4NjAxNDc1ZTgwYjgzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCkBAIC0xMTIsNyArMTEy
LDcgQEAgcHVibGljOgogCiAgICAgU2hhZG93Um9vdCogc2hhZG93Um9vdCgpIGNvbnN0OwogCi0g
ICAgSW50UmVjdCBib3VuZGluZ0JveCgpOworICAgIEludFJlY3QgYm91bmRpbmdCb3goKSBjb25z
dDsKICAgICAKICAgICBlbnVtIFJhbmdlSW5GaXhlZFBvc2l0aW9uIHsKICAgICAgICAgTm90Rml4
ZWRQb3NpdGlvbiwKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICAKICAg
ICAvLyBOb3QgdHJhbnNmb3JtLWZyaWVuZGx5Ci0gICAgdm9pZCB0ZXh0UmVjdHMoVmVjdG9yPElu
dFJlY3Q+JiwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgUmFuZ2VJbkZpeGVkUG9z
aXRpb24qID0gMCk7CisgICAgdm9pZCB0ZXh0UmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgYm9vbCB1
c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgUmFuZ2VJbkZpeGVkUG9zaXRpb24qID0gMCkgY29u
c3Q7CiAgICAgLy8gVHJhbnNmb3JtLWZyaWVuZGx5CiAgICAgdm9pZCB0ZXh0UXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlLCBSYW5nZUluRml4
ZWRQb3NpdGlvbiogPSAwKSBjb25zdDsKICAgICB2b2lkIGdldEJvcmRlckFuZFRleHRRdWFkcyhW
ZWN0b3I8RmxvYXRRdWFkPiYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCmluZGV4IDdjYTNkYmVlYWI3NGM2NTM1NjA1MTM5NTgzZjZkOWM2NzBkZjlmMzYuLjAy
NThmZTBhODEyMTc2MjMxYTc0NWYyYzkyOWY3OGNmNzc3NGQ1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTMzNyw2ICszMzcsNyBAQCBUZXh0SXRlcmF0b3I6
OlRleHRJdGVyYXRvcihjb25zdCBSYW5nZSogciwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZp
b3IpCiAgICAgbV9wb3NpdGlvbk5vZGUgPSBtX25vZGU7CiAjZW5kaWYKIAorZnByaW50ZihzdGRl
cnIsICJhYm91dCB0byBhZHZhbmNlXG4iKTsKICAgICAvLyBpZGVudGlmeSB0aGUgZmlyc3QgcnVu
CiAgICAgYWR2YW5jZSgpOwogfQpAQCAtMzgyLDYgKzM4Myw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9y
OjphZHZhbmNlKCkKICAgICB9CiAKICAgICB3aGlsZSAobV9ub2RlICYmIG1fbm9kZSAhPSBtX3Bh
c3RFbmROb2RlKSB7CitmcHJpbnRmKHN0ZGVyciwgIiAgdGV4dCBpdGVyYXRvciBpdGVyYXRpb25c
biIpOwogICAgICAgICBpZiAoIW1fc2hvdWxkU3RvcCAmJiBtX3N0b3BzT25Gb3JtQ29udHJvbHMg
JiYgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZW5jbG9zaW5nRm9ybUNvbnRyb2xFbGVtZW50KG1f
bm9kZSkpCiAgICAgICAgICAgICBtX3Nob3VsZFN0b3AgPSB0cnVlOwogCkBAIC0zOTcsMTQgKzM5
OSwxNiBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAgICAgICAgIAogICAgICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9ub2RlLT5yZW5kZXJlcigpOwogICAgICAgICBpZiAo
IXJlbmRlcmVyKSB7CitmcHJpbnRmKHN0ZGVyciwgIm5vIHJlbmRlcmVyXG4iKTsKICAgICAgICAg
ICAgIG1faGFuZGxlZE5vZGUgPSB0cnVlOwogICAgICAgICAgICAgbV9oYW5kbGVkQ2hpbGRyZW4g
PSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gaGFuZGxlIGN1cnJlbnQg
bm9kZSBhY2NvcmRpbmcgdG8gaXRzIHR5cGUKICAgICAgICAgICAgIGlmICghbV9oYW5kbGVkTm9k
ZSkgewotICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNUZXh0KCkgJiYgbV9ub2RlLT5u
b2RlVHlwZSgpID09IE5vZGU6OlRFWFRfTk9ERSkgLy8gRklYTUU6IFdoYXQgYWJvdXQgQ0RBVEFf
U0VDVElPTl9OT0RFPworICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNUZXh0KCkgJiYg
bV9ub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlRFWFRfTk9ERSkgeyAvLyBGSVhNRTogV2hhdCBh
Ym91dCBDREFUQV9TRUNUSU9OX05PREU/CitmcHJpbnRmKHN0ZGVyciwgInRleHQgbm9kZVxuIik7
CiAgICAgICAgICAgICAgICAgICAgIG1faGFuZGxlZE5vZGUgPSBoYW5kbGVUZXh0Tm9kZSgpOwot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyICYmIChyZW5kZXJlci0+aXNJbWFnZSgp
IHx8IHJlbmRlcmVyLT5pc1dpZGdldCgpIHx8CisgICAgICAgICAgICAgICAgfWVsc2UgaWYgKHJl
bmRlcmVyICYmIChyZW5kZXJlci0+aXNJbWFnZSgpIHx8IHJlbmRlcmVyLT5pc1dpZGdldCgpIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbmRlcmVyLT5ub2RlKCkgJiYgcmVuZGVyZXIt
Pm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChz
dGF0aWNfY2FzdDxFbGVtZW50Kj4ocmVuZGVyZXItPm5vZGUoKSktPmlzRm9ybUNvbnRyb2xFbGVt
ZW50KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KHJlbmRlcmVyLT5ub2RlKCkpLT5oYXNUYWdOYW1lKGxlZ2VuZFRhZykKQEAgLTQxMyw2ICs0MTcs
NyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAgICAgICAgICAgICAgICAgICAgIG1f
aGFuZGxlZE5vZGUgPSBoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKTsKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIG1faGFuZGxlZE5vZGUgPSBoYW5kbGVOb25UZXh0Tm9k
ZSgpOworZnByaW50ZihzdGRlcnIsICIlZCAlcFxuIiwgbV9oYW5kbGVkTm9kZSwgbV9wb3NpdGlv
bk5vZGUpOwogICAgICAgICAgICAgICAgIGlmIChtX3Bvc2l0aW9uTm9kZSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtNTM2LDYgKzU0MSw3IEBAIGJvb2wg
VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAKIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5k
bGVUZXh0Qm94KCkKIHsgICAgCitmcHJpbnRmKHN0ZGVyciwgImhhbmRsZVRleHRCb3hcbiIpOwog
ICAgIFJlbmRlclRleHQqIHJlbmRlcmVyID0gbV9maXJzdExldHRlclRleHQgPyBtX2ZpcnN0TGV0
dGVyVGV4dCA6IHRvUmVuZGVyVGV4dChtX25vZGUtPnJlbmRlcmVyKCkpOwogICAgIGlmIChyZW5k
ZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgJiYgIW1faWdub3Jlc1N0eWxl
VmlzaWJpbGl0eSkgewogICAgICAgICBtX3RleHRCb3ggPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmgKaW5kZXggNWZlNDViMWE0NzM2NTcxNmJmMmI3MmE0NmRhYmFl
YjZhZjBiZmZlNC4uY2NjYzJmOTI1NmZkMzIyOGQzNDFmM2M2ZTkxNjU4YmM5YTU1NWRlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCkBAIC04Niw2ICs4Niw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyos
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBk
ZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KICAgICBzdGF0
aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJl
Y3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7IH0KIAorICAgIHZpcnR1YWwg
dm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IEludFJlY3QmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0Fy
ZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgY29uc3Qg
SW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykgJiYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKaW5kZXggNjk2ZGIxMmIxOTc3N2Rj
ZDYwN2VlMDQ2MWEyMTUwMWM5MDBkNjBmNS4uZGZkMTVlZDE4ODc4MzA4YTE3ZGFjNTQwMThmNTU1
NjE5OGJmOGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZS5oCkBAIC02MCw3ICs2MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBw
YWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0
IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVt
YihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3Qm
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JikgeyB9CiAKICAgICB2aXJ0dWFs
IEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW0uY3BwCmluZGV4IDY4MmQ4MmQ1YjMzNzkxOGIyNWQwOThiYTc3MTczNGU3OTE1MDVl
OTEuLjRhNDkzOGFjODA4NGYyNDkwZjI0NGVhYTFiYjM2MjE5ZjUxMjFhNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW0uY3BwCkBAIC0xMTMsMTQgKzExMyw4IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bTo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJU
CiAgICAgaWYgKCF0aWNrbWFya3Muc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBH
ZXQgdGhlIGltYWdlIGZvciB0aGUgdGlja21hcmtzLgotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
UmVmUHRyPEltYWdlPiwgZGFzaCwgKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgidGlja21h
cmtEYXNoIikpKTsKLSAgICBpZiAoZGFzaC0+aXNOdWxsKCkpIHsKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb250ZXh0LT5zYXZl
KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsK
KyAgICBjb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOwogCiAgICAgZm9yIChWZWN0
b3I8SW50UmVjdD46OmNvbnN0X2l0ZXJhdG9yIGkgPSB0aWNrbWFya3MuYmVnaW4oKTsgaSAhPSB0
aWNrbWFya3MuZW5kKCk7ICsraSkgewogICAgICAgICAvLyBDYWxjdWxhdGUgaG93IGZhciBkb3du
IChpbiAlKSB0aGUgdGljay1tYXJrIHNob3VsZCBhcHBlYXIuCkBAIC0xMjksMTEgKzEyMywxNCBA
QCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVAogICAgICAgICAvLyBDYWxjdWxhdGUgaG93IGZhciBk
b3duIChpbiBwaXhlbHMpIHRoZSB0aWNrLW1hcmsgc2hvdWxkIGFwcGVhci4KICAgICAgICAgY29u
c3QgaW50IHlQb3MgPSByZWN0LnkoKSArIChyZWN0LmhlaWdodCgpICogcGVyY2VudCk7CiAKLSAg
ICAgICAgSW50UG9pbnQgdGljayhzY3JvbGxiYXItPngoKSwgeVBvcyk7Ci0gICAgICAgIGNvbnRl
eHQtPmRyYXdJbWFnZShkYXNoLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0aWNrKTsKLSAg
ICB9CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigweENDLCAweEFBLCAweDAw
LCAweEZGKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIEZsb2F0UmVjdCB0aWNrUmVj
dChyZWN0LngoKSwgeVBvcywgcmVjdC53aWR0aCgpLCAzKTsKKyAgICAgICAgY29udGV4dC0+Zmls
bFJlY3QodGlja1JlY3QpOwogCi0gICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMHhGRiwgMHhERCwgMHgwMCwgMHhGRiksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBGbG9hdFJlY3QgdGlja1N0cm9rZShyZWN0LngoKSwgeVBv
cyArIDEsIHJlY3Qud2lkdGgoKSwgMSk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHRpY2tT
dHJva2UpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1h
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYy5oCmluZGV4IDE5MzQ2ZTcyM2JhYjI4N2Y5OGUxN2M4MTJkYjU4M2ExYzIwNjcwMjAu
LmVmYmRkMDk5MmMyNDMwMjQxYmU1YzkzMWJjNjM5OWRjOGI4YmUwYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjLmgKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBw
YWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhT
Y3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92
ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIE9WRVJS
SURFOwogICAgIAogcHJpdmF0ZToKICAgICB2b2lkIHBhaW50R2l2ZW5UaWNrbWFya3MoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgY29uc3Qg
VmVjdG9yPEludFJlY3Q+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQppbmRleCA3NWU0YTI5
Yzg4YzIzNzMzZTMyOTY3YTQwZjk1ZGVkOWFiMjI4MzU2Li42YTgzMmVkNWE2YjVlMGZhMzUxMmMz
YTlhZjE0MWI5ZjMyMDQ3ZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KQEAgLTIyNyw3
ICsyMjcsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQwogICAgIH0KICAgICAvLyBUaGUgZW5k
cyBhcmUgcm91bmRlZCBhbmQgdGhlIHRodW1iIGRvZXNuJ3QgZ28gdGhlcmUuCiAgICAgdGlja21h
cmtUcmFja1JlY3QuaW5mbGF0ZVkoLXRpY2ttYXJrVHJhY2tSZWN0LndpZHRoKCkpOwotICAgIC8v
IEluc2V0IGJ5IDIgb24gdGhlIGxlZnQgYW5kIDMgb24gdGhlIHJpZ2h0LgorICAgIC8vIEluc2V0
IGEgYml0LgogICAgIHRpY2ttYXJrVHJhY2tSZWN0LnNldFgodGlja21hcmtUcmFja1JlY3QueCgp
ICsgMik7CiAgICAgdGlja21hcmtUcmFja1JlY3Quc2V0V2lkdGgodGlja21hcmtUcmFja1JlY3Qu
d2lkdGgoKSAtIDUpOwogICAgIHBhaW50R2l2ZW5UaWNrbWFya3MoZHJhd2luZ0NvbnRleHQsIHNj
cm9sbGJhciwgdGlja21hcmtUcmFja1JlY3QsIHRpY2ttYXJrcyk7CkBAIC00MDksNSArNDA5LDMy
IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNj
cm9sbFZpZXcqIHZpZXcsIEdyYXBoaWNzQ29uCiAgICAgfQogfQogCit2b2lkIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWM6OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sK
K2ZwcmludGYoc3RkZXJyLCAiICAgICAgICBwYWludFRpY2ttYXJrc1xuIik7CisgICAgLy8gTm90
ZTogVGhpcyBpcyBvbmx5IHVzZWQgZm9yIGNzcy1zdHlsZWQgc2Nyb2xsYmFycyBvbiBtYWMuCisg
ICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSAhPSBWZXJ0aWNhbFNjcm9sbGJhcikgewor
ZnByaW50ZihzdGRlcnIsICJlYXJseSByZXR1cm4gMVxuIik7CisgICAgICAgIHJldHVybjsKK30K
KworICAgIGlmIChyZWN0LmhlaWdodCgpIDw9IDAgfHwgcmVjdC53aWR0aCgpIDw9IDApIHsKK2Zw
cmludGYoc3RkZXJyLCAiZWFybHkgcmV0dXJuIDJcbiIpOworICAgICAgICByZXR1cm47Cit9CisK
KyAgICBWZWN0b3I8SW50UmVjdD4gdGlja21hcmtzOworICAgIHNjcm9sbGJhci0+Z2V0VGlja21h
cmtzKHRpY2ttYXJrcyk7CisgICAgaWYgKCF0aWNrbWFya3Muc2l6ZSgpKSB7CitmcHJpbnRmKHN0
ZGVyciwgImVhcmx5IHJldHVybiAzXG4iKTsKKyAgICAgICAgcmV0dXJuOworfQorCisgICAgLy8g
SW5zZXQgYSBiaXQuCisgICAgSW50UmVjdCB0aWNrbWFya1RyYWNrUmVjdCA9IHJlY3Q7CisgICAg
dGlja21hcmtUcmFja1JlY3Quc2V0WCh0aWNrbWFya1RyYWNrUmVjdC54KCkgKyAxKTsKKyAgICB0
aWNrbWFya1RyYWNrUmVjdC5zZXRXaWR0aCh0aWNrbWFya1RyYWNrUmVjdC53aWR0aCgpIC0gMik7
CisgICAgcGFpbnRHaXZlblRpY2ttYXJrcyhjb250ZXh0LCBzY3JvbGxiYXIsIHRpY2ttYXJrVHJh
Y2tSZWN0LCB0aWNrbWFya3MpOworfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAppbmRleCA0NGUyYWE2MzFkYzI4MTUwMTc0YmMy
MjUyMzBlOGI2YWFiN2QwZDM1Li42ZDJlMDliMmUyYmFjZWFlNGUxOTdmYzY0MWU3NmFjNzJkN2I1
NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
VGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJU
aGVtZS5jcHAKQEAgLTEzOCw0ICsxMzgsOSBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpw
YWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbAogICAg
IHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnBhaW50UGFydChjb250ZXh0LCBUaHVtYlBh
cnQsIHJlY3QpOwogfQogCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJr
cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkt
PnBhaW50VGlja21hcmtzKGNvbnRleHQsIHNjcm9sbGJhciwgcmVjdCk7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggOWNl
ZjM5NDlmYTlmNGRjNzE4OTM4NzdmOGMxMGM5ZGU2MjQ4ZjQ0Ny4uYzE0ZGUzZmJjZTkzZmY3MTIx
ZTBjNWM3NGJmMzQzYWExYmU4NzBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmgKQEAgLTczLDYgKzczLDcgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CiAgICAgdmlydHVh
bCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50
UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgSW50UmVjdCBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCBlMzIxNDIzMTY5M2ZjOTE5ZGY0MWU3YTQ1NGY3Nzg5Njc4MGUzZGZm
Li5hYTA3NWQ0OTA0YTVjNzExZDZiZWMzZWMwNmNiZTc2MmNmMGRhNzlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02MjQsNiArNjI0LDEyIEBAIFN0cmluZyBJbnRlcm5h
bHM6Om1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG1h
cmtlclR5cGUsCiAgICAgcmV0dXJuIG1hcmtlci0+ZGVzY3JpcHRpb24oKTsKIH0KIAordm9pZCBJ
bnRlcm5hbHM6OmFkZFRleHRNYXRjaE1hcmtlcihjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgaXNB
Y3RpdmUpCit7CisgICAgcmFuZ2UtPm93bmVyRG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRUZXh0
TWF0Y2hNYXJrZXIocmFuZ2UsIGlzQWN0aXZlKTsKK2ZwcmludGYoc3RkZXJyLCAiYWRkZWQgbWFy
a2VyXG4iKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNldFNjcm9sbFZpZXdQb3NpdGlvbihEb2N1
bWVudCogZG9jdW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCAwNDAwNTIzNzhlZThkNTVhMjQ2ZjBjNTYyMDAyMDhlZjYzZWMwOGJl
Li40YTEyZTAyMjRhNDc5YjdlNjQ3NmE0ZTJiYzA1YjAyMjMyMzk3YTU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWdu
ZWQgbWFya2VyQ291bnRGb3JOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2VGb3JOb2RlKE5vZGUqLCBjb25z
dCBTdHJpbmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgU3RyaW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBt
YXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYWRk
VGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdlKiwgYm9vbCBpc0FjdGl2ZSk7CiAKICAgICB2b2lk
IHNldFNjcm9sbFZpZXdQb3NpdGlvbihEb2N1bWVudCosIGxvbmcgeCwgbG9uZyB5LCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiBtb2RlLCBpbnQgZ2FwLCBFeGNlcHRpb25Db2RlJiBlYykgeyBzZXRQYWdpbmF0
aW9uKGRvY3VtZW50LCBtb2RlLCBnYXAsIDAsIGVjKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCmluZGV4IGZkZTQ1NzdlYjNjZjdiZTJjOGRiOWI0ZTgwNWJiNWM1OGI5ZmJhMjgu
LmJiNTNiZjdiYTMxZDMyMTlmYzNjMzBlZGFjMzYzZGE5NzlhNWY3MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTg2LDYgKzg2LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgbWFya2VyQ291bnRGb3JOb2RlKGluIE5vZGUgbm9kZSwgaW4g
RE9NU3RyaW5nIG1hcmtlclR5cGUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBSYW5n
ZSBtYXJrZXJSYW5nZUZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBET01TdHJpbmcgbWFya2VyVHlw
ZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAg
IERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBET01T
dHJpbmcgbWFya2VyVHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CisgICAgICAgIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKGluIFJhbmdlIHJhbmdlLCBp
biBib29sZWFuIGlzQWN0aXZlKTsKIAogICAgICAgICB2b2lkIHNldFNjcm9sbFZpZXdQb3NpdGlv
bihpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyB4LCBpbiBsb25nIHkpIHJhaXNlcyhET01F
eGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zY3Jv
bGxiYXItdGlja21hcmtzLXN0eWxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
c2Nyb2xsYmFyLXRpY2ttYXJrcy1zdHlsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGM0NzlkNmM4YjM1
OTYwZWFjYTkzZTQ2YzY5Y2QyYTc1OTAzMzkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvc2Nyb2xsYmFyLXRpY2ttYXJrcy1zdHlsZWQuaHRtbApAQCAtMCww
ICsxLDU3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxoZWFkPgorPHN0eWxlPgoraHRtbCB7CisgICAg
Zm9udDogQWhlbSAxMHB4OworICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IG5vbmU7Cit9Cis6
Oi13ZWJraXQtc2Nyb2xsYmFyIHsKKyAgICB3aWR0aDogMTNweDsKKyAgICBoZWlnaHQ6IDEzcHg7
Cit9Cis6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOmdy
ZWVuOworfQorOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CisgICAgYmFja2dyb3VuZC1jb2xv
cjpncmF5OworfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBoaWdobGlnaHQoKQorewor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0
Tm9kZUNvbnRlbnRzKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbHQnKSk7CisgICAgLy9nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICAgICAgd2luZG93LmludGVybmFscy5hZGRUZXh0TWF0Y2hNYXJrZXIocmFuZ2UsIHRydWUp
OworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJoaWdobGlnaHQo
KTsiPgorCis8cD5wMCBhc2RmIGFzZGYKKzxwPnAxIGFzZGYgYXNkZgorPHA+cDIgYXNkZiBhc2Rm
Cis8cD5wMyBhc2RmIGFzZGYKKzxwPnA0IGFzZGYgYXNkZgorPHA+cDUgYXNkZiBhc2RmCis8cD5w
NiBhc2RmIGFzZGYKKzxwPnA3IGFzZGYgYXNkZgorPHA+cDggYXNkZiBhc2RmCis8cD5wOSBhc2Rm
IGFzZGYKKworCis8cD5wMTAgYXNkZiBhc2RmCis8cD5wMTEgYXNkZiBhc2RmCis8cD5wMTIgYXNk
ZiBhc2RmCis8cD5wMTMgYXNkZiBhc2RmCis8cD5wMTQgYXNkZiBhc2RmCis8cD5wMTUgYXNkZiBh
c2RmCis8cD5wMTYgPHNwYW4gaWQ9ImVsdCI+YXNkZjwvc3Bhbj4gYXNkZgorPHA+cDE3IGFzZGYg
YXNkZgorPHA+cDE4IGFzZGYgYXNkZgorPHA+cDE5IGFzZGYgYXNkZgorCis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153914</attachid>
            <date>2012-07-23 17:29:18 -0700</date>
            <delta_ts>2012-07-23 17:47:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91949-20120723172910.patch</filename>
            <type>text/plain</type>
            <size>27194</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzEwMzdiYTlkZjA2NDI5
MmIwMTRiNWQ2YjYxZGI0ZGRiYWQxNjEwNS4uNGJlZWQ4YmJkYzg4MzI2Yzc4ZTY3MGFkNjRjZWU0
NDE1YmRkNmZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA3LTIzICBOaWNv
IFdlYmVyICA8bmljb2xhc3dlYmVyQGdteC5kZT4KKworICAgICAgICBbY2hyb21pdW1dIFNob3cg
c2VhcmNoIHRpY2ttYXJrcyBvbiBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxOTQ5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGxldHRpbmcg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtzKCkKKyAgICAgICAgZGVsZWdhdGUg
dG8gdGhlIG5hdGl2ZSBTY3JvbGxiYXJUaGVtZS4gVG8gbWFrZSB0aGlzIHBvc3NpYmxlLAorICAg
ICAgICBtb3ZlIHBhaW50VGlja21hcmtzKCkgZnJvbSBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB0
byB0aGUKKyAgICAgICAgc3VwZXJjbGFzcyBTY3JvbGxiYXJUaGVtZS4KKworICAgICAgICBGb3Ig
dGVzdGluZywgYWRkIGludGVybmFscy5hZGRUZXh0TWF0Y2hNYXJrZXIoKSBhbmQgYWRkIGEgcGl4
ZWwgdGVzdC4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICBNb3Zl
ZCBwYWludFRpY2ttYXJrcygpIGZyb20gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUgdG8gaGVyZS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oOgorICAgICAgICBS
ZW1vdmUgcGFpbnRUaWNrbWFya3MoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q2hyb21pdW06OnBhaW50VGlja21hcmtzKToKKyAgICAgICAgU3dpdGNoIHRvIGRyYXdpbmcgdGlj
a21hcmtzIGFzIHZlY3RvcnMsIHNvIHRoZXkgY2FuIGJlIGFyYml0cmFyaWx5IHdpZGUuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAg
ICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyk6CisgICAgICAgIEltcGxlbWVudCBwYWlu
dFRpY2ttYXJrcygpLCBzbyB0aGF0IGNzcy1zdHlsZWQgc2Nyb2xsYmFycyBnZXQgdGlja21hcmtz
IG9uIG1hYy4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6
cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFp
bnRUaWNrbWFya3MpOgorICAgICAgICBJbXBsZW1lbnQgcGFpbnRUaWNrbWFya3MoKSwgc28gdGhh
dCBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMgZ2V0IHRpY2ttYXJrcyBvbiBtYWMuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJrcyk6CisgICAgICAgIERlbGVnYXRlIHRv
IHRoZSBuYXRpdmUgU2Nyb2xsYmFyVGhlbWUgZm9yIHRpY2ttYXJrIGRyYXdpbmcuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoK
KyAgICAgICAgKFJlbmRlclNjcm9sbGJhclRoZW1lKToKKyAgICAgICAgT3ZlcnJpZGUgcGFpbnRU
aWNrbWFya3MoKS4KKwogMjAxMi0wNy0yMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUu
ZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIG1lZGlhL2NvbnRyb2xzLXN0eWxpbmcu
aHRtbCBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuY3BwCmluZGV4IDA1NTEwNzcxMTRiNGJjN2VhN2I4YjFjNGVjZTk1ZTEwNDNlZDg1
ZGUuLmEzZWJjOTM2OTMyNWE0N2IyZTYyOTI4Njk2MGI0ZDZmZWJjMmYwYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXJUb05vZGUoTm9k
ZSogbm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsCiB9CiAKIAotdm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OmFkZFRleHRNYXRjaE1hcmtlcihSYW5nZSogcmFuZ2UsIGJvb2wgYWN0aXZl
TWF0Y2gpCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkVGV4dE1hdGNoTWFya2Vy
KGNvbnN0IFJhbmdlKiByYW5nZSwgYm9vbCBhY3RpdmVNYXRjaCkKIHsKICAgICAvLyBVc2UgYSBU
ZXh0SXRlcmF0b3IgdG8gdmlzaXQgdGhlIHBvdGVudGlhbGx5IG11bHRpcGxlIG5vZGVzIHRoZSBy
YW5nZSBjb3ZlcnMuCiAgICAgZm9yIChUZXh0SXRlcmF0b3IgbWFya2VkVGV4dChyYW5nZSk7ICFt
YXJrZWRUZXh0LmF0RW5kKCk7IG1hcmtlZFRleHQuYWR2YW5jZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKaW5kZXggNmEzNzI0ODAwNzZiZmFj
YWViZDEzMGNiZmRhNjQ0ZWUzN2I4ZDljYy4uOGRkMmIwNGZmMDcxYmI5YTYwMWY0MDFmMTA3MWFm
NjgwOTNkOGZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNYXJrZXIoUmFu
Z2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
bik7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKICAgICB2b2lk
IGFkZE1hcmtlclRvTm9kZShOb2RlKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIFBhc3NSZWZQdHI8RG9jdW1lbnRNYXJr
ZXJEZXRhaWxzPik7Ci0gICAgdm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoUmFuZ2UqLCBib29sIGFj
dGl2ZU1hdGNoKTsKKyAgICB2b2lkIGFkZFRleHRNYXRjaE1hcmtlcihjb25zdCBSYW5nZSosIGJv
b2wgYWN0aXZlTWF0Y2gpOwogCiAgICAgdm9pZCBjb3B5TWFya2VycyhOb2RlKiBzcmNOb2RlLCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgaW50IGxlbmd0aCwgTm9kZSogZHN0Tm9kZSwgaW50IGRlbHRh
KTsKICAgICBib29sIGhhc01hcmtlcnMoUmFuZ2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZXMgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VycygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4
IGQ3MzZjZTUzZDMxOTllOWM0NDNiMTEzYzQxNGZhOWI3NDk4ODNhMTQuLjNhOWZiNDhkODA1MDE0
N2VjOTgxZjIwOWYyMWQ5MzE2N2IyZjBhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMTU4Miw3
ICsxNTgyLDcgQEAgTm9kZSogUmFuZ2U6OnBhc3RMYXN0Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZW5kLmNvbnRhaW5lcigpLT50cmF2ZXJzZU5leHRTaWJsaW5nKCk7CiB9CiAKLUludFJlY3Qg
UmFuZ2U6OmJvdW5kaW5nQm94KCkKK0ludFJlY3QgUmFuZ2U6OmJvdW5kaW5nQm94KCkgY29uc3QK
IHsKICAgICBJbnRSZWN0IHJlc3VsdDsKICAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7CkBAIC0x
NTkzLDcgKzE1OTMsNyBAQCBJbnRSZWN0IFJhbmdlOjpib3VuZGluZ0JveCgpCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdm9pZCBSYW5nZTo6dGV4dFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVj
dHMsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0LCBSYW5nZUluRml4ZWRQb3NpdGlvbiogaW5GaXhl
ZCkKK3ZvaWQgUmFuZ2U6OnRleHRSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBib29sIHVz
ZVNlbGVjdGlvbkhlaWdodCwgUmFuZ2VJbkZpeGVkUG9zaXRpb24qIGluRml4ZWQpIGNvbnN0CiB7
CiAgICAgTm9kZSogc3RhcnRDb250YWluZXIgPSBtX3N0YXJ0LmNvbnRhaW5lcigpOwogICAgIE5v
ZGUqIGVuZENvbnRhaW5lciA9IG1fZW5kLmNvbnRhaW5lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAppbmRleCA4
ZjBlOThiNDc4MDg2YTk1Mjg0ZTUwM2IyYzMwN2M5YzQ5ZmYyZWYwLi4wNDhjZDY5OTJkNWNjNWE2
YzVjMWZiYThiODYwMTQ3NWU4MGI4MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaApAQCAtMTEyLDcgKzExMiw3
IEBAIHB1YmxpYzoKIAogICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoKSBjb25zdDsKIAotICAg
IEludFJlY3QgYm91bmRpbmdCb3goKTsKKyAgICBJbnRSZWN0IGJvdW5kaW5nQm94KCkgY29uc3Q7
CiAgICAgCiAgICAgZW51bSBSYW5nZUluRml4ZWRQb3NpdGlvbiB7CiAgICAgICAgIE5vdEZpeGVk
UG9zaXRpb24sCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIH07CiAgICAgCiAgICAg
Ly8gTm90IHRyYW5zZm9ybS1mcmllbmRseQotICAgIHZvaWQgdGV4dFJlY3RzKFZlY3RvcjxJbnRS
ZWN0PiYsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIFJhbmdlSW5GaXhlZFBvc2l0
aW9uKiA9IDApOworICAgIHZvaWQgdGV4dFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGJvb2wgdXNl
U2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIFJhbmdlSW5GaXhlZFBvc2l0aW9uKiA9IDApIGNvbnN0
OwogICAgIC8vIFRyYW5zZm9ybS1mcmllbmRseQogICAgIHZvaWQgdGV4dFF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgUmFuZ2VJbkZpeGVk
UG9zaXRpb24qID0gMCkgY29uc3Q7CiAgICAgdm9pZCBnZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZS5oCmluZGV4IDVmZTQ1YjFhNDczNjU3MTZiZjJiNzJhNDZkYWJhZWI2YWYwYmZmZTQuLmNj
Y2MyZjkyNTZmZDMyMjhkMzQxZjNjNmU5MTY1OGJjOWE1NTVkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaApAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIHsgZGVmYXVsdFBhaW50U2Ny
b2xsQ29ybmVyKGNvbnRleHQsIGNvcm5lclJlY3QpOyB9CiAgICAgc3RhdGljIHZvaWQgZGVmYXVs
dFBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgY29ybmVyUmVjdCkgeyBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hp
dGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNr
bWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3
KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmLCBjb25z
dCBJbnRSZWN0JikgeyB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVO
QUJMRShSVUJCRVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZS5oCmluZGV4IDY5NmRiMTJiMTk3NzdkY2Q2MDdlZTA0NjFhMjE1
MDFjOTAwZDYwZjUuLmRmZDE1ZWQxODg3ODMwOGExN2RhYzU0MDE4ZjU1NTYxOThiZjhiYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUu
aApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQ
aWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmLCBTY3JvbGxiYXJQYXJ0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Ny
b2xsYmFyUGFydCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JikgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgSW50UmVjdCYpIHsgfQogCiAgICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0
cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0JiByZWN0KSB7IHJldHVybiByZWN0OyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcApp
bmRleCA2ODJkODJkNWIzMzc5MThiMjVkMDk4YmE3NzE3MzRlNzkxNTA1ZTkxLi40YTQ5MzhhYzgw
ODRmMjQ5MGYyNDRlYWExYmIzNjIxOWY1MTIxYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcApA
QCAtMTEzLDE0ICsxMTMsOCBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlj
a21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVAogICAgIGlmICghdGlj
a21hcmtzLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gR2V0IHRoZSBpbWFnZSBm
b3IgdGhlIHRpY2ttYXJrcy4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxJbWFnZT4s
IGRhc2gsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRpY2ttYXJrRGFzaCIpKSk7Ci0g
ICAgaWYgKGRhc2gtPmlzTnVsbCgpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29udGV4dC0+c2F2ZSgpOworICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgY29udGV4dC0+
c2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKIAogICAgIGZvciAoVmVjdG9yPEludFJlY3Q+Ojpj
b25zdF9pdGVyYXRvciBpID0gdGlja21hcmtzLmJlZ2luKCk7IGkgIT0gdGlja21hcmtzLmVuZCgp
OyArK2kpIHsKICAgICAgICAgLy8gQ2FsY3VsYXRlIGhvdyBmYXIgZG93biAoaW4gJSkgdGhlIHRp
Y2stbWFyayBzaG91bGQgYXBwZWFyLgpAQCAtMTI5LDExICsxMjMsMTQgQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFNjcm9sbGJhclQKICAgICAgICAgLy8gQ2FsY3VsYXRlIGhvdyBmYXIgZG93biAoaW4gcGl4ZWxz
KSB0aGUgdGljay1tYXJrIHNob3VsZCBhcHBlYXIuCiAgICAgICAgIGNvbnN0IGludCB5UG9zID0g
cmVjdC55KCkgKyAocmVjdC5oZWlnaHQoKSAqIHBlcmNlbnQpOwogCi0gICAgICAgIEludFBvaW50
IHRpY2soc2Nyb2xsYmFyLT54KCksIHlQb3MpOwotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2Uo
ZGFzaC5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgdGljayk7Ci0gICAgfQorICAgICAgICBj
b250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMHhDQywgMHhBQSwgMHgwMCwgMHhGRiksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBGbG9hdFJlY3QgdGlja1JlY3QocmVjdC54KCksIHlQ
b3MsIHJlY3Qud2lkdGgoKSwgMyk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHRpY2tSZWN0
KTsKIAotICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENv
bG9yKENvbG9yKDB4RkYsIDB4REQsIDB4MDAsIDB4RkYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgRmxvYXRSZWN0IHRpY2tTdHJva2UocmVjdC54KCksIHlQb3MgKyAxLCByZWN0Lndp
ZHRoKCksIDEpOworICAgICAgICBjb250ZXh0LT5maWxsUmVjdCh0aWNrU3Ryb2tlKTsKKyAgICB9
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaAppbmRl
eCAxOTM0NmU3MjNiYWIyODdmOThlMTdjODEyZGI1ODNhMWMyMDY3MDIwLi5lZmJkZDA5OTJjMjQz
MDI0MWJlNWM5MzFiYzYzOTlkYzhiOGJlMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCkBA
IC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNv
bnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICAKIHBy
aXZhdGU6CiAgICAgdm9pZCBwYWludEdpdmVuVGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFZlY3RvcjxJbnRSZWN0
PiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KaW5kZXggNzVlNGEyOWM4OGMyMzczM2UzMjk2
N2E0MGY5NWRlZDlhYjIyODM1Ni4uNzNkNzliMGJjYmRlYzcyNGRhNjI1NTAzYjEzMjQ3MDEwNjRm
ZTQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgYm9v
bCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBHcmFwaGljc0MKICAgICB9CiAgICAgLy8gVGhlIGVuZHMgYXJlIHJvdW5kZWQg
YW5kIHRoZSB0aHVtYiBkb2Vzbid0IGdvIHRoZXJlLgogICAgIHRpY2ttYXJrVHJhY2tSZWN0Lmlu
ZmxhdGVZKC10aWNrbWFya1RyYWNrUmVjdC53aWR0aCgpKTsKLSAgICAvLyBJbnNldCBieSAyIG9u
IHRoZSBsZWZ0IGFuZCAzIG9uIHRoZSByaWdodC4KKyAgICAvLyBJbnNldCBhIGJpdC4KICAgICB0
aWNrbWFya1RyYWNrUmVjdC5zZXRYKHRpY2ttYXJrVHJhY2tSZWN0LngoKSArIDIpOwogICAgIHRp
Y2ttYXJrVHJhY2tSZWN0LnNldFdpZHRoKHRpY2ttYXJrVHJhY2tSZWN0LndpZHRoKCkgLSA1KTsK
ICAgICBwYWludEdpdmVuVGlja21hcmtzKGRyYXdpbmdDb250ZXh0LCBzY3JvbGxiYXIsIHRpY2tt
YXJrVHJhY2tSZWN0LCB0aWNrbWFya3MpOwpAQCAtNDA5LDUgKzQwOSwyNSBAQCB2b2lkIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiB2aWV3
LCBHcmFwaGljc0NvbgogICAgIH0KIH0KIAordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
OjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgLy8gTm90ZTog
VGhpcyBpcyBvbmx5IHVzZWQgZm9yIGNzcy1zdHlsZWQgc2Nyb2xsYmFycyBvbiBtYWMuCisgICAg
aWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSAhPSBWZXJ0aWNhbFNjcm9sbGJhcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKHJlY3QuaGVpZ2h0KCkgPD0gMCB8fCByZWN0LndpZHRoKCkg
PD0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPEludFJlY3Q+IHRpY2ttYXJrczsK
KyAgICBzY3JvbGxiYXItPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOworICAgIGlmICghdGlja21h
cmtzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSW5zZXQgYSBiaXQuCisgICAg
SW50UmVjdCB0aWNrbWFya1RyYWNrUmVjdCA9IHJlY3Q7CisgICAgdGlja21hcmtUcmFja1JlY3Qu
c2V0WCh0aWNrbWFya1RyYWNrUmVjdC54KCkgKyAxKTsKKyAgICB0aWNrbWFya1RyYWNrUmVjdC5z
ZXRXaWR0aCh0aWNrbWFya1RyYWNrUmVjdC53aWR0aCgpIC0gMik7CisgICAgcGFpbnRHaXZlblRp
Y2ttYXJrcyhjb250ZXh0LCBzY3JvbGxiYXIsIHRpY2ttYXJrVHJhY2tSZWN0LCB0aWNrbWFya3Mp
OworfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clRoZW1lLmNwcAppbmRleCA0NGUyYWE2MzFkYzI4MTUwMTc0YmMyMjUyMzBlOGI2YWFiN2QwZDM1
Li42ZDJlMDliMmUyYmFjZWFlNGUxOTdmYzY0MWU3NmFjNzJkN2I1NzljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKQEAgLTEzOCw0
ICsxMzgsOSBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbAogICAgIHRvUmVuZGVyU2Nyb2xsYmFy
KHNjcm9sbGJhciktPnBhaW50UGFydChjb250ZXh0LCBUaHVtYlBhcnQsIHJlY3QpOwogfQogCit2
b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCit7CisgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnBhaW50VGlja21hcmtzKGNv
bnRleHQsIHNjcm9sbGJhciwgcmVjdCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggOWNlZjM5NDlmYTlmNGRjNzE4OTM4
NzdmOGMxMGM5ZGU2MjQ4ZjQ0Ny4uYzE0ZGUzZmJjZTkzZmY3MTIxZTBjNWM3NGJmMzQzYWExYmU4
NzBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRo
ZW1lLmgKQEAgLTczLDYgKzczLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9u
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYs
IFNjcm9sbGJhclBhcnQpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1
YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgSW50UmVjdCBj
b25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UmVjdCYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBl
MzIxNDIzMTY5M2ZjOTE5ZGY0MWU3YTQ1NGY3Nzg5Njc4MGUzZGZmLi5mNDA4YzZhMzM3NDAxYzkx
ZWIxOTUxMTI5MDliMWE1ZGYzNjY2NmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC02MjQsNiArNjI0LDExIEBAIFN0cmluZyBJbnRlcm5hbHM6Om1hcmtlckRlc2NyaXB0
aW9uRm9yTm9kZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsCiAgICAgcmV0
dXJuIG1hcmtlci0+ZGVzY3JpcHRpb24oKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OmFkZFRleHRN
YXRjaE1hcmtlcihjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgaXNBY3RpdmUpCit7CisgICAgcmFu
Z2UtPm93bmVyRG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRUZXh0TWF0Y2hNYXJrZXIocmFuZ2Us
IGlzQWN0aXZlKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNldFNjcm9sbFZpZXdQb3NpdGlvbihE
b2N1bWVudCogZG9jdW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAppbmRleCAwNDAwNTIzNzhlZThkNTVhMjQ2ZjBjNTYyMDAyMDhlZjYzZWMw
OGJlLi40YTEyZTAyMjRhNDc5YjdlNjQ3NmE0ZTJiYzA1YjAyMjMyMzk3YTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdW5z
aWduZWQgbWFya2VyQ291bnRGb3JOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2VGb3JOb2RlKE5vZGUqLCBj
b25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7
CiAgICAgU3RyaW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShOb2RlKiwgY29uc3QgU3RyaW5n
JiBtYXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
YWRkVGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdlKiwgYm9vbCBpc0FjdGl2ZSk7CiAKICAgICB2
b2lkIHNldFNjcm9sbFZpZXdQb3NpdGlvbihEb2N1bWVudCosIGxvbmcgeCwgbG9uZyB5LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiBtb2RlLCBpbnQgZ2FwLCBFeGNlcHRpb25Db2RlJiBlYykgeyBzZXRQYWdp
bmF0aW9uKGRvY3VtZW50LCBtb2RlLCBnYXAsIDAsIGVjKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCmluZGV4IGZkZTQ1NzdlYjNjZjdiZTJjOGRiOWI0ZTgwNWJiNWM1OGI5ZmJh
MjguLmJiNTNiZjdiYTMxZDMyMTlmYzNjMzBlZGFjMzYzZGE5NzlhNWY3MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTg2LDYgKzg2LDcgQEAgbW9kdWxlIHdpbmRvdyB7
CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWFya2VyQ291bnRGb3JOb2RlKGluIE5vZGUgbm9kZSwg
aW4gRE9NU3RyaW5nIG1hcmtlclR5cGUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBS
YW5nZSBtYXJrZXJSYW5nZUZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBET01TdHJpbmcgbWFya2Vy
VHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAg
ICAgIERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBE
T01TdHJpbmcgbWFya2VyVHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisgICAgICAgIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKGluIFJhbmdlIHJhbmdl
LCBpbiBib29sZWFuIGlzQWN0aXZlKTsKIAogICAgICAgICB2b2lkIHNldFNjcm9sbFZpZXdQb3Np
dGlvbihpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyB4LCBpbiBsb25nIHkpIHJhaXNlcyhE
T01FeGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9z
Y3JvbGxiYXItdGlja21hcmtzLXN0eWxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvc2Nyb2xsYmFyLXRpY2ttYXJrcy1zdHlsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDQ5MTI3N2My
OTU5MjQ5Njg4ZjIxNDZhZWU1MDA2ZGEwOTc4ODFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvc2Nyb2xsYmFyLXRpY2ttYXJrcy1zdHlsZWQuaHRtbApAQCAt
MCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxoZWFkPgorPHN0eWxlPgoraHRtbCB7Cisg
ICAgZm9udDogQWhlbSAxMHB4OworICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IG5vbmU7Cit9
Cis6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKKyAgICB3aWR0aDogMTNweDsKKyAgICBoZWlnaHQ6IDEz
cHg7Cit9Cis6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OmdyZWVuOworfQorOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CisgICAgYmFja2dyb3VuZC1j
b2xvcjpyZ2JhKDEyOCwgMTI4LCAxMjgsIDAuOCk7ICAvKiBMZXQgdGlja21hcmsgc2hpbmUgdGhy
b3VnaCAqLworfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBoaWdobGlnaHQoKQorewor
ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgdmFyIGVsdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbHQnKTsKKyAgICBlbHQuY2xpZW50V2lkdGg7CisgICAg
cmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVsdCk7ICAvLyBNYWtlIHN1cmUgdGhlIHJlbmRlciB0
cmVlIGV4aXN0cy4KKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICB3aW5kb3cu
aW50ZXJuYWxzLmFkZFRleHRNYXRjaE1hcmtlcihyYW5nZSwgdHJ1ZSk7CisgICAgfQorfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImhpZ2hsaWdodCgpOyI+CisKKzxwPnAwIGFz
ZGYgYXNkZgorPHA+cDEgYXNkZiBhc2RmCis8cD5wMiBhc2RmIGFzZGYKKzxwPnAzIGFzZGYgYXNk
ZgorPHA+cDQgYXNkZiBhc2RmCis8cD5wNSBhc2RmIGFzZGYKKzxwPnA2IGFzZGYgYXNkZgorPHA+
cDcgYXNkZiBhc2RmCis8cD5wOCBhc2RmIGFzZGYKKzxwPnA5IGFzZGYgYXNkZgorCisKKzxwPnAx
MCBhc2RmIGFzZGYKKzxwPnAxMSBhc2RmIGFzZGYKKzxwPnAxMiBhc2RmIGFzZGYKKzxwPnAxMyBh
c2RmIGFzZGYKKzxwPnAxNCBhc2RmIGFzZGYKKzxwPnAxNSBhc2RmIGFzZGYKKzxwPnAxNiA8c3Bh
biBpZD0iZWx0Ij5hc2RmPC9zcGFuPiBhc2RmCis8cD5wMTcgYXNkZiBhc2RmCis8cD5wMTggYXNk
ZiBhc2RmCis8cD5wMTkgYXNkZiBhc2RmCisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3Njcm9sbGluZy9zY3JvbGxi
YXItdGlja21hcmtzLXN0eWxlZC1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS1tYWMvZmFzdC9zY3JvbGxpbmcvc2Nyb2xsYmFyLXRpY2ttYXJrcy1zdHlsZWQtZXhw
ZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExMDFjNzE1ODBkOTE2ZGQ0YmRiZGUyYWVjZDdlMWJmZjJl
Nzg5MmUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDczNjgKemNtZFR9ZHB3bCt6a2Z1Y1JeYFg5
JWNOMiZTJW9rdkdIbEFBVnFKMmROZy1qYUhpazBodmJKb3klNEo8RHlWeD80CnorbCZaaDhiakB0
IWo2UGwjSVUpZiFGWHhSVT5OODdKVlRjfj9LISg9X3FYVHdgPlVyaG11SjUzJi0/Yjd1UmdaTgp6
c3dfcT1oOUY0QSlAR2oqMWolYmMmO29aUU1lczteTTlmTD5rNTJmMF9pKjE2ez1VSXNnYi0rI3xG
TlRuWG4jVyEKelV0YH4kWGtRfl4hYComSShaPnU3KDFyIyhlUnJYKXtXQ1gxa2NPeDJ6Sz5pXmU+
ZEVUcXdgSHFESy19UVNTVVEmCnpYSVBxUEUjNzk3Xmw5JipHWHwjJWAjMH5teVomYH4qXjEmUDE1
Pzx8eT9JcnxjS0I4VGpzaVkpPX5NQEFIZSVPLQp6PjQqUV54ZDRKYi1iZSl4OSN2UWxMN0VwSkBX
NUdCTzktTUdFS3FgPTw8XmlLMWw/MjhnZG9kUmF0YVducjFpKDIKek92ZDYpYyUpZyg7PDwhb3w0
NG94VmRLYkFSfiFVUUN8V0pCPX1OaGpFPSgje3B8fl8kQTs+fTlVVSZEejkxZzFICno2MUpRMHYr
SUs8N09GdGQ+NUZVT24+KXg9YXk5TDwkd2VfVDZeNGNuX0cpV1NwNVMmeGRXdkB6PXQwbkU7fEgx
QAp6VGc9Y3VHbHRCRWhUfkdZM1BfKm9wMzd6dCgre3IlWnhJeWxsaFlzNzttMG17e3ZAY0N4UHJ3
b28tVGF9ek9CUmsKemJAeiFiY3w4c197ZzBFYmR3X2VPK1JEKlBURW9ZbU0rZFlsZ3JJZnk8X20q
NnpRNlJ+clUqNCopSWg+KDlnJCs5CnpJNyNwYGI0U3o/Uz11Jno3cEwmcXl2NXRmX2BNRTJBQ2R5
fXtwJDBWSytxbi1xRDBwKE5IalUjNUBpPDh0VypQbwp6Ky1VY2dPNW1qaTRiVStHSU5WaF55SlAo
OCFDOX5SUUVBMHJibUlSam1ZMSl9YEZXJXpUezgweTJGT3ImdUhjQk8Kelk2UiF3X1UtSHtUVjcx
KHlSfE5hc0cmUTA3NXM0QSN4MnBWX3dgUmVQPDhNU2ZffGxTYW5vZi0pSklYe258I2IzCnpyeVM4
O0FKJCVWcSN6MykrUX09ZDFrYlpGcUpIeDJQX3F4YU00VSo4NmpYTTZvSmVeZTdALWJVQGorPDVk
MGJaagp6TntTcVA/Z29iJSk5bUthVCVXSyRvMlNUfChJQlRhIVI+MzNyK1ZTSHpNcSV0Yk1jd25V
e1hTS1VtWnsyNFAqTmYKekJSNUVqYVM2VlZjZ3c9Yj84PVNkak5VcTQmaT17QnlnM2s5aWp3K0Ff
cGIxcFNLSzQ9SVM0Y3A4fWBCQFdrbWclCnoydGtsX1Y3JCsyQlFPb3RKN05JamU+RFQla0g+TCQk
Um4qVXokNEFeNTxsT0tgSzdNRlM0SW9BbVJgeFdJISt+Pgp6R0FUWUJ3NHZMSnpXfVBQSTZiTWJE
SElUY0hOREFhOXVORmQmR2JfY151MyNtOHJvfFp2R0sjb3cmYkV8cGBWMFkKek0yPXorRDlEc0FZ
ayoyWk57Rkk4b0BUMCg1K2IpVkhmQjFeT0drc3szeTlkQXc+dV5eb3U2ciprYV8mPklHSUN1Cnol
PyshfW5ESkwoKH01cjcjOUEhO1J1YExvOUE8Png9Pz9AP0lOUyNyS1k1RkI7TkdCUnh0VEY3ck9U
WCU+VmhsJQp6bkR2djdGUl9WcDQ5S0V0b1FaSzZIMHQySzsmQVBeMVFFMy0kMDdxQXI4dENwb3BP
R1JuLSh2SiU3VHtrdSozIWsKekp4MGZ0c2U8PHUxfVFFbEUoM15mWkJYNmpZWWtzbTd5cVRZXm5P
JWlpWj5tOXlTOEstTWFyVnsmbVZ8cnNTbj0mCno+PilnanFibElZJnNnRHU4bkdRRih+JnA4ZmJv
OU8hV0pKI1BzYWRaenVWc2pVREhfdkt+YVFASn49ekdqYm1Kdgp6dFl0bTdBKTJYOFVVdFRHbTVE
UGxDRXEmMkx3aUNvRihmJHlITkBJSzxmXyF4djA4YGFDVkEkJTclT21wVGRue0AKeiR7OUtBcmpp
SVVEP018K3ooezJsQTtyX2dob2hOfUtALWxXQDBfOXEhZWlzKDFtI15zPDdSQWwyJDg7WWNCcDkm
CnpaY0c/Q0NhaXJ9SW8ybXdDc1ZzbFpPdC1tbl8rWUZlQStGbypKTHFZR0NLRj9fV19jYEtEIWl4
cU9UdV5aaSlkfQp6RTtNUD43IzteXmFOKEUmYDJQUEZPWmNDVHt7M2NDelpxNjZVQT5PTm83P0tM
KnI1Z1IkIytLejdZNCo4NU9DfWcKei1+aUVhU0c2QEE4enVeNGsySGNvO3I9V0tkc2pGQkJLYVoh
IWM9K0pzaX5XNXtVNVdGNkx5RjI3JWRKQUtfez5OCnpaTV87ZWB1eFBpNE5gPj1LTWEjJnhickA4
KnY/QEp4QGQwNDc5dFVLPlh1dzZzWFg5YDxsdWJeV0xrfVRiPT1HUAp6WDlqWFpIOW9YYFY8Qj5L
ejRhS0lraXg7I0N2QDQjIXlGbTZgLTByaD5ffXBTVW1UdlQzUFkkVFFTY0tlSjdJZWQKemt0IW53
e2pRWnFleHB3ajRgc2hMa2ZnWU47KWJoWVZuRXRgbkheMHAtdkRnbGBmQUd8YXt4eFJGfUM9XllW
YnZ+CnpTSmVSNHs3SXwrb3cmUipkJTNyK1dWKX02Zld6WGQtMVhUfihLPnAqSWVafHxVbVRVfDlu
aHZ2PllkQVFHTUdxJQp6SWtQP1hnM3RiKUoqNm59TkFlSmE0fH1BUFgxeH1Jd2hrYFY5NllPYT8h
cTNRbCElUkB5fHNBdk0tUlUlN2pSJFoKemEpU2pOSXhPRENeMG5vVT57VExrZVEzb19Rd09DfVU0
KTlPbnpQPWF0VHgxZGA8TDFUKEpLeSNNOD5eMFR1WngzCnpVeSFjJVdGZHgrbm89KiszUThFcHJT
Jnp2P2QhTDhaVyhfQnp4R1MjZ2RYJEMoOWUzQW48czFDcy1gOztfM2g0Kwp6RDl9VS1kRCgwI3pJ
fWFPIz0mTmhKeiE3TXdQfEtFa2lOYEhgQzdhJHJNV0cqMSRjPTckdVpxV1l4Uz4hRkQ1K2sKenxF
cE00LUUpZmRxSGZrSlZ8cSVwMz8zTTJzS0dXV1pPZmkoYXkqbWk0bGJROGdER3g8bVYySVpMZUxL
WmJJU0UjCnpEVitETjJQXjFpb0pASThJM153dzJYaE5aQ2hObDwyTT8yUyhUWE8+eXc5aHMkdTI4
Q2B4VTxoO315amEtNj5NMQp6aVdYR0FMbCEzQ21uOE8pTzhnPHRIU3Z7TDNNXjZHZmZLJWBpSyFe
NXg7SUBUNVhvaGkpaCZhMzRgSHFFVkRqSiQKemNrLW88ZHhzKitfKX4pNEF7ekdCTmxWTFlKQEYh
MHg0NDt9WTttcVluODhaaWYhdEhgVDEhdEFRSWNZYHt3NSg9CnpQPTlJeXhzZmx7WnYrfjMmc2hG
RTNrYjRMTzIxT3Q0bFF0QHVJMnRgKChMYn5oJTZfUXZFRCRuZSZPPmc8OE1jbwp6OVZnRVdsZWBa
VD1maUk7aGpWMCZ6O287QnRLcX0xeHFARjtsYkBtRi1JbF9jMyU/Q0Bhe0hXdHt0OTJCWVY1UjgK
emZlTTJ5alc7V2RsSUJJTVZrOHRmK15lZkMlTVYyYTZecEc0SilnViVtZFNAQ3YmPmE/PWVIRCF3
PyQ8SVA5VHohCno4RWR8ZmY1WWoxUiFsPngpKi18UXpMMipPPn5hYnozPUJPT0IlSWp+KGpiejlg
S2dMQ15edmNWN30xbEc0QX1Wewp6ZlMrV09obmM/LXlmUEo7NzBVMFgtK3ZRKHVXWHpuJVo8OGAp
O2oqYVhOYzV+cz5DV0otcXExWjR7Qysxaz17cioKemt8blAqM0kpd24ySCozT1JfdjlRKElxR19z
VkZsfEZoIVQ/cylnWj9sa0N5dStIITtBVDNZVX4oTGJeIWNkYFZ7CnpVMEp4ZGVTVkttdWE7WlVz
TilqZDlDMSlxJEF7Oz5tJkg+d3clOTMqd1FgcX1UQmNNYXZoWncoZFckZkZlWXJsdgp6K3BtaF9r
TXtBSF5HNHEtcGxVZC0zOWcqX3RWKSpjZlV9Zl5HIz0xJEJkU2JhPjh+OyNFMVRoRWkjMHNwanxi
VmYKeiZDQWZEPFpSYn1RYSN+MHVKbGFuPEZMN2V3Uz4wTHM1MlNvaUktdGp1Y31GZXpTLUhBdnhQ
KHB4eGZCISptMG1MCno2RCN4K2R7Ui1QMVlCSWgpWWZeRUBtJlBCKXUtcn5SUXVnY2NAR00tPHom
IWMrQ2NfdW9vUFR5ej97Mj9MX0QzIwp6TEs3WlF2SnRgTjwoKTVPV3UjeEopI1N0e045cjhaKCk9
ZVkqc2JHMVFOSnBWTExLKjxTanJsfHZFWDxeU2M/bnsKenNHSDBrKiFnZjArd35AaTwpZEdLQG5F
aHBBQV9tR001MUsxdnNsPz83KzYxTDthJWFINFEwdCt3UmhROFAyKVVNCnpEM3s8Kzt2NU9KMXJI
XmQ1e3VnUm8pKHpQMD5Rc1NaOC1zSWlAJXM5VHpTPCtgPEhjYUJjTThybipGa3w9c31jNgp6U3s0
Q1VGbCs5KVVCVE4haEt7PEd5PTV6KiRmUFl0RiZmN2A7Mj1MMm00YH5AZnF0QUYxZnJJXllPczBa
c1QzVlgKellTd3FYKipHRkV1b0ZxU0NzKUYpPChqaVJzU2tnQHRJQjRPKWptK31iaEAyNjBLP081
cEFJYlNPcWE8TXd+Pj4jCnooI1BNVjxDRUg7dy1DPDNnMnRIPndDYzVZe2JsKUJoRHhee1ghVSM+
Y3wzflNFfEclTCFiayRLM3pATUk4Ynw8UQp6V3loUXlJZD5nLSE5dVVrYjBSWFBiI09VP3A+cjJ4
QTZ6TUtxaWNNM1leSUEtUEl2VER2Tit7d2xudWF0Y0o3VmsKemZIRU1ub1E7Mzg8LXtyYGBnYERg
Q15WLWNlLUcoMiRxU340MDtyVEBfQkdrQXAkSX48eGN2MTdaQjJnVmgpRytLCno4MmhiRSlgfmY9
UUB9O2w5TSRZdiRMbmBwRzV4bmw+PEclPmM8VCgob2c8JlhuLSlgYXF1VTYmbSlsanFSOVFJcgp6
VVIqayFDTyZ5YiZ1JUEhZFNBSTBVYllPKEVuQiptYntTSGVBRWIqTyZAZ3g0R3lELTB7UVY8VFZK
LUZeJFgkX2UKejNYRShiRW9oUlF6MHF7cGk5YmArTTdBOVVJciRSRSQoTDNQQF5hdTgqK3hRdkdt
WUpDZl8wUEFOdjNtQW5hVWlzCnpJdHo8NT1xPXAmLWVVY0NfbSlOb2JvbWg/UUlPIThwRX1hPlNi
X3swMjQxJEBMaD0xUSRnUEIjSXlTPjtpNSQtcAp6Qz4tWDtNNzJifnArZ1p9ejtVN2BaTDg8JTRD
I2A5ZGczdzJ0dSMySTlpdGAzQT5mZHNPNU91YilEUD5oZD92Xk0Kek5MbUs5KGdDVEpCUSZfXjUy
ejl+JW98U2dYTVYrKW1nZ15RRSNKanY/fUZNWnFtQyRle2VtSzghN0ghViNGMmF3CnphK1pIRUVH
eXdHKnV5Wk00WVZNWHRhUHg5JTM2TEg8cVEtc0hBUXFGTkwjSXBsPiNMMW1kJmk1Pj1fX0glYWNU
YAp6WX5KcFlZVnpeaihRdFVWOWFsIz01QVhOX0w0KmJ5S1V3TUQyVmVZK3JUK3NKJkFKa29CTXVa
dHlSd1pWdlNrZCsKem9EIzBQZSUpOXBKJFJoV2Axb0MlYz0/WXEzSGt5ZDE/MnpKKnRhMTxfKX5p
SVRCSnJHKnBYMiVBVil1QmltSU1nCnomTFNHM21vRGVtdWBnRn5zdmQ3T1hqO1o7aUxrYTR2fHVW
eT8+I2t4Y1ctODNCYkMjQ3JlaCEyMDdUYE9DJCZhOwp6eWAybytGc1l+U1M0XlVsWCN6TF5wSW5K
RlBJKz9wJTR7c0FIQzNPSWFHT3k4KS1LZjw7YU9CNlgyWFo7byFmfn4KekYxQ1NLVDc7b3YkQUwj
K1lxTyNvPT9yRnJPRXJscSFadlh7SWFtQWNFJEtgPTA9P2NXeWZ2ZkpLPSh3P2NUZCZkCnoqRjZX
Tm81UjZOcFVxQVcrfmgwKSp7Uyt+bCtUdTYjMDwofV88d1FJYWdMT09UbjVmY0M9VzVBJTRgNFZa
byRaeQp6eH48TW83ez1Kejt0dFhTdWl+e2VWTnZgbUotIz9EcVklaFIqMEVhVStEYmFeUD10I1Ny
bDRufkY7TThOSHloP1YKekhkQHZKUWl+YV55K3dLVSFPNig2OWw2N2pHUlhsKCNSJEAzWnBSJm0r
RHhBMGVVMzQ7Qk4je2JIanMpJk93QGFgCnpJXyFEXjF1e0UpOCQ4Yz1sa09zcD15bHFybnluc0ZG
SEd9JUM0S2REPWg5U0tfeHomczxmMlE5NX1pdVBlajUyRQp6Qmg2dE0qQCZ8O2NhNXRUPmFIMHo7
e05wQzE8fnpjaWspT0xvRS0zV2FCYHBfJD5GM255akpAaDZMI3VrfEJUa18Keno0TT1UcntmK29q
aTU9THlmPkVjK2BASDQwUztLUW4pOFBgNSVUMUVMMmNaMjhLK3BAIT0tTVdiI0ZFWkYmcEcpCno+
VXd0OShnalUzTCs3I2A3JjZTMVN9Vzx5TGxOTz5eTyo0KFJTVjRAQiFhMTtMKkxqTklHeHt4KHpH
KkVFbUJLbgp6MzBtbm1DUi1UQW1tPWZMZ3FMazw4S0BVLSpuRnFVSXlmeH5pR2c2b0ZXU2pPezND
NDlDTiFzR09CNH1oPXZtKykKekBETzYyaj5ecExBTGE2PVQhd0c1PlBveSNufmRSJV9wSFdDRnxw
bktZMWlkdVo3IWZIZk1ge2grblVrVldoKmowCnpQSTJWI2l6cjd9eHc+JDVjKjhXKXNVPElSWDEt
fkV2QGIrfF5BVn11XzlwZkxTb280aHByKnd0MGJPUU84TGUrXgp6TDcpQVljd3tkKT49KGRtTVdB
bWA5WU5UNmEyfiQ2LX4kLTxGWntYWUVpaE4zRVl0aTRydyZkcm9kKU9FMn1zbXEKeilqU148N3pu
XnxSV356KGBXUUh6dGtjU31VU34qJnYpYTByXkslOUU9WVRnKyt+QjdSaih4bzBOb2lOV3RLWHpt
CnpCe3p7bTdEJEwkK2hyP0pPTE8wMlBZfn56NH02bmZTcXNvblJnflV2S1p6JXFmPEBBTnEjOzx2
eG90Jkg+KWlJPAp6e1ZxflRqJnVoJkBKRF9JXzZ1MGxYdyZWTXFfdjRnPT1ydGlKV2x6PipUY2Je
NmplSmg/V0hPN3JieUE9MlopcGMKek0kIUk+IWNVUn4wYmJsMit0MDR3VTMzTkI7KlEpeWNHWEFJ
PCRrfmUyUWFWO1E+YV58M05GNEAtM0h3M1UtRU8+CnpUbG1PK3NBRnNDbW1Aekh7SyEzRW0mRj54
bXkxNjtKZEMpRSs2VCYtV3o/SHgrPmB7QCU4MmI2QnI3LSNzI3txWApxQmF5c0o/UWA5NCQyP1Ru
LS1ENW9OWX5UOD5WZilKOz87cStMJD4/dl90RSRJI1FZYj10O25ZVQoKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zh
c3Qvc2Nyb2xsaW5nL3Njcm9sbGJhci10aWNrbWFya3Mtc3R5bGVkLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3Njcm9sbGluZy9zY3JvbGxiYXIt
dGlja21hcmtzLXN0eWxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk5NDlkZDhhZmQ5M2U4
MjM1ODAwNTNkY2FhMmU0MjcxNzdlOTUyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3Njcm9sbGluZy9zY3JvbGxiYXItdGlja21hcmtz
LXN0eWxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3MCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA3ODd4Njk2CisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA3ODd4NjAwCitsYXllciBhdCAo
MCwwKSBzaXplIDc4N3g2OTYKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgNzg3
eDY5NgorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDE2KSBzaXplIDc3MXg2NjQKKyAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc3MXgxOAorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NngxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDc2OiAicDAgYXNkZiBhc2RmIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDM0
KSBzaXplIDc3MXgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3
NngxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2OiAicDEgYXNkZiBhc2Rm
IgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDY4KSBzaXplIDc3MXgxOAorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NngxOAorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDc2OiAicDIgYXNkZiBhc2RmIgorICAgICAgUmVuZGVyQmxvY2sge1B9
IGF0ICgwLDEwMikgc2l6ZSA3NzF4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgNzZ4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogInAz
IGFzZGYgYXNkZiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwxMzYpIHNpemUgNzcxeDE4
CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc2eDE4CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzY6ICJwNCBhc2RmIGFzZGYiCisgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMTcwKSBzaXplIDc3MXgxOAorICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSA3NngxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDc2OiAicDUgYXNkZiBhc2RmIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDIwNCkg
c2l6ZSA3NzF4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzZ4
MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogInA2IGFzZGYgYXNkZiIK
KyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwyMzgpIHNpemUgNzcxeDE4CisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc2eDE4CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggNzY6ICJwNyBhc2RmIGFzZGYiCisgICAgICBSZW5kZXJCbG9jayB7UH0g
YXQgKDAsMjcyKSBzaXplIDc3MXgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA3NngxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2OiAicDgg
YXNkZiBhc2RmIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDMwNikgc2l6ZSA3NzF4MTgK
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzZ4MTgKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogInA5IGFzZGYgYXNkZiIKKyAgICAgIFJlbmRl
ckJsb2NrIHtQfSBhdCAoMCwzNDApIHNpemUgNzcxeDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDg0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggODQ6ICJwMTAgYXNkZiBhc2RmIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDM3NCkg
c2l6ZSA3NzF4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgODR4
MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA4NDogInAxMSBhc2RmIGFzZGYi
CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNDA4KSBzaXplIDc3MXgxOAorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA4NHgxOAorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDg0OiAicDEyIGFzZGYgYXNkZiIKKyAgICAgIFJlbmRlckJsb2NrIHtQ
fSBhdCAoMCw0NDIpIHNpemUgNzcxeDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDg0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggODQ6ICJw
MTMgYXNkZiBhc2RmIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDQ3Nikgc2l6ZSA3NzF4
MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgODR4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA4NDogInAxNCBhc2RmIGFzZGYiCisgICAgICBS
ZW5kZXJCbG9jayB7UH0gYXQgKDAsNTEwKSBzaXplIDc3MXgxOAorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA4NHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDg0OiAicDE1IGFzZGYgYXNkZiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw1
NDQpIHNpemUgNzcxeDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDI4eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjg6ICJwMTYgIgorICAg
ICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMjZ4MTgKKyAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDI4LDApIHNpemUgMjZ4MTgKKyAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgyOCwwKSB3aWR0aCAyNjogImFzZGYiCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoNTQsMCkgc2l6ZSAzMHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICg1NCwwKSB3aWR0
aCAzMDogIiBhc2RmIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDU3OCkgc2l6ZSA3NzF4
MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgODR4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA4NDogInAxNyBhc2RmIGFzZGYiCisgICAgICBS
ZW5kZXJCbG9jayB7UH0gYXQgKDAsNjEyKSBzaXplIDc3MXgxOAorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA4NHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDg0OiAicDE4IGFzZGYgYXNkZiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw2
NDYpIHNpemUgNzcxeDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDg0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggODQ6ICJwMTkgYXNkZiBh
c2RmIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153915</attachid>
            <date>2012-07-23 17:34:48 -0700</date>
            <delta_ts>2012-07-23 17:54:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91949-20120723173440.patch</filename>
            <type>text/plain</type>
            <size>27835</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzEwMzdiYTlkZjA2NDI5
MmIwMTRiNWQ2YjYxZGI0ZGRiYWQxNjEwNS4uNGJlZWQ4YmJkYzg4MzI2Yzc4ZTY3MGFkNjRjZWU0
NDE1YmRkNmZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA3LTIzICBOaWNv
IFdlYmVyICA8bmljb2xhc3dlYmVyQGdteC5kZT4KKworICAgICAgICBbY2hyb21pdW1dIFNob3cg
c2VhcmNoIHRpY2ttYXJrcyBvbiBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxOTQ5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGxldHRpbmcg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtzKCkKKyAgICAgICAgZGVsZWdhdGUg
dG8gdGhlIG5hdGl2ZSBTY3JvbGxiYXJUaGVtZS4gVG8gbWFrZSB0aGlzIHBvc3NpYmxlLAorICAg
ICAgICBtb3ZlIHBhaW50VGlja21hcmtzKCkgZnJvbSBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB0
byB0aGUKKyAgICAgICAgc3VwZXJjbGFzcyBTY3JvbGxiYXJUaGVtZS4KKworICAgICAgICBGb3Ig
dGVzdGluZywgYWRkIGludGVybmFscy5hZGRUZXh0TWF0Y2hNYXJrZXIoKSBhbmQgYWRkIGEgcGl4
ZWwgdGVzdC4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICBNb3Zl
ZCBwYWludFRpY2ttYXJrcygpIGZyb20gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUgdG8gaGVyZS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oOgorICAgICAgICBS
ZW1vdmUgcGFpbnRUaWNrbWFya3MoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q2hyb21pdW06OnBhaW50VGlja21hcmtzKToKKyAgICAgICAgU3dpdGNoIHRvIGRyYXdpbmcgdGlj
a21hcmtzIGFzIHZlY3RvcnMsIHNvIHRoZXkgY2FuIGJlIGFyYml0cmFyaWx5IHdpZGUuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAg
ICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyk6CisgICAgICAgIEltcGxlbWVudCBwYWlu
dFRpY2ttYXJrcygpLCBzbyB0aGF0IGNzcy1zdHlsZWQgc2Nyb2xsYmFycyBnZXQgdGlja21hcmtz
IG9uIG1hYy4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6
cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFp
bnRUaWNrbWFya3MpOgorICAgICAgICBJbXBsZW1lbnQgcGFpbnRUaWNrbWFya3MoKSwgc28gdGhh
dCBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMgZ2V0IHRpY2ttYXJrcyBvbiBtYWMuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJrcyk6CisgICAgICAgIERlbGVnYXRlIHRv
IHRoZSBuYXRpdmUgU2Nyb2xsYmFyVGhlbWUgZm9yIHRpY2ttYXJrIGRyYXdpbmcuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoK
KyAgICAgICAgKFJlbmRlclNjcm9sbGJhclRoZW1lKToKKyAgICAgICAgT3ZlcnJpZGUgcGFpbnRU
aWNrbWFya3MoKS4KKwogMjAxMi0wNy0yMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUu
ZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIG1lZGlhL2NvbnRyb2xzLXN0eWxpbmcu
aHRtbCBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuY3BwCmluZGV4IDA1NTEwNzcxMTRiNGJjN2VhN2I4YjFjNGVjZTk1ZTEwNDNlZDg1
ZGUuLmEzZWJjOTM2OTMyNWE0N2IyZTYyOTI4Njk2MGI0ZDZmZWJjMmYwYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXJUb05vZGUoTm9k
ZSogbm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsCiB9CiAKIAotdm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OmFkZFRleHRNYXRjaE1hcmtlcihSYW5nZSogcmFuZ2UsIGJvb2wgYWN0aXZl
TWF0Y2gpCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkVGV4dE1hdGNoTWFya2Vy
KGNvbnN0IFJhbmdlKiByYW5nZSwgYm9vbCBhY3RpdmVNYXRjaCkKIHsKICAgICAvLyBVc2UgYSBU
ZXh0SXRlcmF0b3IgdG8gdmlzaXQgdGhlIHBvdGVudGlhbGx5IG11bHRpcGxlIG5vZGVzIHRoZSBy
YW5nZSBjb3ZlcnMuCiAgICAgZm9yIChUZXh0SXRlcmF0b3IgbWFya2VkVGV4dChyYW5nZSk7ICFt
YXJrZWRUZXh0LmF0RW5kKCk7IG1hcmtlZFRleHQuYWR2YW5jZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKaW5kZXggNmEzNzI0ODAwNzZiZmFj
YWViZDEzMGNiZmRhNjQ0ZWUzN2I4ZDljYy4uOGRkMmIwNGZmMDcxYmI5YTYwMWY0MDFmMTA3MWFm
NjgwOTNkOGZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNYXJrZXIoUmFu
Z2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
bik7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKICAgICB2b2lk
IGFkZE1hcmtlclRvTm9kZShOb2RlKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIFBhc3NSZWZQdHI8RG9jdW1lbnRNYXJr
ZXJEZXRhaWxzPik7Ci0gICAgdm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoUmFuZ2UqLCBib29sIGFj
dGl2ZU1hdGNoKTsKKyAgICB2b2lkIGFkZFRleHRNYXRjaE1hcmtlcihjb25zdCBSYW5nZSosIGJv
b2wgYWN0aXZlTWF0Y2gpOwogCiAgICAgdm9pZCBjb3B5TWFya2VycyhOb2RlKiBzcmNOb2RlLCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgaW50IGxlbmd0aCwgTm9kZSogZHN0Tm9kZSwgaW50IGRlbHRh
KTsKICAgICBib29sIGhhc01hcmtlcnMoUmFuZ2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZXMgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VycygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4
IGQ3MzZjZTUzZDMxOTllOWM0NDNiMTEzYzQxNGZhOWI3NDk4ODNhMTQuLjNhOWZiNDhkODA1MDE0
N2VjOTgxZjIwOWYyMWQ5MzE2N2IyZjBhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMTU4Miw3
ICsxNTgyLDcgQEAgTm9kZSogUmFuZ2U6OnBhc3RMYXN0Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZW5kLmNvbnRhaW5lcigpLT50cmF2ZXJzZU5leHRTaWJsaW5nKCk7CiB9CiAKLUludFJlY3Qg
UmFuZ2U6OmJvdW5kaW5nQm94KCkKK0ludFJlY3QgUmFuZ2U6OmJvdW5kaW5nQm94KCkgY29uc3QK
IHsKICAgICBJbnRSZWN0IHJlc3VsdDsKICAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7CkBAIC0x
NTkzLDcgKzE1OTMsNyBAQCBJbnRSZWN0IFJhbmdlOjpib3VuZGluZ0JveCgpCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdm9pZCBSYW5nZTo6dGV4dFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVj
dHMsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0LCBSYW5nZUluRml4ZWRQb3NpdGlvbiogaW5GaXhl
ZCkKK3ZvaWQgUmFuZ2U6OnRleHRSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBib29sIHVz
ZVNlbGVjdGlvbkhlaWdodCwgUmFuZ2VJbkZpeGVkUG9zaXRpb24qIGluRml4ZWQpIGNvbnN0CiB7
CiAgICAgTm9kZSogc3RhcnRDb250YWluZXIgPSBtX3N0YXJ0LmNvbnRhaW5lcigpOwogICAgIE5v
ZGUqIGVuZENvbnRhaW5lciA9IG1fZW5kLmNvbnRhaW5lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAppbmRleCA4
ZjBlOThiNDc4MDg2YTk1Mjg0ZTUwM2IyYzMwN2M5YzQ5ZmYyZWYwLi4wNDhjZDY5OTJkNWNjNWE2
YzVjMWZiYThiODYwMTQ3NWU4MGI4MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaApAQCAtMTEyLDcgKzExMiw3
IEBAIHB1YmxpYzoKIAogICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoKSBjb25zdDsKIAotICAg
IEludFJlY3QgYm91bmRpbmdCb3goKTsKKyAgICBJbnRSZWN0IGJvdW5kaW5nQm94KCkgY29uc3Q7
CiAgICAgCiAgICAgZW51bSBSYW5nZUluRml4ZWRQb3NpdGlvbiB7CiAgICAgICAgIE5vdEZpeGVk
UG9zaXRpb24sCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIH07CiAgICAgCiAgICAg
Ly8gTm90IHRyYW5zZm9ybS1mcmllbmRseQotICAgIHZvaWQgdGV4dFJlY3RzKFZlY3RvcjxJbnRS
ZWN0PiYsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIFJhbmdlSW5GaXhlZFBvc2l0
aW9uKiA9IDApOworICAgIHZvaWQgdGV4dFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGJvb2wgdXNl
U2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIFJhbmdlSW5GaXhlZFBvc2l0aW9uKiA9IDApIGNvbnN0
OwogICAgIC8vIFRyYW5zZm9ybS1mcmllbmRseQogICAgIHZvaWQgdGV4dFF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgUmFuZ2VJbkZpeGVk
UG9zaXRpb24qID0gMCkgY29uc3Q7CiAgICAgdm9pZCBnZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZS5oCmluZGV4IDVmZTQ1YjFhNDczNjU3MTZiZjJiNzJhNDZkYWJhZWI2YWYwYmZmZTQuLmNj
Y2MyZjkyNTZmZDMyMjhkMzQxZjNjNmU5MTY1OGJjOWE1NTVkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaApAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIHsgZGVmYXVsdFBhaW50U2Ny
b2xsQ29ybmVyKGNvbnRleHQsIGNvcm5lclJlY3QpOyB9CiAgICAgc3RhdGljIHZvaWQgZGVmYXVs
dFBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgY29ybmVyUmVjdCkgeyBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hp
dGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNr
bWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3
KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmLCBjb25z
dCBJbnRSZWN0JikgeyB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVO
QUJMRShSVUJCRVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZS5oCmluZGV4IDY5NmRiMTJiMTk3NzdkY2Q2MDdlZTA0NjFhMjE1
MDFjOTAwZDYwZjUuLmRmZDE1ZWQxODg3ODMwOGExN2RhYzU0MDE4ZjU1NTYxOThiZjhiYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUu
aApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQ
aWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmLCBTY3JvbGxiYXJQYXJ0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Ny
b2xsYmFyUGFydCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JikgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgSW50UmVjdCYpIHsgfQogCiAgICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0
cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0JiByZWN0KSB7IHJldHVybiByZWN0OyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcApp
bmRleCA2ODJkODJkNWIzMzc5MThiMjVkMDk4YmE3NzE3MzRlNzkxNTA1ZTkxLi40YTQ5MzhhYzgw
ODRmMjQ5MGYyNDRlYWExYmIzNjIxOWY1MTIxYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcApA
QCAtMTEzLDE0ICsxMTMsOCBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlj
a21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVAogICAgIGlmICghdGlj
a21hcmtzLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gR2V0IHRoZSBpbWFnZSBm
b3IgdGhlIHRpY2ttYXJrcy4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxJbWFnZT4s
IGRhc2gsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRpY2ttYXJrRGFzaCIpKSk7Ci0g
ICAgaWYgKGRhc2gtPmlzTnVsbCgpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29udGV4dC0+c2F2ZSgpOworICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgY29udGV4dC0+
c2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKIAogICAgIGZvciAoVmVjdG9yPEludFJlY3Q+Ojpj
b25zdF9pdGVyYXRvciBpID0gdGlja21hcmtzLmJlZ2luKCk7IGkgIT0gdGlja21hcmtzLmVuZCgp
OyArK2kpIHsKICAgICAgICAgLy8gQ2FsY3VsYXRlIGhvdyBmYXIgZG93biAoaW4gJSkgdGhlIHRp
Y2stbWFyayBzaG91bGQgYXBwZWFyLgpAQCAtMTI5LDExICsxMjMsMTQgQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFNjcm9sbGJhclQKICAgICAgICAgLy8gQ2FsY3VsYXRlIGhvdyBmYXIgZG93biAoaW4gcGl4ZWxz
KSB0aGUgdGljay1tYXJrIHNob3VsZCBhcHBlYXIuCiAgICAgICAgIGNvbnN0IGludCB5UG9zID0g
cmVjdC55KCkgKyAocmVjdC5oZWlnaHQoKSAqIHBlcmNlbnQpOwogCi0gICAgICAgIEludFBvaW50
IHRpY2soc2Nyb2xsYmFyLT54KCksIHlQb3MpOwotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2Uo
ZGFzaC5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgdGljayk7Ci0gICAgfQorICAgICAgICBj
b250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMHhDQywgMHhBQSwgMHgwMCwgMHhGRiksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBGbG9hdFJlY3QgdGlja1JlY3QocmVjdC54KCksIHlQ
b3MsIHJlY3Qud2lkdGgoKSwgMyk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHRpY2tSZWN0
KTsKIAotICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENv
bG9yKENvbG9yKDB4RkYsIDB4REQsIDB4MDAsIDB4RkYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgRmxvYXRSZWN0IHRpY2tTdHJva2UocmVjdC54KCksIHlQb3MgKyAxLCByZWN0Lndp
ZHRoKCksIDEpOworICAgICAgICBjb250ZXh0LT5maWxsUmVjdCh0aWNrU3Ryb2tlKTsKKyAgICB9
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaAppbmRl
eCAxOTM0NmU3MjNiYWIyODdmOThlMTdjODEyZGI1ODNhMWMyMDY3MDIwLi5lZmJkZDA5OTJjMjQz
MDI0MWJlNWM5MzFiYzYzOTlkYzhiOGJlMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCkBA
IC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNv
bnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICAKIHBy
aXZhdGU6CiAgICAgdm9pZCBwYWludEdpdmVuVGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFZlY3RvcjxJbnRSZWN0
PiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KaW5kZXggNzVlNGEyOWM4OGMyMzczM2UzMjk2
N2E0MGY5NWRlZDlhYjIyODM1Ni4uNzNkNzliMGJjYmRlYzcyNGRhNjI1NTAzYjEzMjQ3MDEwNjRm
ZTQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgYm9v
bCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBHcmFwaGljc0MKICAgICB9CiAgICAgLy8gVGhlIGVuZHMgYXJlIHJvdW5kZWQg
YW5kIHRoZSB0aHVtYiBkb2Vzbid0IGdvIHRoZXJlLgogICAgIHRpY2ttYXJrVHJhY2tSZWN0Lmlu
ZmxhdGVZKC10aWNrbWFya1RyYWNrUmVjdC53aWR0aCgpKTsKLSAgICAvLyBJbnNldCBieSAyIG9u
IHRoZSBsZWZ0IGFuZCAzIG9uIHRoZSByaWdodC4KKyAgICAvLyBJbnNldCBhIGJpdC4KICAgICB0
aWNrbWFya1RyYWNrUmVjdC5zZXRYKHRpY2ttYXJrVHJhY2tSZWN0LngoKSArIDIpOwogICAgIHRp
Y2ttYXJrVHJhY2tSZWN0LnNldFdpZHRoKHRpY2ttYXJrVHJhY2tSZWN0LndpZHRoKCkgLSA1KTsK
ICAgICBwYWludEdpdmVuVGlja21hcmtzKGRyYXdpbmdDb250ZXh0LCBzY3JvbGxiYXIsIHRpY2tt
YXJrVHJhY2tSZWN0LCB0aWNrbWFya3MpOwpAQCAtNDA5LDUgKzQwOSwyNSBAQCB2b2lkIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiB2aWV3
LCBHcmFwaGljc0NvbgogICAgIH0KIH0KIAordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
OjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgLy8gTm90ZTog
VGhpcyBpcyBvbmx5IHVzZWQgZm9yIGNzcy1zdHlsZWQgc2Nyb2xsYmFycyBvbiBtYWMuCisgICAg
aWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSAhPSBWZXJ0aWNhbFNjcm9sbGJhcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKHJlY3QuaGVpZ2h0KCkgPD0gMCB8fCByZWN0LndpZHRoKCkg
PD0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPEludFJlY3Q+IHRpY2ttYXJrczsK
KyAgICBzY3JvbGxiYXItPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOworICAgIGlmICghdGlja21h
cmtzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSW5zZXQgYSBiaXQuCisgICAg
SW50UmVjdCB0aWNrbWFya1RyYWNrUmVjdCA9IHJlY3Q7CisgICAgdGlja21hcmtUcmFja1JlY3Qu
c2V0WCh0aWNrbWFya1RyYWNrUmVjdC54KCkgKyAxKTsKKyAgICB0aWNrbWFya1RyYWNrUmVjdC5z
ZXRXaWR0aCh0aWNrbWFya1RyYWNrUmVjdC53aWR0aCgpIC0gMik7CisgICAgcGFpbnRHaXZlblRp
Y2ttYXJrcyhjb250ZXh0LCBzY3JvbGxiYXIsIHRpY2ttYXJrVHJhY2tSZWN0LCB0aWNrbWFya3Mp
OworfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clRoZW1lLmNwcAppbmRleCA0NGUyYWE2MzFkYzI4MTUwMTc0YmMyMjUyMzBlOGI2YWFiN2QwZDM1
Li42ZDJlMDliMmUyYmFjZWFlNGUxOTdmYzY0MWU3NmFjNzJkN2I1NzljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKQEAgLTEzOCw0
ICsxMzgsOSBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbAogICAgIHRvUmVuZGVyU2Nyb2xsYmFy
KHNjcm9sbGJhciktPnBhaW50UGFydChjb250ZXh0LCBUaHVtYlBhcnQsIHJlY3QpOwogfQogCit2
b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCit7CisgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnBhaW50VGlja21hcmtzKGNv
bnRleHQsIHNjcm9sbGJhciwgcmVjdCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggOWNlZjM5NDlmYTlmNGRjNzE4OTM4
NzdmOGMxMGM5ZGU2MjQ4ZjQ0Ny4uYzE0ZGUzZmJjZTkzZmY3MTIxZTBjNWM3NGJmMzQzYWExYmU4
NzBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRo
ZW1lLmgKQEAgLTczLDYgKzczLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9u
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYs
IFNjcm9sbGJhclBhcnQpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1
YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgSW50UmVjdCBj
b25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UmVjdCYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBl
MzIxNDIzMTY5M2ZjOTE5ZGY0MWU3YTQ1NGY3Nzg5Njc4MGUzZGZmLi5mNDA4YzZhMzM3NDAxYzkx
ZWIxOTUxMTI5MDliMWE1ZGYzNjY2NmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC02MjQsNiArNjI0LDExIEBAIFN0cmluZyBJbnRlcm5hbHM6Om1hcmtlckRlc2NyaXB0
aW9uRm9yTm9kZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsCiAgICAgcmV0
dXJuIG1hcmtlci0+ZGVzY3JpcHRpb24oKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OmFkZFRleHRN
YXRjaE1hcmtlcihjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgaXNBY3RpdmUpCit7CisgICAgcmFu
Z2UtPm93bmVyRG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRUZXh0TWF0Y2hNYXJrZXIocmFuZ2Us
IGlzQWN0aXZlKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNldFNjcm9sbFZpZXdQb3NpdGlvbihE
b2N1bWVudCogZG9jdW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAppbmRleCAwNDAwNTIzNzhlZThkNTVhMjQ2ZjBjNTYyMDAyMDhlZjYzZWMw
OGJlLi40YTEyZTAyMjRhNDc5YjdlNjQ3NmE0ZTJiYzA1YjAyMjMyMzk3YTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdW5z
aWduZWQgbWFya2VyQ291bnRGb3JOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2VGb3JOb2RlKE5vZGUqLCBj
b25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7
CiAgICAgU3RyaW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShOb2RlKiwgY29uc3QgU3RyaW5n
JiBtYXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
YWRkVGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdlKiwgYm9vbCBpc0FjdGl2ZSk7CiAKICAgICB2
b2lkIHNldFNjcm9sbFZpZXdQb3NpdGlvbihEb2N1bWVudCosIGxvbmcgeCwgbG9uZyB5LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiBtb2RlLCBpbnQgZ2FwLCBFeGNlcHRpb25Db2RlJiBlYykgeyBzZXRQYWdp
bmF0aW9uKGRvY3VtZW50LCBtb2RlLCBnYXAsIDAsIGVjKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCmluZGV4IGZkZTQ1NzdlYjNjZjdiZTJjOGRiOWI0ZTgwNWJiNWM1OGI5ZmJh
MjguLmJiNTNiZjdiYTMxZDMyMTlmYzNjMzBlZGFjMzYzZGE5NzlhNWY3MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTg2LDYgKzg2LDcgQEAgbW9kdWxlIHdpbmRvdyB7
CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWFya2VyQ291bnRGb3JOb2RlKGluIE5vZGUgbm9kZSwg
aW4gRE9NU3RyaW5nIG1hcmtlclR5cGUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBS
YW5nZSBtYXJrZXJSYW5nZUZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBET01TdHJpbmcgbWFya2Vy
VHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAg
ICAgIERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBE
T01TdHJpbmcgbWFya2VyVHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisgICAgICAgIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKGluIFJhbmdlIHJhbmdl
LCBpbiBib29sZWFuIGlzQWN0aXZlKTsKIAogICAgICAgICB2b2lkIHNldFNjcm9sbFZpZXdQb3Np
dGlvbihpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyB4LCBpbiBsb25nIHkpIHJhaXNlcyhE
T01FeGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9z
Y3JvbGxiYXItdGlja21hcmtzLXN0eWxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9zY3JvbGxiYXItdGlja21hcmtzLXN0eWxlZC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDk5NDlkZDhhZmQ5M2U4MjM1ODAwNTNkY2FhMmU0MjcxNzdlOTUyZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Njcm9sbGJhci10aWNrbWFya3Mt
c3R5bGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcwIEBACitsYXllciBhdCAoMCwwKSBzaXpl
IDc4N3g2OTYKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDc4N3g2MDAKK2xheWVyIGF0ICgw
LDApIHNpemUgNzg3eDY5NgorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA3ODd4
Njk2CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsMTYpIHNpemUgNzcxeDY2NAorICAgICAg
UmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzcxeDE4CisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc2eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggNzY6ICJwMCBhc2RmIGFzZGYiCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMzQp
IHNpemUgNzcxeDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc2
eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzY6ICJwMSBhc2RmIGFzZGYi
CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNjgpIHNpemUgNzcxeDE4CisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc2eDE4CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggNzY6ICJwMiBhc2RmIGFzZGYiCisgICAgICBSZW5kZXJCbG9jayB7UH0g
YXQgKDAsMTAyKSBzaXplIDc3MXgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA3NngxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2OiAicDMg
YXNkZiBhc2RmIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDEzNikgc2l6ZSA3NzF4MTgK
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzZ4MTgKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjogInA0IGFzZGYgYXNkZiIKKyAgICAgIFJlbmRl
ckJsb2NrIHtQfSBhdCAoMCwxNzApIHNpemUgNzcxeDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDc2eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggNzY6ICJwNSBhc2RmIGFzZGYiCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMjA0KSBz
aXplIDc3MXgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3Nngx
OAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2OiAicDYgYXNkZiBhc2RmIgor
ICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDIzOCkgc2l6ZSA3NzF4MTgKKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzZ4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCA3NjogInA3IGFzZGYgYXNkZiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBh
dCAoMCwyNzIpIHNpemUgNzcxeDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDc2eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzY6ICJwOCBh
c2RmIGFzZGYiCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMzA2KSBzaXplIDc3MXgxOAor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3NngxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc2OiAicDkgYXNkZiBhc2RmIgorICAgICAgUmVuZGVy
QmxvY2sge1B9IGF0ICgwLDM0MCkgc2l6ZSA3NzF4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgODR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCA4NDogInAxMCBhc2RmIGFzZGYiCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMzc0KSBz
aXplIDc3MXgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA4NHgx
OAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDg0OiAicDExIGFzZGYgYXNkZiIK
KyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw0MDgpIHNpemUgNzcxeDE4CisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDg0eDE4CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggODQ6ICJwMTIgYXNkZiBhc2RmIgorICAgICAgUmVuZGVyQmxvY2sge1B9
IGF0ICgwLDQ0Mikgc2l6ZSA3NzF4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgODR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA4NDogInAx
MyBhc2RmIGFzZGYiCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNDc2KSBzaXplIDc3MXgx
OAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA4NHgxOAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDg0OiAicDE0IGFzZGYgYXNkZiIKKyAgICAgIFJl
bmRlckJsb2NrIHtQfSBhdCAoMCw1MTApIHNpemUgNzcxeDE4CisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDg0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggODQ6ICJwMTUgYXNkZiBhc2RmIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDU0
NCkgc2l6ZSA3NzF4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
Mjh4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyODogInAxNiAiCisgICAg
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAyNngxOAorICAgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMjgsMCkgc2l6ZSAyNngxOAorICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDI4LDApIHdpZHRoIDI2OiAiYXNkZiIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICg1NCwwKSBzaXplIDMweDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDU0LDApIHdpZHRo
IDMwOiAiIGFzZGYiCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNTc4KSBzaXplIDc3MXgx
OAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA4NHgxOAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDg0OiAicDE3IGFzZGYgYXNkZiIKKyAgICAgIFJl
bmRlckJsb2NrIHtQfSBhdCAoMCw2MTIpIHNpemUgNzcxeDE4CisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDg0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggODQ6ICJwMTggYXNkZiBhc2RmIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDY0
Nikgc2l6ZSA3NzF4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
ODR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA4NDogInAxOSBhc2RmIGFz
ZGYiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zY3JvbGxiYXItdGlj
a21hcmtzLXN0eWxlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc2Nyb2xsYmFy
LXRpY2ttYXJrcy1zdHlsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDQ5MTI3N2MyOTU5MjQ5Njg4ZjIx
NDZhZWU1MDA2ZGEwOTc4ODFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvc2Nyb2xsYmFyLXRpY2ttYXJrcy1zdHlsZWQuaHRtbApAQCAtMCwwICsxLDU4IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxoZWFkPgorPHN0eWxlPgoraHRtbCB7CisgICAgZm9udDogQWhl
bSAxMHB4OworICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IG5vbmU7Cit9Cis6Oi13ZWJraXQt
c2Nyb2xsYmFyIHsKKyAgICB3aWR0aDogMTNweDsKKyAgICBoZWlnaHQ6IDEzcHg7Cit9Cis6Oi13
ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuOworfQor
Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CisgICAgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEy
OCwgMTI4LCAxMjgsIDAuOCk7ICAvKiBMZXQgdGlja21hcmsgc2hpbmUgdGhyb3VnaCAqLworfQor
PC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBoaWdobGlnaHQoKQoreworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgdmFyIGVsdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdlbHQnKTsKKyAgICBlbHQuY2xpZW50V2lkdGg7CisgICAgcmFuZ2Uuc2VsZWN0
Tm9kZUNvbnRlbnRzKGVsdCk7ICAvLyBNYWtlIHN1cmUgdGhlIHJlbmRlciB0cmVlIGV4aXN0cy4K
KyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLmFk
ZFRleHRNYXRjaE1hcmtlcihyYW5nZSwgdHJ1ZSk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9ImhpZ2hsaWdodCgpOyI+CisKKzxwPnAwIGFzZGYgYXNkZgorPHA+
cDEgYXNkZiBhc2RmCis8cD5wMiBhc2RmIGFzZGYKKzxwPnAzIGFzZGYgYXNkZgorPHA+cDQgYXNk
ZiBhc2RmCis8cD5wNSBhc2RmIGFzZGYKKzxwPnA2IGFzZGYgYXNkZgorPHA+cDcgYXNkZiBhc2Rm
Cis8cD5wOCBhc2RmIGFzZGYKKzxwPnA5IGFzZGYgYXNkZgorCisKKzxwPnAxMCBhc2RmIGFzZGYK
KzxwPnAxMSBhc2RmIGFzZGYKKzxwPnAxMiBhc2RmIGFzZGYKKzxwPnAxMyBhc2RmIGFzZGYKKzxw
PnAxNCBhc2RmIGFzZGYKKzxwPnAxNSBhc2RmIGFzZGYKKzxwPnAxNiA8c3BhbiBpZD0iZWx0Ij5h
c2RmPC9zcGFuPiBhc2RmCis8cD5wMTcgYXNkZiBhc2RmCis8cD5wMTggYXNkZiBhc2RmCis8cD5w
MTkgYXNkZiBhc2RmCisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3Njcm9sbGluZy9zY3JvbGxiYXItdGlja21hcmtz
LXN0eWxlZC1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMv
ZmFzdC9zY3JvbGxpbmcvc2Nyb2xsYmFyLXRpY2ttYXJrcy1zdHlsZWQtZXhwZWN0ZWQucG5nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjExMDFjNzE1ODBkOTE2ZGQ0YmRiZGUyYWVjZDdlMWJmZjJlNzg5MmUKR0lUIGJp
bmFyeSBwYXRjaApsaXRlcmFsIDczNjgKemNtZFR9ZHB3bCt6a2Z1Y1JeYFg5JWNOMiZTJW9rdkdI
bEFBVnFKMmROZy1qYUhpazBodmJKb3klNEo8RHlWeD80CnorbCZaaDhiakB0IWo2UGwjSVUpZiFG
WHhSVT5OODdKVlRjfj9LISg9X3FYVHdgPlVyaG11SjUzJi0/Yjd1UmdaTgp6c3dfcT1oOUY0QSlA
R2oqMWolYmMmO29aUU1lczteTTlmTD5rNTJmMF9pKjE2ez1VSXNnYi0rI3xGTlRuWG4jVyEKelV0
YH4kWGtRfl4hYComSShaPnU3KDFyIyhlUnJYKXtXQ1gxa2NPeDJ6Sz5pXmU+ZEVUcXdgSHFESy19
UVNTVVEmCnpYSVBxUEUjNzk3Xmw5JipHWHwjJWAjMH5teVomYH4qXjEmUDE1Pzx8eT9JcnxjS0I4
VGpzaVkpPX5NQEFIZSVPLQp6PjQqUV54ZDRKYi1iZSl4OSN2UWxMN0VwSkBXNUdCTzktTUdFS3Fg
PTw8XmlLMWw/MjhnZG9kUmF0YVducjFpKDIKek92ZDYpYyUpZyg7PDwhb3w0NG94VmRLYkFSfiFV
UUN8V0pCPX1OaGpFPSgje3B8fl8kQTs+fTlVVSZEejkxZzFICno2MUpRMHYrSUs8N09GdGQ+NUZV
T24+KXg9YXk5TDwkd2VfVDZeNGNuX0cpV1NwNVMmeGRXdkB6PXQwbkU7fEgxQAp6VGc9Y3VHbHRC
RWhUfkdZM1BfKm9wMzd6dCgre3IlWnhJeWxsaFlzNzttMG17e3ZAY0N4UHJ3b28tVGF9ek9CUmsK
emJAeiFiY3w4c197ZzBFYmR3X2VPK1JEKlBURW9ZbU0rZFlsZ3JJZnk8X20qNnpRNlJ+clUqNCop
SWg+KDlnJCs5CnpJNyNwYGI0U3o/Uz11Jno3cEwmcXl2NXRmX2BNRTJBQ2R5fXtwJDBWSytxbi1x
RDBwKE5IalUjNUBpPDh0VypQbwp6Ky1VY2dPNW1qaTRiVStHSU5WaF55SlAoOCFDOX5SUUVBMHJi
bUlSam1ZMSl9YEZXJXpUezgweTJGT3ImdUhjQk8Kelk2UiF3X1UtSHtUVjcxKHlSfE5hc0cmUTA3
NXM0QSN4MnBWX3dgUmVQPDhNU2ZffGxTYW5vZi0pSklYe258I2IzCnpyeVM4O0FKJCVWcSN6Mykr
UX09ZDFrYlpGcUpIeDJQX3F4YU00VSo4NmpYTTZvSmVeZTdALWJVQGorPDVkMGJaagp6TntTcVA/
Z29iJSk5bUthVCVXSyRvMlNUfChJQlRhIVI+MzNyK1ZTSHpNcSV0Yk1jd25Ve1hTS1VtWnsyNFAq
TmYKekJSNUVqYVM2VlZjZ3c9Yj84PVNkak5VcTQmaT17QnlnM2s5aWp3K0FfcGIxcFNLSzQ9SVM0
Y3A4fWBCQFdrbWclCnoydGtsX1Y3JCsyQlFPb3RKN05JamU+RFQla0g+TCQkUm4qVXokNEFeNTxs
T0tgSzdNRlM0SW9BbVJgeFdJISt+Pgp6R0FUWUJ3NHZMSnpXfVBQSTZiTWJESElUY0hOREFhOXVO
RmQmR2JfY151MyNtOHJvfFp2R0sjb3cmYkV8cGBWMFkKek0yPXorRDlEc0FZayoyWk57Rkk4b0BU
MCg1K2IpVkhmQjFeT0drc3szeTlkQXc+dV5eb3U2ciprYV8mPklHSUN1CnolPyshfW5ESkwoKH01
cjcjOUEhO1J1YExvOUE8Png9Pz9AP0lOUyNyS1k1RkI7TkdCUnh0VEY3ck9UWCU+VmhsJQp6bkR2
djdGUl9WcDQ5S0V0b1FaSzZIMHQySzsmQVBeMVFFMy0kMDdxQXI4dENwb3BPR1JuLSh2SiU3VHtr
dSozIWsKekp4MGZ0c2U8PHUxfVFFbEUoM15mWkJYNmpZWWtzbTd5cVRZXm5PJWlpWj5tOXlTOEst
TWFyVnsmbVZ8cnNTbj0mCno+PilnanFibElZJnNnRHU4bkdRRih+JnA4ZmJvOU8hV0pKI1BzYWRa
enVWc2pVREhfdkt+YVFASn49ekdqYm1Kdgp6dFl0bTdBKTJYOFVVdFRHbTVEUGxDRXEmMkx3aUNv
RihmJHlITkBJSzxmXyF4djA4YGFDVkEkJTclT21wVGRue0AKeiR7OUtBcmppSVVEP018K3ooezJs
QTtyX2dob2hOfUtALWxXQDBfOXEhZWlzKDFtI15zPDdSQWwyJDg7WWNCcDkmCnpaY0c/Q0NhaXJ9
SW8ybXdDc1ZzbFpPdC1tbl8rWUZlQStGbypKTHFZR0NLRj9fV19jYEtEIWl4cU9UdV5aaSlkfQp6
RTtNUD43IzteXmFOKEUmYDJQUEZPWmNDVHt7M2NDelpxNjZVQT5PTm83P0tMKnI1Z1IkIytLejdZ
NCo4NU9DfWcKei1+aUVhU0c2QEE4enVeNGsySGNvO3I9V0tkc2pGQkJLYVohIWM9K0pzaX5XNXtV
NVdGNkx5RjI3JWRKQUtfez5OCnpaTV87ZWB1eFBpNE5gPj1LTWEjJnhickA4KnY/QEp4QGQwNDc5
dFVLPlh1dzZzWFg5YDxsdWJeV0xrfVRiPT1HUAp6WDlqWFpIOW9YYFY8Qj5LejRhS0lraXg7I0N2
QDQjIXlGbTZgLTByaD5ffXBTVW1UdlQzUFkkVFFTY0tlSjdJZWQKemt0IW53e2pRWnFleHB3ajRg
c2hMa2ZnWU47KWJoWVZuRXRgbkheMHAtdkRnbGBmQUd8YXt4eFJGfUM9XllWYnZ+CnpTSmVSNHs3
SXwrb3cmUipkJTNyK1dWKX02Zld6WGQtMVhUfihLPnAqSWVafHxVbVRVfDluaHZ2PllkQVFHTUdx
JQp6SWtQP1hnM3RiKUoqNm59TkFlSmE0fH1BUFgxeH1Jd2hrYFY5NllPYT8hcTNRbCElUkB5fHNB
dk0tUlUlN2pSJFoKemEpU2pOSXhPRENeMG5vVT57VExrZVEzb19Rd09DfVU0KTlPbnpQPWF0VHgx
ZGA8TDFUKEpLeSNNOD5eMFR1WngzCnpVeSFjJVdGZHgrbm89KiszUThFcHJTJnp2P2QhTDhaVyhf
Qnp4R1MjZ2RYJEMoOWUzQW48czFDcy1gOztfM2g0Kwp6RDl9VS1kRCgwI3pJfWFPIz0mTmhKeiE3
TXdQfEtFa2lOYEhgQzdhJHJNV0cqMSRjPTckdVpxV1l4Uz4hRkQ1K2sKenxFcE00LUUpZmRxSGZr
SlZ8cSVwMz8zTTJzS0dXV1pPZmkoYXkqbWk0bGJROGdER3g8bVYySVpMZUxLWmJJU0UjCnpEVitE
TjJQXjFpb0pASThJM153dzJYaE5aQ2hObDwyTT8yUyhUWE8+eXc5aHMkdTI4Q2B4VTxoO315amEt
Nj5NMQp6aVdYR0FMbCEzQ21uOE8pTzhnPHRIU3Z7TDNNXjZHZmZLJWBpSyFeNXg7SUBUNVhvaGkp
aCZhMzRgSHFFVkRqSiQKemNrLW88ZHhzKitfKX4pNEF7ekdCTmxWTFlKQEYhMHg0NDt9WTttcVlu
ODhaaWYhdEhgVDEhdEFRSWNZYHt3NSg9CnpQPTlJeXhzZmx7WnYrfjMmc2hGRTNrYjRMTzIxT3Q0
bFF0QHVJMnRgKChMYn5oJTZfUXZFRCRuZSZPPmc8OE1jbwp6OVZnRVdsZWBaVD1maUk7aGpWMCZ6
O287QnRLcX0xeHFARjtsYkBtRi1JbF9jMyU/Q0Bhe0hXdHt0OTJCWVY1UjgKemZlTTJ5alc7V2Rs
SUJJTVZrOHRmK15lZkMlTVYyYTZecEc0SilnViVtZFNAQ3YmPmE/PWVIRCF3PyQ8SVA5VHohCno4
RWR8ZmY1WWoxUiFsPngpKi18UXpMMipPPn5hYnozPUJPT0IlSWp+KGpiejlgS2dMQ15edmNWN30x
bEc0QX1Wewp6ZlMrV09obmM/LXlmUEo7NzBVMFgtK3ZRKHVXWHpuJVo8OGApO2oqYVhOYzV+cz5D
V0otcXExWjR7Qysxaz17cioKemt8blAqM0kpd24ySCozT1JfdjlRKElxR19zVkZsfEZoIVQ/cyln
Wj9sa0N5dStIITtBVDNZVX4oTGJeIWNkYFZ7CnpVMEp4ZGVTVkttdWE7WlVzTilqZDlDMSlxJEF7
Oz5tJkg+d3clOTMqd1FgcX1UQmNNYXZoWncoZFckZkZlWXJsdgp6K3BtaF9rTXtBSF5HNHEtcGxV
ZC0zOWcqX3RWKSpjZlV9Zl5HIz0xJEJkU2JhPjh+OyNFMVRoRWkjMHNwanxiVmYKeiZDQWZEPFpS
Yn1RYSN+MHVKbGFuPEZMN2V3Uz4wTHM1MlNvaUktdGp1Y31GZXpTLUhBdnhQKHB4eGZCISptMG1M
Cno2RCN4K2R7Ui1QMVlCSWgpWWZeRUBtJlBCKXUtcn5SUXVnY2NAR00tPHomIWMrQ2NfdW9vUFR5
ej97Mj9MX0QzIwp6TEs3WlF2SnRgTjwoKTVPV3UjeEopI1N0e045cjhaKCk9ZVkqc2JHMVFOSnBW
TExLKjxTanJsfHZFWDxeU2M/bnsKenNHSDBrKiFnZjArd35AaTwpZEdLQG5FaHBBQV9tR001MUsx
dnNsPz83KzYxTDthJWFINFEwdCt3UmhROFAyKVVNCnpEM3s8Kzt2NU9KMXJIXmQ1e3VnUm8pKHpQ
MD5Rc1NaOC1zSWlAJXM5VHpTPCtgPEhjYUJjTThybipGa3w9c31jNgp6U3s0Q1VGbCs5KVVCVE4h
aEt7PEd5PTV6KiRmUFl0RiZmN2A7Mj1MMm00YH5AZnF0QUYxZnJJXllPczBac1QzVlgKellTd3FY
KipHRkV1b0ZxU0NzKUYpPChqaVJzU2tnQHRJQjRPKWptK31iaEAyNjBLP081cEFJYlNPcWE8TXd+
Pj4jCnooI1BNVjxDRUg7dy1DPDNnMnRIPndDYzVZe2JsKUJoRHhee1ghVSM+Y3wzflNFfEclTCFi
ayRLM3pATUk4Ynw8UQp6V3loUXlJZD5nLSE5dVVrYjBSWFBiI09VP3A+cjJ4QTZ6TUtxaWNNM1le
SUEtUEl2VER2Tit7d2xudWF0Y0o3VmsKemZIRU1ub1E7Mzg8LXtyYGBnYERgQ15WLWNlLUcoMiRx
U340MDtyVEBfQkdrQXAkSX48eGN2MTdaQjJnVmgpRytLCno4MmhiRSlgfmY9UUB9O2w5TSRZdiRM
bmBwRzV4bmw+PEclPmM8VCgob2c8JlhuLSlgYXF1VTYmbSlsanFSOVFJcgp6VVIqayFDTyZ5YiZ1
JUEhZFNBSTBVYllPKEVuQiptYntTSGVBRWIqTyZAZ3g0R3lELTB7UVY8VFZKLUZeJFgkX2UKejNY
RShiRW9oUlF6MHF7cGk5YmArTTdBOVVJciRSRSQoTDNQQF5hdTgqK3hRdkdtWUpDZl8wUEFOdjNt
QW5hVWlzCnpJdHo8NT1xPXAmLWVVY0NfbSlOb2JvbWg/UUlPIThwRX1hPlNiX3swMjQxJEBMaD0x
USRnUEIjSXlTPjtpNSQtcAp6Qz4tWDtNNzJifnArZ1p9ejtVN2BaTDg8JTRDI2A5ZGczdzJ0dSMy
STlpdGAzQT5mZHNPNU91YilEUD5oZD92Xk0Kek5MbUs5KGdDVEpCUSZfXjUyejl+JW98U2dYTVYr
KW1nZ15RRSNKanY/fUZNWnFtQyRle2VtSzghN0ghViNGMmF3CnphK1pIRUVHeXdHKnV5Wk00WVZN
WHRhUHg5JTM2TEg8cVEtc0hBUXFGTkwjSXBsPiNMMW1kJmk1Pj1fX0glYWNUYAp6WX5KcFlZVnpe
aihRdFVWOWFsIz01QVhOX0w0KmJ5S1V3TUQyVmVZK3JUK3NKJkFKa29CTXVadHlSd1pWdlNrZCsK
em9EIzBQZSUpOXBKJFJoV2Axb0MlYz0/WXEzSGt5ZDE/MnpKKnRhMTxfKX5pSVRCSnJHKnBYMiVB
Vil1QmltSU1nCnomTFNHM21vRGVtdWBnRn5zdmQ3T1hqO1o7aUxrYTR2fHVWeT8+I2t4Y1ctODNC
YkMjQ3JlaCEyMDdUYE9DJCZhOwp6eWAybytGc1l+U1M0XlVsWCN6TF5wSW5KRlBJKz9wJTR7c0FI
QzNPSWFHT3k4KS1LZjw7YU9CNlgyWFo7byFmfn4KekYxQ1NLVDc7b3YkQUwjK1lxTyNvPT9yRnJP
RXJscSFadlh7SWFtQWNFJEtgPTA9P2NXeWZ2ZkpLPSh3P2NUZCZkCnoqRjZXTm81UjZOcFVxQVcr
fmgwKSp7Uyt+bCtUdTYjMDwofV88d1FJYWdMT09UbjVmY0M9VzVBJTRgNFZabyRaeQp6eH48TW83
ez1Kejt0dFhTdWl+e2VWTnZgbUotIz9EcVklaFIqMEVhVStEYmFeUD10I1NybDRufkY7TThOSHlo
P1YKekhkQHZKUWl+YV55K3dLVSFPNig2OWw2N2pHUlhsKCNSJEAzWnBSJm0rRHhBMGVVMzQ7Qk4j
e2JIanMpJk93QGFgCnpJXyFEXjF1e0UpOCQ4Yz1sa09zcD15bHFybnluc0ZGSEd9JUM0S2REPWg5
U0tfeHomczxmMlE5NX1pdVBlajUyRQp6Qmg2dE0qQCZ8O2NhNXRUPmFIMHo7e05wQzE8fnpjaWsp
T0xvRS0zV2FCYHBfJD5GM255akpAaDZMI3VrfEJUa18Keno0TT1UcntmK29qaTU9THlmPkVjK2BA
SDQwUztLUW4pOFBgNSVUMUVMMmNaMjhLK3BAIT0tTVdiI0ZFWkYmcEcpCno+VXd0OShnalUzTCs3
I2A3JjZTMVN9Vzx5TGxOTz5eTyo0KFJTVjRAQiFhMTtMKkxqTklHeHt4KHpHKkVFbUJLbgp6MzBt
bm1DUi1UQW1tPWZMZ3FMazw4S0BVLSpuRnFVSXlmeH5pR2c2b0ZXU2pPezNDNDlDTiFzR09CNH1o
PXZtKykKekBETzYyaj5ecExBTGE2PVQhd0c1PlBveSNufmRSJV9wSFdDRnxwbktZMWlkdVo3IWZI
Zk1ge2grblVrVldoKmowCnpQSTJWI2l6cjd9eHc+JDVjKjhXKXNVPElSWDEtfkV2QGIrfF5BVn11
XzlwZkxTb280aHByKnd0MGJPUU84TGUrXgp6TDcpQVljd3tkKT49KGRtTVdBbWA5WU5UNmEyfiQ2
LX4kLTxGWntYWUVpaE4zRVl0aTRydyZkcm9kKU9FMn1zbXEKeilqU148N3puXnxSV356KGBXUUh6
dGtjU31VU34qJnYpYTByXkslOUU9WVRnKyt+QjdSaih4bzBOb2lOV3RLWHptCnpCe3p7bTdEJEwk
K2hyP0pPTE8wMlBZfn56NH02bmZTcXNvblJnflV2S1p6JXFmPEBBTnEjOzx2eG90Jkg+KWlJPAp6
e1ZxflRqJnVoJkBKRF9JXzZ1MGxYdyZWTXFfdjRnPT1ydGlKV2x6PipUY2JeNmplSmg/V0hPN3Ji
eUE9MlopcGMKek0kIUk+IWNVUn4wYmJsMit0MDR3VTMzTkI7KlEpeWNHWEFJPCRrfmUyUWFWO1E+
YV58M05GNEAtM0h3M1UtRU8+CnpUbG1PK3NBRnNDbW1Aekh7SyEzRW0mRj54bXkxNjtKZEMpRSs2
VCYtV3o/SHgrPmB7QCU4MmI2QnI3LSNzI3txWApxQmF5c0o/UWA5NCQyP1RuLS1ENW9OWX5UOD5W
ZilKOz87cStMJD4/dl90RSRJI1FZYj10O25ZVQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMGFj
MTFhYjc4NWEwYjQ2ZjkwYzM5YTc1MDJkYzM1NGU2NDllMjVmNy4uYzEwM2Q1ZjliZjM5YmEwNWZm
MzMxMTEwM2NjOTJmNThjNjFmMWVmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNTk0LDYgKzM1OTQsOSBAQCBCVUdXSzkwNzQzIDog
ZmFzdC9ldmVudHMvZGlzcGxheS1ub25lLW9uLWZvY3VzLWNyYXNoLmh0bWwgPSBQQVNTIFRFWFQK
IC8vIEZsYWt5CiBCVUdXSzkwNzQ2IDogZmFzdC9tdWx0aWNvbC9jb2x1bW4tc3Bhbi1wYXJlbnQt
Y29udGludWF0aW9uLWNyYXNoLmh0bWwgPSBQQVNTIFRJTUVPVVQKIAorLy8gTmVlZHMgaW1hZ2UK
K0JVR1RIQUtJUyBXSU4gTElOVVggOiBmYXN0L3Njcm9sbGluZy9zY3JvbGxiYXItdGlja21hcmtz
LXN0eWxlZC5odG1sID0gSU1BR0UKKwogLy8gRmxha3kKIEJVR1dLOTA4OTYgV0lOIERFQlVHIDog
ZmFzdC9qcy9kZmctY3Jvc3MtZ2xvYmFsLW9iamVjdC1pbmxpbmUtbmV3LWFycmF5LWxpdGVyYWwu
aHRtbCA9IFBBU1MgVEVYVAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153921</attachid>
            <date>2012-07-23 17:54:38 -0700</date>
            <delta_ts>2012-07-23 18:04:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91949-20120723175431.patch</filename>
            <type>text/plain</type>
            <size>24851</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzEwMzdiYTlkZjA2NDI5
MmIwMTRiNWQ2YjYxZGI0ZGRiYWQxNjEwNS4uNGJlZWQ4YmJkYzg4MzI2Yzc4ZTY3MGFkNjRjZWU0
NDE1YmRkNmZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA3LTIzICBOaWNv
IFdlYmVyICA8bmljb2xhc3dlYmVyQGdteC5kZT4KKworICAgICAgICBbY2hyb21pdW1dIFNob3cg
c2VhcmNoIHRpY2ttYXJrcyBvbiBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxOTQ5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGxldHRpbmcg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtzKCkKKyAgICAgICAgZGVsZWdhdGUg
dG8gdGhlIG5hdGl2ZSBTY3JvbGxiYXJUaGVtZS4gVG8gbWFrZSB0aGlzIHBvc3NpYmxlLAorICAg
ICAgICBtb3ZlIHBhaW50VGlja21hcmtzKCkgZnJvbSBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB0
byB0aGUKKyAgICAgICAgc3VwZXJjbGFzcyBTY3JvbGxiYXJUaGVtZS4KKworICAgICAgICBGb3Ig
dGVzdGluZywgYWRkIGludGVybmFscy5hZGRUZXh0TWF0Y2hNYXJrZXIoKSBhbmQgYWRkIGEgcGl4
ZWwgdGVzdC4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICBNb3Zl
ZCBwYWludFRpY2ttYXJrcygpIGZyb20gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUgdG8gaGVyZS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oOgorICAgICAgICBS
ZW1vdmUgcGFpbnRUaWNrbWFya3MoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q2hyb21pdW06OnBhaW50VGlja21hcmtzKToKKyAgICAgICAgU3dpdGNoIHRvIGRyYXdpbmcgdGlj
a21hcmtzIGFzIHZlY3RvcnMsIHNvIHRoZXkgY2FuIGJlIGFyYml0cmFyaWx5IHdpZGUuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAg
ICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyk6CisgICAgICAgIEltcGxlbWVudCBwYWlu
dFRpY2ttYXJrcygpLCBzbyB0aGF0IGNzcy1zdHlsZWQgc2Nyb2xsYmFycyBnZXQgdGlja21hcmtz
IG9uIG1hYy4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6
cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFp
bnRUaWNrbWFya3MpOgorICAgICAgICBJbXBsZW1lbnQgcGFpbnRUaWNrbWFya3MoKSwgc28gdGhh
dCBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMgZ2V0IHRpY2ttYXJrcyBvbiBtYWMuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJrcyk6CisgICAgICAgIERlbGVnYXRlIHRv
IHRoZSBuYXRpdmUgU2Nyb2xsYmFyVGhlbWUgZm9yIHRpY2ttYXJrIGRyYXdpbmcuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoK
KyAgICAgICAgKFJlbmRlclNjcm9sbGJhclRoZW1lKToKKyAgICAgICAgT3ZlcnJpZGUgcGFpbnRU
aWNrbWFya3MoKS4KKwogMjAxMi0wNy0yMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUu
ZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIG1lZGlhL2NvbnRyb2xzLXN0eWxpbmcu
aHRtbCBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuY3BwCmluZGV4IDA1NTEwNzcxMTRiNGJjN2VhN2I4YjFjNGVjZTk1ZTEwNDNlZDg1
ZGUuLmEzZWJjOTM2OTMyNWE0N2IyZTYyOTI4Njk2MGI0ZDZmZWJjMmYwYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXJUb05vZGUoTm9k
ZSogbm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsCiB9CiAKIAotdm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OmFkZFRleHRNYXRjaE1hcmtlcihSYW5nZSogcmFuZ2UsIGJvb2wgYWN0aXZl
TWF0Y2gpCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkVGV4dE1hdGNoTWFya2Vy
KGNvbnN0IFJhbmdlKiByYW5nZSwgYm9vbCBhY3RpdmVNYXRjaCkKIHsKICAgICAvLyBVc2UgYSBU
ZXh0SXRlcmF0b3IgdG8gdmlzaXQgdGhlIHBvdGVudGlhbGx5IG11bHRpcGxlIG5vZGVzIHRoZSBy
YW5nZSBjb3ZlcnMuCiAgICAgZm9yIChUZXh0SXRlcmF0b3IgbWFya2VkVGV4dChyYW5nZSk7ICFt
YXJrZWRUZXh0LmF0RW5kKCk7IG1hcmtlZFRleHQuYWR2YW5jZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKaW5kZXggNmEzNzI0ODAwNzZiZmFj
YWViZDEzMGNiZmRhNjQ0ZWUzN2I4ZDljYy4uOGRkMmIwNGZmMDcxYmI5YTYwMWY0MDFmMTA3MWFm
NjgwOTNkOGZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNYXJrZXIoUmFu
Z2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
bik7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKICAgICB2b2lk
IGFkZE1hcmtlclRvTm9kZShOb2RlKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIFBhc3NSZWZQdHI8RG9jdW1lbnRNYXJr
ZXJEZXRhaWxzPik7Ci0gICAgdm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoUmFuZ2UqLCBib29sIGFj
dGl2ZU1hdGNoKTsKKyAgICB2b2lkIGFkZFRleHRNYXRjaE1hcmtlcihjb25zdCBSYW5nZSosIGJv
b2wgYWN0aXZlTWF0Y2gpOwogCiAgICAgdm9pZCBjb3B5TWFya2VycyhOb2RlKiBzcmNOb2RlLCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgaW50IGxlbmd0aCwgTm9kZSogZHN0Tm9kZSwgaW50IGRlbHRh
KTsKICAgICBib29sIGhhc01hcmtlcnMoUmFuZ2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZXMgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VycygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4
IGQ3MzZjZTUzZDMxOTllOWM0NDNiMTEzYzQxNGZhOWI3NDk4ODNhMTQuLjNhOWZiNDhkODA1MDE0
N2VjOTgxZjIwOWYyMWQ5MzE2N2IyZjBhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMTU4Miw3
ICsxNTgyLDcgQEAgTm9kZSogUmFuZ2U6OnBhc3RMYXN0Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZW5kLmNvbnRhaW5lcigpLT50cmF2ZXJzZU5leHRTaWJsaW5nKCk7CiB9CiAKLUludFJlY3Qg
UmFuZ2U6OmJvdW5kaW5nQm94KCkKK0ludFJlY3QgUmFuZ2U6OmJvdW5kaW5nQm94KCkgY29uc3QK
IHsKICAgICBJbnRSZWN0IHJlc3VsdDsKICAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7CkBAIC0x
NTkzLDcgKzE1OTMsNyBAQCBJbnRSZWN0IFJhbmdlOjpib3VuZGluZ0JveCgpCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdm9pZCBSYW5nZTo6dGV4dFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVj
dHMsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0LCBSYW5nZUluRml4ZWRQb3NpdGlvbiogaW5GaXhl
ZCkKK3ZvaWQgUmFuZ2U6OnRleHRSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBib29sIHVz
ZVNlbGVjdGlvbkhlaWdodCwgUmFuZ2VJbkZpeGVkUG9zaXRpb24qIGluRml4ZWQpIGNvbnN0CiB7
CiAgICAgTm9kZSogc3RhcnRDb250YWluZXIgPSBtX3N0YXJ0LmNvbnRhaW5lcigpOwogICAgIE5v
ZGUqIGVuZENvbnRhaW5lciA9IG1fZW5kLmNvbnRhaW5lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAppbmRleCA4
ZjBlOThiNDc4MDg2YTk1Mjg0ZTUwM2IyYzMwN2M5YzQ5ZmYyZWYwLi4wNDhjZDY5OTJkNWNjNWE2
YzVjMWZiYThiODYwMTQ3NWU4MGI4MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaApAQCAtMTEyLDcgKzExMiw3
IEBAIHB1YmxpYzoKIAogICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoKSBjb25zdDsKIAotICAg
IEludFJlY3QgYm91bmRpbmdCb3goKTsKKyAgICBJbnRSZWN0IGJvdW5kaW5nQm94KCkgY29uc3Q7
CiAgICAgCiAgICAgZW51bSBSYW5nZUluRml4ZWRQb3NpdGlvbiB7CiAgICAgICAgIE5vdEZpeGVk
UG9zaXRpb24sCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIH07CiAgICAgCiAgICAg
Ly8gTm90IHRyYW5zZm9ybS1mcmllbmRseQotICAgIHZvaWQgdGV4dFJlY3RzKFZlY3RvcjxJbnRS
ZWN0PiYsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIFJhbmdlSW5GaXhlZFBvc2l0
aW9uKiA9IDApOworICAgIHZvaWQgdGV4dFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGJvb2wgdXNl
U2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIFJhbmdlSW5GaXhlZFBvc2l0aW9uKiA9IDApIGNvbnN0
OwogICAgIC8vIFRyYW5zZm9ybS1mcmllbmRseQogICAgIHZvaWQgdGV4dFF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgUmFuZ2VJbkZpeGVk
UG9zaXRpb24qID0gMCkgY29uc3Q7CiAgICAgdm9pZCBnZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZS5oCmluZGV4IDVmZTQ1YjFhNDczNjU3MTZiZjJiNzJhNDZkYWJhZWI2YWYwYmZmZTQuLmNj
Y2MyZjkyNTZmZDMyMjhkMzQxZjNjNmU5MTY1OGJjOWE1NTVkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaApAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIHsgZGVmYXVsdFBhaW50U2Ny
b2xsQ29ybmVyKGNvbnRleHQsIGNvcm5lclJlY3QpOyB9CiAgICAgc3RhdGljIHZvaWQgZGVmYXVs
dFBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgY29ybmVyUmVjdCkgeyBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hp
dGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNr
bWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3
KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmLCBjb25z
dCBJbnRSZWN0JikgeyB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVO
QUJMRShSVUJCRVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZS5oCmluZGV4IDY5NmRiMTJiMTk3NzdkY2Q2MDdlZTA0NjFhMjE1
MDFjOTAwZDYwZjUuLmRmZDE1ZWQxODg3ODMwOGExN2RhYzU0MDE4ZjU1NTYxOThiZjhiYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUu
aApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQ
aWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmLCBTY3JvbGxiYXJQYXJ0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Ny
b2xsYmFyUGFydCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JikgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgSW50UmVjdCYpIHsgfQogCiAgICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0
cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0JiByZWN0KSB7IHJldHVybiByZWN0OyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcApp
bmRleCA2ODJkODJkNWIzMzc5MThiMjVkMDk4YmE3NzE3MzRlNzkxNTA1ZTkxLi40YTQ5MzhhYzgw
ODRmMjQ5MGYyNDRlYWExYmIzNjIxOWY1MTIxYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcApA
QCAtMTEzLDE0ICsxMTMsOCBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlj
a21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVAogICAgIGlmICghdGlj
a21hcmtzLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gR2V0IHRoZSBpbWFnZSBm
b3IgdGhlIHRpY2ttYXJrcy4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxJbWFnZT4s
IGRhc2gsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRpY2ttYXJrRGFzaCIpKSk7Ci0g
ICAgaWYgKGRhc2gtPmlzTnVsbCgpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29udGV4dC0+c2F2ZSgpOworICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgY29udGV4dC0+
c2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKIAogICAgIGZvciAoVmVjdG9yPEludFJlY3Q+Ojpj
b25zdF9pdGVyYXRvciBpID0gdGlja21hcmtzLmJlZ2luKCk7IGkgIT0gdGlja21hcmtzLmVuZCgp
OyArK2kpIHsKICAgICAgICAgLy8gQ2FsY3VsYXRlIGhvdyBmYXIgZG93biAoaW4gJSkgdGhlIHRp
Y2stbWFyayBzaG91bGQgYXBwZWFyLgpAQCAtMTI5LDExICsxMjMsMTQgQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFNjcm9sbGJhclQKICAgICAgICAgLy8gQ2FsY3VsYXRlIGhvdyBmYXIgZG93biAoaW4gcGl4ZWxz
KSB0aGUgdGljay1tYXJrIHNob3VsZCBhcHBlYXIuCiAgICAgICAgIGNvbnN0IGludCB5UG9zID0g
cmVjdC55KCkgKyAocmVjdC5oZWlnaHQoKSAqIHBlcmNlbnQpOwogCi0gICAgICAgIEludFBvaW50
IHRpY2soc2Nyb2xsYmFyLT54KCksIHlQb3MpOwotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2Uo
ZGFzaC5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgdGljayk7Ci0gICAgfQorICAgICAgICBj
b250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMHhDQywgMHhBQSwgMHgwMCwgMHhGRiksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBGbG9hdFJlY3QgdGlja1JlY3QocmVjdC54KCksIHlQ
b3MsIHJlY3Qud2lkdGgoKSwgMyk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHRpY2tSZWN0
KTsKIAotICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENv
bG9yKENvbG9yKDB4RkYsIDB4REQsIDB4MDAsIDB4RkYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgRmxvYXRSZWN0IHRpY2tTdHJva2UocmVjdC54KCksIHlQb3MgKyAxLCByZWN0Lndp
ZHRoKCksIDEpOworICAgICAgICBjb250ZXh0LT5maWxsUmVjdCh0aWNrU3Ryb2tlKTsKKyAgICB9
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaAppbmRl
eCAxOTM0NmU3MjNiYWIyODdmOThlMTdjODEyZGI1ODNhMWMyMDY3MDIwLi5lZmJkZDA5OTJjMjQz
MDI0MWJlNWM5MzFiYzYzOTlkYzhiOGJlMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCkBA
IC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNv
bnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICAKIHBy
aXZhdGU6CiAgICAgdm9pZCBwYWludEdpdmVuVGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFZlY3RvcjxJbnRSZWN0
PiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KaW5kZXggNzVlNGEyOWM4OGMyMzczM2UzMjk2
N2E0MGY5NWRlZDlhYjIyODM1Ni4uNzNkNzliMGJjYmRlYzcyNGRhNjI1NTAzYjEzMjQ3MDEwNjRm
ZTQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgYm9v
bCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBHcmFwaGljc0MKICAgICB9CiAgICAgLy8gVGhlIGVuZHMgYXJlIHJvdW5kZWQg
YW5kIHRoZSB0aHVtYiBkb2Vzbid0IGdvIHRoZXJlLgogICAgIHRpY2ttYXJrVHJhY2tSZWN0Lmlu
ZmxhdGVZKC10aWNrbWFya1RyYWNrUmVjdC53aWR0aCgpKTsKLSAgICAvLyBJbnNldCBieSAyIG9u
IHRoZSBsZWZ0IGFuZCAzIG9uIHRoZSByaWdodC4KKyAgICAvLyBJbnNldCBhIGJpdC4KICAgICB0
aWNrbWFya1RyYWNrUmVjdC5zZXRYKHRpY2ttYXJrVHJhY2tSZWN0LngoKSArIDIpOwogICAgIHRp
Y2ttYXJrVHJhY2tSZWN0LnNldFdpZHRoKHRpY2ttYXJrVHJhY2tSZWN0LndpZHRoKCkgLSA1KTsK
ICAgICBwYWludEdpdmVuVGlja21hcmtzKGRyYXdpbmdDb250ZXh0LCBzY3JvbGxiYXIsIHRpY2tt
YXJrVHJhY2tSZWN0LCB0aWNrbWFya3MpOwpAQCAtNDA5LDUgKzQwOSwyNSBAQCB2b2lkIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiB2aWV3
LCBHcmFwaGljc0NvbgogICAgIH0KIH0KIAordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
OjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgLy8gTm90ZTog
VGhpcyBpcyBvbmx5IHVzZWQgZm9yIGNzcy1zdHlsZWQgc2Nyb2xsYmFycyBvbiBtYWMuCisgICAg
aWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSAhPSBWZXJ0aWNhbFNjcm9sbGJhcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKHJlY3QuaGVpZ2h0KCkgPD0gMCB8fCByZWN0LndpZHRoKCkg
PD0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPEludFJlY3Q+IHRpY2ttYXJrczsK
KyAgICBzY3JvbGxiYXItPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOworICAgIGlmICghdGlja21h
cmtzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSW5zZXQgYSBiaXQuCisgICAg
SW50UmVjdCB0aWNrbWFya1RyYWNrUmVjdCA9IHJlY3Q7CisgICAgdGlja21hcmtUcmFja1JlY3Qu
c2V0WCh0aWNrbWFya1RyYWNrUmVjdC54KCkgKyAxKTsKKyAgICB0aWNrbWFya1RyYWNrUmVjdC5z
ZXRXaWR0aCh0aWNrbWFya1RyYWNrUmVjdC53aWR0aCgpIC0gMik7CisgICAgcGFpbnRHaXZlblRp
Y2ttYXJrcyhjb250ZXh0LCBzY3JvbGxiYXIsIHRpY2ttYXJrVHJhY2tSZWN0LCB0aWNrbWFya3Mp
OworfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clRoZW1lLmNwcAppbmRleCA0NGUyYWE2MzFkYzI4MTUwMTc0YmMyMjUyMzBlOGI2YWFiN2QwZDM1
Li42ZDJlMDliMmUyYmFjZWFlNGUxOTdmYzY0MWU3NmFjNzJkN2I1NzljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKQEAgLTEzOCw0
ICsxMzgsOSBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbAogICAgIHRvUmVuZGVyU2Nyb2xsYmFy
KHNjcm9sbGJhciktPnBhaW50UGFydChjb250ZXh0LCBUaHVtYlBhcnQsIHJlY3QpOwogfQogCit2
b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCit7CisgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnBhaW50VGlja21hcmtzKGNv
bnRleHQsIHNjcm9sbGJhciwgcmVjdCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggOWNlZjM5NDlmYTlmNGRjNzE4OTM4
NzdmOGMxMGM5ZGU2MjQ4ZjQ0Ny4uYzE0ZGUzZmJjZTkzZmY3MTIxZTBjNWM3NGJmMzQzYWExYmU4
NzBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRo
ZW1lLmgKQEAgLTczLDYgKzczLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9u
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYs
IFNjcm9sbGJhclBhcnQpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1
YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgSW50UmVjdCBj
b25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UmVjdCYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBl
MzIxNDIzMTY5M2ZjOTE5ZGY0MWU3YTQ1NGY3Nzg5Njc4MGUzZGZmLi4wM2ZmOGE2NzFmYjkwOTRl
ODE3N2MzMGZkMTFmMjA2ZTA1ZDQzNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC02MjQsNiArNjI0LDEyIEBAIFN0cmluZyBJbnRlcm5hbHM6Om1hcmtlckRlc2NyaXB0
aW9uRm9yTm9kZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsCiAgICAgcmV0
dXJuIG1hcmtlci0+ZGVzY3JpcHRpb24oKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OmFkZFRleHRN
YXRjaE1hcmtlcihjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgaXNBY3RpdmUpCit7CisgICAgcmFu
Z2UtPm93bmVyRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CisgICAgcmFuZ2UtPm93bmVyRG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRUZXh0TWF0Y2hN
YXJrZXIocmFuZ2UsIGlzQWN0aXZlKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNldFNjcm9sbFZp
ZXdQb3NpdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAwNDAwNTIzNzhlZThkNTVhMjQ2ZjBjNTYy
MDAyMDhlZjYzZWMwOGJlLi40YTEyZTAyMjRhNDc5YjdlNjQ3NmE0ZTJiYzA1YjAyMjMyMzk3YTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJs
aWM6CiAgICAgdW5zaWduZWQgbWFya2VyQ291bnRGb3JOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2VGb3JO
b2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgU3RyaW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShOb2RlKiwg
Y29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdlKiwgYm9vbCBpc0FjdGl2
ZSk7CiAKICAgICB2b2lkIHNldFNjcm9sbFZpZXdQb3NpdGlvbihEb2N1bWVudCosIGxvbmcgeCwg
bG9uZyB5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKERvY3VtZW50
KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtb2RlLCBpbnQgZ2FwLCBFeGNlcHRpb25Db2RlJiBl
YykgeyBzZXRQYWdpbmF0aW9uKGRvY3VtZW50LCBtb2RlLCBnYXAsIDAsIGVjKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGZkZTQ1NzdlYjNjZjdiZTJjOGRiOWI0ZTgw
NWJiNWM1OGI5ZmJhMjguLmJiNTNiZjdiYTMxZDMyMTlmYzNjMzBlZGFjMzYzZGE5NzlhNWY3Mjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTg2LDYgKzg2LDcgQEAgbW9k
dWxlIHdpbmRvdyB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWFya2VyQ291bnRGb3JOb2RlKGlu
IE5vZGUgbm9kZSwgaW4gRE9NU3RyaW5nIG1hcmtlclR5cGUpIHJhaXNlcyhET01FeGNlcHRpb24p
OwogICAgICAgICBSYW5nZSBtYXJrZXJSYW5nZUZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBET01T
dHJpbmcgbWFya2VyVHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAgICAgICAgIERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoaW4gTm9k
ZSBub2RlLCBpbiBET01TdHJpbmcgbWFya2VyVHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKGlu
IFJhbmdlIHJhbmdlLCBpbiBib29sZWFuIGlzQWN0aXZlKTsKIAogICAgICAgICB2b2lkIHNldFNj
cm9sbFZpZXdQb3NpdGlvbihpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyB4LCBpbiBsb25n
IHkpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9zY3JvbGxiYXItdGlja21hcmtzLXN0eWxlZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zY3JvbGxiYXItdGlja21hcmtzLXN0eWxlZC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmU2MjVjMTE3MWFjZDFkZmNlOGNjNDU3M2M0YmY5Zjg5OWY3YWJi
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Njcm9sbGJh
ci10aWNrbWFya3Mtc3R5bGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM5IEBACitwMCBhc2Rm
IGFzZGYKKworcDEgYXNkZiBhc2RmCisKK3AyIGFzZGYgYXNkZgorCitwMyBhc2RmIGFzZGYKKwor
cDQgYXNkZiBhc2RmCisKK3A1IGFzZGYgYXNkZgorCitwNiBhc2RmIGFzZGYKKworcDcgYXNkZiBh
c2RmCisKK3A4IGFzZGYgYXNkZgorCitwOSBhc2RmIGFzZGYKKworcDEwIGFzZGYgYXNkZgorCitw
MTEgYXNkZiBhc2RmCisKK3AxMiBhc2RmIGFzZGYKKworcDEzIGFzZGYgYXNkZgorCitwMTQgYXNk
ZiBhc2RmCisKK3AxNSBhc2RmIGFzZGYKKworcDE2IGFzZGYgYXNkZgorCitwMTcgYXNkZiBhc2Rm
CisKK3AxOCBhc2RmIGFzZGYKKworcDE5IGFzZGYgYXNkZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvc2Nyb2xsYmFyLXRpY2ttYXJrcy1zdHlsZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Njcm9sbGJhci10aWNrbWFya3Mtc3R5bGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzI0NjAwZDljZDM4ZTBjNWRlNzQwMzU0MGY2ZGI0NWVmODkyMWZlZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Njcm9sbGJhci10aWNrbWFy
a3Mtc3R5bGVkLmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aGVhZD4K
KzxzdHlsZT4KK2h0bWwgeworICAgIGZvbnQ6IEFoZW0gMTBweDsKKyAgICAtd2Via2l0LWZvbnQt
c21vb3RoaW5nOiBub25lOworfQorOjotd2Via2l0LXNjcm9sbGJhciB7CisgICAgd2lkdGg6IDEz
cHg7CisgICAgaGVpZ2h0OiAxM3B4OworfQorOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjpncmVlbjsKK30KKzo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIg
eworICAgIGJhY2tncm91bmQtY29sb3I6cmdiYSgxMjgsIDEyOCwgMTI4LCAwLjgpOyAgLyogTGV0
IHRpY2ttYXJrIHNoaW5lIHRocm91Z2ggKi8KK30KKzwvc3R5bGU+Cis8c2NyaXB0PgorZnVuY3Rp
b24gaGlnaGxpZ2h0KCkKK3sKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgIHZhciBlbHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWx0Jyk7CisgICAgcmFu
Z2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVsdCk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICAgICAgd2luZG93LmludGVybmFscy5hZGRUZXh0TWF0Y2hNYXJrZXIocmFuZ2UsIHRydWUp
OworICAgIH0KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJo
aWdobGlnaHQoKTsiPgorCis8cD5wMCBhc2RmIGFzZGYKKzxwPnAxIGFzZGYgYXNkZgorPHA+cDIg
YXNkZiBhc2RmCis8cD5wMyBhc2RmIGFzZGYKKzxwPnA0IGFzZGYgYXNkZgorPHA+cDUgYXNkZiBh
c2RmCis8cD5wNiBhc2RmIGFzZGYKKzxwPnA3IGFzZGYgYXNkZgorPHA+cDggYXNkZiBhc2RmCis8
cD5wOSBhc2RmIGFzZGYKKworCis8cD5wMTAgYXNkZiBhc2RmCis8cD5wMTEgYXNkZiBhc2RmCis8
cD5wMTIgYXNkZiBhc2RmCis8cD5wMTMgYXNkZiBhc2RmCis8cD5wMTQgYXNkZiBhc2RmCis8cD5w
MTUgYXNkZiBhc2RmCis8cD5wMTYgPHNwYW4gaWQ9ImVsdCI+YXNkZjwvc3Bhbj4gYXNkZgorPHA+
cDE3IGFzZGYgYXNkZgorPHA+cDE4IGFzZGYgYXNkZgorPHA+cDE5IGFzZGYgYXNkZgorCis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1t
YWMvZmFzdC9zY3JvbGxpbmcvc2Nyb2xsYmFyLXRpY2ttYXJrcy1zdHlsZWQtZXhwZWN0ZWQucG5n
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3Qvc2Nyb2xsaW5nL3Njcm9s
bGJhci10aWNrbWFya3Mtc3R5bGVkLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTAxYzcxNTgw
ZDkxNmRkNGJkYmRlMmFlY2Q3ZTFiZmYyZTc4OTJlCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA3
MzY4CnpjbWRUfWRwd2wremtmdWNSXmBYOSVjTjImUyVva3ZHSGxBQVZxSjJkTmctamFIaWswaHZi
Sm95JTRKPER5Vng/NAp6K2wmWmg4YmpAdCFqNlBsI0lVKWYhRlh4UlU+Tjg3SlZUY34/SyEoPV9x
WFR3YD5VcmhtdUo1MyYtP2I3dVJnWk4KenN3X3E9aDlGNEEpQEdqKjFqJWJjJjtvWlFNZXM7Xk05
Zkw+azUyZjBfaSoxNns9VUlzZ2ItKyN8Rk5UblhuI1chCnpVdGB+JFhrUX5eIWAqJkkoWj51Nygx
ciMoZVJyWCl7V0NYMWtjT3gyeks+aV5lPmRFVHF3YEhxREstfVFTU1VRJgp6WElQcVBFIzc5N15s
OSYqR1h8IyVgIzB+bXlaJmB+Kl4xJlAxNT88fHk/SXJ8Y0tCOFRqc2lZKT1+TUBBSGUlTy0Kej40
KlFeeGQ0SmItYmUpeDkjdlFsTDdFcEpAVzVHQk85LU1HRUtxYD08PF5pSzFsPzI4Z2RvZFJhdGFX
bnIxaSgyCnpPdmQ2KWMlKWcoOzw8IW98NDRveFZkS2JBUn4hVVFDfFdKQj19TmhqRT0oI3twfH5f
JEE7Pn05VVUmRHo5MWcxSAp6NjFKUTB2K0lLPDdPRnRkPjVGVU9uPil4PWF5OUw8JHdlX1Q2XjRj
bl9HKVdTcDVTJnhkV3ZAej10MG5FO3xIMUAKelRnPWN1R2x0QkVoVH5HWTNQXypvcDM3enQoK3ty
JVp4SXlsbGhZczc7bTBte3t2QGNDeFByd29vLVRhfXpPQlJrCnpiQHohYmN8OHNfe2cwRWJkd19l
TytSRCpQVEVvWW1NK2RZbGdySWZ5PF9tKjZ6UTZSfnJVKjQqKUloPig5ZyQrOQp6STcjcGBiNFN6
P1M9dSZ6N3BMJnF5djV0Zl9gTUUyQUNkeX17cCQwVksrcW4tcUQwcChOSGpVIzVAaTw4dFcqUG8K
eistVWNnTzVtamk0YlUrR0lOVmheeUpQKDghQzl+UlFFQTByYm1JUmptWTEpfWBGVyV6VHs4MHky
Rk9yJnVIY0JPCnpZNlIhd19VLUh7VFY3MSh5UnxOYXNHJlEwNzVzNEEjeDJwVl93YFJlUDw4TVNm
X3xsU2Fub2YtKUpJWHtufCNiMwp6cnlTODtBSiQlVnEjejMpK1F9PWQxa2JaRnFKSHgyUF9xeGFN
NFUqODZqWE02b0plXmU3QC1iVUBqKzw1ZDBiWmoKek57U3FQP2dvYiUpOW1LYVQlV0skbzJTVHwo
SUJUYSFSPjMzcitWU0h6TXEldGJNY3duVXtYU0tVbVp7MjRQKk5mCnpCUjVFamFTNlZWY2d3PWI/
OD1TZGpOVXE0Jmk9e0J5ZzNrOWlqdytBX3BiMXBTS0s0PUlTNGNwOH1gQkBXa21nJQp6MnRrbF9W
NyQrMkJRT290SjdOSWplPkRUJWtIPkwkJFJuKlV6JDRBXjU8bE9LYEs3TUZTNElvQW1SYHhXSSEr
fj4KekdBVFlCdzR2TEp6V31QUEk2Yk1iREhJVGNITkRBYTl1TkZkJkdiX2NedTMjbThyb3xadkdL
I293JmJFfHBgVjBZCnpNMj16K0Q5RHNBWWsqMlpOe0ZJOG9AVDAoNStiKVZIZkIxXk9Ha3N7M3k5
ZEF3PnVeXm91NnIqa2FfJj5JR0lDdQp6JT8rIX1uREpMKCh9NXI3IzlBITtSdWBMbzlBPD54PT8/
QD9JTlMjcktZNUZCO05HQlJ4dFRGN3JPVFglPlZobCUKem5EdnY3RlJfVnA0OUtFdG9RWks2SDB0
Mks7JkFQXjFRRTMtJDA3cUFyOHRDcG9wT0dSbi0odkolN1R7a3UqMyFrCnpKeDBmdHNlPDx1MX1R
RWxFKDNeZlpCWDZqWVlrc203eXFUWV5uTyVpaVo+bTl5UzhLLU1hclZ7Jm1WfHJzU249Jgp6Pj4p
Z2pxYmxJWSZzZ0R1OG5HUUYofiZwOGZibzlPIVdKSiNQc2FkWnp1VnNqVURIX3ZLfmFRQEp+PXpH
amJtSnYKenRZdG03QSkyWDhVVXRUR201RFBsQ0VxJjJMd2lDb0YoZiR5SE5ASUs8Zl8heHYwOGBh
Q1ZBJCU3JU9tcFRkbntACnokezlLQXJqaUlVRD9NfCt6KHsybEE7cl9naG9oTn1LQC1sV0AwXzlx
IWVpcygxbSNeczw3UkFsMiQ4O1ljQnA5Jgp6WmNHP0NDYWlyfUlvMm13Q3NWc2xaT3QtbW5fK1lG
ZUErRm8qSkxxWUdDS0Y/X1dfY2BLRCFpeHFPVHVeWmkpZH0KekU7TVA+NyM7Xl5hTihFJmAyUFBG
T1pjQ1R7ezNjQ3pacTY2VUE+T05vNz9LTCpyNWdSJCMrS3o3WTQqODVPQ31nCnotfmlFYVNHNkBB
OHp1XjRrMkhjbztyPVdLZHNqRkJCS2FaISFjPStKc2l+VzV7VTVXRjZMeUYyNyVkSkFLX3s+Tgp6
Wk1fO2VgdXhQaTROYD49S01hIyZ4YnJAOCp2P0BKeEBkMDQ3OXRVSz5YdXc2c1hYOWA8bHViXldM
a31UYj09R1AKelg5alhaSDlvWGBWPEI+S3o0YUtJa2l4OyNDdkA0IyF5Rm02YC0wcmg+X31wU1Vt
VHZUM1BZJFRRU2NLZUo3SWVkCnprdCFud3tqUVpxZXhwd2o0YHNoTGtmZ1lOOyliaFlWbkV0YG5I
XjBwLXZEZ2xgZkFHfGF7eHhSRn1DPV5ZVmJ2fgp6U0plUjR7N0l8K293JlIqZCUzcitXVil9NmZX
elhkLTFYVH4oSz5wKkllWnx8VW1UVXw5bmh2dj5ZZEFRR01HcSUKeklrUD9YZzN0YilKKjZufU5B
ZUphNHx9QVBYMXh9SXdoa2BWOTZZT2E/IXEzUWwhJVJAeXxzQXZNLVJVJTdqUiRaCnphKVNqTkl4
T0RDXjBub1U+e1RMa2VRM29fUXdPQ31VNCk5T256UD1hdFR4MWRgPEwxVChKS3kjTTg+XjBUdVp4
Mwp6VXkhYyVXRmR4K25vPSorM1E4RXByUyZ6dj9kIUw4WlcoX0J6eEdTI2dkWCRDKDllM0FuPHMx
Q3MtYDs7XzNoNCsKekQ5fVUtZEQoMCN6SX1hTyM9Jk5oSnohN013UHxLRWtpTmBIYEM3YSRyTVdH
KjEkYz03JHVacVdZeFM+IUZENStrCnp8RXBNNC1FKWZkcUhma0pWfHElcDM/M00yc0tHV1daT2Zp
KGF5Km1pNGxiUThnREd4PG1WMklaTGVMS1piSVNFIwp6RFYrRE4yUF4xaW9KQEk4STNed3cyWGhO
WkNoTmw8Mk0/MlMoVFhPPnl3OWhzJHUyOENgeFU8aDt9eWphLTY+TTEKemlXWEdBTGwhM0NtbjhP
KU84Zzx0SFN2e0wzTV42R2ZmSyVgaUshXjV4O0lAVDVYb2hpKWgmYTM0YEhxRVZEakokCnpjay1v
PGR4cyorXyl+KTRBe3pHQk5sVkxZSkBGITB4NDQ7fVk7bXFZbjg4WmlmIXRIYFQxIXRBUUljWWB7
dzUoPQp6UD05SXl4c2Zse1p2K34zJnNoRkUza2I0TE8yMU90NGxRdEB1STJ0YCgoTGJ+aCU2X1F2
RUQkbmUmTz5nPDhNY28KejlWZ0VXbGVgWlQ9ZmlJO2hqVjAmejtvO0J0S3F9MXhxQEY7bGJAbUYt
SWxfYzMlP0NAYXtIV3R7dDkyQllWNVI4CnpmZU0yeWpXO1dkbElCSU1Wazh0ZiteZWZDJU1WMmE2
XnBHNEopZ1YlbWRTQEN2Jj5hPz1lSEQhdz8kPElQOVR6IQp6OEVkfGZmNVlqMVIhbD54KSotfFF6
TDIqTz5+YWJ6Mz1CT09CJUlqfihqYno5YEtnTENeXnZjVjd9MWxHNEF9VnsKemZTK1dPaG5jPy15
ZlBKOzcwVTBYLSt2USh1V1h6biVaPDhgKTtqKmFYTmM1fnM+Q1dKLXFxMVo0e0MrMWs9e3IqCnpr
fG5QKjNJKXduMkgqM09SX3Y5UShJcUdfc1ZGbHxGaCFUP3MpZ1o/bGtDeXUrSCE7QVQzWVV+KExi
XiFjZGBWewp6VTBKeGRlU1ZLbXVhO1pVc04pamQ5QzEpcSRBezs+bSZIPnd3JTkzKndRYHF9VEJj
TWF2aFp3KGRXJGZGZVlybHYKeitwbWhfa017QUheRzRxLXBsVWQtMzlnKl90VikqY2ZVfWZeRyM9
MSRCZFNiYT44fjsjRTFUaEVpIzBzcGp8YlZmCnomQ0FmRDxaUmJ9UWEjfjB1SmxhbjxGTDdld1M+
MExzNTJTb2lJLXRqdWN9RmV6Uy1IQXZ4UChweHhmQiEqbTBtTAp6NkQjeCtke1ItUDFZQkloKVlm
XkVAbSZQQil1LXJ+UlF1Z2NjQEdNLTx6JiFjK0NjX3Vvb1BUeXo/ezI/TF9EMyMKekxLN1pRdkp0
YE48KCk1T1d1I3hKKSNTdHtOOXI4WigpPWVZKnNiRzFRTkpwVkxMSyo8U2pybHx2RVg8XlNjP257
CnpzR0gwayohZ2YwK3d+QGk8KWRHS0BuRWhwQUFfbUdNNTFLMXZzbD8/Nys2MUw7YSVhSDRRMHQr
d1JoUThQMilVTQp6RDN7PCs7djVPSjFySF5kNXt1Z1JvKSh6UDA+UXNTWjgtc0lpQCVzOVR6Uzwr
YDxIY2FCY004cm4qRmt8PXN9YzYKelN7NENVRmwrOSlVQlROIWhLezxHeT01eiokZlBZdEYmZjdg
OzI9TDJtNGB+QGZxdEFGMWZySV5ZT3MwWnNUM1ZYCnpZU3dxWCoqR0ZFdW9GcVNDcylGKTwoamlS
c1NrZ0B0SUI0TylqbSt9YmhAMjYwSz9PNXBBSWJTT3FhPE13fj4+Iwp6KCNQTVY8Q0VIO3ctQzwz
ZzJ0SD53Q2M1WXtibClCaER4XntYIVUjPmN8M35TRXxHJUwhYmskSzN6QE1JOGJ8PFEKeld5aFF5
SWQ+Zy0hOXVVa2IwUlhQYiNPVT9wPnIyeEE2ek1LcWljTTNZXklBLVBJdlREdk4re3dsbnVhdGNK
N1ZrCnpmSEVNbm9ROzM4PC17cmBgZ2BEYENeVi1jZS1HKDIkcVN+NDA7clRAX0JHa0FwJEl+PHhj
djE3WkIyZ1ZoKUcrSwp6ODJoYkUpYH5mPVFAfTtsOU0kWXYkTG5gcEc1eG5sPjxHJT5jPFQoKG9n
PCZYbi0pYGFxdVU2Jm0pbGpxUjlRSXIKelVSKmshQ08meWImdSVBIWRTQUkwVWJZTyhFbkIqbWJ7
U0hlQUViKk8mQGd4NEd5RC0we1FWPFRWSi1GXiRYJF9lCnozWEUoYkVvaFJRejBxe3BpOWJgK003
QTlVSXIkUkUkKEwzUEBeYXU4Kit4UXZHbVlKQ2ZfMFBBTnYzbUFuYVVpcwp6SXR6PDU9cT1wJi1l
VWNDX20pTm9ib21oP1FJTyE4cEV9YT5TYl97MDI0MSRATGg9MVEkZ1BCI0l5Uz47aTUkLXAKekM+
LVg7TTcyYn5wK2dafXo7VTdgWkw4PCU0QyNgOWRnM3cydHUjMkk5aXRgM0E+ZmRzTzVPdWIpRFA+
aGQ/dl5NCnpOTG1LOShnQ1RKQlEmX141Mno5fiVvfFNnWE1WKyltZ2deUUUjSmp2P31GTVpxbUMk
ZXtlbUs4ITdIIVYjRjJhdwp6YStaSEVFR3l3Ryp1eVpNNFlWTVh0YVB4OSUzNkxIPHFRLXNIQVFx
Rk5MI0lwbD4jTDFtZCZpNT49X19IJWFjVGAKell+SnBZWVZ6XmooUXRVVjlhbCM9NUFYTl9MNCpi
eUtVd01EMlZlWStyVCtzSiZBSmtvQk11WnR5UndaVnZTa2QrCnpvRCMwUGUlKTlwSiRSaFdgMW9D
JWM9P1lxM0hreWQxPzJ6Sip0YTE8Xyl+aUlUQkpyRypwWDIlQVYpdUJpbUlNZwp6JkxTRzNtb0Rl
bXVgZ0Z+c3ZkN09YajtaO2lMa2E0dnx1Vnk/PiNreGNXLTgzQmJDI0NyZWghMjA3VGBPQyQmYTsK
enlgMm8rRnNZflNTNF5VbFgjekxecEluSkZQSSs/cCU0e3NBSEMzT0lhR095OCktS2Y8O2FPQjZY
MlhaO28hZn5+CnpGMUNTS1Q3O292JEFMIytZcU8jbz0/ckZyT0VybHEhWnZYe0lhbUFjRSRLYD0w
PT9jV3lmdmZKSz0odz9jVGQmZAp6KkY2V05vNVI2TnBVcUFXK35oMCkqe1MrfmwrVHU2IzA8KH1f
PHdRSWFnTE9PVG41ZmNDPVc1QSU0YDRWWm8kWnkKenh+PE1vN3s9Sno7dHRYU3VpfntlVk52YG1K
LSM/RHFZJWhSKjBFYVUrRGJhXlA9dCNTcmw0bn5GO004Tkh5aD9WCnpIZEB2SlFpfmFeeSt3S1Uh
TzYoNjlsNjdqR1JYbCgjUiRAM1pwUiZtK0R4QTBlVTM0O0JOI3tiSGpzKSZPd0BhYAp6SV8hRF4x
dXtFKTgkOGM9bGtPc3A9eWxxcm55bnNGRkhHfSVDNEtkRD1oOVNLX3h6JnM8ZjJROTV9aXVQZWo1
MkUKekJoNnRNKkAmfDtjYTV0VD5hSDB6O3tOcEMxPH56Y2lrKU9Mb0UtM1dhQmBwXyQ+RjNueWpK
QGg2TCN1a3xCVGtfCnp6NE09VHJ7Zitvamk1PUx5Zj5FYytgQEg0MFM7S1FuKThQYDUlVDFFTDJj
WjI4SytwQCE9LU1XYiNGRVpGJnBHKQp6PlV3dDkoZ2pVM0wrNyNgNyY2UzFTfVc8eUxsTk8+Xk8q
NChSU1Y0QEIhYTE7TCpMak5JR3h7eCh6RypFRW1CS24KejMwbW5tQ1ItVEFtbT1mTGdxTGs8OEtA
VS0qbkZxVUl5Znh+aUdnNm9GV1NqT3szQzQ5Q04hc0dPQjR9aD12bSspCnpARE82Mmo+XnBMQUxh
Nj1UIXdHNT5Qb3kjbn5kUiVfcEhXQ0Z8cG5LWTFpZHVaNyFmSGZNYHtoK25Va1ZXaCpqMAp6UEky
ViNpenI3fXh3PiQ1Yyo4VylzVTxJUlgxLX5FdkBiK3xeQVZ9dV85cGZMU29vNGhwcip3dDBiT1FP
OExlK14Kekw3KUFZY3d7ZCk+PShkbU1XQW1gOVlOVDZhMn4kNi1+JC08Rlp7WFlFaWhOM0VZdGk0
cncmZHJvZClPRTJ9c21xCnopalNePDd6bl58Uld+eihgV1FIenRrY1N9VVN+KiZ2KWEwcl5LJTlF
PVlUZysrfkI3UmooeG8wTm9pTld0S1h6bQp6Qnt6e203RCRMJCtocj9KT0xPMDJQWX5+ejR9Nm5m
U3Fzb25SZ35VdktaeiVxZjxAQU5xIzs8dnhvdCZIPilpSTwKentWcX5UaiZ1aCZASkRfSV82dTBs
WHcmVk1xX3Y0Zz09cnRpSldsej4qVGNiXjZqZUpoP1dITzdyYnlBPTJaKXBjCnpNJCFJPiFjVVJ+
MGJibDIrdDA0d1UzM05COypRKXljR1hBSTwka35lMlFhVjtRPmFefDNORjRALTNIdzNVLUVPPgp6
VGxtTytzQUZzQ21tQHpIe0shM0VtJkY+eG15MTY7SmRDKUUrNlQmLVd6P0h4Kz5ge0AlODJiNkJy
Ny0jcyN7cVgKcUJheXNKP1FgOTQkMj9Ubi0tRDVvTll+VDg+VmYpSjs/O3ErTCQ+P3ZfdEUkSSNR
WWI9dDtuWVUKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDBhYzExYWI3ODVhMGI0NmY5MGMzOWE3
NTAyZGMzNTRlNjQ5ZTI1ZjcuLmMxMDNkNWY5YmYzOWJhMDVmZjMzMTExMDNjYzkyZjU4YzYxZjFl
ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMzU5NCw2ICszNTk0LDkgQEAgQlVHV0s5MDc0MyA6IGZhc3QvZXZlbnRzL2Rpc3BsYXkt
bm9uZS1vbi1mb2N1cy1jcmFzaC5odG1sID0gUEFTUyBURVhUCiAvLyBGbGFreQogQlVHV0s5MDc0
NiA6IGZhc3QvbXVsdGljb2wvY29sdW1uLXNwYW4tcGFyZW50LWNvbnRpbnVhdGlvbi1jcmFzaC5o
dG1sID0gUEFTUyBUSU1FT1VUCiAKKy8vIE5lZWRzIGltYWdlCitCVUdUSEFLSVMgV0lOIExJTlVY
IDogZmFzdC9zY3JvbGxpbmcvc2Nyb2xsYmFyLXRpY2ttYXJrcy1zdHlsZWQuaHRtbCA9IElNQUdF
CisKIC8vIEZsYWt5CiBCVUdXSzkwODk2IFdJTiBERUJVRyA6IGZhc3QvanMvZGZnLWNyb3NzLWds
b2JhbC1vYmplY3QtaW5saW5lLW5ldy1hcnJheS1saXRlcmFsLmh0bWwgPSBQQVNTIFRFWFQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153927</attachid>
            <date>2012-07-23 18:04:57 -0700</date>
            <delta_ts>2012-07-23 18:14:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91949-20120723180450.patch</filename>
            <type>text/plain</type>
            <size>18839</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzEwMzdiYTlkZjA2NDI5
MmIwMTRiNWQ2YjYxZGI0ZGRiYWQxNjEwNS4uNGJlZWQ4YmJkYzg4MzI2Yzc4ZTY3MGFkNjRjZWU0
NDE1YmRkNmZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA3LTIzICBOaWNv
IFdlYmVyICA8bmljb2xhc3dlYmVyQGdteC5kZT4KKworICAgICAgICBbY2hyb21pdW1dIFNob3cg
c2VhcmNoIHRpY2ttYXJrcyBvbiBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxOTQ5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGxldHRpbmcg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtzKCkKKyAgICAgICAgZGVsZWdhdGUg
dG8gdGhlIG5hdGl2ZSBTY3JvbGxiYXJUaGVtZS4gVG8gbWFrZSB0aGlzIHBvc3NpYmxlLAorICAg
ICAgICBtb3ZlIHBhaW50VGlja21hcmtzKCkgZnJvbSBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB0
byB0aGUKKyAgICAgICAgc3VwZXJjbGFzcyBTY3JvbGxiYXJUaGVtZS4KKworICAgICAgICBGb3Ig
dGVzdGluZywgYWRkIGludGVybmFscy5hZGRUZXh0TWF0Y2hNYXJrZXIoKSBhbmQgYWRkIGEgcGl4
ZWwgdGVzdC4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICBNb3Zl
ZCBwYWludFRpY2ttYXJrcygpIGZyb20gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUgdG8gaGVyZS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oOgorICAgICAgICBS
ZW1vdmUgcGFpbnRUaWNrbWFya3MoKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q2hyb21pdW06OnBhaW50VGlja21hcmtzKToKKyAgICAgICAgU3dpdGNoIHRvIGRyYXdpbmcgdGlj
a21hcmtzIGFzIHZlY3RvcnMsIHNvIHRoZXkgY2FuIGJlIGFyYml0cmFyaWx5IHdpZGUuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAg
ICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyk6CisgICAgICAgIEltcGxlbWVudCBwYWlu
dFRpY2ttYXJrcygpLCBzbyB0aGF0IGNzcy1zdHlsZWQgc2Nyb2xsYmFycyBnZXQgdGlja21hcmtz
IG9uIG1hYy4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6
cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFp
bnRUaWNrbWFya3MpOgorICAgICAgICBJbXBsZW1lbnQgcGFpbnRUaWNrbWFya3MoKSwgc28gdGhh
dCBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMgZ2V0IHRpY2ttYXJrcyBvbiBtYWMuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJrcyk6CisgICAgICAgIERlbGVnYXRlIHRv
IHRoZSBuYXRpdmUgU2Nyb2xsYmFyVGhlbWUgZm9yIHRpY2ttYXJrIGRyYXdpbmcuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoK
KyAgICAgICAgKFJlbmRlclNjcm9sbGJhclRoZW1lKToKKyAgICAgICAgT3ZlcnJpZGUgcGFpbnRU
aWNrbWFya3MoKS4KKwogMjAxMi0wNy0yMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUu
ZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIG1lZGlhL2NvbnRyb2xzLXN0eWxpbmcu
aHRtbCBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuY3BwCmluZGV4IDA1NTEwNzcxMTRiNGJjN2VhN2I4YjFjNGVjZTk1ZTEwNDNlZDg1
ZGUuLmEzZWJjOTM2OTMyNWE0N2IyZTYyOTI4Njk2MGI0ZDZmZWJjMmYwYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRNYXJrZXJUb05vZGUoTm9k
ZSogbm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsCiB9CiAKIAotdm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OmFkZFRleHRNYXRjaE1hcmtlcihSYW5nZSogcmFuZ2UsIGJvb2wgYWN0aXZl
TWF0Y2gpCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkVGV4dE1hdGNoTWFya2Vy
KGNvbnN0IFJhbmdlKiByYW5nZSwgYm9vbCBhY3RpdmVNYXRjaCkKIHsKICAgICAvLyBVc2UgYSBU
ZXh0SXRlcmF0b3IgdG8gdmlzaXQgdGhlIHBvdGVudGlhbGx5IG11bHRpcGxlIG5vZGVzIHRoZSBy
YW5nZSBjb3ZlcnMuCiAgICAgZm9yIChUZXh0SXRlcmF0b3IgbWFya2VkVGV4dChyYW5nZSk7ICFt
YXJrZWRUZXh0LmF0RW5kKCk7IG1hcmtlZFRleHQuYWR2YW5jZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKaW5kZXggNmEzNzI0ODAwNzZiZmFj
YWViZDEzMGNiZmRhNjQ0ZWUzN2I4ZDljYy4uOGRkMmIwNGZmMDcxYmI5YTYwMWY0MDFmMTA3MWFm
NjgwOTNkOGZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNYXJrZXIoUmFu
Z2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
bik7CiAgICAgdm9pZCBhZGRNYXJrZXJUb05vZGUoTm9kZSosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKICAgICB2b2lk
IGFkZE1hcmtlclRvTm9kZShOb2RlKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGxl
bmd0aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIFBhc3NSZWZQdHI8RG9jdW1lbnRNYXJr
ZXJEZXRhaWxzPik7Ci0gICAgdm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoUmFuZ2UqLCBib29sIGFj
dGl2ZU1hdGNoKTsKKyAgICB2b2lkIGFkZFRleHRNYXRjaE1hcmtlcihjb25zdCBSYW5nZSosIGJv
b2wgYWN0aXZlTWF0Y2gpOwogCiAgICAgdm9pZCBjb3B5TWFya2VycyhOb2RlKiBzcmNOb2RlLCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgaW50IGxlbmd0aCwgTm9kZSogZHN0Tm9kZSwgaW50IGRlbHRh
KTsKICAgICBib29sIGhhc01hcmtlcnMoUmFuZ2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZXMgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VycygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4
IGQ3MzZjZTUzZDMxOTllOWM0NDNiMTEzYzQxNGZhOWI3NDk4ODNhMTQuLjNhOWZiNDhkODA1MDE0
N2VjOTgxZjIwOWYyMWQ5MzE2N2IyZjBhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMTU4Miw3
ICsxNTgyLDcgQEAgTm9kZSogUmFuZ2U6OnBhc3RMYXN0Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZW5kLmNvbnRhaW5lcigpLT50cmF2ZXJzZU5leHRTaWJsaW5nKCk7CiB9CiAKLUludFJlY3Qg
UmFuZ2U6OmJvdW5kaW5nQm94KCkKK0ludFJlY3QgUmFuZ2U6OmJvdW5kaW5nQm94KCkgY29uc3QK
IHsKICAgICBJbnRSZWN0IHJlc3VsdDsKICAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7CkBAIC0x
NTkzLDcgKzE1OTMsNyBAQCBJbnRSZWN0IFJhbmdlOjpib3VuZGluZ0JveCgpCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdm9pZCBSYW5nZTo6dGV4dFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVj
dHMsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0LCBSYW5nZUluRml4ZWRQb3NpdGlvbiogaW5GaXhl
ZCkKK3ZvaWQgUmFuZ2U6OnRleHRSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBib29sIHVz
ZVNlbGVjdGlvbkhlaWdodCwgUmFuZ2VJbkZpeGVkUG9zaXRpb24qIGluRml4ZWQpIGNvbnN0CiB7
CiAgICAgTm9kZSogc3RhcnRDb250YWluZXIgPSBtX3N0YXJ0LmNvbnRhaW5lcigpOwogICAgIE5v
ZGUqIGVuZENvbnRhaW5lciA9IG1fZW5kLmNvbnRhaW5lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaAppbmRleCA4
ZjBlOThiNDc4MDg2YTk1Mjg0ZTUwM2IyYzMwN2M5YzQ5ZmYyZWYwLi4wNDhjZDY5OTJkNWNjNWE2
YzVjMWZiYThiODYwMTQ3NWU4MGI4MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaApAQCAtMTEyLDcgKzExMiw3
IEBAIHB1YmxpYzoKIAogICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoKSBjb25zdDsKIAotICAg
IEludFJlY3QgYm91bmRpbmdCb3goKTsKKyAgICBJbnRSZWN0IGJvdW5kaW5nQm94KCkgY29uc3Q7
CiAgICAgCiAgICAgZW51bSBSYW5nZUluRml4ZWRQb3NpdGlvbiB7CiAgICAgICAgIE5vdEZpeGVk
UG9zaXRpb24sCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIH07CiAgICAgCiAgICAg
Ly8gTm90IHRyYW5zZm9ybS1mcmllbmRseQotICAgIHZvaWQgdGV4dFJlY3RzKFZlY3RvcjxJbnRS
ZWN0PiYsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIFJhbmdlSW5GaXhlZFBvc2l0
aW9uKiA9IDApOworICAgIHZvaWQgdGV4dFJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGJvb2wgdXNl
U2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIFJhbmdlSW5GaXhlZFBvc2l0aW9uKiA9IDApIGNvbnN0
OwogICAgIC8vIFRyYW5zZm9ybS1mcmllbmRseQogICAgIHZvaWQgdGV4dFF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgUmFuZ2VJbkZpeGVk
UG9zaXRpb24qID0gMCkgY29uc3Q7CiAgICAgdm9pZCBnZXRCb3JkZXJBbmRUZXh0UXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZS5oCmluZGV4IDVmZTQ1YjFhNDczNjU3MTZiZjJiNzJhNDZkYWJhZWI2YWYwYmZmZTQuLmNj
Y2MyZjkyNTZmZDMyMjhkMzQxZjNjNmU5MTY1OGJjOWE1NTVkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaApAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIHsgZGVmYXVsdFBhaW50U2Ny
b2xsQ29ybmVyKGNvbnRleHQsIGNvcm5lclJlY3QpOyB9CiAgICAgc3RhdGljIHZvaWQgZGVmYXVs
dFBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgY29ybmVyUmVjdCkgeyBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hp
dGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNr
bWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3
KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmLCBjb25z
dCBJbnRSZWN0JikgeyB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVO
QUJMRShSVUJCRVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZS5oCmluZGV4IDY5NmRiMTJiMTk3NzdkY2Q2MDdlZTA0NjFhMjE1
MDFjOTAwZDYwZjUuLmRmZDE1ZWQxODg3ODMwOGExN2RhYzU0MDE4ZjU1NTYxOThiZjhiYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUu
aApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQ
aWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmLCBTY3JvbGxiYXJQYXJ0KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Ny
b2xsYmFyUGFydCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JikgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgSW50UmVjdCYpIHsgfQogCiAgICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0
cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0JiByZWN0KSB7IHJldHVybiByZWN0OyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcApp
bmRleCA2ODJkODJkNWIzMzc5MThiMjVkMDk4YmE3NzE3MzRlNzkxNTA1ZTkxLi40YTQ5MzhhYzgw
ODRmMjQ5MGYyNDRlYWExYmIzNjIxOWY1MTIxYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcApA
QCAtMTEzLDE0ICsxMTMsOCBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlj
a21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVAogICAgIGlmICghdGlj
a21hcmtzLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gR2V0IHRoZSBpbWFnZSBm
b3IgdGhlIHRpY2ttYXJrcy4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZlB0cjxJbWFnZT4s
IGRhc2gsIChJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInRpY2ttYXJrRGFzaCIpKSk7Ci0g
ICAgaWYgKGRhc2gtPmlzTnVsbCgpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29udGV4dC0+c2F2ZSgpOworICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgY29udGV4dC0+
c2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKIAogICAgIGZvciAoVmVjdG9yPEludFJlY3Q+Ojpj
b25zdF9pdGVyYXRvciBpID0gdGlja21hcmtzLmJlZ2luKCk7IGkgIT0gdGlja21hcmtzLmVuZCgp
OyArK2kpIHsKICAgICAgICAgLy8gQ2FsY3VsYXRlIGhvdyBmYXIgZG93biAoaW4gJSkgdGhlIHRp
Y2stbWFyayBzaG91bGQgYXBwZWFyLgpAQCAtMTI5LDExICsxMjMsMTQgQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFNjcm9sbGJhclQKICAgICAgICAgLy8gQ2FsY3VsYXRlIGhvdyBmYXIgZG93biAoaW4gcGl4ZWxz
KSB0aGUgdGljay1tYXJrIHNob3VsZCBhcHBlYXIuCiAgICAgICAgIGNvbnN0IGludCB5UG9zID0g
cmVjdC55KCkgKyAocmVjdC5oZWlnaHQoKSAqIHBlcmNlbnQpOwogCi0gICAgICAgIEludFBvaW50
IHRpY2soc2Nyb2xsYmFyLT54KCksIHlQb3MpOwotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2Uo
ZGFzaC5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgdGljayk7Ci0gICAgfQorICAgICAgICBj
b250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMHhDQywgMHhBQSwgMHgwMCwgMHhGRiksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBGbG9hdFJlY3QgdGlja1JlY3QocmVjdC54KCksIHlQ
b3MsIHJlY3Qud2lkdGgoKSwgMyk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHRpY2tSZWN0
KTsKIAotICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENv
bG9yKENvbG9yKDB4RkYsIDB4REQsIDB4MDAsIDB4RkYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICAgICAgRmxvYXRSZWN0IHRpY2tTdHJva2UocmVjdC54KCksIHlQb3MgKyAxLCByZWN0Lndp
ZHRoKCksIDEpOworICAgICAgICBjb250ZXh0LT5maWxsUmVjdCh0aWNrU3Ryb2tlKTsKKyAgICB9
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaAppbmRl
eCAxOTM0NmU3MjNiYWIyODdmOThlMTdjODEyZGI1ODNhMWMyMDY3MDIwLi5lZmJkZDA5OTJjMjQz
MDI0MWJlNWM5MzFiYzYzOTlkYzhiOGJlMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCkBA
IC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNv
bnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKICAgICAKIHBy
aXZhdGU6CiAgICAgdm9pZCBwYWludEdpdmVuVGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFZlY3RvcjxJbnRSZWN0
PiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KaW5kZXggNzVlNGEyOWM4OGMyMzczM2UzMjk2
N2E0MGY5NWRlZDlhYjIyODM1Ni4uNzNkNzliMGJjYmRlYzcyNGRhNjI1NTAzYjEzMjQ3MDEwNjRm
ZTQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgYm9v
bCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBHcmFwaGljc0MKICAgICB9CiAgICAgLy8gVGhlIGVuZHMgYXJlIHJvdW5kZWQg
YW5kIHRoZSB0aHVtYiBkb2Vzbid0IGdvIHRoZXJlLgogICAgIHRpY2ttYXJrVHJhY2tSZWN0Lmlu
ZmxhdGVZKC10aWNrbWFya1RyYWNrUmVjdC53aWR0aCgpKTsKLSAgICAvLyBJbnNldCBieSAyIG9u
IHRoZSBsZWZ0IGFuZCAzIG9uIHRoZSByaWdodC4KKyAgICAvLyBJbnNldCBhIGJpdC4KICAgICB0
aWNrbWFya1RyYWNrUmVjdC5zZXRYKHRpY2ttYXJrVHJhY2tSZWN0LngoKSArIDIpOwogICAgIHRp
Y2ttYXJrVHJhY2tSZWN0LnNldFdpZHRoKHRpY2ttYXJrVHJhY2tSZWN0LndpZHRoKCkgLSA1KTsK
ICAgICBwYWludEdpdmVuVGlja21hcmtzKGRyYXdpbmdDb250ZXh0LCBzY3JvbGxiYXIsIHRpY2tt
YXJrVHJhY2tSZWN0LCB0aWNrbWFya3MpOwpAQCAtNDA5LDUgKzQwOSwyNSBAQCB2b2lkIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiB2aWV3
LCBHcmFwaGljc0NvbgogICAgIH0KIH0KIAordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
OjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgLy8gTm90ZTog
VGhpcyBpcyBvbmx5IHVzZWQgZm9yIGNzcy1zdHlsZWQgc2Nyb2xsYmFycyBvbiBtYWMuCisgICAg
aWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSAhPSBWZXJ0aWNhbFNjcm9sbGJhcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKHJlY3QuaGVpZ2h0KCkgPD0gMCB8fCByZWN0LndpZHRoKCkg
PD0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPEludFJlY3Q+IHRpY2ttYXJrczsK
KyAgICBzY3JvbGxiYXItPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOworICAgIGlmICghdGlja21h
cmtzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSW5zZXQgYSBiaXQuCisgICAg
SW50UmVjdCB0aWNrbWFya1RyYWNrUmVjdCA9IHJlY3Q7CisgICAgdGlja21hcmtUcmFja1JlY3Qu
c2V0WCh0aWNrbWFya1RyYWNrUmVjdC54KCkgKyAxKTsKKyAgICB0aWNrbWFya1RyYWNrUmVjdC5z
ZXRXaWR0aCh0aWNrbWFya1RyYWNrUmVjdC53aWR0aCgpIC0gMik7CisgICAgcGFpbnRHaXZlblRp
Y2ttYXJrcyhjb250ZXh0LCBzY3JvbGxiYXIsIHRpY2ttYXJrVHJhY2tSZWN0LCB0aWNrbWFya3Mp
OworfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clRoZW1lLmNwcAppbmRleCA0NGUyYWE2MzFkYzI4MTUwMTc0YmMyMjUyMzBlOGI2YWFiN2QwZDM1
Li42ZDJlMDliMmUyYmFjZWFlNGUxOTdmYzY0MWU3NmFjNzJkN2I1NzljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKQEAgLTEzOCw0
ICsxMzgsOSBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbAogICAgIHRvUmVuZGVyU2Nyb2xsYmFy
KHNjcm9sbGJhciktPnBhaW50UGFydChjb250ZXh0LCBUaHVtYlBhcnQsIHJlY3QpOwogfQogCit2
b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCit7CisgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnBhaW50VGlja21hcmtzKGNv
bnRleHQsIHNjcm9sbGJhciwgcmVjdCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggOWNlZjM5NDlmYTlmNGRjNzE4OTM4
NzdmOGMxMGM5ZGU2MjQ4ZjQ0Ny4uYzE0ZGUzZmJjZTkzZmY3MTIxZTBjNWM3NGJmMzQzYWExYmU4
NzBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRo
ZW1lLmgKQEAgLTczLDYgKzczLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9u
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYs
IFNjcm9sbGJhclBhcnQpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1
YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgSW50UmVjdCBj
b25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UmVjdCYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBl
MzIxNDIzMTY5M2ZjOTE5ZGY0MWU3YTQ1NGY3Nzg5Njc4MGUzZGZmLi4wM2ZmOGE2NzFmYjkwOTRl
ODE3N2MzMGZkMTFmMjA2ZTA1ZDQzNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC02MjQsNiArNjI0LDEyIEBAIFN0cmluZyBJbnRlcm5hbHM6Om1hcmtlckRlc2NyaXB0
aW9uRm9yTm9kZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsCiAgICAgcmV0
dXJuIG1hcmtlci0+ZGVzY3JpcHRpb24oKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OmFkZFRleHRN
YXRjaE1hcmtlcihjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgaXNBY3RpdmUpCit7CisgICAgcmFu
Z2UtPm93bmVyRG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CisgICAgcmFuZ2UtPm93bmVyRG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRUZXh0TWF0Y2hN
YXJrZXIocmFuZ2UsIGlzQWN0aXZlKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNldFNjcm9sbFZp
ZXdQb3NpdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGxvbmcgeCwgbG9uZyB5LCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAwNDAwNTIzNzhlZThkNTVhMjQ2ZjBjNTYy
MDAyMDhlZjYzZWMwOGJlLi40YTEyZTAyMjRhNDc5YjdlNjQ3NmE0ZTJiYzA1YjAyMjMyMzk3YTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJs
aWM6CiAgICAgdW5zaWduZWQgbWFya2VyQ291bnRGb3JOb2RlKE5vZGUqLCBjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gbWFya2VyUmFuZ2VGb3JO
b2RlKE5vZGUqLCBjb25zdCBTdHJpbmcmIG1hcmtlclR5cGUsIHVuc2lnbmVkIGluZGV4LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgU3RyaW5nIG1hcmtlckRlc2NyaXB0aW9uRm9yTm9kZShOb2RlKiwg
Y29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdlKiwgYm9vbCBpc0FjdGl2
ZSk7CiAKICAgICB2b2lkIHNldFNjcm9sbFZpZXdQb3NpdGlvbihEb2N1bWVudCosIGxvbmcgeCwg
bG9uZyB5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uKERvY3VtZW50
KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtb2RlLCBpbnQgZ2FwLCBFeGNlcHRpb25Db2RlJiBl
YykgeyBzZXRQYWdpbmF0aW9uKGRvY3VtZW50LCBtb2RlLCBnYXAsIDAsIGVjKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGZkZTQ1NzdlYjNjZjdiZTJjOGRiOWI0ZTgw
NWJiNWM1OGI5ZmJhMjguLmJiNTNiZjdiYTMxZDMyMTlmYzNjMzBlZGFjMzYzZGE5NzlhNWY3Mjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTg2LDYgKzg2LDcgQEAgbW9k
dWxlIHdpbmRvdyB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWFya2VyQ291bnRGb3JOb2RlKGlu
IE5vZGUgbm9kZSwgaW4gRE9NU3RyaW5nIG1hcmtlclR5cGUpIHJhaXNlcyhET01FeGNlcHRpb24p
OwogICAgICAgICBSYW5nZSBtYXJrZXJSYW5nZUZvck5vZGUoaW4gTm9kZSBub2RlLCBpbiBET01T
dHJpbmcgbWFya2VyVHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAgICAgICAgIERPTVN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoaW4gTm9k
ZSBub2RlLCBpbiBET01TdHJpbmcgbWFya2VyVHlwZSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKGlu
IFJhbmdlIHJhbmdlLCBpbiBib29sZWFuIGlzQWN0aXZlKTsKIAogICAgICAgICB2b2lkIHNldFNj
cm9sbFZpZXdQb3NpdGlvbihpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyB4LCBpbiBsb25n
IHkpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9zY3JvbGxiYXItdGlja21hcmtzLXN0eWxlZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zY3JvbGxiYXItdGlja21hcmtzLXN0eWxlZC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2ZhZjIyYTJlMTg4MjcxNDM4MmIxYjQyYzIzOTRkNDZjNDgyODE1
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Njcm9sbGJh
ci10aWNrbWFya3Mtc3R5bGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACivCoApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc2Nyb2xsYmFyLXRpY2ttYXJrcy1zdHls
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Njcm9sbGJhci10aWNrbWFya3Mt
c3R5bGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzRiM2ZlMzJlMjRiZDU2Mjc1YTkxY2Y2ZThiYmJhMzA1
YTc4YzEwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Nj
cm9sbGJhci10aWNrbWFya3Mtc3R5bGVkLmh0bWwKQEAgLTAsMCArMSwzOSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK2h0bWwgeworICAgIGZvbnQ6IEFoZW0gMTBweDsKKyAg
ICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBub25lOworfQorOjotd2Via2l0LXNjcm9sbGJhciB7
CisgICAgd2lkdGg6IDEzcHg7CisgICAgaGVpZ2h0OiAxM3B4OworfQorOjotd2Via2l0LXNjcm9s
bGJhci10cmFjayB7CisgICAgYmFja2dyb3VuZC1jb2xvcjpncmVlbjsKK30KKzo6LXdlYmtpdC1z
Y3JvbGxiYXItdGh1bWIgeworICAgIGJhY2tncm91bmQtY29sb3I6cmdiYSgxMjgsIDEyOCwgMTI4
LCAwLjgpOyAgLyogTGV0IHRpY2ttYXJrIHNoaW5lIHRocm91Z2ggKi8KK30KKzwvc3R5bGU+Cis8
c2NyaXB0PgorZnVuY3Rpb24gaGlnaGxpZ2h0KCkKK3sKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHZhciBlbHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
ZWx0Jyk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVsdCk7CisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpIHsKKyAgICAgICAgd2luZG93LmludGVybmFscy5hZGRUZXh0TWF0Y2hNYXJr
ZXIocmFuZ2UsIHRydWUpOworICAgIH0KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJoaWdobGlnaHQoKTsiPgorCis8ZGl2IHN0eWxlPSJoZWlnaHQ6NjAwcHgi
PjwvZGl2PgorPHNwYW4gaWQ9ImVsdCIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyB0b3A6MzAw
cHgiPiZuYnNwOzwvc3Bhbj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3Qvc2Nyb2xsaW5nL3Njcm9sbGJhci10aWNr
bWFya3Mtc3R5bGVkLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LW1hYy9mYXN0L3Njcm9sbGluZy9zY3JvbGxiYXItdGlja21hcmtzLXN0eWxlZC1leHBlY3RlZC5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGJlYTJjMDI2Yzk2ODhiZjUzMmE2OGU1MDVhOTA2Y2EwZWRmNTI5NQpH
SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMzM0NQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7
K3ZZVjJhPmkxQiVRbFlicFJ6bmtCOWdDQ000NyQ9U3VGeGVQYFkKejxgI3lBTSZebThOdlgtSFc9
MG1Oc1ZRa2pyV1RlLU0jZCY0WEArd1pJWjdCOWNvdXVRSUVHWnJkMyphSHVjTT1jCnpUY0UjQWko
QVB1LWQkSFhIY0luR05JZEYjR1V3fn1OJWhzbm04VF89KjhwdSVsbDRGVGEjfT9GVip2KCtoSUFH
Vgp6MjhJY09LJkxwa0gyQF9nOEpRUnVRYnErdzE3dEtZakFuJDxsM15IQGlmTng7R1hxUWh8RGB3
MXk9NFdLe3ZSZ1oKentrUWUqVFArOG1BcGhOVT4rYHthK2ZMVyF5O2xjVEZiY3tiaTU+PDwxX21R
MDc2eWhCOUtkPkdSQiR2dk1pYXdtCnpNaT95X2hERThVbGljKDF3S0F3dSpnUitZJWx0aEpSQmls
S0dHck53V31VbmcreU9MfSFQQ3t4V3R+JCg2OUJMNwpCIV81RXkKCmxpdGVyYWwgMApIY21WP2Qw
MDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDBhYzExYWI3ODVhMGI0NmY5MGMzOWE3NTAyZGMzNTRlNjQ5ZTI1ZjcuLmMxMDNkNWY5
YmYzOWJhMDVmZjMzMTExMDNjYzkyZjU4YzYxZjFlZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzU5NCw2ICszNTk0LDkgQEAgQlVH
V0s5MDc0MyA6IGZhc3QvZXZlbnRzL2Rpc3BsYXktbm9uZS1vbi1mb2N1cy1jcmFzaC5odG1sID0g
UEFTUyBURVhUCiAvLyBGbGFreQogQlVHV0s5MDc0NiA6IGZhc3QvbXVsdGljb2wvY29sdW1uLXNw
YW4tcGFyZW50LWNvbnRpbnVhdGlvbi1jcmFzaC5odG1sID0gUEFTUyBUSU1FT1VUCiAKKy8vIE5l
ZWRzIGltYWdlCitCVUdUSEFLSVMgV0lOIExJTlVYIDogZmFzdC9zY3JvbGxpbmcvc2Nyb2xsYmFy
LXRpY2ttYXJrcy1zdHlsZWQuaHRtbCA9IElNQUdFCisKIC8vIEZsYWt5CiBCVUdXSzkwODk2IFdJ
TiBERUJVRyA6IGZhc3QvanMvZGZnLWNyb3NzLWdsb2JhbC1vYmplY3QtaW5saW5lLW5ldy1hcnJh
eS1saXRlcmFsLmh0bWwgPSBQQVNTIFRFWFQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153929</attachid>
            <date>2012-07-23 18:14:38 -0700</date>
            <delta_ts>2012-07-23 19:19:34 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-91949-20120723181430.patch</filename>
            <type>text/plain</type>
            <size>18840</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzEwMzdiYTlkZjA2NDI5
MmIwMTRiNWQ2YjYxZGI0ZGRiYWQxNjEwNS4uM2VhNmYxNGM4MjNhNTM2NTg3NzdhYTI2ODQ4NzU2
ZmQwNzBlMmY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA3LTIzICBOaWNv
IFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFNob3cg
c2VhcmNoIHRpY2ttYXJrcyBvbiBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxOTQ5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQWRyaWVubmUgV2Fsa2VyLgorCisgICAgICAgIFRoaXMgaXMgZG9uZSBieSBsZXR0aW5n
IFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJrcygpCisgICAgICAgIGRlbGVnYXRl
IHRvIHRoZSBuYXRpdmUgU2Nyb2xsYmFyVGhlbWUuIFRvIG1ha2UgdGhpcyBwb3NzaWJsZSwKKyAg
ICAgICAgbW92ZSBwYWludFRpY2ttYXJrcygpIGZyb20gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUg
dG8gdGhlCisgICAgICAgIHN1cGVyY2xhc3MgU2Nyb2xsYmFyVGhlbWUuCisKKyAgICAgICAgRm9y
IHRlc3RpbmcsIGFkZCBpbnRlcm5hbHMuYWRkVGV4dE1hdGNoTWFya2VyKCkgYW5kIGFkZCBhIHBp
eGVsIHRlc3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnBhaW50VGlja21hcmtzKToKKyAgICAgICAgTW92
ZWQgcGFpbnRUaWNrbWFya3MoKSBmcm9tIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlIHRvIGhlcmUu
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAg
UmVtb3ZlIHBhaW50VGlja21hcmtzKCkuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtOjpwYWludFRpY2ttYXJrcyk6CisgICAgICAgIFN3aXRjaCB0byBkcmF3aW5nIHRp
Y2ttYXJrcyBhcyB2ZWN0b3JzLCBzbyB0aGV5IGNhbiBiZSBhcmJpdHJhcmlseSB3aWRlLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaDoKKyAg
ICAgICAgKFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMpOgorICAgICAgICBJbXBsZW1lbnQgcGFp
bnRUaWNrbWFya3MoKSwgc28gdGhhdCBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMgZ2V0IHRpY2ttYXJr
cyBvbiBtYWMuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6
OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBh
aW50VGlja21hcmtzKToKKyAgICAgICAgSW1wbGVtZW50IHBhaW50VGlja21hcmtzKCksIHNvIHRo
YXQgY3NzLXN0eWxlZCBzY3JvbGxiYXJzIGdldCB0aWNrbWFya3Mgb24gbWFjLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICBEZWxlZ2F0ZSB0
byB0aGUgbmF0aXZlIFNjcm9sbGJhclRoZW1lIGZvciB0aWNrbWFyayBkcmF3aW5nLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmg6
CisgICAgICAgIChSZW5kZXJTY3JvbGxiYXJUaGVtZSk6CisgICAgICAgIE92ZXJyaWRlIHBhaW50
VGlja21hcmtzKCkuCisKIDIwMTItMDctMjMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhl
LmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBtZWRpYS9jb250cm9scy1zdHlsaW5n
Lmh0bWwgaXMgZmFpbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
TWFya2VyQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmNwcAppbmRleCAwNTUxMDc3MTE0YjRiYzdlYTdiOGIxYzRlY2U5NWUxMDQzZWQ4
NWRlLi5hM2ViYzkzNjkzMjVhNDdiMmU2MjkyODY5NjBiNGQ2ZmViYzJmMGFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtOTIsNyAr
OTIsNyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyVG9Ob2RlKE5v
ZGUqIG5vZGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LAogfQogCiAKLXZvaWQgRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyOjphZGRUZXh0TWF0Y2hNYXJrZXIoUmFuZ2UqIHJhbmdlLCBib29sIGFjdGl2
ZU1hdGNoKQordm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZFRleHRNYXRjaE1hcmtl
cihjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgYWN0aXZlTWF0Y2gpCiB7CiAgICAgLy8gVXNlIGEg
VGV4dEl0ZXJhdG9yIHRvIHZpc2l0IHRoZSBwb3RlbnRpYWxseSBtdWx0aXBsZSBub2RlcyB0aGUg
cmFuZ2UgY292ZXJzLgogICAgIGZvciAoVGV4dEl0ZXJhdG9yIG1hcmtlZFRleHQocmFuZ2UpOyAh
bWFya2VkVGV4dC5hdEVuZCgpOyBtYXJrZWRUZXh0LmFkdmFuY2UoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oCmluZGV4IDZhMzcyNDgwMDc2YmZh
Y2FlYmQxMzBjYmZkYTY0NGVlMzdiOGQ5Y2MuLjhkZDJiMDRmZjA3MWJiOWE2MDFmNDAxZjEwNzFh
ZjY4MDkzZDhmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkTWFya2VyKFJh
bmdlKiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRp
b24pOwogICAgIHZvaWQgYWRkTWFya2VyVG9Ob2RlKE5vZGUqLCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CiAgICAgdm9p
ZCBhZGRNYXJrZXJUb05vZGUoTm9kZSosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBQYXNzUmVmUHRyPERvY3VtZW50TWFy
a2VyRGV0YWlscz4pOwotICAgIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKFJhbmdlKiwgYm9vbCBh
Y3RpdmVNYXRjaCk7CisgICAgdm9pZCBhZGRUZXh0TWF0Y2hNYXJrZXIoY29uc3QgUmFuZ2UqLCBi
b29sIGFjdGl2ZU1hdGNoKTsKIAogICAgIHZvaWQgY29weU1hcmtlcnMoTm9kZSogc3JjTm9kZSwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIGludCBsZW5ndGgsIE5vZGUqIGRzdE5vZGUsIGludCBkZWx0
YSk7CiAgICAgYm9vbCBoYXNNYXJrZXJzKFJhbmdlKiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5
cGVzID0gRG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtlcnMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRl
eCBkNzM2Y2U1M2QzMTk5ZTljNDQzYjExM2M0MTRmYTliNzQ5ODgzYTE0Li4zYTlmYjQ4ZDgwNTAx
NDdlYzk4MWYyMDlmMjFkOTMxNjdiMmYwYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTE1ODIs
NyArMTU4Miw3IEBAIE5vZGUqIFJhbmdlOjpwYXN0TGFzdE5vZGUoKSBjb25zdAogICAgIHJldHVy
biBtX2VuZC5jb250YWluZXIoKS0+dHJhdmVyc2VOZXh0U2libGluZygpOwogfQogCi1JbnRSZWN0
IFJhbmdlOjpib3VuZGluZ0JveCgpCitJbnRSZWN0IFJhbmdlOjpib3VuZGluZ0JveCgpIGNvbnN0
CiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CiAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwpAQCAt
MTU5Myw3ICsxNTkzLDcgQEAgSW50UmVjdCBSYW5nZTo6Ym91bmRpbmdCb3goKQogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXZvaWQgUmFuZ2U6OnRleHRSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJl
Y3RzLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCwgUmFuZ2VJbkZpeGVkUG9zaXRpb24qIGluRml4
ZWQpCit2b2lkIFJhbmdlOjp0ZXh0UmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgYm9vbCB1
c2VTZWxlY3Rpb25IZWlnaHQsIFJhbmdlSW5GaXhlZFBvc2l0aW9uKiBpbkZpeGVkKSBjb25zdAog
ewogICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVyID0gbV9zdGFydC5jb250YWluZXIoKTsKICAgICBO
b2RlKiBlbmRDb250YWluZXIgPSBtX2VuZC5jb250YWluZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKaW5kZXgg
OGYwZTk4YjQ3ODA4NmE5NTI4NGU1MDNiMmMzMDdjOWM0OWZmMmVmMC4uMDQ4Y2Q2OTkyZDVjYzVh
NmM1YzFmYmE4Yjg2MDE0NzVlODBiODM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1JhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKQEAgLTExMiw3ICsxMTIs
NyBAQCBwdWJsaWM6CiAKICAgICBTaGFkb3dSb290KiBzaGFkb3dSb290KCkgY29uc3Q7CiAKLSAg
ICBJbnRSZWN0IGJvdW5kaW5nQm94KCk7CisgICAgSW50UmVjdCBib3VuZGluZ0JveCgpIGNvbnN0
OwogICAgIAogICAgIGVudW0gUmFuZ2VJbkZpeGVkUG9zaXRpb24gewogICAgICAgICBOb3RGaXhl
ZFBvc2l0aW9uLApAQCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIAogICAg
IC8vIE5vdCB0cmFuc2Zvcm0tZnJpZW5kbHkKLSAgICB2b2lkIHRleHRSZWN0cyhWZWN0b3I8SW50
UmVjdD4mLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlLCBSYW5nZUluRml4ZWRQb3Np
dGlvbiogPSAwKTsKKyAgICB2b2lkIHRleHRSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBib29sIHVz
ZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlLCBSYW5nZUluRml4ZWRQb3NpdGlvbiogPSAwKSBjb25z
dDsKICAgICAvLyBUcmFuc2Zvcm0tZnJpZW5kbHkKICAgICB2b2lkIHRleHRRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UsIFJhbmdlSW5GaXhl
ZFBvc2l0aW9uKiA9IDApIGNvbnN0OwogICAgIHZvaWQgZ2V0Qm9yZGVyQW5kVGV4dFF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWUuaAppbmRleCA1ZmU0NWIxYTQ3MzY1NzE2YmYyYjcyYTQ2ZGFiYWViNmFmMGJmZmU0Li5j
Y2NjMmY5MjU2ZmQzMjI4ZDM0MWYzYzZlOTE2NThiYzlhNTU1ZGUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKQEAgLTg2LDYgKzg2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGRlZmF1bHRQYWludFNj
cm9sbENvcm5lcihjb250ZXh0LCBjb3JuZXJSZWN0KTsgfQogICAgIHN0YXRpYyB2b2lkIGRlZmF1
bHRQYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGNvcm5lclJlY3QpIHsgY29udGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6Ondo
aXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsgfQogCisgICAgdmlydHVhbCB2b2lkIHBhaW50VGlj
a21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50
UmVjdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmll
dyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JiwgY29u
c3QgSW50UmVjdCYpIHsgfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBF
TkFCTEUoUlVCQkVSX0JBTkRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGUuaAppbmRleCA2OTZkYjEyYjE5Nzc3ZGNkNjA3ZWUwNDYxYTIx
NTAxYzkwMGQ2MGY1Li5kZmQxNWVkMTg4NzgzMDhhMTdkYWM1NDAxOGY1NTU2MTk4YmY4YmI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmgKQEAgLTYwLDcgKzYwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNr
UGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0JiwgU2Nyb2xsYmFyUGFydCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNj
cm9sbGJhclBhcnQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSB7IH0KIAogICAgIHZpcnR1YWwgSW50UmVjdCBjb25z
dHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3Qg
SW50UmVjdCYgcmVjdCkgeyByZXR1cm4gcmVjdDsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAK
aW5kZXggNjgyZDgyZDViMzM3OTE4YjI1ZDA5OGJhNzcxNzM0ZTc5MTUwNWU5MS4uNGE0OTM4YWM4
MDg0ZjI0OTBmMjQ0ZWFhMWJiMzYyMTlmNTEyMWE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAK
QEAgLTExMywxNCArMTEzLDggQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpwYWludFRp
Y2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclQKICAgICBpZiAoIXRp
Y2ttYXJrcy5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEdldCB0aGUgaW1hZ2Ug
Zm9yIHRoZSB0aWNrbWFya3MuCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8SW1hZ2U+
LCBkYXNoLCAoSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0aWNrbWFya0Rhc2giKSkpOwot
ICAgIGlmIChkYXNoLT5pc051bGwoKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnRleHQtPnNhdmUoKTsKKyAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIGNvbnRleHQt
PnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CiAKICAgICBmb3IgKFZlY3RvcjxJbnRSZWN0Pjo6
Y29uc3RfaXRlcmF0b3IgaSA9IHRpY2ttYXJrcy5iZWdpbigpOyBpICE9IHRpY2ttYXJrcy5lbmQo
KTsgKytpKSB7CiAgICAgICAgIC8vIENhbGN1bGF0ZSBob3cgZmFyIGRvd24gKGluICUpIHRoZSB0
aWNrLW1hcmsgc2hvdWxkIGFwcGVhci4KQEAgLTEyOSwxMSArMTIzLDE0IEBAIHZvaWQgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBTY3JvbGxiYXJUCiAgICAgICAgIC8vIENhbGN1bGF0ZSBob3cgZmFyIGRvd24gKGluIHBpeGVs
cykgdGhlIHRpY2stbWFyayBzaG91bGQgYXBwZWFyLgogICAgICAgICBjb25zdCBpbnQgeVBvcyA9
IHJlY3QueSgpICsgKHJlY3QuaGVpZ2h0KCkgKiBwZXJjZW50KTsKIAotICAgICAgICBJbnRQb2lu
dCB0aWNrKHNjcm9sbGJhci0+eCgpLCB5UG9zKTsKLSAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdl
KGRhc2guZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHRpY2spOwotICAgIH0KKyAgICAgICAg
Y29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDB4Q0MsIDB4QUEsIDB4MDAsIDB4RkYpLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgRmxvYXRSZWN0IHRpY2tSZWN0KHJlY3QueCgpLCB5
UG9zLCByZWN0LndpZHRoKCksIDMpOworICAgICAgICBjb250ZXh0LT5maWxsUmVjdCh0aWNrUmVj
dCk7CiAKLSAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxD
b2xvcihDb2xvcigweEZGLCAweERELCAweDAwLCAweEZGKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgICAgIEZsb2F0UmVjdCB0aWNrU3Ryb2tlKHJlY3QueCgpLCB5UG9zICsgMSwgcmVjdC53
aWR0aCgpLCAxKTsKKyAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QodGlja1N0cm9rZSk7CisgICAg
fQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgKaW5k
ZXggMTkzNDZlNzIzYmFiMjg3Zjk4ZTE3YzgxMmRiNTgzYTFjMjA2NzAyMC4uZWZiZGQwOTkyYzI0
MzAyNDFiZTVjOTMxYmM2Mzk5ZGM4YjhiZTBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaApA
QCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVj
dCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqLCBH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBj
b25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlS
ZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAgICAgCiBw
cml2YXRlOgogICAgIHZvaWQgcGFpbnRHaXZlblRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBjb25zdCBWZWN0b3I8SW50UmVj
dD4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCmluZGV4IDc1ZTRhMjljODhjMjM3MzNlMzI5
NjdhNDBmOTVkZWQ5YWIyMjgzNTYuLjczZDc5YjBiY2JkZWM3MjRkYTYyNTUwM2IxMzI0NzAxMDY0
ZmU0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIGJv
b2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhciwgR3JhcGhpY3NDCiAgICAgfQogICAgIC8vIFRoZSBlbmRzIGFyZSByb3VuZGVk
IGFuZCB0aGUgdGh1bWIgZG9lc24ndCBnbyB0aGVyZS4KICAgICB0aWNrbWFya1RyYWNrUmVjdC5p
bmZsYXRlWSgtdGlja21hcmtUcmFja1JlY3Qud2lkdGgoKSk7Ci0gICAgLy8gSW5zZXQgYnkgMiBv
biB0aGUgbGVmdCBhbmQgMyBvbiB0aGUgcmlnaHQuCisgICAgLy8gSW5zZXQgYSBiaXQuCiAgICAg
dGlja21hcmtUcmFja1JlY3Quc2V0WCh0aWNrbWFya1RyYWNrUmVjdC54KCkgKyAyKTsKICAgICB0
aWNrbWFya1RyYWNrUmVjdC5zZXRXaWR0aCh0aWNrbWFya1RyYWNrUmVjdC53aWR0aCgpIC0gNSk7
CiAgICAgcGFpbnRHaXZlblRpY2ttYXJrcyhkcmF3aW5nQ29udGV4dCwgc2Nyb2xsYmFyLCB0aWNr
bWFya1RyYWNrUmVjdCwgdGlja21hcmtzKTsKQEAgLTQwOSw1ICs0MDksMjUgQEAgdm9pZCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyogdmll
dywgR3JhcGhpY3NDb24KICAgICB9CiB9CiAKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1h
Yzo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIC8vIE5vdGU6
IFRoaXMgaXMgb25seSB1c2VkIGZvciBjc3Mtc3R5bGVkIHNjcm9sbGJhcnMgb24gbWFjLgorICAg
IGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgIT0gVmVydGljYWxTY3JvbGxiYXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChyZWN0LmhlaWdodCgpIDw9IDAgfHwgcmVjdC53aWR0aCgp
IDw9IDApCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxJbnRSZWN0PiB0aWNrbWFya3M7
CisgICAgc2Nyb2xsYmFyLT5nZXRUaWNrbWFya3ModGlja21hcmtzKTsKKyAgICBpZiAoIXRpY2tt
YXJrcy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEluc2V0IGEgYml0LgorICAg
IEludFJlY3QgdGlja21hcmtUcmFja1JlY3QgPSByZWN0OworICAgIHRpY2ttYXJrVHJhY2tSZWN0
LnNldFgodGlja21hcmtUcmFja1JlY3QueCgpICsgMSk7CisgICAgdGlja21hcmtUcmFja1JlY3Qu
c2V0V2lkdGgodGlja21hcmtUcmFja1JlY3Qud2lkdGgoKSAtIDIpOworICAgIHBhaW50R2l2ZW5U
aWNrbWFya3MoY29udGV4dCwgc2Nyb2xsYmFyLCB0aWNrbWFya1RyYWNrUmVjdCwgdGlja21hcmtz
KTsKK30KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJUaGVtZS5jcHAKaW5kZXggNDRlMmFhNjMxZGMyODE1MDE3NGJjMjI1MjMwZThiNmFhYjdkMGQz
NS4uNmQyZTA5YjJlMmJhY2VhZTRlMTk3ZmM2NDFlNzZhYzcyZDdiNTc5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCkBAIC0xMzgs
NCArMTM4LDkgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaHVtYihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2wKICAgICB0b1JlbmRlclNjcm9sbGJh
cihzY3JvbGxiYXIpLT5wYWludFBhcnQoY29udGV4dCwgVGh1bWJQYXJ0LCByZWN0KTsKIH0KIAor
dm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0
JiByZWN0KQoreworICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludFRpY2ttYXJrcyhj
b250ZXh0LCBzY3JvbGxiYXIsIHJlY3QpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oCmluZGV4IDljZWYzOTQ5ZmE5ZjRkYzcxODkz
ODc3ZjhjMTBjOWRlNjI0OGY0NDcuLmMxNGRlM2ZiY2U5M2ZmNzEyMWUwYzVjNzRiZjM0M2FhMWJl
ODcwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJU
aGVtZS5oCkBAIC03Myw2ICs3Myw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3Qm
LCBTY3JvbGxiYXJQYXJ0KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIEludFJlY3Qg
Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IEludFJlY3QmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
ZTMyMTQyMzE2OTNmYzkxOWRmNDFlN2E0NTRmNzc4OTY3ODBlM2RmZi4uMDNmZjhhNjcxZmI5MDk0
ZTgxNzdjMzBmZDExZjIwNmUwNWQ0MzVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtNjI0LDYgKzYyNCwxMiBAQCBTdHJpbmcgSW50ZXJuYWxzOjptYXJrZXJEZXNjcmlw
dGlvbkZvck5vZGUoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLAogICAgIHJl
dHVybiBtYXJrZXItPmRlc2NyaXB0aW9uKCk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjphZGRUZXh0
TWF0Y2hNYXJrZXIoY29uc3QgUmFuZ2UqIHJhbmdlLCBib29sIGlzQWN0aXZlKQoreworICAgIHJh
bmdlLT5vd25lckRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
cygpOworICAgIHJhbmdlLT5vd25lckRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkVGV4dE1hdGNo
TWFya2VyKHJhbmdlLCBpc0FjdGl2ZSk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpzZXRTY3JvbGxW
aWV3UG9zaXRpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBsb25nIHgsIGxvbmcgeSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnZpZXcoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMDQwMDUyMzc4ZWU4ZDU1YTI0NmYwYzU2
MjAwMjA4ZWY2M2VjMDhiZS4uNGExMmUwMjI0YTQ3OWI3ZTY0NzZhNGUyYmMwNWIwMjIzMjM5N2E1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMTcsNiArMTE3LDcgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIG1hcmtlckNvdW50Rm9yTm9kZShOb2RlKiwgY29uc3QgU3RyaW5n
JiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IG1hcmtlclJhbmdlRm9y
Tm9kZShOb2RlKiwgY29uc3QgU3RyaW5nJiBtYXJrZXJUeXBlLCB1bnNpZ25lZCBpbmRleCwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyBtYXJrZXJEZXNjcmlwdGlvbkZvck5vZGUoTm9kZSos
IGNvbnN0IFN0cmluZyYgbWFya2VyVHlwZSwgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIGFkZFRleHRNYXRjaE1hcmtlcihjb25zdCBSYW5nZSosIGJvb2wgaXNBY3Rp
dmUpOwogCiAgICAgdm9pZCBzZXRTY3JvbGxWaWV3UG9zaXRpb24oRG9jdW1lbnQqLCBsb25nIHgs
IGxvbmcgeSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0UGFnaW5hdGlvbihEb2N1bWVu
dCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbW9kZSwgaW50IGdhcCwgRXhjZXB0aW9uQ29kZSYg
ZWMpIHsgc2V0UGFnaW5hdGlvbihkb2N1bWVudCwgbW9kZSwgZ2FwLCAwLCBlYyk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBmZGU0NTc3ZWIzY2Y3YmUyYzhkYjliNGU4
MDViYjVjNThiOWZiYTI4Li5iYjUzYmY3YmEzMWQzMjE5ZmMzYzMwZWRhYzM2M2RhOTc5YTVmNzI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC04Niw2ICs4Niw3IEBAIG1v
ZHVsZSB3aW5kb3cgewogICAgICAgICB1bnNpZ25lZCBsb25nIG1hcmtlckNvdW50Rm9yTm9kZShp
biBOb2RlIG5vZGUsIGluIERPTVN0cmluZyBtYXJrZXJUeXBlKSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKICAgICAgICAgUmFuZ2UgbWFya2VyUmFuZ2VGb3JOb2RlKGluIE5vZGUgbm9kZSwgaW4gRE9N
U3RyaW5nIG1hcmtlclR5cGUsIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpIHJhaXNlcyhET01FeGNl
cHRpb24pOwogICAgICAgICBET01TdHJpbmcgbWFya2VyRGVzY3JpcHRpb25Gb3JOb2RlKGluIE5v
ZGUgbm9kZSwgaW4gRE9NU3RyaW5nIG1hcmtlclR5cGUsIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgp
IHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIGFkZFRleHRNYXRjaE1hcmtlcihp
biBSYW5nZSByYW5nZSwgaW4gYm9vbGVhbiBpc0FjdGl2ZSk7CiAKICAgICAgICAgdm9pZCBzZXRT
Y3JvbGxWaWV3UG9zaXRpb24oaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGxvbmcgeCwgaW4gbG9u
ZyB5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvc2Nyb2xsYmFyLXRpY2ttYXJrcy1zdHlsZWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvc2Nyb2xsYmFyLXRpY2ttYXJrcy1zdHlsZWQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNmYWYyMmEyZTE4ODI3MTQzODJiMWI0MmMyMzk0ZDQ2YzQ4Mjgx
NTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zY3JvbGxi
YXItdGlja21hcmtzLXN0eWxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorwqAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Njcm9sbGJhci10aWNrbWFya3Mtc3R5
bGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9zY3JvbGxiYXItdGlja21hcmtz
LXN0eWxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0YjNmZTMyZTI0YmQ1NjI3NWE5MWNmNmU4YmJiYTMw
NWE3OGMxMGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9z
Y3JvbGxiYXItdGlja21hcmtzLXN0eWxlZC5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitodG1sIHsKKyAgICBmb250OiBBaGVtIDEwcHg7Cisg
ICAgLXdlYmtpdC1mb250LXNtb290aGluZzogbm9uZTsKK30KKzo6LXdlYmtpdC1zY3JvbGxiYXIg
eworICAgIHdpZHRoOiAxM3B4OworICAgIGhlaWdodDogMTNweDsKK30KKzo6LXdlYmtpdC1zY3Jv
bGxiYXItdHJhY2sgeworICAgIGJhY2tncm91bmQtY29sb3I6Z3JlZW47Cit9Cis6Oi13ZWJraXQt
c2Nyb2xsYmFyLXRodW1iIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTI4LCAxMjgsIDEy
OCwgMC44KTsgIC8qIExldCB0aWNrbWFyayBzaGluZSB0aHJvdWdoICovCit9Cis8L3N0eWxlPgor
PHNjcmlwdD4KK2Z1bmN0aW9uIGhpZ2hsaWdodCgpCit7CisgICAgdmFyIHJhbmdlID0gZG9jdW1l
bnQuY3JlYXRlUmFuZ2UoKTsKKyAgICB2YXIgZWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2VsdCcpOworICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhlbHQpOworICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuYWRkVGV4dE1hdGNoTWFy
a2VyKHJhbmdlLCB0cnVlKTsKKyAgICB9CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0iaGlnaGxpZ2h0KCk7Ij4KKworPGRpdiBzdHlsZT0iaGVpZ2h0OjYwMHB4
Ij48L2Rpdj4KKzxzcGFuIGlkPSJlbHQiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjMw
MHB4Ij4mbmJzcDs8L3NwYW4+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3Njcm9sbGluZy9zY3JvbGxiYXItdGlj
a21hcmtzLXN0eWxlZC1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS1tYWMvZmFzdC9zY3JvbGxpbmcvc2Nyb2xsYmFyLXRpY2ttYXJrcy1zdHlsZWQtZXhwZWN0ZWQu
cG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiZWEyYzAyNmM5Njg4YmY1MzJhNjhlNTA1YTkwNmNhMGVkZjUyOTUK
R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDMzNDUKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlV
eyt2WVYyYT5pMUIlUWxZYnBSem5rQjlnQ0NNNDckPVN1RnhlUGBZCno8YCN5QU0mXm04TnZYLUhX
PTBtTnNWUWtqcldUZS1NI2QmNFhAK3daSVo3Qjljb3V1UUlFR1pyZDMqYUh1Y009Ywp6VGNFI0Fp
KEFQdS1kJEhYSGNJbkdOSWRGI0dVd359TiVoc25tOFRfPSo4cHUlbGw0RlRhI30/RlYqdigraElB
R1YKejI4SWNPSyZMcGtIMkBfZzhKUVJ1UWJxK3cxN3RLWWpBbiQ8bDNeSEBpZk54O0dYcVFofERg
dzF5PTRXS3t2UmdaCnp7a1FlKlRQKzhtQXBoTlU+K2B7YStmTFcheTtsY1RGYmN7Ymk1Pjw8MV9t
UTA3NnloQjlLZD5HUkIkdnZNaWF3bQp6TWk/eV9oREU4VWxpYygxd0tBd3UqZ1IrWSVsdGhKUkJp
bEtHR3JOd1d9VW5nK3lPTH0hUEN7eFd0fiQoNjlCTDcKQiFfNUV5CgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9u
cwppbmRleCAwYWMxMWFiNzg1YTBiNDZmOTBjMzlhNzUwMmRjMzU0ZTY0OWUyNWY3Li5jMTAzZDVm
OWJmMzliYTA1ZmYzMzExMTAzY2M5MmY1OGM2MWYxZWY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM1OTQsNiArMzU5NCw5IEBAIEJV
R1dLOTA3NDMgOiBmYXN0L2V2ZW50cy9kaXNwbGF5LW5vbmUtb24tZm9jdXMtY3Jhc2guaHRtbCA9
IFBBU1MgVEVYVAogLy8gRmxha3kKIEJVR1dLOTA3NDYgOiBmYXN0L211bHRpY29sL2NvbHVtbi1z
cGFuLXBhcmVudC1jb250aW51YXRpb24tY3Jhc2guaHRtbCA9IFBBU1MgVElNRU9VVAogCisvLyBO
ZWVkcyBpbWFnZQorQlVHVEhBS0lTIFdJTiBMSU5VWCA6IGZhc3Qvc2Nyb2xsaW5nL3Njcm9sbGJh
ci10aWNrbWFya3Mtc3R5bGVkLmh0bWwgPSBJTUFHRQorCiAvLyBGbGFreQogQlVHV0s5MDg5NiBX
SU4gREVCVUcgOiBmYXN0L2pzL2RmZy1jcm9zcy1nbG9iYWwtb2JqZWN0LWlubGluZS1uZXctYXJy
YXktbGl0ZXJhbC5odG1sID0gUEFTUyBURVhUCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>