<?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>198844</bug_id>
          
          <creation_ts>2019-06-13 16:39:59 -0700</creation_ts>
          <short_desc>Cloning a MediaStreamTrack does not clone the logger</short_desc>
          <delta_ts>2019-06-15 21:17:27 -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>WebRTC</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1544623</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-06-13 16:39:59 -0700</bug_when>
    <thetext>Cloning a MediaStreamTrack does not clone the logger</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544624</commentid>
    <comment_count>1</comment_count>
      <attachid>372082</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-06-13 16:50:01 -0700</bug_when>
    <thetext>Created attachment 372082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544634</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-13 17:13:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/51729128&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544765</commentid>
    <comment_count>3</comment_count>
      <attachid>372082</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-14 10:14:53 -0700</bug_when>
    <thetext>Comment on attachment 372082
Patch

Clearing flags on attachment: 372082

Committed r246436: &lt;https://trac.webkit.org/changeset/246436&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544766</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-14 10:14:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544867</commentid>
    <comment_count>5</comment_count>
      <attachid>372082</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-06-14 15:19:03 -0700</bug_when>
    <thetext>Comment on attachment 372082
Patch

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

Oops, had a comment, but forgot to get it to you before you landed this.

&gt; Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:48
&gt; +static inline Ref&lt;const Logger&gt; loggerFromContext(ScriptExecutionContext&amp; context)
&gt; +{
&gt; +    return downcast&lt;Document&gt;(context).logger();
&gt; +}

I’m not sure that a function for this is a good idea. This expression seems not much longer than the function call. I suggest just doing this work inline. It’s good to be able to see the code assuming the context is a document, I think, rather than encapsulating that in a helper.

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:54
&gt; +static inline Ref&lt;const Logger&gt; loggerFromContext(ScriptExecutionContext&amp; context)
&gt; +{
&gt; +    return downcast&lt;Document&gt;(context).logger();
&gt; +}

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544896</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-06-14 17:07:15 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 372082 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=372082&amp;action=review
&gt; 
&gt; Oops, had a comment, but forgot to get it to you before you landed this.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:48
&gt; &gt; +static inline Ref&lt;const Logger&gt; loggerFromContext(ScriptExecutionContext&amp; context)
&gt; &gt; +{
&gt; &gt; +    return downcast&lt;Document&gt;(context).logger();
&gt; &gt; +}
&gt; 
&gt; I’m not sure that a function for this is a good idea. This expression seems
&gt; not much longer than the function call. I suggest just doing this work
&gt; inline. It’s good to be able to see the code assuming the context is a
&gt; document, I think, rather than encapsulating that in a helper.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:54
&gt; &gt; +static inline Ref&lt;const Logger&gt; loggerFromContext(ScriptExecutionContext&amp; context)
&gt; &gt; +{
&gt; &gt; +    return downcast&lt;Document&gt;(context).logger();
&gt; &gt; +}
&gt; 
&gt; Ditto.

OK, let&apos;s make MediaStream take a Document&amp; instead of a ScriptExecutionContext&amp; since code is expecting that elsewhere anyway.
Filed https://bugs.webkit.org/show_bug.cgi?id=198873</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545099</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-06-15 21:17:27 -0700</bug_when>
    <thetext>It seems we should move logger to ScriptExecutionContext since we might want to do release logging in workers, especially service workers.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372082</attachid>
            <date>2019-06-13 16:50:01 -0700</date>
            <delta_ts>2019-06-14 10:14:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198844-20190613164959.patch</filename>
            <type>text/plain</type>
            <size>35332</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzViMDI1YWZkOWRjYTk0
