<?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>223073</bug_id>
          
          <creation_ts>2021-03-11 09:48:01 -0800</creation_ts>
          <short_desc>Replace some usage of dispatch_queue with WorkQueue now that it supports sync dispatching</short_desc>
          <delta_ts>2021-03-11 12:48:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>
          <dependson>223049</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1738492</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-11 09:48:01 -0800</bug_when>
    <thetext>Replace some usage of dispatch_queue with WorkQueue now that it supports sync dispatching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738508</commentid>
    <comment_count>1</comment_count>
      <attachid>422941</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-11 10:02:37 -0800</bug_when>
    <thetext>Created attachment 422941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738513</commentid>
    <comment_count>2</comment_count>
      <attachid>422941</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-11 10:16:07 -0800</bug_when>
    <thetext>Comment on attachment 422941
Patch

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

&gt; Source/WebCore/platform/audio/ios/AudioSessionIOS.mm:107
&gt; -    OSObjectPtr&lt;dispatch_queue_t&gt; m_dispatchQueue;
&gt; +    RefPtr&lt;WorkQueue&gt; m_workQueue;
&gt;      RetainPtr&lt;WebInterruptionObserverHelper&gt; m_interruptionObserverHelper;

This now adds a non-thread-safe reference count to this object. I’m assuming that didn’t matter.

Also, given that everything here is public, this seems more like a struct than a class.

&gt; Source/WebCore/platform/audio/ios/AudioSessionIOS.mm:271
&gt; +        NSError* error = nil;

We normally format this as &quot;NSError *&quot;. The old code above didn’t do that, but the code below did.

