<?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>173450</bug_id>
          
          <creation_ts>2017-06-15 17:39:36 -0700</creation_ts>
          <short_desc>Use WTFLogAlways for debug logging so that it shows up in device system logs</short_desc>
          <delta_ts>2017-07-06 14:13:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1319792</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-15 17:39:36 -0700</bug_when>
    <thetext>Use WTFLogAlways for debug logging so that it shows up in device system logs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319793</commentid>
    <comment_count>1</comment_count>
      <attachid>313034</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-15 17:42:40 -0700</bug_when>
    <thetext>Created attachment 313034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319815</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-15 18:43:42 -0700</bug_when>
    <thetext>https://trac.webkit.org/r218373</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323425</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-27 22:15:48 -0700</bug_when>
    <thetext>With this change, I can&apos;t make use of logging in Mac :( It has gotten way too verbose with all the timestamps and whatnot:

2017-06-27 22:15:37.245124-0700 DumpRenderTree[75864:10337285] BODY	0x11bd42548 (renderer 0x11bd76000)  (child needs style recalc)

BODY	0x11bd42548 (renderer 0x11bd76000)  (child needs style recalc)
2017-06-27 22:15:37.804742-0700 DumpRenderTree[75864:10337285] 	

	
2017-06-27 22:15:38.310601-0700 DumpRenderTree[75864:10337285] #text	0x11bd73410 &quot;\n\n&quot;

#text	0x11bd73410 &quot;\n\n&quot;
2017-06-27 22:15:38.783244-0700 DumpRenderTree[75864:10337285] 	

	
2017-06-27 22:15:39.300787-0700 DumpRenderTree[75864:10337285] INPUT	0x11bd6c380 (renderer 0x11bd1c290)  (needs style recalc) (child needs style recalc)

INPUT	0x11bd6c380 (renderer 0x11bd1c290)  (needs style recalc) (child needs style recalc)
2017-06-27 22:15:39.728353-0700 DumpRenderTree[75864:10337285] 		

		
2017-06-27 22:15:39.931333-0700 DumpRenderTree[75864:10337285] #document-fragment	0x11bdf8398 (renderer 0x0)  (needs style recalc) (child needs style recalc)

#document-fragment	0x11bdf8398 (renderer 0x0)  (needs style recalc) (child needs style recalc)
2017-06-27 22:15:40.099165-0700 DumpRenderTree[75864:10337285] 			

			
2017-06-27 22:15:40.249989-0700 DumpRenderTree[75864:10337285] DIV	0x11bd42618 (renderer 0x11bd0ba20)  (child needs style recalc)

DIV	0x11bd42618 (renderer 0x11bd0ba20)  (child needs style recalc)
2017-06-27 22:15:40.414241-0700 DumpRenderTree[75864:10337285] 				

				
2017-06-27 22:15:40.549323-0700 DumpRenderTree[75864:10337285] DIV	0x11bd426e8 (renderer 0x11bd76120) 

DIV	0x11bd426e8 (renderer 0x11bd76120)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323426</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-27 22:16:46 -0700</bug_when>
    <thetext>Zalan was going to roll this out.

We really need to build the log with TextStream and log it in one go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323430</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-06-27 22:27:07 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #4)
&gt; Zalan was going to roll this out.
&gt; 
&gt; We really need to build the log with TextStream and log it in one go.

Yeah, that would do the trick. I gotta say I really hate all these noisy logs. I wonder if there&apos;s some environmental variable we can set to get rid of the timestamps, etc...?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323570</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-06-28 09:45:20 -0700</bug_when>
    <thetext>Reverted r218373 for reason:

Output is not right

Committed r218879: &lt;http://trac.webkit.org/changeset/218879&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326122</commentid>
    <comment_count>7</comment_count>
      <attachid>314739</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-07-06 11:55:03 -0700</bug_when>
    <thetext>Created attachment 314739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326126</commentid>
    <comment_count>8</comment_count>
      <attachid>314739</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-07-06 12:05:34 -0700</bug_when>
    <thetext>Comment on attachment 314739
Patch

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

&gt; Source/WebCore/rendering/InlineBox.cpp:119
&gt; +    stream &lt;&lt; boxName() &lt;&lt; &quot; &quot; &lt;&lt; FloatRect(x(), y(), width(), height()) &lt;&lt; &quot; (&quot; &lt;&lt; this &lt;&lt; &quot;) renderer-&gt;(&quot; &lt;&lt; &amp;renderer() &lt;&lt; &quot;)&quot;;

I wonder if you should just add a TextStream&amp; operator&lt;&lt;(TextStream&amp;, const InlineBox&amp;) that dumps this.

Does it make sense to add InlineBox::frameRect() or boxRect() that returns the rect?

&gt; Source/WebCore/rendering/RenderObject.cpp:1032
&gt; +    showRenderTreeLegend(stream);
&gt; +    root-&gt;showRenderSubTreeAndMark(stream, this, 1);

The &quot;show&quot; in these names is misleading now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326147</commentid>
    <comment_count>9</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-07-06 13:10:11 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #8)
&gt; Comment on attachment 314739 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=314739&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/InlineBox.cpp:119
&gt; &gt; +    stream &lt;&lt; boxName() &lt;&lt; &quot; &quot; &lt;&lt; FloatRect(x(), y(), width(), height()) &lt;&lt; &quot; (&quot; &lt;&lt; this &lt;&lt; &quot;) renderer-&gt;(&quot; &lt;&lt; &amp;renderer() &lt;&lt; &quot;)&quot;;
&gt; 
&gt; I wonder if you should just add a TextStream&amp; operator&lt;&lt;(TextStream&amp;, const
&gt; InlineBox&amp;) that dumps this.
&gt; 
&gt; Does it make sense to add InlineBox::frameRect() or boxRect() that returns
&gt; the rect?
I am planning to do that as part of the general InlineBox cleanup. 

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderObject.cpp:1032
&gt; &gt; +    showRenderTreeLegend(stream);
&gt; &gt; +    root-&gt;showRenderSubTreeAndMark(stream, this, 1);
&gt; 
&gt; The &quot;show&quot; in these names is misleading now.
ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326172</commentid>
    <comment_count>10</comment_count>
      <attachid>314755</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-07-06 13:56:56 -0700</bug_when>
    <thetext>Created attachment 314755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326177</commentid>
    <comment_count>11</comment_count>
      <attachid>314755</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-06 14:13:27 -0700</bug_when>
    <thetext>Comment on attachment 314755
Patch

Clearing flags on attachment: 314755

Committed r219216: &lt;http://trac.webkit.org/changeset/219216&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326178</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-06 14:13:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313034</attachid>
            <date>2017-06-15 17:42:40 -0700</date>
            <delta_ts>2017-07-06 11:55:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173450-20170615174239.patch</filename>
            <type>text/plain</type>
            <size>63347</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGNlMGI5ZWYyNDc4NWUy
ZjA0M2E4NGU1YjZmNGViNTkyZjUwNjEyNi4uYzE2ZTAxZWIzMTYxNTY1ZDk2OGZhNzZhNGU1MDll
NjdlM2M2ZDI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAxNy0wNi0xNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgV1RGTG9n
QWx3YXlzIGZvciBkZWJ1ZyBsb2dnaW5nIHNvIHRoYXQgaXQgc2hvd3MgdXAgaW4gZGV2aWNlIHN5
c3RlbSBsb2dzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzM0NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJZiB5b3Ugd2FudCB0byBzaG93UmVuZGVyVHJlZSgpIG9uLWRldmljZSwgdGhlIHJlc3VsdCBk
b2Vzbid0IHNob3cgaW4gc3lzdGVtIGxvZyBzbyB5b3UgY2FuJ3Qgc2VlIGl0CisgICAgICAgIFN3
aXRjaCB0byBXVEZMb2dBbHdheXMgdG8gZml4IHRoaXMsIGZvciBhbGwgdGhlIGRlYnVnIGxvZ2dp
bmcgaW4gV2ViQ29yZS4KKyAgICAgICAgCisgICAgICAgIEFsc28gV0tFcnJvciAoKSAtPiBXS0Vy
cm9yKCkgaW4gdGhlIG9sZCBXQUsgY29kZSwgdG8gYWxsb3cgZm9yIGVhc2llciBzZWFyY2hpbmcg
cGVuZGluZyBjbGVhbnVwLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp+QXVkaW9Db250ZXh0KToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb05vZGU6On5BdWRpb05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2Rl
OjpyZWYpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpmaW5pc2hEZXJlZik6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnByaW50Tm9kZUNvdW50cyk6CisgICAgICAgICogYnJp
ZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6aW52b2tl
T2JqY01ldGhvZCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tOgorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydE9iamNWYWx1ZVRvVmFsdWUpOgorICAgICAgICAq
IGNzcy9TdHlsZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0
aWVzOjpzaG93U3R5bGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzaG93TWFya2Vycyk6Cisg
ICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd05vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hvd05vZGVQYXRoRm9yVGhpcyk6CisgICAgICAg
IChXZWJDb3JlOjp0cmF2ZXJzZVRyZWVBbmRNYXJrKToKKyAgICAgICAgKiBkb20vUG9zaXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmRlYnVnUG9zaXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UG9zaXRpb246OnNob3dBbmNob3JUeXBlQW5kT2Zmc2V0KToKKyAgICAgICAg
KiBkb20vUmFuZ2UuY3BwOgorICAgICAgICAoc2hvd1RyZWUpOgorICAgICAgICAqIGVkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmRl
YnVnUmVuZGVyZXIpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbjo6ZGVidWdQb3NpdGlvbik6CisgICAgICAg
ICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpc2li
bGVTZWxlY3Rpb246OmRlYnVnUG9zaXRpb24pOgorICAgICAgICAqIGhpc3RvcnkvSGlzdG9yeUl0
ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OnNob3dUcmVlV2l0aEluZGVu
dCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0OjpzaG93KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVBhdGNoU3VwcG9ydDo6ZHVtcE1hcCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nU3RhdGVUcmVlLmNwcDoKKyAgICAgICAgKHNob3dTY3JvbGxpbmdTdGF0ZVRyZWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25JT1M6OmZyYW1lU2l6ZUNoYW5nZWRQcm9j
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcDoKKyAgICAg
ICAgKHNob3dHcmFwaGljc0xheWVyVHJlZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdDo6ZHVtcCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XQUtW
aWV3Lm1tOgorICAgICAgICAoK1tXQUtWaWV3IF93cmFwcGVyRm9yVmlld1JlZjpdKToKKyAgICAg
ICAgKC1bV0FLVmlldyBkaXNwbGF5UmVjdDpdKToKKyAgICAgICAgKC1bV0FLVmlldyBkaXNwbGF5
UmVjdElnbm9yaW5nT3BhY2l0eTppbkNvbnRleHQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L3dhay9XS1V0aWxpdGllcy5jOgorICAgICAgICAoV0tSZWxlYXNlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3Mvd2FrL1dLVmlldy5tbToKKyAgICAgICAgKF9XS1ZpZXdTZXRWaWV3Q29udGV4dCk6
CisgICAgICAgIChXS1ZpZXdHZXRCb3VuZHMpOgorICAgICAgICAoV0tWaWV3R2V0RnJhbWUpOgor
ICAgICAgICAoX1dLVmlld1JlY3Vyc2l2ZWx5SW52YWxpZGF0ZUdTdGF0ZSk6CisgICAgICAgIChX
S1ZpZXdTZXRGcmFtZU9yaWdpbik6CisgICAgICAgIChXS1ZpZXdTZXRGcmFtZVNpemUpOgorICAg
ICAgICAoV0tWaWV3R2V0V2luZG93KToKKyAgICAgICAgKFdLVmlld0dldFN1YnZpZXdzKToKKyAg
ICAgICAgKFdLVmlld0FkZFN1YnZpZXcpOgorICAgICAgICAoV0tWaWV3UmVtb3ZlRnJvbVN1cGVy
dmlldyk6CisgICAgICAgIChXS1ZpZXdGaXJzdENoaWxkKToKKyAgICAgICAgKFdLVmlld05leHRT
aWJsaW5nKToKKyAgICAgICAgKFdLVmlld1RyYXZlcnNlTmV4dCk6CisgICAgICAgIChXS1ZpZXdH
ZXRWaXNpYmxlUmVjdCk6CisgICAgICAgIChXS1ZpZXdDb252ZXJ0UmVjdFRvU3VwZXJ2aWV3KToK
KyAgICAgICAgKFdLVmlld0NvbnZlcnRSZWN0VG9CYXNlKToKKyAgICAgICAgKFdLVmlld0NvbnZl
cnRQb2ludFRvU3VwZXJ2aWV3KToKKyAgICAgICAgKFdLVmlld0NvbnZlcnRQb2ludEZyb21TdXBl
cnZpZXcpOgorICAgICAgICAoV0tWaWV3Q29udmVydFBvaW50VG9CYXNlKToKKyAgICAgICAgKF9X
S1ZpZXdHZXRBbmNlc3RvclZpZXdzSW5jbHVkaW5nVmlldyk6CisgICAgICAgIChXS1ZpZXdDb252
ZXJ0UG9pbnRGcm9tQmFzZSk6CisgICAgICAgIChXS1ZpZXdDb252ZXJ0UmVjdEZyb21TdXBlcnZp
ZXcpOgorICAgICAgICAoV0tWaWV3Q29udmVydFJlY3RGcm9tQmFzZSk6CisgICAgICAgIChXS1Zp
ZXdHZXRBdXRvcmVzaXppbmdNYXNrKToKKyAgICAgICAgKFdLVmlld1NldEF1dG9yZXNpemluZ01h
c2spOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZHVtcFRleHRFbmNvZGluZ05hbWVNYXApOgorICAgICAgICAqIHJl
bmRlcmluZy9Db3VudGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG93VHJlZUFuZE1h
cmspOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lQm94OjpzaG93TGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6c2hvd0xpbmVCb3gp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAgKHNob3dD
b3VudGVyUmVuZGVyZXJUcmVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2hvd0xheWVyVHJlZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG93UmVuZGVyVHJlZUxlZ2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNob3dSZWdpb25zSW5mb3JtYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzaG93UmVuZGVyT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OnByaW50UmVuZGVyVHJlZUZvckxpdmVEb2N1bWVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6cHJpbnRMYXllclRyZWVGb3JMaXZlRG9jdW1lbnRzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwcmludFByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpzaG93TGluZUxheW91dEZvckZsb3cpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNl
czo6ZHVtcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDeWNsZVNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXNDeWNsZVNvbHZlcjo6cmVzb2x2
ZUN5Y2xlcyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRl
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkdW1wU1ZHQ2hhcmFjdGVyRGF0YU1hcFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzOjpkdW1wKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZHVtcFRleHRCb3hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0RW5n
aW5lOjpmaW5pc2hMYXlvdXQpOgorCiAyMDE3LTA2LTA4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBFeHBhbmQgc3lzdGVtLXVpIHRv
IGluY2x1ZGUgZXZlcnkgaXRlbSBpbiB0aGUgQ29yZSBUZXh0IGNhc2NhZGUgbGlzdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDY0
NzI3ZDVhMDUzYzYxOTM1NGRlODY5YjU3NTIzZjczODAyMmUzNTUuLjBjMDQzYTc3YjM0Y2Q1ZmY2
ZDY1ODhlMmU4N2NkOTMyZDYwZjE3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIEF1ZGlv
Q29udGV4dDo6Y29uc3RydWN0Q29tbW9uKCkKIEF1ZGlvQ29udGV4dDo6fkF1ZGlvQ29udGV4dCgp
CiB7CiAjaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKLSAgICBmcHJpbnRmKHN0ZGVyciwg
IiVwOiBBdWRpb0NvbnRleHQ6On5BdWRpb0NvbnRleHQoKVxuIiwgdGhpcyk7CisgICAgV1RGTG9n
QWx3YXlzKCIlcDogQXVkaW9Db250ZXh0Ojp+QXVkaW9Db250ZXh0KClcbiIsIHRoaXMpOwogI2Vu
ZGlmCiAgICAgQVNTRVJUKCFtX2lzSW5pdGlhbGl6ZWQpOwogICAgIEFTU0VSVChtX2lzU3RvcFNj
aGVkdWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5j
cHAKaW5kZXggZGE1OWViMWUyOTA5NDZiMWM4MjZhOThlMjMzMjdiNGNjYWRhNzA1ZC4uZGE4Zjcw
YjVhNGQ1NDBlMTcxMWVjZmU5MTc1YWVhN2I1MWEzNGQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcApAQCAtNzAsNyArNzAsNyBAQCBBdWRpb05v
ZGU6On5BdWRpb05vZGUoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAjaWYgREVCVUdf
QVVESU9OT0RFX1JFRkVSRU5DRVMKICAgICAtLXNfbm9kZUNvdW50W25vZGVUeXBlKCldOwotICAg
IGZwcmludGYoc3RkZXJyLCAiJXA6ICVkOiBBdWRpb05vZGU6On5BdWRpb05vZGUoKSAlZCAlZFxu
IiwgdGhpcywgbm9kZVR5cGUoKSwgbV9ub3JtYWxSZWZDb3VudC5sb2FkKCksIG1fY29ubmVjdGlv
blJlZkNvdW50KTsKKyAgICBXVEZMb2dBbHdheXMoIiVwOiAlZDogQXVkaW9Ob2RlOjp+QXVkaW9O
b2RlKCkgJWQgJWRcbiIsIHRoaXMsIG5vZGVUeXBlKCksIG1fbm9ybWFsUmVmQ291bnQubG9hZCgp
LCBtX2Nvbm5lY3Rpb25SZWZDb3VudCk7CiAjZW5kaWYKIH0KIApAQCAtNDA0LDcgKzQwNCw3IEBA
IHZvaWQgQXVkaW9Ob2RlOjpyZWYoUmVmVHlwZSByZWZUeXBlKQogICAgIH0KIAogI2lmIERFQlVH
X0FVRElPTk9ERV9SRUZFUkVOQ0VTCi0gICAgZnByaW50ZihzdGRlcnIsICIlcDogJWQ6IEF1ZGlv
Tm9kZTo6cmVmKCVkKSAlZCAlZFxuIiwgdGhpcywgbm9kZVR5cGUoKSwgcmVmVHlwZSwgbV9ub3Jt
YWxSZWZDb3VudCwgbV9jb25uZWN0aW9uUmVmQ291bnQpOworICAgIFdURkxvZ0Fsd2F5cygiJXA6
ICVkOiBBdWRpb05vZGU6OnJlZiglZCkgJWQgJWRcbiIsIHRoaXMsIG5vZGVUeXBlKCksIHJlZlR5
cGUsIG1fbm9ybWFsUmVmQ291bnQsIG1fY29ubmVjdGlvblJlZkNvdW50KTsKICNlbmRpZgogCiAg
ICAgLy8gU2VlIHRoZSBkaXNhYmxpbmcgY29kZSBpbiBmaW5pc2hEZXJlZigpIGJlbG93LiBUaGlz
IGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgYSBub2RlCkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBB
dWRpb05vZGU6OmZpbmlzaERlcmVmKFJlZlR5cGUgcmVmVHlwZSkKICAgICB9CiAgICAgCiAjaWYg
REVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiAlZDog
QXVkaW9Ob2RlOjpkZXJlZiglZCkgJWQgJWRcbiIsIHRoaXMsIG5vZGVUeXBlKCksIHJlZlR5cGUs
IG1fbm9ybWFsUmVmQ291bnQsIG1fY29ubmVjdGlvblJlZkNvdW50KTsKKyAgICBXVEZMb2dBbHdh
eXMoIiVwOiAlZDogQXVkaW9Ob2RlOjpkZXJlZiglZCkgJWQgJWRcbiIsIHRoaXMsIG5vZGVUeXBl
KCksIHJlZlR5cGUsIG1fbm9ybWFsUmVmQ291bnQsIG1fY29ubmVjdGlvblJlZkNvdW50KTsKICNl
bmRpZgogCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb25SZWZDb3VudCkgewpAQCAtNDkzLDE1ICs0OTMs
MTUgQEAgaW50IEF1ZGlvTm9kZTo6c19ub2RlQ291bnRbTm9kZVR5cGVFbmRdOwogCiB2b2lkIEF1
ZGlvTm9kZTo6cHJpbnROb2RlQ291bnRzKCkKIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlxuXG4i
KTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIj09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7
Ci0gICAgZnByaW50ZihzdGRlcnIsICJBdWRpb05vZGU6IHJlZmVyZW5jZSBjb3VudHNcbiIpOwot
ICAgIGZwcmludGYoc3RkZXJyLCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKyAg
ICBXVEZMb2dBbHdheXMoIlxuXG4iKTsKKyAgICBXVEZMb2dBbHdheXMoIj09PT09PT09PT09PT09
PT09PT09PT09PT09PVxuIik7CisgICAgV1RGTG9nQWx3YXlzKCJBdWRpb05vZGU6IHJlZmVyZW5j
ZSBjb3VudHNcbiIpOworICAgIFdURkxvZ0Fsd2F5cygiPT09PT09PT09PT09PT09PT09PT09PT09
PT09XG4iKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOb2RlVHlwZUVuZDsgKytp
KQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVkOiAlZFxuIiwgaSwgc19ub2RlQ291bnRbaV0p
OworICAgICAgICBXVEZMb2dBbHdheXMoIiVkOiAlZFxuIiwgaSwgc19ub2RlQ291bnRbaV0pOwog
Ci0gICAgZnByaW50ZihzdGRlcnIsICI9PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4i
KTsKKyAgICBXVEZMb2dBbHdheXMoIj09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5cbiIp
OwogfQogCiAjZW5kaWYgLy8gREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCmluZGV4IDc4MGMyMzVhYzVlZWEzYzc2
OTFlMDQ0ZDQ5OGMyNzkzNTcxOWY3MDQuLjE2NGI2OTQxNjY5ZGYyMGNjMWIxM2I3MGVlNDM5YjU1
MjNmMDM4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5z
dGFuY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5t
bQpAQCAtNDEsMTUgKzQxLDYgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lt
cG9ydCA8d3RmL1RocmVhZFNwZWNpZmljLmg+CiAKLSNpZmRlZiBOREVCVUcKLSNkZWZpbmUgT0JK
Q19MT0coZm9ybWF0QW5kQXJncy4uLikgKCh2b2lkKTApCi0jZWxzZQotI2RlZmluZSBPQkpDX0xP
Ryhmb3JtYXRBbmRBcmdzLi4uKSB7IFwKLSAgICBmcHJpbnRmIChzdGRlcnIsICIlczolZCAtLSAl
czogICIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19GVU5DVElPTl9fKTsgXAotICAgIGZwcmludGYo
c3RkZXJyLCBmb3JtYXRBbmRBcmdzKTsgXAotfQotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBK
U0M6OkJpbmRpbmdzOwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtMzAyLDcgKzI5Myw3IEBA
IEB0cnkgewogICAgICAgICAgICAgICAgICAgICAvLyBTaG91bGQgbmV2ZXIgZ2V0IGhlcmUuICBB
cmd1bWVudCB0eXBlcyBhcmUgZmlsdGVyZWQgKGFuZAogICAgICAgICAgICAgICAgICAgICAvLyB0
aGUgYXNzZXJ0IGFib3ZlIHNob3VsZCBoYXZlIGZpcmVkIGluIHRoZSBpbXBvc3NpYmxlIGNhc2UK
ICAgICAgICAgICAgICAgICAgICAgLy8gb2YgYW4gaW52YWxpZCB0eXBlIGFueXdheSkuCi0gICAg
ICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGludmFsaWQgdHlwZSAoJWQpXG4i
LCBfX1BSRVRUWV9GVU5DVElPTl9fLCAoaW50KW9iamNWYWx1ZVR5cGUpOworICAgICAgICAgICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBpbnZhbGlkIHR5cGUgKCVkKVxuIiwgX19QUkVUVFlf
RlVOQ1RJT05fXywgKGludClvYmpjVmFsdWVUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbSBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQppbmRleCA4N2Y2ZGJlNmU0Zjg0MDAxYjg4
ZThmZjM4Y2JiNjZlYjg0NzI0N2YwLi5mODk5ZmJjYjQ5ODkwYTBhZjI5NDQxMmI3NGMxMDllYTU4
OGJhODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxp
dHkubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCkBA
IC0yMjksNyArMjI5LDcgQEAgSlNWYWx1ZSBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZShFeGVjU3Rh
dGUqIGV4ZWMsIHZvaWQqIGJ1ZmZlciwgT2JqY1ZhbHVlVHlwZSB0eXAKICAgICAgICAgICAgIHJl
dHVybiBqc051bWJlcigqKGRvdWJsZSopYnVmZmVyKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIC8vIFNob3VsZCBuZXZlciBnZXQgaGVyZS4gQXJndW1lbnQgdHlwZXMgYXJlIGZpbHRl
cmVkLgotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogaW52YWxpZCB0eXBlICglZClc
biIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIChpbnQpdHlwZSk7CisgICAgICAgICAgICBXVEZMb2dB
bHdheXMoIiVzOiBpbnZhbGlkIHR5cGUgKCVkKVxuIiwgX19QUkVUVFlfRlVOQ1RJT05fXywgKGlu
dCl0eXBlKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKaW5kZXggNjJkZDQ4YzBjZjFiMzIy
OTZjZWU2NmU1ZWM0OWZmZDNkNzNiYzhlMS4uODEwNWY2YjEyYzM4NDQ1ODVkNzRmYWNkNWI4ODcy
YTE5YWZhZjY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKQEAgLTEz
NjMsNyArMTM2Myw3IEBAIENPTVBJTEVfQVNTRVJUKHNpemVvZihTdHlsZVByb3BlcnRpZXMpID09
IHNpemVvZihTYW1lU2l6ZUFzU3R5bGVQcm9wZXJ0aWVzKSwgc3R5CiAjaWZuZGVmIE5ERUJVRwog
dm9pZCBTdHlsZVByb3BlcnRpZXM6OnNob3dTdHlsZSgpCiB7Ci0gICAgZnByaW50ZihzdGRlcnIs
ICIlc1xuIiwgYXNUZXh0KCkuYXNjaWkoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiJXNc
biIsIGFzVGV4dCgpLmFzY2lpKCkuZGF0YSgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IDE2NWExZDIzNWE4
YmU3MTkwNDNmMDgxMDRlMDkyNjNlN2EyMzcyYTEuLmRjY2M1YmQ2N2IxMDg0YTdlYTZmNzk3MGQw
ZDM3NzkwM2QyNDFhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuY3BwCkBAIC04MTgsMTQgKzgxOCwxNCBAQCB2b2lkIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjo6Y2xlYXJEZXNjcmlwdGlvbk9uTWFya2Vyc0ludGVyc2VjdGluZ1JhbmdlKFJh
bmdlJgogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjpzaG93TWFya2VycygpIGNvbnN0CiB7Ci0gICAgZnByaW50ZihzdGRlcnIsICIlZCBu
b2RlcyBoYXZlIG1hcmtlcnM6XG4iLCBtX21hcmtlcnMuc2l6ZSgpKTsKKyAgICBXVEZMb2dBbHdh
eXMoIiVkIG5vZGVzIGhhdmUgbWFya2VyczpcbiIsIG1fbWFya2Vycy5zaXplKCkpOwogICAgIGZv
ciAoYXV0byYgbWFya2VyIDogbV9tYXJrZXJzKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtYXJr
ZXIua2V5LmdldCgpOwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwIiwgbm9kZSk7CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiJXAiLCBub2RlKTsKICAgICAgICAgZm9yIChhdXRvJiBkb2N1bWVu
dE1hcmtlciA6ICptYXJrZXIudmFsdWUpCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAl
ZDpbJWQ6JWRdKCVkKSIsIGRvY3VtZW50TWFya2VyLnR5cGUoKSwgZG9jdW1lbnRNYXJrZXIuc3Rh
cnRPZmZzZXQoKSwgZG9jdW1lbnRNYXJrZXIuZW5kT2Zmc2V0KCksIGRvY3VtZW50TWFya2VyLmlz
QWN0aXZlTWF0Y2goKSk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiAlZDpbJWQ6JWRdKCVk
KSIsIGRvY3VtZW50TWFya2VyLnR5cGUoKSwgZG9jdW1lbnRNYXJrZXIuc3RhcnRPZmZzZXQoKSwg
ZG9jdW1lbnRNYXJrZXIuZW5kT2Zmc2V0KCksIGRvY3VtZW50TWFya2VyLmlzQWN0aXZlTWF0Y2go
KSk7CiAKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJcbiIpOworICAgICAgICBXVEZMb2dBbHdh
eXMoIlxuIik7CiAgICAgfQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMTAzZTQ3YWRl
Y2RhNDY0ZGEyZDUwOWExNTRkYmVlMTVlNjVjYWVlNS4uMjhhNWFkNDhiOGU0MmI1YjIzYjRlOTlm
NDBmNmExOGYzMTAyMTk5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTcyOSwxMiArMTcyOSwxMiBA
QCB2b2lkIE5vZGU6OnNob3dOb2RlKGNvbnN0IGNoYXIqIHByZWZpeCkgY29uc3QKICAgICAgICAg
U3RyaW5nIHZhbHVlID0gbm9kZVZhbHVlKCk7CiAgICAgICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0
ZXJhbCgnXFwnLCAiXFxcXCIpOwogICAgICAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVyYWwoJ1xu
JywgIlxcbiIpOwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzJXNcdCVwIFwiJXNcIlxuIiwg
cHJlZml4LCBub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCksIHRoaXMsIHZhbHVlLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIiVzJXNcdCVwIFwiJXNcIlxuIiwgcHJlZml4LCBu
b2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCksIHRoaXMsIHZhbHVlLnV0ZjgoKS5kYXRhKCkpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYXR0cnM7CiAgICAgICAgIGFwcGVuZEF0
dHJpYnV0ZURlc2ModGhpcywgYXR0cnMsIGNsYXNzQXR0ciwgIiBDTEFTUz0iKTsKICAgICAgICAg
YXBwZW5kQXR0cmlidXRlRGVzYyh0aGlzLCBhdHRycywgc3R5bGVBdHRyLCAiIFNUWUxFPSIpOwot
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzJXNcdCVwIChyZW5kZXJlciAlcCkgJXMlcyVzXG4i
LCBwcmVmaXgsIG5vZGVOYW1lKCkudXRmOCgpLmRhdGEoKSwgdGhpcywgcmVuZGVyZXIoKSwgYXR0
cnMudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBuZWVkc1N0eWxlUmVjYWxjKCkgPyAiIChuZWVk
cyBzdHlsZSByZWNhbGMpIiA6ICIiLCBjaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSA/ICIgKGNoaWxk
IG5lZWRzIHN0eWxlIHJlY2FsYykiIDogIiIpOworICAgICAgICBXVEZMb2dBbHdheXMoIiVzJXNc
dCVwIChyZW5kZXJlciAlcCkgJXMlcyVzXG4iLCBwcmVmaXgsIG5vZGVOYW1lKCkudXRmOCgpLmRh
dGEoKSwgdGhpcywgcmVuZGVyZXIoKSwgYXR0cnMudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBu
ZWVkc1N0eWxlUmVjYWxjKCkgPyAiIChuZWVkcyBzdHlsZSByZWNhbGMpIiA6ICIiLCBjaGlsZE5l
ZWRzU3R5bGVSZWNhbGMoKSA/ICIgKGNoaWxkIG5lZWRzIHN0eWxlIHJlY2FsYykiIDogIiIpOwog
ICAgIH0KIH0KIApAQCAtMTc1NywxMyArMTc1NywxMyBAQCB2b2lkIE5vZGU6OnNob3dOb2RlUGF0
aEZvclRoaXMoKSBjb25zdAogICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKICAgICAgICAgICAg
IGZvciAoY29uc3QgU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IGRvd25jYXN0PFNoYWRvd1Jvb3Q+
KG5vZGUpOyBzaGFkb3dSb290ICYmIHNoYWRvd1Jvb3QgIT0gbm9kZTsgc2hhZG93Um9vdCA9IHNo
YWRvd1Jvb3QtPnNoYWRvd1Jvb3QoKSkKICAgICAgICAgICAgICAgICArK2NvdW50OwotICAgICAg
ICAgICAgZnByaW50ZihzdGRlcnIsICIvI3NoYWRvdy1yb290WyVkXSIsIGNvdW50KTsKKyAgICAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiLyNzaGFkb3ctcm9vdFslZF0iLCBjb3VudCk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAobm9kZS0+bm9kZVR5
cGUoKSkgewogICAgICAgICBjYXNlIEVMRU1FTlRfTk9ERTogewotICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICIvJXMiLCBub2RlLT5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCIvJXMiLCBub2RlLT5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCkp
OwogCiAgICAgICAgICAgICBjb25zdCBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVu
dD4oKm5vZGUpOwogICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZGF0dHIgPSBlbGVt
ZW50LmdldElkQXR0cmlidXRlKCk7CkBAIC0xNzc0LDM5ICsxNzc0LDM5IEBAIHZvaWQgTm9kZTo6
c2hvd05vZGVQYXRoRm9yVGhpcygpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2
aW91cy0+bm9kZU5hbWUoKSA9PSBub2RlLT5ub2RlTmFtZSgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgKytjb3VudDsKICAgICAgICAgICAgICAgICBpZiAoaGFzSWRBdHRyKQotICAgICAgICAg
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIltAaWQ9XCIlc1wiIGFuZCBwb3NpdGlvbigpPSVk
XSIsIGlkYXR0ci5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBjb3VudCk7CisgICAgICAgICAgICAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiW0BpZD1cIiVzXCIgYW5kIHBvc2l0aW9uKCk9JWRdIiwgaWRh
dHRyLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGNvdW50KTsKICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiWyVkXSIsIGNvdW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJbJWRdIiwgY291bnQpOwogICAgICAgICAg
ICAgfSBlbHNlIGlmIChoYXNJZEF0dHIpCi0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJbQGlkPVwiJXNcIl0iLCBpZGF0dHIuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJbQGlkPVwiJXNcIl0iLCBpZGF0dHIuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IFRFWFRfTk9ERToKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiL3RleHQoKSIpOworICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCIvdGV4dCgpIik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBBVFRSSUJVVEVfTk9ERToKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
L0AlcyIsIG5vZGUtPm5vZGVOYW1lKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBXVEZM
b2dBbHdheXMoIi9AJXMiLCBub2RlLT5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KLSAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CisgICAgV1RGTG9nQWx3YXlz
KCJcbiIpOwogfQogCiBzdGF0aWMgdm9pZCB0cmF2ZXJzZVRyZWVBbmRNYXJrKGNvbnN0IFN0cmlu
ZyYgYmFzZUluZGVudCwgY29uc3QgTm9kZSogcm9vdE5vZGUsIGNvbnN0IE5vZGUqIG1hcmtlZE5v
ZGUxLCBjb25zdCBjaGFyKiBtYXJrZWRMYWJlbDEsIGNvbnN0IE5vZGUqIG1hcmtlZE5vZGUyLCBj
b25zdCBjaGFyKiBtYXJrZWRMYWJlbDIpCiB7CiAgICAgZm9yIChjb25zdCBOb2RlKiBub2RlID0g
cm9vdE5vZGU7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlKSkgewogICAg
ICAgICBpZiAobm9kZSA9PSBtYXJrZWROb2RlMSkKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiJXMiLCBtYXJrZWRMYWJlbDEpOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIlcyIsIG1h
cmtlZExhYmVsMSk7CiAgICAgICAgIGlmIChub2RlID09IG1hcmtlZE5vZGUyKQotICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICIlcyIsIG1hcmtlZExhYmVsMik7CisgICAgICAgICAgICBXVEZM
b2dBbHdheXMoIiVzIiwgbWFya2VkTGFiZWwyKTsKIAogICAgICAgICBTdHJpbmdCdWlsZGVyIGlu
ZGVudDsKICAgICAgICAgaW5kZW50LmFwcGVuZChiYXNlSW5kZW50KTsKICAgICAgICAgZm9yIChj
b25zdCBOb2RlKiB0bXBOb2RlID0gbm9kZTsgdG1wTm9kZSAmJiB0bXBOb2RlICE9IHJvb3ROb2Rl
OyB0bXBOb2RlID0gdG1wTm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKQogICAgICAgICAg
ICAgaW5kZW50LmFwcGVuZCgnXHQnKTsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyIsIGlu
ZGVudC50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIiVz
IiwgaW5kZW50LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIG5vZGUtPnNob3dO
b2RlKCk7CiAgICAgICAgIGluZGVudC5hcHBlbmQoJ1x0Jyk7CiAgICAgICAgIGlmICghbm9kZS0+
aXNTaGFkb3dSb290KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IGI2ZjU1NzViYWI2
YTViODVlZWVkNWE1OGFiZmM1OGY0OTdjMGRjYmMuLmExNGM4YmUxYTQwYzQzMTVkZTEwMTAwZGZi
ZjA3NDhjM2ZlMjgyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMTM5OCw5ICsxMzk4
LDkgQEAgVGV4dERpcmVjdGlvbiBQb3NpdGlvbjo6cHJpbWFyeURpcmVjdGlvbigpIGNvbnN0CiB2
b2lkIFBvc2l0aW9uOjpkZWJ1Z1Bvc2l0aW9uKGNvbnN0IGNoYXIqIG1zZykgY29uc3QKIHsKICAg
ICBpZiAoaXNOdWxsKCkpCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiUG9zaXRpb24gWyVzXTog
bnVsbFxuIiwgbXNnKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJQb3NpdGlvbiBbJXNdOiBudWxs
XG4iLCBtc2cpOwogICAgIGVsc2UKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJQb3NpdGlvbiBb
JXNdOiAlcyBbJXBdIGF0ICVkXG4iLCBtc2csIGRlcHJlY2F0ZWROb2RlKCktPm5vZGVOYW1lKCku
dXRmOCgpLmRhdGEoKSwgZGVwcmVjYXRlZE5vZGUoKSwgbV9vZmZzZXQpOworICAgICAgICBXVEZM
b2dBbHdheXMoIlBvc2l0aW9uIFslc106ICVzIFslcF0gYXQgJWRcbiIsIG1zZywgZGVwcmVjYXRl
ZE5vZGUoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpLCBkZXByZWNhdGVkTm9kZSgpLCBtX29m
ZnNldCk7CiB9CiAKIHZvaWQgUG9zaXRpb246OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZl
ciwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdApAQCAtMTQ0Miw3ICsxNDQyLDcgQEAgdm9pZCBQb3Np
dGlvbjo6c2hvd0FuY2hvclR5cGVBbmRPZmZzZXQoKSBjb25zdAogICAgICAgICBmcHV0cygiYWZ0
ZXIiLCBzdGRlcnIpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgZnByaW50ZihzdGRlcnIs
ICIsIG9mZnNldDolZFxuIiwgbV9vZmZzZXQpOworICAgIFdURkxvZ0Fsd2F5cygiLCBvZmZzZXQ6
JWRcbiIsIG1fb2Zmc2V0KTsKIH0KIAogdm9pZCBQb3NpdGlvbjo6c2hvd1RyZWVGb3JUaGlzKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDhlOTU1NjUwZGE1YTJmYWIyMGY3OTg2MzE3ODFj
ZjE0YmE0OWRlNzQuLjQwZGY0YWM2YWE3YmEwNzY1ZWYzZWEyMWM3ZTRlMjM1MzIyMTVhOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1JhbmdlLmNwcApAQCAtMTgzNyw3ICsxODM3LDcgQEAgdm9pZCBzaG93VHJlZShjb25z
dCBXZWJDb3JlOjpSYW5nZSogcmFuZ2UpCiB7CiAgICAgaWYgKHJhbmdlICYmIHJhbmdlLT5ib3Vu
ZGFyeVBvaW50c1ZhbGlkKCkpIHsKICAgICAgICAgcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkuc2hv
d1RyZWVBbmRNYXJrKCZyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgIlMiLCAmcmFuZ2UtPmVuZENv
bnRhaW5lcigpLCAiRSIpOwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInN0YXJ0IG9mZnNldDog
JWQsIGVuZCBvZmZzZXQ6ICVkXG4iLCByYW5nZS0+c3RhcnRPZmZzZXQoKSwgcmFuZ2UtPmVuZE9m
ZnNldCgpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJzdGFydCBvZmZzZXQ6ICVkLCBlbmQgb2Zm
c2V0OiAlZFxuIiwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCksIHJhbmdlLT5lbmRPZmZzZXQoKSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4
IGJkOTJiNDNiMzU0MGFkMjk4ZGIwZTZjMjU5ODVhMTg5NzBmNjJjYmYuLjdhYTEyMjEyYjJiMmJk
YzMwZjRkNDZkMDU2NWM1ZjQyNDQzODYzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uY3BwCkBAIC0xNzUzLDExICsxNzUzLDExIEBAIHZvaWQgRnJhbWVTZWxlY3Rp
b246OmRlYnVnUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgYm9vbCBzZWxlY3RlZCkg
Y29uc3QKIHsKICAgICBpZiAoaXM8RWxlbWVudD4oKnJlbmRlcmVyLT5ub2RlKCkpKSB7CiAgICAg
ICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxFbGVtZW50PigqcmVuZGVyZXItPm5vZGUo
KSk7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMlc1xuIiwgc2VsZWN0ZWQgPyAiPT0+ICIg
OiAiICAgICIsIGVsZW1lbnQubG9jYWxOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiJXMlc1xuIiwgc2VsZWN0ZWQgPyAiPT0+ICIgOiAiICAgICIs
IGVsZW1lbnQubG9jYWxOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfSBlbHNl
IGlmIChpczxSZW5kZXJUZXh0PigqcmVuZGVyZXIpKSB7CiAgICAgICAgIFJlbmRlclRleHQmIHRl
eHRSZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclRleHQ+KCpyZW5kZXJlcik7CiAgICAgICAgIGlm
ICghdGV4dFJlbmRlcmVyLnRleHRMZW5ndGgoKSB8fCAhdGV4dFJlbmRlcmVyLmZpcnN0VGV4dEJv
eCgpKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzI3RleHQgKGVtcHR5KVxuIiwg
c2VsZWN0ZWQgPyAiPT0+ICIgOiAiICAgICIpOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIl
cyN0ZXh0IChlbXB0eSlcbiIsIHNlbGVjdGVkID8gIj09PiAiIDogIiAgICAiKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTE3OTksMTcgKzE3OTksMTcgQEAg
dm9pZCBGcmFtZVNlbGVjdGlvbjo6ZGVidWdSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBib29sIHNlbGVjdGVkKSBjb25zdAogICAgICAgICAgICAgCiAgICAgICAgICAgICBzaG93LnJl
cGxhY2UoJ1xuJywgJyAnKTsKICAgICAgICAgICAgIHNob3cucmVwbGFjZSgnXHInLCAnICcpOwot
ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICI9PT4gI3RleHQgOiBcIiVzXCIgYXQgb2Zmc2V0
ICVkXG4iLCBzaG93LnV0ZjgoKS5kYXRhKCksIHBvcyk7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIiAgICAgICAgICAgIik7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIj09PiAjdGV4
dCA6IFwiJXNcIiBhdCBvZmZzZXQgJWRcbiIsIHNob3cudXRmOCgpLmRhdGEoKSwgcG9zKTsKKyAg
ICAgICAgICAgIFdURkxvZ0Fsd2F5cygiICAgICAgICAgICAiKTsKICAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgY2FyZXQ7IGkrKykKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiAiKTsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXlxuIik7CisgICAgICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCIgIik7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIl5cbiIp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKChpbnQpdGV4dC5sZW5ndGgoKSA+
IG1heCkKICAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5sZWZ0KG1heCAtIDMpICsgIi4uLiI7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdGV4dCA9IHRleHQubGVmdChtYXgp
OwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICAgI3RleHQgOiBcIiVzXCJcbiIsIHRl
eHQudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiAgICAjdGV4dCA6
IFwiJXNcIlxuIiwgdGV4dC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCA2MmE1ODMzZjU1
NGEyMjQ5YmMxNWYwMzQxZDE5MTZmNDkyYTY4ZDNjLi5mYmU1MmVjMTA2NGE4YWJmNTg5ZmQyNGUx
N2JhYWFjNDc5ZGVlYjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRp
b24uY3BwCkBAIC02ODksOSArNjg5LDkgQEAgaW50IFZpc2libGVQb3NpdGlvbjo6bGluZURpcmVj
dGlvblBvaW50Rm9yQmxvY2tEaXJlY3Rpb25OYXZpZ2F0aW9uKCkgY29uc3QKIHZvaWQgVmlzaWJs
ZVBvc2l0aW9uOjpkZWJ1Z1Bvc2l0aW9uKGNvbnN0IGNoYXIqIG1zZykgY29uc3QKIHsKICAgICBp
ZiAoaXNOdWxsKCkpCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiUG9zaXRpb24gWyVzXTogbnVs
bFxuIiwgbXNnKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJQb3NpdGlvbiBbJXNdOiBudWxsXG4i
LCBtc2cpOwogICAgIGVsc2UgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlBvc2l0aW9uIFsl
c106ICVzLCAiLCBtc2csIG1fZGVlcFBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCktPm5vZGVOYW1l
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiUG9zaXRpb24gWyVzXTog
JXMsICIsIG1zZywgbV9kZWVwUG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKS0+bm9kZU5hbWUoKS51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9kZWVwUG9zaXRpb24uc2hvd0FuY2hvclR5cGVBbmRP
ZmZzZXQoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0
aW9uLmNwcAppbmRleCA1OTAxZWYzNDMzMWJjMTMzN2NiZjExMjNiYjc4Mjk4YTU0N2Y1MWFhLi4z
MjQ4YWIxMzk3NTRkOTNmZDZhOThjOTUzMTMxNGY3ZjdlYWQ5N2M1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKQEAgLTY3MSwyMSArNjcxLDIxIEBAIGJv
b2wgVmlzaWJsZVNlbGVjdGlvbjo6aXNJblBhc3N3b3JkRmllbGQoKSBjb25zdAogCiB2b2lkIFZp
c2libGVTZWxlY3Rpb246OmRlYnVnUG9zaXRpb24oKSBjb25zdAogewotICAgIGZwcmludGYoc3Rk
ZXJyLCAiVmlzaWJsZVNlbGVjdGlvbiA9PT09PT09PT09PT09PT1cbiIpOworICAgIFdURkxvZ0Fs
d2F5cygiVmlzaWJsZVNlbGVjdGlvbiA9PT09PT09PT09PT09PT1cbiIpOwogCiAgICAgaWYgKCFt
X3N0YXJ0LmFuY2hvck5vZGUoKSkKICAgICAgICAgZnB1dHMoInBvczogICBudWxsIiwgc3RkZXJy
KTsKICAgICBlbHNlIGlmIChtX3N0YXJ0ID09IG1fZW5kKSB7Ci0gICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAicG9zOiAgICVzICIsIG1fc3RhcnQuYW5jaG9yTm9kZSgpLT5ub2RlTmFtZSgpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBXVEZMb2dBbHdheXMoInBvczogICAlcyAiLCBtX3N0YXJ0LmFu
Y2hvck5vZGUoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9zdGFydC5z
aG93QW5jaG9yVHlwZUFuZE9mZnNldCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGZwcmludGYo
c3RkZXJyLCAic3RhcnQ6ICVzICIsIG1fc3RhcnQuYW5jaG9yTm9kZSgpLT5ub2RlTmFtZSgpLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICBXVEZMb2dBbHdheXMoInN0YXJ0OiAlcyAiLCBtX3N0YXJ0
LmFuY2hvck5vZGUoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9zdGFy
dC5zaG93QW5jaG9yVHlwZUFuZE9mZnNldCgpOwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImVu
ZDogICAlcyAiLCBtX2VuZC5hbmNob3JOb2RlKCktPm5vZGVOYW1lKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIFdURkxvZ0Fsd2F5cygiZW5kOiAgICVzICIsIG1fZW5kLmFuY2hvck5vZGUoKS0+
bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9lbmQuc2hvd0FuY2hvclR5cGVB
bmRPZmZzZXQoKTsKICAgICB9CiAKLSAgICBmcHJpbnRmKHN0ZGVyciwgIj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09XG4iKTsKKyAgICBXVEZMb2dBbHdheXMoIj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09XG4iKTsKIH0KIAogdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjpmb3Jt
YXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggZDk5YzAwNjQyNzQ4NTAxZWQ0ZDVh
NTNiZDI2ZTM5NGVjYWM3ZTI0Ny4uMmMwN2MyMjA4MWM3ZDRhZGRmZTVmN2JjODVjZjcxZmNiMDhi
Mjk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKQEAgLTQ5NCw3ICs0
OTQsNyBAQCBpbnQgSGlzdG9yeUl0ZW06OnNob3dUcmVlV2l0aEluZGVudCh1bnNpZ25lZCBpbmRl
bnRMZXZlbCkgY29uc3QKICAgICAgICAgcHJlZml4LmFwcGVuZCgiICAiLCAyKTsKICAgICBwcmVm
aXguYXBwZW5kKCJcMCIsIDEpOwogCi0gICAgZnByaW50ZihzdGRlcnIsICIlcystJXMgKCVwKVxu
IiwgcHJlZml4LmRhdGEoKSwgbV91cmxTdHJpbmcudXRmOCgpLmRhdGEoKSwgdGhpcyk7CisgICAg
V1RGTG9nQWx3YXlzKCIlcystJXMgKCVwKVxuIiwgcHJlZml4LmRhdGEoKSwgbV91cmxTdHJpbmcu
dXRmOCgpLmRhdGEoKSwgdGhpcyk7CiAgICAgCiAgICAgaW50IHRvdGFsU3ViSXRlbXMgPSAwOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1l
bnRMaXN0LmNwcAppbmRleCBkMzUxMDFiNDkwNzFlYTQ0OWQwNzc2NTNkNDIxNGE5Y2MwODA1MDlm
Li4xYTA3NWU4ZTBlNGMyZjMwNjk1YzhjODI0ZTc4Y2U2NzcyZjkzMDZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0
LmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdDo6
c2hvdygpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBtX2VudHJpZXMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgY29uc3QgRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVzW21fZW50cmllcy5z
aXplKCkgLSBpXTsKICAgICAgICAgaWYgKGVudHJ5LmlzTWFya2VyKCkpCi0gICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIm1hcmtlclxuIik7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIm1h
cmtlclxuIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVudHJ5LmVsZW1lbnQoKS5zaG93
Tm9kZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Q
YXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9y
dC5jcHAKaW5kZXggMDIyZDYwYjI3YzRiMDM4ZmZlODI5MzI4MWJlMTNlODM5MmU5ZjE1Ny4uYjEz
YWEwNzNkZDlhODAxNzQ5ODVhMmYwODFjM2UzMmJhMDZiMTQzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKQEAgLTUwNSw5ICs1MDUsOSBAQCBzdGF0
aWMgU3RyaW5nIG5vZGVOYW1lKE5vZGUqIG5vZGUpCiAKIHZvaWQgRE9NUGF0Y2hTdXBwb3J0Ojpk
dW1wTWFwKGNvbnN0IFJlc3VsdE1hcCYgbWFwLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAg
ZnByaW50ZihzdGRlcnIsICJcblxuIik7CisgICAgV1RGTG9nQWx3YXlzKCJcblxuIik7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXAuc2l6ZSgpOyArK2kpCi0gICAgICAgIGZwcmludGYo
c3RkZXJyLCAiJXNbJWx1XTogJXMgKCVwKSAtIFslbHVdXG4iLCBuYW1lLnV0ZjgoKS5kYXRhKCks
IGksIG1hcFtpXS5maXJzdCA/IG5vZGVOYW1lKG1hcFtpXS5maXJzdC0+bV9ub2RlKS51dGY4KCku
ZGF0YSgpIDogIiIsIG1hcFtpXS5maXJzdCwgbWFwW2ldLnNlY29uZCk7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiJXNbJWx1XTogJXMgKCVwKSAtIFslbHVdXG4iLCBuYW1lLnV0ZjgoKS5kYXRhKCks
IGksIG1hcFtpXS5maXJzdCA/IG5vZGVOYW1lKG1hcFtpXS5maXJzdC0+bV9ub2RlKS51dGY4KCku
ZGF0YSgpIDogIiIsIG1hcFtpXS5maXJzdCwgbWFwW2ldLnNlY29uZCk7CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVU
cmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJl
ZS5jcHAKaW5kZXggYzA1YzUxZDE0ZjA0ZjRhN2YxYjkyYjZkZGYzMzVlNWNjY2UyY2MyOS4uYTRl
NTZmNDZhMzc5ZmYyZWQ2YWQ3MTAwM2Y3MDc0ZDk1OGM2NzcwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCkBAIC0yNzIs
MTIgKzI3MiwxMiBAQCB2b2lkIHNob3dTY3JvbGxpbmdTdGF0ZVRyZWUoY29uc3QgV2ViQ29yZTo6
U2Nyb2xsaW5nU3RhdGVUcmVlKiB0cmVlKQogCiAgICAgYXV0byByb290Tm9kZSA9IHRyZWUtPnJv
b3RTdGF0ZU5vZGUoKTsKICAgICBpZiAoIXJvb3ROb2RlKSB7Ci0gICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiU2Nyb2xsaW5nIHN0YXRlIHRyZWUgJXAgd2l0aCBubyByb290IG5vZGVcbiIsIHRyZWUp
OworICAgICAgICBXVEZMb2dBbHdheXMoIlNjcm9sbGluZyBzdGF0ZSB0cmVlICVwIHdpdGggbm8g
cm9vdCBub2RlXG4iLCB0cmVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFN0cmlu
ZyBvdXRwdXQgPSByb290Tm9kZS0+c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KFdlYkNvcmU6OlNj
cm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yRGVidWcpOwotICAgIGZwcmludGYoc3RkZXJy
LCAiJXNcbiIsIG91dHB1dC51dGY4KCkuZGF0YSgpKTsKKyAgICBXVEZMb2dBbHdheXMoIiVzXG4i
LCBvdXRwdXQudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgc2hvd1Njcm9sbGluZ1N0YXRlVHJl
ZShjb25zdCBXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5j
cHAKaW5kZXggMDc0ZDhlZjEzNzRkYWZjMWNmN2E0NDM1MWUxOGYzYzg0NjRkZGI0My4uNmEwZDFk
MGQzMTBkZDhjN2RiZjlkY2ZjNjg1MDJiNzY3OGIyZjJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApA
QCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbklPUzo6ZnJhbWVTaXplQ2hh
bmdlZFByb2Modm9pZCAqaW5SZWZDb24sIEF1ZGlvVW5pdCwgQXVkaW9VCiAgICAgVUludDMyIGJ1
ZmZlclNpemUgPSAwOwogICAgIFVJbnQzMiBkYXRhU2l6ZSA9IHNpemVvZihidWZmZXJTaXplKTsK
ICAgICBBdWRpb1VuaXRHZXRQcm9wZXJ0eShhdWRpb091dHB1dC0+bV9vdXRwdXRVbml0LCBrQXVk
aW9Vbml0UHJvcGVydHlfTWF4aW11bUZyYW1lc1BlclNsaWNlLCBrQXVkaW9Vbml0U2NvcGVfR2xv
YmFsLCAwLCAodm9pZCopJmJ1ZmZlclNpemUsICZkYXRhU2l6ZSk7Ci0gICAgZnByaW50ZihzdGRl
cnIsICI+Pj4+IGZyYW1lU2l6ZUNoYW5nZWQgPSAlbHVcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGxvbmc+KGJ1ZmZlclNpemUpKTsKKyAgICBXVEZMb2dBbHdheXMoIj4+Pj4gZnJhbWVTaXplQ2hh
bmdlZCA9ICVsdVxuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oYnVmZmVyU2l6ZSkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDY0YThmYTI4ZGM3MWFiZDEzYjYw
YmY0OTYwMTgzNjQ4ZDAxYjRmMzQuLmY3OWY0NGVlMGI5MGE1MjcyMWQ5YTJhMGFkODk5MDEwMDVl
ZDE4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuY3BwCkBAIC05NzAsNiArOTcwLDYgQEAgdm9pZCBzaG93R3JhcGhpY3NMYXllclRy
ZWUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbGF5ZXIpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFN0cmluZyBvdXRwdXQgPSBsYXllci0+bGF5ZXJUcmVlQXNUZXh0KFdlYkNvcmU6Okxh
eWVyVHJlZUFzVGV4dERlYnVnIHwgV2ViQ29yZTo6TGF5ZXJUcmVlQXNUZXh0SW5jbHVkZVZpc2li
bGVSZWN0cyB8IFdlYkNvcmU6OkxheWVyVHJlZUFzVGV4dEluY2x1ZGVUaWxlQ2FjaGVzIHwgV2Vi
Q29yZTo6TGF5ZXJUcmVlQXNUZXh0SW5jbHVkZUNvbnRlbnRMYXllcnMpOwotICAgIGZwcmludGYo
c3RkZXJyLCAiJXNcbiIsIG91dHB1dC51dGY4KCkuZGF0YSgpKTsKKyAgICBXVEZMb2dBbHdheXMo
IiVzXG4iLCBvdXRwdXQudXRmOCgpLmRhdGEoKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuY3BwCmluZGV4IGNkOWM5MzNkNjhiOWQzZTE1MjE1MzVmZGUzZTg4OTBiN2QxNzUzNTgu
LmViMGNkOTdlN2I2ODRmOTU3NzU3YjE4ZmJiZTAxZTIwN2UxZjEzM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0LmNwcApAQCAtNDQsNyArNDQsNyBAQCBXVEY6OkNTdHJpbmcgRGlzcGxheUxpc3Q6
OmRlc2NyaXB0aW9uKCkgY29uc3QKIAogdm9pZCBEaXNwbGF5TGlzdDo6ZHVtcCgpIGNvbnN0CiB7
Ci0gICAgZnByaW50ZihzdGRlcnIsICIlcyIsIGRlc2NyaXB0aW9uKCkuZGF0YSgpKTsKKyAgICBX
VEZMb2dBbHdheXMoIiVzIiwgZGVzY3JpcHRpb24oKS5kYXRhKCkpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbQppbmRleCBmZDJmODUyYjMx
ZjFmZjFmMWJmMTIxMWZlZjk0Y2ExNmI4MmVjYjlmLi5hMDI0ZWZlZjZlZGI2N2Q1NWFiYjdiNDY1
YTAxNWI3OWU0OGM1NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dBS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtW
aWV3Lm1tCkBAIC0yMTEsNyArMjExLDcgQEAgKyAoV0FLVmlldyAqKV93cmFwcGVyRm9yVmlld1Jl
ZjooV0tWaWV3UmVmKV92aWV3UmVmCiAgICAgQVNTRVJUKF92aWV3UmVmKTsKICAgICBpZiAoX3Zp
ZXdSZWYtPmlzYS5jbGFzc0luZm8gPT0gJldLVmlld0NsYXNzSW5mbykKICAgICAgICAgcmV0dXJu
IFtbW1dBS1ZpZXcgYWxsb2NdIF9pbml0V2l0aFZpZXdSZWY6X3ZpZXdSZWZdIGF1dG9yZWxlYXNl
XTsKLSAgICBXS0Vycm9yICgidW5hYmxlIHRvIGNyZWF0ZSB3cmFwcGVyIGZvciAlc1xuIiwgX3Zp
ZXdSZWYtPmlzYS5jbGFzc0luZm8tPm5hbWUpOworICAgIFdLRXJyb3IoInVuYWJsZSB0byBjcmVh
dGUgd3JhcHBlciBmb3IgJXNcbiIsIF92aWV3UmVmLT5pc2EuY2xhc3NJbmZvLT5uYW1lKTsKICAg
ICByZXR1cm4gbmlsOwogfQogCkBAIC01NDIsNyArNTQyLDcgQEAgLSAodm9pZClkaXNwbGF5UmVj
dDooTlNSZWN0KXJlY3QKIHsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IFdLR2V0Q3VycmVu
dEdyYXBoaWNzQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkgewotICAgICAgICBXS0Vycm9y
ICgidW5hYmxlIHRvIGdldCBjb250ZXh0IGZvciB2aWV3Iik7CisgICAgICAgIFdLRXJyb3IoInVu
YWJsZSB0byBnZXQgY29udGV4dCBmb3IgdmlldyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC01NTcsNyArNTU3LDcgQEAgLSAodm9pZClkaXNwbGF5UmVjdElnbm9yaW5nT3BhY2l0eToo
TlNSZWN0KXJlY3QKIC0gKHZvaWQpZGlzcGxheVJlY3RJZ25vcmluZ09wYWNpdHk6KE5TUmVjdCly
ZWN0IGluQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKIHsKICAgICBpZiAoIWNvbnRleHQp
IHsKLSAgICAgICAgV0tFcnJvciAoImludmFsaWQgcGFyYW1ldGVyOiBjb250ZXh0IG11c3Qgbm90
IGJlIE5VTEwiKTsKKyAgICAgICAgV0tFcnJvcigiaW52YWxpZCBwYXJhbWV0ZXI6IGNvbnRleHQg
bXVzdCBub3QgYmUgTlVMTCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLVXRpbGl0aWVzLmMgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dLVXRpbGl0aWVzLmMKaW5kZXggY2IwNGVkMzAyYjlh
OWE4MTA2NjFiN2ZlZDA4MDM3MjgxMGJkOTljMC4uZWNhMjIyNzBkY2VjYmExYWUzZWM4NjM2MTIx
Mzc3MTYwYzNiMjY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XS1V0aWxpdGllcy5jCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tV
dGlsaXRpZXMuYwpAQCAtNTksNyArNTksNyBAQCB2b2lkIFdLUmVsZWFzZShjb25zdCB2b2lkICpv
KQogICAgIFdLT2JqZWN0UmVmIG9iamVjdCA9IChXS09iamVjdFJlZikodWludHB0cl90KW87CiAK
ICAgICBpZiAob2JqZWN0LT5yZWZlcmVuY2VDb3VudCA9PSAwKSB7Ci0gICAgICAgIFdLRXJyb3Ig
KCJhdHRlbXB0IHRvIHJlbGVhc2UgaW52YWxpZCBvYmplY3QiKTsKKyAgICAgICAgV0tFcnJvcigi
YXR0ZW1wdCB0byByZWxlYXNlIGludmFsaWQgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dL
Vmlldy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0tWaWV3Lm1tCmluZGV4
IGE3YzcxNzI4ZTJjYWM5ZmQwMzI1OTIwMDdmZTVhYTVlOTNlOWFiMWYuLjJjOGIxN2VkOTc5OWUx
YmJmZGZhZjkwZTNiNmEyMDg5YTRlZTk3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy93YWsvV0tWaWV3Lm1tCkBAIC0xMTcsNyArMTE3LDcgQEAgV0tWaWV3UmVmIFdLVmlld0NyZWF0
ZVdpdGhGcmFtZSAoQ0dSZWN0IGZyYW1lLCBXS1ZpZXdDb250ZXh0ICpjb250ZXh0KQogdm9pZCBf
V0tWaWV3U2V0Vmlld0NvbnRleHQgKFdLVmlld1JlZiB2aWV3LCBXS1ZpZXdDb250ZXh0ICpjb250
ZXh0KQogewogICAgIGlmICghdmlldykgewotICAgICAgICBXS0Vycm9yICgiaW52YWxpZCBwYXJh
bWV0ZXIiKTsKKyAgICAgICAgV0tFcnJvcigiaW52YWxpZCBwYXJhbWV0ZXIiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICB2aWV3LT5jb250ZXh0ID0gY29udGV4dDsKQEAgLTEyNiw3ICsx
MjYsNyBAQCB2b2lkIF9XS1ZpZXdTZXRWaWV3Q29udGV4dCAoV0tWaWV3UmVmIHZpZXcsIFdLVmll
d0NvbnRleHQgKmNvbnRleHQpCiBDR1JlY3QgV0tWaWV3R2V0Qm91bmRzIChXS1ZpZXdSZWYgdmll
dykKIHsKICAgICBpZiAoIXZpZXcpIHsKLSAgICAgICAgV0tFcnJvciAoImludmFsaWQgcGFyYW1l
dGVyIik7CisgICAgICAgIFdLRXJyb3IoImludmFsaWQgcGFyYW1ldGVyIik7CiAgICAgICAgIHJl
dHVybiBDR1JlY3RaZXJvOwogICAgIH0KICAgICAKQEAgLTEzNiw3ICsxMzYsNyBAQCBDR1JlY3Qg
V0tWaWV3R2V0Qm91bmRzIChXS1ZpZXdSZWYgdmlldykKIENHUmVjdCBXS1ZpZXdHZXRGcmFtZSAo
V0tWaWV3UmVmIHZpZXcpCiB7CiAgICAgaWYgKCF2aWV3KSB7Ci0gICAgICAgIFdLRXJyb3IgKCJp
bnZhbGlkIHBhcmFtZXRlciIpOworICAgICAgICBXS0Vycm9yKCJpbnZhbGlkIHBhcmFtZXRlciIp
OwogICAgICAgICByZXR1cm4gQ0dSZWN0WmVybzsKICAgICB9CiAgICAgCkBAIC0xNTYsNyArMTU2
LDcgQEAgQ0dQb2ludCBXS1ZpZXdHZXRPcmlnaW4oV0tWaWV3UmVmIHZpZXcpCiBzdGF0aWMgdm9p
ZCBfV0tWaWV3UmVjdXJzaXZlbHlJbnZhbGlkYXRlR1N0YXRlKFdLVmlld1JlZiB2aWV3KQogewog
ICAgIGlmICghdmlldykgewotICAgICAgICBXS0Vycm9yICgiaW52YWxpZCBwYXJhbWV0ZXIiKTsK
KyAgICAgICAgV0tFcnJvcigiaW52YWxpZCBwYXJhbWV0ZXIiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyB2b2lkIF9XS1ZpZXdSZWN1cnNpdmVs
eUludmFsaWRhdGVHU3RhdGUoV0tWaWV3UmVmIHZpZXcpCiB2b2lkIFdLVmlld1NldEZyYW1lT3Jp
Z2luIChXS1ZpZXdSZWYgdmlldywgQ0dQb2ludCBuZXdPcmlnaW4pCiB7CiAgICAgaWYgKCF2aWV3
KSB7Ci0gICAgICAgIFdLRXJyb3IgKCJpbnZhbGlkIHBhcmFtZXRlciIpOworICAgICAgICBXS0Vy
cm9yKCJpbnZhbGlkIHBhcmFtZXRlciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApA
QCAtMzIyLDcgKzMyMiw3IEBAIHN0YXRpYyB2b2lkIF9XS1ZpZXdBdXRvcmVzaXplQ2hpbGRyZW4o
V0tWaWV3UmVmIHZpZXcsIGNvbnN0IENHUmVjdCAqb2xkU3VwZXJGcmFtCiB2b2lkIFdLVmlld1Nl
dEZyYW1lU2l6ZSAoV0tWaWV3UmVmIHZpZXcsIENHU2l6ZSBuZXdTaXplKQogewogICAgIGlmICgh
dmlldykgewotICAgICAgICBXS0Vycm9yICgiaW52YWxpZCBwYXJhbWV0ZXIiKTsKKyAgICAgICAg
V0tFcnJvcigiaW52YWxpZCBwYXJhbWV0ZXIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKQEAgLTM4Niw3ICszODYsNyBAQCBmbG9hdCBXS1ZpZXdHZXRTY2FsZShXS1ZpZXdSZWYgdmll
dykKIFdBS1dpbmRvdyAqV0tWaWV3R2V0V2luZG93IChXS1ZpZXdSZWYgdmlldykKIHsKICAgICBp
ZiAoIXZpZXcpIHsKLSAgICAgICAgV0tFcnJvciAoImludmFsaWQgcGFyYW1ldGVyIik7CisgICAg
ICAgIFdLRXJyb3IoImludmFsaWQgcGFyYW1ldGVyIik7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KICAgICAKQEAgLTM5Niw3ICszOTYsNyBAQCBXQUtXaW5kb3cgKldLVmlld0dldFdpbmRvdyAo
V0tWaWV3UmVmIHZpZXcpCiBDRkFycmF5UmVmIFdLVmlld0dldFN1YnZpZXdzIChXS1ZpZXdSZWYg
dmlldykKIHsKICAgICBpZiAoIXZpZXcpIHsKLSAgICAgICAgV0tFcnJvciAoImludmFsaWQgcGFy
YW1ldGVyIik7CisgICAgICAgIFdLRXJyb3IoImludmFsaWQgcGFyYW1ldGVyIik7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KICAgICAKQEAgLTQwNiw3ICs0MDYsNyBAQCBDRkFycmF5UmVmIFdL
Vmlld0dldFN1YnZpZXdzIChXS1ZpZXdSZWYgdmlldykKIHZvaWQgV0tWaWV3QWRkU3VidmlldyAo
V0tWaWV3UmVmIHZpZXcsIFdLVmlld1JlZiBzdWJ2aWV3KQogewogICAgIGlmICghdmlldyB8fCAh
c3VidmlldykgewotICAgICAgICBXS0Vycm9yICgiaW52YWxpZCBwYXJhbWV0ZXIiKTsKKyAgICAg
ICAgV0tFcnJvcigiaW52YWxpZCBwYXJhbWV0ZXIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKQEAgLTQyMyw3ICs0MjMsNyBAQCB2b2lkIFdLVmlld0FkZFN1YnZpZXcgKFdLVmlld1Jl
ZiB2aWV3LCBXS1ZpZXdSZWYgc3VidmlldykKIHZvaWQgV0tWaWV3UmVtb3ZlRnJvbVN1cGVydmll
dyAoV0tWaWV3UmVmIHZpZXcpCiB7CiAgICAgaWYgKCF2aWV3KSB7Ci0gICAgICAgIFdLRXJyb3Ig
KCJpbnZhbGlkIHBhcmFtZXRlciIpOworICAgICAgICBXS0Vycm9yKCJpbnZhbGlkIHBhcmFtZXRl
ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MzUsMTMgKzQzNSwxMyBAQCB2b2lk
IFdLVmlld1JlbW92ZUZyb21TdXBlcnZpZXcgKFdLVmlld1JlZiB2aWV3KQogICAgIAogICAgIENG
TXV0YWJsZUFycmF5UmVmIHN2cyA9IHZpZXctPnN1cGVydmlldy0+c3Vidmlld3M7CiAgICAgaWYg
KCFzdnMpIHsKLSAgICAgICAgV0tFcnJvciAoInN1cGVydmlldyBoYXMgbm8gc3Vidmlld3MiKTsK
KyAgICAgICAgV0tFcnJvcigic3VwZXJ2aWV3IGhhcyBubyBzdWJ2aWV3cyIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgQ0ZJbmRleCBpbmRleCA9IFdLQXJyYXlJbmRleE9mVmFsdWUg
KHN2cywgdmlldyk7CiAgICAgaWYgKGluZGV4IDwgMCkgewotICAgICAgICBXS0Vycm9yICgidmll
dyBub3QgaW4gc3VwZXJ2aWV3IHN1YnZpZXdzIik7CisgICAgICAgIFdLRXJyb3IoInZpZXcgbm90
IGluIHN1cGVydmlldyBzdWJ2aWV3cyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00
NTUsNyArNDU1LDcgQEAgdm9pZCBXS1ZpZXdSZW1vdmVGcm9tU3VwZXJ2aWV3IChXS1ZpZXdSZWYg
dmlldykKIFdLVmlld1JlZiBXS1ZpZXdGaXJzdENoaWxkIChXS1ZpZXdSZWYgdmlldykKIHsKICAg
ICBpZiAoIXZpZXcpIHsKLSAgICAgICAgV0tFcnJvciAoImludmFsaWQgcGFyYW1ldGVyIik7Cisg
ICAgICAgIFdLRXJyb3IoImludmFsaWQgcGFyYW1ldGVyIik7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIApAQCAtNDc0LDcgKzQ3NCw3IEBAIFdLVmlld1JlZiBXS1ZpZXdGaXJzdENoaWxkIChX
S1ZpZXdSZWYgdmlldykKIFdLVmlld1JlZiBXS1ZpZXdOZXh0U2libGluZyAoV0tWaWV3UmVmIHZp
ZXcpCiB7CiAgICAgaWYgKCF2aWV3KSB7Ci0gICAgICAgIFdLRXJyb3IgKCJpbnZhbGlkIHBhcmFt
ZXRlciIpOworICAgICAgICBXS0Vycm9yKCJpbnZhbGlkIHBhcmFtZXRlciIpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBXS1ZpZXdSZWYgV0tWaWV3TmV4
dFNpYmxpbmcgKFdLVmlld1JlZiB2aWV3KQogICAgICAgICAKICAgICBDRkluZGV4IHRoaXNJbmRl
eCA9IFdLQXJyYXlJbmRleE9mVmFsdWUgKHN2cywgdmlldyk7CiAgICAgaWYgKHRoaXNJbmRleCA8
IDApIHsKLSAgICAgICAgV0tFcnJvciAoImludGVybmFsIGVycm9yLCB2aWV3IGlzIG5vdCBwcmVz
ZW50IGluIHN1cGVydmlldyBzdWJ2aWV3cyIpOworICAgICAgICBXS0Vycm9yKCJpbnRlcm5hbCBl
cnJvciwgdmlldyBpcyBub3QgcHJlc2VudCBpbiBzdXBlcnZpZXcgc3Vidmlld3MiKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogICAgIApAQCAtNTAyLDcgKzUwMiw3IEBAIFdLVmlld1JlZiBX
S1ZpZXdOZXh0U2libGluZyAoV0tWaWV3UmVmIHZpZXcpCiBXS1ZpZXdSZWYgV0tWaWV3VHJhdmVy
c2VOZXh0KFdLVmlld1JlZiB2aWV3KQogewogICAgIGlmICghdmlldykgewotICAgICAgICBXS0Vy
cm9yICgiaW52YWxpZCBwYXJhbWV0ZXIiKTsKKyAgICAgICAgV0tFcnJvcigiaW52YWxpZCBwYXJh
bWV0ZXIiKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC01MzgsNyArNTM4LDcgQEAg
Q0dBZmZpbmVUcmFuc2Zvcm0gX1dLVmlld0dldFRyYW5zZm9ybShXS1ZpZXdSZWYgdmlldykKIENH
UmVjdCBXS1ZpZXdHZXRWaXNpYmxlUmVjdChXS1ZpZXdSZWYgdmlld1JlZikKIHsKICAgICBpZiAo
IXZpZXdSZWYpIHsKLSAgICAgICAgV0tFcnJvciAoImludmFsaWQgcGFyYW1ldGVyIik7CisgICAg
ICAgIFdLRXJyb3IoImludmFsaWQgcGFyYW1ldGVyIik7CiAgICAgICAgIHJldHVybiBDR1JlY3Ra
ZXJvOwogICAgIH0KIApAQCAtNTY0LDcgKzU2NCw3IEBAIENHUmVjdCBXS1ZpZXdHZXRWaXNpYmxl
UmVjdChXS1ZpZXdSZWYgdmlld1JlZikKIENHUmVjdCBXS1ZpZXdDb252ZXJ0UmVjdFRvU3VwZXJ2
aWV3KFdLVmlld1JlZiB2aWV3LCBDR1JlY3QgcikKIHsKICAgICBpZiAoIXZpZXcpIHsKLSAgICAg
ICAgV0tFcnJvciAoImludmFsaWQgcGFyYW1ldGVyIik7CisgICAgICAgIFdLRXJyb3IoImludmFs
aWQgcGFyYW1ldGVyIik7CiAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOwogICAgIH0KICAgICAK
QEAgLTU3NCw3ICs1NzQsNyBAQCBDR1JlY3QgV0tWaWV3Q29udmVydFJlY3RUb1N1cGVydmlldyhX
S1ZpZXdSZWYgdmlldywgQ0dSZWN0IHIpCiBDR1JlY3QgV0tWaWV3Q29udmVydFJlY3RUb0Jhc2Uo
V0tWaWV3UmVmIHZpZXcsIENHUmVjdCByKQogewogICAgIGlmICghdmlldykgewotICAgICAgICBX
S0Vycm9yICgiaW52YWxpZCBwYXJhbWV0ZXIiKTsKKyAgICAgICAgV0tFcnJvcigiaW52YWxpZCBw
YXJhbWV0ZXIiKTsKICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87CiAgICAgfQogCkBAIC01OTEs
NyArNTkxLDcgQEAgQ0dSZWN0IFdLVmlld0NvbnZlcnRSZWN0VG9CYXNlKFdLVmlld1JlZiB2aWV3
LCBDR1JlY3QgcikKIENHUG9pbnQgV0tWaWV3Q29udmVydFBvaW50VG9TdXBlcnZpZXcoV0tWaWV3
UmVmIHZpZXcsIENHUG9pbnQgcCkKIHsKICAgICBpZiAoIXZpZXcpIHsKLSAgICAgICAgV0tFcnJv
ciAoImludmFsaWQgcGFyYW1ldGVyIik7CisgICAgICAgIFdLRXJyb3IoImludmFsaWQgcGFyYW1l
dGVyIik7CiAgICAgICAgIHJldHVybiBDR1BvaW50WmVybzsKICAgICB9CiAKQEAgLTYwMSw3ICs2
MDEsNyBAQCBDR1BvaW50IFdLVmlld0NvbnZlcnRQb2ludFRvU3VwZXJ2aWV3KFdLVmlld1JlZiB2
aWV3LCBDR1BvaW50IHApCiBDR1BvaW50IFdLVmlld0NvbnZlcnRQb2ludEZyb21TdXBlcnZpZXco
V0tWaWV3UmVmIHZpZXcsIENHUG9pbnQgcCkKIHsKICAgICBpZiAoIXZpZXcpIHsKLSAgICAgICAg
V0tFcnJvciAoImludmFsaWQgcGFyYW1ldGVyIik7CisgICAgICAgIFdLRXJyb3IoImludmFsaWQg
cGFyYW1ldGVyIik7CiAgICAgICAgIHJldHVybiBDR1BvaW50WmVybzsKICAgICB9CiAgICAgCkBA
IC02MTIsNyArNjEyLDcgQEAgQ0dQb2ludCBXS1ZpZXdDb252ZXJ0UG9pbnRGcm9tU3VwZXJ2aWV3
KFdLVmlld1JlZiB2aWV3LCBDR1BvaW50IHApCiBDR1BvaW50IFdLVmlld0NvbnZlcnRQb2ludFRv
QmFzZShXS1ZpZXdSZWYgdmlldywgQ0dQb2ludCBwKQogewogICAgIGlmICghdmlldykgewotICAg
ICAgICBXS0Vycm9yICgiaW52YWxpZCBwYXJhbWV0ZXIiKTsKKyAgICAgICAgV0tFcnJvcigiaW52
YWxpZCBwYXJhbWV0ZXIiKTsKICAgICAgICAgcmV0dXJuIENHUG9pbnRaZXJvOwogICAgIH0KIApA
QCAtNjM3LDcgKzYzNyw3IEBAIHN0YXRpYyB2b2lkIF9XS1ZpZXdHZXRBbmNlc3RvclZpZXdzSW5j
bHVkaW5nVmlldyAoV0tWaWV3UmVmIHZpZXcsIFdLVmlld1JlZiAqdmllCiAgICAgd2hpbGUgKHN1
cGVydmlldykgewogICAgICAgICB2aWV3c1tjb3VudCsrXSA9IHN1cGVydmlldzsKICAgICAgICAg
aWYgKGNvdW50ID49IG1heFZpZXdzKSB7Ci0gICAgICAgICAgICBXS0Vycm9yICgiRXhjZWVkZWQg
bWF4Vmlld3MsIHVzZSBtYWxsb2MvcmVhbGxvYyIpOworICAgICAgICAgICAgV0tFcnJvcigiRXhj
ZWVkZWQgbWF4Vmlld3MsIHVzZSBtYWxsb2MvcmVhbGxvYyIpOwogICAgICAgICAgICAgKnZpZXdD
b3VudCA9IDA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTY0OSw3ICs2NDks
NyBAQCBzdGF0aWMgdm9pZCBfV0tWaWV3R2V0QW5jZXN0b3JWaWV3c0luY2x1ZGluZ1ZpZXcgKFdL
Vmlld1JlZiB2aWV3LCBXS1ZpZXdSZWYgKnZpZQogQ0dQb2ludCBXS1ZpZXdDb252ZXJ0UG9pbnRG
cm9tQmFzZShXS1ZpZXdSZWYgdmlldywgQ0dQb2ludCBwKQogewogICAgIGlmICghdmlldykgewot
ICAgICAgICBXS0Vycm9yICgiaW52YWxpZCBwYXJhbWV0ZXIiKTsKKyAgICAgICAgV0tFcnJvcigi
aW52YWxpZCBwYXJhbWV0ZXIiKTsKICAgICAgICAgcmV0dXJuIENHUG9pbnRaZXJvOwogICAgIH0K
IApAQCAtNjcyLDcgKzY3Miw3IEBAIENHUG9pbnQgV0tWaWV3Q29udmVydFBvaW50RnJvbUJhc2Uo
V0tWaWV3UmVmIHZpZXcsIENHUG9pbnQgcCkKIENHUmVjdCBXS1ZpZXdDb252ZXJ0UmVjdEZyb21T
dXBlcnZpZXcoV0tWaWV3UmVmIHZpZXcsIENHUmVjdCByKQogewogICAgIGlmICghdmlldykgewot
ICAgICAgICBXS0Vycm9yICgiaW52YWxpZCBwYXJhbWV0ZXIiKTsKKyAgICAgICAgV0tFcnJvcigi
aW52YWxpZCBwYXJhbWV0ZXIiKTsKICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87CiAgICAgfQog
ICAgIApAQCAtNjgzLDcgKzY4Myw3IEBAIENHUmVjdCBXS1ZpZXdDb252ZXJ0UmVjdEZyb21TdXBl
cnZpZXcoV0tWaWV3UmVmIHZpZXcsIENHUmVjdCByKQogQ0dSZWN0IFdLVmlld0NvbnZlcnRSZWN0
RnJvbUJhc2UoV0tWaWV3UmVmIHZpZXcsIENHUmVjdCByKQogewogICAgIGlmICghdmlldykgewot
ICAgICAgICBXS0Vycm9yICgiaW52YWxpZCBwYXJhbWV0ZXIiKTsKKyAgICAgICAgV0tFcnJvcigi
aW52YWxpZCBwYXJhbWV0ZXIiKTsKICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87CiAgICAgfQog
CkBAIC03MzAsNyArNzMwLDcgQEAgYm9vbCBXS1ZpZXdSZXNpZ25GaXJzdFJlc3BvbmRlciAoV0tW
aWV3UmVmIHZpZXcpCiB1bnNpZ25lZCBpbnQgV0tWaWV3R2V0QXV0b3Jlc2l6aW5nTWFzayhXS1Zp
ZXdSZWYgdmlldykKIHsKICAgICBpZiAoIXZpZXcpIHsKLSAgICAgICAgV0tFcnJvciAoImludmFs
aWQgcGFyYW1ldGVyIik7CisgICAgICAgIFdLRXJyb3IoImludmFsaWQgcGFyYW1ldGVyIik7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0gICAgCiAgICAgcmV0dXJuIHZpZXctPmF1dG9yZXNpemlu
Z01hc2s7CkBAIC03MzksNyArNzM5LDcgQEAgdW5zaWduZWQgaW50IFdLVmlld0dldEF1dG9yZXNp
emluZ01hc2soV0tWaWV3UmVmIHZpZXcpCiB2b2lkIFdLVmlld1NldEF1dG9yZXNpemluZ01hc2sg
KFdLVmlld1JlZiB2aWV3LCB1bnNpZ25lZCBpbnQgbWFzaykKIHsKICAgICBpZiAoIXZpZXcpIHsK
LSAgICAgICAgV0tFcnJvciAoImludmFsaWQgcGFyYW1ldGVyIik7CisgICAgICAgIFdLRXJyb3Io
ImludmFsaWQgcGFyYW1ldGVyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9ICAgIAogICAgIHZp
ZXctPmF1dG9yZXNpemluZ01hc2sgPSBtYXNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAppbmRleCAwMzFjY2M1NDQxZDY0
NjYzZGY5ZmRlNGI4MzY5ZDQ2ZjgyZDA1MThmLi43OWNlN2VlMWYwODViMzJhNWI4NjRkODkzMjJl
YTdkZDEyZGVlYmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcApAQCAtMzkxLDE0ICszOTEsMTQgQEAgU3RyaW5nIGRl
ZmF1bHRUZXh0RW5jb2RpbmdOYW1lRm9yU3lzdGVtTGFuZ3VhZ2UoKQogdm9pZCBkdW1wVGV4dEVu
Y29kaW5nTmFtZU1hcCgpCiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IHRleHRFbmNvZGluZ05hbWVN
YXAtPnNpemUoKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkR1bXBpbmcgJXUgZW50cmllcyBpbiBX
ZWJDb3JlOjp0ZXh0RW5jb2RpbmdOYW1lTWFwLi4uXG4iLCBzaXplKTsKKyAgICBXVEZMb2dBbHdh
eXMoIkR1bXBpbmcgJXUgZW50cmllcyBpbiBXZWJDb3JlOjp0ZXh0RW5jb2RpbmdOYW1lTWFwLi4u
XG4iLCBzaXplKTsKIAogICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKGVuY29k
aW5nUmVnaXN0cnlNdXRleCk7CiAKICAgICBUZXh0RW5jb2RpbmdOYW1lTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IHRleHRFbmNvZGluZ05hbWVNYXAtPmJlZ2luKCk7CiAgICAgVGV4dEVuY29kaW5n
TmFtZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gdGV4dEVuY29kaW5nTmFtZU1hcC0+ZW5kKCk7
CiAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIn
JXMnID0+ICclcydcbiIsIGl0LT5rZXksIGl0LT52YWx1ZSk7CisgICAgICAgIFdURkxvZ0Fsd2F5
cygiJyVzJyA9PiAnJXMnXG4iLCBpdC0+a2V5LCBpdC0+dmFsdWUpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwCmluZGV4IGRjMDcyNmEwNzY4YmE5
MmY1OTFkYTVhZGVhMjFhZGFkMzNmZmY0ZjQuLmU0OTYyZGFmZjE1MTBhNzhiMzNlZDcyMDY0NWZj
NjQyOTljZDAyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db3VudGVy
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcApA
QCAtMzM2LDEwICszMzYsMTAgQEAgc3RhdGljIHZvaWQgc2hvd1RyZWVBbmRNYXJrKGNvbnN0IENv
dW50ZXJOb2RlKiBub2RlKQogICAgICAgICByb290ID0gcm9vdC0+cGFyZW50KCk7CiAKICAgICBm
b3IgKGNvbnN0IENvdW50ZXJOb2RlKiBjdXJyZW50ID0gcm9vdDsgY3VycmVudDsgY3VycmVudCA9
IGN1cnJlbnQtPm5leHRJblByZU9yZGVyKCkpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIl
YyIsIChjdXJyZW50ID09IG5vZGUpID8gJyonIDogJyAnKTsKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCIlYyIsIChjdXJyZW50ID09IG5vZGUpID8gJyonIDogJyAnKTsKICAgICAgICAgZm9yIChjb25z
dCBDb3VudGVyTm9kZSogcGFyZW50ID0gY3VycmVudDsgcGFyZW50ICYmIHBhcmVudCAhPSByb290
OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudCgpKQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICIgICAgIik7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXAgJXM6ICVkICVkIFA6JXAgUFM6
JXAgTlM6JXAgUjolcFxuIiwKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiICAgICIpOworICAg
ICAgICBXVEZMb2dBbHdheXMoIiVwICVzOiAlZCAlZCBQOiVwIFBTOiVwIE5TOiVwIFI6JXBcbiIs
CiAgICAgICAgICAgICBjdXJyZW50LCBjdXJyZW50LT5hY3RzQXNSZXNldCgpID8gInJlc2V0X19f
XyIgOiAiaW5jcmVtZW50IiwgY3VycmVudC0+dmFsdWUoKSwKICAgICAgICAgICAgIGN1cnJlbnQt
PmNvdW50SW5QYXJlbnQoKSwgY3VycmVudC0+cGFyZW50KCksIGN1cnJlbnQtPnByZXZpb3VzU2li
bGluZygpLAogICAgICAgICAgICAgY3VycmVudC0+bmV4dFNpYmxpbmcoKSwgJmN1cnJlbnQtPm93
bmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAppbmRleCBkNzcxYmZj
NTExM2M3YTY4ZjA5OWFkODA4MGYxMzBiOTk2ODM2ZmNjLi4xMWM1OGFkNTI2MDYxMmQxYTBlYmRj
NjY1Yjk3MjJhMzNkNTAwYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNw
cApAQCAtMTA3LDE1ICsxMDcsMTUgQEAgdm9pZCBJbmxpbmVCb3g6OnNob3dMaW5lVHJlZUFuZE1h
cmsoY29uc3QgSW5saW5lQm94KiBtYXJrZWRCb3gsIGludCBkZXB0aCkgY29uc3QKIAogdm9pZCBJ
bmxpbmVCb3g6OnNob3dMaW5lQm94KGJvb2wgbWFyaywgaW50IGRlcHRoKSBjb25zdAogewotICAg
IGZwcmludGYoc3RkZXJyLCAiLS0tLS0tLS0gJWMtIiwgaXNEaXJ0eSgpID8gJ0QnIDogJy0nKTsK
KyAgICBXVEZMb2dBbHdheXMoIi0tLS0tLS0tICVjLSIsIGlzRGlydHkoKSA/ICdEJyA6ICctJyk7
CiAgICAgaW50IHByaW50ZWRDaGFyYWN0ZXJzID0gMDsKICAgICBpZiAobWFyaykgewotICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIioiKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIqIik7CiAgICAg
ICAgICsrcHJpbnRlZENoYXJhY3RlcnM7CiAgICAgfQogICAgIHdoaWxlICgrK3ByaW50ZWRDaGFy
YWN0ZXJzIDw9IGRlcHRoICogMikKICAgICAgICAgZnB1dGMoJyAnLCBzdGRlcnIpOwotICAgIGZw
cmludGYoc3RkZXJyLCAiJXMgICglLjJmLCAlLjJmKSAoJS4yZiwgJS4yZikgKCVwKSByZW5kZXJl
ci0+KCVwKVxuIiwgYm94TmFtZSgpLCB4KCksIHkoKSwgd2lkdGgoKSwgaGVpZ2h0KCksIHRoaXMs
ICZyZW5kZXJlcigpKTsKKyAgICBXVEZMb2dBbHdheXMoIiVzICAoJS4yZiwgJS4yZikgKCUuMmYs
ICUuMmYpICglcCkgcmVuZGVyZXItPiglcClcbiIsIGJveE5hbWUoKSwgeCgpLCB5KCksIHdpZHRo
KCksIGhlaWdodCgpLCB0aGlzLCAmcmVuZGVyZXIoKSk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
VFJFRV9ERUJVR0dJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAKaW5kZXggYTM3NzAyYWE5MGMyZTk5Nzc2YmRiMmRkNmI0ZjcwNmY3NTU1YTJhYy4uN2I3ZDM1
MWI0NDc2ODNmNDZhNmVkMmNjZWNiM2RkMzE2NDAwZjg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMTEyNSwxMSArMTEyNSwxMSBAQCBjb25zdCBj
aGFyKiBJbmxpbmVUZXh0Qm94Ojpib3hOYW1lKCkgY29uc3QKIAogdm9pZCBJbmxpbmVUZXh0Qm94
OjpzaG93TGluZUJveChib29sIG1hcmssIGludCBkZXB0aCkgY29uc3QKIHsKLSAgICBmcHJpbnRm
KHN0ZGVyciwgIi0tLS0tLS0tICVjLSIsIGlzRGlydHkoKSA/ICdEJyA6ICctJyk7CisgICAgV1RG
TG9nQWx3YXlzKCItLS0tLS0tLSAlYy0iLCBpc0RpcnR5KCkgPyAnRCcgOiAnLScpOwogCiAgICAg
aW50IHByaW50ZWRDaGFyYWN0ZXJzID0gMDsKICAgICBpZiAobWFyaykgewotICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIioiKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIqIik7CiAgICAgICAgICsr
cHJpbnRlZENoYXJhY3RlcnM7CiAgICAgfQogICAgIHdoaWxlICgrK3ByaW50ZWRDaGFyYWN0ZXJz
IDw9IGRlcHRoICogMikKQEAgLTExMzksNyArMTEzOSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6
c2hvd0xpbmVCb3goYm9vbCBtYXJrLCBpbnQgZGVwdGgpIGNvbnN0CiAgICAgdmFsdWUgPSB2YWx1
ZS5zdWJzdHJpbmcoc3RhcnQoKSwgbGVuKCkpOwogICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJh
bCgnXFwnLCAiXFxcXCIpOwogICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxu
Iik7Ci0gICAgZnByaW50ZihzdGRlcnIsICIlcyAgKCUuMmYsICUuMmYpICglLjJmLCAlLjJmKSAo
JXApIHJlbmRlcmVyLT4oJXApIHJ1biglZCwgJWQpIFwiJXNcIlxuIiwgYm94TmFtZSgpLCB4KCks
IHkoKSwgd2lkdGgoKSwgaGVpZ2h0KCksIHRoaXMsICZyZW5kZXJlcigpLCBzdGFydCgpLCBzdGFy
dCgpICsgbGVuKCksIHZhbHVlLnV0ZjgoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiJXMg
ICglLjJmLCAlLjJmKSAoJS4yZiwgJS4yZikgKCVwKSByZW5kZXJlci0+KCVwKSBydW4oJWQsICVk
KSBcIiVzXCJcbiIsIGJveE5hbWUoKSwgeCgpLCB5KCksIHdpZHRoKCksIGhlaWdodCgpLCB0aGlz
LCAmcmVuZGVyZXIoKSwgc3RhcnQoKSwgc3RhcnQoKSArIGxlbigpLCB2YWx1ZS51dGY4KCkuZGF0
YSgpKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRl
ci5jcHAKaW5kZXggNWYxNDY3MzQ5ODIzZGU3NjhiMzE2NmIwOGQ5M2UyMjE2NjlmYTdkYS4uNGRh
MTQyNDYyNTJmMGRjY2IwMmYwMDMzYWM1NmU4ZGI1ODk0ZTFlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApAQCAtNjEwLDEwICs2MTAsMTAgQEAgdm9pZCBz
aG93Q291bnRlclJlbmRlcmVyVHJlZShjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBjb25zdCBjaGFyKgogICAgIGZvciAoY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiBj
dXJyZW50ID0gcm9vdDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHRJblByZU9yZGVy
KCkpIHsKICAgICAgICAgaWYgKCFpczxXZWJDb3JlOjpSZW5kZXJFbGVtZW50PigqY3VycmVudCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlYyIsIChj
dXJyZW50ID09IHJlbmRlcmVyKSA/ICcqJyA6ICcgJyk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
JWMiLCAoY3VycmVudCA9PSByZW5kZXJlcikgPyAnKicgOiAnICcpOwogICAgICAgICBmb3IgKGNv
bnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcGFyZW50ID0gY3VycmVudDsgcGFyZW50ICYmIHBh
cmVudCAhPSByb290OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudCgpKQotICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICIgICAgIik7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXAgTjolcCBQ
OiVwIFBTOiVwIE5TOiVwIEM6JXBcbiIsCisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiAgICAi
KTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlcCBOOiVwIFA6JXAgUFM6JXAgTlM6JXAgQzolcFxu
IiwKICAgICAgICAgICAgIGN1cnJlbnQsIGN1cnJlbnQtPm5vZGUoKSwgY3VycmVudC0+cGFyZW50
KCksIGN1cnJlbnQtPnByZXZpb3VzU2libGluZygpLAogICAgICAgICAgICAgY3VycmVudC0+bmV4
dFNpYmxpbmcoKSwgZG93bmNhc3Q8V2ViQ29yZTo6UmVuZGVyRWxlbWVudD4oKmN1cnJlbnQpLmhh
c0NvdW50ZXJOb2RlTWFwKCkgPwogICAgICAgICAgICAgY291bnRlck5hbWUgPyBXZWJDb3JlOjpj
b3VudGVyTWFwcygpLmdldChkb3duY2FzdDxXZWJDb3JlOjpSZW5kZXJFbGVtZW50PihjdXJyZW50
KSktPmdldChpZGVudGlmaWVyKSA6IChXZWJDb3JlOjpDb3VudGVyTm9kZSopMSA6IChXZWJDb3Jl
OjpDb3VudGVyTm9kZSopMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAppbmRleCA0OTM3NjA5OTEyNTNiNGI1ZTc4ODcxODQ1MWUwN2U4ZGQzMjU0YzgwLi42ZTZmOGYx
ODczNjNmZmFkMDM1MWMwZjEzYTVmZjkyODEzMDM0YTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTcyMjcsNyArNzIyNyw3IEBAIHZvaWQgc2hvd0xheWVy
VHJlZShjb25zdCBXZWJDb3JlOjpSZW5kZXJMYXllciogbGF5ZXIpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFdURjo6U3RyaW5nIG91dHB1dCA9IGV4dGVybmFsUmVwcmVzZW50YXRpb24oJmxheWVy
LT5yZW5kZXJlcigpLmZyYW1lKCksIFdlYkNvcmU6OlJlbmRlckFzVGV4dFNob3dBbGxMYXllcnMg
fCBXZWJDb3JlOjpSZW5kZXJBc1RleHRTaG93TGF5ZXJOZXN0aW5nIHwgV2ViQ29yZTo6UmVuZGVy
QXNUZXh0U2hvd0NvbXBvc2l0ZWRMYXllcnMgfCBXZWJDb3JlOjpSZW5kZXJBc1RleHRTaG93QWRk
cmVzc2VzIHwgV2ViQ29yZTo6UmVuZGVyQXNUZXh0U2hvd0lEQW5kQ2xhc3MgfCBXZWJDb3JlOjpS
ZW5kZXJBc1RleHREb250VXBkYXRlTGF5b3V0IHwgV2ViQ29yZTo6UmVuZGVyQXNUZXh0U2hvd0xh
eW91dFN0YXRlIHwgV2ViQ29yZTo6UmVuZGVyQXNUZXh0U2hvd092ZXJmbG93IHwgV2ViQ29yZTo6
UmVuZGVyQXNUZXh0U2hvd1NWR0dlb21ldHJ5IHwgV2ViQ29yZTo6UmVuZGVyQXNUZXh0U2hvd0xh
eWVyRnJhZ21lbnRzKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlxuJXNcbiIsIG91dHB1dC51dGY4
KCkuZGF0YSgpKTsKKyAgICBXVEZMb2dBbHdheXMoIlxuJXNcbiIsIG91dHB1dC51dGY4KCkuZGF0
YSgpKTsKIH0KIAogdm9pZCBzaG93TGF5ZXJUcmVlKGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVj
dCogcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDI2OWFjOTc1ODZmZDg4ZGJjZmU2NjY1NDJjNDczYjE5MjkzMjAxNGQuLjBkMmM1YmNjMTc2
NzVlOTlkMGFkZGU4MmJiY2YwY2NiN2ZiOGVhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xMDA5LDcgKzEwMDksNyBAQCBGbG9hdFJlY3QgUmVuZGVy
T2JqZWN0Ojpjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBSZW5kZQogCiBzdGF0aWMgdm9pZCBzaG93UmVuZGVyVHJlZUxlZ2VuZCgpCiB7Ci0gICAgZnBy
aW50ZihzdGRlcnIsICJcbihCKWxvY2svKEkpbmxpbmUvSShOKWxpbmUtYmxvY2ssIChBKWJzb2x1
dGUvRmkoWCllZC8oUillbGF0aXZlL1N0aWMoSyl5LCAoRilsb2F0aW5nLCAoTyl2ZXJmbG93IGNs
aXAsIEFub24oWSltb3VzLCAoRyllbmVyYXRlZCwgaGFzKEwpYXllciwgKEMpb21wb3NpdGVkLCAo
KylEaXJ0eSBzdHlsZSwgKCspRGlydHkgbGF5b3V0XG4iKTsKKyAgICBXVEZMb2dBbHdheXMoIlxu
KEIpbG9jay8oSSlubGluZS9JKE4pbGluZS1ibG9jaywgKEEpYnNvbHV0ZS9GaShYKWVkLyhSKWVs
YXRpdmUvU3RpYyhLKXksIChGKWxvYXRpbmcsIChPKXZlcmZsb3cgY2xpcCwgQW5vbihZKW1vdXMs
IChHKWVuZXJhdGVkLCBoYXMoTClheWVyLCAoQylvbXBvc2l0ZWQsICgrKURpcnR5IHN0eWxlLCAo
KylEaXJ0eSBsYXlvdXRcbiIpOwogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6c2hvd05vZGVUcmVl
Rm9yVGhpcygpIGNvbnN0CkBAIC0xMDcyLDcgKzEwNzIsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6
c2hvd1JlZ2lvbnNJbmZvcm1hdGlvbigpIGNvbnN0CiAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJl
Z2lvbiA9IG51bGxwdHI7CiAgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRyOwog
ICAgIGZ0Y2ItPmdldFJlZ2lvblJhbmdlRm9yQm94KGRvd25jYXN0PFJlbmRlckJveD4odGhpcyks
IHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwotICAgIGZwcmludGYoc3RkZXJyLCAiIFtSczolcCBS
ZTolcF0iLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKKyAgICBXVEZMb2dBbHdheXMoIiBbUnM6
JXAgUmU6JXBdIiwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CiB9CiAKIHZvaWQgUmVuZGVyT2Jq
ZWN0OjpzaG93UmVuZGVyT2JqZWN0KGJvb2wgbWFyaywgaW50IGRlcHRoKSBjb25zdApAQCAtMTE0
Miw3ICsxMTQyLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnNob3dSZW5kZXJPYmplY3QoYm9vbCBt
YXJrLCBpbnQgZGVwdGgpIGNvbnN0CiAKICAgICBpbnQgcHJpbnRlZENoYXJhY3RlcnMgPSAwOwog
ICAgIGlmIChtYXJrKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiKiIpOworICAgICAgICBX
VEZMb2dBbHdheXMoIioiKTsKICAgICAgICAgKytwcmludGVkQ2hhcmFjdGVyczsKICAgICB9CiAK
QEAgLTExNTAsMzMgKzExNTAsMzMgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnNob3dSZW5kZXJPYmpl
Y3QoYm9vbCBtYXJrLCBpbnQgZGVwdGgpIGNvbnN0CiAgICAgICAgIGZwdXRjKCcgJywgc3RkZXJy
KTsKIAogICAgIGlmIChub2RlKCkpCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgIiwgbm9k
ZSgpLT5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIiVz
ICIsIG5vZGUoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIFN0cmluZyBuYW1l
ID0gcmVuZGVyTmFtZSgpOwogICAgIC8vIEZJWE1FOiBSZW5kZXJlcidzIG5hbWUgc2hvdWxkIG5v
dCBpbmNsdWRlIHByb3BlcnR5IHZhbHVlIGxpc3RpbmcuCiAgICAgaW50IHBvcyA9IG5hbWUuZmlu
ZCgnKCcpOwogICAgIGlmIChwb3MgPiAwKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwg
bmFtZS5sZWZ0KHBvcyAtIDEpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBXVEZMb2dBbHdheXMo
IiVzIiwgbmFtZS5sZWZ0KHBvcyAtIDEpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGVsc2UKLSAgICAg
ICAgZnByaW50ZihzdGRlcnIsICIlcyIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiJXMiLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKGlzPFJlbmRl
ckJveD4oKnRoaXMpKSB7CiAgICAgICAgIGF1dG8mIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRl
ckJveD4oKnRoaXMpOwogICAgICAgICBGbG9hdFJlY3QgYm94UmVjdCA9IHJlbmRlckJveC5mcmFt
ZVJlY3QoKTsKICAgICAgICAgaWYgKHJlbmRlckJveC5pc0luRmxvd1Bvc2l0aW9uZWQoKSkKICAg
ICAgICAgICAgIGJveFJlY3QubW92ZShyZW5kZXJCb3gub2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24o
KSk7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAoJS4yZiwgJS4yZikgKCUuMmYsICUuMmYp
IiwgYm94UmVjdC54KCksIGJveFJlY3QueSgpLCBib3hSZWN0LndpZHRoKCksIGJveFJlY3QuaGVp
Z2h0KCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIiAgKCUuMmYsICUuMmYpICglLjJmLCAlLjJm
KSIsIGJveFJlY3QueCgpLCBib3hSZWN0LnkoKSwgYm94UmVjdC53aWR0aCgpLCBib3hSZWN0Lmhl
aWdodCgpKTsKICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlcklubGluZT4oKnRoaXMpICYmIGlzSW5G
bG93UG9zaXRpb25lZCgpKSB7CiAgICAgICAgIEZsb2F0U2l6ZSBpbmxpbmVPZmZzZXQgPSBkb3du
Y2FzdDxSZW5kZXJJbmxpbmU+KCp0aGlzKS5vZmZzZXRGb3JJbkZsb3dQb3NpdGlvbigpOwotICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgKCUuMmYsICUuMmYpIiwgaW5saW5lT2Zmc2V0LndpZHRo
KCksIGlubGluZU9mZnNldC5oZWlnaHQoKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiICAoJS4y
ZiwgJS4yZikiLCBpbmxpbmVPZmZzZXQud2lkdGgoKSwgaW5saW5lT2Zmc2V0LmhlaWdodCgpKTsK
ICAgICB9CiAKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiByZW5kZXJlci0+KCVwKSIsIHRoaXMpOwor
ICAgIFdURkxvZ0Fsd2F5cygiIHJlbmRlcmVyLT4oJXApIiwgdGhpcyk7CiAgICAgaWYgKG5vZGUo
KSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiBub2RlLT4oJXApIiwgbm9kZSgpKTsKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCIgbm9kZS0+KCVwKSIsIG5vZGUoKSk7CiAgICAgICAgIGlmIChu
b2RlKCktPmlzVGV4dE5vZGUoKSkgewogICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gbm9kZSgp
LT5ub2RlVmFsdWUoKTsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiIGxlbmd0aC0+KCV1
KSIsIHZhbHVlLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiIGxlbmd0aC0+
KCV1KSIsIHZhbHVlLmxlbmd0aCgpKTsKIAogICAgICAgICAgICAgdmFsdWUucmVwbGFjZVdpdGhM
aXRlcmFsKCdcXCcsICJcXFxcIik7CiAgICAgICAgICAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVy
YWwoJ1xuJywgIlxcbiIpOwpAQCAtMTE4NCwzMSArMTE4NCwzMSBAQCB2b2lkIFJlbmRlck9iamVj
dDo6c2hvd1JlbmRlck9iamVjdChib29sIG1hcmssIGludCBkZXB0aCkgY29uc3QKICAgICAgICAg
ICAgIGNvbnN0IGludCBtYXhQcmludGVkTGVuZ3RoID0gODA7CiAgICAgICAgICAgICBpZiAodmFs
dWUubGVuZ3RoKCkgPiBtYXhQcmludGVkTGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgU3RyaW5n
IHN1YnN0cmluZyA9IHZhbHVlLnN1YnN0cmluZygwLCBtYXhQcmludGVkTGVuZ3RoKTsKLSAgICAg
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiBcIiVzXCIuLi4iLCBzdWJzdHJpbmcudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIgXCIlc1wiLi4uIiwgc3Vi
c3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICIgXCIlc1wiIiwgdmFsdWUudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIgXCIlc1wiIiwgdmFsdWUudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGlzPFJlbmRlckJveE1vZGVsT2JqZWN0PigqdGhp
cykpIHsKICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9i
amVjdD4oKnRoaXMpOwogICAgICAgICBpZiAocmVuZGVyZXIuaGFzQ29udGludWF0aW9uKCkpCi0g
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiBjb250aW51YXRpb24tPiglcCkiLCByZW5kZXJl
ci5jb250aW51YXRpb24oKSk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiBjb250aW51YXRp
b24tPiglcCkiLCByZW5kZXJlci5jb250aW51YXRpb24oKSk7CiAgICAgfQogICAgIHNob3dSZWdp
b25zSW5mb3JtYXRpb24oKTsKICAgICBpZiAobmVlZHNMYXlvdXQoKSkgewotICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIiBsYXlvdXQtPiIpOworICAgICAgICBXVEZMb2dBbHdheXMoIiBsYXlvdXQt
PiIpOwogICAgICAgICBpZiAoc2VsZk5lZWRzTGF5b3V0KCkpCi0gICAgICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgIltzZWxmXSIpOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJbc2VsZl0iKTsK
ICAgICAgICAgaWYgKG5vcm1hbENoaWxkTmVlZHNMYXlvdXQoKSkKLSAgICAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiW25vcm1hbCBjaGlsZF0iKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygi
W25vcm1hbCBjaGlsZF0iKTsKICAgICAgICAgaWYgKHBvc0NoaWxkTmVlZHNMYXlvdXQoKSkKLSAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiW3Bvc2l0aW9uZWQgY2hpbGRdIik7CisgICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIltwb3NpdGlvbmVkIGNoaWxkXSIpOwogICAgICAgICBpZiAobmVl
ZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dCgpKQotICAgICAgICAgICAgZnByaW50ZihzdGRl
cnIsICJbc2ltcGxpZmllZF0iKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiW3NpbXBsaWZp
ZWRdIik7CiAgICAgICAgIGlmIChuZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dCgpKQotICAg
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJbcG9zaXRpb25lZCBtb3ZlbWVudF0iKTsKKyAgICAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiW3Bvc2l0aW9uZWQgbW92ZW1lbnRdIik7CiAgICAgfQotICAg
IGZwcmludGYoc3RkZXJyLCAiXG4iKTsKKyAgICBXVEZMb2dBbHdheXMoIlxuIik7CiB9CiAKIHZv
aWQgUmVuZGVyT2JqZWN0OjpzaG93UmVuZGVyU3ViVHJlZUFuZE1hcmsoY29uc3QgUmVuZGVyT2Jq
ZWN0KiBtYXJrZWRPYmplY3QsIGludCBkZXB0aCkgY29uc3QKQEAgLTIwMTcsOCArMjAxNyw4IEBA
IHZvaWQgcHJpbnRSZW5kZXJUcmVlRm9yTGl2ZURvY3VtZW50cygpCiAgICAgICAgIGlmICghZG9j
dW1lbnQtPnJlbmRlclZpZXcoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAo
ZG9jdW1lbnQtPmZyYW1lKCkgJiYgZG9jdW1lbnQtPmZyYW1lKCktPmlzTWFpbkZyYW1lKCkpCi0g
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS1tYWluIGZy
YW1lLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwotICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiVzIiwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tbWFpbiBmcmFtZS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlcyIsIGRv
Y3VtZW50LT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgc2hvd1JlbmRl
clRyZWUoZG9jdW1lbnQtPnJlbmRlclZpZXcoKSk7CiAgICAgfQogfQpAQCAtMjAyOSw4ICsyMDI5
LDggQEAgdm9pZCBwcmludExheWVyVHJlZUZvckxpdmVEb2N1bWVudHMoKQogICAgICAgICBpZiAo
IWRvY3VtZW50LT5yZW5kZXJWaWV3KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
aWYgKGRvY3VtZW50LT5mcmFtZSgpICYmIGRvY3VtZW50LT5mcmFtZSgpLT5pc01haW5GcmFtZSgp
KQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tbWFp
biBmcmFtZS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKLSAgICAgICAgZnByaW50Zihz
dGRlcnIsICIlcyIsIGRvY3VtZW50LT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIFdURkxvZ0Fsd2F5cygiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLW1haW4gZnJhbWUt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXMi
LCBkb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHNob3dM
YXllclRyZWUoZG9jdW1lbnQtPnJlbmRlclZpZXcoKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmlu
ZGV4IDgzYjEyZjE1MDg5YTJkMTVjNDFiMWM0MGRlNGJhMTQ5N2IzY2MxZjUuLjU5MGE2YzFkMGI3
OTQ4YWZmYTg4MGY5NzBjNDI5YTg1Mzg2OGU2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTI2Myw3ICsy
NjMsNyBAQCBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyRm9yUG9zaXRpb24oY29uc3QgRmxv
d0NvbnRlbnRzJiBmbG93Q29udGVudHMsIHVuc2lnbgogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lO
RykKIHN0YXRpYyB2b2lkIHByaW50UHJlZml4KGludCYgcHJpbnRlZENoYXJhY3RlcnMsIGludCBk
ZXB0aCkKIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIi0tLS0tLS0tIC0tIik7CisgICAgV1RGTG9n
QWx3YXlzKCItLS0tLS0tLSAtLSIpOwogICAgIHByaW50ZWRDaGFyYWN0ZXJzID0gMDsKICAgICB3
aGlsZSAoKytwcmludGVkQ2hhcmFjdGVycyA8PSBkZXB0aCAqIDIpCiAgICAgICAgIGZwdXRjKCcg
Jywgc3RkZXJyKTsKQEAgLTI3NCwxOCArMjc0LDE4IEBAIHZvaWQgc2hvd0xpbmVMYXlvdXRGb3JG
bG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIGlu
CiAgICAgaW50IHByaW50ZWRDaGFyYWN0ZXJzID0gMDsKICAgICBwcmludFByZWZpeChwcmludGVk
Q2hhcmFjdGVycywgZGVwdGgpOwogCi0gICAgZnByaW50ZihzdGRlcnIsICJTaW1wbGVMaW5lTGF5
b3V0ICgldSBsaW5lcywgJXUgcnVucykgKCVwKVxuIiwgbGF5b3V0LmxpbmVDb3VudCgpLCBsYXlv
dXQucnVuQ291bnQoKSwgJmxheW91dCk7CisgICAgV1RGTG9nQWx3YXlzKCJTaW1wbGVMaW5lTGF5
b3V0ICgldSBsaW5lcywgJXUgcnVucykgKCVwKVxuIiwgbGF5b3V0LmxpbmVDb3VudCgpLCBsYXlv
dXQucnVuQ291bnQoKSwgJmxheW91dCk7CiAgICAgKytkZXB0aDsKIAogICAgIGZvciAoYXV0byBy
dW4gOiBydW5SZXNvbHZlcihmbG93LCBsYXlvdXQpKSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0
ID0gcnVuLnJlY3QoKTsKICAgICAgICAgcHJpbnRQcmVmaXgocHJpbnRlZENoYXJhY3RlcnMsIGRl
cHRoKTsKICAgICAgICAgaWYgKHJ1bi5zdGFydCgpIDwgcnVuLmVuZCgpKSB7Ci0gICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgImxpbmUgJXUgcnVuKCV1LCAldSkgKCUuMmYsICUuMmYpICglLjJm
LCAlLjJmKSBcIiVzXCJcbiIsIHJ1bi5saW5lSW5kZXgoKSwgcnVuLnN0YXJ0KCksIHJ1bi5lbmQo
KSwKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygibGluZSAldSBydW4oJXUsICV1KSAoJS4yZiwg
JS4yZikgKCUuMmYsICUuMmYpIFwiJXNcIlxuIiwgcnVuLmxpbmVJbmRleCgpLCBydW4uc3RhcnQo
KSwgcnVuLmVuZCgpLAogICAgICAgICAgICAgICAgIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpLCBydW4udGV4dCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChy
dW4uc3RhcnQoKSA9PSBydW4uZW5kKCkpOwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJs
aW5lIGJyZWFrICV1IHJ1bigldSwgJXUpICglLjJmLCAlLjJmKSAoJS4yZiwgJS4yZilcbiIsIHJ1
bi5saW5lSW5kZXgoKSwgcnVuLnN0YXJ0KCksIHJ1bi5lbmQoKSwgcmVjdC54KCksIHJlY3QueSgp
LCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgICAgICAgICAgV1RGTG9nQWx3YXlz
KCJsaW5lIGJyZWFrICV1IHJ1bigldSwgJXUpICglLjJmLCAlLjJmKSAoJS4yZiwgJS4yZilcbiIs
IHJ1bi5saW5lSW5kZXgoKSwgcnVuLnN0YXJ0KCksIHJ1bi5lbmQoKSwgcmVjdC54KCksIHJlY3Qu
eSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgICAgICB9CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCmluZGV4IGVh
OWI0NTIxMTU3MzMxMzIzY2EyYjIwY2ZmN2JmOWQyOWQzOTBlZmYuLjkxNjM5NDQ1ZThjMjg1MWQx
YWRjNjhjYjdkNzAzZGU5NTkxNDQzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jlc291cmNlcy5jcHAKQEAgLTY1NiwzOCArNjU2LDM4IEBAIHZvaWQgU1ZHUmVzb3Vy
Y2VzOjpkdW1wKGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQogICAgIEFTU0VSVChvYmplY3Qp
OwogICAgIEFTU0VSVChvYmplY3QtPm5vZGUoKSk7CiAKLSAgICBmcHJpbnRmKHN0ZGVyciwgIi0+
IHRoaXM9JXAsIFNWR1Jlc291cmNlcyhyZW5kZXJlcj0lcCwgbm9kZT0lcClcbiIsIHRoaXMsIG9i
amVjdCwgb2JqZWN0LT5ub2RlKCkpOwotICAgIGZwcmludGYoc3RkZXJyLCAiIHwgRE9NIFRyZWU6
XG4iKTsKKyAgICBXVEZMb2dBbHdheXMoIi0+IHRoaXM9JXAsIFNWR1Jlc291cmNlcyhyZW5kZXJl
cj0lcCwgbm9kZT0lcClcbiIsIHRoaXMsIG9iamVjdCwgb2JqZWN0LT5ub2RlKCkpOworICAgIFdU
RkxvZ0Fsd2F5cygiIHwgRE9NIFRyZWU6XG4iKTsKICAgICBvYmplY3QtPm5vZGUoKS0+c2hvd1Ry
ZWVGb3JUaGlzKCk7CiAKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIHwgTGlzdCBvZiByZXNvdXJj
ZXM6XG4iKTsKKyAgICBXVEZMb2dBbHdheXMoIlxuIHwgTGlzdCBvZiByZXNvdXJjZXM6XG4iKTsK
ICAgICBpZiAobV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YSkgewogICAgICAgICBpZiAoUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyID0gbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+
Y2xpcHBlcikKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiIHwtPiBDbGlwcGVyICAgIDog
JXAgKG5vZGU9JXApXG4iLCBjbGlwcGVyLCAmY2xpcHBlci0+Y2xpcFBhdGhFbGVtZW50KCkpOwor
ICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIgfC0+IENsaXBwZXIgICAgOiAlcCAobm9kZT0lcClc
biIsIGNsaXBwZXIsICZjbGlwcGVyLT5jbGlwUGF0aEVsZW1lbnQoKSk7CiAgICAgICAgIGlmIChS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyID0gbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0
YS0+ZmlsdGVyKQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgfC0+IEZpbHRlciAgICAg
OiAlcCAobm9kZT0lcClcbiIsIGZpbHRlciwgJmZpbHRlci0+ZmlsdGVyRWxlbWVudCgpKTsKKyAg
ICAgICAgICAgIFdURkxvZ0Fsd2F5cygiIHwtPiBGaWx0ZXIgICAgIDogJXAgKG5vZGU9JXApXG4i
LCBmaWx0ZXIsICZmaWx0ZXItPmZpbHRlckVsZW1lbnQoKSk7CiAgICAgICAgIGlmIChSZW5kZXJT
VkdSZXNvdXJjZU1hc2tlciogbWFza2VyID0gbV9jbGlwcGVyRmlsdGVyTWFza2VyRGF0YS0+bWFz
a2VyKQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgfC0+IE1hc2tlciAgICAgOiAlcCAo
bm9kZT0lcClcbiIsIG1hc2tlciwgJm1hc2tlci0+bWFza0VsZW1lbnQoKSk7CisgICAgICAgICAg
ICBXVEZMb2dBbHdheXMoIiB8LT4gTWFza2VyICAgICA6ICVwIChub2RlPSVwKVxuIiwgbWFza2Vy
LCAmbWFza2VyLT5tYXNrRWxlbWVudCgpKTsKICAgICB9CiAKICAgICBpZiAobV9tYXJrZXJEYXRh
KSB7CiAgICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciogbWFya2VyU3RhcnQgPSBt
X21hcmtlckRhdGEtPm1hcmtlclN0YXJ0KQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIg
fC0+IE1hcmtlclN0YXJ0OiAlcCAobm9kZT0lcClcbiIsIG1hcmtlclN0YXJ0LCAmbWFya2VyU3Rh
cnQtPm1hcmtlckVsZW1lbnQoKSk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiB8LT4gTWFy
a2VyU3RhcnQ6ICVwIChub2RlPSVwKVxuIiwgbWFya2VyU3RhcnQsICZtYXJrZXJTdGFydC0+bWFy
a2VyRWxlbWVudCgpKTsKICAgICAgICAgaWYgKFJlbmRlclNWR1Jlc291cmNlTWFya2VyKiBtYXJr
ZXJNaWQgPSBtX21hcmtlckRhdGEtPm1hcmtlck1pZCkKLSAgICAgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiIHwtPiBNYXJrZXJNaWQgIDogJXAgKG5vZGU9JXApXG4iLCBtYXJrZXJNaWQsICZtYXJr
ZXJNaWQtPm1hcmtlckVsZW1lbnQoKSk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiB8LT4g
TWFya2VyTWlkICA6ICVwIChub2RlPSVwKVxuIiwgbWFya2VyTWlkLCAmbWFya2VyTWlkLT5tYXJr
ZXJFbGVtZW50KCkpOwogICAgICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIqIG1hcmtl
ckVuZCA9IG1fbWFya2VyRGF0YS0+bWFya2VyRW5kKQotICAgICAgICAgICAgZnByaW50ZihzdGRl
cnIsICIgfC0+IE1hcmtlckVuZCAgOiAlcCAobm9kZT0lcClcbiIsIG1hcmtlckVuZCwgJm1hcmtl
ckVuZC0+bWFya2VyRWxlbWVudCgpKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiIHwtPiBN
YXJrZXJFbmQgIDogJXAgKG5vZGU9JXApXG4iLCBtYXJrZXJFbmQsICZtYXJrZXJFbmQtPm1hcmtl
ckVsZW1lbnQoKSk7CiAgICAgfQogCiAgICAgaWYgKG1fZmlsbFN0cm9rZURhdGEpIHsKICAgICAg
ICAgaWYgKFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBmaWxsID0gbV9maWxsU3Ryb2tlRGF0
YS0+ZmlsbCkKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiIHwtPiBGaWxsICAgICAgIDog
JXAgKG5vZGU9JXApXG4iLCBmaWxsLCAmZmlsbC0+ZWxlbWVudCgpKTsKKyAgICAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiIHwtPiBGaWxsICAgICAgIDogJXAgKG5vZGU9JXApXG4iLCBmaWxsLCAmZmls
bC0+ZWxlbWVudCgpKTsKICAgICAgICAgaWYgKFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBz
dHJva2UgPSBtX2ZpbGxTdHJva2VEYXRhLT5zdHJva2UpCi0gICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIiB8LT4gU3Ryb2tlICAgICA6ICVwIChub2RlPSVwKVxuIiwgc3Ryb2tlLCAmc3Ryb2tl
LT5lbGVtZW50KCkpOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIgfC0+IFN0cm9rZSAgICAg
OiAlcCAobm9kZT0lcClcbiIsIHN0cm9rZSwgJnN0cm9rZS0+ZWxlbWVudCgpKTsKICAgICB9CiAK
ICAgICBpZiAobV9saW5rZWRSZXNvdXJjZSkKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIgfC0+
IHhsaW5rOmhyZWYgOiAlcCAobm9kZT0lcClcbiIsIG1fbGlua2VkUmVzb3VyY2UsICZtX2xpbmtl
ZFJlc291cmNlLT5lbGVtZW50KCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIiB8LT4geGxpbms6
aHJlZiA6ICVwIChub2RlPSVwKVxuIiwgbV9saW5rZWRSZXNvdXJjZSwgJm1fbGlua2VkUmVzb3Vy
Y2UtPmVsZW1lbnQoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0N5Y2xlU29sdmVyLmNwcAppbmRleCBiZTc2YzFm
OWRlZWMxNjg0MjA4MDUxMzk0Mjg1ZWEzZTEzYWNlNjc5Li44NzdiMmEzZDUyZDY4ZWY0MGNhODFm
YjkzNzJkNTBmZDgwYzhmMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jlc291cmNlc0N5Y2xlU29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0N5Y2xlU29sdmVyLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBA
IHZvaWQgU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXI6OnJlc29sdmVDeWNsZXMoKQogICAgICAgICBm
b3IgKFJlbmRlck9iamVjdCogcmVzb3VyY2UgOiBsb2NhbFJlc291cmNlcykKICAgICAgICAgICAg
IExPR19ERUJVR19DWUNMRSgifD4gJXMgOiAlcCAobm9kZSAlcClcbiIsIHJlc291cmNlLT5yZW5k
ZXJOYW1lKCksIHJlc291cmNlLCByZXNvdXJjZS0+bm9kZSgpKTsKIAotICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgIlBhcmVudCByZXNvdXJjZXM6XG4iKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJQ
YXJlbnQgcmVzb3VyY2VzOlxuIik7CiAgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiByZXNvdXJj
ZSA6IGFuY2VzdG9yUmVzb3VyY2VzKQogICAgICAgICAgICAgTE9HX0RFQlVHX0NZQ0xFKCJ8PiAl
cyA6ICVwIChub2RlICVwKVxuIiwgcmVzb3VyY2UtPnJlbmRlck5hbWUoKSwgcmVzb3VyY2UsIHJl
c291cmNlLT5ub2RlKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHAKaW5kZXggNjQ0MTI3MmE0YWNi
N2Y0NTRhNDE5NjhlNmQ3Nzg4MDFhZjUyYTRmZC4uMTVhZDJlYmYzZGEzYTNmYjk0MWYxOTE3YTMy
OTg2ZTBjM2Y4NjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHAKQEAgLTQ1LDI5ICs0NSwyOSBAQCBmbG9h
dCBTVkdUZXh0TGF5b3V0QXR0cmlidXRlczo6ZW1wdHlWYWx1ZSgpCiBzdGF0aWMgaW5saW5lIHZv
aWQgZHVtcFNWR0NoYXJhY3RlckRhdGFNYXBWYWx1ZShjb25zdCBjaGFyKiBpZGVudGlmaWVyLCBm
bG9hdCB2YWx1ZSwgYm9vbCBhcHBlbmRTcGFjZSA9IHRydWUpCiB7CiAgICAgaWYgKHZhbHVlID09
IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzOjplbXB0eVZhbHVlKCkpIHsKLSAgICAgICAgZnByaW50
ZihzdGRlcnIsICIlcz14IiwgaWRlbnRpZmllcik7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM9
eCIsIGlkZW50aWZpZXIpOwogICAgICAgICBpZiAoYXBwZW5kU3BhY2UpCi0gICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiAiKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiICIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGZwcmludGYoc3RkZXJyLCAiJXM9JWxmIiwgaWRlbnRp
ZmllciwgdmFsdWUpOworICAgIFdURkxvZ0Fsd2F5cygiJXM9JWxmIiwgaWRlbnRpZmllciwgdmFs
dWUpOwogICAgIGlmIChhcHBlbmRTcGFjZSkKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIgIik7
CisgICAgICAgIFdURkxvZ0Fsd2F5cygiICIpOwogfQogCiB2b2lkIFNWR1RleHRMYXlvdXRBdHRy
aWJ1dGVzOjpkdW1wKCkgY29uc3QKIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgImNvbnRleHQ6ICVw
XG4iLCAmbV9jb250ZXh0KTsKKyAgICBXVEZMb2dBbHdheXMoImNvbnRleHQ6ICVwXG4iLCAmbV9j
b250ZXh0KTsKICAgICBjb25zdCBTVkdDaGFyYWN0ZXJEYXRhTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBtX2NoYXJhY3RlckRhdGFNYXAuZW5kKCk7CiAgICAgZm9yIChTVkdDaGFyYWN0ZXJEYXRh
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY2hhcmFjdGVyRGF0YU1hcC5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKICAgICAgICAgY29uc3QgU1ZHQ2hhcmFjdGVyRGF0YSYgZGF0YSA9IGl0
LT52YWx1ZTsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIgLS0tPiBwb3M9JWksIGRhdGE9eyIs
IGl0LT5rZXkpOworICAgICAgICBXVEZMb2dBbHdheXMoIiAtLS0+IHBvcz0laSwgZGF0YT17Iiwg
aXQtPmtleSk7CiAgICAgICAgIGR1bXBTVkdDaGFyYWN0ZXJEYXRhTWFwVmFsdWUoIngiLCBkYXRh
LngpOwogICAgICAgICBkdW1wU1ZHQ2hhcmFjdGVyRGF0YU1hcFZhbHVlKCJ5IiwgZGF0YS55KTsK
ICAgICAgICAgZHVtcFNWR0NoYXJhY3RlckRhdGFNYXBWYWx1ZSgiZHgiLCBkYXRhLmR4KTsKICAg
ICAgICAgZHVtcFNWR0NoYXJhY3RlckRhdGFNYXBWYWx1ZSgiZHkiLCBkYXRhLmR5KTsKICAgICAg
ICAgZHVtcFNWR0NoYXJhY3RlckRhdGFNYXBWYWx1ZSgicm90YXRlIiwgZGF0YS5yb3RhdGUsIGZh
bHNlKTsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJ9XG4iKTsKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCJ9XG4iKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmUuY3BwCmluZGV4IDBhMGMzY2QwYjA2ZGY1ZjM4MmRj
YTEzN2U4MTIzM2JhMjIwODcwNWYuLmI5NWUyNjgzZjc2ZGU0NTYxYTUwMDExNWRhZjA3NjdmNWZl
MDY3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExh
eW91dEVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0RW5naW5lLmNwcApAQCAtMjM1LDE0ICsyMzUsMTQgQEAgdm9pZCBTVkdUZXh0TGF5b3V0
RW5naW5lOjpsYXlvdXRJbmxpbmVUZXh0Qm94KFNWR0lubGluZVRleHRCb3gmIHRleHRCb3gpCiBz
dGF0aWMgaW5saW5lIHZvaWQgZHVtcFRleHRCb3hlcyhWZWN0b3I8U1ZHSW5saW5lVGV4dEJveCo+
JiBib3hlcykKIHsKICAgICB1bnNpZ25lZCBib3hDb3VudCA9IGJveGVzLnNpemUoKTsKLSAgICBm
cHJpbnRmKHN0ZGVyciwgIkR1bXBpbmcgYWxsIHRleHQgZnJhZ21lbnRzIGluIHRleHQgc3ViIHRy
ZWUsICVpIGJveGVzXG4iLCBib3hDb3VudCk7CisgICAgV1RGTG9nQWx3YXlzKCJEdW1waW5nIGFs
bCB0ZXh0IGZyYWdtZW50cyBpbiB0ZXh0IHN1YiB0cmVlLCAlaSBib3hlc1xuIiwgYm94Q291bnQp
OwogCiAgICAgZm9yICh1bnNpZ25lZCBib3hQb3NpdGlvbiA9IDA7IGJveFBvc2l0aW9uIDwgYm94
Q291bnQ7ICsrYm94UG9zaXRpb24pIHsKICAgICAgICAgU1ZHSW5saW5lVGV4dEJveCogdGV4dEJv
eCA9IGJveGVzLmF0KGJveFBvc2l0aW9uKTsKICAgICAgICAgVmVjdG9yPFNWR1RleHRGcmFnbWVu
dD4mIGZyYWdtZW50cyA9IHRleHRCb3gtPnRleHRGcmFnbWVudHMoKTsKLSAgICAgICAgZnByaW50
ZihzdGRlcnIsICItPiBCb3ggJWk6IER1bXBpbmcgdGV4dCBmcmFnbWVudHMgZm9yIFNWR0lubGlu
ZVRleHRCb3gsIHRleHRCb3g9JXAsIHRleHRSZW5kZXJlcj0lcFxuIiwgYm94UG9zaXRpb24sIHRl
eHRCb3gsIHRleHRCb3gtPnJlbmRlcmVyKCkpOwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAg
ICAgICAgdGV4dEJveCBwcm9wZXJ0aWVzLCBzdGFydD0laSwgbGVuPSVpLCBib3ggZGlyZWN0aW9u
PSVpXG4iLCB0ZXh0Qm94LT5zdGFydCgpLCB0ZXh0Qm94LT5sZW4oKSwgdGV4dEJveC0+ZGlyZWN0
aW9uKCkpOwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgIHRleHRSZW5kZXJlciBwcm9wZXJ0
aWVzLCB0ZXh0TGVuZ3RoPSVpXG4iLCB0ZXh0Qm94LT5yZW5kZXJlcigpLT50ZXh0TGVuZ3RoKCkp
OworICAgICAgICBXVEZMb2dBbHdheXMoIi0+IEJveCAlaTogRHVtcGluZyB0ZXh0IGZyYWdtZW50
cyBmb3IgU1ZHSW5saW5lVGV4dEJveCwgdGV4dEJveD0lcCwgdGV4dFJlbmRlcmVyPSVwXG4iLCBi
b3hQb3NpdGlvbiwgdGV4dEJveCwgdGV4dEJveC0+cmVuZGVyZXIoKSk7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiICAgICAgICB0ZXh0Qm94IHByb3BlcnRpZXMsIHN0YXJ0PSVpLCBsZW49JWksIGJv
eCBkaXJlY3Rpb249JWlcbiIsIHRleHRCb3gtPnN0YXJ0KCksIHRleHRCb3gtPmxlbigpLCB0ZXh0
Qm94LT5kaXJlY3Rpb24oKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiICAgdGV4dFJlbmRlcmVy
IHByb3BlcnRpZXMsIHRleHRMZW5ndGg9JWlcbiIsIHRleHRCb3gtPnJlbmRlcmVyKCktPnRleHRM
ZW5ndGgoKSk7CiAKICAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB0ZXh0Qm94LT5y
ZW5kZXJlcigpLT5jaGFyYWN0ZXJzKCk7CiAKQEAgLTI1MCw3ICsyNTAsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgZHVtcFRleHRCb3hlcyhWZWN0b3I8U1ZHSW5saW5lVGV4dEJveCo+JiBib3hlcykK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYWdtZW50Q291bnQ7ICsraSkgewog
ICAgICAgICAgICAgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCA9IGZyYWdtZW50cy5hdChpKTsK
ICAgICAgICAgICAgIFN0cmluZyBmcmFnbWVudFN0cmluZyhjaGFyYWN0ZXJzICsgZnJhZ21lbnQu
Y2hhcmFjdGVyT2Zmc2V0LCBmcmFnbWVudC5sZW5ndGgpOwotICAgICAgICAgICAgZnByaW50Zihz
dGRlcnIsICIgICAgLT4gRnJhZ21lbnQgJWksIHg9JWxmLCB5PSVsZiwgd2lkdGg9JWxmLCBoZWln
aHQ9JWxmLCBjaGFyYWN0ZXJPZmZzZXQ9JWksIGxlbmd0aD0laSwgY2hhcmFjdGVycz0nJXMnXG4i
CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiAgICAtPiBGcmFnbWVudCAlaSwgeD0lbGYsIHk9
JWxmLCB3aWR0aD0lbGYsIGhlaWdodD0lbGYsIGNoYXJhY3Rlck9mZnNldD0laSwgbGVuZ3RoPSVp
LCBjaGFyYWN0ZXJzPSclcydcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBpLCBmcmFn
bWVudC54LCBmcmFnbWVudC55LCBmcmFnbWVudC53aWR0aCwgZnJhZ21lbnQuaGVpZ2h0LCBmcmFn
bWVudC5jaGFyYWN0ZXJPZmZzZXQsIGZyYWdtZW50Lmxlbmd0aCwgZnJhZ21lbnRTdHJpbmcudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBT
VkdUZXh0TGF5b3V0RW5naW5lOjpmaW5pc2hMYXlvdXQoKQogICAgIC8vIEZpbmFsaXplIHRyYW5z
Zm9ybSBtYXRyaWNlcywgYWZ0ZXIgdGhlIGNodW5rIGxheW91dCBjb3JyZWN0aW9ucyBoYXZlIGJl
ZW4gYXBwbGllZCwgYW5kIGFsbCBmcmFnbWVudCB4L3kgcG9zaXRpb25zIGFyZSBmaW5hbGl6ZWQu
CiAgICAgaWYgKCFtX2xpbmVMYXlvdXRCb3hlcy5pc0VtcHR5KCkpIHsKICNpZiBEVU1QX1RFWFRf
RlJBR01FTlRTID4gMAotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkxpbmUgbGF5b3V0OiAiKTsK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJMaW5lIGxheW91dDogIik7CiAgICAgICAgIGR1bXBUZXh0
Qm94ZXMobV9saW5lTGF5b3V0Qm94ZXMpOwogI2VuZGlmCiAKQEAgLTI5OSw3ICsyOTksNyBAQCB2
b2lkIFNWR1RleHRMYXlvdXRFbmdpbmU6OmZpbmlzaExheW91dCgpCiAKICAgICBpZiAoIW1fcGF0
aExheW91dEJveGVzLmlzRW1wdHkoKSkgewogI2lmIERVTVBfVEVYVF9GUkFHTUVOVFMgPiAwCi0g
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiUGF0aCBsYXlvdXQ6ICIpOworICAgICAgICBXVEZMb2dB
bHdheXMoIlBhdGggbGF5b3V0OiAiKTsKICAgICAgICAgZHVtcFRleHRCb3hlcyhtX3BhdGhMYXlv
dXRCb3hlcyk7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314739</attachid>
            <date>2017-07-06 11:55:03 -0700</date>
            <delta_ts>2017-07-06 13:56:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173450-20170706115502.patch</filename>
            <type>text/plain</type>
            <size>24751</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU3OGNlZTRkZGI2MmQx
MmY1MGZkNDJlOTZlNmVjYTY4NWM0YTBiZS4uMjQ2ZmQxODc4YTc2ODdmY2JmY2EyODBjNjdiMzEw
MWFiYTBkNDVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTA3LTA2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdURkxvZ0Fsd2F5cyBm
b3IgZGVidWcgbG9nZ2luZyBzbyB0aGF0IGl0IHNob3dzIHVwIGluIGRldmljZSBzeXN0ZW0gbG9n
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNDUw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgeW91
IHdhbnQgdG8gc2hvd1JlbmRlclRyZWUoKSBvbi1kZXZpY2UsIHRoZSByZXN1bHQgZG9lc24ndCBz
aG93IGluIHN5c3RlbSBsb2cgc28geW91IGNhbid0IHNlZSBpdC4KKyAgICAgICAgU3dpdGNoIHRv
IFdURkxvZ0Fsd2F5cyB0byBmaXggdGhpcywgZm9yIHNob3dSZW5kZXJUcmVlIGFuZCBpdHMgZGVw
ZW5kZW5jaWVzLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVJbmRlbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9JbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpzaG93TGluZVRy
ZWVBbmRNYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6c2hvd0xpbmVCb3gpOgor
ICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5s
aW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpzaG93TGlu
ZVRyZWVBbmRNYXJrKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZVRleHRCb3g6OnNob3dMaW5lQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpzaG93TGluZVRyZWVBbmRNYXJrKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG93UmVuZGVyVHJlZUxlZ2VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNob3dSZW5kZXJUcmVlRm9yVGhpcyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNob3dMaW5lVHJlZUZvclRoaXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzaG93UmVnaW9uc0luZm9ybWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2hvd1JlbmRlck9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNob3dSZW5kZXJTdWJUcmVlQW5kTWFyayk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxp
bmVMYXlvdXQ6OnByaW50UHJlZml4KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlv
dXQ6OnNob3dMaW5lTGF5b3V0Rm9yRmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXRGdW5jdGlvbnMuaDoKKwogMjAxNy0wNy0wNiAgQ2hhcmxpZSBUdXJuZXIgIDxjdHVy
bmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gdmlkLm1lIHZpZGVvcyBkbyBu
b3QgcGxheQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0U3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5jcHAKaW5k
ZXggMzJmZTNjNzU3ZDI3OGZiOWRmZjE3Yzg2Nzk1NjFmNGE3MTJmYzc0OS4uMWMxZTIxNzA3Yzhh
ZjI2ODdkNjA5NTQ1MWNiOGM5MTM0YjQ0ZDY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRTdHJlYW0uY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBUZXh0U3RyZWFt
Ojp3cml0ZUluZGVudCgpCiAKIHZvaWQgd3JpdGVJbmRlbnQoVGV4dFN0cmVhbSYgdHMsIGludCBp
bmRlbnQpCiB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gaW5kZW50OyArK2kpCisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBpbmRlbnQ7ICsraSkKICAgICAgICAgdHMgPDwgIiAgIjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAppbmRleCBkNzcxYmZjNTExM2M3YTY4
ZjA5OWFkODA4MGYxMzBiOTk2ODM2ZmNjLi40YTUxZTZhOGM2MjlmOGU3ZmUzNGQ1MTg3MTk4ZjA1
YjE1OGZhODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcApAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgogI2luY2x1ZGUgIlJlbmRl
ckxpbmVCcmVhay5oIgogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKKyNpbmNsdWRlICJUZXh0
U3RyZWFtLmgiCiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAjaW5jbHVkZSA8c3RkaW8u
aD4KQEAgLTEwMCwyMiArMTAxLDIzIEBAIHZvaWQgSW5saW5lQm94OjpzaG93TGluZVRyZWVGb3JU
aGlzKCkgY29uc3QKICAgICBtX3JlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpLT5zaG93TGluZVRy
ZWVGb3JUaGlzKCk7CiB9CiAKLXZvaWQgSW5saW5lQm94OjpzaG93TGluZVRyZWVBbmRNYXJrKGNv
bnN0IElubGluZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0Cit2b2lkIElubGluZUJv
eDo6c2hvd0xpbmVUcmVlQW5kTWFyayhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IElubGluZUJv
eCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0CiB7Ci0gICAgc2hvd0xpbmVCb3gobWFya2Vk
Qm94ID09IHRoaXMsIGRlcHRoKTsKKyAgICBzaG93TGluZUJveChzdHJlYW0sIG1hcmtlZEJveCA9
PSB0aGlzLCBkZXB0aCk7CiB9CiAKLXZvaWQgSW5saW5lQm94OjpzaG93TGluZUJveChib29sIG1h
cmssIGludCBkZXB0aCkgY29uc3QKK3ZvaWQgSW5saW5lQm94OjpzaG93TGluZUJveChUZXh0U3Ry
ZWFtJiBzdHJlYW0sIGJvb2wgbWFyaywgaW50IGRlcHRoKSBjb25zdAogewotICAgIGZwcmludGYo
c3RkZXJyLCAiLS0tLS0tLS0gJWMtIiwgaXNEaXJ0eSgpID8gJ0QnIDogJy0nKTsKKyAgICBzdHJl
YW0gPDwgIi0tLS0tLS0tICIgPDwgKGlzRGlydHkoKSA/ICJEIiA6ICItIikgPDwgIi0iOwogICAg
IGludCBwcmludGVkQ2hhcmFjdGVycyA9IDA7CiAgICAgaWYgKG1hcmspIHsKLSAgICAgICAgZnBy
aW50ZihzdGRlcnIsICIqIik7CisgICAgICAgIHN0cmVhbSA8PCAiKiI7CiAgICAgICAgICsrcHJp
bnRlZENoYXJhY3RlcnM7CiAgICAgfQogICAgIHdoaWxlICgrK3ByaW50ZWRDaGFyYWN0ZXJzIDw9
IGRlcHRoICogMikKLSAgICAgICAgZnB1dGMoJyAnLCBzdGRlcnIpOwotICAgIGZwcmludGYoc3Rk
ZXJyLCAiJXMgICglLjJmLCAlLjJmKSAoJS4yZiwgJS4yZikgKCVwKSByZW5kZXJlci0+KCVwKVxu
IiwgYm94TmFtZSgpLCB4KCksIHkoKSwgd2lkdGgoKSwgaGVpZ2h0KCksIHRoaXMsICZyZW5kZXJl
cigpKTsKKyAgICAgICAgc3RyZWFtIDw8ICIgIjsKKyAgICBzdHJlYW0gPDwgYm94TmFtZSgpIDw8
ICIgIiA8PCBGbG9hdFJlY3QoeCgpLCB5KCksIHdpZHRoKCksIGhlaWdodCgpKSA8PCAiICgiIDw8
IHRoaXMgPDwgIikgcmVuZGVyZXItPigiIDw8ICZyZW5kZXJlcigpIDw8ICIpIjsKKyAgICBzdHJl
YW0ubmV4dExpbmUoKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShUUkVFX0RFQlVHR0lORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAppbmRleCBiYjU5ZDEyMGJkYmNlYTE1ZDc4NTEx
ZDZkMDdhMjhmMWVjMGMxNWIwLi4wMmQyZjdjNDU5ZTAxNTk3MDRlNDM0Y2NiZDExMmEwYWFjNDA0
NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCkBAIC03Niw4ICs3Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNob3dOb2RlVHJlZUZvclRoaXMoKSBjb25zdDsKICAgICB2b2lk
IHNob3dMaW5lVHJlZUZvclRoaXMoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2hv
d0xpbmVUcmVlQW5kTWFyayhjb25zdCBJbmxpbmVCb3gqIG1hcmtlZEJveCwgaW50IGRlcHRoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0xpbmVCb3goYm9vbCBtYXJrLCBpbnQgZGVwdGgp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzaG93TGluZVRyZWVBbmRNYXJrKFRleHRTdHJlYW0m
LCBjb25zdCBJbmxpbmVCb3gqIG1hcmtlZEJveCwgaW50IGRlcHRoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2hvd0xpbmVCb3goVGV4dFN0cmVhbSYsIGJvb2wgbWFyaywgaW50IGRlcHRoKSBj
b25zdDsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGJveE5hbWUoKSBjb25zdDsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXggNTE4ZDIy
ZjYwMjU1MmVkNGY5YWY5MDc0ODg5NjU0NzVmNzIwMTYyZC4uYTQzMTQ5NDgyZGQxMmYyMDk3ZjAy
ZmRhZTQwOTg3MjZkZjdjYzliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVG
bG93Qm94LmNwcApAQCAtMTczNSwxMSArMTczNSwxMSBAQCBjb25zdCBjaGFyKiBJbmxpbmVGbG93
Qm94Ojpib3hOYW1lKCkgY29uc3QKICAgICByZXR1cm4gIklubGluZUZsb3dCb3giOwogfQogCi12
b2lkIElubGluZUZsb3dCb3g6OnNob3dMaW5lVHJlZUFuZE1hcmsoY29uc3QgSW5saW5lQm94KiBt
YXJrZWRCb3gsIGludCBkZXB0aCkgY29uc3QKK3ZvaWQgSW5saW5lRmxvd0JveDo6c2hvd0xpbmVU
cmVlQW5kTWFyayhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IElubGluZUJveCogbWFya2VkQm94
LCBpbnQgZGVwdGgpIGNvbnN0CiB7Ci0gICAgSW5saW5lQm94OjpzaG93TGluZVRyZWVBbmRNYXJr
KG1hcmtlZEJveCwgZGVwdGgpOworICAgIElubGluZUJveDo6c2hvd0xpbmVUcmVlQW5kTWFyayhz
dHJlYW0sIG1hcmtlZEJveCwgZGVwdGgpOwogICAgIGZvciAoY29uc3QgSW5saW5lQm94KiBib3gg
PSBmaXJzdENoaWxkKCk7IGJveDsgYm94ID0gYm94LT5uZXh0T25MaW5lKCkpCi0gICAgICAgIGJv
eC0+c2hvd0xpbmVUcmVlQW5kTWFyayhtYXJrZWRCb3gsIGRlcHRoICsgMSk7CisgICAgICAgIGJv
eC0+c2hvd0xpbmVUcmVlQW5kTWFyayhzdHJlYW0sIG1hcmtlZEJveCwgZGVwdGggKyAxKTsKIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxv
d0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAppbmRleCA1
NzJiMDI1NjFiMWQ5MWY2YWViMGM0OGQxYmVlMjYzMmIzNTZlZWYwLi5jYjVlYTk3YWY0NDA2NzJj
MTkwZDg0NGNkYzZkZGYwZmQzOTU2NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lRmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVFJFRV9ERUJVR0dJTkcpCi0gICAgdm9pZCBzaG93TGluZVRyZWVBbmRNYXJrKGNvbnN0IElu
bGluZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
c2hvd0xpbmVUcmVlQW5kTWFyayhUZXh0U3RyZWFtJiwgY29uc3QgSW5saW5lQm94KiBtYXJrZWRC
b3gsIGludCBkZXB0aCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgY2hhciogYm94TmFtZSgp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVUZXh0Qm94LmNwcAppbmRleCA0ZWIwMGQzZWEzNjU0YTRkNWU1OGY4YjI3OTIzMDIyNTA0NjE1
ZGZkLi42NTAwZmQwZjUxNGY2ZDk5N2FlNDhiZmJkMDdiOTNjZmE1ZDg1YjhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC00OCw2ICs0OCw3IEBACiAj
aW5jbHVkZSAiVGV4dERlY29yYXRpb25QYWludGVyLmgiCiAjaW5jbHVkZSAiVGV4dFBhaW50U3R5
bGUuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRlci5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIK
ICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAt
MTEyMywyMyArMTEyNCwyNCBAQCBjb25zdCBjaGFyKiBJbmxpbmVUZXh0Qm94Ojpib3hOYW1lKCkg
Y29uc3QKICAgICByZXR1cm4gIklubGluZVRleHRCb3giOwogfQogCi12b2lkIElubGluZVRleHRC
b3g6OnNob3dMaW5lQm94KGJvb2wgbWFyaywgaW50IGRlcHRoKSBjb25zdAordm9pZCBJbmxpbmVU
ZXh0Qm94OjpzaG93TGluZUJveChUZXh0U3RyZWFtJiBzdHJlYW0sIGJvb2wgbWFyaywgaW50IGRl
cHRoKSBjb25zdAogewotICAgIGZwcmludGYoc3RkZXJyLCAiLS0tLS0tLS0gJWMtIiwgaXNEaXJ0
eSgpID8gJ0QnIDogJy0nKTsKKyAgICBzdHJlYW0gPDwgIi0tLS0tLS0tICIgPDwgKGlzRGlydHko
KSA/ICJEIiA6ICItIikgPDwgIi0iOwogCiAgICAgaW50IHByaW50ZWRDaGFyYWN0ZXJzID0gMDsK
ICAgICBpZiAobWFyaykgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIioiKTsKKyAgICAgICAg
c3RyZWFtIDw8ICIqIjsKICAgICAgICAgKytwcmludGVkQ2hhcmFjdGVyczsKICAgICB9CiAgICAg
d2hpbGUgKCsrcHJpbnRlZENoYXJhY3RlcnMgPD0gZGVwdGggKiAyKQotICAgICAgICBmcHV0Yygn
ICcsIHN0ZGVycik7CisgICAgICAgIHN0cmVhbSA8PCAiICI7CiAKICAgICBTdHJpbmcgdmFsdWUg
PSByZW5kZXJlcigpLnRleHQoKTsKICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZyhzdGFydCgp
LCBsZW4oKSk7CiAgICAgdmFsdWUucmVwbGFjZVdpdGhMaXRlcmFsKCdcXCcsICJcXFxcIik7CiAg
ICAgdmFsdWUucmVwbGFjZVdpdGhMaXRlcmFsKCdcbicsICJcXG4iKTsKLSAgICBmcHJpbnRmKHN0
ZGVyciwgIiVzICAoJS4yZiwgJS4yZikgKCUuMmYsICUuMmYpICglcCkgcmVuZGVyZXItPiglcCkg
cnVuKCVkLCAlZCkgXCIlc1wiXG4iLCBib3hOYW1lKCksIHgoKSwgeSgpLCB3aWR0aCgpLCBoZWln
aHQoKSwgdGhpcywgJnJlbmRlcmVyKCksIHN0YXJ0KCksIHN0YXJ0KCkgKyBsZW4oKSwgdmFsdWUu
dXRmOCgpLmRhdGEoKSk7CisgICAgc3RyZWFtIDw8IGJveE5hbWUoKSA8PCAiICIgPDwgRmxvYXRS
ZWN0KHgoKSwgeSgpLCB3aWR0aCgpLCBoZWlnaHQoKSkgPDwgIiAoIiA8PCB0aGlzIDw8ICIpIHJl
bmRlcmVyLT4oIiA8PCAmcmVuZGVyZXIoKSA8PCAiKSBydW4oIiA8PCBzdGFydCgpIDw8ICIsICIg
PDwgc3RhcnQoKSArIGxlbigpIDw8ICIpIFwiIiA8PCB2YWx1ZS51dGY4KCkuZGF0YSgpIDw8ICJc
IiI7CisgICAgc3RyZWFtLm5leHRMaW5lKCk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggNGYxOWM5ZGRkOGU5MTcyZDc0ZGFmYjc1NTky
ZmM5MWIxMDBlZWY2ZC4uNjJmMTc4Y2VkMjQ4OTQwM2E1MmU3YWFkMDY3ZGQwYjUwMGE5ZGY4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBAIC05Nyw3ICs5Nyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlydHlPd25MaW5lQm94ZXMoKSB7IGRpcnR5
TGluZUJveGVzKCk7IH0KIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKLSAgICB2b2lkIHNo
b3dMaW5lQm94KGJvb2wgbWFyaywgaW50IGRlcHRoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNo
b3dMaW5lQm94KFRleHRTdHJlYW0mLCBib29sIG1hcmssIGludCBkZXB0aCkgY29uc3QgZmluYWw7
CiAgICAgY29uc3QgY2hhciogYm94TmFtZSgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggZTAyNmEwNDFm
NjUwZDcwMWFjZDQ4MTc3YTcxOWJhNjVmODRkN2VkNy4uZTYyNTc3ZDU1YWNiMjE0NDNjZWVkODMw
ZTg2NDcwNzk0OTE4YTkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKQEAgLTM3NjksMTMgKzM3NjksMTMgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OmVuc3VyZUxpbmVCb3hlcygpCiB9CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCi12b2lk
IFJlbmRlckJsb2NrRmxvdzo6c2hvd0xpbmVUcmVlQW5kTWFyayhjb25zdCBJbmxpbmVCb3gqIG1h
cmtlZEJveCwgaW50IGRlcHRoKSBjb25zdAordm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnNob3dMaW5l
VHJlZUFuZE1hcmsoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBJbmxpbmVCb3gqIG1hcmtlZEJv
eCwgaW50IGRlcHRoKSBjb25zdAogewogICAgIGZvciAoY29uc3QgUm9vdElubGluZUJveCogcm9v
dCA9IGZpcnN0Um9vdEJveCgpOyByb290OyByb290ID0gcm9vdC0+bmV4dFJvb3RCb3goKSkKLSAg
ICAgICAgcm9vdC0+c2hvd0xpbmVUcmVlQW5kTWFyayhtYXJrZWRCb3gsIGRlcHRoKTsKKyAgICAg
ICAgcm9vdC0+c2hvd0xpbmVUcmVlQW5kTWFyayhzdHJlYW0sIG1hcmtlZEJveCwgZGVwdGgpOwog
CiAgICAgaWYgKGF1dG8gc2ltcGxlTGluZUxheW91dCA9IHRoaXMtPnNpbXBsZUxpbmVMYXlvdXQo
KSkKLSAgICAgICAgU2ltcGxlTGluZUxheW91dDo6c2hvd0xpbmVMYXlvdXRGb3JGbG93KCp0aGlz
LCAqc2ltcGxlTGluZUxheW91dCwgZGVwdGgpOworICAgICAgICBTaW1wbGVMaW5lTGF5b3V0Ojpz
aG93TGluZUxheW91dEZvckZsb3coc3RyZWFtLCAqdGhpcywgKnNpbXBsZUxpbmVMYXlvdXQsIGRl
cHRoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmgKaW5kZXggOWIwZjMwOTE0N2FlZDU0NjJjNjFiYjJlNTY4YzMyZDAyZmM4OTRmNy4uMmRh
MTZjNTM4YjJlZWYyMGVmZTQzYWQxNzI5YzdiMzYzOWI0ZmM3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMzcyLDcgKzM3Miw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGVuc3VyZUxpbmVCb3hlcygpOwogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5H
KQotICAgIHZvaWQgc2hvd0xpbmVUcmVlQW5kTWFyayhjb25zdCBJbmxpbmVCb3gqIG1hcmtlZEJv
eCwgaW50IGRlcHRoKSBjb25zdDsKKyAgICB2b2lkIHNob3dMaW5lVHJlZUFuZE1hcmsoVGV4dFN0
cmVhbSYsIGNvbnN0IElubGluZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0OwogI2Vu
ZGlmCiAKICAgICAvLyBSZXR1cm5zIHRoZSBsb2dpY2FsT2Zmc2V0IGF0IHRoZSB0b3Agb2YgdGhl
IG5leHQgcGFnZS4gSWYgdGhlIG9mZnNldCBwYXNzZWQgaW4gaXMgYWxyZWFkeSBhdCB0aGUgdG9w
IG9mIHRoZSBjdXJyZW50IHBhZ2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IDI2OWFjOTc1ODZmZDg4ZGJjZmU2NjY1NDJjNDczYjE5MjkzMjAxNGQuLjJm
ZWU5MWQwYjMxZDFjZjVhZmE4MjYxYTRjYjIyMjdmZjUyYWYyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3VwcG9ydC5oIgogI2luY2x1ZGUg
IlN0eWxlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAiVHJh
bnNmb3JtU3RhdGUuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8c3RkaW8uaD4K
QEAgLTEwMDcsOSArMTAwOCwxMSBAQCBGbG9hdFJlY3QgUmVuZGVyT2JqZWN0Ojpjb21wdXRlRmxv
YXRSZWN0Rm9yUmVwYWludChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSZW5kZQogCiAjaWYgRU5B
QkxFKFRSRUVfREVCVUdHSU5HKQogCi1zdGF0aWMgdm9pZCBzaG93UmVuZGVyVHJlZUxlZ2VuZCgp
CitzdGF0aWMgdm9pZCBzaG93UmVuZGVyVHJlZUxlZ2VuZChUZXh0U3RyZWFtJiBzdHJlYW0pCiB7
Ci0gICAgZnByaW50ZihzdGRlcnIsICJcbihCKWxvY2svKEkpbmxpbmUvSShOKWxpbmUtYmxvY2ss
IChBKWJzb2x1dGUvRmkoWCllZC8oUillbGF0aXZlL1N0aWMoSyl5LCAoRilsb2F0aW5nLCAoTyl2
ZXJmbG93IGNsaXAsIEFub24oWSltb3VzLCAoRyllbmVyYXRlZCwgaGFzKEwpYXllciwgKEMpb21w
b3NpdGVkLCAoKylEaXJ0eSBzdHlsZSwgKCspRGlydHkgbGF5b3V0XG4iKTsKKyAgICBzdHJlYW0u
bmV4dExpbmUoKTsKKyAgICBzdHJlYW0gPDwgIihCKWxvY2svKEkpbmxpbmUvSShOKWxpbmUtYmxv
Y2ssIChBKWJzb2x1dGUvRmkoWCllZC8oUillbGF0aXZlL1N0aWMoSyl5LCAoRilsb2F0aW5nLCAo
Tyl2ZXJmbG93IGNsaXAsIEFub24oWSltb3VzLCAoRyllbmVyYXRlZCwgaGFzKEwpYXllciwgKEMp
b21wb3NpdGVkLCAoKylEaXJ0eSBzdHlsZSwgKCspRGlydHkgbGF5b3V0IjsKKyAgICBzdHJlYW0u
bmV4dExpbmUoKTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnNob3dOb2RlVHJlZUZvclRoaXMo
KSBjb25zdApAQCAtMTAyNCwxNyArMTAyNywyMSBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2hvd1Jl
bmRlclRyZWVGb3JUaGlzKCkgY29uc3QKICAgICBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3Qq
IHJvb3QgPSB0aGlzOwogICAgIHdoaWxlIChyb290LT5wYXJlbnQoKSkKICAgICAgICAgcm9vdCA9
IHJvb3QtPnBhcmVudCgpOwotICAgIHNob3dSZW5kZXJUcmVlTGVnZW5kKCk7Ci0gICAgcm9vdC0+
c2hvd1JlbmRlclN1YlRyZWVBbmRNYXJrKHRoaXMsIDEpOworICAgIFRleHRTdHJlYW0gc3RyZWFt
KFRleHRTdHJlYW06OkxpbmVNb2RlOjpNdWx0aXBsZUxpbmUsIFRleHRTdHJlYW06OkZvcm1hdHRp
bmc6OlNWR1N0eWxlUmVjdCk7CisgICAgc2hvd1JlbmRlclRyZWVMZWdlbmQoc3RyZWFtKTsKKyAg
ICByb290LT5zaG93UmVuZGVyU3ViVHJlZUFuZE1hcmsoc3RyZWFtLCB0aGlzLCAxKTsKKyAgICBX
VEZMb2dBbHdheXMoIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAog
dm9pZCBSZW5kZXJPYmplY3Q6OnNob3dMaW5lVHJlZUZvclRoaXMoKSBjb25zdAogewogICAgIGlm
ICghaXM8UmVuZGVyQmxvY2tGbG93PigqdGhpcykpCiAgICAgICAgIHJldHVybjsKLSAgICBzaG93
UmVuZGVyVHJlZUxlZ2VuZCgpOwotICAgIHNob3dSZW5kZXJPYmplY3QoZmFsc2UsIDEpOwotICAg
IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnRoaXMpLnNob3dMaW5lVHJlZUFuZE1hcmsobnVs
bHB0ciwgMik7CisgICAgVGV4dFN0cmVhbSBzdHJlYW0oVGV4dFN0cmVhbTo6TGluZU1vZGU6Ok11
bHRpcGxlTGluZSwgVGV4dFN0cmVhbTo6Rm9ybWF0dGluZzo6U1ZHU3R5bGVSZWN0KTsKKyAgICBz
aG93UmVuZGVyVHJlZUxlZ2VuZChzdHJlYW0pOworICAgIHNob3dSZW5kZXJPYmplY3Qoc3RyZWFt
LCBmYWxzZSwgMSk7CisgICAgZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqdGhpcykuc2hvd0xp
bmVUcmVlQW5kTWFyayhzdHJlYW0sIG51bGxwdHIsIDIpOworICAgIFdURkxvZ0Fsd2F5cygiJXMi
LCBzdHJlYW0ucmVsZWFzZSgpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiBzdGF0aWMgY29uc3QgUmVu
ZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZENvbnRhaW5pbmdCbG9ja0Zyb21SZW5kZXJlcihjb25z
dCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQpAQCAtMTA1NCw3ICsxMDYxLDcgQEAgc3RhdGljIGNv
bnN0IFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2tGcm9tUmVuZGVy
ZXIoY29uc3QgUmVuZGUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBSZW5kZXJPYmpl
Y3Q6OnNob3dSZWdpb25zSW5mb3JtYXRpb24oKSBjb25zdAordm9pZCBSZW5kZXJPYmplY3Q6OnNo
b3dSZWdpb25zSW5mb3JtYXRpb24oVGV4dFN0cmVhbSYgc3RyZWFtKSBjb25zdAogewogICAgIGNv
bnN0IFJlbmRlckZsb3dUaHJlYWQqIGZ0Y2IgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrRnJv
bVJlbmRlcmVyKHRoaXMpOwogCkBAIC0xMDcyLDExMSArMTA3OSwxMTEgQEAgdm9pZCBSZW5kZXJP
YmplY3Q6OnNob3dSZWdpb25zSW5mb3JtYXRpb24oKSBjb25zdAogICAgIFJlbmRlclJlZ2lvbiog
c3RhcnRSZWdpb24gPSBudWxscHRyOwogICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gbnVs
bHB0cjsKICAgICBmdGNiLT5nZXRSZWdpb25SYW5nZUZvckJveChkb3duY2FzdDxSZW5kZXJCb3g+
KHRoaXMpLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiBb
UnM6JXAgUmU6JXBdIiwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CisgICAgc3RyZWFtIDw8ICIg
W1JzOiIgPDwgc3RhcnRSZWdpb24gPDwgIiBSZToiIDw8IGVuZFJlZ2lvbiA8PCAiXSI7CiB9CiAK
LXZvaWQgUmVuZGVyT2JqZWN0OjpzaG93UmVuZGVyT2JqZWN0KGJvb2wgbWFyaywgaW50IGRlcHRo
KSBjb25zdAordm9pZCBSZW5kZXJPYmplY3Q6OnNob3dSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYg
c3RyZWFtLCBib29sIG1hcmssIGludCBkZXB0aCkgY29uc3QKIHsKICAgICBpZiAoaXNJbmxpbmVC
bG9ja09ySW5saW5lVGFibGUoKSkKLSAgICAgICAgZnB1dGMoJ04nLCBzdGRlcnIpOworICAgICAg
ICBzdHJlYW0gPDwgIk4iOwogICAgIGVsc2UgaWYgKGlzSW5saW5lKCkpCi0gICAgICAgIGZwdXRj
KCdJJywgc3RkZXJyKTsKKyAgICAgICAgc3RyZWFtIDw8ICJJIjsKICAgICBlbHNlCi0gICAgICAg
IGZwdXRjKCdCJywgc3RkZXJyKTsKLSAgICAKKyAgICAgICAgc3RyZWFtIDw8ICJCIjsKKwogICAg
IGlmIChpc1Bvc2l0aW9uZWQoKSkgewogICAgICAgICBpZiAoaXNSZWxQb3NpdGlvbmVkKCkpCi0g
ICAgICAgICAgICBmcHV0YygnUicsIHN0ZGVycik7CisgICAgICAgICAgICBzdHJlYW0gPDwgIlIi
OwogICAgICAgICBlbHNlIGlmIChpc1N0aWNreVBvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGZw
dXRjKCdLJywgc3RkZXJyKTsKKyAgICAgICAgICAgIHN0cmVhbSA8PCAiSyI7CiAgICAgICAgIGVs
c2UgaWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CiAgICAgICAgICAgICBpZiAoc3R5bGUo
KS5wb3NpdGlvbigpID09IEFic29sdXRlUG9zaXRpb24pCi0gICAgICAgICAgICAgICAgZnB1dGMo
J0EnLCBzdGRlcnIpOworICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiQSI7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgZnB1dGMoJ1gnLCBzdGRlcnIpOworICAgICAgICAgICAg
ICAgIHN0cmVhbSA8PCAiWCI7CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgZnB1dGMo
Jy0nLCBzdGRlcnIpOworICAgICAgICBzdHJlYW0gPDwgIi0iOwogCiAgICAgaWYgKGlzRmxvYXRp
bmcoKSkKLSAgICAgICAgZnB1dGMoJ0YnLCBzdGRlcnIpOworICAgICAgICBzdHJlYW0gPDwgIkYi
OwogICAgIGVsc2UKLSAgICAgICAgZnB1dGMoJy0nLCBzdGRlcnIpOworICAgICAgICBzdHJlYW0g
PDwgIi0iOwogCiAgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpKQotICAgICAgICBmcHV0YygnTycs
IHN0ZGVycik7CisgICAgICAgIHN0cmVhbSA8PCAiTyI7CiAgICAgZWxzZQotICAgICAgICBmcHV0
YygnLScsIHN0ZGVycik7CisgICAgICAgIHN0cmVhbSA8PCAiLSI7CiAKICAgICBpZiAoaXNBbm9u
eW1vdXMoKSkKLSAgICAgICAgZnB1dGMoJ1knLCBzdGRlcnIpOworICAgICAgICBzdHJlYW0gPDwg
IlkiOwogICAgIGVsc2UKLSAgICAgICAgZnB1dGMoJy0nLCBzdGRlcnIpOworICAgICAgICBzdHJl
YW0gPDwgIi0iOwogCiAgICAgaWYgKGlzUHNldWRvRWxlbWVudCgpIHx8IGlzQW5vbnltb3VzKCkp
Ci0gICAgICAgIGZwdXRjKCdHJywgc3RkZXJyKTsKKyAgICAgICAgc3RyZWFtIDw8ICJHIjsKICAg
ICBlbHNlCi0gICAgICAgIGZwdXRjKCctJywgc3RkZXJyKTsKKyAgICAgICAgc3RyZWFtIDw8ICIt
IjsKIAogICAgIGlmIChoYXNMYXllcigpKQotICAgICAgICBmcHV0YygnTCcsIHN0ZGVycik7Cisg
ICAgICAgIHN0cmVhbSA8PCAiTCI7CiAgICAgZWxzZQotICAgICAgICBmcHV0YygnLScsIHN0ZGVy
cik7CisgICAgICAgIHN0cmVhbSA8PCAiLSI7CiAKICAgICBpZiAoaXNDb21wb3NpdGVkKCkpCi0g
ICAgICAgIGZwdXRjKCdDJywgc3RkZXJyKTsKKyAgICAgICAgc3RyZWFtIDw8ICJDIjsKICAgICBl
bHNlCi0gICAgICAgIGZwdXRjKCctJywgc3RkZXJyKTsKKyAgICAgICAgc3RyZWFtIDw8ICItIjsK
IAotICAgIGZwdXRjKCcgJywgc3RkZXJyKTsKKyAgICBzdHJlYW0gPDwgIiAiOwogCiAgICAgaWYg
KG5vZGUoKSAmJiBub2RlKCktPm5lZWRzU3R5bGVSZWNhbGMoKSkKLSAgICAgICAgZnB1dGMoJysn
LCBzdGRlcnIpOworICAgICAgICBzdHJlYW0gPDwgIisiOwogICAgIGVsc2UKLSAgICAgICAgZnB1
dGMoJy0nLCBzdGRlcnIpOworICAgICAgICBzdHJlYW0gPDwgIi0iOwogCiAgICAgaWYgKG5lZWRz
TGF5b3V0KCkpCi0gICAgICAgIGZwdXRjKCcrJywgc3RkZXJyKTsKKyAgICAgICAgc3RyZWFtIDw8
ICIrIjsKICAgICBlbHNlCi0gICAgICAgIGZwdXRjKCctJywgc3RkZXJyKTsKKyAgICAgICAgc3Ry
ZWFtIDw8ICItIjsKIAogICAgIGludCBwcmludGVkQ2hhcmFjdGVycyA9IDA7CiAgICAgaWYgKG1h
cmspIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIqIik7CisgICAgICAgIHN0cmVhbSA8PCAi
KiI7CiAgICAgICAgICsrcHJpbnRlZENoYXJhY3RlcnM7CiAgICAgfQogCiAgICAgd2hpbGUgKCsr
cHJpbnRlZENoYXJhY3RlcnMgPD0gZGVwdGggKiAyKQotICAgICAgICBmcHV0YygnICcsIHN0ZGVy
cik7CisgICAgICAgIHN0cmVhbSA8PCAiICI7CiAKICAgICBpZiAobm9kZSgpKQotICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiVzICIsIG5vZGUoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgc3RyZWFtIDw8IG5vZGUoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpIDw8ICIg
IjsKIAogICAgIFN0cmluZyBuYW1lID0gcmVuZGVyTmFtZSgpOwogICAgIC8vIEZJWE1FOiBSZW5k
ZXJlcidzIG5hbWUgc2hvdWxkIG5vdCBpbmNsdWRlIHByb3BlcnR5IHZhbHVlIGxpc3RpbmcuCiAg
ICAgaW50IHBvcyA9IG5hbWUuZmluZCgnKCcpOwogICAgIGlmIChwb3MgPiAwKQotICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiVzIiwgbmFtZS5sZWZ0KHBvcyAtIDEpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBzdHJlYW0gPDwgbmFtZS5sZWZ0KHBvcyAtIDEpLnV0ZjgoKS5kYXRhKCk7CiAgICAg
ZWxzZQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgc3RyZWFtIDw8IG5hbWUudXRmOCgpLmRhdGEoKTsKIAogICAgIGlmIChpczxSZW5k
ZXJCb3g+KCp0aGlzKSkgewogICAgICAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5k
ZXJCb3g+KCp0aGlzKTsKICAgICAgICAgRmxvYXRSZWN0IGJveFJlY3QgPSByZW5kZXJCb3guZnJh
bWVSZWN0KCk7CiAgICAgICAgIGlmIChyZW5kZXJCb3guaXNJbkZsb3dQb3NpdGlvbmVkKCkpCiAg
ICAgICAgICAgICBib3hSZWN0Lm1vdmUocmVuZGVyQm94Lm9mZnNldEZvckluRmxvd1Bvc2l0aW9u
KCkpOwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgKCUuMmYsICUuMmYpICglLjJmLCAlLjJm
KSIsIGJveFJlY3QueCgpLCBib3hSZWN0LnkoKSwgYm94UmVjdC53aWR0aCgpLCBib3hSZWN0Lmhl
aWdodCgpKTsKKyAgICAgICAgc3RyZWFtIDw8ICIgIiA8PCBib3hSZWN0OwogICAgIH0gZWxzZSBp
ZiAoaXM8UmVuZGVySW5saW5lPigqdGhpcykgJiYgaXNJbkZsb3dQb3NpdGlvbmVkKCkpIHsKICAg
ICAgICAgRmxvYXRTaXplIGlubGluZU9mZnNldCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKnRo
aXMpLm9mZnNldEZvckluRmxvd1Bvc2l0aW9uKCk7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAi
ICAoJS4yZiwgJS4yZikiLCBpbmxpbmVPZmZzZXQud2lkdGgoKSwgaW5saW5lT2Zmc2V0LmhlaWdo
dCgpKTsKKyAgICAgICAgc3RyZWFtIDw8ICIgICgiIDw8IGlubGluZU9mZnNldC53aWR0aCgpIDw8
ICIsICIgPDwgaW5saW5lT2Zmc2V0LmhlaWdodCgpIDw8ICIpIjsKICAgICB9CiAKLSAgICBmcHJp
bnRmKHN0ZGVyciwgIiByZW5kZXJlci0+KCVwKSIsIHRoaXMpOworICAgIHN0cmVhbSA8PCAiIHJl
bmRlcmVyLT4oIiA8PCB0aGlzIDw8ICIpIjsKICAgICBpZiAobm9kZSgpKSB7Ci0gICAgICAgIGZw
cmludGYoc3RkZXJyLCAiIG5vZGUtPiglcCkiLCBub2RlKCkpOworICAgICAgICBzdHJlYW0gPDwg
IiBub2RlLT4oIiA8PCBub2RlKCkgPDwgIikiOwogICAgICAgICBpZiAobm9kZSgpLT5pc1RleHRO
b2RlKCkpIHsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IG5vZGUoKS0+bm9kZVZhbHVlKCk7
Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiBsZW5ndGgtPigldSkiLCB2YWx1ZS5sZW5n
dGgoKSk7CisgICAgICAgICAgICBzdHJlYW0gPDwgIiBsZW5ndGgtPigiIDw8IHZhbHVlLmxlbmd0
aCgpIDw8ICIpIjsKIAogICAgICAgICAgICAgdmFsdWUucmVwbGFjZVdpdGhMaXRlcmFsKCdcXCcs
ICJcXFxcIik7CiAgICAgICAgICAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVyYWwoJ1xuJywgIlxc
biIpOwpAQCAtMTE4NCw0MSArMTE5MSw0MSBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2hvd1JlbmRl
ck9iamVjdChib29sIG1hcmssIGludCBkZXB0aCkgY29uc3QKICAgICAgICAgICAgIGNvbnN0IGlu
dCBtYXhQcmludGVkTGVuZ3RoID0gODA7CiAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoKCkg
PiBtYXhQcmludGVkTGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIHN1YnN0cmluZyA9
IHZhbHVlLnN1YnN0cmluZygwLCBtYXhQcmludGVkTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgIiBcIiVzXCIuLi4iLCBzdWJzdHJpbmcudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgXCIiIDw8IHN1YnN0cmluZy51dGY4KCkuZGF0YSgp
IDw8ICJcIi4uLiI7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgIiBcIiVzXCIiLCB2YWx1ZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAg
ICBzdHJlYW0gPDwgIiBcIiIgPDwgdmFsdWUudXRmOCgpLmRhdGEoKSA8PCAiXCIiOwogICAgICAg
ICB9CiAgICAgfQogICAgIGlmIChpczxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKnRoaXMpKSB7CiAg
ICAgICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KCp0
aGlzKTsKICAgICAgICAgaWYgKHJlbmRlcmVyLmhhc0NvbnRpbnVhdGlvbigpKQotICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICIgY29udGludWF0aW9uLT4oJXApIiwgcmVuZGVyZXIuY29udGlu
dWF0aW9uKCkpOworICAgICAgICAgICAgc3RyZWFtIDw8ICIgY29udGludWF0aW9uLT4oIiA8PCBy
ZW5kZXJlci5jb250aW51YXRpb24oKSA8PCAiKSI7CiAgICAgfQotICAgIHNob3dSZWdpb25zSW5m
b3JtYXRpb24oKTsKKyAgICBzaG93UmVnaW9uc0luZm9ybWF0aW9uKHN0cmVhbSk7CiAgICAgaWYg
KG5lZWRzTGF5b3V0KCkpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIgbGF5b3V0LT4iKTsK
KyAgICAgICAgc3RyZWFtIDw8ICIgbGF5b3V0LT4iOwogICAgICAgICBpZiAoc2VsZk5lZWRzTGF5
b3V0KCkpCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIltzZWxmXSIpOworICAgICAgICAg
ICAgc3RyZWFtIDw8ICJbc2VsZl0iOwogICAgICAgICBpZiAobm9ybWFsQ2hpbGROZWVkc0xheW91
dCgpKQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJbbm9ybWFsIGNoaWxkXSIpOworICAg
ICAgICAgICAgc3RyZWFtIDw8ICJbbm9ybWFsIGNoaWxkXSI7CiAgICAgICAgIGlmIChwb3NDaGls
ZE5lZWRzTGF5b3V0KCkpCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIltwb3NpdGlvbmVk
IGNoaWxkXSIpOworICAgICAgICAgICAgc3RyZWFtIDw8ICJbcG9zaXRpb25lZCBjaGlsZF0iOwog
ICAgICAgICBpZiAobmVlZHNTaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dCgpKQotICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJbc2ltcGxpZmllZF0iKTsKKyAgICAgICAgICAgIHN0cmVhbSA8
PCAiW3NpbXBsaWZpZWRdIjsKICAgICAgICAgaWYgKG5lZWRzUG9zaXRpb25lZE1vdmVtZW50TGF5
b3V0KCkpCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIltwb3NpdGlvbmVkIG1vdmVtZW50
XSIpOworICAgICAgICAgICAgc3RyZWFtIDw8ICJbcG9zaXRpb25lZCBtb3ZlbWVudF0iOwogICAg
IH0KLSAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CisgICAgc3RyZWFtLm5leHRMaW5lKCk7CiB9
CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjpzaG93UmVuZGVyU3ViVHJlZUFuZE1hcmsoY29uc3QgUmVu
ZGVyT2JqZWN0KiBtYXJrZWRPYmplY3QsIGludCBkZXB0aCkgY29uc3QKK3ZvaWQgUmVuZGVyT2Jq
ZWN0OjpzaG93UmVuZGVyU3ViVHJlZUFuZE1hcmsoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBS
ZW5kZXJPYmplY3QqIG1hcmtlZE9iamVjdCwgaW50IGRlcHRoKSBjb25zdAogewotICAgIHNob3dS
ZW5kZXJPYmplY3QobWFya2VkT2JqZWN0ID09IHRoaXMsIGRlcHRoKTsKKyAgICBzaG93UmVuZGVy
T2JqZWN0KHN0cmVhbSwgbWFya2VkT2JqZWN0ID09IHRoaXMsIGRlcHRoKTsKICAgICBpZiAoaXM8
UmVuZGVyQmxvY2tGbG93PigqdGhpcykpCi0gICAgICAgIGRvd25jYXN0PFJlbmRlckJsb2NrRmxv
dz4oKnRoaXMpLnNob3dMaW5lVHJlZUFuZE1hcmsobnVsbHB0ciwgZGVwdGggKyAxKTsKKyAgICAg
ICAgZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqdGhpcykuc2hvd0xpbmVUcmVlQW5kTWFyayhz
dHJlYW0sIG51bGxwdHIsIGRlcHRoICsgMSk7CiAKICAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVj
dCogY2hpbGQgPSBmaXJzdENoaWxkU2xvdygpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkKLSAgICAgICAgY2hpbGQtPnNob3dSZW5kZXJTdWJUcmVlQW5kTWFyayhtYXJrZWRP
YmplY3QsIGRlcHRoICsgMSk7CisgICAgICAgIGNoaWxkLT5zaG93UmVuZGVyU3ViVHJlZUFuZE1h
cmsoc3RyZWFtLCBtYXJrZWRPYmplY3QsIGRlcHRoICsgMSk7CiB9CiAKICNlbmRpZiAvLyBOREVC
VUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBiNTFhODBlMTAz
NmRhZjIwNTgyYjJmYmQ1N2FiMmUzNWMxMzM1Y2U0Li4zNWVkY2U2Y2M0ZDhkZjc5ZDEyYjRkNDEx
YjRiODg4MTRkNTc0OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CkBAIC0yMDUsOSArMjA1LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd1JlbmRlclRyZWVGb3JU
aGlzKCkgY29uc3Q7CiAgICAgdm9pZCBzaG93TGluZVRyZWVGb3JUaGlzKCkgY29uc3Q7CiAKLSAg
ICB2b2lkIHNob3dSZW5kZXJPYmplY3QoYm9vbCBtYXJrLCBpbnQgZGVwdGgpIGNvbnN0OwotICAg
IHZvaWQgc2hvd1JlbmRlclN1YlRyZWVBbmRNYXJrKGNvbnN0IFJlbmRlck9iamVjdCogbWFya2Vk
T2JqZWN0LCBpbnQgZGVwdGgpIGNvbnN0OwotICAgIHZvaWQgc2hvd1JlZ2lvbnNJbmZvcm1hdGlv
bigpIGNvbnN0OworICAgIHZvaWQgc2hvd1JlbmRlck9iamVjdChUZXh0U3RyZWFtJiwgYm9vbCBt
YXJrLCBpbnQgZGVwdGgpIGNvbnN0OworICAgIHZvaWQgc2hvd1JlbmRlclN1YlRyZWVBbmRNYXJr
KFRleHRTdHJlYW0mLCBjb25zdCBSZW5kZXJPYmplY3QqIG1hcmtlZE9iamVjdCwgaW50IGRlcHRo
KSBjb25zdDsKKyAgICB2b2lkIHNob3dSZWdpb25zSW5mb3JtYXRpb24oVGV4dFN0cmVhbSYpIGNv
bnN0OwogI2VuZGlmCiAKICAgICBib29sIGlzUHNldWRvRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG5vZGUoKSAmJiBub2RlKCktPmlzUHNldWRvRWxlbWVudCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKaW5kZXgg
ODNiMTJmMTUwODlhMmQxNWM0MWIxYzQwZGU0YmExNDk3YjNjYzFmNS4uNDE2Y2ZhYmI2Y2UyYmRm
M2FlYmU4MTRkMGMzNDg3OGM3ZGFiNWUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtNDYsNiArNDYsNyBA
QAogI2luY2x1ZGUgIlRleHREZWNvcmF0aW9uUGFpbnRlci5oIgogI2luY2x1ZGUgIlRleHRQYWlu
dFN0eWxlLmgiCiAjaW5jbHVkZSAiVGV4dFBhaW50ZXIuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFt
LmgiCiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAg
LTI2MSwzMyArMjYyLDM0IEBAIGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXJGb3JQb3NpdGlv
bihjb25zdCBGbG93Q29udGVudHMmIGZsb3dDb250ZW50cywgdW5zaWduCiB9CiAKICNpZiBFTkFC
TEUoVFJFRV9ERUJVR0dJTkcpCi1zdGF0aWMgdm9pZCBwcmludFByZWZpeChpbnQmIHByaW50ZWRD
aGFyYWN0ZXJzLCBpbnQgZGVwdGgpCitzdGF0aWMgdm9pZCBwcmludFByZWZpeChUZXh0U3RyZWFt
JiBzdHJlYW0sIGludCYgcHJpbnRlZENoYXJhY3RlcnMsIGludCBkZXB0aCkKIHsKLSAgICBmcHJp
bnRmKHN0ZGVyciwgIi0tLS0tLS0tIC0tIik7CisgICAgc3RyZWFtIDw8ICItLS0tLS0tLSAtLSI7
CiAgICAgcHJpbnRlZENoYXJhY3RlcnMgPSAwOwogICAgIHdoaWxlICgrK3ByaW50ZWRDaGFyYWN0
ZXJzIDw9IGRlcHRoICogMikKLSAgICAgICAgZnB1dGMoJyAnLCBzdGRlcnIpOworICAgICAgICBz
dHJlYW0gPDwgIiAiOwogfQogCi12b2lkIHNob3dMaW5lTGF5b3V0Rm9yRmxvdyhjb25zdCBSZW5k
ZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0LCBpbnQgZGVwdGgpCit2b2lk
IHNob3dMaW5lTGF5b3V0Rm9yRmxvdyhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IFJlbmRlckJs
b2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIGludCBkZXB0aCkKIHsKICAgICBp
bnQgcHJpbnRlZENoYXJhY3RlcnMgPSAwOwotICAgIHByaW50UHJlZml4KHByaW50ZWRDaGFyYWN0
ZXJzLCBkZXB0aCk7CisgICAgcHJpbnRQcmVmaXgoc3RyZWFtLCBwcmludGVkQ2hhcmFjdGVycywg
ZGVwdGgpOwogCi0gICAgZnByaW50ZihzdGRlcnIsICJTaW1wbGVMaW5lTGF5b3V0ICgldSBsaW5l
cywgJXUgcnVucykgKCVwKVxuIiwgbGF5b3V0LmxpbmVDb3VudCgpLCBsYXlvdXQucnVuQ291bnQo
KSwgJmxheW91dCk7CisgICAgc3RyZWFtIDw8ICJTaW1wbGVMaW5lTGF5b3V0ICgiIDw8IGxheW91
dC5saW5lQ291bnQoKSA8PCAiIGxpbmVzLCAiIDw8IGxheW91dC5ydW5Db3VudCgpIDw8ICIgcnVu
cykgKCIgPDwgJmxheW91dCA8PCAiKSI7CisgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAgKytk
ZXB0aDsKIAogICAgIGZvciAoYXV0byBydW4gOiBydW5SZXNvbHZlcihmbG93LCBsYXlvdXQpKSB7
CiAgICAgICAgIEZsb2F0UmVjdCByZWN0ID0gcnVuLnJlY3QoKTsKLSAgICAgICAgcHJpbnRQcmVm
aXgocHJpbnRlZENoYXJhY3RlcnMsIGRlcHRoKTsKKyAgICAgICAgcHJpbnRQcmVmaXgoc3RyZWFt
LCBwcmludGVkQ2hhcmFjdGVycywgZGVwdGgpOwogICAgICAgICBpZiAocnVuLnN0YXJ0KCkgPCBy
dW4uZW5kKCkpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAibGluZSAldSBydW4oJXUs
ICV1KSAoJS4yZiwgJS4yZikgKCUuMmYsICUuMmYpIFwiJXNcIlxuIiwgcnVuLmxpbmVJbmRleCgp
LCBydW4uc3RhcnQoKSwgcnVuLmVuZCgpLAotICAgICAgICAgICAgICAgIHJlY3QueCgpLCByZWN0
LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBydW4udGV4dCgpLnRvU3RyaW5nV2l0
aG91dENvcHlpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHN0cmVhbSA8PCAibGlu
ZSAiIDw8IHJ1bi5saW5lSW5kZXgoKSA8PCAiIHJ1bigiIDw8IHJ1bi5zdGFydCgpIDw8ICIsICIg
PDwgcnVuLmVuZCgpIDw8ICIpICIgPDwgcmVjdCA8PCAiIFwiIiA8PCBydW4udGV4dCgpLnRvU3Ry
aW5nV2l0aG91dENvcHlpbmcoKS51dGY4KCkuZGF0YSgpIDw8ICJcIiI7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBBU1NFUlQocnVuLnN0YXJ0KCkgPT0gcnVuLmVuZCgpKTsKLSAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAibGluZSBicmVhayAldSBydW4oJXUsICV1KSAoJS4yZiwg
JS4yZikgKCUuMmYsICUuMmYpXG4iLCBydW4ubGluZUluZGV4KCksIHJ1bi5zdGFydCgpLCBydW4u
ZW5kKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsK
KyAgICAgICAgICAgIHN0cmVhbSA8PCAibGluZSBicmVhayAiIDw8IHJ1bi5saW5lSW5kZXgoKSA8
PCAiIHJ1bigiIDw8IHJ1bi5zdGFydCgpIDw8ICIsICIgPDwgcnVuLmVuZCgpIDw8ICIpICIgPDwg
cmVjdDsKICAgICAgICAgfQogICAgIH0KKyAgICBzdHJlYW0ubmV4dExpbmUoKTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRG
dW5jdGlvbnMuaAppbmRleCAxZWJlNjc1ZWEwZmY4NTdhNGYzYTNlNDBhMGU4YTBhZDUzYmZhMGQ3
Li41OTMxNDJkM2MyZTQzYzgwZDEyMmZkMDI0ZTY2ZmExODM4ZGNkODExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgKQEAg
LTY3LDcgKzY3LDcgQEAgTGF5b3V0VW5pdCBiYXNlbGluZUZyb21GbG93KGNvbnN0IFJlbmRlckJs
b2NrRmxvdyYpOwogY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlckZvclBvc2l0aW9uKGNvbnN0
IEZsb3dDb250ZW50cyYsIHVuc2lnbmVkKTsKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykK
LXZvaWQgc2hvd0xpbmVMYXlvdXRGb3JGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0
IExheW91dCYsIGludCBkZXB0aCk7Cit2b2lkIHNob3dMaW5lTGF5b3V0Rm9yRmxvdyhUZXh0U3Ry
ZWFtJiwgY29uc3QgUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgTGF5b3V0JiwgaW50IGRlcHRoKTsK
ICNlbmRpZgogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314755</attachid>
            <date>2017-07-06 13:56:56 -0700</date>
            <delta_ts>2017-07-06 14:13:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173450-20170706135655.patch</filename>
            <type>text/plain</type>
            <size>24894</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU3OGNlZTRkZGI2MmQx
MmY1MGZkNDJlOTZlNmVjYTY4NWM0YTBiZS4uMTI5MzU0YWU5MDEzYzhiYjAxOWYxMWU4ODM3NDUx
ODFmMzQ3ZGVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTA3LTA2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIFdURkxvZ0Fsd2F5cyBm
b3IgZGVidWcgbG9nZ2luZyBzbyB0aGF0IGl0IHNob3dzIHVwIGluIGRldmljZSBzeXN0ZW0gbG9n
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNDUw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIElmIHlvdSB3
YW50IHRvIHNob3dSZW5kZXJUcmVlKCkgb24tZGV2aWNlLCB0aGUgcmVzdWx0IGRvZXNuJ3Qgc2hv
dyBpbiBzeXN0ZW0gbG9nIHNvIHlvdSBjYW4ndCBzZWUgaXQuCisgICAgICAgIFN3aXRjaCB0byBX
VEZMb2dBbHdheXMgdG8gZml4IHRoaXMsIGZvciBzaG93UmVuZGVyVHJlZSBhbmQgaXRzIGRlcGVu
ZGVuY2llcy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlSW5kZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6c2hvd0xpbmVUcmVl
QW5kTWFyayk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnNob3dMaW5lQm94KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvSW5saW5lQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0lubGlu
ZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6c2hvd0xpbmVU
cmVlQW5kTWFyayk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVUZXh0Qm94OjpzaG93TGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRC
b3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6c2hvd0xpbmVUcmVlQW5kTWFyayk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvd1JlbmRlclRyZWVMZWdlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzaG93UmVuZGVyVHJlZUZvclRoaXMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzaG93TGluZVRyZWVGb3JUaGlzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2hvd1JlZ2lvbnNJbmZvcm1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNob3dSZW5kZXJPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzaG93UmVuZGVyU3ViVHJlZUFuZE1hcmspOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0OjpwcmludFByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0
OjpzaG93TGluZUxheW91dEZvckZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0RnVuY3Rpb25zLmg6CisKIDIwMTctMDctMDYgIENoYXJsaWUgVHVybmVyICA8Y3R1cm5l
ckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIHZpZC5tZSB2aWRlb3MgZG8gbm90
IHBsYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0cmVh
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwCmluZGV4
IDMyZmUzYzc1N2QyNzhmYjlkZmYxN2M4Njc5NTYxZjRhNzEyZmM3NDkuLjFjMWUyMTcwN2M4YWYy
Njg3ZDYwOTU0NTFjYjhjOTEzNGI0NGQ2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0U3RyZWFtLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgVGV4dFN0cmVhbTo6
d3JpdGVJbmRlbnQoKQogCiB2b2lkIHdyaXRlSW5kZW50KFRleHRTdHJlYW0mIHRzLCBpbnQgaW5k
ZW50KQogewotICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGluZGVudDsgKytpKQorICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgaW5kZW50OyArK2kpCiAgICAgICAgIHRzIDw8ICIgICI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKaW5kZXggZDc3MWJmYzUxMTNjN2E2OGYw
OTlhZDgwODBmMTMwYjk5NjgzNmZjYy4uOGFkOTc4ZGZiMDBlNzRkN2Y3NmRkYWUzN2U5ZWU5N2My
ZTA2ZGIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKICNpbmNsdWRlICJSZW5kZXJM
aW5lQnJlYWsuaCIKICNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCisjaW5jbHVkZSAiVGV4dFN0
cmVhbS5oIgogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogI2luY2x1ZGUgPHN0ZGlvLmg+
CkBAIC0xMDAsMjIgKzEwMSwyMyBAQCB2b2lkIElubGluZUJveDo6c2hvd0xpbmVUcmVlRm9yVGhp
cygpIGNvbnN0CiAgICAgbV9yZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+c2hvd0xpbmVUcmVl
Rm9yVGhpcygpOwogfQogCi12b2lkIElubGluZUJveDo6c2hvd0xpbmVUcmVlQW5kTWFyayhjb25z
dCBJbmxpbmVCb3gqIG1hcmtlZEJveCwgaW50IGRlcHRoKSBjb25zdAordm9pZCBJbmxpbmVCb3g6
Om91dHB1dExpbmVUcmVlQW5kTWFyayhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IElubGluZUJv
eCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0CiB7Ci0gICAgc2hvd0xpbmVCb3gobWFya2Vk
Qm94ID09IHRoaXMsIGRlcHRoKTsKKyAgICBvdXRwdXRMaW5lQm94KHN0cmVhbSwgbWFya2VkQm94
ID09IHRoaXMsIGRlcHRoKTsKIH0KIAotdm9pZCBJbmxpbmVCb3g6OnNob3dMaW5lQm94KGJvb2wg
bWFyaywgaW50IGRlcHRoKSBjb25zdAordm9pZCBJbmxpbmVCb3g6Om91dHB1dExpbmVCb3goVGV4
dFN0cmVhbSYgc3RyZWFtLCBib29sIG1hcmssIGludCBkZXB0aCkgY29uc3QKIHsKLSAgICBmcHJp
bnRmKHN0ZGVyciwgIi0tLS0tLS0tICVjLSIsIGlzRGlydHkoKSA/ICdEJyA6ICctJyk7CisgICAg
c3RyZWFtIDw8ICItLS0tLS0tLSAiIDw8IChpc0RpcnR5KCkgPyAiRCIgOiAiLSIpIDw8ICItIjsK
ICAgICBpbnQgcHJpbnRlZENoYXJhY3RlcnMgPSAwOwogICAgIGlmIChtYXJrKSB7Ci0gICAgICAg
IGZwcmludGYoc3RkZXJyLCAiKiIpOworICAgICAgICBzdHJlYW0gPDwgIioiOwogICAgICAgICAr
K3ByaW50ZWRDaGFyYWN0ZXJzOwogICAgIH0KICAgICB3aGlsZSAoKytwcmludGVkQ2hhcmFjdGVy
cyA8PSBkZXB0aCAqIDIpCi0gICAgICAgIGZwdXRjKCcgJywgc3RkZXJyKTsKLSAgICBmcHJpbnRm
KHN0ZGVyciwgIiVzICAoJS4yZiwgJS4yZikgKCUuMmYsICUuMmYpICglcCkgcmVuZGVyZXItPigl
cClcbiIsIGJveE5hbWUoKSwgeCgpLCB5KCksIHdpZHRoKCksIGhlaWdodCgpLCB0aGlzLCAmcmVu
ZGVyZXIoKSk7CisgICAgICAgIHN0cmVhbSA8PCAiICI7CisgICAgc3RyZWFtIDw8IGJveE5hbWUo
KSA8PCAiICIgPDwgRmxvYXRSZWN0KHgoKSwgeSgpLCB3aWR0aCgpLCBoZWlnaHQoKSkgPDwgIiAo
IiA8PCB0aGlzIDw8ICIpIHJlbmRlcmVyLT4oIiA8PCAmcmVuZGVyZXIoKSA8PCAiKSI7CisgICAg
c3RyZWFtLm5leHRMaW5lKCk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVFJFRV9ERUJVR0dJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKaW5kZXggYmI1OWQxMjBiZGJjZWExNWQ3
ODUxMWQ2ZDA3YTI4ZjFlYzBjMTViMC4uODI2MWZiMjg3MWU3NjE3NjgyZDg2ZGRlNTg2Y2FiMzhk
MGM5MzNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaApAQCAtNzYsOCArNzYs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93Tm9kZVRyZWVGb3JUaGlzKCkgY29uc3Q7CiAgICAg
dm9pZCBzaG93TGluZVRyZWVGb3JUaGlzKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCB2b2lk
IHNob3dMaW5lVHJlZUFuZE1hcmsoY29uc3QgSW5saW5lQm94KiBtYXJrZWRCb3gsIGludCBkZXB0
aCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNob3dMaW5lQm94KGJvb2wgbWFyaywgaW50IGRl
cHRoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgb3V0cHV0TGluZVRyZWVBbmRNYXJrKFRleHRT
dHJlYW0mLCBjb25zdCBJbmxpbmVCb3gqIG1hcmtlZEJveCwgaW50IGRlcHRoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgb3V0cHV0TGluZUJveChUZXh0U3RyZWFtJiwgYm9vbCBtYXJrLCBpbnQg
ZGVwdGgpIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogYm94TmFtZSgpIGNvbnN0Owog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRl
eCA1MThkMjJmNjAyNTUyZWQ0ZjlhZjkwNzQ4ODk2NTQ3NWY3MjAxNjJkLi44ZGY3ODllMGI3NDIx
MjM1MTE2MTRjZTVmNmY4M2UyMjhiNzZjNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwCkBAIC0xNzM1LDExICsxNzM1LDExIEBAIGNvbnN0IGNoYXIqIElu
bGluZUZsb3dCb3g6OmJveE5hbWUoKSBjb25zdAogICAgIHJldHVybiAiSW5saW5lRmxvd0JveCI7
CiB9CiAKLXZvaWQgSW5saW5lRmxvd0JveDo6c2hvd0xpbmVUcmVlQW5kTWFyayhjb25zdCBJbmxp
bmVCb3gqIG1hcmtlZEJveCwgaW50IGRlcHRoKSBjb25zdAordm9pZCBJbmxpbmVGbG93Qm94Ojpv
dXRwdXRMaW5lVHJlZUFuZE1hcmsoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBJbmxpbmVCb3gq
IG1hcmtlZEJveCwgaW50IGRlcHRoKSBjb25zdAogewotICAgIElubGluZUJveDo6c2hvd0xpbmVU
cmVlQW5kTWFyayhtYXJrZWRCb3gsIGRlcHRoKTsKKyAgICBJbmxpbmVCb3g6Om91dHB1dExpbmVU
cmVlQW5kTWFyayhzdHJlYW0sIG1hcmtlZEJveCwgZGVwdGgpOwogICAgIGZvciAoY29uc3QgSW5s
aW5lQm94KiBib3ggPSBmaXJzdENoaWxkKCk7IGJveDsgYm94ID0gYm94LT5uZXh0T25MaW5lKCkp
Ci0gICAgICAgIGJveC0+c2hvd0xpbmVUcmVlQW5kTWFyayhtYXJrZWRCb3gsIGRlcHRoICsgMSk7
CisgICAgICAgIGJveC0+b3V0cHV0TGluZVRyZWVBbmRNYXJrKHN0cmVhbSwgbWFya2VkQm94LCBk
ZXB0aCArIDEpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVGbG93Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxv
d0JveC5oCmluZGV4IDU3MmIwMjU2MWIxZDkxZjZhZWIwYzQ4ZDFiZWUyNjMyYjM1NmVlZjAuLmRk
YTNiMzA1YjhmZjBiYjJiYjMzYzY1NjMwZmIwYjQwMDQ2OWIyYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKLSAgICB2b2lkIHNob3dMaW5lVHJlZUFu
ZE1hcmsoY29uc3QgSW5saW5lQm94KiBtYXJrZWRCb3gsIGludCBkZXB0aCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdm9pZCBvdXRwdXRMaW5lVHJlZUFuZE1hcmsoVGV4dFN0cmVhbSYsIGNvbnN0IElu
bGluZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0
IGNoYXIqIGJveE5hbWUoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNGViMDBkM2VhMzY1NGE0ZDVlNThm
OGIyNzkyMzAyMjUwNDYxNWRmZC4uZWI1ZDY0OThiM2YwYWE0MjU0OTlhZGM2NmNjYjRhODdhMTY4
NzIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAt
NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlRleHREZWNvcmF0aW9uUGFpbnRlci5oIgogI2luY2x1
ZGUgIlRleHRQYWludFN0eWxlLmgiCiAjaW5jbHVkZSAiVGV4dFBhaW50ZXIuaCIKKyNpbmNsdWRl
ICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKQEAgLTExMjMsMjMgKzExMjQsMjQgQEAgY29uc3QgY2hhciogSW5saW5lVGV4
dEJveDo6Ym94TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJJbmxpbmVUZXh0Qm94IjsKIH0KIAot
dm9pZCBJbmxpbmVUZXh0Qm94OjpzaG93TGluZUJveChib29sIG1hcmssIGludCBkZXB0aCkgY29u
c3QKK3ZvaWQgSW5saW5lVGV4dEJveDo6b3V0cHV0TGluZUJveChUZXh0U3RyZWFtJiBzdHJlYW0s
IGJvb2wgbWFyaywgaW50IGRlcHRoKSBjb25zdAogewotICAgIGZwcmludGYoc3RkZXJyLCAiLS0t
LS0tLS0gJWMtIiwgaXNEaXJ0eSgpID8gJ0QnIDogJy0nKTsKKyAgICBzdHJlYW0gPDwgIi0tLS0t
LS0tICIgPDwgKGlzRGlydHkoKSA/ICJEIiA6ICItIikgPDwgIi0iOwogCiAgICAgaW50IHByaW50
ZWRDaGFyYWN0ZXJzID0gMDsKICAgICBpZiAobWFyaykgewotICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIioiKTsKKyAgICAgICAgc3RyZWFtIDw8ICIqIjsKICAgICAgICAgKytwcmludGVkQ2hhcmFj
dGVyczsKICAgICB9CiAgICAgd2hpbGUgKCsrcHJpbnRlZENoYXJhY3RlcnMgPD0gZGVwdGggKiAy
KQotICAgICAgICBmcHV0YygnICcsIHN0ZGVycik7CisgICAgICAgIHN0cmVhbSA8PCAiICI7CiAK
ICAgICBTdHJpbmcgdmFsdWUgPSByZW5kZXJlcigpLnRleHQoKTsKICAgICB2YWx1ZSA9IHZhbHVl
LnN1YnN0cmluZyhzdGFydCgpLCBsZW4oKSk7CiAgICAgdmFsdWUucmVwbGFjZVdpdGhMaXRlcmFs
KCdcXCcsICJcXFxcIik7CiAgICAgdmFsdWUucmVwbGFjZVdpdGhMaXRlcmFsKCdcbicsICJcXG4i
KTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzICAoJS4yZiwgJS4yZikgKCUuMmYsICUuMmYpICgl
cCkgcmVuZGVyZXItPiglcCkgcnVuKCVkLCAlZCkgXCIlc1wiXG4iLCBib3hOYW1lKCksIHgoKSwg
eSgpLCB3aWR0aCgpLCBoZWlnaHQoKSwgdGhpcywgJnJlbmRlcmVyKCksIHN0YXJ0KCksIHN0YXJ0
KCkgKyBsZW4oKSwgdmFsdWUudXRmOCgpLmRhdGEoKSk7CisgICAgc3RyZWFtIDw8IGJveE5hbWUo
KSA8PCAiICIgPDwgRmxvYXRSZWN0KHgoKSwgeSgpLCB3aWR0aCgpLCBoZWlnaHQoKSkgPDwgIiAo
IiA8PCB0aGlzIDw8ICIpIHJlbmRlcmVyLT4oIiA8PCAmcmVuZGVyZXIoKSA8PCAiKSBydW4oIiA8
PCBzdGFydCgpIDw8ICIsICIgPDwgc3RhcnQoKSArIGxlbigpIDw8ICIpIFwiIiA8PCB2YWx1ZS51
dGY4KCkuZGF0YSgpIDw8ICJcIiI7CisgICAgc3RyZWFtLm5leHRMaW5lKCk7CiB9CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKaW5kZXggNGYxOWM5ZGRk
OGU5MTcyZDc0ZGFmYjc1NTkyZmM5MWIxMDBlZWY2ZC4uMjhkYTBjMjNkNWU5ZTViMGFkMjBlNzM1
MDAxODY1MTQ3MWVjOGUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5oCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlydHlPd25M
aW5lQm94ZXMoKSB7IGRpcnR5TGluZUJveGVzKCk7IH0KIAogI2lmIEVOQUJMRShUUkVFX0RFQlVH
R0lORykKLSAgICB2b2lkIHNob3dMaW5lQm94KGJvb2wgbWFyaywgaW50IGRlcHRoKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIG91dHB1dExpbmVCb3goVGV4dFN0cmVhbSYsIGJvb2wgbWFyaywgaW50
IGRlcHRoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBib3hOYW1lKCkgY29uc3QgZmlu
YWw7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcAppbmRleCBlMDI2YTA0MWY2NTBkNzAxYWNkNDgxNzdhNzE5YmE2NWY4NGQ3ZWQ3Li4yNDBk
M2U3ZGNmOGY5MTdmMDdkNzJlYTdmYmEwODcyYWUxZDlkZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzc2OSwxMyArMzc2OSwxMyBAQCB2
b2lkIFJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlTGluZUJveGVzKCkKIH0KIAogI2lmIEVOQUJMRShU
UkVFX0RFQlVHR0lORykKLXZvaWQgUmVuZGVyQmxvY2tGbG93OjpzaG93TGluZVRyZWVBbmRNYXJr
KGNvbnN0IElubGluZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0Cit2b2lkIFJlbmRl
ckJsb2NrRmxvdzo6b3V0cHV0TGluZVRyZWVBbmRNYXJrKFRleHRTdHJlYW0mIHN0cmVhbSwgY29u
c3QgSW5saW5lQm94KiBtYXJrZWRCb3gsIGludCBkZXB0aCkgY29uc3QKIHsKICAgICBmb3IgKGNv
bnN0IFJvb3RJbmxpbmVCb3gqIHJvb3QgPSBmaXJzdFJvb3RCb3goKTsgcm9vdDsgcm9vdCA9IHJv
b3QtPm5leHRSb290Qm94KCkpCi0gICAgICAgIHJvb3QtPnNob3dMaW5lVHJlZUFuZE1hcmsobWFy
a2VkQm94LCBkZXB0aCk7CisgICAgICAgIHJvb3QtPm91dHB1dExpbmVUcmVlQW5kTWFyayhzdHJl
YW0sIG1hcmtlZEJveCwgZGVwdGgpOwogCiAgICAgaWYgKGF1dG8gc2ltcGxlTGluZUxheW91dCA9
IHRoaXMtPnNpbXBsZUxpbmVMYXlvdXQoKSkKLSAgICAgICAgU2ltcGxlTGluZUxheW91dDo6c2hv
d0xpbmVMYXlvdXRGb3JGbG93KCp0aGlzLCAqc2ltcGxlTGluZUxheW91dCwgZGVwdGgpOworICAg
ICAgICBTaW1wbGVMaW5lTGF5b3V0OjpvdXRwdXRMaW5lTGF5b3V0Rm9yRmxvdyhzdHJlYW0sICp0
aGlzLCAqc2ltcGxlTGluZUxheW91dCwgZGVwdGgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCA5YjBmMzA5MTQ3YWVkNTQ2MmM2
MWJiMmU1NjhjMzJkMDJmYzg5NGY3Li5kZDM0MjcyZDAwZTA3MTQ1MGNkNDdiNDM1OTFhODAwODky
YmMyOTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBA
IC0zNzIsNyArMzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5zdXJlTGluZUJveGVzKCk7CiAK
ICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCi0gICAgdm9pZCBzaG93TGluZVRyZWVBbmRNYXJr
KGNvbnN0IElubGluZUJveCogbWFya2VkQm94LCBpbnQgZGVwdGgpIGNvbnN0OworICAgIHZvaWQg
b3V0cHV0TGluZVRyZWVBbmRNYXJrKFRleHRTdHJlYW0mLCBjb25zdCBJbmxpbmVCb3gqIG1hcmtl
ZEJveCwgaW50IGRlcHRoKSBjb25zdDsKICNlbmRpZgogCiAgICAgLy8gUmV0dXJucyB0aGUgbG9n
aWNhbE9mZnNldCBhdCB0aGUgdG9wIG9mIHRoZSBuZXh0IHBhZ2UuIElmIHRoZSBvZmZzZXQgcGFz
c2VkIGluIGlzIGFscmVhZHkgYXQgdGhlIHRvcCBvZiB0aGUgY3VycmVudCBwYWdlLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAyNjlhYzk3NTg2ZmQ4OGRi
Y2ZlNjY2NTQyYzQ3M2IxOTI5MzIwMTRkLi45NjhhMjRjOTkxNjc5ZmIyYmMxYjI5YmE2MmZkNmEy
NWUyYTNkYjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApA
QCAtNjksNiArNjksNyBAQAogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNW
R1JlbmRlclN1cHBvcnQuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCisjaW5jbHVkZSAi
VGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCiAjaW5jbHVkZSA8YWxn
b3JpdGhtPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xMDA3LDkgKzEwMDgsMTEgQEAgRmxvYXRS
ZWN0IFJlbmRlck9iamVjdDo6Y29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgUmVuZGUKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKIAotc3RhdGlj
IHZvaWQgc2hvd1JlbmRlclRyZWVMZWdlbmQoKQorc3RhdGljIHZvaWQgb3V0cHV0UmVuZGVyVHJl
ZUxlZ2VuZChUZXh0U3RyZWFtJiBzdHJlYW0pCiB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJcbihC
KWxvY2svKEkpbmxpbmUvSShOKWxpbmUtYmxvY2ssIChBKWJzb2x1dGUvRmkoWCllZC8oUillbGF0
aXZlL1N0aWMoSyl5LCAoRilsb2F0aW5nLCAoTyl2ZXJmbG93IGNsaXAsIEFub24oWSltb3VzLCAo
RyllbmVyYXRlZCwgaGFzKEwpYXllciwgKEMpb21wb3NpdGVkLCAoKylEaXJ0eSBzdHlsZSwgKCsp
RGlydHkgbGF5b3V0XG4iKTsKKyAgICBzdHJlYW0ubmV4dExpbmUoKTsKKyAgICBzdHJlYW0gPDwg
IihCKWxvY2svKEkpbmxpbmUvSShOKWxpbmUtYmxvY2ssIChBKWJzb2x1dGUvRmkoWCllZC8oUill
bGF0aXZlL1N0aWMoSyl5LCAoRilsb2F0aW5nLCAoTyl2ZXJmbG93IGNsaXAsIEFub24oWSltb3Vz
LCAoRyllbmVyYXRlZCwgaGFzKEwpYXllciwgKEMpb21wb3NpdGVkLCAoKylEaXJ0eSBzdHlsZSwg
KCspRGlydHkgbGF5b3V0IjsKKyAgICBzdHJlYW0ubmV4dExpbmUoKTsKIH0KIAogdm9pZCBSZW5k
ZXJPYmplY3Q6OnNob3dOb2RlVHJlZUZvclRoaXMoKSBjb25zdApAQCAtMTAyNCwxNyArMTAyNywy
MSBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2hvd1JlbmRlclRyZWVGb3JUaGlzKCkgY29uc3QKICAg
ICBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJvb3QgPSB0aGlzOwogICAgIHdoaWxlIChy
b290LT5wYXJlbnQoKSkKICAgICAgICAgcm9vdCA9IHJvb3QtPnBhcmVudCgpOwotICAgIHNob3dS
ZW5kZXJUcmVlTGVnZW5kKCk7Ci0gICAgcm9vdC0+c2hvd1JlbmRlclN1YlRyZWVBbmRNYXJrKHRo
aXMsIDEpOworICAgIFRleHRTdHJlYW0gc3RyZWFtKFRleHRTdHJlYW06OkxpbmVNb2RlOjpNdWx0
aXBsZUxpbmUsIFRleHRTdHJlYW06OkZvcm1hdHRpbmc6OlNWR1N0eWxlUmVjdCk7CisgICAgb3V0
cHV0UmVuZGVyVHJlZUxlZ2VuZChzdHJlYW0pOworICAgIHJvb3QtPm91dHB1dFJlbmRlclN1YlRy
ZWVBbmRNYXJrKHN0cmVhbSwgdGhpcywgMSk7CisgICAgV1RGTG9nQWx3YXlzKCIlcyIsIHN0cmVh
bS5yZWxlYXNlKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgUmVuZGVyT2JqZWN0OjpzaG93
TGluZVRyZWVGb3JUaGlzKCkgY29uc3QKIHsKICAgICBpZiAoIWlzPFJlbmRlckJsb2NrRmxvdz4o
KnRoaXMpKQogICAgICAgICByZXR1cm47Ci0gICAgc2hvd1JlbmRlclRyZWVMZWdlbmQoKTsKLSAg
ICBzaG93UmVuZGVyT2JqZWN0KGZhbHNlLCAxKTsKLSAgICBkb3duY2FzdDxSZW5kZXJCbG9ja0Zs
b3c+KCp0aGlzKS5zaG93TGluZVRyZWVBbmRNYXJrKG51bGxwdHIsIDIpOworICAgIFRleHRTdHJl
YW0gc3RyZWFtKFRleHRTdHJlYW06OkxpbmVNb2RlOjpNdWx0aXBsZUxpbmUsIFRleHRTdHJlYW06
OkZvcm1hdHRpbmc6OlNWR1N0eWxlUmVjdCk7CisgICAgb3V0cHV0UmVuZGVyVHJlZUxlZ2VuZChz
dHJlYW0pOworICAgIG91dHB1dFJlbmRlck9iamVjdChzdHJlYW0sIGZhbHNlLCAxKTsKKyAgICBk
b3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCp0aGlzKS5vdXRwdXRMaW5lVHJlZUFuZE1hcmsoc3Ry
ZWFtLCBudWxscHRyLCAyKTsKKyAgICBXVEZMb2dBbHdheXMoIiVzIiwgc3RyZWFtLnJlbGVhc2Uo
KS51dGY4KCkuZGF0YSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFJlbmRlckZsb3dUaHJlYWQqIGZs
b3dUaHJlYWRDb250YWluaW5nQmxvY2tGcm9tUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikKQEAgLTEwNTQsNyArMTA2MSw3IEBAIHN0YXRpYyBjb25zdCBSZW5kZXJGbG93VGhy
ZWFkKiBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrRnJvbVJlbmRlcmVyKGNvbnN0IFJlbmRlCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjpzaG93UmVnaW9uc0lu
Zm9ybWF0aW9uKCkgY29uc3QKK3ZvaWQgUmVuZGVyT2JqZWN0OjpvdXRwdXRSZWdpb25zSW5mb3Jt
YXRpb24oVGV4dFN0cmVhbSYgc3RyZWFtKSBjb25zdAogewogICAgIGNvbnN0IFJlbmRlckZsb3dU
aHJlYWQqIGZ0Y2IgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrRnJvbVJlbmRlcmVyKHRoaXMp
OwogCkBAIC0xMDcyLDExMSArMTA3OSwxMTEgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnNob3dSZWdp
b25zSW5mb3JtYXRpb24oKSBjb25zdAogICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBu
dWxscHRyOwogICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gbnVsbHB0cjsKICAgICBmdGNi
LT5nZXRSZWdpb25SYW5nZUZvckJveChkb3duY2FzdDxSZW5kZXJCb3g+KHRoaXMpLCBzdGFydFJl
Z2lvbiwgZW5kUmVnaW9uKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiBbUnM6JXAgUmU6JXBdIiwg
c3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CisgICAgc3RyZWFtIDw8ICIgW1JzOiIgPDwgc3RhcnRS
ZWdpb24gPDwgIiBSZToiIDw8IGVuZFJlZ2lvbiA8PCAiXSI7CiB9CiAKLXZvaWQgUmVuZGVyT2Jq
ZWN0OjpzaG93UmVuZGVyT2JqZWN0KGJvb2wgbWFyaywgaW50IGRlcHRoKSBjb25zdAordm9pZCBS
ZW5kZXJPYmplY3Q6Om91dHB1dFJlbmRlck9iamVjdChUZXh0U3RyZWFtJiBzdHJlYW0sIGJvb2wg
bWFyaywgaW50IGRlcHRoKSBjb25zdAogewogICAgIGlmIChpc0lubGluZUJsb2NrT3JJbmxpbmVU
YWJsZSgpKQotICAgICAgICBmcHV0YygnTicsIHN0ZGVycik7CisgICAgICAgIHN0cmVhbSA8PCAi
TiI7CiAgICAgZWxzZSBpZiAoaXNJbmxpbmUoKSkKLSAgICAgICAgZnB1dGMoJ0knLCBzdGRlcnIp
OworICAgICAgICBzdHJlYW0gPDwgIkkiOwogICAgIGVsc2UKLSAgICAgICAgZnB1dGMoJ0InLCBz
dGRlcnIpOwotICAgIAorICAgICAgICBzdHJlYW0gPDwgIkIiOworCiAgICAgaWYgKGlzUG9zaXRp
b25lZCgpKSB7CiAgICAgICAgIGlmIChpc1JlbFBvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIGZw
dXRjKCdSJywgc3RkZXJyKTsKKyAgICAgICAgICAgIHN0cmVhbSA8PCAiUiI7CiAgICAgICAgIGVs
c2UgaWYgKGlzU3RpY2t5UG9zaXRpb25lZCgpKQotICAgICAgICAgICAgZnB1dGMoJ0snLCBzdGRl
cnIpOworICAgICAgICAgICAgc3RyZWFtIDw8ICJLIjsKICAgICAgICAgZWxzZSBpZiAoaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgICAgIGlmIChzdHlsZSgpLnBvc2l0aW9uKCkg
PT0gQWJzb2x1dGVQb3NpdGlvbikKLSAgICAgICAgICAgICAgICBmcHV0YygnQScsIHN0ZGVycik7
CisgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICJBIjsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBmcHV0YygnWCcsIHN0ZGVycik7CisgICAgICAgICAgICAgICAgc3RyZWFtIDw8
ICJYIjsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICBmcHV0YygnLScsIHN0ZGVycik7
CisgICAgICAgIHN0cmVhbSA8PCAiLSI7CiAKICAgICBpZiAoaXNGbG9hdGluZygpKQotICAgICAg
ICBmcHV0YygnRicsIHN0ZGVycik7CisgICAgICAgIHN0cmVhbSA8PCAiRiI7CiAgICAgZWxzZQot
ICAgICAgICBmcHV0YygnLScsIHN0ZGVycik7CisgICAgICAgIHN0cmVhbSA8PCAiLSI7CiAKICAg
ICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkpCi0gICAgICAgIGZwdXRjKCdPJywgc3RkZXJyKTsKKyAg
ICAgICAgc3RyZWFtIDw8ICJPIjsKICAgICBlbHNlCi0gICAgICAgIGZwdXRjKCctJywgc3RkZXJy
KTsKKyAgICAgICAgc3RyZWFtIDw8ICItIjsKIAogICAgIGlmIChpc0Fub255bW91cygpKQotICAg
ICAgICBmcHV0YygnWScsIHN0ZGVycik7CisgICAgICAgIHN0cmVhbSA8PCAiWSI7CiAgICAgZWxz
ZQotICAgICAgICBmcHV0YygnLScsIHN0ZGVycik7CisgICAgICAgIHN0cmVhbSA8PCAiLSI7CiAK
ICAgICBpZiAoaXNQc2V1ZG9FbGVtZW50KCkgfHwgaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgZnB1
dGMoJ0cnLCBzdGRlcnIpOworICAgICAgICBzdHJlYW0gPDwgIkciOwogICAgIGVsc2UKLSAgICAg
ICAgZnB1dGMoJy0nLCBzdGRlcnIpOworICAgICAgICBzdHJlYW0gPDwgIi0iOwogCiAgICAgaWYg
KGhhc0xheWVyKCkpCi0gICAgICAgIGZwdXRjKCdMJywgc3RkZXJyKTsKKyAgICAgICAgc3RyZWFt
IDw8ICJMIjsKICAgICBlbHNlCi0gICAgICAgIGZwdXRjKCctJywgc3RkZXJyKTsKKyAgICAgICAg
c3RyZWFtIDw8ICItIjsKIAogICAgIGlmIChpc0NvbXBvc2l0ZWQoKSkKLSAgICAgICAgZnB1dGMo
J0MnLCBzdGRlcnIpOworICAgICAgICBzdHJlYW0gPDwgIkMiOwogICAgIGVsc2UKLSAgICAgICAg
ZnB1dGMoJy0nLCBzdGRlcnIpOworICAgICAgICBzdHJlYW0gPDwgIi0iOwogCi0gICAgZnB1dGMo
JyAnLCBzdGRlcnIpOworICAgIHN0cmVhbSA8PCAiICI7CiAKICAgICBpZiAobm9kZSgpICYmIG5v
ZGUoKS0+bmVlZHNTdHlsZVJlY2FsYygpKQotICAgICAgICBmcHV0YygnKycsIHN0ZGVycik7Cisg
ICAgICAgIHN0cmVhbSA8PCAiKyI7CiAgICAgZWxzZQotICAgICAgICBmcHV0YygnLScsIHN0ZGVy
cik7CisgICAgICAgIHN0cmVhbSA8PCAiLSI7CiAKICAgICBpZiAobmVlZHNMYXlvdXQoKSkKLSAg
ICAgICAgZnB1dGMoJysnLCBzdGRlcnIpOworICAgICAgICBzdHJlYW0gPDwgIisiOwogICAgIGVs
c2UKLSAgICAgICAgZnB1dGMoJy0nLCBzdGRlcnIpOworICAgICAgICBzdHJlYW0gPDwgIi0iOwog
CiAgICAgaW50IHByaW50ZWRDaGFyYWN0ZXJzID0gMDsKICAgICBpZiAobWFyaykgewotICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIioiKTsKKyAgICAgICAgc3RyZWFtIDw8ICIqIjsKICAgICAgICAg
KytwcmludGVkQ2hhcmFjdGVyczsKICAgICB9CiAKICAgICB3aGlsZSAoKytwcmludGVkQ2hhcmFj
dGVycyA8PSBkZXB0aCAqIDIpCi0gICAgICAgIGZwdXRjKCcgJywgc3RkZXJyKTsKKyAgICAgICAg
c3RyZWFtIDw8ICIgIjsKIAogICAgIGlmIChub2RlKCkpCi0gICAgICAgIGZwcmludGYoc3RkZXJy
LCAiJXMgIiwgbm9kZSgpLT5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBzdHJl
YW0gPDwgbm9kZSgpLT5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCkgPDwgIiAiOwogCiAgICAgU3Ry
aW5nIG5hbWUgPSByZW5kZXJOYW1lKCk7CiAgICAgLy8gRklYTUU6IFJlbmRlcmVyJ3MgbmFtZSBz
aG91bGQgbm90IGluY2x1ZGUgcHJvcGVydHkgdmFsdWUgbGlzdGluZy4KICAgICBpbnQgcG9zID0g
bmFtZS5maW5kKCcoJyk7CiAgICAgaWYgKHBvcyA+IDApCi0gICAgICAgIGZwcmludGYoc3RkZXJy
LCAiJXMiLCBuYW1lLmxlZnQocG9zIC0gMSkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHN0cmVh
bSA8PCBuYW1lLmxlZnQocG9zIC0gMSkudXRmOCgpLmRhdGEoKTsKICAgICBlbHNlCi0gICAgICAg
IGZwcmludGYoc3RkZXJyLCAiJXMiLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBzdHJl
YW0gPDwgbmFtZS51dGY4KCkuZGF0YSgpOwogCiAgICAgaWYgKGlzPFJlbmRlckJveD4oKnRoaXMp
KSB7CiAgICAgICAgIGF1dG8mIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4oKnRoaXMp
OwogICAgICAgICBGbG9hdFJlY3QgYm94UmVjdCA9IHJlbmRlckJveC5mcmFtZVJlY3QoKTsKICAg
ICAgICAgaWYgKHJlbmRlckJveC5pc0luRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgICAgIGJv
eFJlY3QubW92ZShyZW5kZXJCb3gub2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24oKSk7Ci0gICAgICAg
IGZwcmludGYoc3RkZXJyLCAiICAoJS4yZiwgJS4yZikgKCUuMmYsICUuMmYpIiwgYm94UmVjdC54
KCksIGJveFJlY3QueSgpLCBib3hSZWN0LndpZHRoKCksIGJveFJlY3QuaGVpZ2h0KCkpOworICAg
ICAgICBzdHJlYW0gPDwgIiAiIDw8IGJveFJlY3Q7CiAgICAgfSBlbHNlIGlmIChpczxSZW5kZXJJ
bmxpbmU+KCp0aGlzKSAmJiBpc0luRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICBGbG9hdFNp
emUgaW5saW5lT2Zmc2V0ID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPigqdGhpcykub2Zmc2V0Rm9y
SW5GbG93UG9zaXRpb24oKTsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICglLjJmLCAlLjJm
KSIsIGlubGluZU9mZnNldC53aWR0aCgpLCBpbmxpbmVPZmZzZXQuaGVpZ2h0KCkpOworICAgICAg
ICBzdHJlYW0gPDwgIiAgKCIgPDwgaW5saW5lT2Zmc2V0LndpZHRoKCkgPDwgIiwgIiA8PCBpbmxp
bmVPZmZzZXQuaGVpZ2h0KCkgPDwgIikiOwogICAgIH0KIAotICAgIGZwcmludGYoc3RkZXJyLCAi
IHJlbmRlcmVyLT4oJXApIiwgdGhpcyk7CisgICAgc3RyZWFtIDw8ICIgcmVuZGVyZXItPigiIDw8
IHRoaXMgPDwgIikiOwogICAgIGlmIChub2RlKCkpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIs
ICIgbm9kZS0+KCVwKSIsIG5vZGUoKSk7CisgICAgICAgIHN0cmVhbSA8PCAiIG5vZGUtPigiIDw8
IG5vZGUoKSA8PCAiKSI7CiAgICAgICAgIGlmIChub2RlKCktPmlzVGV4dE5vZGUoKSkgewogICAg
ICAgICAgICAgU3RyaW5nIHZhbHVlID0gbm9kZSgpLT5ub2RlVmFsdWUoKTsKLSAgICAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiIGxlbmd0aC0+KCV1KSIsIHZhbHVlLmxlbmd0aCgpKTsKKyAgICAg
ICAgICAgIHN0cmVhbSA8PCAiIGxlbmd0aC0+KCIgPDwgdmFsdWUubGVuZ3RoKCkgPDwgIikiOwog
CiAgICAgICAgICAgICB2YWx1ZS5yZXBsYWNlV2l0aExpdGVyYWwoJ1xcJywgIlxcXFwiKTsKICAg
ICAgICAgICAgIHZhbHVlLnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7CkBAIC0xMTg0
LDQxICsxMTkxLDQxIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpzaG93UmVuZGVyT2JqZWN0KGJvb2wg
bWFyaywgaW50IGRlcHRoKSBjb25zdAogICAgICAgICAgICAgY29uc3QgaW50IG1heFByaW50ZWRM
ZW5ndGggPSA4MDsKICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA+IG1heFByaW50ZWRM
ZW5ndGgpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgc3Vic3RyaW5nID0gdmFsdWUuc3Vic3Ry
aW5nKDAsIG1heFByaW50ZWRMZW5ndGgpOwotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiIFwiJXNcIi4uLiIsIHN1YnN0cmluZy51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAg
ICBzdHJlYW0gPDwgIiBcIiIgPDwgc3Vic3RyaW5nLnV0ZjgoKS5kYXRhKCkgPDwgIlwiLi4uIjsK
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiIFwi
JXNcIiIsIHZhbHVlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAi
IFwiIiA8PCB2YWx1ZS51dGY4KCkuZGF0YSgpIDw8ICJcIiI7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgaWYgKGlzPFJlbmRlckJveE1vZGVsT2JqZWN0PigqdGhpcykpIHsKICAgICAgICAgYXV0byYg
cmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKnRoaXMpOwogICAgICAg
ICBpZiAocmVuZGVyZXIuaGFzQ29udGludWF0aW9uKCkpCi0gICAgICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIiBjb250aW51YXRpb24tPiglcCkiLCByZW5kZXJlci5jb250aW51YXRpb24oKSk7Cisg
ICAgICAgICAgICBzdHJlYW0gPDwgIiBjb250aW51YXRpb24tPigiIDw8IHJlbmRlcmVyLmNvbnRp
bnVhdGlvbigpIDw8ICIpIjsKICAgICB9Ci0gICAgc2hvd1JlZ2lvbnNJbmZvcm1hdGlvbigpOwor
ICAgIG91dHB1dFJlZ2lvbnNJbmZvcm1hdGlvbihzdHJlYW0pOwogICAgIGlmIChuZWVkc0xheW91
dCgpKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiIGxheW91dC0+Iik7CisgICAgICAgIHN0
cmVhbSA8PCAiIGxheW91dC0+IjsKICAgICAgICAgaWYgKHNlbGZOZWVkc0xheW91dCgpKQotICAg
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJbc2VsZl0iKTsKKyAgICAgICAgICAgIHN0cmVhbSA8
PCAiW3NlbGZdIjsKICAgICAgICAgaWYgKG5vcm1hbENoaWxkTmVlZHNMYXlvdXQoKSkKLSAgICAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiW25vcm1hbCBjaGlsZF0iKTsKKyAgICAgICAgICAgIHN0
cmVhbSA8PCAiW25vcm1hbCBjaGlsZF0iOwogICAgICAgICBpZiAocG9zQ2hpbGROZWVkc0xheW91
dCgpKQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJbcG9zaXRpb25lZCBjaGlsZF0iKTsK
KyAgICAgICAgICAgIHN0cmVhbSA8PCAiW3Bvc2l0aW9uZWQgY2hpbGRdIjsKICAgICAgICAgaWYg
KG5lZWRzU2ltcGxpZmllZE5vcm1hbEZsb3dMYXlvdXQoKSkKLSAgICAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiW3NpbXBsaWZpZWRdIik7CisgICAgICAgICAgICBzdHJlYW0gPDwgIltzaW1wbGlm
aWVkXSI7CiAgICAgICAgIGlmIChuZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dCgpKQotICAg
ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJbcG9zaXRpb25lZCBtb3ZlbWVudF0iKTsKKyAgICAg
ICAgICAgIHN0cmVhbSA8PCAiW3Bvc2l0aW9uZWQgbW92ZW1lbnRdIjsKICAgICB9Ci0gICAgZnBy
aW50ZihzdGRlcnIsICJcbiIpOworICAgIHN0cmVhbS5uZXh0TGluZSgpOwogfQogCi12b2lkIFJl
bmRlck9iamVjdDo6c2hvd1JlbmRlclN1YlRyZWVBbmRNYXJrKGNvbnN0IFJlbmRlck9iamVjdCog
bWFya2VkT2JqZWN0LCBpbnQgZGVwdGgpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6b3V0cHV0
UmVuZGVyU3ViVHJlZUFuZE1hcmsoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBSZW5kZXJPYmpl
Y3QqIG1hcmtlZE9iamVjdCwgaW50IGRlcHRoKSBjb25zdAogewotICAgIHNob3dSZW5kZXJPYmpl
Y3QobWFya2VkT2JqZWN0ID09IHRoaXMsIGRlcHRoKTsKKyAgICBvdXRwdXRSZW5kZXJPYmplY3Qo
c3RyZWFtLCBtYXJrZWRPYmplY3QgPT0gdGhpcywgZGVwdGgpOwogICAgIGlmIChpczxSZW5kZXJC
bG9ja0Zsb3c+KCp0aGlzKSkKLSAgICAgICAgZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqdGhp
cykuc2hvd0xpbmVUcmVlQW5kTWFyayhudWxscHRyLCBkZXB0aCArIDEpOworICAgICAgICBkb3du
Y2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCp0aGlzKS5vdXRwdXRMaW5lVHJlZUFuZE1hcmsoc3RyZWFt
LCBudWxscHRyLCBkZXB0aCArIDEpOwogCi0gICAgZm9yIChjb25zdCBSZW5kZXJPYmplY3QqIGNo
aWxkID0gZmlyc3RDaGlsZFNsb3coKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
KCkpCi0gICAgICAgIGNoaWxkLT5zaG93UmVuZGVyU3ViVHJlZUFuZE1hcmsobWFya2VkT2JqZWN0
LCBkZXB0aCArIDEpOworICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkU2xvdygpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgY2hpbGQtPm91dHB1
dFJlbmRlclN1YlRyZWVBbmRNYXJrKHN0cmVhbSwgbWFya2VkT2JqZWN0LCBkZXB0aCArIDEpOwog
fQogCiAjZW5kaWYgLy8gTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKaW5kZXggYjUxYTgwZTEwMzZkYWYyMDU4MmIyZmJkNTdhYjJlMzVjMTMzNWNlNC4uYjVhMTVk
MTJjMzllOWMwOWQxODczYmI1MjgxOWZmOTlhODljMjViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaApAQCAtMjA1LDkgKzIwNSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNob3dSZW5kZXJUcmVlRm9yVGhpcygpIGNvbnN0OwogICAgIHZvaWQgc2hvd0xpbmVUcmVlRm9y
VGhpcygpIGNvbnN0OwogCi0gICAgdm9pZCBzaG93UmVuZGVyT2JqZWN0KGJvb2wgbWFyaywgaW50
IGRlcHRoKSBjb25zdDsKLSAgICB2b2lkIHNob3dSZW5kZXJTdWJUcmVlQW5kTWFyayhjb25zdCBS
ZW5kZXJPYmplY3QqIG1hcmtlZE9iamVjdCwgaW50IGRlcHRoKSBjb25zdDsKLSAgICB2b2lkIHNo
b3dSZWdpb25zSW5mb3JtYXRpb24oKSBjb25zdDsKKyAgICB2b2lkIG91dHB1dFJlbmRlck9iamVj
dChUZXh0U3RyZWFtJiwgYm9vbCBtYXJrLCBpbnQgZGVwdGgpIGNvbnN0OworICAgIHZvaWQgb3V0
cHV0UmVuZGVyU3ViVHJlZUFuZE1hcmsoVGV4dFN0cmVhbSYsIGNvbnN0IFJlbmRlck9iamVjdCog
bWFya2VkT2JqZWN0LCBpbnQgZGVwdGgpIGNvbnN0OworICAgIHZvaWQgb3V0cHV0UmVnaW9uc0lu
Zm9ybWF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKICNlbmRpZgogCiAgICAgYm9vbCBpc1BzZXVk
b0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBub2RlKCkgJiYgbm9kZSgpLT5pc1BzZXVkb0VsZW1l
bnQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDgzYjEyZjE1MDg5YTJkMTVjNDFiMWM0MGRlNGJhMTQ5
N2IzY2MxZjUuLjkxMzU3M2QwODlkZGE4Mzk3NWUzNmZmYTAxNjVkODMwYmVjZTBiNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0
aW9ucy5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJUZXh0RGVjb3JhdGlvblBhaW50
ZXIuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRTdHlsZS5oIgogI2luY2x1ZGUgIlRleHRQYWludGVy
LmgiCisjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5H
KQogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0yNjEsMzMgKzI2MiwzNCBAQCBjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyRm9yUG9zaXRpb24oY29uc3QgRmxvd0NvbnRlbnRzJiBmbG93Q29udGVu
dHMsIHVuc2lnbgogfQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQotc3RhdGljIHZvaWQg
cHJpbnRQcmVmaXgoaW50JiBwcmludGVkQ2hhcmFjdGVycywgaW50IGRlcHRoKQorc3RhdGljIHZv
aWQgcHJpbnRQcmVmaXgoVGV4dFN0cmVhbSYgc3RyZWFtLCBpbnQmIHByaW50ZWRDaGFyYWN0ZXJz
LCBpbnQgZGVwdGgpCiB7Ci0gICAgZnByaW50ZihzdGRlcnIsICItLS0tLS0tLSAtLSIpOworICAg
IHN0cmVhbSA8PCAiLS0tLS0tLS0gLS0iOwogICAgIHByaW50ZWRDaGFyYWN0ZXJzID0gMDsKICAg
ICB3aGlsZSAoKytwcmludGVkQ2hhcmFjdGVycyA8PSBkZXB0aCAqIDIpCi0gICAgICAgIGZwdXRj
KCcgJywgc3RkZXJyKTsKKyAgICAgICAgc3RyZWFtIDw8ICIgIjsKIH0KIAotdm9pZCBzaG93TGlu
ZUxheW91dEZvckZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQm
IGxheW91dCwgaW50IGRlcHRoKQordm9pZCBvdXRwdXRMaW5lTGF5b3V0Rm9yRmxvdyhUZXh0U3Ry
ZWFtJiBzdHJlYW0sIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBs
YXlvdXQsIGludCBkZXB0aCkKIHsKICAgICBpbnQgcHJpbnRlZENoYXJhY3RlcnMgPSAwOwotICAg
IHByaW50UHJlZml4KHByaW50ZWRDaGFyYWN0ZXJzLCBkZXB0aCk7CisgICAgcHJpbnRQcmVmaXgo
c3RyZWFtLCBwcmludGVkQ2hhcmFjdGVycywgZGVwdGgpOwogCi0gICAgZnByaW50ZihzdGRlcnIs
ICJTaW1wbGVMaW5lTGF5b3V0ICgldSBsaW5lcywgJXUgcnVucykgKCVwKVxuIiwgbGF5b3V0Lmxp
bmVDb3VudCgpLCBsYXlvdXQucnVuQ291bnQoKSwgJmxheW91dCk7CisgICAgc3RyZWFtIDw8ICJT
aW1wbGVMaW5lTGF5b3V0ICgiIDw8IGxheW91dC5saW5lQ291bnQoKSA8PCAiIGxpbmVzLCAiIDw8
IGxheW91dC5ydW5Db3VudCgpIDw8ICIgcnVucykgKCIgPDwgJmxheW91dCA8PCAiKSI7CisgICAg
c3RyZWFtLm5leHRMaW5lKCk7CiAgICAgKytkZXB0aDsKIAogICAgIGZvciAoYXV0byBydW4gOiBy
dW5SZXNvbHZlcihmbG93LCBsYXlvdXQpKSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0ID0gcnVu
LnJlY3QoKTsKLSAgICAgICAgcHJpbnRQcmVmaXgocHJpbnRlZENoYXJhY3RlcnMsIGRlcHRoKTsK
KyAgICAgICAgcHJpbnRQcmVmaXgoc3RyZWFtLCBwcmludGVkQ2hhcmFjdGVycywgZGVwdGgpOwog
ICAgICAgICBpZiAocnVuLnN0YXJ0KCkgPCBydW4uZW5kKCkpIHsKLSAgICAgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAibGluZSAldSBydW4oJXUsICV1KSAoJS4yZiwgJS4yZikgKCUuMmYsICUuMmYp
IFwiJXNcIlxuIiwgcnVuLmxpbmVJbmRleCgpLCBydW4uc3RhcnQoKSwgcnVuLmVuZCgpLAotICAg
ICAgICAgICAgICAgIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdo
dCgpLCBydW4udGV4dCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIHN0cmVhbSA8PCAibGluZSAiIDw8IHJ1bi5saW5lSW5kZXgoKSA8PCAiIHJ1
bigiIDw8IHJ1bi5zdGFydCgpIDw8ICIsICIgPDwgcnVuLmVuZCgpIDw8ICIpICIgPDwgcmVjdCA8
PCAiIFwiIiA8PCBydW4udGV4dCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKS51dGY4KCkuZGF0
YSgpIDw8ICJcIiI7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQocnVuLnN0
YXJ0KCkgPT0gcnVuLmVuZCgpKTsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAibGluZSBi
cmVhayAldSBydW4oJXUsICV1KSAoJS4yZiwgJS4yZikgKCUuMmYsICUuMmYpXG4iLCBydW4ubGlu
ZUluZGV4KCksIHJ1bi5zdGFydCgpLCBydW4uZW5kKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIHN0cmVhbSA8PCAibGluZSBi
cmVhayAiIDw8IHJ1bi5saW5lSW5kZXgoKSA8PCAiIHJ1bigiIDw8IHJ1bi5zdGFydCgpIDw8ICIs
ICIgPDwgcnVuLmVuZCgpIDw8ICIpICIgPDwgcmVjdDsKICAgICAgICAgfQogICAgIH0KKyAgICBz
dHJlYW0ubmV4dExpbmUoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAppbmRleCAxZWJlNjc1ZWEwZmY4
NTdhNGYzYTNlNDBhMGU4YTBhZDUzYmZhMGQ3Li4xMzIzNTNhZjI1NjhkZWI4YjE2NDI1NzA5ODg1
ZWRkMGY5NjE5ZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1w
bGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgKQEAgLTY3LDcgKzY3LDcgQEAgTGF5b3V0VW5pdCBiYXNl
bGluZUZyb21GbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYpOwogY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJlckZvclBvc2l0aW9uKGNvbnN0IEZsb3dDb250ZW50cyYsIHVuc2lnbmVkKTsKIAog
I2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKLXZvaWQgc2hvd0xpbmVMYXlvdXRGb3JGbG93KGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91dCYsIGludCBkZXB0aCk7Cit2b2lkIG91
dHB1dExpbmVMYXlvdXRGb3JGbG93KFRleHRTdHJlYW0mLCBjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
LCBjb25zdCBMYXlvdXQmLCBpbnQgZGVwdGgpOwogI2VuZGlmCiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>