OWMzZDc5OGU2NmNhZTIwMjgzZDEyYjlkMi4uMTVhZTc0MjVkZmZiNTRjM2M3ZDViODhjMTM1N2M2
NWZmZDU2Mzg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE5LTA2LTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDbG9uaW5nIGEgTWVkaWFT
dHJlYW1UcmFjayBkb2VzIG5vdCBjbG9uZSB0aGUgbG9nZ2VyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg4NDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIE1lZGlhU3RyZWFtIGFuZCBNZWRpYVN0
cmVhbVRyYWNrIHJlbHkgb24gdGhlaXIgcHJpdmF0ZSB2ZXJzaW9ucyBmb3IgbG9nZ2luZy4KKyAg
ICAgICAgTW92ZSBmcm9tIGEgUmVmUHRyIHZlcnNpb24gdG8gYSBSZWYgc28gYXMgdG8gZm9yYmlk
IG51bGxwdHIgY3Jhc2hlcy4KKyAgICAgICAgTWFrZSBzdXJlIHRoYXQgUmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlIGFuZCBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UgY2hlY2sgZm9yIHRo
ZWlyIGxvZ2dlciBiZWZvcmUgbG9nZ2luZy4KKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0
ZXN0cyBhbmQgdXBkYXRlZCB0ZXN0LgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9D
YW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dn
ZXJGcm9tQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNDYXB0dXJlTWVkaWFTdHJl
YW1UcmFjazo6Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2spOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9nZ2Vy
RnJvbUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0pOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmFs
bG93KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENN
ZWRpYUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ01lZGlhRW5kcG9p
bnQ6Om1lZGlhU3RyZWFtRnJvbVJUQ1N0cmVhbSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2
ZXJGb3JTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjpNZWRpYVN0cmVhbVByaXZhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjpzZXRMb2dnZXIpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjbG9uZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c2V0TG9nZ2VyKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6
Y3JlYXRlTWVkaWFTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6Ok9uRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6
OnBpeGVsQnVmZmVyUG9vbCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VDb2NvYTo6cGl4ZWxCdWZmZXJGcm9tVmlkZW9GcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYTo6T25GcmFtZSk6CisKIDIwMTkt
MDYtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBO
U1VSTFNlc3Npb24gZm9yIFdlYlNvY2tldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrLmNwcAppbmRleCAyN2E5YTUzMzg3ZjlkNDQxZTQ2NWMwM2JkYjMyNDZmMjEyYTljYjA5Li4z
YjY2YWVmYTYzMDVhNjUwYjRlNzUzZjdhOWMyZTYxNjRmOTYwYmEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRy
YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0Nh
cHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtNDIsOCArNDIsMTMgQEAgUmVmPENhbnZhc0Nh
cHR1cmVNZWRpYVN0cmVhbVRyYWNrPiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6Y3Jl
YXRlKFNjcmlwdEUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjayhjb250ZXh0LCBXVEZNb3ZlKGNhbnZhcyksIFdURk1vdmUoc291cmNlKSkpOwog
fQogCitzdGF0aWMgaW5saW5lIFJlZjxjb25zdCBMb2dnZXI+IGxvZ2dlckZyb21Db250ZXh0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KS5sb2dnZXIoKTsKK30KKwogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFt
VHJhY2s6OkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIFJlZjxIVE1MQ2FudmFzRWxlbWVudD4mJiBjYW52YXMsIFJlZjxDYW52YXND
YXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlPiYmIHNvdXJjZSkKLSAgICA6IE1lZGlhU3Ry
ZWFtVHJhY2soY29udGV4dCwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShzb3VyY2Uu
Y29weVJlZigpKSkKKyAgICA6IE1lZGlhU3RyZWFtVHJhY2soY29udGV4dCwgTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU6OmNyZWF0ZShsb2dnZXJGcm9tQ29udGV4dChjb250ZXh0KSwgc291cmNlLmNv
cHlSZWYoKSkpCiAgICAgLCBtX2NhbnZhcyhXVEZNb3ZlKGNhbnZhcykpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4
IDZmMzk2NWRlZDIyMmJjYTAwZjI4OWRiZDZmMzQ2MzA5YmRiYjYxM2YuLjQ1ZDgwNTA0NWFmZTQ5
NjllNDcyNTczNGY4OGVmN2Q0YTI5ZTJmOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCkBAIC00OCw5ICs0OCwxNCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYVN0cmVh
bSk7CiAKK3N0YXRpYyBpbmxpbmUgUmVmPGNvbnN0IExvZ2dlcj4gbG9nZ2VyRnJvbUNvbnRleHQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1cm4gZG93bmNhc3Q8
RG9jdW1lbnQ+KGNvbnRleHQpLmxvZ2dlcigpOworfQorCiBSZWY8TWVkaWFTdHJlYW0+IE1lZGlh
U3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBy
ZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LCBNZWRpYVN0cmVhbVByaXZhdGU6OmNy
ZWF0ZSh7IH0pKTsKKyAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LCBNZWRp
YVN0cmVhbVByaXZhdGU6OmNyZWF0ZShsb2dnZXJGcm9tQ29udGV4dChjb250ZXh0KSwgeyB9KSk7
CiB9CiAKIFJlZjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBNZWRpYVN0cmVhbSYgc3RyZWFtKQpAQCAtNzksMjEgKzg0LDEy
IEBAIHN0YXRpYyBpbmxpbmUgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGVWZWN0b3IgY3JlYXRlVHJh
Y2tQcml2YXRlVmVjdG9yKGNvbnN0IE1lZGlhCiAKIE1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrVmVj
dG9yJiB0cmFja3MpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCi0gICAgLCBtX3By
aXZhdGUoTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoY3JlYXRlVHJhY2tQcml2YXRlVmVjdG9y
KHRyYWNrcykpKQorICAgICwgbV9wcml2YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGRv
Y3VtZW50KCktPmxvZ2dlcigpLCBjcmVhdGVUcmFja1ByaXZhdGVWZWN0b3IodHJhY2tzKSkpCiAg
ICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkK
LSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAsIG1fbG9nZ2VyKGRvY3VtZW50KCktPmxv
Z2dlcigpKQotICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKLSNl
bmRpZgogewogICAgIC8vIFRoaXMgY29uc3RydWN0b3IgcHJlc2VydmVzIE1lZGlhU3RyZWFtVHJh
Y2sgaW5zdGFuY2VzIGFuZCBtdXN0IGJlIHVzZWQgYnkgY2FsbHMgb3JpZ2luYXRpbmcKICAgICAv
LyBmcm9tIHRoZSBKYXZhU2NyaXB0IE1lZGlhU3RyZWFtIGNvbnN0cnVjdG9yLgogCi0jaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECi0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLSAgICBt
X3ByaXZhdGUtPnNldExvZ2dlcihsb2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsKLSNlbmRpZgot
CiAgICAgZm9yIChhdXRvJiB0cmFjayA6IHRyYWNrcykgewogICAgICAgICB0cmFjay0+YWRkT2Jz
ZXJ2ZXIoKnRoaXMpOwogICAgICAgICBtX3RyYWNrU2V0LmFkZCh0cmFjay0+aWQoKSwgdHJhY2sp
OwpAQCAtMTA5LDE1ICsxMDUsOSBAQCBNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPE1lZGlhU3RyZWFtUHJpdmF0ZQogICAgIDogQWN0
aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9wcml2YXRlKFdURk1vdmUoc3RyZWFtUHJp
dmF0ZSkpCiAgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRl
KCp0aGlzKSkKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAsIG1fbG9nZ2VyKGRvY3Vt
ZW50KCktPmxvZ2dlcigpKQotICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZp
ZXIoKSkKLSNlbmRpZgogewotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7Ci0gICAgbV9wcml2YXRlLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxv
Z0lkZW50aWZpZXIoKSk7Ci0jZW5kaWYKKwogICAgIHNldElzQWN0aXZlKG1fcHJpdmF0ZS0+YWN0
aXZlKCkpOwogICAgIG1fcHJpdmF0ZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwogICAgIE1lZGlhU3Ry
ZWFtUmVnaXN0cnk6OnNoYXJlZCgpLnJlZ2lzdGVyU3RyZWFtKCp0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAppbmRleCBmZmQxYzgy
ZjZhMTc5NDNkZTcxZTBkNWFhNGIyMDBmOTBlMmUzYmM3Li41ZGIzYmQ3NGFlMDc3ZTUwOTg3ODhl
YTZlZWRkYTY2ZTQ3YmU0MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5oCkBAIC0xMjUsOCArMTI1LDggQEAgcHJvdGVjdGVkOgogICAg
IE1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8TWVkaWFTdHJlYW1Qcml2
YXRlPiYmKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGNvbnN0IExvZ2dlciYg
bG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KLSAgICBjb25z
dCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlm
aWVyOyB9CisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3ByaXZhdGUtPmxvZ2dlcigpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJpdmF0ZS0+bG9nSWRlbnRpZmllcigpOyB9CiAgICAgV1RG
TG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGxv
Z0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJNZWRpYVN0cmVhbSI7IH0KICNlbmRp
ZgpAQCAtMTg3LDExICsxODcsNiBAQCBwcml2YXRlOgogCiAgICAgTWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzIG1fc3RhdGUgeyBNZWRpYVByb2R1Y2VyOjpJc05vdFBsYXlpbmcgfTsKIAot
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIFJlZjxMb2dnZXI+IG1fbG9nZ2VyOwotICAg
IGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKLSNlbmRpZgotCiAgICAgYm9vbCBtX2lzQWN0
aXZlIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcm9kdWNpbmdEYXRhIHsgZmFsc2UgfTsKICAg
ICBib29sIG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0IHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwCmluZGV4IDliYzNjYmY3ODg5MjJiYmQ0ZTVkZjI2NWQwZDZhNWU3OTUyOTFlNGMuLmU3YTA5
MGYwN2FmNWFlZDYwYzdhNGUxZThiY2NhOTA5NjkyYTNjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAt
NTgsMTkgKzU4LDEyIEBAIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiBNZWRpYVN0cmVhbVRyYWNrOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwKIE1lZGlhU3RyZWFtVHJhY2s6
Ok1lZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIHByaXZhdGVUcmFjaykKICAgICA6IEFjdGl2ZURPTU9i
amVjdCgmY29udGV4dCkKICAgICAsIG1fcHJpdmF0ZShXVEZNb3ZlKHByaXZhdGVUcmFjaykpCi0j
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBtX2xvZ2dlcihkb2N1bWVudCgpLT5sb2dn
ZXIoKSkKLSAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCi0jZW5k
aWYKICAgICAsIG1fdGFza1F1ZXVlKGNvbnRleHQpCiAgICAgLCBtX2lzQ2FwdHVyZVRyYWNrKG1f
cHJpdmF0ZS0+aXNDYXB0dXJlVHJhY2soKSkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
Ci0gICAgbV9wcml2YXRlLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7Ci0j
ZW5kaWYKICAgICBtX3ByaXZhdGUtPmFkZE9ic2VydmVyKCp0aGlzKTsKIAogICAgIGlmIChhdXRv
IGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAppbmRleCAxNTVjNzIzYmRj
OWM5YmQyMzYwYmExNjIzMmIyYzM0YWY1OTNlOTg1Li4wMmYxZTc5NGRhNThmYTkyYjc3OTNkNDA4
Mzk3NGQyMmU0OGRiZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaApAQCAtMTUxLDggKzE1MSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldElkRm9yVGVzdGluZyhTdHJpbmcmJiBpZCkgeyBtX3ByaXZhdGUtPnNldElk
Rm9yVGVzdGluZyhXVEZNb3ZlKGlkKSk7IH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAot
ICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIu
Z2V0KCk7IH0KLSAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3ByaXZhdGUtPmxvZ2dlcigpOyB9CisgICAgY29uc3Qgdm9pZCog
bG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJpdmF0ZS0+bG9nSWRlbnRp
ZmllcigpOyB9CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpAQCAtMTg5LDkgKzE4OSw2IEBAIHByaXZh
dGU6CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1lZGlhU3RyZWFtVHJhY2siOyB9CiAgICAgV1RG
TG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOwotICAgIAotICAgIFJlZjxjb25z
dCBMb2dnZXI+IG1fbG9nZ2VyOwotICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKICNl
bmRpZgogCiAgICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApp
bmRleCBmMDYxYmM3ZWIxMDRlYjNlMjc3ZjAxMjcyY2U1ZWQ0ZWQzOWEwZTdlLi44ZTEzNmMwNzg1
ZWYyY2EzMGUwMDk3YjUyY2U1ZTYyNzhhYmQ4NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTI0Niw3
ICsyNDYsNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmFsbG93KENhcHR1cmVEZXZpY2UmJiBh
dWRpb0RldmljZSwgQ2FwdHVyZURldmljZSYmIHZpZGVvRAogICAgIGF1dG8mIGRvY3VtZW50ID0g
ZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGRvY3Vt
ZW50LnNldERldmljZUlESGFzaFNhbHQoZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KTsKIAotICAg
IFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLmNyZWF0ZU1lZGlhU3RyZWFt
KFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCksIFdU
Rk1vdmUoYXVkaW9EZXZpY2UpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlKSwgbV9yZXF1ZXN0KTsKKyAg
ICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5jcmVhdGVNZWRpYVN0cmVh
bShkb2N1bWVudC5sb2dnZXIoKSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZGV2aWNlSWRl
bnRpZmllckhhc2hTYWx0KSwgV1RGTW92ZShhdWRpb0RldmljZSksIFdURk1vdmUodmlkZW9EZXZp
Y2UpLCBtX3JlcXVlc3QpOwogCiAgICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5j
cHAKaW5kZXggYzc3NDlkYjU0ZmE4MTQyMzMyZTkwZWYzNzJmZGMwYWVkYzMzZjhlYS4uNDViZjRh
OTNkMjUwMGZlODlhM2ViZTc3ZWMxY2Q4ZWRlMTA1YTJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2lu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTM1NCw3ICszNTQsOCBAQCBNZWRpYVN0cmVh
bSYgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6bWVkaWFTdHJlYW1Gcm9tUlRDU3RyZWFtKHdlYnJ0
Yzo6TWVkaWFTdHJlYQogewogICAgIGF1dG8gbGFiZWwgPSBmcm9tU3RkU3RyaW5nKHJ0Y1N0cmVh
bS5pZCgpKTsKICAgICBhdXRvIG1lZGlhU3RyZWFtID0gbV9yZW1vdGVTdHJlYW1zQnlJZC5lbnN1
cmUobGFiZWwsIFtsYWJlbCwgdGhpc10oKSBtdXRhYmxlIHsKLSAgICAgICAgcmV0dXJuIE1lZGlh
U3RyZWFtOjpjcmVhdGUoKm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKHsgfSwgV1RG
TW92ZShsYWJlbCkpKTsKKyAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVu
dD4oKm1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNvbm5lY3Rpb24oKS5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOworICAgICAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShkb2N1bWVudCwg
TWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoZG9jdW1lbnQubG9nZ2VyKCksIHsgfSwgV1RGTW92
ZShsYWJlbCkpKTsKICAgICB9KTsKICAgICByZXR1cm4gKm1lZGlhU3RyZWFtLml0ZXJhdG9yLT52
YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY3BwCmluZGV4IGM0NGUxYmM5ZjJlOTAyOTc5M2ViYjZiYzgyZDUyMzk3NDg1Nzcw
ZTMuLjg1MWZkZGVhZDRjZTk1YjVhNzBlMDE1YmU5YzQ0YTA2Y2I3ZGM3NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAt
MjY5LDkgKzI2OSwxMCBAQCB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9B
ZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlJiBjYW5kaWRhdAogCiBSZWY8UlRDUnRwUmVj
ZWl2ZXI+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXJGb3JT
b3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlLCBzdGQ6OnVuaXF1ZV9wdHI8
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiYmIGJhY2tlbmQpCiB7Ci0gICAgU3RyaW5nIHRyYWNrSUQg
PSBzb3VyY2UtPnBlcnNpc3RlbnRJRCgpOwotICAgIGF1dG8gcmVtb3RlVHJhY2tQcml2YXRlID0g
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUo
dHJhY2tJRCkpOwotICAgIGF1dG8gcmVtb3RlVHJhY2sgPSBNZWRpYVN0cmVhbVRyYWNrOjpjcmVh
dGUoKm1fcGVlckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKHJl
bW90ZVRyYWNrUHJpdmF0ZSkpOworICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KCptX3BlZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgYXV0
byB0cmFja0lEID0gc291cmNlLT5wZXJzaXN0ZW50SUQoKTsKKyAgICBhdXRvIHJlbW90ZVRyYWNr
UHJpdmF0ZSA9IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoZG9jdW1lbnQubG9nZ2Vy
KCksIFdURk1vdmUoc291cmNlKSwgV1RGTW92ZSh0cmFja0lEKSk7CisgICAgYXV0byByZW1vdGVU
cmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShkb2N1bWVudCwgV1RGTW92ZShyZW1vdGVU
cmFja1ByaXZhdGUpKTsKIAogICAgIHJldHVybiBSVENSdHBSZWNlaXZlcjo6Y3JlYXRlKCp0aGlz
LCBXVEZNb3ZlKHJlbW90ZVRyYWNrKSwgV1RGTW92ZShiYWNrZW5kKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBjMGJiMzhlZDJkY2JkNmQyODAyMGY0YTRh
MGRhZWFmNTQ0YWI3NWRiLi5kNzY2MjkzMDMwOGE3NDZhNDZhZTAwODY4YTVkNjM0MWI4MmZmNzNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQ3LDcgKzQ3LDcg
QEAgUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlhU3RyZWFtQXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZShBdWQKIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscykKICAgICA6IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2Rl
KGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgpLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwg
bV9zb3VyY2UoTWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y3JlYXRlKGNvbnRleHQuc2FtcGxlUmF0
ZSgpKSkKLSAgICAsIG1fc3RyZWFtKE1lZGlhU3RyZWFtOjpjcmVhdGUoKmNvbnRleHQuZG9jdW1l
bnQoKSwgTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUobV9zb3VyY2UuY29weVJlZigpKSkpCisg
ICAgLCBtX3N0cmVhbShNZWRpYVN0cmVhbTo6Y3JlYXRlKCpjb250ZXh0LmRvY3VtZW50KCksIE1l
ZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGNvbnRleHQuZG9jdW1lbnQoKS0+bG9nZ2VyKCksIG1f
c291cmNlLmNvcHlSZWYoKSkpKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uKTsKICAgICBpbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNw
cAppbmRleCBjOTU2ZjExMDY3MTQ5ZjcxMGI1MGMwZmVlZmFhNjM3MGFkZDU4NzM5Li5mZjVhYmFh
YTAzOWNhMjliNjUyODFmZTU2NDQ0OGIwNzBhMDNmYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAK
QEAgLTQ1LDI4ICs0NSwzNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNZWRpYVN0
cmVhbVByaXZhdGU+IE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKFJlZjxSZWFsdGltZU1lZGlh
U291cmNlPiYmIHNvdXJjZSkKK1JlZjxNZWRpYVN0cmVhbVByaXZhdGU+IE1lZGlhU3RyZWFtUHJp
dmF0ZTo6Y3JlYXRlKFJlZjxjb25zdCBMb2dnZXI+JiYgbG9nZ2VyLCBSZWY8UmVhbHRpbWVNZWRp
YVNvdXJjZT4mJiBzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3Jl
YXRlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yOjpmcm9tKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOjpjcmVhdGUoV1RGTW92ZShzb3VyY2UpKSkpOworICAgIGF1dG8gbG9nZ2VyQ29weSA9
IGxvZ2dlci5jb3B5UmVmKCk7CisgICAgcmV0dXJuIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRl
KFdURk1vdmUobG9nZ2VyKSwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGVWZWN0b3I6OmZyb20oTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShXVEZNb3ZlKGxvZ2dlckNvcHkpLCBXVEZNb3Zl
KHNvdXJjZSkpKSk7CiB9CiAKLVJlZjxNZWRpYVN0cmVhbVByaXZhdGU+IE1lZGlhU3RyZWFtUHJp
dmF0ZTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiBhdWRp
b1NvdXJjZXMsIGNvbnN0IFZlY3RvcjxSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiB2aWRlb1Nv
dXJjZXMpCitSZWY8TWVkaWFTdHJlYW1Qcml2YXRlPiBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0
ZShSZWY8Y29uc3QgTG9nZ2VyPiYmIGxvZ2dlciwgY29uc3QgVmVjdG9yPFJlZjxSZWFsdGltZU1l
ZGlhU291cmNlPj4mIGF1ZGlvU291cmNlcywgY29uc3QgVmVjdG9yPFJlZjxSZWFsdGltZU1lZGlh
U291cmNlPj4mIHZpZGVvU291cmNlcykKIHsKICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZVZl
Y3RvciB0cmFja3M7CiAgICAgdHJhY2tzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXVkaW9Tb3Vy
Y2VzLnNpemUoKSArIHZpZGVvU291cmNlcy5zaXplKCkpOwogCiAgICAgZm9yIChhdXRvJiBzb3Vy
Y2UgOiBhdWRpb1NvdXJjZXMpCi0gICAgICAgIHRyYWNrcy51bmNoZWNrZWRBcHBlbmQoTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShzb3VyY2UuY29weVJlZigpKSk7CisgICAgICAgIHRy
YWNrcy51bmNoZWNrZWRBcHBlbmQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShsb2dn
ZXIuY29weVJlZigpLCBzb3VyY2UuY29weVJlZigpKSk7CiAKICAgICBmb3IgKGF1dG8mIHNvdXJj
ZSA6IHZpZGVvU291cmNlcykKLSAgICAgICAgdHJhY2tzLnVuY2hlY2tlZEFwcGVuZChNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKHNvdXJjZS5jb3B5UmVmKCkpKTsKKyAgICAgICAgdHJh
Y2tzLnVuY2hlY2tlZEFwcGVuZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKGxvZ2dl
ci5jb3B5UmVmKCksIHNvdXJjZS5jb3B5UmVmKCkpKTsKIAotICAgIHJldHVybiBNZWRpYVN0cmVh
bVByaXZhdGU6OmNyZWF0ZSh0cmFja3MpOworICAgIHJldHVybiBNZWRpYVN0cmVhbVByaXZhdGU6
OmNyZWF0ZShXVEZNb3ZlKGxvZ2dlciksIHRyYWNrcyk7CiB9CiAKLU1lZGlhU3RyZWFtUHJpdmF0
ZTo6TWVkaWFTdHJlYW1Qcml2YXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9y
JiB0cmFja3MsIFN0cmluZyYmIGlkKQorTWVkaWFTdHJlYW1Qcml2YXRlOjpNZWRpYVN0cmVhbVBy
aXZhdGUoUmVmPGNvbnN0IExvZ2dlcj4mJiBsb2dnZXIsIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlVmVjdG9yJiB0cmFja3MsIFN0cmluZyYmIGlkKQogICAgIDogbV9pZChXVEZNb3ZlKGlk
KSkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9nZ2VyKFdURk1vdmUobG9n
Z2VyKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCisjZW5k
aWYKIHsKKyAgICBVTlVTRURfUEFSQU0obG9nZ2VyKTsKICAgICBBU1NFUlQoIW1faWQuaXNFbXB0
eSgpKTsKIAogICAgIGZvciAoYXV0byYgdHJhY2sgOiB0cmFja3MpIHsKQEAgLTM0NSwxMyArMzUx
LDYgQEAgdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6Om1vbml0b3JPcmllbnRhdGlvbihPcmllbnRh
dGlvbk5vdGlmaWVyJiBub3RpZmllcikKIH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAot
dm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnNldExvZ2dlcihjb25zdCBMb2dnZXImIG5ld0xvZ2dl
ciwgY29uc3Qgdm9pZCogbmV3TG9nSWRlbnRpZmllcikKLXsKLSAgICBtX2xvZ2dlciA9ICZuZXdM
b2dnZXI7Ci0gICAgbV9sb2dJZGVudGlmaWVyID0gbmV3TG9nSWRlbnRpZmllcjsKLSAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOwotfQotCiBXVEZMb2dDaGFubmVsJiBNZWRpYVN0cmVhbVBy
aXZhdGU6OmxvZ0NoYW5uZWwoKSBjb25zdAogewogICAgIHJldHVybiBMb2dXZWJSVEM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
UHJpdmF0ZS5oCmluZGV4IDc2YjQ2NzlhZDUwZmNmOThmZGJiYTE3MjEzNTYzZjAxOWE2Y2RmYzMu
Ljk2OTZkZTIxNjdiMTMyZTA0Mzk4NTE5NmNiYjQzYmU5N2UzZTMwNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0
ZS5oCkBAIC03Myw5ICs3Myw5IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJl
bW92ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgeyB9CiAgICAgfTsKIAotICAgIHN0
YXRpYyBSZWY8TWVkaWFTdHJlYW1Qcml2YXRlPiBjcmVhdGUoUmVmPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+JiYpOwotICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1Qcml2YXRlPiBjcmVhdGUoY29uc3Qg
VmVjdG9yPFJlZjxSZWFsdGltZU1lZGlhU291cmNlPj4mIGF1ZGlvU291cmNlcywgY29uc3QgVmVj
dG9yPFJlZjxSZWFsdGltZU1lZGlhU291cmNlPj4mIHZpZGVvU291cmNlcyk7Ci0gICAgc3RhdGlj
IFJlZjxNZWRpYVN0cmVhbVByaXZhdGU+IGNyZWF0ZShjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZVZlY3RvciYgdHJhY2tzLCBTdHJpbmcmJiBpZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0cmVhbVByaXZhdGUodHJhY2tzLCBX
VEZNb3ZlKGlkKSkpOyB9CisgICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbVByaXZhdGU+IGNyZWF0
ZShSZWY8Y29uc3QgTG9nZ2VyPiYmLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CisgICAg
c3RhdGljIFJlZjxNZWRpYVN0cmVhbVByaXZhdGU+IGNyZWF0ZShSZWY8Y29uc3QgTG9nZ2VyPiYm
LCBjb25zdCBWZWN0b3I8UmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgYXVkaW9Tb3VyY2VzLCBj
b25zdCBWZWN0b3I8UmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgdmlkZW9Tb3VyY2VzKTsKKyAg
ICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtUHJpdmF0ZT4gY3JlYXRlKFJlZjxjb25zdCBMb2dnZXI+
JiYgbG9nZ2VyLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZVZlY3RvciYgdHJhY2tzLCBT
dHJpbmcmJiBpZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYVN0cmVhbVByaXZhdGUoV1RGTW92ZShsb2dnZXIpLCB0cmFja3MsIFdURk1v
dmUoaWQpKSk7IH0KIAogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtUHJpdmF0ZSgpOwogCkBAIC0x
MTEsMTEgKzExMSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBtb25pdG9yT3JpZW50YXRpb24oT3Jp
ZW50YXRpb25Ob3RpZmllciYpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgdm9p
ZCBzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopOworICAgIGNvbnN0IExvZ2dl
ciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXI7IH0KKyAgICBjb25zdCB2
b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVy
OyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbVByaXZhdGUoY29uc3QgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGVWZWN0b3ImLCBTdHJpbmcmJik7CisgICAgTWVkaWFTdHJlYW1Q
cml2YXRlKFJlZjxjb25zdCBMb2dnZXI+JiYsIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
VmVjdG9yJiwgU3RyaW5nJiYpOwogCiAgICAgLy8gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9i
c2VydmVyCiAgICAgdm9pZCB0cmFja1N0YXJ0ZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBv
dmVycmlkZTsKQEAgLTEzMSwxMyArMTMyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvckVhY2hP
YnNlcnZlcihjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoT2JzZXJ2ZXImKT4mKSBjb25zdDsKIAog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29u
c3QgZmluYWwgeyBBU1NFUlQobV9sb2dnZXIpOyByZXR1cm4gKm1fbG9nZ2VyLmdldCgpOyB9Ci0g
ICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9n
SWRlbnRpZmllcjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJNZWRpYVN0cmVhbVByaXZhdGUiOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9n
Q2hhbm5lbCgpIGNvbnN0IGZpbmFsOwotCi0gICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dn
ZXI7Ci0gICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlmCiAKICAgICBIYXNo
U2V0PE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CkBAIC0xNDUsNiArMTQxLDEwIEBAIHByaXZhdGU6
CiAgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIG1fYWN0aXZlVmlkZW9UcmFjayB7IG51bGxw
dHIgfTsKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
Pj4gbV90cmFja1NldDsKICAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OworI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNv
bnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgogfTsKIAogdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4+IE1lZGlhU3RyZWFtUHJpdmF0ZVZlY3RvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAppbmRleCA0OTQzZGEzNzBhYTk4YTUxMmFlMTQzY2Qz
NTgyMzg5MzZmNDRlODE3Li4zYzMzMGI5NWUxMDVjOTY0OTg4M2E4YTQyZjk2Y2EyZmE0YWU0ZTE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCkBAIC00NCwyMCArNDQsMjggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291
cmNlKQorUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZTo6Y3JlYXRlKFJlZjxjb25zdCBMb2dnZXI+JiYgbG9nZ2VyLCBSZWY8UmVhbHRpbWVNZWRpYVNv
dXJjZT4mJiBzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKHNvdXJjZSksIGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7CisgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGxv
Z2dlciksIFdURk1vdmUoc291cmNlKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKIH0K
IAotUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
Y3JlYXRlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgU3RyaW5nJiYgaWQpCitS
ZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVh
dGUoUmVmPGNvbnN0IExvZ2dlcj4mJiBsb2dnZXIsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYm
IHNvdXJjZSwgU3RyaW5nJiYgaWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUoV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKGlkKSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKFdURk1vdmUobG9nZ2Vy
KSwgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKGlkKSkpOwogfQogCi1NZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+
JiYgc291cmNlLCBTdHJpbmcmJiBpZCkKK01lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZShSZWY8Y29uc3QgTG9nZ2VyPiYmIGxvZ2dlciwgUmVmPFJlYWx0aW1l
TWVkaWFTb3VyY2U+JiYgc291cmNlLCBTdHJpbmcmJiBpZCkKICAgICA6IG1fc291cmNlKFdURk1v
dmUoc291cmNlKSkKICAgICAsIG1faWQoV1RGTW92ZShpZCkpCisgICAgLCBtX2xvZ2dlcihXVEZN
b3ZlKGxvZ2dlcikpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ0lkZW50
aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCiB7CisgICAgVU5VU0VEX1BBUkFN
KGxvZ2dlcik7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgbV9zb3VyY2UtPnNldExv
Z2dlcihtX2xvZ2dlci5jb3B5UmVmKCksIG1fbG9nSWRlbnRpZmllcik7CisjZW5kaWYKICAgICBt
X3NvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOwogfQogCkBAIC0xNDcsNyArMTU1LDggQEAgdm9p
ZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6ZW5kVHJhY2soKQogCiBSZWY8TWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU+IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjbG9uZSgpCiB7Ci0gICAgYXV0
byBjbG9uZWRNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSA9IGNyZWF0ZShtX3NvdXJjZS5jb3B5UmVm
KCkpOworICAgIGF1dG8gY2xvbmVkTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUgPSBjcmVhdGUobV9s
b2dnZXIuY29weVJlZigpLCBtX3NvdXJjZS5jb3B5UmVmKCkpOworCiAgICAgY2xvbmVkTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUtPm1faXNFbmFibGVkID0gdGhpcy0+bV9pc0VuYWJsZWQ7CiAgICAg
Y2xvbmVkTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUtPm1faXNFbmRlZCA9IHRoaXMtPm1faXNFbmRl
ZDsKICAgICBjbG9uZWRNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS0+bV9jb250ZW50SGludCA9IHRo
aXMtPm1fY29udGVudEhpbnQ7CkBAIC0yNzksMTQgKzI4OCw2IEBAIHZvaWQgTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU6OnVwZGF0ZVJlYWR5U3RhdGUoKQogfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECi12b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzZXRMb2dnZXIoY29uc3QgTG9n
Z2VyJiBuZXdMb2dnZXIsIGNvbnN0IHZvaWQqIG5ld0xvZ0lkZW50aWZpZXIpCi17Ci0gICAgbV9s
b2dnZXIgPSAmbmV3TG9nZ2VyOwotICAgIG1fbG9nSWRlbnRpZmllciA9IG5ld0xvZ0lkZW50aWZp
ZXI7Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKLSAgICBtX3NvdXJjZS0+c2V0TG9n
Z2VyKG5ld0xvZ2dlciwgbmV3TG9nSWRlbnRpZmllcik7Ci19Ci0KIFdURkxvZ0NoYW5uZWwmIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpsb2dDaGFubmVsKCkgY29uc3QKIHsKICAgICByZXR1cm4g
TG9nV2ViUlRDOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKaW5kZXggNTk2N2Q0NTJjYzNkMjU0
MzI5MWU0OThiNTUzYzIzOWE5MjlhYzIyMS4uZWZhNjczY2YwOWFjMGJmYzk1ODY4YjZkM2E0ZDg3
MmU0OTE5NGNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCkBAIC02NCw4ICs2NCw4IEBA
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IFBsYXRmb3JtQXVk
aW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgeyB9OwogICAg
IH07CiAKLSAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBjcmVhdGUoUmVm
PFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYpOwotICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU+IGNyZWF0ZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiwgU3RyaW5nJiYgaWQp
OworICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IGNyZWF0ZShSZWY8Y29u
c3QgTG9nZ2VyPiYmLCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CisgICAgc3RhdGljIFJl
ZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gY3JlYXRlKFJlZjxjb25zdCBMb2dnZXI+JiYsIFJl
ZjxSZWFsdGltZU1lZGlhU291cmNlPiYmLCBTdHJpbmcmJiBpZCk7CiAKICAgICB2aXJ0dWFsIH5N
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSgpOwogCkBAIC0xMTcsMTMgKzExNywxMiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRJZEZvclRlc3RpbmcoU3RyaW5nJiYgaWQpIHsgbV9pZCA9IFdURk1vdmUo
aWQpOyB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2b2lkIHNldExvZ2dlcihj
b25zdCBMb2dnZXImLCBjb25zdCB2b2lkKik7Ci0gICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBj
b25zdCBmaW5hbCB7IEFTU0VSVChtX2xvZ2dlcik7IHJldHVybiAqbV9sb2dnZXIuZ2V0KCk7IH0K
KyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2Vy
OyB9CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fbG9nSWRlbnRpZmllcjsgfQogI2VuZGlmCi0gICAgCisKIHByaXZhdGU6Ci0gICAgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYsIFN0cmluZyYmIGlk
KTsKKyAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZShSZWY8Y29uc3QgTG9nZ2VyPiYmLCBSZWY8
UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiwgU3RyaW5nJiYgaWQpOwogCiAgICAgLy8gUmVhbHRpbWVN
ZWRpYVNvdXJjZU9ic2VydmVyCiAgICAgdm9pZCBzb3VyY2VTdGFydGVkKCkgZmluYWw7CkBAIC0x
NDEsOSArMTQwLDYgQEAgcHJpdmF0ZToKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBj
b25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUiOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0
IGZpbmFsOwotCi0gICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7Ci0gICAgY29uc3Qg
dm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlmCiAKICAgICBtdXRhYmxlIFJlY3Vyc2l2ZUxv
Y2sgbV9vYnNlcnZlcnNMb2NrOwpAQCAtMTU3LDYgKzE1MywxMCBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9oYXZlUHJvZHVjZWREYXRhIHsgZmFsc2UgfTsKICAgICBIaW50VmFsdWUgbV9jb250ZW50
SGludCB7IEhpbnRWYWx1ZTo6RW1wdHkgfTsKICAgICBSZWZQdHI8V2ViQXVkaW9Tb3VyY2VQcm92
aWRlcj4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyOworICAgIFJlZjxjb25zdCBMb2dnZXI+IG1fbG9n
Z2VyOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRl
bnRpZmllcjsKKyNlbmRpZgogfTsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlPj4gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGVWZWN0b3I7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IGI1M2YxZjdkNzYzODVhNWZjNGNkM2YzMWFkODlh
YjNjNjlkYzMyZTEuLmNjOTZjZmYxMjZhYjU1YWQwMzg4NGY3NjBkYjZmYWIwMmY0MDQ4ZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIoKQogCiBSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyOjp+UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcigpID0gZGVm
YXVsdDsKIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVh
bShOZXdNZWRpYVN0cmVhbUhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlciwgU3RyaW5nJiYgaGFz
aFNhbHQsIENhcHR1cmVEZXZpY2UmJiBhdWRpb0RldmljZSwgQ2FwdHVyZURldmljZSYmIHZpZGVv
RGV2aWNlLCBjb25zdCBNZWRpYVN0cmVhbVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKFJlZjxjb25zdCBMb2dnZXI+JiYg
bG9nZ2VyLCBOZXdNZWRpYVN0cmVhbUhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlciwgU3RyaW5n
JiYgaGFzaFNhbHQsIENhcHR1cmVEZXZpY2UmJiBhdWRpb0RldmljZSwgQ2FwdHVyZURldmljZSYm
IHZpZGVvRGV2aWNlLCBjb25zdCBNZWRpYVN0cmVhbVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAg
VmVjdG9yPFJlZjxSZWFsdGltZU1lZGlhU291cmNlPj4gYXVkaW9Tb3VyY2VzOwogICAgIFZlY3Rv
cjxSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IHZpZGVvU291cmNlczsKQEAgLTEwMiw3ICsxMDIs
NyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3RyZWFtKE5l
d01lZGlhU3RyZWFtSGFuZGxlciYmIGNvbXBsZQogICAgICAgICB9CiAgICAgfQogCi0gICAgY29t
cGxldGlvbkhhbmRsZXIoTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCB2
aWRlb1NvdXJjZXMpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihNZWRpYVN0cmVhbVByaXZhdGU6
OmNyZWF0ZShXVEZNb3ZlKGxvZ2dlciksIGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKSk7CiB9
CiAKIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpnZXRN
ZWRpYVN0cmVhbURldmljZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oCmluZGV4IDM3
Mzg3Njg0YTUxMmVlNjdmNjIyYzM4ODM4Y2Q2ZjFhMjExOWMwNTcuLjVkMTljY2JjYmUwMTUxYTZj
ZTQ5NjAxNWZmY2JhNDYyMWFlNDMxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmgK
QEAgLTU5LDEyICs1OSwxMiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlciYgc2luZ2xldG9uKCk7CiAKLSAgICB1c2luZyBWYWxp
ZENvbnN0cmFpbnRzSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8Q2FwdHVyZURl
dmljZT4mJiBhdWRpb0RldmljZVVJRHMsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2
aWNlVUlEcywgU3RyaW5nJiYpPjsKLSAgICB1c2luZyBJbnZhbGlkQ29uc3RyYWludHNIYW5kbGVy
ID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgaW52YWxpZENvbnN0cmFpbnQpPjsK
KyAgICB1c2luZyBWYWxpZENvbnN0cmFpbnRzSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoVmVjdG9y
PENhcHR1cmVEZXZpY2U+JiYgYXVkaW9EZXZpY2VVSURzLCBWZWN0b3I8Q2FwdHVyZURldmljZT4m
JiB2aWRlb0RldmljZVVJRHMsIFN0cmluZyYmKT47CisgICAgdXNpbmcgSW52YWxpZENvbnN0cmFp
bnRzSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiBpbnZhbGlkQ29uc3RyYWlu
dCk+OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdmFsaWRhdGVSZXF1ZXN0Q29uc3RyYWludHMo
VmFsaWRDb25zdHJhaW50c0hhbmRsZXImJiwgSW52YWxpZENvbnN0cmFpbnRzSGFuZGxlciYmLCBj
b25zdCBNZWRpYVN0cmVhbVJlcXVlc3QmLCBTdHJpbmcmJik7CiAKLSAgICB1c2luZyBOZXdNZWRp
YVN0cmVhbUhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPE1lZGlhU3RyZWFtUHJp
dmF0ZT4mJik+OwotICAgIHZvaWQgY3JlYXRlTWVkaWFTdHJlYW0oTmV3TWVkaWFTdHJlYW1IYW5k
bGVyJiYsIFN0cmluZyYmLCBDYXB0dXJlRGV2aWNlJiYgYXVkaW9EZXZpY2UsIENhcHR1cmVEZXZp
Y2UmJiB2aWRlb0RldmljZSwgY29uc3QgTWVkaWFTdHJlYW1SZXF1ZXN0Jik7CisgICAgdXNpbmcg
TmV3TWVkaWFTdHJlYW1IYW5kbGVyID0gRnVuY3Rpb248dm9pZChSZWZQdHI8TWVkaWFTdHJlYW1Q
cml2YXRlPiYmKT47CisgICAgdm9pZCBjcmVhdGVNZWRpYVN0cmVhbShSZWY8Y29uc3QgTG9nZ2Vy
PiYmLCBOZXdNZWRpYVN0cmVhbUhhbmRsZXImJiwgU3RyaW5nJiYsIENhcHR1cmVEZXZpY2UmJiBh
dWRpb0RldmljZSwgQ2FwdHVyZURldmljZSYmIHZpZGVvRGV2aWNlLCBjb25zdCBNZWRpYVN0cmVh
bVJlcXVlc3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiBn
ZXRNZWRpYVN0cmVhbURldmljZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKaW5kZXggNjMyZWYwYmMxMTRhMjE2NjgwYTU1ZmZjMThj
ZGVkZDRhMzk2M2E4OS4uYWYxNTIzNDhkNjM5YTAxMGZlMzM2ZTFjMjUzODk4ODViMGQ5OTMxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3Bw
CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6
Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXRzUGVyCiAKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICBpZiAoISgrK21fY2h1bmtzUmVjZWl2ZWQgJSAyMDApKQotICAg
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJjaHVuayAiLCBtX2NodW5rc1JlY2VpdmVk
KTsKKyAgICAgICAgQUxXQVlTX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgImNo
dW5rICIsIG1fY2h1bmtzUmVjZWl2ZWQpOwogI2VuZGlmCiAKICAgICBhdWRpb1NhbXBsZXNBdmFp
bGFibGUobWVkaWFUaW1lLCBhdWRpb0J1ZmZlckxpc3QsIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bihuZXdEZXNjcmlwdGlvbiksIG51bWJlck9mRnJhbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQppbmRleCBmZTVlYmQ2Y2IxMTViYTI3ODRm
MzVmNDg4ODNiNjBhNWZiNDlmZmE0Li5lNDZkMDc1Mjc5ZDk4MGI4ZDIxZjBkYTNiYTZhZGY1NTI2
M2RmNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hLm1tCkBAIC0xMTMsNyArMTEzLDcgQEAgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgUmVhbHRpbWVJ
bmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6OnBpeGVsQnVmZmVyUG9vbChzaXplX3Qgd2kKICAgICAg
ICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBudWxscHRyLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXBpeGVsQXR0cmlidXRlcywg
JnBvb2wpOwogCiAgICAgICAgIGlmIChzdGF0dXMgIT0ga0NWUmV0dXJuU3VjY2VzcykgewotICAg
ICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJGYWlsZWQgY3JlYXRpbmcgYSBwaXhl
bCBidWZmZXIgcG9vbCB3aXRoIGVycm9yICIsIHN0YXR1cyk7CisgICAgICAgICAgICBFUlJPUl9M
T0dfSUYobG9nZ2VyUHRyKCksIExPR0lERU5USUZJRVIsICJGYWlsZWQgY3JlYXRpbmcgYSBwaXhl
bCBidWZmZXIgcG9vbCB3aXRoIGVycm9yICIsIHN0YXR1cyk7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBtX3BpeGVsQnVmZmVyUG9vbCA9IGFkb3B0Q0Yo
cG9vbCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IFJl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpwaXhlbEJ1ZmZlckZyb21WaWQKICAgICAg
ICAgYXV0byBzdGF0dXMgPSBDVlBpeGVsQnVmZmVyUG9vbENyZWF0ZVBpeGVsQnVmZmVyKGtDRkFs
bG9jYXRvckRlZmF1bHQsIG1fcGl4ZWxCdWZmZXJQb29sLmdldCgpLCAmcGl4ZWxCdWZmZXIpOwog
CiAgICAgICAgIGlmIChzdGF0dXMgIT0ga0NWUmV0dXJuU3VjY2VzcykgewotICAgICAgICAgICAg
RVJST1JfTE9HKExPR0lERU5USUZJRVIsICJGYWlsZWQgY3JlYXRpbmcgYSBwaXhlbCBidWZmZXIg
d2l0aCBlcnJvciAiLCBzdGF0dXMpOworICAgICAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0
cigpLCBMT0dJREVOVElGSUVSLCAiRmFpbGVkIGNyZWF0aW5nIGEgcGl4ZWwgYnVmZmVyIHdpdGgg
ZXJyb3IgIiwgc3RhdHVzKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9
CiAgICAgICAgIG5ld1BpeGVsQnVmZmVyID0gYWRvcHRDRihwaXhlbEJ1ZmZlcik7CkBAIC0xNTks
MTIgKzE1OSwxMiBAQCB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hOjpPbkZy
YW1lKGNvbnN0IHdlYnJ0Yzo6VmlkZW9GcmFtZSYgZnJhbWUpCiAKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKICAgICBpZiAoISgrK21fbnVtYmVyT2ZGcmFtZXMgJSA2MCkpCi0gICAgICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgImZyYW1lICIsIG1fbnVtYmVyT2ZGcmFtZXMpOworICAg
ICAgICBBTFdBWVNfTE9HX0lGKGxvZ2dlclB0cigpLCBMT0dJREVOVElGSUVSLCAiZnJhbWUgIiwg
bV9udW1iZXJPZkZyYW1lcyk7CiAjZW5kaWYKIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBwaXhl
bEJ1ZmZlckZyb21WaWRlb0ZyYW1lKGZyYW1lKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKSB7Ci0g
ICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGdldCBhIHBpeGVsIGJ1
ZmZlciBmcm9tIGEgZnJhbWUiKTsKKyAgICAgICAgRVJST1JfTE9HX0lGKGxvZ2dlclB0cigpLCBM
T0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGdldCBhIHBpeGVsIGJ1ZmZlciBmcm9tIGEgZnJhbWUi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2E6Ok9uRnJhbWUoY29uc3Qgd2VicnRjOjpWaWRl
b0ZyYW1lJiBmcmFtZSkKICAgICBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVz
Y3JpcHRpb247CiAgICAgT1NTdGF0dXMgb3N0YXR1cyA9IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlv
bkNyZWF0ZUZvckltYWdlQnVmZmVyKGtDRkFsbG9jYXRvckRlZmF1bHQsIChDVkltYWdlQnVmZmVy
UmVmKXBpeGVsQnVmZmVyLCAmZm9ybWF0RGVzY3JpcHRpb24pOwogICAgIGlmIChvc3RhdHVzICE9
IG5vRXJyKSB7Ci0gICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiRmFpbGVkIHRvIGlu
aXRpYWxpemUgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uIHdpdGggZXJyb3IgIiwgc3RhdGljX2Nh
c3Q8aW50Pihvc3RhdHVzKSk7CisgICAgICAgIEVSUk9SX0xPR19JRihsb2dnZXJQdHIoKSwgTE9H
SURFTlRJRklFUiwgIkZhaWxlZCB0byBpbml0aWFsaXplIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlv
biB3aXRoIGVycm9yICIsIHN0YXRpY19jYXN0PGludD4ob3N0YXR1cykpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBSZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2VDb2NvYTo6T25GcmFtZShjb25zdCB3ZWJydGM6OlZpZGVvRnJhbWUmIGZyYW1lKQog
ICAgIG9zdGF0dXMgPSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZVJlYWR5V2l0aEltYWdlQnVmZmVyKGtD
RkFsbG9jYXRvckRlZmF1bHQsIChDVkltYWdlQnVmZmVyUmVmKXBpeGVsQnVmZmVyLCBmb3JtYXRE
ZXNjcmlwdGlvbiwgJnRpbWluZ0luZm8sICZzYW1wbGVCdWZmZXIpOwogICAgIENGUmVsZWFzZShm
b3JtYXREZXNjcmlwdGlvbik7CiAgICAgaWYgKG9zdGF0dXMgIT0gbm9FcnIpIHsKLSAgICAgICAg
RVJST1JfTE9HKExPR0lERU5USUZJRVIsICJGYWlsZWQgdG8gY3JlYXRlIHRoZSBzYW1wbGUgYnVm
ZmVyIHdpdGggZXJyb3IgIiwgc3RhdGljX2Nhc3Q8aW50Pihvc3RhdHVzKSk7CisgICAgICAgIEVS
Uk9SX0xPR19JRihsb2dnZXJQdHIoKSwgTE9HSURFTlRJRklFUiwgIkZhaWxlZCB0byBjcmVhdGUg
dGhlIHNhbXBsZSBidWZmZXIgd2l0aCBlcnJvciAiLCBzdGF0aWNfY2FzdDxpbnQ+KG9zdGF0dXMp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDEwNDg1ZDdhN2UzZDMyZTNkNjkz
ZjM1M2I0MGJkZWQyMjQ2NjlmZDUuLmI5MDI1NWQwNzVjNTNhZTI5NjYzMjNjMDRjNDliYzI4MjI5
NGY1YTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wNi0xMyAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xvbmluZyBhIE1lZGlhU3RyZWFtVHJhY2sg
ZG9lcyBub3QgY2xvbmUgdGhlIGxvZ2dlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk4ODQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stY2xv
bmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay1jbG9uZS5odG1sOgorCiAyMDE5LTA2LTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgc2VydmljZSB3b3JrZXIgdGVzdCBhbmQgZXhwZWN0
YXRpb24gYWZ0ZXIgcmV2aXNpb24gMjQ2MzYzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stY2xvbmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWNsb25lLWV4cGVjdGVkLnR4
dAppbmRleCA5ZWY2OGRlZDU0NDc0NjU4N2MwNDNkMjU1M2EzYjg0MTZiYzA1YzEwLi43MTAyYzY1
ODIzN2Q5NDg4Y2NjOWRjYTNiODA1OWZjZWE3OGY3YTYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stY2xvbmUtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1jbG9uZS1l
eHBlY3RlZC50eHQKQEAgLTIwLDYgKzIwLDcgQEAgUEFTUyB2aWRlb1RyYWNrLm9udW5tdXRlIGlz
IG5vdCB2aWRlb1RyYWNrMi5vbnVubXV0ZQogUEFTUyB2aWRlb1RyYWNrLm9uZW5kZWQgaXMgbm90
IHZpZGVvVHJhY2syLm9uZW5kZWQKIFBBU1MgdmlkZW9UcmFjay5vbm92ZXJjb25zdHJhaW5lZCBp
cyBub3QgdmlkZW9UcmFjazIub25vdmVyY29uc3RyYWluZWQKIFBBU1MgdmlkZW9UcmFjay5yZWFk
eVN0YXRlIGlzIG5vdCB2aWRlb1RyYWNrMi5yZWFkeVN0YXRlCitQQVNTIHZpZGVvVHJhY2sucmVh
ZHlTdGF0ZSBpcyB2aWRlb1RyYWNrMy5yZWFkeVN0YXRlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1jbG9uZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWNsb25lLmh0bWwKaW5kZXggMTdjNmYxZDE0
OTVmZWU2MzY5YTc5NTZmODFhODY3Mjc4MmJkYjgzZi4uNjNlODc3NTI2NDdlYzIyOGNiYzhhNjVh
ZTQ3YWFiNDY4ZWUyYWRiNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLWNsb25lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWNsb25lLmh0bWwKQEAgLTcsNiArNyw3IEBACiAgICAg
ICAgICAgICB2YXIgbWVkaWFTdHJlYW07CiAgICAgICAgICAgICB2YXIgdmlkZW9UcmFjazsKICAg
ICAgICAgICAgIHZhciB2aWRlb1RyYWNrMjsKKyAgICAgICAgICAgIHZhciB2aWRlb1RyYWNrMzsK
ICAgICAgICAgICAgIHZhciBhdWRpb1RyYWNrOwogCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RT
dHJlYW0oc3RyZWFtKSB7CkBAIC00MCw2ICs0MSw5IEBACiAgICAgICAgICAgICAgICAgdmlkZW9U
cmFjay5zdG9wKCk7CiAgICAgICAgICAgICAgICAgc2hvdWxkTm90QmUoJ3ZpZGVvVHJhY2sucmVh
ZHlTdGF0ZScsICd2aWRlb1RyYWNrMi5yZWFkeVN0YXRlJyk7CiAKKyAgICAgICAgICAgICAgICB2
aWRlb1RyYWNrMyA9IHZpZGVvVHJhY2suY2xvbmUoKTsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZSgndmlkZW9UcmFjay5yZWFkeVN0YXRlJywgJ3ZpZGVvVHJhY2szLnJlYWR5U3RhdGUnKTsKKwog
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>