&gt; Source/WebCore/platform/audio/ios/AudioSessionIOS.mm:272
&gt; +        m_private-&gt;m_workQueue-&gt;dispatchSync([&amp;error] {

Can we make a bool come out of this thing instead of a possibly-already-deallocated NSError that we check against nil?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738540</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-11 11:05:07 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 422941 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=422941&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/audio/ios/AudioSessionIOS.mm:107
&gt; &gt; -    OSObjectPtr&lt;dispatch_queue_t&gt; m_dispatchQueue;
&gt; &gt; +    RefPtr&lt;WorkQueue&gt; m_workQueue;
&gt; &gt;      RetainPtr&lt;WebInterruptionObserverHelper&gt; m_interruptionObserverHelper;
&gt; 
&gt; This now adds a non-thread-safe reference count to this object. I’m assuming
&gt; that didn’t matter.

What non-thread-safe reference count? WorkQueue definitely subclasses ThreadSafeRefCounted.

&gt; 
&gt; Also, given that everything here is public, this seems more like a struct
&gt; than a class.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/ios/AudioSessionIOS.mm:271
&gt; &gt; +        NSError* error = nil;
&gt; 
&gt; We normally format this as &quot;NSError *&quot;. The old code above didn’t do that,
&gt; but the code below did.

OK.

&gt; 
&gt; &gt; Source/WebCore/platform/audio/ios/AudioSessionIOS.mm:272
&gt; &gt; +        m_private-&gt;m_workQueue-&gt;dispatchSync([&amp;error] {
&gt; 
&gt; Can we make a bool come out of this thing instead of a
&gt; possibly-already-deallocated NSError that we check against nil?

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738542</commentid>
    <comment_count>4</comment_count>
      <attachid>422947</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-11 11:10:36 -0800</bug_when>
    <thetext>Created attachment 422947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738547</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-11 11:23:54 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; What non-thread-safe reference count? WorkQueue definitely subclasses
&gt; ThreadSafeRefCounted.

My mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738554</commentid>
    <comment_count>6</comment_count>
      <attachid>422947</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-11 11:30:13 -0800</bug_when>
    <thetext>Comment on attachment 422947
Patch

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

&gt; Source/WebCore/platform/audio/ios/AudioSessionIOS.mm:272
&gt; +        m_private-&gt;m_workQueue-&gt;dispatchSync([&amp;error] {

Should be &amp;success, not &amp;error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738555</commentid>
    <comment_count>7</comment_count>
      <attachid>422951</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-11 11:34:59 -0800</bug_when>
    <thetext>Created attachment 422951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738582</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-11 12:47:37 -0800</bug_when>
    <thetext>Committed r274296: &lt;https://commits.webkit.org/r274296&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422951.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738583</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-11 12:48:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/75328714&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422941</attachid>
            <date>2021-03-11 10:02:37 -0800</date>
            <delta_ts>2021-03-11 11:10:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223073-20210311100236.patch</filename>
            <type>text/plain</type>
            <size>27651</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0Mjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM2YmViYjdlYWJjNWUxYWRl
YjVhNTA4NTQ0NWU4ZjVjMmYzYzVjOWUuLjcwZjA4MDkyMTYzZmRkZGM5NTQwZGZiOWQzNmQyMGM3
Yjk0OGI0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDMtMTEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIHNvbWUgdXNhZ2Ugb2Yg
ZGlzcGF0Y2hfcXVldWUgd2l0aCBXb3JrUXVldWUgbm93IHRoYXQgaXQgc3VwcG9ydHMgc3luYyBk
aXNwYXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzMDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVwbGFjZSBzb21lIHVzYWdlIG9mIGRpc3BhdGNoX3F1ZXVlIHdpdGggV29ya1F1ZXVlIG5v
dyB0aGF0IGl0IHN1cHBvcnRzIHN5bmMgZGlzcGF0Y2hpbmcKKyAgICAgICAgc2luY2UgcjI3NDI4
Ni4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbToK
KyAgICAgICAgKFdlYktpdDo6aXRwUXVldWUpOgorICAgICAgICAoV2ViS2l0OjpkZXRlcm1pbmVJ
VFBTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OmRvZXNBcHBIYXZlSVRQRW5hYmxlZCk6CisKIDIw
MjEtMDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRy
b2R1Y2UgV29ya1F1ZXVlOjpkaXNwYXRjaFN5bmMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggNmUzZGNkMTYyNDdj
ODY4NjgyNjNiMjJkYWMwZjIwMTU1M2E0N2NhOS4uOWUyOGM3ZjgwZjJjNzA2M2Q5ZmNhYTlhMjAx
YjQ0ODRiOGUzZDk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCkBAIC0zMyw4ICszMyw4IEBACiAjaW1wb3J0IDxvYmpj
L3J1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CiAj
aW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL09TT2JqZWN0
UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVl
Lmg+CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCkBAIC0x
MDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIH5BdWRpb1Nlc3Npb25Qcml2YXRlKCk7CiAKICAg
ICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7Ci0gICAgT1NP
YmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9kaXNwYXRjaFF1ZXVlOworICAgIFJlZlB0cjxX
b3JrUXVldWU+IG1fd29ya1F1ZXVlOwogICAgIFJldGFpblB0cjxXZWJJbnRlcnJ1cHRpb25PYnNl
cnZlckhlbHBlcj4gbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcjsKIH07CiAKQEAgLTI2MSwy
MyArMjYxLDIyIEBAIHNpemVfdCBBdWRpb1Nlc3Npb246Om1heGltdW1OdW1iZXJPZk91dHB1dENo
YW5uZWxzKCkgY29uc3QKIAogYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50ZXJu
YWwoYm9vbCBhY3RpdmUpCiB7Ci0gICAgX19ibG9jayBOU0Vycm9yKiBlcnJvciA9IG5pbDsKLQot
ICAgIGlmICghbV9wcml2YXRlLT5tX2Rpc3BhdGNoUXVldWUpCi0gICAgICAgIG1fcHJpdmF0ZS0+
bV9kaXNwYXRjaFF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIkF1
ZGlvU2Vzc2lvbiBBY3RpdmF0aW9uIFF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSk7Cisg
ICAgaWYgKCFtX3ByaXZhdGUtPm1fd29ya1F1ZXVlKQorICAgICAgICBtX3ByaXZhdGUtPm1fd29y
a1F1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIkF1ZGlvU2Vzc2lvbiBBY3RpdmF0aW9uIFF1ZXVl
Iik7CiAKICAgICAvLyBXZSBuZWVkIHRvIGRlYWN0aXZhdGUgdGhlIHNlc3Npb24gb24gYW5vdGhl
ciBxdWV1ZSBiZWNhdXNlIHRoZSBBVkF1ZGlvU2Vzc2lvblNldEFjdGl2ZU9wdGlvbk5vdGlmeU90
aGVyc09uRGVhY3RpdmF0aW9uIG9wdGlvbgogICAgIC8vIG1lYW5zIHRoYXQgQVZBdWRpb1Nlc3Np
b24gbWF5IHN5bmNocm9ub3VzbHkgdW5kdWNrIHByZXZpb3VzbHkgZHVja2VkIGNsaWVudHMuIEFj
dGl2YXRpb24gbmVlZHMgdG8gY29tcGxldGUgYmVmb3JlIHRoaXMgbWV0aG9kCiAgICAgLy8gcmV0
dXJucywgc28gZG8gaXQgc3luY2hyb25vdXNseSBvbiB0aGUgc2FtZSBzZXJpYWwgcXVldWUuCiAg
ICAgaWYgKGFjdGl2ZSkgewotICAgICAgICBkaXNwYXRjaF9zeW5jKG1fcHJpdmF0ZS0+bV9kaXNw
YXRjaFF1ZXVlLmdldCgpLCBeeworICAgICAgICBOU0Vycm9yKiBlcnJvciA9IG5pbDsKKyAgICAg
ICAgbV9wcml2YXRlLT5tX3dvcmtRdWV1ZS0+ZGlzcGF0Y2hTeW5jKFsmZXJyb3JdIHsKICAgICAg
ICAgICAgIFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIHNl
dEFjdGl2ZTpZRVMgd2l0aE9wdGlvbnM6MCBlcnJvcjomZXJyb3JdOwogICAgICAgICB9KTsKLQog
ICAgICAgICByZXR1cm4gIWVycm9yOwogICAgIH0KIAotICAgIGRpc3BhdGNoX2FzeW5jKG1fcHJp
dmF0ZS0+bV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBeeworICAgIG1fcHJpdmF0ZS0+bV93b3JrUXVl
dWUtPmRpc3BhdGNoKFtdIHsKKyAgICAgICAgTlNFcnJvciogZXJyb3IgPSBuaWw7CiAgICAgICAg
IFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIHNldEFjdGl2
ZTpOTyB3aXRoT3B0aW9uczowIGVycm9yOiZlcnJvcl07CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNz
aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
Q29yZURlY29tcHJlc3Npb25TZXNzaW9uLmgKaW5kZXggZWI2OTAzOGI3ZGZhOWEzOWIyZTZmYTY1
NDJlYjk1MDU5OTE2YTU5Zi4uYjYxNzU1Mzc0ZTY3MGFkODNlOTcyOGRiN2EzMzExM2I3ZDc0NTlh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
Q29yZURlY29tcHJlc3Npb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9Xb3Jr
UXVldWUuaD4KIAogdHlwZWRlZiBDRlR5cGVSZWYgQ01CdWZmZXJSZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBfX0NGQXJyYXkgKiBDRkFycmF5UmVmOwpAQCAtMTEzLDggKzExNCw4IEBAIHByaXZh
dGU6CiAgICAgUmV0YWluUHRyPENNQnVmZmVyUXVldWVSZWY+IG1fcHJvZHVjZXJRdWV1ZTsKICAg
ICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9jb25zdW1lclF1ZXVlOwogICAgIFJldGFp
blB0cjxDTVRpbWViYXNlUmVmPiBtX3RpbWViYXNlOwotICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNo
X3F1ZXVlX3Q+IG1fZGVjb21wcmVzc2lvblF1ZXVlOwotICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNo
X3F1ZXVlX3Q+IG1fZW5xdWVpbmdRdWV1ZTsKKyAgICBSZWY8V29ya1F1ZXVlPiBtX2RlY29tcHJl
c3Npb25RdWV1ZTsKKyAgICBSZWY8V29ya1F1ZXVlPiBtX2VucXVlaW5nUXVldWU7CiAgICAgT1NP
YmplY3RQdHI8ZGlzcGF0Y2hfc291cmNlX3Q+IG1fdGltZXJTb3VyY2U7CiAgICAgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IG1fbm90aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IG1faGFzQXZhaWxhYmxlRnJhbWVDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lv
bi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNv
bXByZXNzaW9uU2Vzc2lvbi5tbQppbmRleCBkYzViZTc0NjlhOWZkMTY5OGM2YjM2ZTNlZDQ5NzQ1
ZjM5ZDBmZTcyLi43MDVhMzE4NzBhNDcyM2M2MzMyY2MwODc1NWU5NGZhMzM4MTBkNzBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVj
b21wcmVzc2lvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCkBAIC01MSw4ICs1MSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpXZWJD
b3JlRGVjb21wcmVzc2lvblNlc3Npb24oTW9kZSBtb2RlKQogICAgIDogbV9tb2RlKG1vZGUpCi0g
ICAgLCBtX2RlY29tcHJlc3Npb25RdWV1ZShhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2Ny
ZWF0ZSgiV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uIERlY29tcHJlc3Npb24gUXVldWUiLCBE
SVNQQVRDSF9RVUVVRV9TRVJJQUwpKSkKLSAgICAsIG1fZW5xdWVpbmdRdWV1ZShhZG9wdE9TT2Jq
ZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uIEVu
cXVldWVpbmcgUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSkKKyAgICAsIG1fZGVjb21w
cmVzc2lvblF1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Np
b24gRGVjb21wcmVzc2lvbiBRdWV1ZSIpKQorICAgICwgbV9lbnF1ZWluZ1F1ZXVlKFdvcmtRdWV1
ZTo6Y3JlYXRlKCJXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24gRW5xdWV1ZWluZyBRdWV1ZSIp
KQogewogfQogCkBAIC0xMTgsOSArMTE4LDYgQEAgdm9pZCBXZWJDb3JlRGVjb21wcmVzc2lvblNl
c3Npb246OmVucXVldWVTYW1wbGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLAogICAg
IGlmIChub0VyciAhPSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShzYW1w
bGVCdWZmZXIsIGl0ZW1Db3VudCwgdGltaW5nSW5mb0FycmF5LmRhdGEoKSwgbnVsbHB0cikpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kZWNvbXByZXNzaW9uUXVldWUpCi0gICAgICAg
IG1fZGVjb21wcmVzc2lvblF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVh
dGUoIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDIERlY29tcHJlc3Npb24gUXVldWUiLCBESVNQ
QVRDSF9RVUVVRV9TRVJJQUwpKTsKLQogICAgIC8vIENNQnVmZmVyQ2FsbGJhY2tzIGNvbnRhaW5z
IDY0LWJpdCBwb2ludGVycyB0aGF0IGFyZW4ndCA4LWJ5dGUgYWxpZ25lZC4gVG8gc3VwcHJlc3Mg
dGhlIGxpbmtlcgogICAgIC8vIHdhcm5pbmcgYWJvdXQgdGhpcywgd2UgcHJlcGVuZCA0IGJ5dGVz
IG9mIHBhZGRpbmcgd2hlbiBidWlsZGluZy4KICAgICBjb25zdCBzaXplX3QgcGFkU2l6ZSA9IDQ7
CkBAIC0xNjcsNyArMTY0LDcgQEAgdm9pZCBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmVu
cXVldWVTYW1wbGUoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLAogCiAgICAgTE9HKE1l
ZGlhLCAiV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjplbnF1ZXVlU2FtcGxlKCVwKSAtIGZy
YW1lc0JlaW5nRGVjb2RlZCglZCkiLCB0aGlzLCBtX2ZyYW1lc0JlaW5nRGVjb2RlZCk7CiAKLSAg
ICBkaXNwYXRjaF9hc3luYyhtX2RlY29tcHJlc3Npb25RdWV1ZS5nZXQoKSwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmUHRyKCp0aGlzKSwgc3Ryb25nQnVmZmVyID0gcmV0YWluUHRyKHNhbXBsZUJ1
ZmZlciksIGRpc3BsYXlpbmddIHsKKyAgICBtX2RlY29tcHJlc3Npb25RdWV1ZS0+ZGlzcGF0Y2go
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKCp0aGlzKSwgc3Ryb25nQnVmZmVyID0gcmV0YWlu
UHRyKHNhbXBsZUJ1ZmZlciksIGRpc3BsYXlpbmddIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
ZGVjb2RlU2FtcGxlKHN0cm9uZ0J1ZmZlci5nZXQoKSwgZGlzcGxheWluZyk7CiAgICAgfSk7CiB9
CkBAIC0zMTQsNyArMzExLDcgQEAgdm9pZCBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246Omhh
bmRsZURlY29tcHJlc3Npb25PdXRwdXQoYm9vbCBkaXNwbGF5aW5nLCBPU1MKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGRpc3BhdGNoX2FzeW5jKG1fZW5xdWVpbmdRdWV1ZS5nZXQoKSwg
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBpbWFnZVNhbXBsZUJ1ZmZlciA9IGFk
b3B0Q0YocmF3SW1hZ2VTYW1wbGVCdWZmZXIpLCBkaXNwbGF5aW5nXSB7CisgICAgbV9lbnF1ZWlu
Z1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGltYWdl
U2FtcGxlQnVmZmVyID0gYWRvcHRDRihyYXdJbWFnZVNhbXBsZUJ1ZmZlciksIGRpc3BsYXlpbmdd
IHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZW5xdWV1ZURlY29kZWRTYW1wbGUoaW1hZ2VTYW1w
bGVCdWZmZXIuZ2V0KCksIGRpc3BsYXlpbmcpOwogICAgIH0pOwogfQpAQCAtNTIyLDkgKzUxOSw5
IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Np
b246OmltYWdlRm9yVGltZShjb25zdCBNZWRpCiAKIHZvaWQgV2ViQ29yZURlY29tcHJlc3Npb25T
ZXNzaW9uOjpmbHVzaCgpCiB7Ci0gICAgZGlzcGF0Y2hfc3luYyhtX2RlY29tcHJlc3Npb25RdWV1
ZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBSZWZQdHI8V2ViQ29yZURlY29tcHJlc3Npb25TZXNz
aW9uPih0aGlzKV0geworICAgIG1fZGVjb21wcmVzc2lvblF1ZXVlLT5kaXNwYXRjaFN5bmMoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
Q01CdWZmZXJRdWV1ZVJlc2V0KHByb3RlY3RlZFRoaXMtPm1fcHJvZHVjZXJRdWV1ZS5nZXQoKSk7
Ci0gICAgICAgIGRpc3BhdGNoX3N5bmMocHJvdGVjdGVkVGhpcy0+bV9lbnF1ZWluZ1F1ZXVlLmdl
dCgpLCBbcHJvdGVjdGVkVGhpc10geworICAgICAgICBtX2VucXVlaW5nUXVldWUtPmRpc3BhdGNo
U3luYyhbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKICAgICAgICAg
ICAgIENNQnVmZmVyUXVldWVSZXNldChwcm90ZWN0ZWRUaGlzLT5tX2NvbnN1bWVyUXVldWUuZ2V0
KCkpOwogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9mcmFtZXNTaW5jZUxhc3RRb3NDaGVj
ayA9IDA7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2N1cnJlbnRRb3NUaWVyID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbG9ja2xpc3RVcGRhdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tsaXN0VXBkYXRlci5oCmluZGV4
IDAwMTYxZGVlZGNiNDQ2ODg5NjYzOTk0NGQzNDdhNmNiYzMyYzM2ZDQuLjM1MGU0ZjI1MTViNjZk
M2Y0Yzc0ZTM5NzQ5ZGQyMDBlMjkwODk4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9CbG9ja2xpc3RVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0Jsb2NrbGlzdFVwZGF0ZXIuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgUExBVEZP
Uk0oTUFDKQogCi0jaW1wb3J0IDxkaXNwYXRjaC9kaXNwYXRjaC5oPgorI2ltcG9ydCA8d3RmL1dv
cmtRdWV1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDEwICszNiw5IEBAIGNs
YXNzIFdlYkdMQmxvY2tsaXN0OwogCiBjbGFzcyBCbG9ja2xpc3RVcGRhdGVyIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplUXVldWUoKTsKICAgICBzdGF0aWMgdm9pZCByZWxv
YWRJZk5lY2Vzc2FyeSgpOwogCi0gICAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUoKSB7
IHJldHVybiBzX3F1ZXVlOyB9CisgICAgc3RhdGljIFdvcmtRdWV1ZSYgcXVldWUoKTsKICAgICBz
dGF0aWMgUGx1Z2luQmxvY2tsaXN0KiBwbHVnaW5CbG9ja2xpc3QoKSB7IHJldHVybiBzX3BsdWdp
bkJsb2NrbGlzdDsgfQogICAgIHN0YXRpYyBXZWJHTEJsb2NrbGlzdCogd2ViR0xCbG9ja2xpc3Qo
KSB7IHJldHVybiBzX3dlYkdMQmxvY2tsaXN0OyB9OwogCkBAIC00Nyw3ICs0Niw2IEBAIHByaXZh
dGU6CiAKICAgICBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpyZWFkQmxvY2tsaXN0RGF0YSgpOwogCi0g
ICAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3Qgc19xdWV1ZTsKICAgICBzdGF0aWMgUGx1Z2luQmxv
Y2tsaXN0KiBzX3BsdWdpbkJsb2NrbGlzdDsKICAgICBzdGF0aWMgV2ViR0xCbG9ja2xpc3QqIHNf
d2ViR0xCbG9ja2xpc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0Jsb2NrbGlzdFVwZGF0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxv
Y2tsaXN0VXBkYXRlci5tbQppbmRleCBkMTE1OWE5ZTU3MmMzMmY3MjcxYWVkM2E0OTZjM2U2NDBl
ZWRjYWE4Li4yNWZkMThiMGRjOWFhZGUzMGQ4N2YzNjU1YjUzNjNkMGZkYjZjNWY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tsaXN0VXBkYXRlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tsaXN0VXBkYXRlci5tbQpAQCAtNTEs
MTEgKzUxLDIwIEBAIE5TU3RyaW5nICogY29uc3QgYmxvY2tsaXN0UGF0aCA9IEAiL1N5c3RlbS9M
aWJyYXJ5L0NvcmVTZXJ2aWNlcy9YUHJvdGVjdC5idW5kbGUvCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotZGlzcGF0Y2hfcXVldWVfdCBCbG9ja2xpc3RVcGRhdGVyOjpzX3F1ZXVlOwotCiBQbHVn
aW5CbG9ja2xpc3QqIEJsb2NrbGlzdFVwZGF0ZXI6OnNfcGx1Z2luQmxvY2tsaXN0ID0gbnVsbHB0
cjsKIFdlYkdMQmxvY2tsaXN0KiBCbG9ja2xpc3RVcGRhdGVyOjpzX3dlYkdMQmxvY2tsaXN0ID0g
bnVsbHB0cjsKIAorV29ya1F1ZXVlJiBCbG9ja2xpc3RVcGRhdGVyOjpxdWV1ZSgpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxXb3JrUXVldWU+PiBxdWV1ZTsKKyAgICBzdGF0
aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKKyAg
ICAgICAgcXVldWUuZ2V0KCkgPSBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5C
bG9ja2xpc3QiKTsKKyAgICB9KTsKKworICAgIHJldHVybiAqcXVldWUuZ2V0KCk7Cit9CisKIE5T
RGljdGlvbmFyeSAqIEJsb2NrbGlzdFVwZGF0ZXI6OnJlYWRCbG9ja2xpc3REYXRhKCkKIHsKICAg
ICBOU0RhdGEgKmRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6YmxvY2tsaXN0
UGF0aF07CkBAIC0xMDEsMTQgKzExMCw2IEBAIHZvaWQgQmxvY2tsaXN0VXBkYXRlcjo6cmVsb2Fk
SWZOZWNlc3NhcnkoKQogICAgIGJsb2NrbGlzdFVwZGF0ZVRpbWUgPSBzdGF0QnVmLnN0X210aW1l
c3BlYy50dl9zZWM7CiB9CiAKLXZvaWQgQmxvY2tsaXN0VXBkYXRlcjo6aW5pdGlhbGl6ZVF1ZXVl
KCkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7Ci0gICAgZGlzcGF0Y2hfb25j
ZSgmb25jZSwgXnsKLSAgICAgICAgc19xdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29t
LmFwcGxlLldlYktpdC5CbG9ja2xpc3QiLCAwKTsKLSAgICB9KTsKLX0KLQogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5CbG9ja2xpc3Qu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1tCmluZGV4
IDEzNmY2ZWRmNjliNGRjNmRkNzkyYmExM2M0YzhmY2RlYzhkOGU0MWMuLmM3MzU1ZjI3NjBiN2Y5
MDlmZDEyMjk5NGE3YTRmMmJhNWI2NzI3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbHVnaW5CbG9ja2xpc3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsdWdpbkJsb2NrbGlzdC5tbQpAQCAtMzUsMTYgKzM1LDEyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUGx1Z2luQmxvY2tsaXN0OjpMb2FkUG9saWN5IFBsdWdpbkJsb2NrbGlz
dDo6bG9hZFBvbGljeUZvclBsdWdpblZlcnNpb24oTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIs
IE5TU3RyaW5nICpidW5kbGVWZXJzaW9uU3RyaW5nKQorYXV0byBQbHVnaW5CbG9ja2xpc3Q6Omxv
YWRQb2xpY3lGb3JQbHVnaW5WZXJzaW9uKE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyLCBOU1N0
cmluZyAqYnVuZGxlVmVyc2lvblN0cmluZykgLT4gTG9hZFBvbGljeQogewotICAgIEJsb2NrbGlz
dFVwZGF0ZXI6OmluaXRpYWxpemVRdWV1ZSgpOwotCi0gICAgX19ibG9jayBQbHVnaW5CbG9ja2xp
c3Q6OkxvYWRQb2xpY3kgbG9hZFBvbGljeSA9IExvYWRQb2xpY3k6OkxvYWROb3JtYWxseTsKLSAg
ICBkaXNwYXRjaF9zeW5jKEJsb2NrbGlzdFVwZGF0ZXI6OnF1ZXVlKCksIF57CisgICAgYXV0byBs
b2FkUG9saWN5ID0gTG9hZFBvbGljeTo6TG9hZE5vcm1hbGx5OworICAgIEJsb2NrbGlzdFVwZGF0
ZXI6OnF1ZXVlKCkuZGlzcGF0Y2hTeW5jKFsmXSB7CiAgICAgICAgIEJsb2NrbGlzdFVwZGF0ZXI6
OnJlbG9hZElmTmVjZXNzYXJ5KCk7Ci0KLSAgICAgICAgUGx1Z2luQmxvY2tsaXN0KiBwbHVnaW5C
bG9ja2xpc3QgPSBCbG9ja2xpc3RVcGRhdGVyOjpwbHVnaW5CbG9ja2xpc3QoKTsKLSAgICAgICAg
aWYgKHBsdWdpbkJsb2NrbGlzdCkKKyAgICAgICAgaWYgKGF1dG8qIHBsdWdpbkJsb2NrbGlzdCA9
IEJsb2NrbGlzdFVwZGF0ZXI6OnBsdWdpbkJsb2NrbGlzdCgpKQogICAgICAgICAgICAgbG9hZFBv
bGljeSA9IHBsdWdpbkJsb2NrbGlzdC0+bG9hZFBvbGljeUZvclBsdWdpbihidW5kbGVJZGVudGlm
aWVyLCBidW5kbGVWZXJzaW9uU3RyaW5nKTsKICAgICB9KTsKIApAQCAtNTMsMTQgKzQ5LDEwIEBA
IFBsdWdpbkJsb2NrbGlzdDo6TG9hZFBvbGljeSBQbHVnaW5CbG9ja2xpc3Q6OmxvYWRQb2xpY3lG
b3JQbHVnaW5WZXJzaW9uKE5TU3RyaW5nCiAKIGJvb2wgUGx1Z2luQmxvY2tsaXN0Ojppc1BsdWdp
blVwZGF0ZUF2YWlsYWJsZShOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllcikKIHsKLSAgICBCbG9j
a2xpc3RVcGRhdGVyOjppbml0aWFsaXplUXVldWUoKTsKLQotICAgIF9fYmxvY2sgYm9vbCBpc1Bs
dWdpblVwZGF0ZUF2YWlsYWJsZSA9IGZhbHNlOwotICAgIGRpc3BhdGNoX3N5bmMoQmxvY2tsaXN0
VXBkYXRlcjo6cXVldWUoKSwgXnsKKyAgICBib29sIGlzUGx1Z2luVXBkYXRlQXZhaWxhYmxlID0g
ZmFsc2U7CisgICAgQmxvY2tsaXN0VXBkYXRlcjo6cXVldWUoKS5kaXNwYXRjaFN5bmMoWyZdIHsK
ICAgICAgICAgQmxvY2tsaXN0VXBkYXRlcjo6cmVsb2FkSWZOZWNlc3NhcnkoKTsKLQotICAgICAg
ICBQbHVnaW5CbG9ja2xpc3QqIHBsdWdpbkJsb2NrbGlzdCA9IEJsb2NrbGlzdFVwZGF0ZXI6OnBs
dWdpbkJsb2NrbGlzdCgpOwotICAgICAgICBpZiAocGx1Z2luQmxvY2tsaXN0KQorICAgICAgICBp
ZiAoYXV0byogcGx1Z2luQmxvY2tsaXN0ID0gQmxvY2tsaXN0VXBkYXRlcjo6cGx1Z2luQmxvY2ts
aXN0KCkpCiAgICAgICAgICAgICBpc1BsdWdpblVwZGF0ZUF2YWlsYWJsZSA9IHBsdWdpbkJsb2Nr
bGlzdC0+aXNVcGRhdGVBdmFpbGFibGUoYnVuZGxlSWRlbnRpZmllcik7CiAgICAgfSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQppbmRleCBkMDRl
ZTIxNzRkMWRiYzc3ZDdjYWU4NWEzZmFhMjViMDE4MTU3ODQ1Li43N2M5MzM5MDkwNmUzNzllYjI5
ZDI0Nzg5NWUwYzNkMmQ3OGFkODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkdMQmxvY2tsaXN0Lm1tCkBAIC0xMDQsMTQgKzEwNCwxMCBAQCBzdGF0aWMgT1NCdWlsZElu
Zm8gYnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoTlNTdHJpbmcgKmJ1aWxkU3RyaW5nKQogCiBi
b29sIFdlYkdMQmxvY2tsaXN0OjpzaG91bGRCbG9ja1dlYkdMKCkKIHsKLSAgICBCbG9ja2xpc3RV
cGRhdGVyOjppbml0aWFsaXplUXVldWUoKTsKLQotICAgIF9fYmxvY2sgYm9vbCBzaG91bGRCbG9j
ayA9IGZhbHNlOwotICAgIGRpc3BhdGNoX3N5bmMoQmxvY2tsaXN0VXBkYXRlcjo6cXVldWUoKSwg
XnsKKyAgICBib29sIHNob3VsZEJsb2NrID0gZmFsc2U7CisgICAgQmxvY2tsaXN0VXBkYXRlcjo6
cXVldWUoKS5kaXNwYXRjaFN5bmMoWyZzaG91bGRCbG9ja10gewogICAgICAgICBCbG9ja2xpc3RV
cGRhdGVyOjpyZWxvYWRJZk5lY2Vzc2FyeSgpOwotCi0gICAgICAgIFdlYkdMQmxvY2tsaXN0KiB3
ZWJHTEJsb2NrbGlzdCA9IEJsb2NrbGlzdFVwZGF0ZXI6OndlYkdMQmxvY2tsaXN0KCk7Ci0gICAg
ICAgIGlmICh3ZWJHTEJsb2NrbGlzdCkKKyAgICAgICAgaWYgKGF1dG8qIHdlYkdMQmxvY2tsaXN0
ID0gQmxvY2tsaXN0VXBkYXRlcjo6d2ViR0xCbG9ja2xpc3QoKSkKICAgICAgICAgICAgIHNob3Vs
ZEJsb2NrID0gd2ViR0xCbG9ja2xpc3QtPnNob3VsZEJsb2NrKCk7CiAgICAgfSk7CiAKQEAgLTEy
MCwxNCArMTE2LDEwIEBAIGJvb2wgV2ViR0xCbG9ja2xpc3Q6OnNob3VsZEJsb2NrV2ViR0woKQog
CiBib29sIFdlYkdMQmxvY2tsaXN0OjpzaG91bGRTdWdnZXN0QmxvY2tpbmdXZWJHTCgpCiB7Ci0g
ICAgQmxvY2tsaXN0VXBkYXRlcjo6aW5pdGlhbGl6ZVF1ZXVlKCk7Ci0KLSAgICBfX2Jsb2NrIGJv
b2wgc2hvdWxkU3VnZ2VzdEJsb2NraW5nID0gZmFsc2U7Ci0gICAgZGlzcGF0Y2hfc3luYyhCbG9j
a2xpc3RVcGRhdGVyOjpxdWV1ZSgpLCBeeworICAgIGJvb2wgc2hvdWxkU3VnZ2VzdEJsb2NraW5n
ID0gZmFsc2U7CisgICAgQmxvY2tsaXN0VXBkYXRlcjo6cXVldWUoKS5kaXNwYXRjaFN5bmMoWyZz
aG91bGRTdWdnZXN0QmxvY2tpbmddIHsKICAgICAgICAgQmxvY2tsaXN0VXBkYXRlcjo6cmVsb2Fk
SWZOZWNlc3NhcnkoKTsKLQotICAgICAgICBXZWJHTEJsb2NrbGlzdCogd2ViR0xCbG9ja2xpc3Qg
PSBCbG9ja2xpc3RVcGRhdGVyOjp3ZWJHTEJsb2NrbGlzdCgpOwotICAgICAgICBpZiAod2ViR0xC
bG9ja2xpc3QpCisgICAgICAgIGlmIChhdXRvKiB3ZWJHTEJsb2NrbGlzdCA9IEJsb2NrbGlzdFVw
ZGF0ZXI6OndlYkdMQmxvY2tsaXN0KCkpCiAgICAgICAgICAgICBzaG91bGRTdWdnZXN0QmxvY2tp
bmcgPSB3ZWJHTEJsb2NrbGlzdC0+c2hvdWxkU3VnZ2VzdEJsb2NraW5nKCk7CiAgICAgfSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCmluZGV4IGQz
ZjFhYzcyOWI1YjVjZGU2M2RiNDRjMDA1MjdjMDk4NjNjODJhNjguLmUzYzIyZDZhZWQ5ZTZjZTlk
ZDI4Yzg4NzgyYmU2MTk2YmY3YjY2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMjcsNyArMjcsNyBAQAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCiAKICNpbXBvcnQgPENvcmVNZWRpYS9Db3JlTWVk
aWEuaD4KLSNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1
ZS5oPgogCiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZm
ZXJSZWY7CiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252ZXJ0
ZXJSZWY7CkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzU2FtcGxl
QnVmZmVyc1VudGlsTG93V2F0ZXJUaW1lKENNVGltZSk7CiAgICAgT1NTdGF0dXMgcHJvdmlkZVNv
dXJjZURhdGFOdW1PdXRwdXRQYWNrZXRzKFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlv
U3RyZWFtUGFja2V0RGVzY3JpcHRpb24qKik7CiAKLSAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9x
dWV1ZV90PiBtX3NlcmlhbERpc3BhdGNoUXVldWU7CisgICAgUmVmPFdvcmtRdWV1ZT4gbV9zZXJp
YWxEaXNwYXRjaFF1ZXVlOwogICAgIENNVGltZSBtX2xvd1dhdGVyVGltZSB7IGtDTVRpbWVJbnZh
bGlkIH07CiAKICAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJR
dWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0K
aW5kZXggY2NjOGRkM2E5ZDRmMGZkYTg4OTMzZjBmZDFlMjgxZGUzYWRlOTdlZC4uOWZlMGY3MDgw
NTBhN2Y3YTg2NDE0NmQ5NmI4M2VhNGUxN2ZkMWU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9B
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTUyLDcgKzUyLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yOjpjcmVhdGUKIH0KIAogQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IoKQotICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsgYWRv
cHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5BdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSB9CisgICAgOiBtX3Nlcmlh
bERpc3BhdGNoUXVldWUgeyBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLkF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3NvciIpIH0KICAgICAsIG1fbG93V2F0ZXJUaW1lIHsgQ01UaW1lTWFrZVdp
dGhTZWNvbmRzKExPV19XQVRFUl9USU1FX0lOX1NFQ09ORFMsIDEwMDApIH0KIHsKIH0KQEAgLTg4
LDcgKzg4LDcgQEAgYm9vbCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUo
Q01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxsYmFjayBjYWxsYmEKIAogdm9pZCBBdWRpb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCiB7Ci0gICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERp
c3BhdGNoUXVldWUuZ2V0KCksIF57CisgICAgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlLT5kaXNwYXRj
aFN5bmMoW3RoaXNdIHsKICAgICAgICAgcHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVy
VGltZShrQ01UaW1lSW52YWxpZCk7CiAgICAgICAgIGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVl
TWFya0VuZE9mRGF0YShtX291dHB1dEJ1ZmZlclF1ZXVlLmdldCgpKTsKICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yIENNQnVmZmVyUXVldWVNYXJrRW5kT2ZEYXRhIGZhaWxlZCAlZCIsIGVycm9yKTsKQEAg
LTUwOSw3ICs1MDksNyBAQCB2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vz
c1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCiAKIHZvaWQgQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVm
ZmVyKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBe
eworICAgIG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2hTeW5jKFt0aGlzLCBidWZmZXJd
IHsKICAgICAgICAgaWYgKG1faXNFbmNvZGluZykKICAgICAgICAgICAgIHByb2Nlc3NTYW1wbGVC
dWZmZXIoYnVmZmVyKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5oCmluZGV4IDM3NmE1Y2ZiZWFiMWExNDZmMjkwYjJjYjI0M2M1YzEzMzJk
ZDc0ZjkuLjkyODg3ZmY5Y2MyMjYyZjVlZjRkN2M3OWY1Y2VkNTFiZTkxMGRmZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMjgsNyArMjgs
NyBAQAogCiAjaW5jbHVkZSA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgogI2luY2x1ZGUgPFZpZGVv
VG9vbGJveC9WVEVycm9ycy5oPgotI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZm
ZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVlRDb21wcmVzc2lv
blNlc3Npb24gKlZUQ29tcHJlc3Npb25TZXNzaW9uUmVmOwpAQCAtNTksNyArNTksNyBAQCBwcml2
YXRlOgogCiAgICAgc3RhdGljIHZvaWQgdmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJl
ZkNvbiwgdm9pZCosIE9TU3RhdHVzLCBWVEVuY29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZmZXJS
ZWYpOwogCi0gICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9zZXJpYWxEaXNwYXRj
aFF1ZXVlOworICAgIFJlZjxXb3JrUXVldWU+IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKICAgICBD
TVZpZGVvQ29kZWNUeXBlIG1fb3V0cHV0Q29kZWNUeXBlIHsga0NNVmlkZW9Db2RlY1R5cGVfSDI2
NCB9OwogCiAgICAgUmV0YWluUHRyPENNQnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVl
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCmlu
ZGV4IDE3Njc5OTc0MWJkNGZiYjk5MDk5YWQ4NDM0ZWY2YzJmNDZiOGFiNzguLjIwMDE4NWJiY2I3
NjU0MDYzYmEwMWQxMTg4ZmU3OTRmNmE5ZTM4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC00OCw3ICs0OCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6Y3JlYXRlCiB9CiAKIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6VmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yKENNVmlkZW9Db2RlY1R5cGUgb3V0cHV0Q29kZWNUeXBlKQotICAg
IDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsgYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9j
cmVhdGUoImNvbS5hcHBsZS5WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9R
VUVVRV9TRVJJQUwpKSB9CisgICAgOiBtX3NlcmlhbERpc3BhdGNoUXVldWUgeyBXb3JrUXVldWU6
OmNyZWF0ZSgiY29tLmFwcGxlLlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIpIH0KICAgICAs
IG1fb3V0cHV0Q29kZWNUeXBlIHsgb3V0cHV0Q29kZWNUeXBlIH0KIHsKIH0KQEAgLTgyLDcgKzgy
LDcgQEAgdm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnNldEJpdHNQZXJTZWNvbmQo
dW5zaWduZWQgYml0UmF0ZSkKIAogdm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZp
bmlzaCgpCiB7Ci0gICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUuZ2V0KCks
IF57CisgICAgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaFN5bmMoW3RoaXNdIHsKICAg
ICAgICAgYXV0byBlcnJvciA9IFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMobV92
dFNlc3Npb24uZ2V0KCksIGtDTVRpbWVJbnZhbGlkKTsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFtLCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZU
Q29tcHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7
CiAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1ZmZlclJlZiBidWZmZXIpCiAKIHZvaWQgVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJS
ZWYgYnVmZmVyKQogewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdl
dCgpLCBeeworICAgIG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2hTeW5jKFt0aGlzLCBi
dWZmZXJdIHsKICAgICAgICAgaWYgKCFtX2lzRW5jb2RpbmcpCiAgICAgICAgICAgICByZXR1cm47
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9B
VkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5o
CmluZGV4IGY4NjE5ZjZhMTkxOGFmMDYwZTJhMDVlMDYzMTgyZjU0ZTg2YTIwZmEuLjI2MTYwODA0
ZjdjNWE3ZmZjNmQ2MTUzNGExM2U4NTNiZTVhNTg4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FW
QXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaApAQCAtMzIsOCArMzIsOCBAQAogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIE9CSkNfQ0xBU1Mg
QVZBdWRpb1Nlc3Npb247CiBPQkpDX0NMQVNTIFdlYkFWQXVkaW9TZXNzaW9uQXZhaWxhYmxlSW5w
dXRzTGlzdGVuZXI7CkBAIC03OCw4ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdl
YkFWQXVkaW9TZXNzaW9uQXZhaWxhYmxlSW5wdXRzTGlzdGVuZXI+IG1fbGlzdGVuZXI7CiAgICAg
UmV0YWluUHRyPEFWQXVkaW9TZXNzaW9uPiBtX2F1ZGlvU2Vzc2lvbjsKICAgICBHZW5lcmljVGFz
a1F1ZXVlPFRpbWVyPiBtX3VwZGF0ZURldmljZVN0YXRlUXVldWU7Ci0gICAgT1NPYmplY3RQdHI8
ZGlzcGF0Y2hfcXVldWVfdD4gbV9kaXNwYXRjaFF1ZXVlOwotICAgIExvY2sgbV9sb2NrOworICAg
IFJlZjxXb3JrUXVldWU+IG1fZGlzcGF0Y2hRdWV1ZTsKICAgICBBdWRpb1Nlc3Npb25TdGF0ZSBt
X2F1ZGlvU2Vzc2lvblN0YXRlIHsgQXVkaW9TZXNzaW9uU3RhdGU6Ok5vdE5lZWRlZCB9OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FW
QXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5t
bQppbmRleCBlZjliZTEwNmJiZDRlYTE2ODQ0ZWU3MDljNjBhMjU4Y2M2MmNlYjA4Li4yYmVkYWZm
MGNhMjBiMTE2ZTE1NmJlZTBiODJiYTEzYzE5YzBkMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
TWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3Mv
QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtODcsMTcgKzg3LDE1IEBA
IEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXImIEFWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXI6OnNpbmdsZXRvCiB9CiAKIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZU1hbmFnZXI6OkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIoKQotICAgIDogbV9k
aXNwYXRjaFF1ZXVlKGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBw
bGUuV2ViS2l0LkFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIiLCBESVNQQVRDSF9R
VUVVRV9TRVJJQUwpKSkKKyAgICA6IG1fZGlzcGF0Y2hRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgi
Y29tLmFwcGxlLldlYktpdC5BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyIikpCiB7
Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIo
W3RoaXMsIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayldIHsKKyAgICBtX2Rpc3BhdGNoUXVldWUt
PmRpc3BhdGNoKFt0aGlzXSB7CiAgICAgICAgIGNyZWF0ZUF1ZGlvU2Vzc2lvbigpOwotICAgIH0p
LmdldCgpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpjcmVhdGVBdWRpb1Nlc3Npb24oKQogewotICAgIEFTU0VSVChtX2xvY2suaXNMb2Nr
ZWQoKSk7Ci0KICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgbV9hdWRpb1Nlc3Npb24g
PSBhZG9wdE5TKFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgYWxsb2NdIGluaXRBdXhp
bGlhcnlTZXNzaW9uXSk7CiAjZWxzZQpAQCAtMTU2LDE1ICsxNTQsMTUgQEAgdm9pZCBBVkF1ZGlv
U2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygp
CiAgICAgaWYgKG1fYXVkaW9TZXNzaW9uU3RhdGUgPT0gQXVkaW9TZXNzaW9uU3RhdGU6OkluYWN0
aXZlKSB7CiAgICAgICAgIG1fYXVkaW9TZXNzaW9uU3RhdGUgPSBBdWRpb1Nlc3Npb25TdGF0ZTo6
QWN0aXZlOwogCi0gICAgICAgIGRpc3BhdGNoX3N5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBt
YWtlQmxvY2tQdHIoW3RoaXNdIHsKKyAgICAgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaFN5
bmMoW3RoaXNdIHsKICAgICAgICAgICAgIGFjdGl2YXRlQXVkaW9TZXNzaW9uKCk7Ci0gICAgICAg
IH0pLmdldCgpKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgVmVjdG9yPEFWQXVkaW9TZXNz
aW9uQ2FwdHVyZURldmljZT4gbmV3QXVkaW9EZXZpY2VzOwotICAgIGRpc3BhdGNoX3N5bmMobV9k
aXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoWyZdIHsKKyAgICBtX2Rpc3BhdGNoUXVl
dWUtPmRpc3BhdGNoU3luYyhbJl0gewogICAgICAgICBuZXdBdWRpb0RldmljZXMgPSByZXRyaWV2
ZUF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VzKCk7Ci0gICAgfSkuZ2V0KCkpOworICAgIH0pOwog
ICAgIHNldEF1ZGlvQ2FwdHVyZURldmljZXMoV1RGTW92ZShuZXdBdWRpb0RldmljZXMpKTsKIH0K
IApAQCAtMTczLDE4ICsxNzEsMTggQEAgdm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyOjpnZXRDYXB0dXJlRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICBpZiAo
bV9hdWRpb1Nlc3Npb25TdGF0ZSA9PSBBdWRpb1Nlc3Npb25TdGF0ZTo6SW5hY3RpdmUpIHsKICAg
ICAgICAgbV9hdWRpb1Nlc3Npb25TdGF0ZSA9IEF1ZGlvU2Vzc2lvblN0YXRlOjpBY3RpdmU7CiAK
LSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQ
dHIoW3RoaXNdIHsKKyAgICAgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChbdGhpc10gewog
ICAgICAgICAgICAgYWN0aXZhdGVBdWRpb1Nlc3Npb24oKTsKLSAgICAgICAgfSkuZ2V0KCkpOwor
ICAgICAgICB9KTsKICAgICB9CiAKLSAgICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUu
Z2V0KCksIG1ha2VCbG9ja1B0cihbdGhpcywgY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlv
bildICgpIG11dGFibGUgeworICAgIG1fZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIGNv
bXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0
byBuZXdBdWRpb0RldmljZXMgPSByZXRyaWV2ZUF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VzKCk7
CiAgICAgICAgIGNhbGxPbldlYlRocmVhZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChtYWtl
QmxvY2tQdHIoW3RoaXMsIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pLCBuZXdBdWRp
b0RldmljZXMgPSBXVEZNb3ZlKG5ld0F1ZGlvRGV2aWNlcyldICgpIG11dGFibGUgewogICAgICAg
ICAgICAgc2V0QXVkaW9DYXB0dXJlRGV2aWNlcyhXVEZNb3ZlKG5ld0F1ZGlvRGV2aWNlcykpOwog
ICAgICAgICAgICAgY29tcGxldGlvbihjb3B5VG9WZWN0b3IoKm1fZGV2aWNlcykpOwogICAgICAg
ICB9KS5nZXQoKSk7Ci0gICAgfSkuZ2V0KCkpOworICAgIH0pOwogfQogCiB2b2lkIEFWQXVkaW9T
ZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmFjdGl2YXRlQXVkaW9TZXNzaW9uKCkKQEAgLTI1
MywxNCArMjUxLDE0IEBAIHZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6
ZGlzYWJsZUFsbERldmljZXNRdWVyeSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2F1
ZGlvU2Vzc2lvblN0YXRlID09IEF1ZGlvU2Vzc2lvblN0YXRlOjpBY3RpdmUpIHsKLSAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXNd
IHsKKyAgICAgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChbdGhpc10gewogICAgICAgICAg
ICAgaWYgKG1fYXVkaW9TZXNzaW9uU3RhdGUgIT0gQXVkaW9TZXNzaW9uU3RhdGU6Ok5vdE5lZWRl
ZCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBOU0Vycm9yICplcnJvciA9
IG5pbDsKICAgICAgICAgICAgIFttX2F1ZGlvU2Vzc2lvbiBzZXRBY3RpdmU6Tk8gd2l0aE9wdGlv
bnM6MCBlcnJvcjomZXJyb3JdOwogICAgICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIkZhaWxlZCB0byBkaXNhY3RpdmF0ZSBhdWRp
byBzZXNzaW9uIHdpdGggZXJyb3I6ICVALiIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKTsK
LSAgICAgICAgfSkuZ2V0KCkpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICBtX2F1ZGlvU2Vz
c2lvblN0YXRlID0gQXVkaW9TZXNzaW9uU3RhdGU6Ok5vdE5lZWRlZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KaW5kZXgg
NTg3NjA5MDYwOGQ5YWZjODhlMzQxYzVkZmY3M2Y1YjMxMGVmYTg5NC4uNDkyYjljNjQ0MmJlMTU0
ZDUxZGRmNzY5ZjU5M2U4MDg0ZWIxYmQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KQEAgLTMyLDkgKzMyLDkgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lvbkNoZWNrcy5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAu
aD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2ltcG9ydCA8d3RmL09TT2JqZWN0
UHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5n
Lmg+CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRs
ZW1lbnRzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTg4LDEyICs4
OCwxMSBAQCBzdGF0aWMgYm9vbCBpc0luV2ViS2l0Q2hpbGRQcm9jZXNzKCkKIAogZW51bSBjbGFz
cyBJVFBTdGF0ZSA6IHVpbnQ4X3QgewogICAgIFVuaW5pdGlhbGl6ZWQsCi0gICAgSW5pdGlhbGl6
aW5nLAogICAgIEVuYWJsZWQsCiAgICAgRGlzYWJsZWQKIH07CiAKLXN0YXRpYyBzdGQ6OmF0b21p
YzxJVFBTdGF0ZT4gZ19jdXJyZW50SVRQU3RhdGUgPSBJVFBTdGF0ZTo6VW5pbml0aWFsaXplZDsK
K3N0YXRpYyBzdGQ6OmF0b21pYzxJVFBTdGF0ZT4gY3VycmVudElUUFN0YXRlID0gSVRQU3RhdGU6
OlVuaW5pdGlhbGl6ZWQ7CiAKIGJvb2wgaGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQ
ZXJtaXNzaW9uKCkKIHsKQEAgLTEyMSwyNiArMTIwLDIzIEBAIHN0YXRpYyBib29sIGRldGVybWlu
ZUlUUFN0YXRlSW50ZXJuYWwoYm9vbCBhcHBXYXNMaW5rZWRPbk9yQWZ0ZXIsIGNvbnN0IFN0cmlu
ZyYKICAgICByZXR1cm4gcmVzdWx0ICE9IGtUQ0NBY2Nlc3NQcmVmbGlnaHREZW5pZWQ7CiB9CiAK
LXN0YXRpYyBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiYgaXRwUXVldWUoKQorc3RhdGlj
IFJlZlB0cjxXb3JrUXVldWU+JiBpdHBRdWV1ZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+PiBpdHBRdWV1ZTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPFdvcmtRdWV1ZT4+IGl0cFF1ZXVlOwogICAgIHJldHVybiBp
dHBRdWV1ZTsKIH0KIAogdm9pZCBkZXRlcm1pbmVJVFBTdGF0ZSgpCiB7CiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoZ19jdXJyZW50SVRQU3RhdGUgIT0gSVRQU3RhdGU6
OlVuaW5pdGlhbGl6ZWQpCisgICAgaWYgKGN1cnJlbnRJVFBTdGF0ZSAhPSBJVFBTdGF0ZTo6VW5p
bml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ19jdXJyZW50SVRQU3RhdGUgPSBJ
VFBTdGF0ZTo6SW5pdGlhbGl6aW5nOwogICAgIGJvb2wgYXBwV2FzTGlua2VkT25PckFmdGVyID0g
bGlua2VkT25PckFmdGVyKFdlYkNvcmU6OlNES1ZlcnNpb246OkZpcnN0V2l0aFNlc3Npb25DbGVh
bnVwQnlEZWZhdWx0KTsKIAotICAgIGl0cFF1ZXVlKCkgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNo
X3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5pdHBDaGVja1F1ZXVlIiwgTlVMTCkpOwot
Ci0gICAgZGlzcGF0Y2hfYXN5bmMoaXRwUXVldWUoKS5nZXQoKSwgW2FwcFdhc0xpbmtlZE9uT3JB
ZnRlciwgYnVuZGxlSWRlbnRpZmllciA9IFdlYkNvcmU6OmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllcigpLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIGdfY3VycmVudElUUFN0YXRlID0gZGV0
ZXJtaW5lSVRQU3RhdGVJbnRlcm5hbChhcHBXYXNMaW5rZWRPbk9yQWZ0ZXIsIGJ1bmRsZUlkZW50
aWZpZXIpID8gSVRQU3RhdGU6OkVuYWJsZWQgOiBJVFBTdGF0ZTo6RGlzYWJsZWQ7Ci0KKyAgICBp
dHBRdWV1ZSgpID0gV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuaXRwQ2hlY2tR
dWV1ZSIpOworICAgIGl0cFF1ZXVlKCktPmRpc3BhdGNoKFthcHBXYXNMaW5rZWRPbk9yQWZ0ZXIs
IGJ1bmRsZUlkZW50aWZpZXIgPSBXZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
KS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBjdXJyZW50SVRQU3RhdGUgPSBkZXRlcm1pbmVJ
VFBTdGF0ZUludGVybmFsKGFwcFdhc0xpbmtlZE9uT3JBZnRlciwgYnVuZGxlSWRlbnRpZmllcikg
PyBJVFBTdGF0ZTo6RW5hYmxlZCA6IElUUFN0YXRlOjpEaXNhYmxlZDsKICAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKICAgICAgICAgICAgIGl0cFF1ZXVlKCkgPSBudWxscHRy
OwogICAgICAgICB9KTsKQEAgLTE1MSwxNiArMTQ3LDExIEBAIGJvb2wgZG9lc0FwcEhhdmVJVFBF
bmFibGVkKCkKIHsKICAgICBBU1NFUlQoIWlzSW5XZWJLaXRDaGlsZFByb2Nlc3MoKSk7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoZ19jdXJyZW50SVRQU3RhdGUgPiBJ
VFBTdGF0ZTo6SW5pdGlhbGl6aW5nKQotICAgICAgICByZXR1cm4gZ19jdXJyZW50SVRQU3RhdGUg
PT0gSVRQU3RhdGU6OkVuYWJsZWQ7Ci0KLSAgICBSRUxFQVNFX0FTU0VSVChpdHBRdWV1ZSgpKTsK
LQotICAgIF9fYmxvY2sgYm9vbCBpc0lUUEVuYWJsZWQ7Ci0gICAgZGlzcGF0Y2hfc3luYyhpdHBR
dWV1ZSgpLmdldCgpLCBeewotICAgICAgICBpc0lUUEVuYWJsZWQgPSBnX2N1cnJlbnRJVFBTdGF0
ZSA9PSBJVFBTdGF0ZTo6RW5hYmxlZDsKLSAgICB9KTsKLSAgICByZXR1cm4gaXNJVFBFbmFibGVk
OworICAgIC8vIElmIHdlJ3JlIHN0aWxsIGNvbXB1dGluZyB0aGUgSVRQIHN0YXRlIG9uIHRoZSBi
YWNrZ3JvdW5kIHRocmVhZCwgdGhlbiBzeW5jaHJvbml6ZSB3aXRoIGl0LgorICAgIGlmIChpdHBR
dWV1ZSgpKQorICAgICAgICBpdHBRdWV1ZSgpLT5kaXNwYXRjaFN5bmMoW10geyB9KTsKKyAgICBB
U1NFUlQoY3VycmVudElUUFN0YXRlICE9IElUUFN0YXRlOjpVbmluaXRpYWxpemVkKTsKKyAgICBy
ZXR1cm4gY3VycmVudElUUFN0YXRlID09IElUUFN0YXRlOjpFbmFibGVkOwogfQogCiBib29sIGRv
ZXNQYXJlbnRQcm9jZXNzSGF2ZUlUUEVuYWJsZWQoT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVk
aXRUb2tlbiwgYm9vbCBoYXNSZXF1ZXN0ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb25W
YWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422947</attachid>
            <date>2021-03-11 11:10:36 -0800</date>
            <delta_ts>2021-03-11 11:48:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223073-20210311111035.patch</filename>
            <type>text/plain</type>
            <size>27739</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0Mjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM2YmViYjdlYWJjNWUxYWRl
YjVhNTA4NTQ0NWU4ZjVjMmYzYzVjOWUuLmYyOTZlNTU4YWJmOGE2YTQ4NDFkMGJlNTQxMjdmYzgx
MTYxMmU2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDMtMTEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIHNvbWUgdXNhZ2Ugb2Yg
ZGlzcGF0Y2hfcXVldWUgd2l0aCBXb3JrUXVldWUgbm93IHRoYXQgaXQgc3VwcG9ydHMgc3luYyBk
aXNwYXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzMDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
UmVwbGFjZSBzb21lIHVzYWdlIG9mIGRpc3BhdGNoX3F1ZXVlIHdpdGggV29ya1F1ZXVlIG5vdyB0
aGF0IGl0IHN1cHBvcnRzIHN5bmMgZGlzcGF0Y2hpbmcKKyAgICAgICAgc2luY2UgcjI3NDI4Ni4K
KworICAgICAgICAqIFNoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbToKKyAg
ICAgICAgKFdlYktpdDo6aXRwUXVldWUpOgorICAgICAgICAoV2ViS2l0OjpkZXRlcm1pbmVJVFBT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OmRvZXNBcHBIYXZlSVRQRW5hYmxlZCk6CisKIDIwMjEt
MDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1
Y2UgV29ya1F1ZXVlOjpkaXNwYXRjaFN5bmMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggNmUzZGNkMTYyNDdjODY4
NjgyNjNiMjJkYWMwZjIwMTU1M2E0N2NhOS4uZmIyN2QyYjY4ODkwZjE1NDNkYmEzYTQzYjliZTQz
MTQzZjNmMTAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L0F1ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9TZXNzaW9uSU9TLm1tCkBAIC0zMyw4ICszMyw4IEBACiAjaW1wb3J0IDxvYmpjL3J1
bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CiAjaW1w
b3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRy
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+
CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCkBAIC0xMDMs
NyArMTAzLDcgQEAgcHVibGljOgogICAgIH5BdWRpb1Nlc3Npb25Qcml2YXRlKCk7CiAKICAgICBB
dWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7Ci0gICAgT1NPYmpl
Y3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9kaXNwYXRjaFF1ZXVlOworICAgIFJlZlB0cjxXb3Jr
UXVldWU+IG1fd29ya1F1ZXVlOwogICAgIFJldGFpblB0cjxXZWJJbnRlcnJ1cHRpb25PYnNlcnZl
ckhlbHBlcj4gbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcjsKIH07CiAKQEAgLTI2MSwyMyAr
MjYxLDI0IEBAIHNpemVfdCBBdWRpb1Nlc3Npb246Om1heGltdW1OdW1iZXJPZk91dHB1dENoYW5u
ZWxzKCkgY29uc3QKIAogYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwo
Ym9vbCBhY3RpdmUpCiB7Ci0gICAgX19ibG9jayBOU0Vycm9yKiBlcnJvciA9IG5pbDsKLQotICAg
IGlmICghbV9wcml2YXRlLT5tX2Rpc3BhdGNoUXVldWUpCi0gICAgICAgIG1fcHJpdmF0ZS0+bV9k
aXNwYXRjaFF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIkF1ZGlv
U2Vzc2lvbiBBY3RpdmF0aW9uIFF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSk7CisgICAg
aWYgKCFtX3ByaXZhdGUtPm1fd29ya1F1ZXVlKQorICAgICAgICBtX3ByaXZhdGUtPm1fd29ya1F1
ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIkF1ZGlvU2Vzc2lvbiBBY3RpdmF0aW9uIFF1ZXVlIik7
CiAKICAgICAvLyBXZSBuZWVkIHRvIGRlYWN0aXZhdGUgdGhlIHNlc3Npb24gb24gYW5vdGhlciBx
dWV1ZSBiZWNhdXNlIHRoZSBBVkF1ZGlvU2Vzc2lvblNldEFjdGl2ZU9wdGlvbk5vdGlmeU90aGVy
c09uRGVhY3RpdmF0aW9uIG9wdGlvbgogICAgIC8vIG1lYW5zIHRoYXQgQVZBdWRpb1Nlc3Npb24g
bWF5IHN5bmNocm9ub3VzbHkgdW5kdWNrIHByZXZpb3VzbHkgZHVja2VkIGNsaWVudHMuIEFjdGl2
YXRpb24gbmVlZHMgdG8gY29tcGxldGUgYmVmb3JlIHRoaXMgbWV0aG9kCiAgICAgLy8gcmV0dXJu
cywgc28gZG8gaXQgc3luY2hyb25vdXNseSBvbiB0aGUgc2FtZSBzZXJpYWwgcXVldWUuCiAgICAg
aWYgKGFjdGl2ZSkgewotICAgICAgICBkaXNwYXRjaF9zeW5jKG1fcHJpdmF0ZS0+bV9kaXNwYXRj
aFF1ZXVlLmdldCgpLCBeeworICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAg
bV9wcml2YXRlLT5tX3dvcmtRdWV1ZS0+ZGlzcGF0Y2hTeW5jKFsmZXJyb3JdIHsKKyAgICAgICAg
ICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwogICAgICAgICAgICAgW1tQQUw6OmdldEFWQXVkaW9T
ZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gc2V0QWN0aXZlOllFUyB3aXRoT3B0aW9uczow
IGVycm9yOiZlcnJvcl07CisgICAgICAgICAgICBzdWNjZXNzID0gIWVycm9yOwogICAgICAgICB9
KTsKLQotICAgICAgICByZXR1cm4gIWVycm9yOworICAgICAgICByZXR1cm4gc3VjY2VzczsKICAg
ICB9CiAKLSAgICBkaXNwYXRjaF9hc3luYyhtX3ByaXZhdGUtPm1fZGlzcGF0Y2hRdWV1ZS5nZXQo
KSwgXnsKKyAgICBtX3ByaXZhdGUtPm1fd29ya1F1ZXVlLT5kaXNwYXRjaChbXSB7CisgICAgICAg
IE5TRXJyb3IgKmVycm9yID0gbmlsOwogICAgICAgICBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25D
bGFzcygpIHNoYXJlZEluc3RhbmNlXSBzZXRBY3RpdmU6Tk8gd2l0aE9wdGlvbnM6MCBlcnJvcjom
ZXJyb3JdOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5o
CmluZGV4IGViNjkwMzhiN2RmYTlhMzliMmU2ZmE2NTQyZWI5NTA1OTkxNmE1OWYuLmI2MTc1NTM3
NGU2NzBhZDgzZTk3MjhkYjdhMzMxMTNiN2Q3NDU5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNv
bXByZXNzaW9uU2Vzc2lvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIHR5cGVkZWYgQ0ZUeXBl
UmVmIENNQnVmZmVyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRkFycmF5ICogQ0ZBcnJh
eVJlZjsKQEAgLTExMyw4ICsxMTQsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDTUJ1ZmZl
clF1ZXVlUmVmPiBtX3Byb2R1Y2VyUXVldWU7CiAgICAgUmV0YWluUHRyPENNQnVmZmVyUXVldWVS
ZWY+IG1fY29uc3VtZXJRdWV1ZTsKICAgICBSZXRhaW5QdHI8Q01UaW1lYmFzZVJlZj4gbV90aW1l
YmFzZTsKLSAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2RlY29tcHJlc3Npb25R
dWV1ZTsKLSAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX2VucXVlaW5nUXVldWU7
CisgICAgUmVmPFdvcmtRdWV1ZT4gbV9kZWNvbXByZXNzaW9uUXVldWU7CisgICAgUmVmPFdvcmtR
dWV1ZT4gbV9lbnF1ZWluZ1F1ZXVlOwogICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3NvdXJjZV90
PiBtX3RpbWVyU291cmNlOwogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX25vdGlmaWNhdGlv
bkNhbGxiYWNrOwogICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX2hhc0F2YWlsYWJsZUZyYW1l
Q2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KaW5kZXgg
ZGM1YmU3NDY5YTlmZDE2OThjNmIzNmUzZWQ0OTc0NWYzOWQwZmU3Mi4uNzA1YTMxODcwYTQ3MjNj
NjMzMmNjMDg3NTVlOTRmYTMzODEwZDcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNz
aW9uU2Vzc2lvbi5tbQpAQCAtNTEsOCArNTEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdl
YkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uKE1v
ZGUgbW9kZSkKICAgICA6IG1fbW9kZShtb2RlKQotICAgICwgbV9kZWNvbXByZXNzaW9uUXVldWUo
YWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVEZWNvbXByZXNzaW9u
U2Vzc2lvbiBEZWNvbXByZXNzaW9uIFF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSkpCi0g
ICAgLCBtX2VucXVlaW5nUXVldWUoYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUo
IldlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbiBFbnF1ZXVlaW5nIFF1ZXVlIiwgRElTUEFUQ0hf
UVVFVUVfU0VSSUFMKSkpCisgICAgLCBtX2RlY29tcHJlc3Npb25RdWV1ZShXb3JrUXVldWU6OmNy
ZWF0ZSgiV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uIERlY29tcHJlc3Npb24gUXVldWUiKSkK
KyAgICAsIG1fZW5xdWVpbmdRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiV2ViQ29yZURlY29tcHJl
c3Npb25TZXNzaW9uIEVucXVldWVpbmcgUXVldWUiKSkKIHsKIH0KIApAQCAtMTE4LDkgKzExOCw2
IEBAIHZvaWQgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjplbnF1ZXVlU2FtcGxlKENNU2Ft
cGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwKICAgICBpZiAobm9FcnIgIT0gQ01TYW1wbGVCdWZm
ZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkoc2FtcGxlQnVmZmVyLCBpdGVtQ291bnQsIHRpbWlu
Z0luZm9BcnJheS5kYXRhKCksIG51bGxwdHIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fZGVjb21wcmVzc2lvblF1ZXVlKQotICAgICAgICBtX2RlY29tcHJlc3Npb25RdWV1ZSA9IGFk
b3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQyBEZWNvbXByZXNzaW9uIFF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSk7Ci0KICAg
ICAvLyBDTUJ1ZmZlckNhbGxiYWNrcyBjb250YWlucyA2NC1iaXQgcG9pbnRlcnMgdGhhdCBhcmVu
J3QgOC1ieXRlIGFsaWduZWQuIFRvIHN1cHByZXNzIHRoZSBsaW5rZXIKICAgICAvLyB3YXJuaW5n
IGFib3V0IHRoaXMsIHdlIHByZXBlbmQgNCBieXRlcyBvZiBwYWRkaW5nIHdoZW4gYnVpbGRpbmcu
CiAgICAgY29uc3Qgc2l6ZV90IHBhZFNpemUgPSA0OwpAQCAtMTY3LDcgKzE2NCw3IEBAIHZvaWQg
V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjplbnF1ZXVlU2FtcGxlKENNU2FtcGxlQnVmZmVy
UmVmIHNhbXBsZUJ1ZmZlciwKIAogICAgIExPRyhNZWRpYSwgIldlYkNvcmVEZWNvbXByZXNzaW9u
U2Vzc2lvbjo6ZW5xdWV1ZVNhbXBsZSglcCkgLSBmcmFtZXNCZWluZ0RlY29kZWQoJWQpIiwgdGhp
cywgbV9mcmFtZXNCZWluZ0RlY29kZWQpOwogCi0gICAgZGlzcGF0Y2hfYXN5bmMobV9kZWNvbXBy
ZXNzaW9uUXVldWUuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cigqdGhpcyksIHN0
cm9uZ0J1ZmZlciA9IHJldGFpblB0cihzYW1wbGVCdWZmZXIpLCBkaXNwbGF5aW5nXSB7CisgICAg
bV9kZWNvbXByZXNzaW9uUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0
cigqdGhpcyksIHN0cm9uZ0J1ZmZlciA9IHJldGFpblB0cihzYW1wbGVCdWZmZXIpLCBkaXNwbGF5
aW5nXSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRlY29kZVNhbXBsZShzdHJvbmdCdWZmZXIu
Z2V0KCksIGRpc3BsYXlpbmcpOwogICAgIH0pOwogfQpAQCAtMzE0LDcgKzMxMSw3IEBAIHZvaWQg
V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpoYW5kbGVEZWNvbXByZXNzaW9uT3V0cHV0KGJv
b2wgZGlzcGxheWluZywgT1NTCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkaXNwYXRj
aF9hc3luYyhtX2VucXVlaW5nUXVldWUuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0
cih0aGlzKSwgaW1hZ2VTYW1wbGVCdWZmZXIgPSBhZG9wdENGKHJhd0ltYWdlU2FtcGxlQnVmZmVy
KSwgZGlzcGxheWluZ10geworICAgIG1fZW5xdWVpbmdRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBpbWFnZVNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0YocmF3
SW1hZ2VTYW1wbGVCdWZmZXIpLCBkaXNwbGF5aW5nXSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmVucXVldWVEZWNvZGVkU2FtcGxlKGltYWdlU2FtcGxlQnVmZmVyLmdldCgpLCBkaXNwbGF5aW5n
KTsKICAgICB9KTsKIH0KQEAgLTUyMiw5ICs1MTksOSBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZl
clJlZj4gV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjppbWFnZUZvclRpbWUoY29uc3QgTWVk
aQogCiB2b2lkIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Zmx1c2goKQogewotICAgIGRp
c3BhdGNoX3N5bmMobV9kZWNvbXByZXNzaW9uUXVldWUuZ2V0KCksIFtwcm90ZWN0ZWRUaGlzID0g
UmVmUHRyPFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbj4odGhpcyldIHsKKyAgICBtX2RlY29t
cHJlc3Npb25RdWV1ZS0+ZGlzcGF0Y2hTeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIENNQnVmZmVyUXVldWVSZXNldChwcm90ZWN0
ZWRUaGlzLT5tX3Byb2R1Y2VyUXVldWUuZ2V0KCkpOwotICAgICAgICBkaXNwYXRjaF9zeW5jKHBy
b3RlY3RlZFRoaXMtPm1fZW5xdWVpbmdRdWV1ZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXNdIHsKKyAg
ICAgICAgbV9lbnF1ZWluZ1F1ZXVlLT5kaXNwYXRjaFN5bmMoW3Byb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpXSB7CiAgICAgICAgICAgICBDTUJ1ZmZlclF1ZXVlUmVzZXQocHJv
dGVjdGVkVGhpcy0+bV9jb25zdW1lclF1ZXVlLmdldCgpKTsKICAgICAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPm1fZnJhbWVzU2luY2VMYXN0UW9zQ2hlY2sgPSAwOwogICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9jdXJyZW50UW9zVGllciA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvQmxvY2tsaXN0VXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0Jsb2NrbGlzdFVwZGF0ZXIuaAppbmRleCAwMDE2MWRlZWRjYjQ0Njg4OTY2Mzk5NDRk
MzQ3YTZjYmMzMmMzNmQ0Li4zNTBlNGYyNTE1YjY2ZDNmNGM3NGUzOTc0OWRkMjAwZTI5MDg5ODYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tsaXN0VXBkYXRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbG9ja2xpc3RVcGRhdGVyLmgK
QEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAotI2ltcG9ydCA8ZGlzcGF0
Y2gvZGlzcGF0Y2guaD4KKyNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0zNiwxMCArMzYsOSBAQCBjbGFzcyBXZWJHTEJsb2NrbGlzdDsKIAogY2xh
c3MgQmxvY2tsaXN0VXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZVF1ZXVlKCk7CiAgICAgc3RhdGljIHZvaWQgcmVsb2FkSWZOZWNlc3NhcnkoKTsKIAotICAgIHN0
YXRpYyBkaXNwYXRjaF9xdWV1ZV90IHF1ZXVlKCkgeyByZXR1cm4gc19xdWV1ZTsgfQorICAgIHN0
YXRpYyBXb3JrUXVldWUmIHF1ZXVlKCk7CiAgICAgc3RhdGljIFBsdWdpbkJsb2NrbGlzdCogcGx1
Z2luQmxvY2tsaXN0KCkgeyByZXR1cm4gc19wbHVnaW5CbG9ja2xpc3Q7IH0KICAgICBzdGF0aWMg
V2ViR0xCbG9ja2xpc3QqIHdlYkdMQmxvY2tsaXN0KCkgeyByZXR1cm4gc193ZWJHTEJsb2NrbGlz
dDsgfTsKIApAQCAtNDcsNyArNDYsNiBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIE5TRGljdGlv
bmFyeSAqcmVhZEJsb2NrbGlzdERhdGEoKTsKIAotICAgIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90
IHNfcXVldWU7CiAgICAgc3RhdGljIFBsdWdpbkJsb2NrbGlzdCogc19wbHVnaW5CbG9ja2xpc3Q7
CiAgICAgc3RhdGljIFdlYkdMQmxvY2tsaXN0KiBzX3dlYkdMQmxvY2tsaXN0OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbG9ja2xpc3RVcGRhdGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Jsb2NrbGlzdFVwZGF0ZXIubW0KaW5kZXggZDEx
NTlhOWU1NzJjMzJmNzI3MWFlZDNhNDk2YzNlNjQwZWVkY2FhOC4uMjVmZDE4YjBkYzlhYWRlMzBk
ODdmMzY1NWI1MzYzZDBmZGI2YzVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0Jsb2NrbGlzdFVwZGF0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0Jsb2NrbGlzdFVwZGF0ZXIubW0KQEAgLTUxLDExICs1MSwyMCBAQCBOU1N0cmluZyAqIGNv
bnN0IGJsb2NrbGlzdFBhdGggPSBAIi9TeXN0ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvWFByb3Rl
Y3QuYnVuZGxlLwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWRpc3BhdGNoX3F1ZXVlX3QgQmxv
Y2tsaXN0VXBkYXRlcjo6c19xdWV1ZTsKLQogUGx1Z2luQmxvY2tsaXN0KiBCbG9ja2xpc3RVcGRh
dGVyOjpzX3BsdWdpbkJsb2NrbGlzdCA9IG51bGxwdHI7CiBXZWJHTEJsb2NrbGlzdCogQmxvY2ts
aXN0VXBkYXRlcjo6c193ZWJHTEJsb2NrbGlzdCA9IG51bGxwdHI7CiAKK1dvcmtRdWV1ZSYgQmxv
Y2tsaXN0VXBkYXRlcjo6cXVldWUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQ
dHI8V29ya1F1ZXVlPj4gcXVldWU7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOwor
ICAgIGRpc3BhdGNoX29uY2UoJm9uY2UsIF57CisgICAgICAgIHF1ZXVlLmdldCgpID0gV29ya1F1
ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQmxvY2tsaXN0Iik7CisgICAgfSk7CisKKyAg
ICByZXR1cm4gKnF1ZXVlLmdldCgpOworfQorCiBOU0RpY3Rpb25hcnkgKiBCbG9ja2xpc3RVcGRh
dGVyOjpyZWFkQmxvY2tsaXN0RGF0YSgpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW05TRGF0YSBk
YXRhV2l0aENvbnRlbnRzT2ZGaWxlOmJsb2NrbGlzdFBhdGhdOwpAQCAtMTAxLDE0ICsxMTAsNiBA
QCB2b2lkIEJsb2NrbGlzdFVwZGF0ZXI6OnJlbG9hZElmTmVjZXNzYXJ5KCkKICAgICBibG9ja2xp
c3RVcGRhdGVUaW1lID0gc3RhdEJ1Zi5zdF9tdGltZXNwZWMudHZfc2VjOwogfQogCi12b2lkIEJs
b2NrbGlzdFVwZGF0ZXI6OmluaXRpYWxpemVRdWV1ZSgpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNo
X29uY2VfdCBvbmNlOwotICAgIGRpc3BhdGNoX29uY2UoJm9uY2UsIF57Ci0gICAgICAgIHNfcXVl
dWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQmxvY2tsaXN0Iiwg
MCk7Ci0gICAgfSk7Ci19Ci0KIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsdWdpbkJsb2NrbGlzdC5tbQppbmRleCAxMzZmNmVkZjY5YjRkYzZkZDc5MmJhMTNj
NGM4ZmNkZWM4ZDhlNDFjLi5jNzM1NWYyNzYwYjdmOTA5ZmQxMjI5OTRhN2E0ZjJiYTViNjcyNzQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5CbG9ja2xpc3QubW0K
QEAgLTM1LDE2ICszNSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBsdWdpbkJsb2Nr
bGlzdDo6TG9hZFBvbGljeSBQbHVnaW5CbG9ja2xpc3Q6OmxvYWRQb2xpY3lGb3JQbHVnaW5WZXJz
aW9uKE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyLCBOU1N0cmluZyAqYnVuZGxlVmVyc2lvblN0
cmluZykKK2F1dG8gUGx1Z2luQmxvY2tsaXN0Ojpsb2FkUG9saWN5Rm9yUGx1Z2luVmVyc2lvbihO
U1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciwgTlNTdHJpbmcgKmJ1bmRsZVZlcnNpb25TdHJpbmcp
IC0+IExvYWRQb2xpY3kKIHsKLSAgICBCbG9ja2xpc3RVcGRhdGVyOjppbml0aWFsaXplUXVldWUo
KTsKLQotICAgIF9fYmxvY2sgUGx1Z2luQmxvY2tsaXN0OjpMb2FkUG9saWN5IGxvYWRQb2xpY3kg
PSBMb2FkUG9saWN5OjpMb2FkTm9ybWFsbHk7Ci0gICAgZGlzcGF0Y2hfc3luYyhCbG9ja2xpc3RV
cGRhdGVyOjpxdWV1ZSgpLCBeeworICAgIGF1dG8gbG9hZFBvbGljeSA9IExvYWRQb2xpY3k6Okxv
YWROb3JtYWxseTsKKyAgICBCbG9ja2xpc3RVcGRhdGVyOjpxdWV1ZSgpLmRpc3BhdGNoU3luYyhb
Jl0gewogICAgICAgICBCbG9ja2xpc3RVcGRhdGVyOjpyZWxvYWRJZk5lY2Vzc2FyeSgpOwotCi0g
ICAgICAgIFBsdWdpbkJsb2NrbGlzdCogcGx1Z2luQmxvY2tsaXN0ID0gQmxvY2tsaXN0VXBkYXRl
cjo6cGx1Z2luQmxvY2tsaXN0KCk7Ci0gICAgICAgIGlmIChwbHVnaW5CbG9ja2xpc3QpCisgICAg
ICAgIGlmIChhdXRvKiBwbHVnaW5CbG9ja2xpc3QgPSBCbG9ja2xpc3RVcGRhdGVyOjpwbHVnaW5C
bG9ja2xpc3QoKSkKICAgICAgICAgICAgIGxvYWRQb2xpY3kgPSBwbHVnaW5CbG9ja2xpc3QtPmxv
YWRQb2xpY3lGb3JQbHVnaW4oYnVuZGxlSWRlbnRpZmllciwgYnVuZGxlVmVyc2lvblN0cmluZyk7
CiAgICAgfSk7CiAKQEAgLTUzLDE0ICs0OSwxMCBAQCBQbHVnaW5CbG9ja2xpc3Q6OkxvYWRQb2xp
Y3kgUGx1Z2luQmxvY2tsaXN0Ojpsb2FkUG9saWN5Rm9yUGx1Z2luVmVyc2lvbihOU1N0cmluZwog
CiBib29sIFBsdWdpbkJsb2NrbGlzdDo6aXNQbHVnaW5VcGRhdGVBdmFpbGFibGUoTlNTdHJpbmcg
KmJ1bmRsZUlkZW50aWZpZXIpCiB7Ci0gICAgQmxvY2tsaXN0VXBkYXRlcjo6aW5pdGlhbGl6ZVF1
ZXVlKCk7Ci0KLSAgICBfX2Jsb2NrIGJvb2wgaXNQbHVnaW5VcGRhdGVBdmFpbGFibGUgPSBmYWxz
ZTsKLSAgICBkaXNwYXRjaF9zeW5jKEJsb2NrbGlzdFVwZGF0ZXI6OnF1ZXVlKCksIF57CisgICAg
Ym9vbCBpc1BsdWdpblVwZGF0ZUF2YWlsYWJsZSA9IGZhbHNlOworICAgIEJsb2NrbGlzdFVwZGF0
ZXI6OnF1ZXVlKCkuZGlzcGF0Y2hTeW5jKFsmXSB7CiAgICAgICAgIEJsb2NrbGlzdFVwZGF0ZXI6
OnJlbG9hZElmTmVjZXNzYXJ5KCk7Ci0KLSAgICAgICAgUGx1Z2luQmxvY2tsaXN0KiBwbHVnaW5C
bG9ja2xpc3QgPSBCbG9ja2xpc3RVcGRhdGVyOjpwbHVnaW5CbG9ja2xpc3QoKTsKLSAgICAgICAg
aWYgKHBsdWdpbkJsb2NrbGlzdCkKKyAgICAgICAgaWYgKGF1dG8qIHBsdWdpbkJsb2NrbGlzdCA9
IEJsb2NrbGlzdFVwZGF0ZXI6OnBsdWdpbkJsb2NrbGlzdCgpKQogICAgICAgICAgICAgaXNQbHVn
aW5VcGRhdGVBdmFpbGFibGUgPSBwbHVnaW5CbG9ja2xpc3QtPmlzVXBkYXRlQXZhaWxhYmxlKGJ1
bmRsZUlkZW50aWZpZXIpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViR0xCbG9ja2xpc3QubW0KaW5kZXggZDA0ZWUyMTc0ZDFkYmM3N2Q3Y2FlODVhM2ZhYTI1
YjAxODE1Nzg0NS4uNzdjOTMzOTA5MDZlMzc5ZWIyOWQyNDc4OTVlMGMzZDJkNzhhZDg1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQpAQCAtMTA0
LDE0ICsxMDQsMTAgQEAgc3RhdGljIE9TQnVpbGRJbmZvIGJ1aWxkSW5mb0Zyb21PU0J1aWxkU3Ry
aW5nKE5TU3RyaW5nICpidWlsZFN0cmluZykKIAogYm9vbCBXZWJHTEJsb2NrbGlzdDo6c2hvdWxk
QmxvY2tXZWJHTCgpCiB7Ci0gICAgQmxvY2tsaXN0VXBkYXRlcjo6aW5pdGlhbGl6ZVF1ZXVlKCk7
Ci0KLSAgICBfX2Jsb2NrIGJvb2wgc2hvdWxkQmxvY2sgPSBmYWxzZTsKLSAgICBkaXNwYXRjaF9z
eW5jKEJsb2NrbGlzdFVwZGF0ZXI6OnF1ZXVlKCksIF57CisgICAgYm9vbCBzaG91bGRCbG9jayA9
IGZhbHNlOworICAgIEJsb2NrbGlzdFVwZGF0ZXI6OnF1ZXVlKCkuZGlzcGF0Y2hTeW5jKFsmc2hv
dWxkQmxvY2tdIHsKICAgICAgICAgQmxvY2tsaXN0VXBkYXRlcjo6cmVsb2FkSWZOZWNlc3Nhcnko
KTsKLQotICAgICAgICBXZWJHTEJsb2NrbGlzdCogd2ViR0xCbG9ja2xpc3QgPSBCbG9ja2xpc3RV
cGRhdGVyOjp3ZWJHTEJsb2NrbGlzdCgpOwotICAgICAgICBpZiAod2ViR0xCbG9ja2xpc3QpCisg
ICAgICAgIGlmIChhdXRvKiB3ZWJHTEJsb2NrbGlzdCA9IEJsb2NrbGlzdFVwZGF0ZXI6OndlYkdM
QmxvY2tsaXN0KCkpCiAgICAgICAgICAgICBzaG91bGRCbG9jayA9IHdlYkdMQmxvY2tsaXN0LT5z
aG91bGRCbG9jaygpOwogICAgIH0pOwogCkBAIC0xMjAsMTQgKzExNiwxMCBAQCBib29sIFdlYkdM
QmxvY2tsaXN0OjpzaG91bGRCbG9ja1dlYkdMKCkKIAogYm9vbCBXZWJHTEJsb2NrbGlzdDo6c2hv
dWxkU3VnZ2VzdEJsb2NraW5nV2ViR0woKQogewotICAgIEJsb2NrbGlzdFVwZGF0ZXI6OmluaXRp
YWxpemVRdWV1ZSgpOwotCi0gICAgX19ibG9jayBib29sIHNob3VsZFN1Z2dlc3RCbG9ja2luZyA9
IGZhbHNlOwotICAgIGRpc3BhdGNoX3N5bmMoQmxvY2tsaXN0VXBkYXRlcjo6cXVldWUoKSwgXnsK
KyAgICBib29sIHNob3VsZFN1Z2dlc3RCbG9ja2luZyA9IGZhbHNlOworICAgIEJsb2NrbGlzdFVw
ZGF0ZXI6OnF1ZXVlKCkuZGlzcGF0Y2hTeW5jKFsmc2hvdWxkU3VnZ2VzdEJsb2NraW5nXSB7CiAg
ICAgICAgIEJsb2NrbGlzdFVwZGF0ZXI6OnJlbG9hZElmTmVjZXNzYXJ5KCk7Ci0KLSAgICAgICAg
V2ViR0xCbG9ja2xpc3QqIHdlYkdMQmxvY2tsaXN0ID0gQmxvY2tsaXN0VXBkYXRlcjo6d2ViR0xC
bG9ja2xpc3QoKTsKLSAgICAgICAgaWYgKHdlYkdMQmxvY2tsaXN0KQorICAgICAgICBpZiAoYXV0
byogd2ViR0xCbG9ja2xpc3QgPSBCbG9ja2xpc3RVcGRhdGVyOjp3ZWJHTEJsb2NrbGlzdCgpKQog
ICAgICAgICAgICAgc2hvdWxkU3VnZ2VzdEJsb2NraW5nID0gd2ViR0xCbG9ja2xpc3QtPnNob3Vs
ZFN1Z2dlc3RCbG9ja2luZygpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nv
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCBkM2YxYWM3MjliNWI1Y2RlNjNkYjQ0YzAwNTI3
YzA5ODYzYzgyYTY4Li5lM2MyMmQ2YWVkOWU2Y2U5ZGQyOGM4ODc4MmJlNjE5NmJmN2I2NmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKQEAgLTI3
LDcgKzI3LDcgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9O
KQogCiAjaW1wb3J0IDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+Ci0jaW1wb3J0IDx3dGYvT1NPYmpl
Y3RQdHIuaD4KKyNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KIAogdHlwZWRlZiBzdHJ1Y3Qgb3Bh
cXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlQXVkaW9Db252ZXJ0ZXIqIEF1ZGlvQ29udmVydGVyUmVmOwpAQCAtNjQsNyArNjQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShD
TVRpbWUpOwogICAgIE9TU3RhdHVzIHByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyhV
SW50MzIqLCBBdWRpb0J1ZmZlckxpc3QqLCBBdWRpb1N0cmVhbVBhY2tldERlc2NyaXB0aW9uKiop
OwogCi0gICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9zZXJpYWxEaXNwYXRjaFF1
ZXVlOworICAgIFJlZjxXb3JrUXVldWU+IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKICAgICBDTVRp
bWUgbV9sb3dXYXRlclRpbWUgeyBrQ01UaW1lSW52YWxpZCB9OwogCiAgICAgUmV0YWluUHRyPENN
QnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCmluZGV4IGNjYzhkZDNhOWQ0ZjBmZGE4ODkz
M2YwZmQxZTI4MWRlM2FkZTk3ZWQuLjlmZTBmNzA4MDUwYTdmN2E4NjQxNDZkOTZiODNlYTRlMTdm
ZDFlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tCkBAIC01Miw3ICs1Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I+IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlCiB9CiAKIEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKCkKLSAg
ICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVf
Y3JlYXRlKCJjb20uYXBwbGUuQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hf
UVVFVUVfU0VSSUFMKSkgfQorICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsgV29ya1F1ZXVl
OjpjcmVhdGUoImNvbS5hcHBsZS5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IiKSB9CiAgICAg
LCBtX2xvd1dhdGVyVGltZSB7IENNVGltZU1ha2VXaXRoU2Vjb25kcyhMT1dfV0FURVJfVElNRV9J
Tl9TRUNPTkRTLCAxMDAwKSB9CiB7CiB9CkBAIC04OCw3ICs4OCw3IEBAIGJvb2wgQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjppbml0aWFsaXplKENNQnVmZmVyUXVldWVUcmlnZ2VyQ2FsbGJh
Y2sgY2FsbGJhCiAKIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2goKQog
ewotICAgIGRpc3BhdGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBeeworICAg
IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2hTeW5jKFt0aGlzXSB7CiAgICAgICAgIHBy
b2Nlc3NTYW1wbGVCdWZmZXJzVW50aWxMb3dXYXRlclRpbWUoa0NNVGltZUludmFsaWQpOwogICAg
ICAgICBhdXRvIGVycm9yID0gQ01CdWZmZXJRdWV1ZU1hcmtFbmRPZkRhdGEobV9vdXRwdXRCdWZm
ZXJRdWV1ZS5nZXQoKSk7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRp
YVN0cmVhbSwgIkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTUJ1ZmZlclF1ZXVlTWFya0Vu
ZE9mRGF0YSBmYWlsZWQgJWQiLCBlcnJvcik7CkBAIC01MDksNyArNTA5LDcgQEAgdm9pZCBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZm
ZXJSZWYgYnVmZmVyKQogCiB2b2lkIEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6YWRkU2Ft
cGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKIHsKLSAgICBkaXNwYXRjaF9zeW5j
KG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKKyAgICBtX3NlcmlhbERpc3BhdGNoUXVl
dWUtPmRpc3BhdGNoU3luYyhbdGhpcywgYnVmZmVyXSB7CiAgICAgICAgIGlmIChtX2lzRW5jb2Rp
bmcpCiAgICAgICAgICAgICBwcm9jZXNzU2FtcGxlQnVmZmVyKGJ1ZmZlcik7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1Zp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaAppbmRleCAzNzZh
NWNmYmVhYjFhMTQ2ZjI5MGIyY2IyNDNjNWMxMzMyZGQ3NGY5Li45Mjg4N2ZmOWNjMjI2MmY1ZWY0
ZDdjNzlmNWNlZDUxYmU5MTBkZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPENvcmVNZWRp
YS9Db3JlTWVkaWEuaD4KICNpbmNsdWRlIDxWaWRlb1Rvb2xib3gvVlRFcnJvcnMuaD4KLSNpbmNs
dWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKIHR5
cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKIHR5
cGVkZWYgc3RydWN0IE9wYXF1ZVZUQ29tcHJlc3Npb25TZXNzaW9uICpWVENvbXByZXNzaW9uU2Vz
c2lvblJlZjsKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIHZp
ZGVvQ29tcHJlc3Npb25DYWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLCBPU1N0YXR1cywgVlRF
bmNvZGVJbmZvRmxhZ3MsIENNU2FtcGxlQnVmZmVyUmVmKTsKIAotICAgIE9TT2JqZWN0UHRyPGRp
c3BhdGNoX3F1ZXVlX3Q+IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKKyAgICBSZWY8V29ya1F1ZXVl
PiBtX3NlcmlhbERpc3BhdGNoUXVldWU7CiAgICAgQ01WaWRlb0NvZGVjVHlwZSBtX291dHB1dENv
ZGVjVHlwZSB7IGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQgfTsKIAogICAgIFJldGFpblB0cjxDTUJ1
ZmZlclF1ZXVlUmVmPiBtX291dHB1dEJ1ZmZlclF1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1Zp
ZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQppbmRleCAxNzY3OTk3NDFiZDRmYmI5OTA5OWFk
ODQzNGVmNmMyZjQ2YjhhYjc4Li4yMDAxODViYmNiNzY1NDA2M2JhMDFkMTE4OGZlNzk0ZjZhOWUz
ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5t
bQpAQCAtNDgsNyArNDgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yPiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmNyZWF0ZQogfQogCiBWaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvcihDTVZpZGVv
Q29kZWNUeXBlIG91dHB1dENvZGVjVHlwZSkKLSAgICA6IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZSB7
IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSkgfQorICAgIDogbV9z
ZXJpYWxEaXNwYXRjaFF1ZXVlIHsgV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5WaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IiKSB9CiAgICAgLCBtX291dHB1dENvZGVjVHlwZSB7IG91dHB1
dENvZGVjVHlwZSB9CiB7CiB9CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjpzZXRCaXRzUGVyU2Vjb25kKHVuc2lnbmVkIGJpdFJhdGUpCiAKIHZvaWQg
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpmaW5pc2goKQogewotICAgIGRpc3BhdGNoX3N5
bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBeeworICAgIG1fc2VyaWFsRGlzcGF0Y2hR
dWV1ZS0+ZGlzcGF0Y2hTeW5jKFt0aGlzXSB7CiAgICAgICAgIGF1dG8gZXJyb3IgPSBWVENvbXBy
ZXNzaW9uU2Vzc2lvbkNvbXBsZXRlRnJhbWVzKG1fdnRTZXNzaW9uLmdldCgpLCBrQ01UaW1lSW52
YWxpZCk7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGVycm9yLCBNZWRpYVN0cmVhbSwg
IlZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBWVENvbXByZXNzaW9uU2Vzc2lvbkNvbXBsZXRl
RnJhbWVzIGZhaWxlZCB3aXRoICVkIiwgZXJyb3IpOwogCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9p
ZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb2Nlc3NTYW1wbGVCdWZmZXIoQ01TYW1w
bGVCdWZmZXJSZWYgYnVmZmVyKQogCiB2b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6
YWRkU2FtcGxlQnVmZmVyKENNU2FtcGxlQnVmZmVyUmVmIGJ1ZmZlcikKIHsKLSAgICBkaXNwYXRj
aF9zeW5jKG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZS5nZXQoKSwgXnsKKyAgICBtX3NlcmlhbERpc3Bh
dGNoUXVldWUtPmRpc3BhdGNoU3luYyhbdGhpcywgYnVmZmVyXSB7CiAgICAgICAgIGlmICghbV9p
c0VuY29kaW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVk
aW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIuaAppbmRleCBmODYxOWY2YTE5MThhZjA2MGUy
YTA1ZTA2MzE4MmY1NGU4NmEyMGZhLi4yNjE2MDgwNGY3YzVhN2ZmYzZkNjE1MzRhMTNlODUzYmU1
YTU4ODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9p
b3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLmgKQEAgLTMyLDggKzMyLDggQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3
dGYvT1NPYmplY3RQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1dvcmtRdWV1ZS5oPgogCiBPQkpDX0NMQVNTIEFWQXVkaW9TZXNzaW9uOwogT0JKQ19DTEFT
UyBXZWJBVkF1ZGlvU2Vzc2lvbkF2YWlsYWJsZUlucHV0c0xpc3RlbmVyOwpAQCAtNzgsOCArNzgs
NyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxXZWJBVkF1ZGlvU2Vzc2lvbkF2YWlsYWJsZUlu
cHV0c0xpc3RlbmVyPiBtX2xpc3RlbmVyOwogICAgIFJldGFpblB0cjxBVkF1ZGlvU2Vzc2lvbj4g
bV9hdWRpb1Nlc3Npb247CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV91cGRhdGVEZXZp
Y2VTdGF0ZVF1ZXVlOwotICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fZGlzcGF0
Y2hRdWV1ZTsKLSAgICBMb2NrIG1fbG9jazsKKyAgICBSZWY8V29ya1F1ZXVlPiBtX2Rpc3BhdGNo
UXVldWU7CiAgICAgQXVkaW9TZXNzaW9uU3RhdGUgbV9hdWRpb1Nlc3Npb25TdGF0ZSB7IEF1ZGlv
U2Vzc2lvblN0YXRlOjpOb3ROZWVkZWQgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVk
aW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KaW5kZXggZWY5YmUxMDZiYmQ0ZWExNjg0
NGVlNzA5YzYwYTI1OGNjNjJjZWIwOC4uMmJlZGFmZjBjYTIwYjExNmUxNTZiZWUwYjgyYmExM2Mx
OWMwZDAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
aW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZU1hbmFnZXIubW0KQEAgLTg3LDE3ICs4NywxNSBAQCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyJiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpzaW5nbGV0bwog
fQogCiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpBVkF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VNYW5hZ2VyKCkKLSAgICA6IG1fZGlzcGF0Y2hRdWV1ZShhZG9wdE9TT2JqZWN0
KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5BVkF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VNYW5hZ2VyIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSkpCisgICAgOiBtX2Rp
c3BhdGNoUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQVZBdWRpb1Nl
c3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlciIpKQogewotICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlz
cGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzLCBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spXSB7CisgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChbdGhpc10gewogICAgICAg
ICBjcmVhdGVBdWRpb1Nlc3Npb24oKTsKLSAgICB9KS5nZXQoKSk7CisgICAgfSk7CiB9CiAKIHZv
aWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y3JlYXRlQXVkaW9TZXNzaW9u
KCkKIHsKLSAgICBBU1NFUlQobV9sb2NrLmlzTG9ja2VkKCkpOwotCiAjaWYgIVBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogICAgIG1fYXVkaW9TZXNzaW9uID0gYWRvcHROUyhbW1BBTDo6Z2V0QVZBdWRp
b1Nlc3Npb25DbGFzcygpIGFsbG9jXSBpbml0QXV4aWxpYXJ5U2Vzc2lvbl0pOwogI2Vsc2UKQEAg
LTE1NiwxNSArMTU0LDE1IEBAIHZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdl
cjo6cmVmcmVzaEF1ZGlvQ2FwdHVyZURldmljZXMoKQogICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0
YXRlID09IEF1ZGlvU2Vzc2lvblN0YXRlOjpJbmFjdGl2ZSkgewogICAgICAgICBtX2F1ZGlvU2Vz
c2lvblN0YXRlID0gQXVkaW9TZXNzaW9uU3RhdGU6OkFjdGl2ZTsKIAotICAgICAgICBkaXNwYXRj
aF9zeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CisgICAg
ICAgIG1fZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2hTeW5jKFt0aGlzXSB7CiAgICAgICAgICAgICBh
Y3RpdmF0ZUF1ZGlvU2Vzc2lvbigpOwotICAgICAgICB9KS5nZXQoKSk7CisgICAgICAgIH0pOwog
ICAgIH0KIAogICAgIFZlY3RvcjxBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2U+IG5ld0F1ZGlv
RGV2aWNlczsKLSAgICBkaXNwYXRjaF9zeW5jKG1fZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJs
b2NrUHRyKFsmXSB7CisgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaFN5bmMoWyZdIHsKICAg
ICAgICAgbmV3QXVkaW9EZXZpY2VzID0gcmV0cmlldmVBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
cygpOwotICAgIH0pLmdldCgpKTsKKyAgICB9KTsKICAgICBzZXRBdWRpb0NhcHR1cmVEZXZpY2Vz
KFdURk1vdmUobmV3QXVkaW9EZXZpY2VzKSk7CiB9CiAKQEAgLTE3MywxOCArMTcxLDE4IEBAIHZv
aWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6Z2V0Q2FwdHVyZURldmljZXMo
Q29tcGxldGlvbkhhbmRsZXI8dm9pCiAgICAgaWYgKG1fYXVkaW9TZXNzaW9uU3RhdGUgPT0gQXVk
aW9TZXNzaW9uU3RhdGU6OkluYWN0aXZlKSB7CiAgICAgICAgIG1fYXVkaW9TZXNzaW9uU3RhdGUg
PSBBdWRpb1Nlc3Npb25TdGF0ZTo6QWN0aXZlOwogCi0gICAgICAgIGRpc3BhdGNoX2FzeW5jKG1f
ZGlzcGF0Y2hRdWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CisgICAgICAgIG1fZGlz
cGF0Y2hRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKICAgICAgICAgICAgIGFjdGl2YXRlQXVkaW9T
ZXNzaW9uKCk7Ci0gICAgICAgIH0pLmdldCgpKTsKKyAgICAgICAgfSk7CiAgICAgfQogCi0gICAg
ZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXMs
IGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoKSBtdXRhYmxlIHsKKyAgICBtX2Rp
c3BhdGNoUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0
aW9uKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gbmV3QXVkaW9EZXZpY2VzID0gcmV0cmll
dmVBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlcygpOwogICAgICAgICBjYWxsT25XZWJUaHJlYWRP
ckRpc3BhdGNoQXN5bmNPbk1haW5UaHJlYWQobWFrZUJsb2NrUHRyKFt0aGlzLCBjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uKSwgbmV3QXVkaW9EZXZpY2VzID0gV1RGTW92ZShuZXdBdWRp
b0RldmljZXMpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHNldEF1ZGlvQ2FwdHVyZURldmlj
ZXMoV1RGTW92ZShuZXdBdWRpb0RldmljZXMpKTsKICAgICAgICAgICAgIGNvbXBsZXRpb24oY29w
eVRvVmVjdG9yKCptX2RldmljZXMpKTsKICAgICAgICAgfSkuZ2V0KCkpOwotICAgIH0pLmdldCgp
KTsKKyAgICB9KTsKIH0KIAogdm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2Vy
OjphY3RpdmF0ZUF1ZGlvU2Vzc2lvbigpCkBAIC0yNTMsMTQgKzI1MSwxNCBAQCB2b2lkIEFWQXVk
aW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmRpc2FibGVBbGxEZXZpY2VzUXVlcnkoKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSA9PSBBdWRpb1Nl
c3Npb25TdGF0ZTo6QWN0aXZlKSB7Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKG1fZGlzcGF0Y2hR
dWV1ZS5nZXQoKSwgbWFrZUJsb2NrUHRyKFt0aGlzXSB7CisgICAgICAgIG1fZGlzcGF0Y2hRdWV1
ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKICAgICAgICAgICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0YXRl
ICE9IEF1ZGlvU2Vzc2lvblN0YXRlOjpOb3ROZWVkZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CiAgICAgICAgICAgICBbbV9hdWRp
b1Nlc3Npb24gc2V0QWN0aXZlOk5PIHdpdGhPcHRpb25zOjAgZXJyb3I6JmVycm9yXTsKICAgICAg
ICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJS
VEMsICJGYWlsZWQgdG8gZGlzYWN0aXZhdGUgYXVkaW8gc2Vzc2lvbiB3aXRoIGVycm9yOiAlQC4i
LCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbik7Ci0gICAgICAgIH0pLmdldCgpKTsKKyAgICAg
ICAgfSk7CiAgICAgfQogCiAgICAgbV9hdWRpb1Nlc3Npb25TdGF0ZSA9IEF1ZGlvU2Vzc2lvblN0
YXRlOjpOb3ROZWVkZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9E
ZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0Rl
ZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCmluZGV4IDU4NzYwOTA2MDhkOWFmYzg4ZTM0MWM1ZGZm
NzNmNWIzMTBlZmE4OTQuLjQ5MmI5YzY0NDJiZTE1NGQ1MWRkZjc2OWY1OTNlODA4NGViMWJkNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2Vy
Q2hlY2tzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93
c2VyQ2hlY2tzLm1tCkBAIC0zMiw5ICszMiw5IEBACiAjaW1wb3J0IDxXZWJDb3JlL1ZlcnNpb25D
aGVja3MuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KLSNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxv
b3AuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1
ZS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgogCkBAIC04OCwxMiArODgsMTEgQEAgc3RhdGljIGJvb2wgaXNJbldl
YktpdENoaWxkUHJvY2VzcygpCiAKIGVudW0gY2xhc3MgSVRQU3RhdGUgOiB1aW50OF90IHsKICAg
ICBVbmluaXRpYWxpemVkLAotICAgIEluaXRpYWxpemluZywKICAgICBFbmFibGVkLAogICAgIERp
c2FibGVkCiB9OwogCi1zdGF0aWMgc3RkOjphdG9taWM8SVRQU3RhdGU+IGdfY3VycmVudElUUFN0
YXRlID0gSVRQU3RhdGU6OlVuaW5pdGlhbGl6ZWQ7CitzdGF0aWMgc3RkOjphdG9taWM8SVRQU3Rh
dGU+IGN1cnJlbnRJVFBTdGF0ZSA9IElUUFN0YXRlOjpVbmluaXRpYWxpemVkOwogCiBib29sIGhh
c1JlcXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbigpCiB7CkBAIC0xMjEsMjYg
KzEyMCwyMyBAQCBzdGF0aWMgYm9vbCBkZXRlcm1pbmVJVFBTdGF0ZUludGVybmFsKGJvb2wgYXBw
V2FzTGlua2VkT25PckFmdGVyLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHJlc3VsdCAhPSBr
VENDQWNjZXNzUHJlZmxpZ2h0RGVuaWVkOwogfQogCi1zdGF0aWMgT1NPYmplY3RQdHI8ZGlzcGF0
Y2hfcXVldWVfdD4mIGl0cFF1ZXVlKCkKK3N0YXRpYyBSZWZQdHI8V29ya1F1ZXVlPiYgaXRwUXVl
dWUoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPU09iamVjdFB0cjxkaXNwYXRjaF9x
dWV1ZV90Pj4gaXRwUXVldWU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxXb3Jr
UXVldWU+PiBpdHBRdWV1ZTsKICAgICByZXR1cm4gaXRwUXVldWU7CiB9CiAKIHZvaWQgZGV0ZXJt
aW5lSVRQU3RhdGUoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgaWYg
KGdfY3VycmVudElUUFN0YXRlICE9IElUUFN0YXRlOjpVbmluaXRpYWxpemVkKQorICAgIGlmIChj
dXJyZW50SVRQU3RhdGUgIT0gSVRQU3RhdGU6OlVuaW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGdfY3VycmVudElUUFN0YXRlID0gSVRQU3RhdGU6OkluaXRpYWxpemluZzsKICAg
ICBib29sIGFwcFdhc0xpbmtlZE9uT3JBZnRlciA9IGxpbmtlZE9uT3JBZnRlcihXZWJDb3JlOjpT
REtWZXJzaW9uOjpGaXJzdFdpdGhTZXNzaW9uQ2xlYW51cEJ5RGVmYXVsdCk7CiAKLSAgICBpdHBR
dWV1ZSgpID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5X
ZWJLaXQuaXRwQ2hlY2tRdWV1ZSIsIE5VTEwpKTsKLQotICAgIGRpc3BhdGNoX2FzeW5jKGl0cFF1
ZXVlKCkuZ2V0KCksIFthcHBXYXNMaW5rZWRPbk9yQWZ0ZXIsIGJ1bmRsZUlkZW50aWZpZXIgPSBX
ZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKS5pc29sYXRlZENvcHkoKV0gewot
ICAgICAgICBnX2N1cnJlbnRJVFBTdGF0ZSA9IGRldGVybWluZUlUUFN0YXRlSW50ZXJuYWwoYXBw
V2FzTGlua2VkT25PckFmdGVyLCBidW5kbGVJZGVudGlmaWVyKSA/IElUUFN0YXRlOjpFbmFibGVk
IDogSVRQU3RhdGU6OkRpc2FibGVkOwotCisgICAgaXRwUXVldWUoKSA9IFdvcmtRdWV1ZTo6Y3Jl
YXRlKCJjb20uYXBwbGUuV2ViS2l0Lml0cENoZWNrUXVldWUiKTsKKyAgICBpdHBRdWV1ZSgpLT5k
aXNwYXRjaChbYXBwV2FzTGlua2VkT25PckFmdGVyLCBidW5kbGVJZGVudGlmaWVyID0gV2ViQ29y
ZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAg
ICAgY3VycmVudElUUFN0YXRlID0gZGV0ZXJtaW5lSVRQU3RhdGVJbnRlcm5hbChhcHBXYXNMaW5r
ZWRPbk9yQWZ0ZXIsIGJ1bmRsZUlkZW50aWZpZXIpID8gSVRQU3RhdGU6OkVuYWJsZWQgOiBJVFBT
dGF0ZTo6RGlzYWJsZWQ7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7CiAg
ICAgICAgICAgICBpdHBRdWV1ZSgpID0gbnVsbHB0cjsKICAgICAgICAgfSk7CkBAIC0xNTEsMTYg
KzE0NywxMSBAQCBib29sIGRvZXNBcHBIYXZlSVRQRW5hYmxlZCgpCiB7CiAgICAgQVNTRVJUKCFp
c0luV2ViS2l0Q2hpbGRQcm9jZXNzKCkpOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
Ci0gICAgaWYgKGdfY3VycmVudElUUFN0YXRlID4gSVRQU3RhdGU6OkluaXRpYWxpemluZykKLSAg
ICAgICAgcmV0dXJuIGdfY3VycmVudElUUFN0YXRlID09IElUUFN0YXRlOjpFbmFibGVkOwotCi0g
ICAgUkVMRUFTRV9BU1NFUlQoaXRwUXVldWUoKSk7Ci0KLSAgICBfX2Jsb2NrIGJvb2wgaXNJVFBF
bmFibGVkOwotICAgIGRpc3BhdGNoX3N5bmMoaXRwUXVldWUoKS5nZXQoKSwgXnsKLSAgICAgICAg
aXNJVFBFbmFibGVkID0gZ19jdXJyZW50SVRQU3RhdGUgPT0gSVRQU3RhdGU6OkVuYWJsZWQ7Ci0g
ICAgfSk7Ci0gICAgcmV0dXJuIGlzSVRQRW5hYmxlZDsKKyAgICAvLyBJZiB3ZSdyZSBzdGlsbCBj
b21wdXRpbmcgdGhlIElUUCBzdGF0ZSBvbiB0aGUgYmFja2dyb3VuZCB0aHJlYWQsIHRoZW4gc3lu
Y2hyb25pemUgd2l0aCBpdC4KKyAgICBpZiAoaXRwUXVldWUoKSkKKyAgICAgICAgaXRwUXVldWUo
KS0+ZGlzcGF0Y2hTeW5jKFtdIHsgfSk7CisgICAgQVNTRVJUKGN1cnJlbnRJVFBTdGF0ZSAhPSBJ
VFBTdGF0ZTo6VW5pbml0aWFsaXplZCk7CisgICAgcmV0dXJuIGN1cnJlbnRJVFBTdGF0ZSA9PSBJ
VFBTdGF0ZTo6RW5hYmxlZDsKIH0KIAogYm9vbCBkb2VzUGFyZW50UHJvY2Vzc0hhdmVJVFBFbmFi
bGVkKE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIGJvb2wgaGFzUmVxdWVzdGVk
Q3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNzaW9uVmFsdWUpCg==
</data>
<flag name="commit-queue"
          id="442195"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422951</attachid>
            <date>2021-03-11 11:34:59 -0800</date>
            <delta_ts>2021-03-11 12:47:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223073-20210311113458.patch</filename>
            <type>text/plain</type>
            <size>27741</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0Mjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM2YmViYjdlYWJjNWUxYWRl
YjVhNTA4NTQ0NWU4ZjVjMmYzYzVjOWUuLmYyOTZlNTU4YWJmOGE2YTQ4NDFkMGJlNTQxMjdmYzgx
MTYxMmU2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDMtMTEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIHNvbWUgdXNhZ2Ugb2Yg
ZGlzcGF0Y2hfcXVldWUgd2l0aCBXb3JrUXVldWUgbm93IHRoYXQgaXQgc3VwcG9ydHMgc3luYyBk
aXNwYXRjaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIzMDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
UmVwbGFjZSBzb21lIHVzYWdlIG9mIGRpc3BhdGNoX3F1ZXVlIHdpdGggV29ya1F1ZXVlIG5vdyB0
aGF0IGl0IHN1cHBvcnRzIHN5bmMgZGlzcGF0Y2hpbmcKKyAgICAgICAgc2luY2UgcjI3NDI4Ni4K
KworICAgICAgICAqIFNoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbToKKyAg
ICAgICAgKFdlYktpdDo6aXRwUXVldWUpOgorICAgICAgICAoV2ViS2l0OjpkZXRlcm1pbmVJVFBT
dGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OmRvZXNBcHBIYXZlSVRQRW5hYmxlZCk6CisKIDIwMjEt
MDMtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1
Y2UgV29ya1F1ZXVlOjpkaXNwYXRjaFN5bmMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggNmUzZGNkMTYyNDdjODY4
NjgyNjNiMjJkYWMwZjIwMTU1M2E0N2NhOS4uNjlkMWZhNjY1MzhiMTU4OGFhZDQ0NWNhNDFlZGE1
MjU2ZjBhNmY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L0F1ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9TZXNzaW9uSU9TLm1tCkBAIC0zMyw4ICszMyw4IEBACiAjaW1wb3J0IDxvYmpjL3J1
bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CiAjaW1w
b3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgotI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRy
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+
CiAKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCkBAIC0xMDMs
NyArMTAzLDcgQEAgcHVibGljOgogICAgIH5BdWRpb1Nlc3Npb25Qcml2YXRlKCk7CiAKICAgICBB
dWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7Ci0gICAgT1NPYmpl
Y3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9kaXNwYXRjaFF1ZXVlOworICAgIFJlZlB0cjxXb3Jr
UXVldWU+IG1fd29ya1F1ZXVlOwogICAgIFJldGFpblB0cjxXZWJJbnRlcnJ1cHRpb25PYnNlcnZl
ckhlbHBlcj4gbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcjsKIH07CiAKQEAgLTI2MSwyMyAr
MjYxLDI0IEBAIHNpemVfdCBBdWRpb1Nlc3Npb246Om1heGltdW1OdW1iZXJPZk91dHB1dENoYW5u
ZWxzKCkgY29uc3QKIAogYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwo
Ym9vbCBhY3RpdmUpCiB7Ci0gICAgX19ibG9jayBOU0Vycm9yKiBlcnJvciA9IG5pbDsKLQotICAg
IGlmICghbV9wcml2YXRlLT5tX2Rpc3BhdGNoUXVldWUpCi0gICAgICAgIG1fcHJpdmF0ZS0+bV9k
aXNwYXRjaFF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIkF1ZGlv
U2Vzc2lvbiBBY3RpdmF0aW9uIFF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSk7CisgICAg
aWYgKCFtX3ByaXZhdGUtPm1fd29ya1F1ZXVlKQorICAgICAgICBtX3ByaXZhdGUtPm1fd29ya1F1
ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIkF1ZGlvU2Vzc2lvbiBBY3RpdmF0aW9uIFF1ZXVlIik7
CiAKICAgICAvLyBXZSBuZWVkIHRvIGRlYWN0aXZhdGUgdGhlIHNlc3Npb24gb24gYW5vdGhlciBx
dWV1ZSBiZWNhdXNlIHRoZSBBVkF1ZGlvU2Vzc2lvblNldEFjdGl2ZU9wdGlvbk5vdGlmeU90aGVy
c09uRGVhY3RpdmF0aW9uIG9wdGlvbgogICAgIC8vIG1lYW5zIHRoYXQgQVZBdWRpb1Nlc3Npb24g
bWF5IHN5bmNocm9ub3VzbHkgdW5kdWNrIHByZXZpb3VzbHkgZHVja2VkIGNsaWVudHMuIEFjdGl2
YXRpb24gbmVlZHMgdG8gY29tcGxldGUgYmVmb3JlIHRoaXMgbWV0aG9kCiAgICAgLy8gcmV0dXJu
cywgc28gZG8gaXQgc3luY2hyb25vdXNseSBvbiB0aGUgc2FtZSBzZXJpYWwgcXVldWUuCiAgICAg
aWYgKGFjdGl2ZSkgewotICAgICAgICBkaXNwYXRjaF9zeW5jKG1fcHJpdmF0ZS0+bV9kaXNwYXRj
aFF1ZXVlLmdldCgpLCBeeworICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAg
bV9wcml2YXRlLT5tX3dvcmtRdWV1ZS0+ZGlzcGF0Y2hTeW5jKFsmc3VjY2Vzc10geworICAgICAg
ICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CiAgICAgICAgICAgICBbW1BBTDo6Z2V0QVZBdWRp
b1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSBzZXRBY3RpdmU6WUVTIHdpdGhPcHRpb25z
OjAgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSAhZXJyb3I7CiAgICAgICAg
IH0pOwotCi0gICAgICAgIHJldHVybiAhZXJyb3I7CisgICAgICAgIHJldHVybiBzdWNjZXNzOwog
ICAgIH0KIAotICAgIGRpc3BhdGNoX2FzeW5jKG1fcHJpdmF0ZS0+bV9kaXNwYXRjaFF1ZXVlLmdl
dCgpLCBeeworICAgIG1fcHJpdmF0ZS0+bV93b3JrUXVldWUtPmRpc3BhdGNoKFtdIHsKKyAgICAg
ICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CiAgICAgICAgIFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lv
bkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIHNldEFjdGl2ZTpOTyB3aXRoT3B0aW9uczowIGVycm9y
OiZlcnJvcl07CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9u
LmgKaW5kZXggZWI2OTAzOGI3ZGZhOWEzOWIyZTZmYTY1NDJlYjk1MDU5OTE2YTU5Zi4uYjYxNzU1
Mzc0ZTY3MGFkODNlOTcyOGRiN2EzMzExM2I3ZDc0NTlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURl
Y29tcHJlc3Npb25TZXNzaW9uLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAogdHlwZWRlZiBDRlR5
cGVSZWYgQ01CdWZmZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGQXJyYXkgKiBDRkFy
cmF5UmVmOwpAQCAtMTEzLDggKzExNCw4IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENNQnVm
ZmVyUXVldWVSZWY+IG1fcHJvZHVjZXJRdWV1ZTsKICAgICBSZXRhaW5QdHI8Q01CdWZmZXJRdWV1
ZVJlZj4gbV9jb25zdW1lclF1ZXVlOwogICAgIFJldGFpblB0cjxDTVRpbWViYXNlUmVmPiBtX3Rp
bWViYXNlOwotICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fZGVjb21wcmVzc2lv
blF1ZXVlOwotICAgIE9TT2JqZWN0UHRyPGRpc3BhdGNoX3F1ZXVlX3Q+IG1fZW5xdWVpbmdRdWV1
ZTsKKyAgICBSZWY8V29ya1F1ZXVlPiBtX2RlY29tcHJlc3Npb25RdWV1ZTsKKyAgICBSZWY8V29y
a1F1ZXVlPiBtX2VucXVlaW5nUXVldWU7CiAgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfc291cmNl
X3Q+IG1fdGltZXJTb3VyY2U7CiAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fbm90aWZpY2F0
aW9uQ2FsbGJhY2s7CiAgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1faGFzQXZhaWxhYmxlRnJh
bWVDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQppbmRl
eCBkYzViZTc0NjlhOWZkMTY5OGM2YjM2ZTNlZDQ5NzQ1ZjM5ZDBmZTcyLi43MDVhMzE4NzBhNDcy
M2M2MzMyY2MwODc1NWU5NGZhMzM4MTBkNzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJl
c3Npb25TZXNzaW9uLm1tCkBAIC01MSw4ICs1MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24o
TW9kZSBtb2RlKQogICAgIDogbV9tb2RlKG1vZGUpCi0gICAgLCBtX2RlY29tcHJlc3Npb25RdWV1
ZShhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uIERlY29tcHJlc3Npb24gUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSkK
LSAgICAsIG1fZW5xdWVpbmdRdWV1ZShhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0
ZSgiV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uIEVucXVldWVpbmcgUXVldWUiLCBESVNQQVRD
SF9RVUVVRV9TRVJJQUwpKSkKKyAgICAsIG1fZGVjb21wcmVzc2lvblF1ZXVlKFdvcmtRdWV1ZTo6
Y3JlYXRlKCJXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24gRGVjb21wcmVzc2lvbiBRdWV1ZSIp
KQorICAgICwgbV9lbnF1ZWluZ1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJXZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb24gRW5xdWV1ZWluZyBRdWV1ZSIpKQogewogfQogCkBAIC0xMTgsOSArMTE4
LDYgQEAgdm9pZCBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmVucXVldWVTYW1wbGUoQ01T
YW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyLAogICAgIGlmIChub0VyciAhPSBDTVNhbXBsZUJ1
ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheShzYW1wbGVCdWZmZXIsIGl0ZW1Db3VudCwgdGlt
aW5nSW5mb0FycmF5LmRhdGEoKSwgbnVsbHB0cikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICghbV9kZWNvbXByZXNzaW9uUXVldWUpCi0gICAgICAgIG1fZGVjb21wcmVzc2lvblF1ZXVlID0g
YWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDIERlY29tcHJlc3Npb24gUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKTsKLQog
ICAgIC8vIENNQnVmZmVyQ2FsbGJhY2tzIGNvbnRhaW5zIDY0LWJpdCBwb2ludGVycyB0aGF0IGFy
ZW4ndCA4LWJ5dGUgYWxpZ25lZC4gVG8gc3VwcHJlc3MgdGhlIGxpbmtlcgogICAgIC8vIHdhcm5p
bmcgYWJvdXQgdGhpcywgd2UgcHJlcGVuZCA0IGJ5dGVzIG9mIHBhZGRpbmcgd2hlbiBidWlsZGlu
Zy4KICAgICBjb25zdCBzaXplX3QgcGFkU2l6ZSA9IDQ7CkBAIC0xNjcsNyArMTY0LDcgQEAgdm9p
ZCBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmVucXVldWVTYW1wbGUoQ01TYW1wbGVCdWZm
ZXJSZWYgc2FtcGxlQnVmZmVyLAogCiAgICAgTE9HKE1lZGlhLCAiV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uOjplbnF1ZXVlU2FtcGxlKCVwKSAtIGZyYW1lc0JlaW5nRGVjb2RlZCglZCkiLCB0
aGlzLCBtX2ZyYW1lc0JlaW5nRGVjb2RlZCk7CiAKLSAgICBkaXNwYXRjaF9hc3luYyhtX2RlY29t
cHJlc3Npb25RdWV1ZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKCp0aGlzKSwg
c3Ryb25nQnVmZmVyID0gcmV0YWluUHRyKHNhbXBsZUJ1ZmZlciksIGRpc3BsYXlpbmddIHsKKyAg
ICBtX2RlY29tcHJlc3Npb25RdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKCp0aGlzKSwgc3Ryb25nQnVmZmVyID0gcmV0YWluUHRyKHNhbXBsZUJ1ZmZlciksIGRpc3Bs
YXlpbmddIHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVjb2RlU2FtcGxlKHN0cm9uZ0J1ZmZl
ci5nZXQoKSwgZGlzcGxheWluZyk7CiAgICAgfSk7CiB9CkBAIC0zMTQsNyArMzExLDcgQEAgdm9p
ZCBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmhhbmRsZURlY29tcHJlc3Npb25PdXRwdXQo
Ym9vbCBkaXNwbGF5aW5nLCBPU1MKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRpc3Bh
dGNoX2FzeW5jKG1fZW5xdWVpbmdRdWV1ZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKHRoaXMpLCBpbWFnZVNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0YocmF3SW1hZ2VTYW1wbGVCdWZm
ZXIpLCBkaXNwbGF5aW5nXSB7CisgICAgbV9lbnF1ZWluZ1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGltYWdlU2FtcGxlQnVmZmVyID0gYWRvcHRDRihy
YXdJbWFnZVNhbXBsZUJ1ZmZlciksIGRpc3BsYXlpbmddIHsKICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+ZW5xdWV1ZURlY29kZWRTYW1wbGUoaW1hZ2VTYW1wbGVCdWZmZXIuZ2V0KCksIGRpc3BsYXlp
bmcpOwogICAgIH0pOwogfQpAQCAtNTIyLDkgKzUxOSw5IEBAIFJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPiBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmltYWdlRm9yVGltZShjb25zdCBN
ZWRpCiAKIHZvaWQgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpmbHVzaCgpCiB7Ci0gICAg
ZGlzcGF0Y2hfc3luYyhtX2RlY29tcHJlc3Npb25RdWV1ZS5nZXQoKSwgW3Byb3RlY3RlZFRoaXMg
PSBSZWZQdHI8V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uPih0aGlzKV0geworICAgIG1fZGVj
b21wcmVzc2lvblF1ZXVlLT5kaXNwYXRjaFN5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQ01CdWZmZXJRdWV1ZVJlc2V0KHByb3Rl
Y3RlZFRoaXMtPm1fcHJvZHVjZXJRdWV1ZS5nZXQoKSk7Ci0gICAgICAgIGRpc3BhdGNoX3N5bmMo
cHJvdGVjdGVkVGhpcy0+bV9lbnF1ZWluZ1F1ZXVlLmdldCgpLCBbcHJvdGVjdGVkVGhpc10gewor
ICAgICAgICBtX2VucXVlaW5nUXVldWUtPmRpc3BhdGNoU3luYyhbcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyldIHsKICAgICAgICAgICAgIENNQnVmZmVyUXVldWVSZXNldChw
cm90ZWN0ZWRUaGlzLT5tX2NvbnN1bWVyUXVldWUuZ2V0KCkpOwogICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9mcmFtZXNTaW5jZUxhc3RRb3NDaGVjayA9IDA7CiAgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5tX2N1cnJlbnRRb3NUaWVyID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9CbG9ja2xpc3RVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvQmxvY2tsaXN0VXBkYXRlci5oCmluZGV4IDAwMTYxZGVlZGNiNDQ2ODg5NjYzOTk0
NGQzNDdhNmNiYzMyYzM2ZDQuLjM1MGU0ZjI1MTViNjZkM2Y0Yzc0ZTM5NzQ5ZGQyMDBlMjkwODk4
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9CbG9ja2xpc3RVcGRh
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Jsb2NrbGlzdFVwZGF0ZXIu
aApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCi0jaW1wb3J0IDxkaXNw
YXRjaC9kaXNwYXRjaC5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTM2LDEwICszNiw5IEBAIGNsYXNzIFdlYkdMQmxvY2tsaXN0OwogCiBj
bGFzcyBCbG9ja2xpc3RVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBpbml0aWFs
aXplUXVldWUoKTsKICAgICBzdGF0aWMgdm9pZCByZWxvYWRJZk5lY2Vzc2FyeSgpOwogCi0gICAg
c3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUoKSB7IHJldHVybiBzX3F1ZXVlOyB9CisgICAg
c3RhdGljIFdvcmtRdWV1ZSYgcXVldWUoKTsKICAgICBzdGF0aWMgUGx1Z2luQmxvY2tsaXN0KiBw
bHVnaW5CbG9ja2xpc3QoKSB7IHJldHVybiBzX3BsdWdpbkJsb2NrbGlzdDsgfQogICAgIHN0YXRp
YyBXZWJHTEJsb2NrbGlzdCogd2ViR0xCbG9ja2xpc3QoKSB7IHJldHVybiBzX3dlYkdMQmxvY2ts
aXN0OyB9OwogCkBAIC00Nyw3ICs0Niw2IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgTlNEaWN0
aW9uYXJ5ICpyZWFkQmxvY2tsaXN0RGF0YSgpOwogCi0gICAgc3RhdGljIGRpc3BhdGNoX3F1ZXVl
X3Qgc19xdWV1ZTsKICAgICBzdGF0aWMgUGx1Z2luQmxvY2tsaXN0KiBzX3BsdWdpbkJsb2NrbGlz
dDsKICAgICBzdGF0aWMgV2ViR0xCbG9ja2xpc3QqIHNfd2ViR0xCbG9ja2xpc3Q7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Jsb2NrbGlzdFVwZGF0ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQmxvY2tsaXN0VXBkYXRlci5tbQppbmRleCBk
MTE1OWE5ZTU3MmMzMmY3MjcxYWVkM2E0OTZjM2U2NDBlZWRjYWE4Li4yNWZkMThiMGRjOWFhZGUz
MGQ4N2YzNjU1YjUzNjNkMGZkYjZjNWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvQmxvY2tsaXN0VXBkYXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvQmxvY2tsaXN0VXBkYXRlci5tbQpAQCAtNTEsMTEgKzUxLDIwIEBAIE5TU3RyaW5nICog
Y29uc3QgYmxvY2tsaXN0UGF0aCA9IEAiL1N5c3RlbS9MaWJyYXJ5L0NvcmVTZXJ2aWNlcy9YUHJv
dGVjdC5idW5kbGUvCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZGlzcGF0Y2hfcXVldWVfdCBC
bG9ja2xpc3RVcGRhdGVyOjpzX3F1ZXVlOwotCiBQbHVnaW5CbG9ja2xpc3QqIEJsb2NrbGlzdFVw
ZGF0ZXI6OnNfcGx1Z2luQmxvY2tsaXN0ID0gbnVsbHB0cjsKIFdlYkdMQmxvY2tsaXN0KiBCbG9j
a2xpc3RVcGRhdGVyOjpzX3dlYkdMQmxvY2tsaXN0ID0gbnVsbHB0cjsKIAorV29ya1F1ZXVlJiBC
bG9ja2xpc3RVcGRhdGVyOjpxdWV1ZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
ZlB0cjxXb3JrUXVldWU+PiBxdWV1ZTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7
CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKKyAgICAgICAgcXVldWUuZ2V0KCkgPSBXb3Jr
UXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5CbG9ja2xpc3QiKTsKKyAgICB9KTsKKwor
ICAgIHJldHVybiAqcXVldWUuZ2V0KCk7Cit9CisKIE5TRGljdGlvbmFyeSAqIEJsb2NrbGlzdFVw
ZGF0ZXI6OnJlYWRCbG9ja2xpc3REYXRhKCkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNEYXRh
IGRhdGFXaXRoQ29udGVudHNPZkZpbGU6YmxvY2tsaXN0UGF0aF07CkBAIC0xMDEsMTQgKzExMCw2
IEBAIHZvaWQgQmxvY2tsaXN0VXBkYXRlcjo6cmVsb2FkSWZOZWNlc3NhcnkoKQogICAgIGJsb2Nr
bGlzdFVwZGF0ZVRpbWUgPSBzdGF0QnVmLnN0X210aW1lc3BlYy50dl9zZWM7CiB9CiAKLXZvaWQg
QmxvY2tsaXN0VXBkYXRlcjo6aW5pdGlhbGl6ZVF1ZXVlKCkKLXsKLSAgICBzdGF0aWMgZGlzcGF0
Y2hfb25jZV90IG9uY2U7Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKLSAgICAgICAgc19x
dWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5CbG9ja2xpc3Qi
LCAwKTsKLSAgICB9KTsKLX0KLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbHVnaW5CbG9ja2xpc3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1tCmluZGV4IDEzNmY2ZWRmNjliNGRjNmRkNzkyYmEx
M2M0YzhmY2RlYzhkOGU0MWMuLmM3MzU1ZjI3NjBiN2Y5MDlmZDEyMjk5NGE3YTRmMmJhNWI2NzI3
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5CbG9ja2xp
c3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsdWdpbkJsb2NrbGlzdC5t
bQpAQCAtMzUsMTYgKzM1LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGx1Z2luQmxv
Y2tsaXN0OjpMb2FkUG9saWN5IFBsdWdpbkJsb2NrbGlzdDo6bG9hZFBvbGljeUZvclBsdWdpblZl
cnNpb24oTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIsIE5TU3RyaW5nICpidW5kbGVWZXJzaW9u
U3RyaW5nKQorYXV0byBQbHVnaW5CbG9ja2xpc3Q6OmxvYWRQb2xpY3lGb3JQbHVnaW5WZXJzaW9u
KE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyLCBOU1N0cmluZyAqYnVuZGxlVmVyc2lvblN0cmlu
ZykgLT4gTG9hZFBvbGljeQogewotICAgIEJsb2NrbGlzdFVwZGF0ZXI6OmluaXRpYWxpemVRdWV1
ZSgpOwotCi0gICAgX19ibG9jayBQbHVnaW5CbG9ja2xpc3Q6OkxvYWRQb2xpY3kgbG9hZFBvbGlj
eSA9IExvYWRQb2xpY3k6OkxvYWROb3JtYWxseTsKLSAgICBkaXNwYXRjaF9zeW5jKEJsb2NrbGlz
dFVwZGF0ZXI6OnF1ZXVlKCksIF57CisgICAgYXV0byBsb2FkUG9saWN5ID0gTG9hZFBvbGljeTo6
TG9hZE5vcm1hbGx5OworICAgIEJsb2NrbGlzdFVwZGF0ZXI6OnF1ZXVlKCkuZGlzcGF0Y2hTeW5j
KFsmXSB7CiAgICAgICAgIEJsb2NrbGlzdFVwZGF0ZXI6OnJlbG9hZElmTmVjZXNzYXJ5KCk7Ci0K
LSAgICAgICAgUGx1Z2luQmxvY2tsaXN0KiBwbHVnaW5CbG9ja2xpc3QgPSBCbG9ja2xpc3RVcGRh
dGVyOjpwbHVnaW5CbG9ja2xpc3QoKTsKLSAgICAgICAgaWYgKHBsdWdpbkJsb2NrbGlzdCkKKyAg
ICAgICAgaWYgKGF1dG8qIHBsdWdpbkJsb2NrbGlzdCA9IEJsb2NrbGlzdFVwZGF0ZXI6OnBsdWdp
bkJsb2NrbGlzdCgpKQogICAgICAgICAgICAgbG9hZFBvbGljeSA9IHBsdWdpbkJsb2NrbGlzdC0+
bG9hZFBvbGljeUZvclBsdWdpbihidW5kbGVJZGVudGlmaWVyLCBidW5kbGVWZXJzaW9uU3RyaW5n
KTsKICAgICB9KTsKIApAQCAtNTMsMTQgKzQ5LDEwIEBAIFBsdWdpbkJsb2NrbGlzdDo6TG9hZFBv
bGljeSBQbHVnaW5CbG9ja2xpc3Q6OmxvYWRQb2xpY3lGb3JQbHVnaW5WZXJzaW9uKE5TU3RyaW5n
CiAKIGJvb2wgUGx1Z2luQmxvY2tsaXN0Ojppc1BsdWdpblVwZGF0ZUF2YWlsYWJsZShOU1N0cmlu
ZyAqYnVuZGxlSWRlbnRpZmllcikKIHsKLSAgICBCbG9ja2xpc3RVcGRhdGVyOjppbml0aWFsaXpl
UXVldWUoKTsKLQotICAgIF9fYmxvY2sgYm9vbCBpc1BsdWdpblVwZGF0ZUF2YWlsYWJsZSA9IGZh
bHNlOwotICAgIGRpc3BhdGNoX3N5bmMoQmxvY2tsaXN0VXBkYXRlcjo6cXVldWUoKSwgXnsKKyAg
ICBib29sIGlzUGx1Z2luVXBkYXRlQXZhaWxhYmxlID0gZmFsc2U7CisgICAgQmxvY2tsaXN0VXBk
YXRlcjo6cXVldWUoKS5kaXNwYXRjaFN5bmMoWyZdIHsKICAgICAgICAgQmxvY2tsaXN0VXBkYXRl
cjo6cmVsb2FkSWZOZWNlc3NhcnkoKTsKLQotICAgICAgICBQbHVnaW5CbG9ja2xpc3QqIHBsdWdp
bkJsb2NrbGlzdCA9IEJsb2NrbGlzdFVwZGF0ZXI6OnBsdWdpbkJsb2NrbGlzdCgpOwotICAgICAg
ICBpZiAocGx1Z2luQmxvY2tsaXN0KQorICAgICAgICBpZiAoYXV0byogcGx1Z2luQmxvY2tsaXN0
ID0gQmxvY2tsaXN0VXBkYXRlcjo6cGx1Z2luQmxvY2tsaXN0KCkpCiAgICAgICAgICAgICBpc1Bs
dWdpblVwZGF0ZUF2YWlsYWJsZSA9IHBsdWdpbkJsb2NrbGlzdC0+aXNVcGRhdGVBdmFpbGFibGUo
YnVuZGxlSWRlbnRpZmllcik7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJHTEJsb2NrbGlzdC5tbQppbmRleCBkMDRlZTIxNzRkMWRiYzc3ZDdjYWU4NWEzZmFh
MjViMDE4MTU3ODQ1Li43N2M5MzM5MDkwNmUzNzllYjI5ZDI0Nzg5NWUwYzNkMmQ3OGFkODUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tCkBAIC0x
MDQsMTQgKzEwNCwxMCBAQCBzdGF0aWMgT1NCdWlsZEluZm8gYnVpbGRJbmZvRnJvbU9TQnVpbGRT
dHJpbmcoTlNTdHJpbmcgKmJ1aWxkU3RyaW5nKQogCiBib29sIFdlYkdMQmxvY2tsaXN0OjpzaG91
bGRCbG9ja1dlYkdMKCkKIHsKLSAgICBCbG9ja2xpc3RVcGRhdGVyOjppbml0aWFsaXplUXVldWUo
KTsKLQotICAgIF9fYmxvY2sgYm9vbCBzaG91bGRCbG9jayA9IGZhbHNlOwotICAgIGRpc3BhdGNo
X3N5bmMoQmxvY2tsaXN0VXBkYXRlcjo6cXVldWUoKSwgXnsKKyAgICBib29sIHNob3VsZEJsb2Nr
ID0gZmFsc2U7CisgICAgQmxvY2tsaXN0VXBkYXRlcjo6cXVldWUoKS5kaXNwYXRjaFN5bmMoWyZz
aG91bGRCbG9ja10gewogICAgICAgICBCbG9ja2xpc3RVcGRhdGVyOjpyZWxvYWRJZk5lY2Vzc2Fy
eSgpOwotCi0gICAgICAgIFdlYkdMQmxvY2tsaXN0KiB3ZWJHTEJsb2NrbGlzdCA9IEJsb2NrbGlz
dFVwZGF0ZXI6OndlYkdMQmxvY2tsaXN0KCk7Ci0gICAgICAgIGlmICh3ZWJHTEJsb2NrbGlzdCkK
KyAgICAgICAgaWYgKGF1dG8qIHdlYkdMQmxvY2tsaXN0ID0gQmxvY2tsaXN0VXBkYXRlcjo6d2Vi
R0xCbG9ja2xpc3QoKSkKICAgICAgICAgICAgIHNob3VsZEJsb2NrID0gd2ViR0xCbG9ja2xpc3Qt
PnNob3VsZEJsb2NrKCk7CiAgICAgfSk7CiAKQEAgLTEyMCwxNCArMTE2LDEwIEBAIGJvb2wgV2Vi
R0xCbG9ja2xpc3Q6OnNob3VsZEJsb2NrV2ViR0woKQogCiBib29sIFdlYkdMQmxvY2tsaXN0Ojpz
aG91bGRTdWdnZXN0QmxvY2tpbmdXZWJHTCgpCiB7Ci0gICAgQmxvY2tsaXN0VXBkYXRlcjo6aW5p
dGlhbGl6ZVF1ZXVlKCk7Ci0KLSAgICBfX2Jsb2NrIGJvb2wgc2hvdWxkU3VnZ2VzdEJsb2NraW5n
ID0gZmFsc2U7Ci0gICAgZGlzcGF0Y2hfc3luYyhCbG9ja2xpc3RVcGRhdGVyOjpxdWV1ZSgpLCBe
eworICAgIGJvb2wgc2hvdWxkU3VnZ2VzdEJsb2NraW5nID0gZmFsc2U7CisgICAgQmxvY2tsaXN0
VXBkYXRlcjo6cXVldWUoKS5kaXNwYXRjaFN5bmMoWyZzaG91bGRTdWdnZXN0QmxvY2tpbmddIHsK
ICAgICAgICAgQmxvY2tsaXN0VXBkYXRlcjo6cmVsb2FkSWZOZWNlc3NhcnkoKTsKLQotICAgICAg
ICBXZWJHTEJsb2NrbGlzdCogd2ViR0xCbG9ja2xpc3QgPSBCbG9ja2xpc3RVcGRhdGVyOjp3ZWJH
TEJsb2NrbGlzdCgpOwotICAgICAgICBpZiAod2ViR0xCbG9ja2xpc3QpCisgICAgICAgIGlmIChh
dXRvKiB3ZWJHTEJsb2NrbGlzdCA9IEJsb2NrbGlzdFVwZGF0ZXI6OndlYkdMQmxvY2tsaXN0KCkp
CiAgICAgICAgICAgICBzaG91bGRTdWdnZXN0QmxvY2tpbmcgPSB3ZWJHTEJsb2NrbGlzdC0+c2hv
dWxkU3VnZ2VzdEJsb2NraW5nKCk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCmluZGV4IGQzZjFhYzcyOWI1YjVjZGU2M2RiNDRjMDA1
MjdjMDk4NjNjODJhNjguLmUzYzIyZDZhZWQ5ZTZjZTlkZDI4Yzg4NzgyYmU2MTk2YmY3YjY2YmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAt
MjcsNyArMjcsNyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJ
T04pCiAKICNpbXBvcnQgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KLSNpbXBvcnQgPHd0Zi9PU09i
amVjdFB0ci5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5oPgogCiB0eXBlZGVmIHN0cnVjdCBv
cGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZmZXJSZWY7CiB0eXBlZGVmIHN0cnVjdCBP
cGFxdWVBdWRpb0NvbnZlcnRlciogQXVkaW9Db252ZXJ0ZXJSZWY7CkBAIC02NCw3ICs2NCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzU2FtcGxlQnVmZmVyc1VudGlsTG93V2F0ZXJUaW1l
KENNVGltZSk7CiAgICAgT1NTdGF0dXMgcHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRz
KFVJbnQzMiosIEF1ZGlvQnVmZmVyTGlzdCosIEF1ZGlvU3RyZWFtUGFja2V0RGVzY3JpcHRpb24q
Kik7CiAKLSAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9xdWV1ZV90PiBtX3NlcmlhbERpc3BhdGNo
UXVldWU7CisgICAgUmVmPFdvcmtRdWV1ZT4gbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOwogICAgIENN
VGltZSBtX2xvd1dhdGVyVGltZSB7IGtDTVRpbWVJbnZhbGlkIH07CiAKICAgICBSZXRhaW5QdHI8
Q01CdWZmZXJRdWV1ZVJlZj4gbV9vdXRwdXRCdWZmZXJRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5kZXggY2NjOGRkM2E5ZDRmMGZkYTg4
OTMzZjBmZDFlMjgxZGUzYWRlOTdlZC4uOWZlMGY3MDgwNTBhN2Y3YTg2NDE0NmQ5NmI4M2VhNGUx
N2ZkMWU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNz
b3IubW0KQEAgLTUyLDcgKzUyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVy
Q29tcHJlc3Nvcj4gQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpjcmVhdGUKIH0KIAogQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IoKQot
ICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVlIHsgYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1
ZV9jcmVhdGUoImNvbS5hcHBsZS5BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRD
SF9RVUVVRV9TRVJJQUwpKSB9CisgICAgOiBtX3NlcmlhbERpc3BhdGNoUXVldWUgeyBXb3JrUXVl
dWU6OmNyZWF0ZSgiY29tLmFwcGxlLkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciIpIH0KICAg
ICAsIG1fbG93V2F0ZXJUaW1lIHsgQ01UaW1lTWFrZVdpdGhTZWNvbmRzKExPV19XQVRFUl9USU1F
X0lOX1NFQ09ORFMsIDEwMDApIH0KIHsKIH0KQEAgLTg4LDcgKzg4LDcgQEAgYm9vbCBBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OmluaXRpYWxpemUoQ01CdWZmZXJRdWV1ZVRyaWdnZXJDYWxs
YmFjayBjYWxsYmEKIAogdm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgp
CiB7Ci0gICAgZGlzcGF0Y2hfc3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUuZ2V0KCksIF57Cisg
ICAgbV9zZXJpYWxEaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaFN5bmMoW3RoaXNdIHsKICAgICAgICAg
cHJvY2Vzc1NhbXBsZUJ1ZmZlcnNVbnRpbExvd1dhdGVyVGltZShrQ01UaW1lSW52YWxpZCk7CiAg
ICAgICAgIGF1dG8gZXJyb3IgPSBDTUJ1ZmZlclF1ZXVlTWFya0VuZE9mRGF0YShtX291dHB1dEJ1
ZmZlclF1ZXVlLmdldCgpKTsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1l
ZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIENNQnVmZmVyUXVldWVNYXJr
RW5kT2ZEYXRhIGZhaWxlZCAlZCIsIGVycm9yKTsKQEAgLTUwOSw3ICs1MDksNyBAQCB2b2lkIEF1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNhbXBsZUJ1
ZmZlclJlZiBidWZmZXIpCiAKIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphZGRT
YW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQogewotICAgIGRpc3BhdGNoX3N5
bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBeeworICAgIG1fc2VyaWFsRGlzcGF0Y2hR
dWV1ZS0+ZGlzcGF0Y2hTeW5jKFt0aGlzLCBidWZmZXJdIHsKICAgICAgICAgaWYgKG1faXNFbmNv
ZGluZykKICAgICAgICAgICAgIHByb2Nlc3NTYW1wbGVCdWZmZXIoYnVmZmVyKTsKICAgICB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5oCmluZGV4IDM3
NmE1Y2ZiZWFiMWExNDZmMjkwYjJjYjI0M2M1YzEzMzJkZDc0ZjkuLjkyODg3ZmY5Y2MyMjYyZjVl
ZjRkN2M3OWY1Y2VkNTFiZTkxMGRmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8Q29yZU1l
ZGlhL0NvcmVNZWRpYS5oPgogI2luY2x1ZGUgPFZpZGVvVG9vbGJveC9WVEVycm9ycy5oPgotI2lu
Y2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KIAog
dHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVyUmVmOwog
dHlwZWRlZiBzdHJ1Y3QgT3BhcXVlVlRDb21wcmVzc2lvblNlc3Npb24gKlZUQ29tcHJlc3Npb25T
ZXNzaW9uUmVmOwpAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQg
dmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJlZkNvbiwgdm9pZCosIE9TU3RhdHVzLCBW
VEVuY29kZUluZm9GbGFncywgQ01TYW1wbGVCdWZmZXJSZWYpOwogCi0gICAgT1NPYmplY3RQdHI8
ZGlzcGF0Y2hfcXVldWVfdD4gbV9zZXJpYWxEaXNwYXRjaFF1ZXVlOworICAgIFJlZjxXb3JrUXVl
dWU+IG1fc2VyaWFsRGlzcGF0Y2hRdWV1ZTsKICAgICBDTVZpZGVvQ29kZWNUeXBlIG1fb3V0cHV0
Q29kZWNUeXBlIHsga0NNVmlkZW9Db2RlY1R5cGVfSDI2NCB9OwogCiAgICAgUmV0YWluUHRyPENN
QnVmZmVyUXVldWVSZWY+IG1fb3V0cHV0QnVmZmVyUXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCmluZGV4IDE3Njc5OTc0MWJkNGZiYjk5MDk5
YWQ4NDM0ZWY2YzJmNDZiOGFiNzguLjIwMDE4NWJiY2I3NjU0MDYzYmEwMWQxMTg4ZmU3OTRmNmE5
ZTM4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tCkBAIC00OCw3ICs0OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I+IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Y3JlYXRlCiB9CiAKIFZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yKENNVmlk
ZW9Db2RlY1R5cGUgb3V0cHV0Q29kZWNUeXBlKQotICAgIDogbV9zZXJpYWxEaXNwYXRjaFF1ZXVl
IHsgYWRvcHRPU09iamVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5WaWRlb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSB9CisgICAgOiBt
X3NlcmlhbERpc3BhdGNoUXVldWUgeyBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLlZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3NvciIpIH0KICAgICAsIG1fb3V0cHV0Q29kZWNUeXBlIHsgb3V0
cHV0Q29kZWNUeXBlIH0KIHsKIH0KQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBWaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3I6OnNldEJpdHNQZXJTZWNvbmQodW5zaWduZWQgYml0UmF0ZSkKIAogdm9p
ZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmZpbmlzaCgpCiB7Ci0gICAgZGlzcGF0Y2hf
c3luYyhtX3NlcmlhbERpc3BhdGNoUXVldWUuZ2V0KCksIF57CisgICAgbV9zZXJpYWxEaXNwYXRj
aFF1ZXVlLT5kaXNwYXRjaFN5bmMoW3RoaXNdIHsKICAgICAgICAgYXV0byBlcnJvciA9IFZUQ29t
cHJlc3Npb25TZXNzaW9uQ29tcGxldGVGcmFtZXMobV92dFNlc3Npb24uZ2V0KCksIGtDTVRpbWVJ
bnZhbGlkKTsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoZXJyb3IsIE1lZGlhU3RyZWFt
LCAiVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yIFZUQ29tcHJlc3Npb25TZXNzaW9uQ29tcGxl
dGVGcmFtZXMgZmFpbGVkIHdpdGggJWQiLCBlcnJvcik7CiAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2
b2lkIFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvY2Vzc1NhbXBsZUJ1ZmZlcihDTVNh
bXBsZUJ1ZmZlclJlZiBidWZmZXIpCiAKIHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjphZGRTYW1wbGVCdWZmZXIoQ01TYW1wbGVCdWZmZXJSZWYgYnVmZmVyKQogewotICAgIGRpc3Bh
dGNoX3N5bmMobV9zZXJpYWxEaXNwYXRjaFF1ZXVlLmdldCgpLCBeeworICAgIG1fc2VyaWFsRGlz
cGF0Y2hRdWV1ZS0+ZGlzcGF0Y2hTeW5jKFt0aGlzLCBidWZmZXJdIHsKICAgICAgICAgaWYgKCFt
X2lzRW5jb2RpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZB
dWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5oCmluZGV4IGY4NjE5ZjZhMTkxOGFmMDYw
ZTJhMDVlMDYzMTgyZjU0ZTg2YTIwZmEuLjI2MTYwODA0ZjdjNWE3ZmZjNmQ2MTUzNGExM2U4NTNi
ZTVhNTg4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZU1hbmFnZXIuaApAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1ZGUg
PHd0Zi9PU09iamVjdFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvV29ya1F1ZXVlLmg+CiAKIE9CSkNfQ0xBU1MgQVZBdWRpb1Nlc3Npb247CiBPQkpDX0NM
QVNTIFdlYkFWQXVkaW9TZXNzaW9uQXZhaWxhYmxlSW5wdXRzTGlzdGVuZXI7CkBAIC03OCw4ICs3
OCw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdlYkFWQXVkaW9TZXNzaW9uQXZhaWxhYmxl
SW5wdXRzTGlzdGVuZXI+IG1fbGlzdGVuZXI7CiAgICAgUmV0YWluUHRyPEFWQXVkaW9TZXNzaW9u
PiBtX2F1ZGlvU2Vzc2lvbjsKICAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiBtX3VwZGF0ZURl
dmljZVN0YXRlUXVldWU7Ci0gICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfcXVldWVfdD4gbV9kaXNw
YXRjaFF1ZXVlOwotICAgIExvY2sgbV9sb2NrOworICAgIFJlZjxXb3JrUXVldWU+IG1fZGlzcGF0
Y2hRdWV1ZTsKICAgICBBdWRpb1Nlc3Npb25TdGF0ZSBtX2F1ZGlvU2Vzc2lvblN0YXRlIHsgQXVk
aW9TZXNzaW9uU3RhdGU6Ok5vdE5lZWRlZCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZB
dWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCBlZjliZTEwNmJiZDRlYTE2
ODQ0ZWU3MDljNjBhMjU4Y2M2MmNlYjA4Li4yYmVkYWZmMGNhMjBiMTE2ZTE1NmJlZTBiODJiYTEz
YzE5YzBkMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlci5tbQpAQCAtODcsMTcgKzg3LDE1IEBAIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXImIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OnNpbmdsZXRv
CiB9CiAKIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OkFWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZU1hbmFnZXIoKQotICAgIDogbV9kaXNwYXRjaFF1ZXVlKGFkb3B0T1NPYmpl
Y3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkFWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZU1hbmFnZXIiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKSkKKyAgICA6IG1f
ZGlzcGF0Y2hRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5BVkF1ZGlv
U2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyIikpCiB7Ci0gICAgZGlzcGF0Y2hfYXN5bmMobV9k
aXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXMsIGxvY2tlciA9IGhvbGRMb2Nr
KG1fbG9jayldIHsKKyAgICBtX2Rpc3BhdGNoUXVldWUtPmRpc3BhdGNoKFt0aGlzXSB7CiAgICAg
ICAgIGNyZWF0ZUF1ZGlvU2Vzc2lvbigpOwotICAgIH0pLmdldCgpKTsKKyAgICB9KTsKIH0KIAog
dm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjcmVhdGVBdWRpb1Nlc3Np
b24oKQogewotICAgIEFTU0VSVChtX2xvY2suaXNMb2NrZWQoKSk7Ci0KICNpZiAhUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCiAgICAgbV9hdWRpb1Nlc3Npb24gPSBhZG9wdE5TKFtbUEFMOjpnZXRBVkF1
ZGlvU2Vzc2lvbkNsYXNzKCkgYWxsb2NdIGluaXRBdXhpbGlhcnlTZXNzaW9uXSk7CiAjZWxzZQpA
QCAtMTU2LDE1ICsxNTQsMTUgQEAgdm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5h
Z2VyOjpyZWZyZXNoQXVkaW9DYXB0dXJlRGV2aWNlcygpCiAgICAgaWYgKG1fYXVkaW9TZXNzaW9u
U3RhdGUgPT0gQXVkaW9TZXNzaW9uU3RhdGU6OkluYWN0aXZlKSB7CiAgICAgICAgIG1fYXVkaW9T
ZXNzaW9uU3RhdGUgPSBBdWRpb1Nlc3Npb25TdGF0ZTo6QWN0aXZlOwogCi0gICAgICAgIGRpc3Bh
dGNoX3N5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKKyAg
ICAgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaFN5bmMoW3RoaXNdIHsKICAgICAgICAgICAg
IGFjdGl2YXRlQXVkaW9TZXNzaW9uKCk7Ci0gICAgICAgIH0pLmdldCgpKTsKKyAgICAgICAgfSk7
CiAgICAgfQogCiAgICAgVmVjdG9yPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4gbmV3QXVk
aW9EZXZpY2VzOwotICAgIGRpc3BhdGNoX3N5bmMobV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtl
QmxvY2tQdHIoWyZdIHsKKyAgICBtX2Rpc3BhdGNoUXVldWUtPmRpc3BhdGNoU3luYyhbJl0gewog
ICAgICAgICBuZXdBdWRpb0RldmljZXMgPSByZXRyaWV2ZUF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZp
Y2VzKCk7Ci0gICAgfSkuZ2V0KCkpOworICAgIH0pOwogICAgIHNldEF1ZGlvQ2FwdHVyZURldmlj
ZXMoV1RGTW92ZShuZXdBdWRpb0RldmljZXMpKTsKIH0KIApAQCAtMTczLDE4ICsxNzEsMTggQEAg
dm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpnZXRDYXB0dXJlRGV2aWNl
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICBpZiAobV9hdWRpb1Nlc3Npb25TdGF0ZSA9PSBB
dWRpb1Nlc3Npb25TdGF0ZTo6SW5hY3RpdmUpIHsKICAgICAgICAgbV9hdWRpb1Nlc3Npb25TdGF0
ZSA9IEF1ZGlvU2Vzc2lvblN0YXRlOjpBY3RpdmU7CiAKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
bV9kaXNwYXRjaFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKKyAgICAgICAgbV9k
aXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChbdGhpc10gewogICAgICAgICAgICAgYWN0aXZhdGVBdWRp
b1Nlc3Npb24oKTsKLSAgICAgICAgfSkuZ2V0KCkpOworICAgICAgICB9KTsKICAgICB9CiAKLSAg
ICBkaXNwYXRjaF9hc3luYyhtX2Rpc3BhdGNoUXVldWUuZ2V0KCksIG1ha2VCbG9ja1B0cihbdGhp
cywgY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildICgpIG11dGFibGUgeworICAgIG1f
ZGlzcGF0Y2hRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIGNvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBs
ZXRpb24pXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBuZXdBdWRpb0RldmljZXMgPSByZXRy
aWV2ZUF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VzKCk7CiAgICAgICAgIGNhbGxPbldlYlRocmVh
ZE9yRGlzcGF0Y2hBc3luY09uTWFpblRocmVhZChtYWtlQmxvY2tQdHIoW3RoaXMsIGNvbXBsZXRp
b24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pLCBuZXdBdWRpb0RldmljZXMgPSBXVEZNb3ZlKG5ld0F1
ZGlvRGV2aWNlcyldICgpIG11dGFibGUgewogICAgICAgICAgICAgc2V0QXVkaW9DYXB0dXJlRGV2
aWNlcyhXVEZNb3ZlKG5ld0F1ZGlvRGV2aWNlcykpOwogICAgICAgICAgICAgY29tcGxldGlvbihj
b3B5VG9WZWN0b3IoKm1fZGV2aWNlcykpOwogICAgICAgICB9KS5nZXQoKSk7Ci0gICAgfSkuZ2V0
KCkpOworICAgIH0pOwogfQogCiB2b2lkIEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXI6OmFjdGl2YXRlQXVkaW9TZXNzaW9uKCkKQEAgLTI1MywxNCArMjUxLDE0IEBAIHZvaWQgQVZB
dWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6ZGlzYWJsZUFsbERldmljZXNRdWVyeSgp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2F1ZGlvU2Vzc2lvblN0YXRlID09IEF1ZGlv
U2Vzc2lvblN0YXRlOjpBY3RpdmUpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMobV9kaXNwYXRj
aFF1ZXVlLmdldCgpLCBtYWtlQmxvY2tQdHIoW3RoaXNdIHsKKyAgICAgICAgbV9kaXNwYXRjaFF1
ZXVlLT5kaXNwYXRjaChbdGhpc10gewogICAgICAgICAgICAgaWYgKG1fYXVkaW9TZXNzaW9uU3Rh
dGUgIT0gQXVkaW9TZXNzaW9uU3RhdGU6Ok5vdE5lZWRlZCkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKICAgICAgICAgICAgIFttX2F1
ZGlvU2Vzc2lvbiBzZXRBY3RpdmU6Tk8gd2l0aE9wdGlvbnM6MCBlcnJvcjomZXJyb3JdOwogICAg
ICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdl
YlJUQywgIkZhaWxlZCB0byBkaXNhY3RpdmF0ZSBhdWRpbyBzZXNzaW9uIHdpdGggZXJyb3I6ICVA
LiIsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKTsKLSAgICAgICAgfSkuZ2V0KCkpOworICAg
ICAgICB9KTsKICAgICB9CiAKICAgICBtX2F1ZGlvU2Vzc2lvblN0YXRlID0gQXVkaW9TZXNzaW9u
U3RhdGU6Ok5vdE5lZWRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
RGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KaW5kZXggNTg3NjA5MDYwOGQ5YWZjODhlMzQxYzVk
ZmY3M2Y1YjMxMGVmYTg5NC4uNDkyYjljNjQ0MmJlMTU0ZDUxZGRmNzY5ZjU5M2U4MDg0ZWIxYmQ2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dz
ZXJDaGVja3MubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJy
b3dzZXJDaGVja3MubW0KQEAgLTMyLDkgKzMyLDkgQEAKICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lv
bkNoZWNrcy5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgotI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVu
TG9vcC5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvV29ya1F1
ZXVlLmg+CiAjaW1wb3J0IDx3dGYvY29jb2EvRW50aXRsZW1lbnRzLmg+CiAjaW1wb3J0IDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTg4LDEyICs4OCwxMSBAQCBzdGF0aWMgYm9vbCBpc0lu
V2ViS2l0Q2hpbGRQcm9jZXNzKCkKIAogZW51bSBjbGFzcyBJVFBTdGF0ZSA6IHVpbnQ4X3Qgewog
ICAgIFVuaW5pdGlhbGl6ZWQsCi0gICAgSW5pdGlhbGl6aW5nLAogICAgIEVuYWJsZWQsCiAgICAg
RGlzYWJsZWQKIH07CiAKLXN0YXRpYyBzdGQ6OmF0b21pYzxJVFBTdGF0ZT4gZ19jdXJyZW50SVRQ
U3RhdGUgPSBJVFBTdGF0ZTo6VW5pbml0aWFsaXplZDsKK3N0YXRpYyBzdGQ6OmF0b21pYzxJVFBT
dGF0ZT4gY3VycmVudElUUFN0YXRlID0gSVRQU3RhdGU6OlVuaW5pdGlhbGl6ZWQ7CiAKIGJvb2wg
aGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNzaW9uKCkKIHsKQEAgLTEyMSwy
NiArMTIwLDIzIEBAIHN0YXRpYyBib29sIGRldGVybWluZUlUUFN0YXRlSW50ZXJuYWwoYm9vbCBh
cHBXYXNMaW5rZWRPbk9yQWZ0ZXIsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gcmVzdWx0ICE9
IGtUQ0NBY2Nlc3NQcmVmbGlnaHREZW5pZWQ7CiB9CiAKLXN0YXRpYyBPU09iamVjdFB0cjxkaXNw
YXRjaF9xdWV1ZV90PiYgaXRwUXVldWUoKQorc3RhdGljIFJlZlB0cjxXb3JrUXVldWU+JiBpdHBR
dWV1ZSgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE9TT2JqZWN0UHRyPGRpc3BhdGNo
X3F1ZXVlX3Q+PiBpdHBRdWV1ZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPFdv
cmtRdWV1ZT4+IGl0cFF1ZXVlOwogICAgIHJldHVybiBpdHBRdWV1ZTsKIH0KIAogdm9pZCBkZXRl
cm1pbmVJVFBTdGF0ZSgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBp
ZiAoZ19jdXJyZW50SVRQU3RhdGUgIT0gSVRQU3RhdGU6OlVuaW5pdGlhbGl6ZWQpCisgICAgaWYg
KGN1cnJlbnRJVFBTdGF0ZSAhPSBJVFBTdGF0ZTo6VW5pbml0aWFsaXplZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZ19jdXJyZW50SVRQU3RhdGUgPSBJVFBTdGF0ZTo6SW5pdGlhbGl6aW5nOwog
ICAgIGJvb2wgYXBwV2FzTGlua2VkT25PckFmdGVyID0gbGlua2VkT25PckFmdGVyKFdlYkNvcmU6
OlNES1ZlcnNpb246OkZpcnN0V2l0aFNlc3Npb25DbGVhbnVwQnlEZWZhdWx0KTsKIAotICAgIGl0
cFF1ZXVlKCkgPSBhZG9wdE9TT2JqZWN0KGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxl
LldlYktpdC5pdHBDaGVja1F1ZXVlIiwgTlVMTCkpOwotCi0gICAgZGlzcGF0Y2hfYXN5bmMoaXRw
UXVldWUoKS5nZXQoKSwgW2FwcFdhc0xpbmtlZE9uT3JBZnRlciwgYnVuZGxlSWRlbnRpZmllciA9
IFdlYkNvcmU6OmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpLmlzb2xhdGVkQ29weSgpXSB7
Ci0gICAgICAgIGdfY3VycmVudElUUFN0YXRlID0gZGV0ZXJtaW5lSVRQU3RhdGVJbnRlcm5hbChh
cHBXYXNMaW5rZWRPbk9yQWZ0ZXIsIGJ1bmRsZUlkZW50aWZpZXIpID8gSVRQU3RhdGU6OkVuYWJs
ZWQgOiBJVFBTdGF0ZTo6RGlzYWJsZWQ7Ci0KKyAgICBpdHBRdWV1ZSgpID0gV29ya1F1ZXVlOjpj
cmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuaXRwQ2hlY2tRdWV1ZSIpOworICAgIGl0cFF1ZXVlKCkt
PmRpc3BhdGNoKFthcHBXYXNMaW5rZWRPbk9yQWZ0ZXIsIGJ1bmRsZUlkZW50aWZpZXIgPSBXZWJD
b3JlOjphcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoKS5pc29sYXRlZENvcHkoKV0geworICAg
ICAgICBjdXJyZW50SVRQU3RhdGUgPSBkZXRlcm1pbmVJVFBTdGF0ZUludGVybmFsKGFwcFdhc0xp
bmtlZE9uT3JBZnRlciwgYnVuZGxlSWRlbnRpZmllcikgPyBJVFBTdGF0ZTo6RW5hYmxlZCA6IElU
UFN0YXRlOjpEaXNhYmxlZDsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsK
ICAgICAgICAgICAgIGl0cFF1ZXVlKCkgPSBudWxscHRyOwogICAgICAgICB9KTsKQEAgLTE1MSwx
NiArMTQ3LDExIEBAIGJvb2wgZG9lc0FwcEhhdmVJVFBFbmFibGVkKCkKIHsKICAgICBBU1NFUlQo
IWlzSW5XZWJLaXRDaGlsZFByb2Nlc3MoKSk7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKLSAgICBpZiAoZ19jdXJyZW50SVRQU3RhdGUgPiBJVFBTdGF0ZTo6SW5pdGlhbGl6aW5nKQot
ICAgICAgICByZXR1cm4gZ19jdXJyZW50SVRQU3RhdGUgPT0gSVRQU3RhdGU6OkVuYWJsZWQ7Ci0K
LSAgICBSRUxFQVNFX0FTU0VSVChpdHBRdWV1ZSgpKTsKLQotICAgIF9fYmxvY2sgYm9vbCBpc0lU
UEVuYWJsZWQ7Ci0gICAgZGlzcGF0Y2hfc3luYyhpdHBRdWV1ZSgpLmdldCgpLCBeewotICAgICAg
ICBpc0lUUEVuYWJsZWQgPSBnX2N1cnJlbnRJVFBTdGF0ZSA9PSBJVFBTdGF0ZTo6RW5hYmxlZDsK
LSAgICB9KTsKLSAgICByZXR1cm4gaXNJVFBFbmFibGVkOworICAgIC8vIElmIHdlJ3JlIHN0aWxs
IGNvbXB1dGluZyB0aGUgSVRQIHN0YXRlIG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCwgdGhlbiBz
eW5jaHJvbml6ZSB3aXRoIGl0LgorICAgIGlmIChpdHBRdWV1ZSgpKQorICAgICAgICBpdHBRdWV1
ZSgpLT5kaXNwYXRjaFN5bmMoW10geyB9KTsKKyAgICBBU1NFUlQoY3VycmVudElUUFN0YXRlICE9
IElUUFN0YXRlOjpVbmluaXRpYWxpemVkKTsKKyAgICByZXR1cm4gY3VycmVudElUUFN0YXRlID09
IElUUFN0YXRlOjpFbmFibGVkOwogfQogCiBib29sIGRvZXNQYXJlbnRQcm9jZXNzSGF2ZUlUUEVu
YWJsZWQoT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgYm9vbCBoYXNSZXF1ZXN0
ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb25WYWx1ZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>