<?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>232375</bug_id>
          
          <creation_ts>2021-10-27 05:43:48 -0700</creation_ts>
          <short_desc>Ensure synchronized rendering of incoming audio tracks</short_desc>
          <delta_ts>2021-11-07 23:45:45 -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>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1809231</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-27 05:43:48 -0700</bug_when>
    <thetext>Ensure synchronized rendering of incoming audio tracks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809598</commentid>
    <comment_count>1</comment_count>
      <attachid>442682</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-28 00:28:44 -0700</bug_when>
    <thetext>Created attachment 442682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809603</commentid>
    <comment_count>2</comment_count>
      <attachid>442683</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-28 01:28:55 -0700</bug_when>
    <thetext>Created attachment 442683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809638</commentid>
    <comment_count>3</comment_count>
      <attachid>442694</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-28 05:31:35 -0700</bug_when>
    <thetext>Created attachment 442694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809651</commentid>
    <comment_count>4</comment_count>
      <attachid>442703</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-28 06:52:58 -0700</bug_when>
    <thetext>Created attachment 442703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809795</commentid>
    <comment_count>5</comment_count>
      <attachid>442703</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-10-28 13:08:19 -0700</bug_when>
    <thetext>Comment on attachment 442703
Patch

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

r=me once the bots are happy

&gt; Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCAudioModule.cpp:146
&gt; +        if (m_isRenderingIncomingAudio)
&gt; +            m_incomingAudioMediaStreamTrackRendererUnit-&gt;newAudioChunkPushed();
&gt; +        m_currentAudioSampleCount += LibWebRTCAudioFormat::chunkSampleCount;

Is it correct to update m_currentAudioSampleCount after calling `newAudioChunkPushed`? In either case, it might be clearer to pass sample count to `newAudioChunkPushed()` rather than having it query the module.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810047</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-29 05:47:02 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #5)
&gt; Comment on attachment 442703 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=442703&amp;action=review
&gt; 
&gt; r=me once the bots are happy

Issue was with resetting the audio model when resetting the factory.

&gt; &gt; Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCAudioModule.cpp:146
&gt; &gt; +        if (m_isRenderingIncomingAudio)
&gt; &gt; +            m_incomingAudioMediaStreamTrackRendererUnit-&gt;newAudioChunkPushed();
&gt; &gt; +        m_currentAudioSampleCount += LibWebRTCAudioFormat::chunkSampleCount;
&gt; 
&gt; Is it correct to update m_currentAudioSampleCount after calling
&gt; `newAudioChunkPushed`? In either case, it might be clearer to pass sample
&gt; count to `newAudioChunkPushed()` rather than having it query the module.

Right, passing the sample count to newAudioChunkPushed is a good idea.
As of the order, I think it makes sense this way, we start calling newAudioChunkPushed with count = 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810048</commentid>
    <comment_count>7</comment_count>
      <attachid>442810</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-29 05:47:41 -0700</bug_when>
    <thetext>Created attachment 442810
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810053</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-29 06:36:12 -0700</bug_when>
    <thetext>Committed r285027 (243671@main): &lt;https://commits.webkit.org/243671@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442810.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810054</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-29 06:37:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/84806583&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812541</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-07 23:45:45 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #6)
&gt; (In reply to Eric Carlson from comment #5)
&gt; &gt; Comment on attachment 442703 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=442703&amp;action=review
&gt; &gt; 
&gt; &gt; r=me once the bots are happy
&gt; 
&gt; Issue was with resetting the audio model when resetting the factory.
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCAudioModule.cpp:146
&gt; &gt; &gt; +        if (m_isRenderingIncomingAudio)
&gt; &gt; &gt; +            m_incomingAudioMediaStreamTrackRendererUnit-&gt;newAudioChunkPushed();
&gt; &gt; &gt; +        m_currentAudioSampleCount += LibWebRTCAudioFormat::chunkSampleCount;
&gt; &gt; 
&gt; &gt; Is it correct to update m_currentAudioSampleCount after calling
&gt; &gt; `newAudioChunkPushed`? In either case, it might be clearer to pass sample
&gt; &gt; count to `newAudioChunkPushed()` rather than having it query the module.
&gt; 
&gt; Right, passing the sample count to newAudioChunkPushed is a good idea.
&gt; As of the order, I think it makes sense this way, we start calling
&gt; newAudioChunkPushed with count = 0.

I forgot to update newAudioChunkPushed, will do this as a follow-up</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442682</attachid>
            <date>2021-10-28 00:28:44 -0700</date>
            <delta_ts>2021-10-28 01:28:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232375-20211028092842.patch</filename>
            <type>text/plain</type>
            <size>55040</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGUyYzkwNjQyZGRlMGFl
OWFkYmRhNjc5MzFlNmM4OTM4M2FjODU0YS4uNmFlMDM5MmJhMjJkZmExZTBlMzg4YWUzNWQ1MTVj
YzBkM2RlNGI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTEwLTI3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFbnN1cmUgc3luY2hyb25p
emVkIHJlbmRlcmluZyBvZiBpbmNvbWluZyBhdWRpbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjM3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYlJUQyBpbmNvbWluZyBhdWRpbyB0cmFj
a3MgYXJlIGd1YXJhbnRlZWQgdG8gYmUgc3luY2hyb25pemVkIGJhc2VkIG9uIHRoZSBhdWRpbyBt
b2R1bGUgY2xvY2suCisgICAgICAgIFByZXZpb3VzbHksIHdlIHdlcmUgbWl4aW5nIGFsbCBhdWRp
byB0cmFja3MgdG9nZXRoZXIsIGJ1dCB3ZSB3ZXJlIG5vdCBoYW5kbGluZyBzeW5jaHJvbml6YXRp
b24gb2YgdHJhY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBjbG9jay4KKyAgICAgICAgVGhpcyBjYW4g
Y2F1c2Ugc29tZSBsb3dlciBxdWFsaXR5IGF1ZGlvIHJlbmRlcmluZy4KKyAgICAgICAgVG8gcHJl
dmVudCB0aGlzLCBhbGwgV2ViUlRDIGluY29taW5nIGF1ZGlvIHRyYWNrcyBhcmUgbm93IG1peGVk
IHRvZ2V0aGVyIGluIGEgc2luZ2xlIHRyYWNrIHRoYXQgaXMgdGhlbiBtaXhlZCB3aXRoIGFsbCBv
dGhlciBub24gc3luY2hyb25pemVkIHRyYWNrcy4KKyAgICAgICAgVG8gZG8gc28gd2UgaW50cm9k
dWNlIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IHdoaWNoIHdpbGwg
cmVjZWl2ZSBhbGwgaW5jb21pbmcgYXVkaW8gdHJhY2tzLgorICAgICAgICBJdCB0aGVuIHNlbmRz
IHRoZSBtaXggdG8gdGhlIGFjdHVhbCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQu
CisgICAgICAgIFRvIGVuc3VyZSB0aWdodCBzeW5jaHJvbml6YXRpb24sIHdlIGludHJvZHVjZSBB
dWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxBdmFpbGFibGVTYW1wbGVDaHVuayB3aGljaCByZWFk
cyBkYXRhIHVzaW5nIHRoZSBwcm92aWRlZCB0aW1lc3RhbXAgcmVsYXRpdmUgdG8gdGhlIGlucHV0
IG9mZnNldC4KKyAgICAgICAgV2UgZG8gYSByZWZhY3RvcmluZyB0byBtYWtlIGl0IGVhc3kgdG8g
ZWl0aGVyIHVzZSBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCBvciBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQgYnkgaGF2aW5nIGEgYmFzZSBjbGFzcyBj
YWxsZWQgQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC4KKworICAgICAgICBN
YW51YWxseSB0ZXN0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRh
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRh
U291cmNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJDb2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Jhc2VBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlclVuaXQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y29jb2EvSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb01vZHVsZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcDoKKwogMjAyMS0xMC0yNiAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgT25seSBvbmUgQXVkaW9TYW1wbGVEYXRh
U291cmNlOjpwdWxsU2FtcGxlcyBpcyBuZWVkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDM2YzhiNTBkNDAxNTY3MWMy
MzdlMzA2ZDljMzIzZjA5YWUxNmQ5OGYuLmJiYThjNWFhZTExMWIwOGQ3NzhhMDdlZGZiMGE5ZDY2
MTRkYjk5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmNwcApAQCAtMjksOCArMjksMTAgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiSWNlQ2FuZGlkYXRlLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9N
b2R1bGUuaCIKICNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNs
dWRlICJMaWJXZWJSVENNZWRpYUVuZHBvaW50LmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlk
ZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCIKICNpbmNsdWRl
ICJMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kLmgiCkBAIC0yOTMsNyArMjk1LDggQEAgUmVmPFJUQ1J0cFJlY2VpdmVy
PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyKHN0ZDo6dW5p
cXVlX3AKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9wZWVy
Q29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogCi0gICAgYXV0byBzb3VyY2Ug
PSBiYWNrZW5kLT5jcmVhdGVTb3VyY2UoKTsKKyAgICBhdXRvIHNvdXJjZSA9IGJhY2tlbmQtPmNy
ZWF0ZVNvdXJjZShkb2N1bWVudCk7CisKICAgICAvLyBSZW1vdGUgc291cmNlIGlzIGluaXRpYWxs
eSBtdXRlZCBhbmQgd2lsbCBiZSB1bm11dGVkIHdoZW4gcmVjZWl2aW5nIHRoZSBmaXJzdCBwYWNr
ZXQuCiAgICAgc291cmNlLT5zZXRNdXRlZCh0cnVlKTsKICAgICBhdXRvIHRyYWNrSUQgPSBzb3Vy
Y2UtPnBlcnNpc3RlbnRJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJl
Y2VpdmVyQmFja2VuZC5jcHAKaW5kZXggY2NhOTcwNGI1NjZjMzRlYWEwZGZmMGNjOThkZmZhODNh
NmU2NzQ1OC4uODBkNzhhMTM2OWIxMmIzODJlNGYzMGEwZGUzY2NkNTJiYjk1YWVjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwCkBAIC0y
NSw5ICsyNSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1J0
cFJlY2VpdmVyQmFja2VuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJM
aWJXZWJSVENBdWRpb01vZHVsZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0R0bHNUcmFuc3BvcnRC
YWNrZW5kLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJMaWJX
ZWJSVENSdHBSZWNlaXZlclRyYW5zZm9ybUJhY2tlbmQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENV
dGlscy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgiCiAjaW5jbHVk
ZSAiUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgiCkBAIC05OSw3ICsxMDMsNyBAQCBWZWN0
b3I8UlRDUnRwU3luY2hyb25pemF0aW9uU291cmNlPiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tl
bmQ6OmdldFN5bmNocm9uaXphdAogICAgIHJldHVybiBzb3VyY2VzOwogfQogCi1SZWY8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTb3VyY2Uo
KQorUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZDo6
Y3JlYXRlU291cmNlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvIHJ0Y1RyYWNrID0g
bV9ydGNSZWNlaXZlci0+dHJhY2soKTsKICAgICBzd2l0Y2ggKG1fcnRjUmVjZWl2ZXItPm1lZGlh
X3R5cGUoKSkgewpAQCAtMTA4LDcgKzExMiwxMCBAQCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4g
TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTb3VyY2UoKQogICAgICAgICBicmVh
azsKICAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU86IHsKICAgICAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4gYXVkaW9UcmFjayA9IHN0
YXRpY19jYXN0PHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZSo+KHJ0Y1RyYWNrLmdldCgpKTsK
LSAgICAgICAgcmV0dXJuIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKFdURk1v
dmUoYXVkaW9UcmFjayksIGZyb21TdGRTdHJpbmcocnRjVHJhY2stPmlkKCkpKTsKKyAgICAgICAg
YXV0byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShXVEZNb3Zl
KGF1ZGlvVHJhY2spLCBmcm9tU3RkU3RyaW5nKHJ0Y1RyYWNrLT5pZCgpKSk7CisgICAgICAgIGlm
IChkb2N1bWVudC5wYWdlKCkpCisgICAgICAgICAgICBzb3VyY2UtPnNldEF1ZGlvTW9kdWxlKGRv
Y3VtZW50LnBhZ2UoKS0+bGliV2ViUlRDUHJvdmlkZXIoKS5hdWRpb01vZHVsZSgpKTsKKyAgICAg
ICAgcmV0dXJuIHNvdXJjZTsKICAgICB9CiAgICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJ
REVPOiB7CiAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRl
cmZhY2U+IHZpZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZh
Y2UqPihydGNUcmFjay5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJl
Y2VpdmVyQmFja2VuZC5oCmluZGV4IGZmZGEwNWQxMzJlNDFjMzBiNjA1OWZjNTBhYzBjMWFmMjE5
YTY3OTUuLjAxZjNkYzc0MmFkYTcxNGI4OTE5ZDlmNGIzZjJkZDg3MzUwZmRmZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1J0cFJlY2VpdmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oCkBAIC0zNSw3ICsz
NSw3IEBAIGNsYXNzIFJ0cFJlY2VpdmVySW50ZXJmYWNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KK2NsYXNzIERvY3VtZW50OwogY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZTsKIAogY2xh
c3MgTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kIGZpbmFsIDogcHVibGljIFJUQ1J0cFJlY2Vp
dmVyQmFja2VuZCB7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIHdlYnJ0Yzo6UnRw
UmVjZWl2ZXJJbnRlcmZhY2UqIHJ0Y1JlY2VpdmVyKCkgeyByZXR1cm4gbV9ydGNSZWNlaXZlci5n
ZXQoKTsgfQogCi0gICAgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGNyZWF0ZVNvdXJjZSgpOwor
ICAgIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBjcmVhdGVTb3VyY2UoRG9jdW1lbnQmKTsKIAog
cHJpdmF0ZToKICAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDkwNmMyOTk4NDVkYjAzZjc3MzhlNTgxODUwZDRkMGM0
YWU5YTMwYzYuLjM2MjcyZmZiZTQ3YTFjNmQyYTA2NjQ0NGVhNWYyYzYxMmQ3Y2EwYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dApAQCAtNTI2LDYgKzUyNiw3IEBAIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdC5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdC5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2EuY3BwCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFt
L2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UubW0KIHBsYXRmb3JtL21lZGlhc3RyZWFt
L2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vaW9zL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBm
YjcyMzJkMmIyZTljNDQ2MDU4ZWVjNjRjYTMwNTMwNzdiMDBiYzFhLi4yMjdlNTI4ZWEyNDNlMGQy
OGY1MThhYmNhYTkxMTA1MWIxODI1Yzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTgwLDYgKzExODAsNyBAQAogCQk0MTg2
QkQzRjIxM0VFMzQzMDAwMTgyNkYgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQxQTA0QjIxM0VE
REZFMDA2M0ZCNkIgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgKi87IH07CiAJCTQx
ODZCRDQwMjEzRUUzNDUwMDAxODI2RiAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMUEwNEEy
MTNFRERGRTAwNjNGQjZCIC8qIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAgKi87IH07
CiAJCTQxODZCRDRFMjE0MEI5RTgwMDAxODI2RiAvKiBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJh
Y2tlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE4NkJENEQyMTQwQjlFODAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2Vu
ZC5jcHAgKi87IH07CisJCTQxODc4RkFEMjcyOTQ3MjEwMDJFMUVERCAvKiBCYXNlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTg3OEZBODI3MjgyMDU1MDAyRTFFREQgLyogQmFzZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxODg1QjkzMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3Vi
bWlzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE4ODVCOTExMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4OEQ1NUMyNkM1NEQ2RjAw
NDg1OEM4IC8qIFJUQ0R0bHNUcmFuc3BvcnRCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg4RDU1QTI2QzU0RDZGMDA0ODU4QzggLyogUlRD
RHRsc1RyYW5zcG9ydEJhY2tlbmQuaCAqLzsgfTsKIAkJNDE4OEQ1NjMyNkM1NTFCMTAwNDg1OEM4
IC8qIFJUQ0R0bHNUcmFuc3BvcnRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE4OEQ1NjIyNkM1NTFCMTAwNDg1OEM4IC8qIFJUQ0R0bHNUcmFu
c3BvcnRTdGF0ZS5oICovOyB9OwpAQCAtODE1Myw2ICs4MTU0LDkgQEAKIAkJNDE4NkJENDYyMTQw
NzJCNjAwMDE4MjZGIC8qIFJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4NkJENEIyMTQwQTgwNTAwMDE4MjZGIC8qIExpYldlYlJU
Q1J0cFRyYW5zY2VpdmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE4NkJENEQyMTQwQjlFODAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFj
a2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMaWJXZWJSVENS
dHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1J0cFRy
YW5zY2VpdmVyQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODc4
RkE4MjcyODIwNTUwMDJFMUVERCAvKiBCYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4NzhGQUEyNzI4MjA1NzAwMkUx
RUREIC8qIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODc4RkFCMjcyOTM0RTYwMDJFMUVERCAvKiBJ
bmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyVW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODgwN0RGMjRF
NDU1ODMwMEREQUY5NCAvKiBBYm9ydEFsZ29yaXRobS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWJvcnRBbGdvcml0aG0u
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg4MDdFMTI0RTQ1OEMzMDBEREFG
OTQgLyogQWJvcnRBbGdvcml0aG0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJvcnRBbGdvcml0aG0uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4ODVCOTExMUI2RkRBNjAwMzM4M0JCIC8q
IEZvcm1TdWJtaXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1T
dWJtaXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDE1Miw4ICsyMDE1
NiwxMSBAQAogCQkJCTQxQzNCODlGMjY0OUIxQjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oICovLAogCQkJCTQxQzNCOEEwMjY0OUIxQjcwMDRF
RDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwICovLAogCQkJCTQx
QzNCODlCMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQuaCAqLywKKwkJCQk0MTg3OEZBODI3MjgyMDU1MDAyRTFFREQgLyogQmFzZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oICovLAogCQkJCTA3QkIxRTZFMjcxNzZDQ0EwMDFERjI4
OSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcCAqLywKIAkJCQkwN0JCMUU2RjI3MTc2
Q0NBMDAxREYyODkgLyogRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oICovLAorCQkJCTQxODc4
RkFCMjcyOTM0RTYwMDJFMUVERCAvKiBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyVW5pdC5jcHAgKi8sCisJCQkJNDE4NzhGQUEyNzI4MjA1NzAwMkUxRUREIC8qIEluY29taW5n
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxODg5LDYgKzMxODk2LDcg
QEAKIAkJCQlCQzEyNEVFODBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDYwQkI2MTYxRDBBMUJGMDAwMjIxODEyIC8qIEJhc2U2NFV0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODMxOThGQkYyNEExNjBERDAwNDIwQjA1IC8qIEJhc2VBdWRpb0Nv
bnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxODc4RkFEMjcyOTQ3MjEwMDJFMUVERCAvKiBC
YXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTJERUYxRjIzQTkxOEEzMDBEODQwRjYgLyogQmFzZUF1ZGlvU2hhcmVkVW5pdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzc5RTYxQ0ExMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VCdXR0b25JbnB1
dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUU2MUNDMTI2Q0E1QzQwMEI2M0U4RCAvKiBC
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggZjdkNGU3YWZiODc2NDZhZWU2NjJkNTdlZmY4MjgzY2Q3
YjdjNzc1Yi4uNTE3Y2RiMGE0OWUzZmM2ODQ2MjQyOTBmZTk1ZWRkYjAzMzBjMTJkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNs
dWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvTW9k
dWxlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJNZWRpYVJl
Y29yZGVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcm92aWRlci5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVE
YXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1Nh
bXBsZURhdGFTb3VyY2UuaAppbmRleCA5OWJkMzg2ZmUzNTY1M2M1ZDNlYjM3Y2Q3Y2Y1ZmYwMzNi
NjY4YWNlLi44NmZiMjgxZWRlNTI1MWUwYTJhMjFjMGQ0MjcxYjQ1MWUzZmEzZTcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1Nh
bXBsZURhdGFTb3VyY2UuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwdWxs
U2FtcGxlcyhBdWRpb0J1ZmZlckxpc3QmLCBzaXplX3QsIHVpbnQ2NF90LCBkb3VibGUsIFB1bGxN
b2RlKTsKIAogICAgIGJvb2wgcHVsbEF2YWlsYWJsZVNhbXBsZXNBc0NodW5rcyhBdWRpb0J1ZmZl
ckxpc3QmLCBzaXplX3QgZnJhbWVDb3VudCwgdWludDY0X3QgdGltZVN0YW1wLCBGdW5jdGlvbjx2
b2lkKCk+JiYpOworICAgIHZvaWQgcHVsbEF2YWlsYWJsZVNhbXBsZUNodW5rKEF1ZGlvQnVmZmVy
TGlzdCYsIHNpemVfdCBmcmFtZUNvdW50LCB1aW50NjRfdCB0aW1lU3RhbXAsIFB1bGxNb2RlKTsK
IAogICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkgeyBtX3ZvbHVtZSA9IHZvbHVtZTsg
fQogICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9CkBAIC02OSw2
ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRl
ZDsgfQogCiAgICAgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKiBpbnB1dERlc2NyaXB0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbnB1dERlc2NyaXB0aW9uID8gJm1faW5wdXREZXNjcmlw
dGlvbi52YWx1ZSgpIDogbnVsbHB0cjsgfQorICAgIGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiogb3V0cHV0RGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX291dHB1dERlc2NyaXB0
aW9uID8gJm1fb3V0cHV0RGVzY3JpcHRpb24udmFsdWUoKSA6IG51bGxwdHI7IH0KIAogICAgIHZv
aWQgcmVjb21wdXRlU2FtcGxlT2Zmc2V0KCkgeyBtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVP
ZmZzZXQgPSB0cnVlOyB9CiAKQEAgLTg2LDYgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBPU1N0YXR1
cyBzZXR1cENvbnZlcnRlcigpOwogCiAgICAgdm9pZCBwdXNoU2FtcGxlc0ludGVybmFsKGNvbnN0
IEF1ZGlvQnVmZmVyTGlzdCYsIGNvbnN0IE1lZGlhVGltZSYsIHNpemVfdCBmcmFtZUNvdW50KTsK
KyAgICBib29sIHB1bGxTYW1wbGVzSW50ZXJuYWwoQXVkaW9CdWZmZXJMaXN0Jiwgc2l6ZV90IHNh
bXBsZUNvdW50LCB1aW50NjRfdCB0aW1lU3RhbXAsIFB1bGxNb2RlKTsKIAogICAgIHN0ZDo6b3B0
aW9uYWw8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPiBtX2lucHV0RGVzY3JpcHRpb247CiAgICAg
c3RkOjpvcHRpb25hbDxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0RGVzY3JpcHRp
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b1NhbXBsZURhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KaW5kZXggMDVhODNkNzIwOTE2MTE3YTA0Y2ZkMjhm
MjA4ZGNiYmUzZDAyZmZmNy4uM2E3NWU1ZDM1OGVlMDQ2ODI1YjM4ZTkyMmVkYjA5N2NjY2U0NTg2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9T
YW1wbGVEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQpAQCAtMjg2LDYgKzI4NiwxMSBAQCBib29sIEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXMoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIs
IHNpemVfdCBzYW1wbGVDbwogCiAgICAgbV9pc0ZpcnN0UHVsbCA9IGZhbHNlOwogCisgICAgcmV0
dXJuIHB1bGxTYW1wbGVzSW50ZXJuYWwoYnVmZmVyLCBzYW1wbGVDb3VudCwgdGltZVN0YW1wLCBt
b2RlKTsKK30KKworYm9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxTYW1wbGVzSW50ZXJu
YWwoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIsIHNpemVfdCBzYW1wbGVDb3VudCwgdWludDY0X3Qg
dGltZVN0YW1wLCBQdWxsTW9kZSBtb2RlKQorewogICAgIGlmIChtb2RlID09IENvcHkpIHsKICAg
ICAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaCgmYnVmZmVyLCBzYW1wbGVDb3VudCwgdGltZVN0YW1w
LCBDQVJpbmdCdWZmZXI6OkNvcHkpOwogICAgICAgICBpZiAobV92b2x1bWUgPCBFcXVpdmFsZW50
VG9NYXhWb2x1bWUpCkBAIC0zMDksNiArMzE0LDI1IEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpwdWxsU2FtcGxlcyhBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNv
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxs
QXZhaWxhYmxlU2FtcGxlQ2h1bmsoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIsIHNpemVfdCBzYW1w
bGVDb3VudCwgdWludDY0X3QgdGltZVN0YW1wLCBQdWxsTW9kZSBtb2RlKQoreworICAgIEFTU0VS
VChidWZmZXIubU51bWJlckJ1ZmZlcnMgPT0gbV9yaW5nQnVmZmVyLT5jaGFubmVsQ291bnQoKSk7
CisgICAgaWYgKGJ1ZmZlci5tTnVtYmVyQnVmZmVycyAhPSBtX3JpbmdCdWZmZXItPmNoYW5uZWxD
b3VudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9tdXRlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9mZnNldCkgeworICAg
ICAgICBtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVPZmZzZXQgPSBmYWxzZTsKKyAgICAgICAg
bV9vdXRwdXRTYW1wbGVPZmZzZXQgPSBtX2lucHV0U2FtcGxlT2Zmc2V0LnRpbWVWYWx1ZSgpICog
bV9vdXRwdXREZXNjcmlwdGlvbi0+c2FtcGxlUmF0ZSgpIC8gbV9pbnB1dFNhbXBsZU9mZnNldC50
aW1lU2NhbGUoKTsKKyAgICB9CisKKyAgICB0aW1lU3RhbXAgKz0gbV9vdXRwdXRTYW1wbGVPZmZz
ZXQ7CisKKyAgICBwdWxsU2FtcGxlc0ludGVybmFsKGJ1ZmZlciwgc2FtcGxlQ291bnQsIHRpbWVT
dGFtcCwgbW9kZSk7Cit9CisKIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsQXZhaWxh
YmxlU2FtcGxlc0FzQ2h1bmtzKEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyLCBzaXplX3Qgc2FtcGxl
Q291bnRQZXJDaHVuaywgdWludDY0X3QgdGltZVN0YW1wLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29u
c3VtZUZpbGxlZEJ1ZmZlcikKIHsKICAgICBBU1NFUlQoYnVmZmVyLm1OdW1iZXJCdWZmZXJzID09
IG1fcmluZ0J1ZmZlci0+Y2hhbm5lbENvdW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIuY3BwCmluZGV4IGU1OGFjZTYzODllYjJlYmZjYjJmNWQ0NGY0MzE4MmQ2YzBi
NTU2NzEuLjRkNzk4YWUxMWM4ODQ5MTRiZTU2MDZkODkzMmJmMDA5MGIwYzQxYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKQEAgLTQwLDMxICs0MCwyOCBAQCBj
bGFzcyBNZWRpYVRpbWU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXI6OlJlbmRlcmVyQ3JlYXRvciBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlcjo6bV9yZW5kZXJlckNyZWF0b3IgPSBudWxscHRyOwotdm9pZCBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcjo6c2V0Q3JlYXRvcihSZW5kZXJlckNyZWF0b3IgY3JlYXRvcikKK3N0ZDo6
dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXI6OmNyZWF0ZShJbml0JiYgaW5pdCkKIHsKLSAgICBtX3JlbmRlcmVyQ3Jl
YXRvciA9IGNyZWF0b3I7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlcj4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmNyZWF0ZSgpCi17Ci0g
ICAgaWYgKG1fcmVuZGVyZXJDcmVhdG9yKQotICAgICAgICByZXR1cm4gbV9yZW5kZXJlckNyZWF0
b3IoKTsKLQogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVybiBtYWtlVW5pcXVlPEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYT4oV1RGTW92ZShpbml0KSk7CiAjZWxz
ZQogICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiB9CiAKK0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyOjpBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcihJbml0JiYgaW5pdCkKKyAg
ICA6IG1fY3Jhc2hDYWxsYmFjayhXVEZNb3ZlKGluaXQuY3Jhc2hDYWxsYmFjaykpCisjaWYgVVNF
KExJQldFQlJUQykKKyAgICAsIG1fYXVkaW9Nb2R1bGUoV1RGTW92ZShpbml0LmF1ZGlvTW9kdWxl
KSkKKyNlbmRpZgogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotdm9pZCBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlcjo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2
b2lkKiBpZGVudGlmaWVyKQorICAgICwgbV9sb2dnZXIoaW5pdC5sb2dnZXIpCisgICAgLCBtX2xv
Z0lkZW50aWZpZXIoaW5pdC5sb2dJZGVudGlmaWVyKQorI2VuZGlmCiB7Ci0gICAgbV9sb2dnZXIg
PSAmbG9nZ2VyOwotICAgIG1fbG9nSWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiB9CiAKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKIFdURkxvZ0NoYW5uZWwmIEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyOjpsb2dDaGFubmVsKCkgY29uc3QKIHsKICAgICByZXR1cm4gTG9nTWVkaWE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaAppbmRleCAwOTcyNzY4ZGVmZWJlYmE4
ZjAyODQ4NTkyMmFkNmIxODExZmNhMzBiLi42ZDhhMWJiOTIyMTI1ZWY4NDMyMGQ4OGU5YzVkYTM5
ZjUwNjRlMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmgKQEAgLTM3
LDEyICszNywyMyBAQCBjbGFzcyBNZWRpYVRpbWU7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CitjbGFzcyBMaWJXZWJSVENBdWRpb01vZHVsZTsK
IGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRhOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlciA6IHB1YmxpYyBMb2dnZXJIZWxwZXIgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+IGNyZWF0ZSgpOworICAgIHN0cnVjdCBJbml0
IHsKKyAgICAgICAgRnVuY3Rpb248dm9pZCgpPiYmIGNyYXNoQ2FsbGJhY2s7CisjaWYgVVNFKExJ
QldFQlJUQykKKyAgICAgICAgUmVmUHRyPExpYldlYlJUQ0F1ZGlvTW9kdWxlPiBhdWRpb01vZHVs
ZTsKKyNlbmRpZgorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICAgICBjb25zdCBMb2dn
ZXImIGxvZ2dlcjsKKyAgICAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcjsKKyNlbmRpZgor
ICAgIH07CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlcj4gY3JlYXRlKEluaXQmJik7CiAgICAgdmlydHVhbCB+QXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CkBAIC01NiwxNiArNjcsOSBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJik7CiAK
LSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dn
ZXImLCBjb25zdCB2b2lkKik7Ci0jZW5kaWYKLQotICAgIHVzaW5nIFJlbmRlcmVyQ3JlYXRvciA9
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gKCopKCk7Ci0g
ICAgc3RhdGljIHZvaWQgc2V0Q3JlYXRvcihSZW5kZXJlckNyZWF0b3IpOwotCi0gICAgdm9pZCBz
ZXRDcmFzaENhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykgeyBtX2NyYXNoQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQotCiBwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQg
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIoSW5pdCYmKTsKKwogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWw7CiAgICAg
Y29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwpAQCAtNzQsMTcgKzc4LDIz
IEBAIHByb3RlY3RlZDoKICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmlu
YWw7CiAjZW5kaWYKIAorI2lmIFVTRShMSUJXRUJSVEMpCisgICAgTGliV2ViUlRDQXVkaW9Nb2R1
bGUqIGF1ZGlvTW9kdWxlKCk7CisjZW5kaWYKKwogICAgIHZvaWQgY3Jhc2hlZCgpOwogCiBwcml2
YXRlOgotICAgIHN0YXRpYyBSZW5kZXJlckNyZWF0b3IgbV9yZW5kZXJlckNyZWF0b3I7Ci0KICAg
ICAvLyBNYWluIHRocmVhZCB3cml0YWJsZSBtZW1iZXJzCiAgICAgZmxvYXQgbV92b2x1bWUgeyAx
IH07CiAgICAgRnVuY3Rpb248dm9pZCgpPiBtX2NyYXNoQ2FsbGJhY2s7CiAKKyNpZiBVU0UoTElC
V0VCUlRDKQorICAgIFJlZlB0cjxMaWJXZWJSVENBdWRpb01vZHVsZT4gbV9hdWRpb01vZHVsZTsK
KyNlbmRpZgorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgUmVmUHRyPGNvbnN0IExv
Z2dlcj4gbV9sb2dnZXI7CisgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29u
c3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlmCiB9OwpAQCAtMTA1LDEwICsxMTUsMTcg
QEAgaW5saW5lIHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmNyYXNoZWQoKQog
ICAgICAgICBtX2NyYXNoQ2FsbGJhY2soKTsKIH0KIAorI2lmIFVTRShMSUJXRUJSVEMpCitpbmxp
bmUgTGliV2ViUlRDQXVkaW9Nb2R1bGUqIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjph
dWRpb01vZHVsZSgpCit7CisgICAgcmV0dXJuIG1fYXVkaW9Nb2R1bGUuZ2V0KCk7Cit9CisjZW5k
aWYKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogaW5saW5lIGNvbnN0IExvZ2dlciYgQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmxvZ2dlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
ICptX2xvZ2dlcjsKKyAgICByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7CiAgICAgCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5jcHAKaW5kZXggMTYyNDk4MDk1MTIyZjRmNGIw
NTIwNWU3MWZiN2NjNWI5MGU0YmY5Mi4uYTQ3MTJkM2MwMWM3NDU4YzgyNjVjMmFjYzQwM2I4NTEx
MTcxODcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5jcHAKQEAgLTI5
LDcgKzI5LDkgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRpb01vZHVs
ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OCwyMCArNTAsMzEgQEAg
QXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6fkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW0oKQogICAgIGNsZWFyKCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcj4gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlUmVuZGVy
ZXIoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSYgc3RyZWFtKQorI2lmIFVTRShMSUJXRUJS
VEMpCitzdGF0aWMgUmVmUHRyPExpYldlYlJUQ0F1ZGlvTW9kdWxlPiBhdWRpb01vZHVsZUZyb21T
b3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSYgc291cmNlKQogewotICAgIGF1dG8gcmVuZGVyZXIg
PSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6Y3JlYXRlKCk7Ci0gICAgaWYgKCFyZW5k
ZXJlcikKKyAgICBpZiAoIWlzPFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZT4oc291cmNlKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
cmV0dXJuIGRvd25jYXN0PFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZT4oc291cmNlKS5hdWRp
b01vZHVsZSgpOworfQorI2VuZGlmCisKK3N0ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcj4gQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlUmVuZGVy
ZXIoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbSYgc3RyZWFtKQorewogICAgIGF1dG8mIHRy
YWNrID0gc3RyZWFtLm1fc3RyZWFtVHJhY2suZ2V0KCk7Ci0gICAgcmVuZGVyZXItPnNldExvZ2dl
cih0cmFjay5sb2dnZXIoKSwgdHJhY2subG9nSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmNyZWF0ZShBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlcjo6SW5pdCB7CisgICAgICAgIFtzdHJlYW0gPSBXZWFrUHRyIHsgc3RyZWFtIH1dIHsK
KyAgICAgICAgICAgIGlmIChzdHJlYW0pCisgICAgICAgICAgICAgICAgc3RyZWFtLT5jcmVhdGVO
ZXdSZW5kZXJlcigpOworICAgICAgICB9CisjaWYgVVNFKExJQldFQlJUQykKKyAgICAgICAgLCBh
dWRpb01vZHVsZUZyb21Tb3VyY2Uoc3RyZWFtLm1fYXVkaW9Tb3VyY2UuZ2V0KCkpCisjZW5kaWYK
KyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAgICAgLCB0cmFjay5sb2dnZXIoKQorICAg
ICAgICAsIHRyYWNrLmxvZ0lkZW50aWZpZXIoKQogI2VuZGlmCi0gICAgcmVuZGVyZXItPnNldENy
YXNoQ2FsbGJhY2soW3N0cmVhbSA9IFdlYWtQdHIgeyBzdHJlYW0gfV0gewotICAgICAgICBpZiAo
c3RyZWFtKQotICAgICAgICAgICAgc3RyZWFtLT5jcmVhdGVOZXdSZW5kZXJlcigpOwogICAgIH0p
OwotICAgIHJldHVybiByZW5kZXJlcjsKIH0KIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtOjpjbGVhcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcAppbmRl
eCA0ODM0ZTdmMDdjZTcwOTdkMDU2ZGQ2NDk1OWIzNzZkZmQwYTRiYTY1Li4xMTljMzA1MDlmNDkx
NDUwMDQzMTU0MWU4Mjc1MGE4OWMwY2M2NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBVU0UoTElCV0VCUlRDKQogCiAjaW5j
bHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRpb01v
ZHVsZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
ODAsNiArODEsMTIgQEAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldHRpbmdzKCkKICAgICByZXR1cm4gbV9jdXJyZW50U2V0
dGluZ3M7CiB9CiAKK3ZvaWQgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXRBdWRpb01v
ZHVsZShSZWZQdHI8TGliV2ViUlRDQXVkaW9Nb2R1bGU+JiYgYXVkaW9Nb2R1bGUpCit7CisgICAg
QVNTRVJUKCFtX2F1ZGlvTW9kdWxlKTsKKyAgICBtX2F1ZGlvTW9kdWxlID0gV1RGTW92ZShhdWRp
b01vZHVsZSk7Cit9CisKIH0KIAogI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZS5oCmluZGV4IGExOGZjMjE2MDhjMWNkNTk2YTU0NDU1MDMyOGI4
MDUyMTNiOGE0ZjAuLmE4NWNlYjEyYzRlYmExZmI2ODU4Mzg4M2Q1Y2I2MmM5NzBhZWY4ZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCkBAIC00NSw2ICs0NSw4IEBAIEFMTE9X
X1VOVVNFRF9QQVJBTUVURVJTX0VORAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIExp
YldlYlJUQ0F1ZGlvTW9kdWxlOworCiBjbGFzcyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UK
ICAgICA6IHB1YmxpYyBSZWFsdGltZU1lZGlhU291cmNlCiAgICAgLCBwcml2YXRlIHdlYnJ0Yzo6
QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UKQEAgLTUzLDYgKzU1LDkgQEAgY2xhc3MgUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2U+IGNyZWF0ZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1Ry
YWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7CiAKKyAgICB2b2lkIHNldEF1ZGlvTW9kdWxlKFJl
ZlB0cjxMaWJXZWJSVENBdWRpb01vZHVsZT4mJik7CisgICAgTGliV2ViUlRDQXVkaW9Nb2R1bGUq
IGF1ZGlvTW9kdWxlKCkgeyByZXR1cm4gbV9hdWRpb01vZHVsZS5nZXQoKTsgfQorCiBwcm90ZWN0
ZWQ6CiAgICAgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+JiYsIFN0cmluZyYmKTsKICAgICB+UmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlKCk7CkBAIC03OSw2ICs4NCw3IEBAIHByaXZhdGU6CiAKICAgICBS
ZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MgbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4gbV9hdWRpb1RyYWNrOwor
ICAgIFJlZlB0cjxMaWJXZWJSVENBdWRpb01vZHVsZT4gbV9hdWRpb01vZHVsZTsKIAogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgIG11dGFibGUgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9s
b2dnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9j
b2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyQ29jb2EuY3BwCmluZGV4IGIyMDUzMzRkODM3MDlhZjlmNzY3ZWJjMDBlMmMyMTgyZmEyY2E1
ZmMuLjdmYjIyYzhkNzcxYTRjZjVjMzNlNTA5ZTUzOTdlYmVlYWVlMDc3MTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCkBA
IC0zNiw4ICszNiw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYTo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSgp
Ci0gICAgOiBtX3Jlc2V0T2JzZXJ2ZXIoW3RoaXNdIHsgcmVzZXQoKTsgfSkKK0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29j
b2EoSW5pdCYmIGluaXQpCisgICAgOiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcihXVEZN
b3ZlKGluaXQpKQorICAgICwgbV9yZXNldE9ic2VydmVyKFt0aGlzXSB7IHJlc2V0KCk7IH0pCiB7
CiB9CiAKQEAgLTU0LDEwICs1NSwxNyBAQCB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyQ29jb2E6OnN0YXJ0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYgogICAgIH0p
OwogfQogCitCYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0JiBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpyZW5kZXJlclVuaXQoKQoreworICAgIGlmIChhdXRv
KiBhdWRpb01vZHVsZSA9IHRoaXMtPmF1ZGlvTW9kdWxlKCkpCisgICAgICAgIHJldHVybiBhdWRp
b01vZHVsZS0+aW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQoKTsKKyAg
ICByZXR1cm4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzaW5nbGV0b24oKTsK
K30KKwogdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpzdG9wKCkKIHsK
ICAgICBpZiAobV9kYXRhU291cmNlKQotICAgICAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlclVuaXQ6OnNpbmdsZXRvbigpLnJlbW92ZVNvdXJjZSgqbV9kYXRhU291cmNlKTsKKyAgICAg
ICAgcmVuZGVyZXJVbml0KCkucmVtb3ZlU291cmNlKCptX2RhdGFTb3VyY2UpOwogfQogCiB2b2lk
IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OmNsZWFyKCkKQEAgLTg0LDcgKzky
LDcgQEAgdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpyZXNldCgpCiB2
b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnNldEF1ZGlvT3V0cHV0RGV2
aWNlKGNvbnN0IFN0cmluZyYgZGV2aWNlSWQpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBj
cmVhdGUgYSB1bml0IGZvciBvdXJzZWx2ZXMgaGVyZSBvciB1c2UgdGhlIGRlZmF1bHQgdW5pdCBp
ZiBkZXZpY2VJZCBpcyBtYXRjaGluZy4KLSAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
clVuaXQ6OnNpbmdsZXRvbigpLnNldEF1ZGlvT3V0cHV0RGV2aWNlKGRldmljZUlkKTsKKyAgICBy
ZW5kZXJlclVuaXQoKS5zZXRBdWRpb091dHB1dERldmljZShkZXZpY2VJZCk7CiAgICAgbV9zaG91
bGRSZWNyZWF0ZURhdGFTb3VyY2UgPSB0cnVlOwogfQogCkBAIC0xMjYsMTEgKzEzNCwxMSBAQCB2
b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnB1c2hTYW1wbGVzKGNvbnN0
IE1lZGlhVGltZSYgc2FtcGxlVGltZQogICAgICAgICAgICAgbmV3U291cmNlLT5zZXRMb2dnZXIo
bG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGlmIChvbGRT
b3VyY2UpCi0gICAgICAgICAgICAgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0
OjpzaW5nbGV0b24oKS5yZW1vdmVTb3VyY2UoKm9sZFNvdXJjZSk7CisgICAgICAgICAgICAgICAg
cmVuZGVyZXJVbml0KCkucmVtb3ZlU291cmNlKCpvbGRTb3VyY2UpOwogCiAgICAgICAgICAgICBu
ZXdTb3VyY2UtPnNldFZvbHVtZSh2b2x1bWUoKSk7Ci0gICAgICAgICAgICBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRvbigpLmFkZFJlc2V0T2JzZXJ2ZXIobV9yZXNl
dE9ic2VydmVyKTsKLSAgICAgICAgICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5p
dDo6c2luZ2xldG9uKCkuYWRkU291cmNlKFdURk1vdmUobmV3U291cmNlKSk7CisgICAgICAgICAg
ICByZW5kZXJlclVuaXQoKS5hZGRSZXNldE9ic2VydmVyKG1fcmVzZXRPYnNlcnZlcik7CisgICAg
ICAgICAgICByZW5kZXJlclVuaXQoKS5hZGRTb3VyY2UoV1RGTW92ZShuZXdTb3VyY2UpKTsKICAg
ICAgICAgfSk7CiAgICAgICAgIG1fZGF0YVNvdXJjZSA9IFdURk1vdmUoZGF0YVNvdXJjZSk7CiAg
ICAgICAgIG1fc2hvdWxkUmVjcmVhdGVEYXRhU291cmNlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmgKaW5kZXggM2E3YjNk
YzkxMzJlNmY0MTIxNGVhODQ3NWFjZWUzYzAxMWUyY2UzZC4uNjQ2Njk4Nzc0OTViNjk5ZjdiYjZh
MzU0OTBjMjQ5MzMzMDE2OTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaApAQCAtMzksMTIgKzM5LDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9TYW1wbGVEYXRhU291cmNlOwogY2xhc3MgQXVkaW9TYW1w
bGVCdWZmZXJMaXN0OworY2xhc3MgQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5p
dDsKIGNsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIAogY2xhc3MgQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSA6IHB1YmxpYyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
Q29jb2EsIFdlYWtQdHJGYWN0b3J5SW5pdGlhbGl6YXRpb246OkVhZ2VyPiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJDb2NvYSgpOworICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EoSW5p
dCYmKTsKICAgICB+QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSgpOwogCiBwcml2
YXRlOgpAQCAtNTgsNiArNTksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNldCgpOwogCisg
ICAgQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCYgcmVuZGVyZXJVbml0KCk7
CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPiBtX291dHB1
dERlc2NyaXB0aW9uOwogICAgIFJlZlB0cjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fZGF0YVNv
dXJjZTsKICAgICBib29sIG1fc2hvdWxkUmVjcmVhdGVEYXRhU291cmNlIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgKaW5k
ZXggNWYzMGI5YmQ0NjJhZDIzYjY3MDEzMjk5NGU0OGQ2ZmY5NWI3MDRkNi4uM2YwOWJlODE4NThh
ZDkwZGUwOGVkYzYxNjA0YTM2MzllZGY4MDQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgKQEAgLTI4LDEwICsyOCw5IEBACiAjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
ICJCYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9PYnNlcnZl
ci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CkBAIC00Myw3ICs0Miw3IEBAIGNsYXNzIEF1
ZGlvU2FtcGxlQnVmZmVyTGlzdDsKIGNsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIGNs
YXNzIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OwogCi1jbGFzcyBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQgeworY2xhc3MgQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0IDogcHVibGljIEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlclVuaXQgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlclVuaXQmIHNpbmdsZXRvbigpOwogCkBAIC01NiwxNSArNTUsMTQg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVuZGVyKHNpemVfdCBzYW1wbGVD
b3VudCwgQXVkaW9CdWZmZXJMaXN0JiwgdWludDY0X3Qgc2FtcGxlVGltZSwgZG91YmxlIGhvc3RU
aW1lLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyYpOwogICAgIHZvaWQgcmVzZXQoKTsKIAot
ICAgIHZvaWQgc2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lk
IGFkZFNvdXJjZShSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiYmKTsKLSAgICB2b2lkIHJlbW92
ZVNvdXJjZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmKTsKLQotICAgIHVzaW5nIFJlc2V0T2JzZXJ2
ZXIgPSBPYnNlcnZlcjx2b2lkKCk+OwotICAgIHZvaWQgYWRkUmVzZXRPYnNlcnZlcihSZXNldE9i
c2VydmVyJiBvYnNlcnZlcikgeyBtX3Jlc2V0T2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7IH0KICAg
ICB2b2lkIHJldHJpZXZlRm9ybWF0RGVzY3JpcHRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24qKT4mJik7CiAKKyAgICAvLyBCYXNlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmlj
ZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGFkZFNvdXJjZShSZWY8QXVkaW9TYW1w
bGVEYXRhU291cmNlPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZVNvdXJjZShBdWRpb1NhbXBs
ZURhdGFTb3VyY2UmKSBmaW5hbDsKKyAgICB2b2lkIGFkZFJlc2V0T2JzZXJ2ZXIoUmVzZXRPYnNl
cnZlciYgb2JzZXJ2ZXIpIGZpbmFsIHsgbV9yZXNldE9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOyB9
CisKIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZvaWQgc3RvcCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQmFzZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY29jb2EvQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFiNzY1M2EwM2Y1NmVlOTBmZTZmZWFlNjcwNjJhNmY4OTg1YzEyNGUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2Nv
YS9CYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgKQEAgLTAsMCArMSw1MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TYW1wbGVEYXRhU291cmNlOworCitj
bGFzcyBCYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5CYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0KCkgPSBkZWZh
dWx0OworCisgICAgdmlydHVhbCB2b2lkIGFkZFNvdXJjZShSZWY8QXVkaW9TYW1wbGVEYXRhU291
cmNlPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNvdXJjZShBdWRpb1NhbXBsZURh
dGFTb3VyY2UmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXVkaW9PdXRwdXREZXZpY2Uo
Y29uc3QgU3RyaW5nJikgPSAwOworCisgICAgdXNpbmcgUmVzZXRPYnNlcnZlciA9IE9ic2VydmVy
PHZvaWQoKT47CisgICAgdmlydHVhbCB2b2lkIGFkZFJlc2V0T2JzZXJ2ZXIoUmVzZXRPYnNlcnZl
ciYpID0gMDsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWlu
Z0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyVW5pdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc0NWQ1ZjhiNWRhOTQzMDk2NDIwZjJhMGZjYzQx
N2ZjMTY2ZTQ4YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2NvY29hL0luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0
LmNwcApAQCAtMCwwICsxLDIwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyVW5pdC5oIgorI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgor
I2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCisjaW5jbHVkZSAiTGliV2ViUlRDQXVk
aW9Nb2R1bGUuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZm
ZXJMaXN0LmgiCisjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRp
b24uaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CisKKyNpbmNsdWRlIDxwYWwvY2YvQ29y
ZU1lZGlhU29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbmNvbWluZ0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6SW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlclVuaXQoTGliV2ViUlRDQXVkaW9Nb2R1bGUmIGF1ZGlvTW9kdWxlKQorICAgIDog
bV9hdWRpb01vZHVsZShhdWRpb01vZHVsZSkKKyAgICAsIG1fcXVldWUoV29ya1F1ZXVlOjpjcmVh
dGUoIkluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IiwgV29ya1F1ZXVl
OjpRT1M6OlVzZXJJbml0aWF0ZWQpKQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwg
bV9sb2dJZGVudGlmaWVyKExvZ2dlckhlbHBlcjo6dW5pcXVlTG9nSWRlbnRpZmllcigpKQorI2Vu
ZGlmCit7Cit9CisKK0luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Ojp+
SW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQoKQoreworfQorCit2b2lk
IEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzZXRBdWRpb091dHB1
dERldmljZShjb25zdCBTdHJpbmcmIGRldmljZUlEKQoreworICAgIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyVW5pdDo6c2luZ2xldG9uKCkuc2V0QXVkaW9PdXRwdXREZXZpY2UoZGV2aWNl
SUQpOworfQorCit2b2lkIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0
OjphZGRSZXNldE9ic2VydmVyKFJlc2V0T2JzZXJ2ZXImIG9ic2VydmVyKQoreworICAgIEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2luZ2xldG9uKCkuYWRkUmVzZXRPYnNlcnZl
cihvYnNlcnZlcik7Cit9CisKK3ZvaWQgSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlclVuaXQ6OmFkZFNvdXJjZShSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiYmIHNvdXJjZSkK
K3sKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBzb3VyY2UtPmxvZ2dlcigpLmxvZ0Fs
d2F5cyhMb2dXZWJSVEMsICJJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5p
dDo6YWRkU291cmNlICIsIHNvdXJjZS0+bG9nSWRlbnRpZmllcigpKTsKKyNlbmRpZgorICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgICAg
IGlmICghbV9sb2dnZXIpCisgICAgICAgICAgICBtX2xvZ2dlciA9ICZzb3VyY2UtPmxvZ2dlcigp
OworI2VuZGlmCisKKyAgICBBU1NFUlQoc291cmNlLT5vdXRwdXREZXNjcmlwdGlvbigpKTsKKyAg
ICBpZiAoIXNvdXJjZS0+b3V0cHV0RGVzY3JpcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGF1dG8gb3V0cHV0RGVzY3JpcHRpb24gPSAqc291cmNlLT5vdXRwdXREZXNjcmlwdGlvbigpOwor
CisgICAgQVNTRVJUKCFtX3NvdXJjZXMuY29udGFpbnMoc291cmNlLmdldCgpKSk7CisgICAgYm9v
bCBzaG91bGRTdGFydCA9IG1fc291cmNlcy5pc0VtcHR5KCk7CisgICAgbV9zb3VyY2VzLmFkZChX
VEZNb3ZlKHNvdXJjZSkpOworCisgICAgcG9zdFRhc2soW3RoaXMsIG5ld1NvdXJjZXMgPSBjb3B5
VG9WZWN0b3IobV9zb3VyY2VzKSwgc2hvdWxkU3RhcnQsIG91dHB1dERlc2NyaXB0aW9uXSgpIG11
dGFibGUgeworICAgICAgICBtX3JlbmRlclNvdXJjZXMgPSBXVEZNb3ZlKG5ld1NvdXJjZXMpOwor
ICAgICAgICBpZiAoIXNob3VsZFN0YXJ0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gPSBvdXRwdXREZXNjcmlwdGlvbjsKKyAgICAgICAg
bV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4obV9vdXRw
dXRTdHJlYW1EZXNjcmlwdGlvbik7CisgICAgICAgIG1fc2FtcGxlQ291bnQgPSBtX291dHB1dFN0
cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKKyAgICAgICAgbV9hdWRpb0J1ZmZl
ckxpc3QtPnNldFNhbXBsZUNvdW50KG1fc2FtcGxlQ291bnQpOworICAgICAgICBtX21peGVkU291
cmNlID0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUobV9vdXRwdXRTdHJlYW1EZXNjcmlw
dGlvbi5zYW1wbGVSYXRlKCkgKiAwLjUsICp0aGlzLCBMaWJXZWJSVENBdWRpb01vZHVsZTo6UG9s
bFNhbXBsZXNDb3VudCArIDEpOworICAgICAgICBtX21peGVkU291cmNlLT5zZXRJbnB1dEZvcm1h
dChvdXRwdXREZXNjcmlwdGlvbik7CisgICAgICAgIG1fbWl4ZWRTb3VyY2UtPnNldE91dHB1dEZv
cm1hdChvdXRwdXREZXNjcmlwdGlvbik7CisgICAgICAgIG1fd3JpdGVDb3VudCA9IDA7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZE1vZHVsZSA9IFJlZiB7IG1fYXVk
aW9Nb2R1bGUgfSwgc291cmNlID0gbV9taXhlZFNvdXJjZV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIG1fcmVnaXN0ZXJlZE1peGVkU291cmNlID0gV1RGTW92ZShzb3VyY2UpOworICAgICAgICAg
ICAgc3RhcnQoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5jb21pbmdBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnJlbW92ZVNvdXJjZShBdWRpb1NhbXBsZURh
dGFTb3VyY2UmIHNvdXJjZSkKK3sKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBzb3Vy
Y2UubG9nZ2VyKCkubG9nQWx3YXlzKExvZ1dlYlJUQywgIkluY29taW5nQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0OjpyZW1vdmVTb3VyY2UgIiwgc291cmNlLmxvZ0lkZW50aWZpZXIo
KSk7CisjZW5kaWYKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYm9vbCBzaG91
bGRTdG9wID0gIW1fc291cmNlcy5pc0VtcHR5KCk7CisgICAgbV9zb3VyY2VzLnJlbW92ZShzb3Vy
Y2UpOworICAgIHNob3VsZFN0b3AgJj0gbV9zb3VyY2VzLmlzRW1wdHkoKTsKKworICAgIHBvc3RU
YXNrKFt0aGlzLCBuZXdTb3VyY2VzID0gY29weVRvVmVjdG9yKG1fc291cmNlcyksIHNob3VsZFN0
b3BdKCkgbXV0YWJsZSB7CisgICAgICAgIG1fcmVuZGVyU291cmNlcyA9IFdURk1vdmUobmV3U291
cmNlcyk7CisgICAgICAgIGlmICghc2hvdWxkU3RvcCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRNb2R1bGUgPSBSZWYgeyBt
X2F1ZGlvTW9kdWxlIH1dIHsKKyAgICAgICAgICAgIHN0b3AoKTsKKyAgICAgICAgfSk7CisgICAg
fSk7CisKK30KKwordm9pZCBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5p
dDo6c3RhcnQoKQoreworICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkluY29taW5nQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzdGFydCIpOworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRv
bigpLmFkZFNvdXJjZSgqbV9yZWdpc3RlcmVkTWl4ZWRTb3VyY2UpOworICAgIG1fYXVkaW9Nb2R1
bGUuc3RhcnRJbmNvbWluZ0F1ZGlvUmVuZGVyaW5nKCk7Cit9CisKK3ZvaWQgSW5jb21pbmdBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnN0b3AoKQoreworICAgIFJFTEVBU0VfTE9H
KFdlYlJUQywgIkluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzdG9w
Iik7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyVW5pdDo6c2luZ2xldG9uKCkucmVtb3ZlU291cmNlKCptX3JlZ2lzdGVyZWRN
aXhlZFNvdXJjZSk7CisgICAgbV9yZWdpc3RlcmVkTWl4ZWRTb3VyY2UgPSBudWxscHRyOworICAg
IG1fYXVkaW9Nb2R1bGUuc3RvcEluY29taW5nQXVkaW9SZW5kZXJpbmcoKTsKK30KKwordm9pZCBJ
bmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6cG9zdFRhc2soRnVuY3Rp
b248dm9pZCgpPiYmIGNhbGxiYWNrKQoreworICAgIC8vIFdlIHByb3RlY3QgJ3RoaXMnIGJ5IHRh
a2luZyBhIHJlZiB0byBpdHMgYXVkaW8gbW9kdWxlLgorICAgIG1fcXVldWUtPmRpc3BhdGNoKFtw
cm90ZWN0ZWRNb2R1bGUgPSBSZWYgeyBtX2F1ZGlvTW9kdWxlIH0sIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSk7Cit9
CisKK3ZvaWQgSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6Om5ld0F1
ZGlvQ2h1bmtQdXNoZWQoKQoreworICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJy
ZW50VGhyZWFkU2NvcGUgZGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uczsKKyAgICBwb3N0VGFzayhb
dGhpcywgY3VycmVudEF1ZGlvU2FtcGxlQ291bnQgPSBtX2F1ZGlvTW9kdWxlLmN1cnJlbnRBdWRp
b1NhbXBsZUNvdW50KCldIHsKKyAgICAgICAgcmVuZGVyQXVkaW9DaHVuayhjdXJyZW50QXVkaW9T
YW1wbGVDb3VudCk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5jb21pbmdBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlclVuaXQ6OnJlbmRlckF1ZGlvQ2h1bmsodWludDY0X3QgY3VycmVudEF1ZGlv
U2FtcGxlQ291bnQpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAo
bV9yZW5kZXJTb3VyY2VzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdWludDY0
X3QgdGltZVN0YW1wID0gY3VycmVudEF1ZGlvU2FtcGxlQ291bnQgKiBtX291dHB1dFN0cmVhbURl
c2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRl
OworCisgICAgLy8gTWl4IGFsbCBzb3VyY2VzLgorICAgIGJvb2wgaXNGaXJzdFNvdXJjZSA9IHRy
dWU7CisgICAgZm9yIChhdXRvJiBzb3VyY2UgOiBtX3JlbmRlclNvdXJjZXMpIHsKKyAgICAgICAg
c291cmNlLT5wdWxsQXZhaWxhYmxlU2FtcGxlQ2h1bmsoKm1fYXVkaW9CdWZmZXJMaXN0LCBtX3Nh
bXBsZUNvdW50LCB0aW1lU3RhbXAsIGlzRmlyc3RTb3VyY2UgPyBBdWRpb1NhbXBsZURhdGFTb3Vy
Y2U6OkNvcHkgOiBBdWRpb1NhbXBsZURhdGFTb3VyY2U6Ok1peCk7CisgICAgICAgIGlzRmlyc3RT
b3VyY2UgPSBmYWxzZTsKKyAgICB9CisKKyAgICBDTVRpbWUgc3RhcnRUaW1lID0gUEFMOjpDTVRp
bWVNYWtlKG1fd3JpdGVDb3VudCwgbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRl
KCkpOworICAgIG1fbWl4ZWRTb3VyY2UtPnB1c2hTYW1wbGVzKFBBTDo6dG9NZWRpYVRpbWUoc3Rh
cnRUaW1lKSwgKm1fYXVkaW9CdWZmZXJMaXN0LCBtX3NhbXBsZUNvdW50KTsKKyAgICBtX3dyaXRl
Q291bnQgKz0gbV9zYW1wbGVDb3VudDsKK30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAor
Y29uc3QgTG9nZ2VyJiBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6
bG9nZ2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKm1fbG9nZ2VyOworfQorCitXVEZMb2dDaGFu
bmVsJiBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6bG9nQ2hhbm5l
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ1dlYlJUQzsKK30KKworY29uc3Qgdm9pZCogSW5j
b21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OmxvZ0lkZW50aWZpZXIoKSBj
b25zdAoreworICAgIHJldHVybiBtX2xvZ0lkZW50aWZpZXI7Cit9CisjZW5kaWYKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0luY29taW5n
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyVW5pdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzOWU1YTNhMDA2NWQxZTIwOTE5ZGIzYTM1Njk2Y2E5OWU3
MGFmMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9jb2NvYS9JbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oCkBA
IC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyVW5pdC5oIgorI2luY2x1ZGUgIkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgV29ya1F1ZXVlOworfQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0OworY2xhc3MgQXVkaW9TYW1wbGVEYXRhU291cmNlOworY2xhc3MgQXVk
aW9TYW1wbGVCdWZmZXJMaXN0OworY2xhc3MgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworY2xh
c3MgTGliV2ViUlRDQXVkaW9Nb2R1bGU7CitjbGFzcyBXZWJBdWRpb0J1ZmZlckxpc3Q7CisKK2Ns
YXNzIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IDogcHVibGljIEJh
c2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICAsIHB1YmxpYyBMb2dnZXJIZWxwZXIKKyNlbmRpZgoreworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IEluY29taW5nQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0KExpYldlYlJUQ0F1ZGlvTW9kdWxlJik7CisgICAgfklu
Y29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0KCk7CisKKyAgICB2b2lkIG5l
d0F1ZGlvQ2h1bmtQdXNoZWQoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAg
dm9pZCBzdG9wKCk7CisgICAgdm9pZCBwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYpOworICAg
IHZvaWQgcmVuZGVyQXVkaW9DaHVuayh1aW50NjRfdCBjdXJyZW50QXVkaW9TYW1wbGVDb3VudCk7
CisKKyAgICAvLyBCYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0CisgICAgdm9p
ZCBzZXRBdWRpb091dHB1dERldmljZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGFk
ZFJlc2V0T2JzZXJ2ZXIoUmVzZXRPYnNlcnZlciYpIGZpbmFsOworICAgIHZvaWQgYWRkU291cmNl
KFJlZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+JiYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlU291
cmNlKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSYpIGZpbmFsOworCisjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECisgICAgLy8gTG9nZ2VySGVscGVyLgorICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkg
Y29uc3QgZmluYWw7CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIkluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IjsgfQor
ICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCB2
b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKworICAgIC8vIE1haW4g
dGhyZWFkIHZhcmlhYmxlcy4KKyAgICBMaWJXZWJSVENBdWRpb01vZHVsZSYgbV9hdWRpb01vZHVs
ZTsKKyAgICBSZWY8V1RGOjpXb3JrUXVldWU+IG1fcXVldWU7CisgICAgSGFzaFNldDxSZWY8QXVk
aW9TYW1wbGVEYXRhU291cmNlPj4gbV9zb3VyY2VzOworICAgIFJlZlB0cjxBdWRpb1NhbXBsZURh
dGFTb3VyY2U+IG1fcmVnaXN0ZXJlZE1peGVkU291cmNlOworCisgICAgLy8gQmFja2dyb3VuZCB0
aHJlYWQgdmFyaWFibGVzLgorICAgIFZlY3RvcjxSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPj4g
bV9yZW5kZXJTb3VyY2VzOworICAgIFJlZlB0cjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fbWl4
ZWRTb3VyY2U7CisgICAgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRp
b0J1ZmZlckxpc3Q7CisgICAgc2l6ZV90IG1fc2FtcGxlQ291bnQgeyAwIH07CisgICAgc2l6ZV90
IG1fd3JpdGVDb3VudCB7IDAgfTsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJl
ZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRp
ZmllcjsKKyNlbmRpZgorfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENBdWRpb01vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUuY3BwCmluZGV4IDk4ZmI1MmM1
MjQyZTgwNjRiMTQ5ZDExNWEzZGE2YTA0MjM2N2UwNjcuLmFiZDEzNmY5OGNlNzI2OTExOTU5YTNm
ODUxZWU5MDAxMjc2ZWU5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb01vZHVsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvTW9k
dWxlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgVVNFKExJQldFQlJUQykKIAorI2luY2x1
ZGUgIkluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgiCiAjaW5jbHVk
ZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTQwLDYgKzQxLDEwIEBAIExpYldlYlJUQ0F1ZGlvTW9k
dWxlOjpMaWJXZWJSVENBdWRpb01vZHVsZSgpCiB7CiB9CiAKK0xpYldlYlJUQ0F1ZGlvTW9kdWxl
Ojp+TGliV2ViUlRDQXVkaW9Nb2R1bGUoKQoreworfQorCiBpbnQzMl90IExpYldlYlJUQ0F1ZGlv
TW9kdWxlOjpSZWdpc3RlckF1ZGlvQ2FsbGJhY2sod2VicnRjOjpBdWRpb1RyYW5zcG9ydCogYXVk
aW9UcmFuc3BvcnQpCiB7CiAgICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiTGliV2ViUlRDQXVkaW9N
b2R1bGU6OlJlZ2lzdGVyQXVkaW9DYWxsYmFjayAlZCIsICEhYXVkaW9UcmFuc3BvcnQpOwpAQCAt
NjIsNiArNjcsNyBAQCBpbnQzMl90IExpYldlYlJUQ0F1ZGlvTW9kdWxlOjpTdGFydFBsYXlvdXQo
KQogCiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb0RldmljZU1vZHVsZT4odGhpcyldIHsKICAgICAgICAg
bV9wb2xsaW5nVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgICAgICBtX2N1cnJlbnRB
dWRpb1NhbXBsZUNvdW50ID0gMDsKICAgICAgICAgcG9sbEF1ZGlvRGF0YSgpOwogICAgIH0pOwog
ICAgIHJldHVybiAwOwpAQCAtMTI5LDkgKzEzNSwxOSBAQCB2b2lkIExpYldlYlJUQ0F1ZGlvTW9k
dWxlOjpwb2xsRnJvbVNvdXJjZSgpCiAgICAgICAgIGludDY0X3QgbnRwVGltZSA9IC0xOwogICAg
ICAgICBjaGFyIGRhdGFbTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogY2hh
bm5lbHMgKiBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6Y2h1bmtTYW1wbGVDb3VudF07CiAgICAgICAg
IG1fYXVkaW9UcmFuc3BvcnQtPlB1bGxSZW5kZXJEYXRhKExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojpz
YW1wbGVCeXRlU2l6ZSAqIDgsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlLCBjaGFu
bmVscywgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmNodW5rU2FtcGxlQ291bnQsIGRhdGEsICZlbGFw
c2VkVGltZSwgJm50cFRpbWUpOworICAgICAgICBpZiAobV9pc1JlbmRlcmluZ0luY29taW5nQXVk
aW8pCisgICAgICAgICAgICBtX2luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0LT5uZXdBdWRpb0NodW5rUHVzaGVkKCk7CisgICAgICAgIG1fY3VycmVudEF1ZGlvU2FtcGxl
Q291bnQgKz0gTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmNodW5rU2FtcGxlQ291bnQ7CiAgICAgfQog
fQogCitCYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0JiBMaWJXZWJSVENBdWRp
b01vZHVsZTo6aW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQoKQorewor
ICAgIGlmICghbV9pbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCkKKyAg
ICAgICAgbV9pbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCA9IG1ha2VV
bmlxdWU8SW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ+KCp0aGlzKTsK
KyAgICByZXR1cm4gKm1faW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShMSUJXRUJSVEMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb01vZHVsZS5oCmluZGV4IDY3MGFjOGZhNDVk
MzVkMTkwMDA2Y2NjODQ2ZGFkNWE4OGNiNGZhZmQuLjkyNmQ0OWI0ZDg1ZTdiMzFlM2M3OGVmNjFi
ZTVlMTAwZjQ5YTZlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb01vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb01vZHVsZS5o
CkBAIC0zOSwxNCArMzksMjUgQEAgQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KIEFMTE9X
X1VOVVNFRF9QQVJBTUVURVJTX0VORAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBCYXNl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OworY2xhc3MgSW5jb21pbmdBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ7CiAKIC8vIExpYldlYlJUQ0F1ZGlvTW9kdWxlIGlz
IHB1bGxpbmcgc3RyZWFtZWQgZGF0YSB0byBlbnN1cmUgYXVkaW8gZGF0YSBpcyBwYXNzZWQgdG8g
dGhlIGF1ZGlvIHRyYWNrLgogY2xhc3MgTGliV2ViUlRDQXVkaW9Nb2R1bGUgOiBwdWJsaWMgd2Vi
cnRjOjpBdWRpb0RldmljZU1vZHVsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgTGliV2ViUlRDQXVkaW9Nb2R1bGUoKTsKKyAgICB+TGliV2ViUlRDQXVkaW9N
b2R1bGUoKTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgUG9sbFNhbXBsZXNDb3Vu
dCA9IDE7CisgICAgdm9pZCByZWYoKSB7IEFkZFJlZigpOyB9CisgICAgdm9pZCBkZXJlZigpIHsg
UmVsZWFzZSgpOyB9CisKKyAgICB2b2lkIHN0YXJ0SW5jb21pbmdBdWRpb1JlbmRlcmluZygpIHsg
bV9pc1JlbmRlcmluZ0luY29taW5nQXVkaW8gPSB0cnVlOyB9CisgICAgdm9pZCBzdG9wSW5jb21p
bmdBdWRpb1JlbmRlcmluZygpIHsgbV9pc1JlbmRlcmluZ0luY29taW5nQXVkaW8gPSBmYWxzZTsg
fQorICAgIEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQmIGluY29taW5nQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0KCk7CisKKyAgICB1aW50NjRfdCBjdXJyZW50
QXVkaW9TYW1wbGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEF1ZGlvU2FtcGxlQ291
bnQ7IH0KIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBVIHNob3VsZE5vdEJl
Q2FsbGVkKFUgdmFsdWUpIGNvbnN0CkBAIC0xMzUsNiArMTQ2LDEwIEBAIHByaXZhdGU6CiAgICAg
TW9ub3RvbmljVGltZSBtX3BvbGxpbmdUaW1lOwogICAgIFRpbWVyIG1fbG9nVGltZXI7CiAgICAg
aW50IG1fdGltZVNwZW50IHsgMCB9OworCisgICAgdWludDY0X3QgbV9jdXJyZW50QXVkaW9TYW1w
bGVDb3VudCB7IDAgfTsKKyAgICBib29sIG1faXNSZW5kZXJpbmdJbmNvbWluZ0F1ZGlvIHsgZmFs
c2UgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlclVuaXQ+IG1faW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1By
b3ZpZGVyLmNwcAppbmRleCBmZGQ3ODhhMTA2NTU0MmZlNGU3ODBmNmU0OGM4NzE1MjkzYzkwNzY5
Li4xMmEwMGRmYzc1NTA0ZGIwNzRlZjVkNDRlOTU1ZGI2YTI2Y2RhMTFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJv
dmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTcwLDYgKzcwLDE0IEBAIGJvb2wgTGliV2Vi
UlRDUHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgpCiB9CiAjZW5kaWYKIAorTGliV2ViUlRDUHJv
dmlkZXI6OkxpYldlYlJUQ1Byb3ZpZGVyKCkKK3sKK30KKworTGliV2ViUlRDUHJvdmlkZXI6On5M
aWJXZWJSVENQcm92aWRlcigpCit7Cit9CisKICNpZiAhVVNFKExJQldFQlJUQykgfHwgIVBMQVRG
T1JNKENPQ09BKQogdm9pZCBMaWJXZWJSVENQcm92aWRlcjo6cmVnaXN0ZXJXZWJLaXRWUDlEZWNv
ZGVyKCkKIHsKQEAgLTI3Myw3ICsyODEsOSBAQCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9y
eUludGVyZmFjZSogTGliV2ViUlRDUHJvdmlkZXI6OmZhY3RvcnkoKQogCiBydGM6OnNjb3BlZF9y
ZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IExpYldlYlJUQ1By
b3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkocnRjOjpUaHJlYWQqIG5ldHdvcmtU
aHJlYWQsIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdUaHJlYWQpCiB7Ci0gICAgYXV0byBhdWRpb01v
ZHVsZSA9IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGV2aWNlTW9kdWxlPihuZXcg
cnRjOjpSZWZDb3VudGVkT2JqZWN0PExpYldlYlJUQ0F1ZGlvTW9kdWxlPigpKTsKKyAgICBBU1NF
UlQoIW1fYXVkaW9Nb2R1bGUpOworICAgIGF1dG8gYXVkaW9Nb2R1bGUgPSBydGM6OnNjb3BlZF9y
ZWZwdHI8TGliV2ViUlRDQXVkaW9Nb2R1bGU+KG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8TGli
V2ViUlRDQXVkaW9Nb2R1bGU+KCkpOworICAgIG1fYXVkaW9Nb2R1bGUgPSBhdWRpb01vZHVsZS5n
ZXQoKTsKIAogICAgIHJldHVybiB3ZWJydGM6OkNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeShu
ZXR3b3JrVGhyZWFkLCBzaWduYWxpbmdUaHJlYWQsIHNpZ25hbGluZ1RocmVhZCwgV1RGTW92ZShh
dWRpb01vZHVsZSksIHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwg
d2VicnRjOjpDcmVhdGVCdWlsdGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpLCBjcmVhdGVFbmNvZGVy
RmFjdG9yeSgpLCBjcmVhdGVEZWNvZGVyRmFjdG9yeSgpLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggNTFiNDlhMGYx
MTE1Y2RiYzg0OTQ1YzA0MjE4M2ZlNmNlMTE2MDdmNS4uMGI3YTkxYjc2NDA0MTA2NzI0YjY3Y2Q4
NTlmNzI3Y2ZhOGQwZTU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAg
LTc5LDcgKzc5LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGliV2ViUlRDUHJvdmlkZXIgewog
cHVibGljOgogICAgIHN0YXRpYyBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+IGNyZWF0ZSgp
OwogCi0gICAgdmlydHVhbCB+TGliV2ViUlRDUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisgICAgdmly
dHVhbCB+TGliV2ViUlRDUHJvdmlkZXIoKTsKIAogICAgIHN0YXRpYyBib29sIHdlYlJUQ0F2YWls
YWJsZSgpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyV2ViS2l0VlA5RGVjb2RlcigpOwpAQCAt
MTAzLDYgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3
ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbihEb2N1
bWVudElkZW50aWZpZXIsIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6UGFj
a2V0U29ja2V0RmFjdG9yeSosIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0Nv
bmZpZ3VyYXRpb24mJik7CiAKICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVy
ZmFjZSogZmFjdG9yeSgpOworICAgIExpYldlYlJUQ0F1ZGlvTW9kdWxlKiBhdWRpb01vZHVsZSgp
OwogCiAgICAgLy8gRklYTUU6IE1ha2UgdGhlc2UgbWV0aG9kcyBub3Qgc3RhdGljLgogICAgIHN0
YXRpYyB2b2lkIGNhbGxPbldlYlJUQ05ldHdvcmtUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKTsK
QEAgLTE1MCw3ICsxNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8
U3VzcGVuZGFibGVTb2NrZXRGYWN0b3J5PiBjcmVhdGVTb2NrZXRGYWN0b3J5KFN0cmluZyYmIC8q
IHVzZXJBZ2VudCAqLywgYm9vbCAvKiBpc0ZpcnN0UGFydHkgKi8sIFJlZ2lzdHJhYmxlRG9tYWlu
JiYpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogcHJvdGVjdGVkOgotICAgIExpYldlYlJUQ1Byb3Zp
ZGVyKCkgPSBkZWZhdWx0OworICAgIExpYldlYlJUQ1Byb3ZpZGVyKCk7CiAKICAgICBydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNv
bm5lY3Rpb24od2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2VydmVyJiwgcnRjOjpOZXR3b3JrTWFu
YWdlciYsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSYsIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25J
bnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJiwgc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6QXN5
bmNSZXNvbHZlckZhY3Rvcnk+JiYpOwogCkBAIC0xNzEsNiArMTcyLDcgQEAgcHJvdGVjdGVkOgog
ICAgIC8vIEZJWE1FOiBSZW1vdmUgbV91c2VOZXR3b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlciBt
ZW1iZXIgdmFyaWFibGUgYW5kIG1ha2UgaXQgYSBnbG9iYWwuCiAgICAgYm9vbCBtX3VzZU5ldHdv
cmtUaHJlYWRXaXRoU29ja2V0U2VydmVyIHsgdHJ1ZSB9OwogCisgICAgUmVmUHRyPExpYldlYlJU
Q0F1ZGlvTW9kdWxlPiBtX2F1ZGlvTW9kdWxlOwogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJy
dGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4gbV9mYWN0b3J5OwogICAgIGJvb2wg
bV9kaXNhYmxlTm9uTG9jYWxob3N0Q29ubmVjdGlvbnMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9z
dXBwb3J0c0gyNjUgeyBmYWxzZSB9OwpAQCAtMTg3LDQgKzE4OSwxMSBAQCBwcm90ZWN0ZWQ6CiAj
ZW5kaWYKIH07CiAKKyNpZiBVU0UoTElCV0VCUlRDKQoraW5saW5lIExpYldlYlJUQ0F1ZGlvTW9k
dWxlKiBMaWJXZWJSVENQcm92aWRlcjo6YXVkaW9Nb2R1bGUoKQoreworICAgIHJldHVybiBtX2F1
ZGlvTW9kdWxlLmdldCgpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwCmluZGV4
IDg5NDc5YzYyNGY3OTg4MzE0NWEwODZmNTdjNTA0MjRmNGMyM2QzNmQuLjlhZWE1ZjFjMDcyYzA5
YmYwNjNmNDk5OWUwM2IyMTllODVkN2UyZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2E6Ok9uRGF0YShjb25zdCB2b2lkKiBhdWRpb0Rh
dGEsIGludCBiaXRzUGVyCiAgICAgICAgICAgICBtX251bWJlck9mRnJhbWVzID0gMDsKICAgICB9
CiAKLSAgICBDTVRpbWUgc3RhcnRUaW1lID0gUEFMOjpDTVRpbWVNYWtlKG1fbnVtYmVyT2ZGcmFt
ZXMsIHNhbXBsZVJhdGUpOworICAgIENNVGltZSBzdGFydFRpbWUgPSBQQUw6OkNNVGltZU1ha2Uo
YXVkaW9Nb2R1bGUoKSA/IGF1ZGlvTW9kdWxlKCktPmN1cnJlbnRBdWRpb1NhbXBsZUNvdW50KCkg
OiBtX251bWJlck9mRnJhbWVzLCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSk7CiAg
ICAgYXV0byBtZWRpYVRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKHN0YXJ0VGltZSk7CiAgICAgbV9u
dW1iZXJPZkZyYW1lcyArPSBudW1iZXJPZkZyYW1lczsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442683</attachid>
            <date>2021-10-28 01:28:55 -0700</date>
            <delta_ts>2021-10-28 05:31:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232375-20211028102852.patch</filename>
            <type>text/plain</type>
            <size>55282</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGUyYzkwNjQyZGRlMGFl
OWFkYmRhNjc5MzFlNmM4OTM4M2FjODU0YS4uNmFlMDM5MmJhMjJkZmExZTBlMzg4YWUzNWQ1MTVj
YzBkM2RlNGI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTEwLTI3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFbnN1cmUgc3luY2hyb25p
emVkIHJlbmRlcmluZyBvZiBpbmNvbWluZyBhdWRpbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjM3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYlJUQyBpbmNvbWluZyBhdWRpbyB0cmFj
a3MgYXJlIGd1YXJhbnRlZWQgdG8gYmUgc3luY2hyb25pemVkIGJhc2VkIG9uIHRoZSBhdWRpbyBt
b2R1bGUgY2xvY2suCisgICAgICAgIFByZXZpb3VzbHksIHdlIHdlcmUgbWl4aW5nIGFsbCBhdWRp
byB0cmFja3MgdG9nZXRoZXIsIGJ1dCB3ZSB3ZXJlIG5vdCBoYW5kbGluZyBzeW5jaHJvbml6YXRp
b24gb2YgdHJhY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBjbG9jay4KKyAgICAgICAgVGhpcyBjYW4g
Y2F1c2Ugc29tZSBsb3dlciBxdWFsaXR5IGF1ZGlvIHJlbmRlcmluZy4KKyAgICAgICAgVG8gcHJl
dmVudCB0aGlzLCBhbGwgV2ViUlRDIGluY29taW5nIGF1ZGlvIHRyYWNrcyBhcmUgbm93IG1peGVk
IHRvZ2V0aGVyIGluIGEgc2luZ2xlIHRyYWNrIHRoYXQgaXMgdGhlbiBtaXhlZCB3aXRoIGFsbCBv
dGhlciBub24gc3luY2hyb25pemVkIHRyYWNrcy4KKyAgICAgICAgVG8gZG8gc28gd2UgaW50cm9k
dWNlIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IHdoaWNoIHdpbGwg
cmVjZWl2ZSBhbGwgaW5jb21pbmcgYXVkaW8gdHJhY2tzLgorICAgICAgICBJdCB0aGVuIHNlbmRz
IHRoZSBtaXggdG8gdGhlIGFjdHVhbCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQu
CisgICAgICAgIFRvIGVuc3VyZSB0aWdodCBzeW5jaHJvbml6YXRpb24sIHdlIGludHJvZHVjZSBB
dWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxBdmFpbGFibGVTYW1wbGVDaHVuayB3aGljaCByZWFk
cyBkYXRhIHVzaW5nIHRoZSBwcm92aWRlZCB0aW1lc3RhbXAgcmVsYXRpdmUgdG8gdGhlIGlucHV0
IG9mZnNldC4KKyAgICAgICAgV2UgZG8gYSByZWZhY3RvcmluZyB0byBtYWtlIGl0IGVhc3kgdG8g
ZWl0aGVyIHVzZSBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCBvciBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQgYnkgaGF2aW5nIGEgYmFzZSBjbGFzcyBj
YWxsZWQgQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC4KKworICAgICAgICBN
YW51YWxseSB0ZXN0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRh
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRh
U291cmNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJDb2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Jhc2VBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlclVuaXQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y29jb2EvSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb01vZHVsZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcDoKKwogMjAyMS0xMC0yNiAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgT25seSBvbmUgQXVkaW9TYW1wbGVEYXRh
U291cmNlOjpwdWxsU2FtcGxlcyBpcyBuZWVkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDM2YzhiNTBkNDAxNTY3MWMy
MzdlMzA2ZDljMzIzZjA5YWUxNmQ5OGYuLmJiYThjNWFhZTExMWIwOGQ3NzhhMDdlZGZiMGE5ZDY2
MTRkYjk5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmNwcApAQCAtMjksOCArMjksMTAgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiSWNlQ2FuZGlkYXRlLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9N
b2R1bGUuaCIKICNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNs
dWRlICJMaWJXZWJSVENNZWRpYUVuZHBvaW50LmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlk
ZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCIKICNpbmNsdWRl
ICJMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kLmgiCkBAIC0yOTMsNyArMjk1LDggQEAgUmVmPFJUQ1J0cFJlY2VpdmVy
PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyKHN0ZDo6dW5p
cXVlX3AKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9wZWVy
Q29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogCi0gICAgYXV0byBzb3VyY2Ug
PSBiYWNrZW5kLT5jcmVhdGVTb3VyY2UoKTsKKyAgICBhdXRvIHNvdXJjZSA9IGJhY2tlbmQtPmNy
ZWF0ZVNvdXJjZShkb2N1bWVudCk7CisKICAgICAvLyBSZW1vdGUgc291cmNlIGlzIGluaXRpYWxs
eSBtdXRlZCBhbmQgd2lsbCBiZSB1bm11dGVkIHdoZW4gcmVjZWl2aW5nIHRoZSBmaXJzdCBwYWNr
ZXQuCiAgICAgc291cmNlLT5zZXRNdXRlZCh0cnVlKTsKICAgICBhdXRvIHRyYWNrSUQgPSBzb3Vy
Y2UtPnBlcnNpc3RlbnRJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJl
Y2VpdmVyQmFja2VuZC5jcHAKaW5kZXggY2NhOTcwNGI1NjZjMzRlYWEwZGZmMGNjOThkZmZhODNh
NmU2NzQ1OC4uODBkNzhhMTM2OWIxMmIzODJlNGYzMGEwZGUzY2NkNTJiYjk1YWVjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwCkBAIC0y
NSw5ICsyNSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1J0
cFJlY2VpdmVyQmFja2VuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJM
aWJXZWJSVENBdWRpb01vZHVsZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0R0bHNUcmFuc3BvcnRC
YWNrZW5kLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJMaWJX
ZWJSVENSdHBSZWNlaXZlclRyYW5zZm9ybUJhY2tlbmQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENV
dGlscy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgiCiAjaW5jbHVk
ZSAiUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgiCkBAIC05OSw3ICsxMDMsNyBAQCBWZWN0
b3I8UlRDUnRwU3luY2hyb25pemF0aW9uU291cmNlPiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tl
bmQ6OmdldFN5bmNocm9uaXphdAogICAgIHJldHVybiBzb3VyY2VzOwogfQogCi1SZWY8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTb3VyY2Uo
KQorUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZDo6
Y3JlYXRlU291cmNlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvIHJ0Y1RyYWNrID0g
bV9ydGNSZWNlaXZlci0+dHJhY2soKTsKICAgICBzd2l0Y2ggKG1fcnRjUmVjZWl2ZXItPm1lZGlh
X3R5cGUoKSkgewpAQCAtMTA4LDcgKzExMiwxMCBAQCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4g
TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTb3VyY2UoKQogICAgICAgICBicmVh
azsKICAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU86IHsKICAgICAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4gYXVkaW9UcmFjayA9IHN0
YXRpY19jYXN0PHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZSo+KHJ0Y1RyYWNrLmdldCgpKTsK
LSAgICAgICAgcmV0dXJuIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKFdURk1v
dmUoYXVkaW9UcmFjayksIGZyb21TdGRTdHJpbmcocnRjVHJhY2stPmlkKCkpKTsKKyAgICAgICAg
YXV0byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShXVEZNb3Zl
KGF1ZGlvVHJhY2spLCBmcm9tU3RkU3RyaW5nKHJ0Y1RyYWNrLT5pZCgpKSk7CisgICAgICAgIGlm
IChkb2N1bWVudC5wYWdlKCkpCisgICAgICAgICAgICBzb3VyY2UtPnNldEF1ZGlvTW9kdWxlKGRv
Y3VtZW50LnBhZ2UoKS0+bGliV2ViUlRDUHJvdmlkZXIoKS5hdWRpb01vZHVsZSgpKTsKKyAgICAg
ICAgcmV0dXJuIHNvdXJjZTsKICAgICB9CiAgICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJ
REVPOiB7CiAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRl
cmZhY2U+IHZpZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZh
Y2UqPihydGNUcmFjay5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJl
Y2VpdmVyQmFja2VuZC5oCmluZGV4IGZmZGEwNWQxMzJlNDFjMzBiNjA1OWZjNTBhYzBjMWFmMjE5
YTY3OTUuLjAxZjNkYzc0MmFkYTcxNGI4OTE5ZDlmNGIzZjJkZDg3MzUwZmRmZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1J0cFJlY2VpdmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oCkBAIC0zNSw3ICsz
NSw3IEBAIGNsYXNzIFJ0cFJlY2VpdmVySW50ZXJmYWNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KK2NsYXNzIERvY3VtZW50OwogY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZTsKIAogY2xh
c3MgTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kIGZpbmFsIDogcHVibGljIFJUQ1J0cFJlY2Vp
dmVyQmFja2VuZCB7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIHdlYnJ0Yzo6UnRw
UmVjZWl2ZXJJbnRlcmZhY2UqIHJ0Y1JlY2VpdmVyKCkgeyByZXR1cm4gbV9ydGNSZWNlaXZlci5n
ZXQoKTsgfQogCi0gICAgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGNyZWF0ZVNvdXJjZSgpOwor
ICAgIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBjcmVhdGVTb3VyY2UoRG9jdW1lbnQmKTsKIAog
cHJpdmF0ZToKICAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDkwNmMyOTk4NDVkYjAzZjc3MzhlNTgxODUwZDRkMGM0
YWU5YTMwYzYuLjM2MjcyZmZiZTQ3YTFjNmQyYTA2NjQ0NGVhNWYyYzYxMmQ3Y2EwYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dApAQCAtNTI2LDYgKzUyNiw3IEBAIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdC5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdC5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2EuY3BwCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFt
L2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UubW0KIHBsYXRmb3JtL21lZGlhc3RyZWFt
L2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vaW9zL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBm
YjcyMzJkMmIyZTljNDQ2MDU4ZWVjNjRjYTMwNTMwNzdiMDBiYzFhLi4yMjdlNTI4ZWEyNDNlMGQy
OGY1MThhYmNhYTkxMTA1MWIxODI1Yzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTgwLDYgKzExODAsNyBAQAogCQk0MTg2
QkQzRjIxM0VFMzQzMDAwMTgyNkYgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQxQTA0QjIxM0VE
REZFMDA2M0ZCNkIgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgKi87IH07CiAJCTQx
ODZCRDQwMjEzRUUzNDUwMDAxODI2RiAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMUEwNEEy
MTNFRERGRTAwNjNGQjZCIC8qIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAgKi87IH07
CiAJCTQxODZCRDRFMjE0MEI5RTgwMDAxODI2RiAvKiBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJh
Y2tlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE4NkJENEQyMTQwQjlFODAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2Vu
ZC5jcHAgKi87IH07CisJCTQxODc4RkFEMjcyOTQ3MjEwMDJFMUVERCAvKiBCYXNlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTg3OEZBODI3MjgyMDU1MDAyRTFFREQgLyogQmFzZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxODg1QjkzMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3Vi
bWlzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE4ODVCOTExMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4OEQ1NUMyNkM1NEQ2RjAw
NDg1OEM4IC8qIFJUQ0R0bHNUcmFuc3BvcnRCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg4RDU1QTI2QzU0RDZGMDA0ODU4QzggLyogUlRD
RHRsc1RyYW5zcG9ydEJhY2tlbmQuaCAqLzsgfTsKIAkJNDE4OEQ1NjMyNkM1NTFCMTAwNDg1OEM4
IC8qIFJUQ0R0bHNUcmFuc3BvcnRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE4OEQ1NjIyNkM1NTFCMTAwNDg1OEM4IC8qIFJUQ0R0bHNUcmFu
c3BvcnRTdGF0ZS5oICovOyB9OwpAQCAtODE1Myw2ICs4MTU0LDkgQEAKIAkJNDE4NkJENDYyMTQw
NzJCNjAwMDE4MjZGIC8qIFJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4NkJENEIyMTQwQTgwNTAwMDE4MjZGIC8qIExpYldlYlJU
Q1J0cFRyYW5zY2VpdmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE4NkJENEQyMTQwQjlFODAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFj
a2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMaWJXZWJSVENS
dHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1J0cFRy
YW5zY2VpdmVyQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODc4
RkE4MjcyODIwNTUwMDJFMUVERCAvKiBCYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4NzhGQUEyNzI4MjA1NzAwMkUx
RUREIC8qIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODc4RkFCMjcyOTM0RTYwMDJFMUVERCAvKiBJ
bmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyVW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODgwN0RGMjRF
NDU1ODMwMEREQUY5NCAvKiBBYm9ydEFsZ29yaXRobS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWJvcnRBbGdvcml0aG0u
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg4MDdFMTI0RTQ1OEMzMDBEREFG
OTQgLyogQWJvcnRBbGdvcml0aG0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJvcnRBbGdvcml0aG0uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4ODVCOTExMUI2RkRBNjAwMzM4M0JCIC8q
IEZvcm1TdWJtaXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1T
dWJtaXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDE1Miw4ICsyMDE1
NiwxMSBAQAogCQkJCTQxQzNCODlGMjY0OUIxQjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oICovLAogCQkJCTQxQzNCOEEwMjY0OUIxQjcwMDRF
RDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwICovLAogCQkJCTQx
QzNCODlCMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQuaCAqLywKKwkJCQk0MTg3OEZBODI3MjgyMDU1MDAyRTFFREQgLyogQmFzZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oICovLAogCQkJCTA3QkIxRTZFMjcxNzZDQ0EwMDFERjI4
OSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcCAqLywKIAkJCQkwN0JCMUU2RjI3MTc2
Q0NBMDAxREYyODkgLyogRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oICovLAorCQkJCTQxODc4
RkFCMjcyOTM0RTYwMDJFMUVERCAvKiBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyVW5pdC5jcHAgKi8sCisJCQkJNDE4NzhGQUEyNzI4MjA1NzAwMkUxRUREIC8qIEluY29taW5n
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxODg5LDYgKzMxODk2LDcg
QEAKIAkJCQlCQzEyNEVFODBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDYwQkI2MTYxRDBBMUJGMDAwMjIxODEyIC8qIEJhc2U2NFV0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODMxOThGQkYyNEExNjBERDAwNDIwQjA1IC8qIEJhc2VBdWRpb0Nv
bnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxODc4RkFEMjcyOTQ3MjEwMDJFMUVERCAvKiBC
YXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTJERUYxRjIzQTkxOEEzMDBEODQwRjYgLyogQmFzZUF1ZGlvU2hhcmVkVW5pdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzc5RTYxQ0ExMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VCdXR0b25JbnB1
dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUU2MUNDMTI2Q0E1QzQwMEI2M0U4RCAvKiBC
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggZjdkNGU3YWZiODc2NDZhZWU2NjJkNTdlZmY4MjgzY2Q3
YjdjNzc1Yi4uNTE3Y2RiMGE0OWUzZmM2ODQ2MjQyOTBmZTk1ZWRkYjAzMzBjMTJkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNs
dWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvTW9k
dWxlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJNZWRpYVJl
Y29yZGVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcm92aWRlci5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVE
YXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1Nh
bXBsZURhdGFTb3VyY2UuaAppbmRleCA5OWJkMzg2ZmUzNTY1M2M1ZDNlYjM3Y2Q3Y2Y1ZmYwMzNi
NjY4YWNlLi4yY2QyMGQ1OGViYmYzN2RiNjVlYzJiZGM4M2RkZDY3Njg2ZTNlYTE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1Nh
bXBsZURhdGFTb3VyY2UuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwdWxs
U2FtcGxlcyhBdWRpb0J1ZmZlckxpc3QmLCBzaXplX3QsIHVpbnQ2NF90LCBkb3VibGUsIFB1bGxN
b2RlKTsKIAogICAgIGJvb2wgcHVsbEF2YWlsYWJsZVNhbXBsZXNBc0NodW5rcyhBdWRpb0J1ZmZl
ckxpc3QmLCBzaXplX3QgZnJhbWVDb3VudCwgdWludDY0X3QgdGltZVN0YW1wLCBGdW5jdGlvbjx2
b2lkKCk+JiYpOworICAgIGJvb2wgcHVsbEF2YWlsYWJsZVNhbXBsZUNodW5rKEF1ZGlvQnVmZmVy
TGlzdCYsIHNpemVfdCBmcmFtZUNvdW50LCB1aW50NjRfdCB0aW1lU3RhbXAsIFB1bGxNb2RlKTsK
IAogICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkgeyBtX3ZvbHVtZSA9IHZvbHVtZTsg
fQogICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9CkBAIC02OSw2
ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRl
ZDsgfQogCiAgICAgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKiBpbnB1dERlc2NyaXB0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbnB1dERlc2NyaXB0aW9uID8gJm1faW5wdXREZXNjcmlw
dGlvbi52YWx1ZSgpIDogbnVsbHB0cjsgfQorICAgIGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiogb3V0cHV0RGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX291dHB1dERlc2NyaXB0
aW9uID8gJm1fb3V0cHV0RGVzY3JpcHRpb24udmFsdWUoKSA6IG51bGxwdHI7IH0KIAogICAgIHZv
aWQgcmVjb21wdXRlU2FtcGxlT2Zmc2V0KCkgeyBtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVP
ZmZzZXQgPSB0cnVlOyB9CiAKQEAgLTg2LDYgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBPU1N0YXR1
cyBzZXR1cENvbnZlcnRlcigpOwogCiAgICAgdm9pZCBwdXNoU2FtcGxlc0ludGVybmFsKGNvbnN0
IEF1ZGlvQnVmZmVyTGlzdCYsIGNvbnN0IE1lZGlhVGltZSYsIHNpemVfdCBmcmFtZUNvdW50KTsK
KyAgICBib29sIHB1bGxTYW1wbGVzSW50ZXJuYWwoQXVkaW9CdWZmZXJMaXN0Jiwgc2l6ZV90IHNh
bXBsZUNvdW50LCB1aW50NjRfdCB0aW1lU3RhbXAsIFB1bGxNb2RlKTsKIAogICAgIHN0ZDo6b3B0
aW9uYWw8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPiBtX2lucHV0RGVzY3JpcHRpb247CiAgICAg
c3RkOjpvcHRpb25hbDxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0RGVzY3JpcHRp
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b1NhbXBsZURhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KaW5kZXggMDVhODNkNzIwOTE2MTE3YTA0Y2ZkMjhm
MjA4ZGNiYmUzZDAyZmZmNy4uZjAxMGQzY2NjYmVhNTU3NTU4MmNhZDQ0YzNmZDJhMjE0YWM2MmYy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9T
YW1wbGVEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQpAQCAtMjg2LDYgKzI4NiwxMSBAQCBib29sIEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXMoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIs
IHNpemVfdCBzYW1wbGVDbwogCiAgICAgbV9pc0ZpcnN0UHVsbCA9IGZhbHNlOwogCisgICAgcmV0
dXJuIHB1bGxTYW1wbGVzSW50ZXJuYWwoYnVmZmVyLCBzYW1wbGVDb3VudCwgdGltZVN0YW1wLCBt
b2RlKTsKK30KKworYm9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxTYW1wbGVzSW50ZXJu
YWwoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIsIHNpemVfdCBzYW1wbGVDb3VudCwgdWludDY0X3Qg
dGltZVN0YW1wLCBQdWxsTW9kZSBtb2RlKQorewogICAgIGlmIChtb2RlID09IENvcHkpIHsKICAg
ICAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaCgmYnVmZmVyLCBzYW1wbGVDb3VudCwgdGltZVN0YW1w
LCBDQVJpbmdCdWZmZXI6OkNvcHkpOwogICAgICAgICBpZiAobV92b2x1bWUgPCBFcXVpdmFsZW50
VG9NYXhWb2x1bWUpCkBAIC0zMDksNiArMzE0LDI1IEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpwdWxsU2FtcGxlcyhBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNv
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxs
QXZhaWxhYmxlU2FtcGxlQ2h1bmsoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIsIHNpemVfdCBzYW1w
bGVDb3VudCwgdWludDY0X3QgdGltZVN0YW1wLCBQdWxsTW9kZSBtb2RlKQoreworICAgIEFTU0VS
VChidWZmZXIubU51bWJlckJ1ZmZlcnMgPT0gbV9yaW5nQnVmZmVyLT5jaGFubmVsQ291bnQoKSk7
CisgICAgaWYgKGJ1ZmZlci5tTnVtYmVyQnVmZmVycyAhPSBtX3JpbmdCdWZmZXItPmNoYW5uZWxD
b3VudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9tdXRlZCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9m
ZnNldCkgeworICAgICAgICBtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVPZmZzZXQgPSBmYWxz
ZTsKKyAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZzZXQgPSBtX2lucHV0U2FtcGxlT2Zmc2V0LnRp
bWVWYWx1ZSgpICogbV9vdXRwdXREZXNjcmlwdGlvbi0+c2FtcGxlUmF0ZSgpIC8gbV9pbnB1dFNh
bXBsZU9mZnNldC50aW1lU2NhbGUoKTsKKyAgICB9CisKKyAgICB0aW1lU3RhbXAgKz0gbV9vdXRw
dXRTYW1wbGVPZmZzZXQ7CisKKyAgICByZXR1cm4gcHVsbFNhbXBsZXNJbnRlcm5hbChidWZmZXIs
IHNhbXBsZUNvdW50LCB0aW1lU3RhbXAsIG1vZGUpOworfQorCiBib29sIEF1ZGlvU2FtcGxlRGF0
YVNvdXJjZTo6cHVsbEF2YWlsYWJsZVNhbXBsZXNBc0NodW5rcyhBdWRpb0J1ZmZlckxpc3QmIGJ1
ZmZlciwgc2l6ZV90IHNhbXBsZUNvdW50UGVyQ2h1bmssIHVpbnQ2NF90IHRpbWVTdGFtcCwgRnVu
Y3Rpb248dm9pZCgpPiYmIGNvbnN1bWVGaWxsZWRCdWZmZXIpCiB7CiAgICAgQVNTRVJUKGJ1ZmZl
ci5tTnVtYmVyQnVmZmVycyA9PSBtX3JpbmdCdWZmZXItPmNoYW5uZWxDb3VudCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAppbmRleCBlNThhY2U2Mzg5ZWIyZWJm
Y2IyZjVkNDRmNDMxODJkNmMwYjU1NjcxLi40ZDc5OGFlMTFjODg0OTE0YmU1NjA2ZDg5MzJiZjAw
OTBiMGM0MWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCkBA
IC00MCwzMSArNDAsMjggQEAgY2xhc3MgTWVkaWFUaW1lOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpSZW5kZXJlckNyZWF0b3IgQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6Om1fcmVuZGVyZXJDcmVhdG9yID0gbnVsbHB0cjsKLXZv
aWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnNldENyZWF0b3IoUmVuZGVyZXJDcmVh
dG9yIGNyZWF0b3IpCitzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXI+IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpjcmVhdGUoSW5pdCYmIGluaXQpCiB7
Ci0gICAgbV9yZW5kZXJlckNyZWF0b3IgPSBjcmVhdG9yOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyOjpjcmVhdGUoKQotewotICAgIGlmIChtX3JlbmRlcmVyQ3JlYXRvcikKLSAgICAgICAgcmV0
dXJuIG1fcmVuZGVyZXJDcmVhdG9yKCk7Ci0KICNpZiBQTEFURk9STShDT0NPQSkKLSAgICByZXR1
cm4gbWFrZVVuaXF1ZTxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hPigpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E+KFdU
Rk1vdmUoaW5pdCkpOwogI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogfQogCitB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXIoSW5pdCYmIGluaXQpCisgICAgOiBtX2NyYXNoQ2FsbGJhY2soV1RGTW92ZShpbml0LmNyYXNo
Q2FsbGJhY2spKQorI2lmIFVTRShMSUJXRUJSVEMpCisgICAgLCBtX2F1ZGlvTW9kdWxlKFdURk1v
dmUoaW5pdC5hdWRpb01vZHVsZSkpCisjZW5kaWYKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
LXZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnNldExvZ2dlcihjb25zdCBMb2dn
ZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogaWRlbnRpZmllcikKKyAgICAsIG1fbG9nZ2VyKGluaXQu
bG9nZ2VyKQorICAgICwgbV9sb2dJZGVudGlmaWVyKGluaXQubG9nSWRlbnRpZmllcikKKyNlbmRp
ZgogewotICAgIG1fbG9nZ2VyID0gJmxvZ2dlcjsKLSAgICBtX2xvZ0lkZW50aWZpZXIgPSBpZGVu
dGlmaWVyOwogfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBXVEZMb2dDaGFubmVsJiBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6bG9nQ2hhbm5lbCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIExvZ01lZGlhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmgKaW5k
ZXggMDk3Mjc2OGRlZmViZWJhOGYwMjg0ODU5MjJhZDZiMTgxMWZjYTMwYi4uNmQ4YTFiYjkyMjEy
NWVmODQzMjBkODhlOWM1ZGEzOWY1MDY0ZTFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlci5oCkBAIC0zNywxMiArMzcsMjMgQEAgY2xhc3MgTWVkaWFUaW1lOwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworY2xhc3MgTGli
V2ViUlRDQXVkaW9Nb2R1bGU7CiBjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0YTsKIAogY2xhc3MgV0VC
Q09SRV9FWFBPUlQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIgOiBwdWJsaWMgTG9nZ2Vy
SGVscGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyPiBjcmVhdGUo
KTsKKyAgICBzdHJ1Y3QgSW5pdCB7CisgICAgICAgIEZ1bmN0aW9uPHZvaWQoKT4mJiBjcmFzaENh
bGxiYWNrOworI2lmIFVTRShMSUJXRUJSVEMpCisgICAgICAgIFJlZlB0cjxMaWJXZWJSVENBdWRp
b01vZHVsZT4gYXVkaW9Nb2R1bGU7CisjZW5kaWYKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
KyAgICAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXI7CisgICAgICAgIGNvbnN0IHZvaWQqIGxvZ0lk
ZW50aWZpZXI7CisjZW5kaWYKKyAgICB9OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+IGNyZWF0ZShJbml0JiYpOwogICAgIHZpcnR1YWwg
fkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwpAQCAtNTYsMTYg
KzY3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldEF1ZGlvT3V0cHV0RGV2aWNl
KGNvbnN0IFN0cmluZyYpOwogCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgdm9pZCBz
ZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopOwotI2VuZGlmCi0KLSAgICB1c2lu
ZyBSZW5kZXJlckNyZWF0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXI+ICgqKSgpOwotICAgIHN0YXRpYyB2b2lkIHNldENyZWF0b3IoUmVuZGVyZXJDcmVh
dG9yKTsKLQotICAgIHZvaWQgc2V0Q3Jhc2hDYWxsYmFjayhGdW5jdGlvbjx2b2lkKCk+JiYgY2Fs
bGJhY2spIHsgbV9jcmFzaENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KLQogcHJvdGVj
dGVkOgorICAgIGV4cGxpY2l0IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyKEluaXQmJik7
CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigp
IGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5h
bDsKQEAgLTc0LDE3ICs3OCwyMyBAQCBwcm90ZWN0ZWQ6CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9n
Q2hhbm5lbCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKKyNpZiBVU0UoTElCV0VCUlRDKQorICAg
IExpYldlYlJUQ0F1ZGlvTW9kdWxlKiBhdWRpb01vZHVsZSgpOworI2VuZGlmCisKICAgICB2b2lk
IGNyYXNoZWQoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVuZGVyZXJDcmVhdG9yIG1fcmVu
ZGVyZXJDcmVhdG9yOwotCiAgICAgLy8gTWFpbiB0aHJlYWQgd3JpdGFibGUgbWVtYmVycwogICAg
IGZsb2F0IG1fdm9sdW1lIHsgMSB9OwogICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9jcmFzaENhbGxi
YWNrOwogCisjaWYgVVNFKExJQldFQlJUQykKKyAgICBSZWZQdHI8TGliV2ViUlRDQXVkaW9Nb2R1
bGU+IG1fYXVkaW9Nb2R1bGU7CisjZW5kaWYKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAot
ICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAgIFJlZjxjb25zdCBMb2dnZXI+
IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKICNlbmRpZgogfTsK
QEAgLTEwNSwxMCArMTE1LDE3IEBAIGlubGluZSB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyOjpjcmFzaGVkKCkKICAgICAgICAgbV9jcmFzaENhbGxiYWNrKCk7CiB9CiAKKyNpZiBV
U0UoTElCV0VCUlRDKQoraW5saW5lIExpYldlYlJUQ0F1ZGlvTW9kdWxlKiBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlcjo6YXVkaW9Nb2R1bGUoKQoreworICAgIHJldHVybiBtX2F1ZGlvTW9k
dWxlLmdldCgpOworfQorI2VuZGlmCisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIGlubGlu
ZSBjb25zdCBMb2dnZXImIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpsb2dnZXIoKSBj
b25zdAogewotICAgIHJldHVybiAqbV9sb2dnZXI7CisgICAgcmV0dXJuIG1fbG9nZ2VyLmdldCgp
OwogICAgIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwCmluZGV4
IDE2MjQ5ODA5NTEyMmY0ZjRiMDUyMDVlNzFmYjdjYzViOTBlNGJmOTIuLmE0NzEyZDNjMDFjNzQ1
OGM4MjY1YzJhY2M0MDNiODUxMTE3MTg3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW0uY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAogI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmgiCisjaW5jbHVkZSAi
TGliV2ViUlRDQXVkaW9Nb2R1bGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAi
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNDgsMjAgKzUwLDMxIEBAIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06On5BdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtKCkKICAgICBjbGVhcigpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW06OmNyZWF0ZVJlbmRlcmVyKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0mIHN0cmVh
bSkKKyNpZiBVU0UoTElCV0VCUlRDKQorc3RhdGljIFJlZlB0cjxMaWJXZWJSVENBdWRpb01vZHVs
ZT4gYXVkaW9Nb2R1bGVGcm9tU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2UmIHNvdXJjZSkKIHsK
LSAgICBhdXRvIHJlbmRlcmVyID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmNyZWF0
ZSgpOwotICAgIGlmICghcmVuZGVyZXIpCisgICAgaWYgKCFpczxSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U+KHNvdXJjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorICAgIHJldHVybiBkb3duY2FzdDxSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U+KHNvdXJjZSkuYXVkaW9Nb2R1bGUoKTsKK30KKyNlbmRpZgorCitzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW06OmNyZWF0ZVJlbmRlcmVyKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0mIHN0cmVh
bSkKK3sKICAgICBhdXRvJiB0cmFjayA9IHN0cmVhbS5tX3N0cmVhbVRyYWNrLmdldCgpOwotICAg
IHJlbmRlcmVyLT5zZXRMb2dnZXIodHJhY2subG9nZ2VyKCksIHRyYWNrLmxvZ0lkZW50aWZpZXIo
KSk7CisgICAgcmV0dXJuIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpjcmVhdGUoQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OkluaXQgeworICAgICAgICBbc3RyZWFtID0gV2Vh
a1B0ciB7IHN0cmVhbSB9XSB7CisgICAgICAgICAgICBpZiAoc3RyZWFtKQorICAgICAgICAgICAg
ICAgIHN0cmVhbS0+Y3JlYXRlTmV3UmVuZGVyZXIoKTsKKyAgICAgICAgfQorI2lmIFVTRShMSUJX
RUJSVEMpCisgICAgICAgICwgYXVkaW9Nb2R1bGVGcm9tU291cmNlKHN0cmVhbS5tX2F1ZGlvU291
cmNlLmdldCgpKQorI2VuZGlmCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgICAgICwg
dHJhY2subG9nZ2VyKCkKKyAgICAgICAgLCB0cmFjay5sb2dJZGVudGlmaWVyKCkKICNlbmRpZgot
ICAgIHJlbmRlcmVyLT5zZXRDcmFzaENhbGxiYWNrKFtzdHJlYW0gPSBXZWFrUHRyIHsgc3RyZWFt
IH1dIHsKLSAgICAgICAgaWYgKHN0cmVhbSkKLSAgICAgICAgICAgIHN0cmVhbS0+Y3JlYXRlTmV3
UmVuZGVyZXIoKTsKICAgICB9KTsKLSAgICByZXR1cm4gcmVuZGVyZXI7CiB9CiAKIHZvaWQgQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6Y2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZS5jcHAKaW5kZXggNDgzNGU3ZjA3Y2U3MDk3ZDA1NmRkNjQ5NTliMzc2ZGZkMGE0
YmE2NS4uMTE5YzMwNTA5ZjQ5MTQ1MDA0MzE1NDFlODI3NTBhODljMGNjNjYxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaWYgVVNF
KExJQldFQlJUQykKIAogI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCisjaW5jbHVk
ZSAiTGliV2ViUlRDQXVkaW9Nb2R1bGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTgwLDYgKzgxLDEyIEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXR0aW5ncygpCiAgICAg
cmV0dXJuIG1fY3VycmVudFNldHRpbmdzOwogfQogCit2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6c2V0QXVkaW9Nb2R1bGUoUmVmUHRyPExpYldlYlJUQ0F1ZGlvTW9kdWxlPiYmIGF1
ZGlvTW9kdWxlKQoreworICAgIEFTU0VSVCghbV9hdWRpb01vZHVsZSk7CisgICAgbV9hdWRpb01v
ZHVsZSA9IFdURk1vdmUoYXVkaW9Nb2R1bGUpOworfQorCiB9CiAKICNlbmRpZiAvLyBVU0UoTElC
V0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaAppbmRleCBhMThmYzIxNjA4
YzFjZDU5NmE1NDQ1NTAzMjhiODA1MjEzYjhhNGYwLi5hODVjZWIxMmM0ZWJhMWZiNjg1ODM4ODNk
NWNiNjJjOTcwYWVmOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaApAQCAt
NDUsNiArNDUsOCBAQCBBTExPV19VTlVTRURfUEFSQU1FVEVSU19FTkQKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBMaWJXZWJSVENBdWRpb01vZHVsZTsKKwogY2xhc3MgUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlCiAgICAgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZQogICAg
ICwgcHJpdmF0ZSB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlCkBAIC01Myw2ICs1NSw5
IEBAIGNsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZQogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYpOwogCisgICAgdm9p
ZCBzZXRBdWRpb01vZHVsZShSZWZQdHI8TGliV2ViUlRDQXVkaW9Nb2R1bGU+JiYpOworICAgIExp
YldlYlJUQ0F1ZGlvTW9kdWxlKiBhdWRpb01vZHVsZSgpIHsgcmV0dXJuIG1fYXVkaW9Nb2R1bGUu
Z2V0KCk7IH0KKwogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcm
Jik7CiAgICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpOwpAQCAtNzksNiArODQsNyBA
QCBwcml2YXRlOgogCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIG1fY3VycmVudFNl
dHRpbmdzOwogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZh
Y2U+IG1fYXVkaW9UcmFjazsKKyAgICBSZWZQdHI8TGliV2ViUlRDQXVkaW9Nb2R1bGU+IG1fYXVk
aW9Nb2R1bGU7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBtdXRhYmxlIFJlZlB0
cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2Nv
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcAppbmRleCBiMjA1MzM0ZDgzNzA5YWY5Zjc2
N2ViYzAwZTJjMjE4MmZhMmNhNWZjLi43ZmIyMmM4ZDc3MWE0Y2Y1YzMzZTUwOWU1Mzk3ZWJlZWFl
ZTA3NzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9j
b2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hLmNwcApAQCAtMzYsOCArMzYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyQ29jb2EoKQotICAgIDogbV9yZXNldE9ic2VydmVyKFt0aGlzXSB7IHJlc2V0
KCk7IH0pCitBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckNvY29hKEluaXQmJiBpbml0KQorICAgIDogQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIoV1RGTW92ZShpbml0KSkKKyAgICAsIG1fcmVzZXRPYnNlcnZlcihbdGhp
c10geyByZXNldCgpOyB9KQogewogfQogCkBAIC01NCwxMCArNTUsMTcgQEAgdm9pZCBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpzdGFydChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY2FsbGIKICAgICB9KTsKIH0KIAorQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyVW5pdCYgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6cmVuZGVyZXJVbml0
KCkKK3sKKyAgICBpZiAoYXV0byogYXVkaW9Nb2R1bGUgPSB0aGlzLT5hdWRpb01vZHVsZSgpKQor
ICAgICAgICByZXR1cm4gYXVkaW9Nb2R1bGUtPmluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJVbml0KCk7CisgICAgcmV0dXJuIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
VW5pdDo6c2luZ2xldG9uKCk7Cit9CisKIHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJDb2NvYTo6c3RvcCgpCiB7CiAgICAgaWYgKG1fZGF0YVNvdXJjZSkKLSAgICAgICAgQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzaW5nbGV0b24oKS5yZW1vdmVTb3VyY2UoKm1f
ZGF0YVNvdXJjZSk7CisgICAgICAgIHJlbmRlcmVyVW5pdCgpLnJlbW92ZVNvdXJjZSgqbV9kYXRh
U291cmNlKTsKIH0KIAogdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpj
bGVhcigpCkBAIC04NCw3ICs5Miw3IEBAIHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJDb2NvYTo6cmVzZXQoKQogdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
OjpzZXRBdWRpb091dHB1dERldmljZShjb25zdCBTdHJpbmcmIGRldmljZUlkKQogewogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgY3JlYXRlIGEgdW5pdCBmb3Igb3Vyc2VsdmVzIGhlcmUgb3IgdXNl
IHRoZSBkZWZhdWx0IHVuaXQgaWYgZGV2aWNlSWQgaXMgbWF0Y2hpbmcuCi0gICAgQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzaW5nbGV0b24oKS5zZXRBdWRpb091dHB1dERldmlj
ZShkZXZpY2VJZCk7CisgICAgcmVuZGVyZXJVbml0KCkuc2V0QXVkaW9PdXRwdXREZXZpY2UoZGV2
aWNlSWQpOwogICAgIG1fc2hvdWxkUmVjcmVhdGVEYXRhU291cmNlID0gdHJ1ZTsKIH0KIApAQCAt
MTI2LDExICsxMzQsMTEgQEAgdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
OjpwdXNoU2FtcGxlcyhjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUKICAgICAgICAgICAgIG5l
d1NvdXJjZS0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOwogI2VuZGlmCiAg
ICAgICAgICAgICBpZiAob2xkU291cmNlKQotICAgICAgICAgICAgICAgIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdDo6c2luZ2xldG9uKCkucmVtb3ZlU291cmNlKCpvbGRTb3VyY2Up
OworICAgICAgICAgICAgICAgIHJlbmRlcmVyVW5pdCgpLnJlbW92ZVNvdXJjZSgqb2xkU291cmNl
KTsKIAogICAgICAgICAgICAgbmV3U291cmNlLT5zZXRWb2x1bWUodm9sdW1lKCkpOwotICAgICAg
ICAgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzaW5nbGV0b24oKS5hZGRS
ZXNldE9ic2VydmVyKG1fcmVzZXRPYnNlcnZlcik7Ci0gICAgICAgICAgICBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRvbigpLmFkZFNvdXJjZShXVEZNb3ZlKG5ld1Nv
dXJjZSkpOworICAgICAgICAgICAgcmVuZGVyZXJVbml0KCkuYWRkUmVzZXRPYnNlcnZlcihtX3Jl
c2V0T2JzZXJ2ZXIpOworICAgICAgICAgICAgcmVuZGVyZXJVbml0KCkuYWRkU291cmNlKFdURk1v
dmUobmV3U291cmNlKSk7CiAgICAgICAgIH0pOwogICAgICAgICBtX2RhdGFTb3VyY2UgPSBXVEZN
b3ZlKGRhdGFTb3VyY2UpOwogICAgICAgICBtX3Nob3VsZFJlY3JlYXRlRGF0YVNvdXJjZSA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29j
b2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJD
b2NvYS5oCmluZGV4IDNhN2IzZGM5MTMyZTZmNDEyMTRlYTg0NzVhY2VlM2MwMTFlMmNlM2QuLjY0
NjY5ODc3NDk1YjY5OWY3YmI2YTM1NDkwYzI0OTMzMzAxNjkxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmgKQEAgLTM5LDEyICsz
OSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvU2FtcGxlRGF0YVNvdXJj
ZTsKIGNsYXNzIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDsKK2NsYXNzIEJhc2VBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQ7CiBjbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiAK
IGNsYXNzIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EgOiBwdWJsaWMgQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLCBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0aW9uOjpF
YWdlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EoKTsKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckNvY29hKEluaXQmJik7CiAgICAgfkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyQ29jb2EoKTsKIAogcHJpdmF0ZToKQEAgLTU4LDYgKzU5LDggQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgcmVzZXQoKTsKIAorICAgIEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQmIHJlbmRlcmVyVW5pdCgpOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbj4gbV9vdXRwdXREZXNjcmlwdGlvbjsKICAgICBSZWZQdHI8QXVkaW9TYW1wbGVE
YXRhU291cmNlPiBtX2RhdGFTb3VyY2U7CiAgICAgYm9vbCBtX3Nob3VsZFJlY3JlYXRlRGF0YVNv
dXJjZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdC5oCmluZGV4IDVmMzBiOWJkNDYyYWQyM2I2NzAxMzI5OTRlNDhkNmZmOTVi
NzA0ZDYuLjNmMDliZTgxODU4YWQ5MGRlMDhlZGM2MTYwNGEzNjM5ZWRmODA0NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oCkBAIC0y
OCwxMCArMjgsOSBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oIgotI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSAiQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5p
dC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNp
bmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgpAQCAtNDMs
NyArNDIsNyBAQCBjbGFzcyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q7CiBjbGFzcyBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb247CiBjbGFzcyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdDsKIAotY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IHsKK2Ns
YXNzIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCA6IHB1YmxpYyBCYXNlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0JiBzaW5nbGV0b24oKTsK
IApAQCAtNTYsMTUgKzU1LDE0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bmRlcihzaXplX3Qgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCYsIHVpbnQ2NF90IHNhbXBs
ZVRpbWUsIGRvdWJsZSBob3N0VGltZSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MmKTsKICAg
ICB2b2lkIHJlc2V0KCk7CiAKLSAgICB2b2lkIHNldEF1ZGlvT3V0cHV0RGV2aWNlKGNvbnN0IFN0
cmluZyYpOwotCi0gICAgdm9pZCBhZGRTb3VyY2UoUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4m
Jik7Ci0gICAgdm9pZCByZW1vdmVTb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJik7Ci0KLSAg
ICB1c2luZyBSZXNldE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZCgpPjsKLSAgICB2b2lkIGFkZFJl
c2V0T2JzZXJ2ZXIoUmVzZXRPYnNlcnZlciYgb2JzZXJ2ZXIpIHsgbV9yZXNldE9ic2VydmVycy5h
ZGQob2JzZXJ2ZXIpOyB9CiAgICAgdm9pZCByZXRyaWV2ZUZvcm1hdERlc2NyaXB0aW9uKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKik+JiYpOwog
CisgICAgLy8gQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdAorICAgIHZvaWQg
c2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBhZGRT
b3VyY2UoUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4mJikgZmluYWw7CisgICAgdm9pZCByZW1v
dmVTb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJikgZmluYWw7CisgICAgdm9pZCBhZGRSZXNl
dE9ic2VydmVyKFJlc2V0T2JzZXJ2ZXImIG9ic2VydmVyKSBmaW5hbCB7IG1fcmVzZXRPYnNlcnZl
cnMuYWRkKG9ic2VydmVyKTsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2
b2lkIHN0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2NvY29hL0Jhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Jhc2VBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlclVuaXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjc2NTNhMDNmNTZlZTkwZmU2ZmVhZTY3
MDYyYTZmODk4NWMxMjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vY29jb2EvQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5p
dC5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9PYnNlcnZlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvU2Ft
cGxlRGF0YVNvdXJjZTsKKworY2xhc3MgQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
VW5pdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyVW5pdCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBhZGRTb3VyY2UoUmVm
PEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVT
b3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNl
dEF1ZGlvT3V0cHV0RGV2aWNlKGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIHVzaW5nIFJlc2V0
T2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKCk+OworICAgIHZpcnR1YWwgdm9pZCBhZGRSZXNldE9i
c2VydmVyKFJlc2V0T2JzZXJ2ZXImKSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vY29jb2EvSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvSW5jb21pbmdBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjNTAwYjE0ZjE1
NmUxZTg2Y2E2NWM5N2VlZTIxNDU1MjA0MGVhY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdC5jcHAKQEAgLTAsMCArMSwyMDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlclVuaXQuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRl
ICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCIKKyNpbmNsdWRlICJBdWRpb1Nh
bXBsZURhdGFTb3VyY2UuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRpb0Zvcm1hdC5oIgorI2lu
Y2x1ZGUgIkxpYldlYlJUQ0F1ZGlvTW9kdWxlLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgorI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24v
TWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCisj
aW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OkluY29taW5n
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0KExpYldlYlJUQ0F1ZGlvTW9kdWxlJiBh
dWRpb01vZHVsZSkKKyAgICA6IG1fYXVkaW9Nb2R1bGUoYXVkaW9Nb2R1bGUpCisgICAgLCBtX3F1
ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyVW5pdCIsIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW5pdGlhdGVkKSkKKyNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKKyAgICAsIG1fbG9nSWRlbnRpZmllcihMb2dnZXJIZWxwZXI6OnVuaXF1ZUxv
Z0lkZW50aWZpZXIoKSkKKyNlbmRpZgoreworfQorCitJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyVW5pdDo6fkluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0KCkKK3sKK30KKwordm9pZCBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
VW5pdDo6c2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCkKK3sKKyAg
ICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRvbigpLnNldEF1ZGlv
T3V0cHV0RGV2aWNlKGRldmljZUlEKTsKK30KKwordm9pZCBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdDo6YWRkUmVzZXRPYnNlcnZlcihSZXNldE9ic2VydmVyJiBvYnNl
cnZlcikKK3sKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRv
bigpLmFkZFJlc2V0T2JzZXJ2ZXIob2JzZXJ2ZXIpOworfQorCit2b2lkIEluY29taW5nQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjphZGRTb3VyY2UoUmVmPEF1ZGlvU2FtcGxlRGF0
YVNvdXJjZT4mJiBzb3VyY2UpCit7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgc291
cmNlLT5sb2dnZXIoKS5sb2dBbHdheXMoTG9nV2ViUlRDLCAiSW5jb21pbmdBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQ6OmFkZFNvdXJjZSAiLCBzb3VyY2UtPmxvZ0lkZW50aWZpZXIo
KSk7CisjZW5kaWYKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorICAgICAgICBpZiAoIW1fbG9nZ2VyKQorICAgICAgICAgICAgbV9sb2dnZXIg
PSAmc291cmNlLT5sb2dnZXIoKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKHNvdXJjZS0+b3V0cHV0
RGVzY3JpcHRpb24oKSk7CisgICAgaWYgKCFzb3VyY2UtPm91dHB1dERlc2NyaXB0aW9uKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBhdXRvIG91dHB1dERlc2NyaXB0aW9uID0gKnNvdXJjZS0+b3V0
cHV0RGVzY3JpcHRpb24oKTsKKworICAgIEFTU0VSVCghbV9zb3VyY2VzLmNvbnRhaW5zKHNvdXJj
ZS5nZXQoKSkpOworICAgIGJvb2wgc2hvdWxkU3RhcnQgPSBtX3NvdXJjZXMuaXNFbXB0eSgpOwor
ICAgIG1fc291cmNlcy5hZGQoV1RGTW92ZShzb3VyY2UpKTsKKworICAgIHBvc3RUYXNrKFt0aGlz
LCBuZXdTb3VyY2VzID0gY29weVRvVmVjdG9yKG1fc291cmNlcyksIHNob3VsZFN0YXJ0LCBvdXRw
dXREZXNjcmlwdGlvbl0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9yZW5kZXJTb3VyY2VzID0gV1RG
TW92ZShuZXdTb3VyY2VzKTsKKyAgICAgICAgaWYgKCFzaG91bGRTdGFydCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uID0gb3V0cHV0RGVz
Y3JpcHRpb247CisgICAgICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJBdWRp
b0J1ZmZlckxpc3Q+KG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24pOworICAgICAgICBtX3NhbXBs
ZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgLyAxMDA7Cisg
ICAgICAgIG1fYXVkaW9CdWZmZXJMaXN0LT5zZXRTYW1wbGVDb3VudChtX3NhbXBsZUNvdW50KTsK
KyAgICAgICAgbV9taXhlZFNvdXJjZSA9IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKG1f
b3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMC41LCAqdGhpcywgTGliV2Vi
UlRDQXVkaW9Nb2R1bGU6OlBvbGxTYW1wbGVzQ291bnQgKyAxKTsKKyAgICAgICAgbV9taXhlZFNv
dXJjZS0+c2V0SW5wdXRGb3JtYXQob3V0cHV0RGVzY3JpcHRpb24pOworICAgICAgICBtX21peGVk
U291cmNlLT5zZXRPdXRwdXRGb3JtYXQob3V0cHV0RGVzY3JpcHRpb24pOworICAgICAgICBtX3dy
aXRlQ291bnQgPSAwOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRN
b2R1bGUgPSBSZWYgeyBtX2F1ZGlvTW9kdWxlIH0sIHNvdXJjZSA9IG1fbWl4ZWRTb3VyY2VdKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBtX3JlZ2lzdGVyZWRNaXhlZFNvdXJjZSA9IFdURk1vdmUo
c291cmNlKTsKKyAgICAgICAgICAgIHN0YXJ0KCk7CisgICAgICAgIH0pOworICAgIH0pOworfQor
Cit2b2lkIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpyZW1vdmVT
b3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJiBzb3VyY2UpCit7CisjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECisgICAgc291cmNlLmxvZ2dlcigpLmxvZ0Fsd2F5cyhMb2dXZWJSVEMsICJJbmNv
bWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6cmVtb3ZlU291cmNlICIsIHNv
dXJjZS5sb2dJZGVudGlmaWVyKCkpOworI2VuZGlmCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGJvb2wgc2hvdWxkU3RvcCA9ICFtX3NvdXJjZXMuaXNFbXB0eSgpOworICAgIG1f
c291cmNlcy5yZW1vdmUoc291cmNlKTsKKyAgICBzaG91bGRTdG9wICY9IG1fc291cmNlcy5pc0Vt
cHR5KCk7CisKKyAgICBwb3N0VGFzayhbdGhpcywgbmV3U291cmNlcyA9IGNvcHlUb1ZlY3Rvciht
X3NvdXJjZXMpLCBzaG91bGRTdG9wXSgpIG11dGFibGUgeworICAgICAgICBtX3JlbmRlclNvdXJj
ZXMgPSBXVEZNb3ZlKG5ld1NvdXJjZXMpOworICAgICAgICBpZiAoIXNob3VsZFN0b3ApCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVj
dGVkTW9kdWxlID0gUmVmIHsgbV9hdWRpb01vZHVsZSB9XSB7CisgICAgICAgICAgICBzdG9wKCk7
CisgICAgICAgIH0pOworICAgIH0pOworCit9CisKK3ZvaWQgSW5jb21pbmdBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnN0YXJ0KCkKK3sKKyAgICBSRUxFQVNFX0xPRyhXZWJSVEMs
ICJJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c3RhcnQiKTsKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJVbml0OjpzaW5nbGV0b24oKS5hZGRTb3VyY2UoKm1fcmVnaXN0ZXJlZE1peGVkU291cmNl
KTsKKyAgICBtX2F1ZGlvTW9kdWxlLnN0YXJ0SW5jb21pbmdBdWRpb1JlbmRlcmluZygpOworfQor
Cit2b2lkIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzdG9wKCkK
K3sKKyAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdDo6c3RvcCIpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAg
ICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRvbigpLnJlbW92ZVNv
dXJjZSgqbV9yZWdpc3RlcmVkTWl4ZWRTb3VyY2UpOworICAgIG1fcmVnaXN0ZXJlZE1peGVkU291
cmNlID0gbnVsbHB0cjsKKyAgICBtX2F1ZGlvTW9kdWxlLnN0b3BJbmNvbWluZ0F1ZGlvUmVuZGVy
aW5nKCk7Cit9CisKK3ZvaWQgSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQ6OnBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICAvLyBXZSBw
cm90ZWN0ICd0aGlzJyBieSB0YWtpbmcgYSByZWYgdG8gaXRzIGF1ZGlvIG1vZHVsZS4KKyAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkTW9kdWxlID0gUmVmIHsgbV9hdWRpb01vZHVsZSB9
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBjYWxs
YmFjaygpOworICAgIH0pOworfQorCit2b2lkIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJVbml0OjpuZXdBdWRpb0NodW5rUHVzaGVkKCkKK3sKKyAgICBEaXNhYmxlTWFsbG9j
UmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlIGRpc2FibGVNYWxsb2NSZXN0cmljdGlv
bnM7CisgICAgcG9zdFRhc2soW3RoaXMsIGN1cnJlbnRBdWRpb1NhbXBsZUNvdW50ID0gbV9hdWRp
b01vZHVsZS5jdXJyZW50QXVkaW9TYW1wbGVDb3VudCgpXSB7CisgICAgICAgIHJlbmRlckF1ZGlv
Q2h1bmsoY3VycmVudEF1ZGlvU2FtcGxlQ291bnQpOworICAgIH0pOworfQorCit2b2lkIEluY29t
aW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpyZW5kZXJBdWRpb0NodW5rKHVp
bnQ2NF90IGN1cnJlbnRBdWRpb1NhbXBsZUNvdW50KQoreworICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOworCisgICAgaWYgKG1fcmVuZGVyU291cmNlcy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIHVpbnQ2NF90IHRpbWVTdGFtcCA9IGN1cnJlbnRBdWRpb1NhbXBsZUNvdW50
ICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgLyBMaWJXZWJSVENBdWRp
b0Zvcm1hdDo6c2FtcGxlUmF0ZTsKKworICAgIC8vIE1peCBhbGwgc291cmNlcy4KKyAgICBib29s
IGlzRmlyc3RTb3VyY2UgPSB0cnVlOworICAgIGZvciAoYXV0byYgc291cmNlIDogbV9yZW5kZXJT
b3VyY2VzKSB7CisgICAgICAgIGlmIChzb3VyY2UtPnB1bGxBdmFpbGFibGVTYW1wbGVDaHVuaygq
bV9hdWRpb0J1ZmZlckxpc3QsIG1fc2FtcGxlQ291bnQsIHRpbWVTdGFtcCwgaXNGaXJzdFNvdXJj
ZSA/IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Q29weSA6IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6
TWl4KSkKKyAgICAgICAgICAgIGlzRmlyc3RTb3VyY2UgPSBmYWxzZTsKKyAgICB9CisKKyAgICBD
TVRpbWUgc3RhcnRUaW1lID0gUEFMOjpDTVRpbWVNYWtlKG1fd3JpdGVDb3VudCwgbV9vdXRwdXRT
dHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkpOworICAgIG1fbWl4ZWRTb3VyY2UtPnB1c2hT
YW1wbGVzKFBBTDo6dG9NZWRpYVRpbWUoc3RhcnRUaW1lKSwgKm1fYXVkaW9CdWZmZXJMaXN0LCBt
X3NhbXBsZUNvdW50KTsKKyAgICBtX3dyaXRlQ291bnQgKz0gbV9zYW1wbGVDb3VudDsKK30KKwor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorY29uc3QgTG9nZ2VyJiBJbmNvbWluZ0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6bG9nZ2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Km1fbG9nZ2VyOworfQorCitXVEZMb2dDaGFubmVsJiBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyVW5pdDo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ1dl
YlJUQzsKK30KKworY29uc3Qgdm9pZCogSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlclVuaXQ6OmxvZ0lkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2xvZ0lkZW50
aWZpZXI7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2NvY29hL0luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWlu
Z0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzOWU1YTNh
MDA2NWQxZTIwOTE5ZGIzYTM1Njk2Y2E5OWU3MGFmMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQmFz
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oIgorI2luY2x1ZGUgIkNBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
VEYgeworY2xhc3MgV29ya1F1ZXVlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OworY2xhc3MgQXVkaW9T
YW1wbGVEYXRhU291cmNlOworY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OworY2xhc3MgQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uOworY2xhc3MgTGliV2ViUlRDQXVkaW9Nb2R1bGU7CitjbGFz
cyBXZWJBdWRpb0J1ZmZlckxpc3Q7CisKK2NsYXNzIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJVbml0IDogcHVibGljIEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
clVuaXQKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIHB1YmxpYyBMb2dnZXJIZWxw
ZXIKKyNlbmRpZgoreworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IGV4cGxpY2l0IEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0KExpYldl
YlJUQ0F1ZGlvTW9kdWxlJik7CisgICAgfkluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJVbml0KCk7CisKKyAgICB2b2lkIG5ld0F1ZGlvQ2h1bmtQdXNoZWQoKTsKKworcHJpdmF0
ZToKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CisgICAgdm9pZCBwb3N0VGFz
ayhGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVuZGVyQXVkaW9DaHVuayh1aW50NjRf
dCBjdXJyZW50QXVkaW9TYW1wbGVDb3VudCk7CisKKyAgICAvLyBCYXNlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmljZShjb25zdCBT
dHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGFkZFJlc2V0T2JzZXJ2ZXIoUmVzZXRPYnNlcnZlciYp
IGZpbmFsOworICAgIHZvaWQgYWRkU291cmNlKFJlZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+JiYp
IGZpbmFsOworICAgIHZvaWQgcmVtb3ZlU291cmNlKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSYpIGZp
bmFsOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLy8gTG9nZ2VySGVscGVyLgor
ICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgY2hhciog
bG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkluY29taW5nQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJVbml0IjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwo
KSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmlu
YWw7CisjZW5kaWYKKworICAgIC8vIE1haW4gdGhyZWFkIHZhcmlhYmxlcy4KKyAgICBMaWJXZWJS
VENBdWRpb01vZHVsZSYgbV9hdWRpb01vZHVsZTsKKyAgICBSZWY8V1RGOjpXb3JrUXVldWU+IG1f
cXVldWU7CisgICAgSGFzaFNldDxSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPj4gbV9zb3VyY2Vz
OworICAgIFJlZlB0cjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fcmVnaXN0ZXJlZE1peGVkU291
cmNlOworCisgICAgLy8gQmFja2dyb3VuZCB0aHJlYWQgdmFyaWFibGVzLgorICAgIFZlY3RvcjxS
ZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPj4gbV9yZW5kZXJTb3VyY2VzOworICAgIFJlZlB0cjxB
dWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fbWl4ZWRTb3VyY2U7CisgICAgQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CisgICAgc2l6ZV90IG1fc2Ft
cGxlQ291bnQgeyAwIH07CisgICAgc2l6ZV90IG1fd3JpdGVDb3VudCB7IDAgfTsKKworI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwor
ICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgorfTsKKworfQorCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb01vZHVsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVk
aW9Nb2R1bGUuY3BwCmluZGV4IDk4ZmI1MmM1MjQyZTgwNjRiMTQ5ZDExNWEzZGE2YTA0MjM2N2Uw
NjcuLmE5ZjkzMmYzNzdhNzIzOTk3Y2Y0MjRlZmFkOGE0Y2FiNWMzZGFhYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENB
dWRpb01vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvTW9kdWxlLmNwcApAQCAtMzIsNiArMzIsMTAgQEAKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAorI2lmIFBM
QVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJVbml0LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBMaWJXZWJSVENB
dWRpb01vZHVsZTo6TGliV2ViUlRDQXVkaW9Nb2R1bGUoKQpAQCAtNDAsNiArNDQsMTAgQEAgTGli
V2ViUlRDQXVkaW9Nb2R1bGU6OkxpYldlYlJUQ0F1ZGlvTW9kdWxlKCkKIHsKIH0KIAorTGliV2Vi
UlRDQXVkaW9Nb2R1bGU6On5MaWJXZWJSVENBdWRpb01vZHVsZSgpCit7Cit9CisKIGludDMyX3Qg
TGliV2ViUlRDQXVkaW9Nb2R1bGU6OlJlZ2lzdGVyQXVkaW9DYWxsYmFjayh3ZWJydGM6OkF1ZGlv
VHJhbnNwb3J0KiBhdWRpb1RyYW5zcG9ydCkKIHsKICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJM
aWJXZWJSVENBdWRpb01vZHVsZTo6UmVnaXN0ZXJBdWRpb0NhbGxiYWNrICVkIiwgISFhdWRpb1Ry
YW5zcG9ydCk7CkBAIC02Miw2ICs3MCw5IEBAIGludDMyX3QgTGliV2ViUlRDQXVkaW9Nb2R1bGU6
OlN0YXJ0UGxheW91dCgpCiAKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGV2aWNlTW9kdWxlPih0aGlz
KV0gewogICAgICAgICBtX3BvbGxpbmdUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgICAgIG1fY3VycmVudEF1ZGlvU2FtcGxlQ291bnQgPSAwOwor
I2VuZGlmCiAgICAgICAgIHBvbGxBdWRpb0RhdGEoKTsKICAgICB9KTsKICAgICByZXR1cm4gMDsK
QEAgLTEyOSw5ICsxNDAsMjMgQEAgdm9pZCBMaWJXZWJSVENBdWRpb01vZHVsZTo6cG9sbEZyb21T
b3VyY2UoKQogICAgICAgICBpbnQ2NF90IG50cFRpbWUgPSAtMTsKICAgICAgICAgY2hhciBkYXRh
W0xpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIGNoYW5uZWxzICogTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OmNodW5rU2FtcGxlQ291bnRdOwogICAgICAgICBtX2F1ZGlvVHJhbnNw
b3J0LT5QdWxsUmVuZGVyRGF0YShMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlQnl0ZVNpemUg
KiA4LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSwgY2hhbm5lbHMsIExpYldlYlJU
Q0F1ZGlvRm9ybWF0OjpjaHVua1NhbXBsZUNvdW50LCBkYXRhLCAmZWxhcHNlZFRpbWUsICZudHBU
aW1lKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgaWYgKG1faXNSZW5kZXJpbmdJbmNv
bWluZ0F1ZGlvKQorICAgICAgICAgICAgbV9pbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyVW5pdC0+bmV3QXVkaW9DaHVua1B1c2hlZCgpOworICAgICAgICBtX2N1cnJlbnRBdWRp
b1NhbXBsZUNvdW50ICs9IExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpjaHVua1NhbXBsZUNvdW50Owor
I2VuZGlmCiAgICAgfQogfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCitCYXNlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJVbml0JiBMaWJXZWJSVENBdWRpb01vZHVsZTo6aW5jb21pbmdBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQoKQoreworICAgIGlmICghbV9pbmNvbWluZ0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCkKKyAgICAgICAgbV9pbmNvbWluZ0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCA9IG1ha2VVbmlxdWU8SW5jb21pbmdBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1faW5jb21p
bmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENB
dWRpb01vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0F1ZGlvTW9kdWxlLmgKaW5kZXggNjcwYWM4ZmE0NWQzNWQxOTAwMDZjY2M4
NDZkYWQ1YTg4Y2I0ZmFmZC4uMDg4YWEyNTg0YzZiNzVkM2Q2YTU0MDFiMjcxMThjMzFiMTU1MGI3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0F1ZGlvTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvTW9kdWxlLmgKQEAgLTM5LDE0ICsz
OSwyNiBAQCBBTExPV19VTlVTRURfUEFSQU1FVEVSU19CRUdJTgogQUxMT1dfVU5VU0VEX1BBUkFN
RVRFUlNfRU5ECiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEJhc2VBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQ7CitjbGFzcyBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdDsKIAogLy8gTGliV2ViUlRDQXVkaW9Nb2R1bGUgaXMgcHVsbGluZyBzdHJl
YW1lZCBkYXRhIHRvIGVuc3VyZSBhdWRpbyBkYXRhIGlzIHBhc3NlZCB0byB0aGUgYXVkaW8gdHJh
Y2suCiBjbGFzcyBMaWJXZWJSVENBdWRpb01vZHVsZSA6IHB1YmxpYyB3ZWJydGM6OkF1ZGlvRGV2
aWNlTW9kdWxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBM
aWJXZWJSVENBdWRpb01vZHVsZSgpOworICAgIH5MaWJXZWJSVENBdWRpb01vZHVsZSgpOwogCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBQb2xsU2FtcGxlc0NvdW50ID0gMTsKKyAgICB2
b2lkIHJlZigpIHsgQWRkUmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmKCkgeyBSZWxlYXNlKCk7IH0K
KworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgc3RhcnRJbmNvbWluZ0F1ZGlvUmVuZGVy
aW5nKCkgeyBtX2lzUmVuZGVyaW5nSW5jb21pbmdBdWRpbyA9IHRydWU7IH0KKyAgICB2b2lkIHN0
b3BJbmNvbWluZ0F1ZGlvUmVuZGVyaW5nKCkgeyBtX2lzUmVuZGVyaW5nSW5jb21pbmdBdWRpbyA9
IGZhbHNlOyB9CisgICAgQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCYgaW5j
b21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQoKTsKKyAgICB1aW50NjRfdCBj
dXJyZW50QXVkaW9TYW1wbGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEF1ZGlvU2Ft
cGxlQ291bnQ7IH0KKyNlbmRpZgogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IFUgc2hvdWxkTm90QmVDYWxsZWQoVSB2YWx1ZSkgY29uc3QKQEAgLTEzNSw2ICsxNDcsMTIgQEAg
cHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fcG9sbGluZ1RpbWU7CiAgICAgVGltZXIgbV9s
b2dUaW1lcjsKICAgICBpbnQgbV90aW1lU3BlbnQgeyAwIH07CisKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICB1aW50NjRfdCBtX2N1cnJlbnRBdWRpb1NhbXBsZUNvdW50IHsgMCB9OworICAgIGJv
b2wgbV9pc1JlbmRlcmluZ0luY29taW5nQXVkaW8geyBmYWxzZSB9OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdD4gbV9pbmNvbWlu
Z0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5k
ZXggZmRkNzg4YTEwNjU1NDJmZTRlNzgwZjZlNDhjODcxNTI5M2M5MDc2OS4uMWFkMDU1MTA1YzVk
NThkZDY2N2ZlMTdhNjk5ZDdkNGRjM2ExZjJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuY3BwCkBAIC03MCw2ICs3MCwxNiBAQCBib29sIExpYldlYlJUQ1Byb3ZpZGVyOjp3
ZWJSVENBdmFpbGFibGUoKQogfQogI2VuZGlmCiAKKyNpZiBVU0UoTElCV0VCUlRDKQorTGliV2Vi
UlRDUHJvdmlkZXI6OkxpYldlYlJUQ1Byb3ZpZGVyKCkKK3sKK30KKyNlbmRpZgorCitMaWJXZWJS
VENQcm92aWRlcjo6fkxpYldlYlJUQ1Byb3ZpZGVyKCkKK3sKK30KKwogI2lmICFVU0UoTElCV0VC
UlRDKSB8fCAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpyZWdpc3Rl
cldlYktpdFZQOURlY29kZXIoKQogewpAQCAtMjczLDcgKzI4Myw5IEBAIHdlYnJ0Yzo6UGVlckNv
bm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlKiBMaWJXZWJSVENQcm92aWRlcjo6ZmFjdG9yeSgpCiAK
IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFj
ZT4gTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeShydGM6OlRo
cmVhZCogbmV0d29ya1RocmVhZCwgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ1RocmVhZCkKIHsKLSAg
ICBhdXRvIGF1ZGlvTW9kdWxlID0gcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZXZp
Y2VNb2R1bGU+KG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8TGliV2ViUlRDQXVkaW9Nb2R1bGU+
KCkpOworICAgIEFTU0VSVCghbV9hdWRpb01vZHVsZSk7CisgICAgYXV0byBhdWRpb01vZHVsZSA9
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxMaWJXZWJSVENBdWRpb01vZHVsZT4obmV3IHJ0Yzo6UmVmQ291
bnRlZE9iamVjdDxMaWJXZWJSVENBdWRpb01vZHVsZT4oKSk7CisgICAgbV9hdWRpb01vZHVsZSA9
IGF1ZGlvTW9kdWxlLmdldCgpOwogCiAgICAgcmV0dXJuIHdlYnJ0Yzo6Q3JlYXRlUGVlckNvbm5l
Y3Rpb25GYWN0b3J5KG5ldHdvcmtUaHJlYWQsIHNpZ25hbGluZ1RocmVhZCwgc2lnbmFsaW5nVGhy
ZWFkLCBXVEZNb3ZlKGF1ZGlvTW9kdWxlKSwgd2VicnRjOjpDcmVhdGVCdWlsdGluQXVkaW9FbmNv
ZGVyRmFjdG9yeSgpLCB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5KCks
IGNyZWF0ZUVuY29kZXJGYWN0b3J5KCksIGNyZWF0ZURlY29kZXJGYWN0b3J5KCksIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaApp
bmRleCA1MWI0OWEwZjExMTVjZGJjODQ5NDVjMDQyMTgzZmU2Y2UxMTYwN2Y1Li4wYjdhOTFiNzY0
MDQxMDY3MjRiNjdjZDg1OWY3MjdjZmE4ZDBlNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuaApAQCAtNzksNyArNzksNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBMaWJXZWJS
VENQcm92aWRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92
aWRlcj4gY3JlYXRlKCk7CiAKLSAgICB2aXJ0dWFsIH5MaWJXZWJSVENQcm92aWRlcigpID0gZGVm
YXVsdDsKKyAgICB2aXJ0dWFsIH5MaWJXZWJSVENQcm92aWRlcigpOwogCiAgICAgc3RhdGljIGJv
b2wgd2ViUlRDQXZhaWxhYmxlKCk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJXZWJLaXRWUDlE
ZWNvZGVyKCk7CkBAIC0xMDMsNiArMTAzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJD
b25uZWN0aW9uKERvY3VtZW50SWRlbnRpZmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9ic2Vy
dmVyJiwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmKTsKIAogICAgIHdlYnJ0Yzo6UGVlckNvbm5lY3Rp
b25GYWN0b3J5SW50ZXJmYWNlKiBmYWN0b3J5KCk7CisgICAgTGliV2ViUlRDQXVkaW9Nb2R1bGUq
IGF1ZGlvTW9kdWxlKCk7CiAKICAgICAvLyBGSVhNRTogTWFrZSB0aGVzZSBtZXRob2RzIG5vdCBz
dGF0aWMuCiAgICAgc3RhdGljIHZvaWQgY2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChGdW5jdGlv
bjx2b2lkKCk+JiYpOwpAQCAtMTUwLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0
ZDo6dW5pcXVlX3B0cjxTdXNwZW5kYWJsZVNvY2tldEZhY3Rvcnk+IGNyZWF0ZVNvY2tldEZhY3Rv
cnkoU3RyaW5nJiYgLyogdXNlckFnZW50ICovLCBib29sIC8qIGlzRmlyc3RQYXJ0eSAqLywgUmVn
aXN0cmFibGVEb21haW4mJikgeyByZXR1cm4gbnVsbHB0cjsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAg
TGliV2ViUlRDUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisgICAgTGliV2ViUlRDUHJvdmlkZXIoKTsK
IAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNl
PiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImLCBy
dGM6Ok5ldHdvcmtNYW5hZ2VyJiwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Jiwgd2VicnRjOjpQ
ZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmLCBzdGQ6OnVuaXF1ZV9w
dHI8d2VicnRjOjpBc3luY1Jlc29sdmVyRmFjdG9yeT4mJik7CiAKQEAgLTE3MSw2ICsxNzIsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgLy8gRklYTUU6IFJlbW92ZSBtX3VzZU5ldHdvcmtUaHJlYWRXaXRo
U29ja2V0U2VydmVyIG1lbWJlciB2YXJpYWJsZSBhbmQgbWFrZSBpdCBhIGdsb2JhbC4KICAgICBi
b29sIG1fdXNlTmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIgeyB0cnVlIH07CiAKKyAgICBS
ZWZQdHI8TGliV2ViUlRDQXVkaW9Nb2R1bGU+IG1fYXVkaW9Nb2R1bGU7CiAgICAgcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiBtX2ZhY3Rv
cnk7CiAgICAgYm9vbCBtX2Rpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3N1cHBvcnRzSDI2NSB7IGZhbHNlIH07CkBAIC0xODcsNCArMTg5LDExIEBA
IHByb3RlY3RlZDoKICNlbmRpZgogfTsKIAorI2lmIFVTRShMSUJXRUJSVEMpCitpbmxpbmUgTGli
V2ViUlRDQXVkaW9Nb2R1bGUqIExpYldlYlJUQ1Byb3ZpZGVyOjphdWRpb01vZHVsZSgpCit7Cisg
ICAgcmV0dXJuIG1fYXVkaW9Nb2R1bGUuZ2V0KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5jcHAKaW5kZXggODk0NzljNjI0Zjc5ODgzMTQ1YTA4NmY1N2M1MDQyNGY0YzIzZDM2ZC4u
OWFlYTVmMWMwNzJjMDliZjA2M2Y0OTk5ZTAzYjIxOWU4NWQ3ZTJkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwCkBAIC0xMzIsNyArMTMy
LDcgQEAgdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYTo6T25EYXRhKGNvbnN0
IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXIKICAgICAgICAgICAgIG1fbnVtYmVyT2ZGcmFt
ZXMgPSAwOwogICAgIH0KIAotICAgIENNVGltZSBzdGFydFRpbWUgPSBQQUw6OkNNVGltZU1ha2Uo
bV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CisgICAgQ01UaW1lIHN0YXJ0VGltZSA9IFBB
TDo6Q01UaW1lTWFrZShhdWRpb01vZHVsZSgpID8gYXVkaW9Nb2R1bGUoKS0+Y3VycmVudEF1ZGlv
U2FtcGxlQ291bnQoKSA6IG1fbnVtYmVyT2ZGcmFtZXMsIExpYldlYlJUQ0F1ZGlvRm9ybWF0Ojpz
YW1wbGVSYXRlKTsKICAgICBhdXRvIG1lZGlhVGltZSA9IFBBTDo6dG9NZWRpYVRpbWUoc3RhcnRU
aW1lKTsKICAgICBtX251bWJlck9mRnJhbWVzICs9IG51bWJlck9mRnJhbWVzOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442694</attachid>
            <date>2021-10-28 05:31:35 -0700</date>
            <delta_ts>2021-10-28 06:52:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232375-20211028143131.patch</filename>
            <type>text/plain</type>
            <size>55399</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGUyYzkwNjQyZGRlMGFl
OWFkYmRhNjc5MzFlNmM4OTM4M2FjODU0YS4uNmFlMDM5MmJhMjJkZmExZTBlMzg4YWUzNWQ1MTVj
YzBkM2RlNGI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTEwLTI3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFbnN1cmUgc3luY2hyb25p
emVkIHJlbmRlcmluZyBvZiBpbmNvbWluZyBhdWRpbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjM3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYlJUQyBpbmNvbWluZyBhdWRpbyB0cmFj
a3MgYXJlIGd1YXJhbnRlZWQgdG8gYmUgc3luY2hyb25pemVkIGJhc2VkIG9uIHRoZSBhdWRpbyBt
b2R1bGUgY2xvY2suCisgICAgICAgIFByZXZpb3VzbHksIHdlIHdlcmUgbWl4aW5nIGFsbCBhdWRp
byB0cmFja3MgdG9nZXRoZXIsIGJ1dCB3ZSB3ZXJlIG5vdCBoYW5kbGluZyBzeW5jaHJvbml6YXRp
b24gb2YgdHJhY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBjbG9jay4KKyAgICAgICAgVGhpcyBjYW4g
Y2F1c2Ugc29tZSBsb3dlciBxdWFsaXR5IGF1ZGlvIHJlbmRlcmluZy4KKyAgICAgICAgVG8gcHJl
dmVudCB0aGlzLCBhbGwgV2ViUlRDIGluY29taW5nIGF1ZGlvIHRyYWNrcyBhcmUgbm93IG1peGVk
IHRvZ2V0aGVyIGluIGEgc2luZ2xlIHRyYWNrIHRoYXQgaXMgdGhlbiBtaXhlZCB3aXRoIGFsbCBv
dGhlciBub24gc3luY2hyb25pemVkIHRyYWNrcy4KKyAgICAgICAgVG8gZG8gc28gd2UgaW50cm9k
dWNlIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IHdoaWNoIHdpbGwg
cmVjZWl2ZSBhbGwgaW5jb21pbmcgYXVkaW8gdHJhY2tzLgorICAgICAgICBJdCB0aGVuIHNlbmRz
IHRoZSBtaXggdG8gdGhlIGFjdHVhbCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQu
CisgICAgICAgIFRvIGVuc3VyZSB0aWdodCBzeW5jaHJvbml6YXRpb24sIHdlIGludHJvZHVjZSBB
dWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxBdmFpbGFibGVTYW1wbGVDaHVuayB3aGljaCByZWFk
cyBkYXRhIHVzaW5nIHRoZSBwcm92aWRlZCB0aW1lc3RhbXAgcmVsYXRpdmUgdG8gdGhlIGlucHV0
IG9mZnNldC4KKyAgICAgICAgV2UgZG8gYSByZWZhY3RvcmluZyB0byBtYWtlIGl0IGVhc3kgdG8g
ZWl0aGVyIHVzZSBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCBvciBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQgYnkgaGF2aW5nIGEgYmFzZSBjbGFzcyBj
YWxsZWQgQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC4KKworICAgICAgICBN
YW51YWxseSB0ZXN0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRh
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRh
U291cmNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJDb2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Jhc2VBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlclVuaXQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y29jb2EvSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb01vZHVsZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcDoKKwogMjAyMS0xMC0yNiAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgT25seSBvbmUgQXVkaW9TYW1wbGVEYXRh
U291cmNlOjpwdWxsU2FtcGxlcyBpcyBuZWVkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDM2YzhiNTBkNDAxNTY3MWMy
MzdlMzA2ZDljMzIzZjA5YWUxNmQ5OGYuLmJiYThjNWFhZTExMWIwOGQ3NzhhMDdlZGZiMGE5ZDY2
MTRkYjk5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kLmNwcApAQCAtMjksOCArMjksMTAgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiSWNlQ2FuZGlkYXRlLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9N
b2R1bGUuaCIKICNpbmNsdWRlICJMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKICNpbmNs
dWRlICJMaWJXZWJSVENNZWRpYUVuZHBvaW50LmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlk
ZXIuaCIKICNpbmNsdWRlICJMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCIKICNpbmNsdWRl
ICJMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kLmgiCkBAIC0yOTMsNyArMjk1LDggQEAgUmVmPFJUQ1J0cFJlY2VpdmVy
PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyKHN0ZDo6dW5p
cXVlX3AKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9wZWVy
Q29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogCi0gICAgYXV0byBzb3VyY2Ug
PSBiYWNrZW5kLT5jcmVhdGVTb3VyY2UoKTsKKyAgICBhdXRvIHNvdXJjZSA9IGJhY2tlbmQtPmNy
ZWF0ZVNvdXJjZShkb2N1bWVudCk7CisKICAgICAvLyBSZW1vdGUgc291cmNlIGlzIGluaXRpYWxs
eSBtdXRlZCBhbmQgd2lsbCBiZSB1bm11dGVkIHdoZW4gcmVjZWl2aW5nIHRoZSBmaXJzdCBwYWNr
ZXQuCiAgICAgc291cmNlLT5zZXRNdXRlZCh0cnVlKTsKICAgICBhdXRvIHRyYWNrSUQgPSBzb3Vy
Y2UtPnBlcnNpc3RlbnRJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJl
Y2VpdmVyQmFja2VuZC5jcHAKaW5kZXggY2NhOTcwNGI1NjZjMzRlYWEwZGZmMGNjOThkZmZhODNh
NmU2NzQ1OC4uODBkNzhhMTM2OWIxMmIzODJlNGYzMGEwZGUzY2NkNTJiYjk1YWVjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwCkBAIC0y
NSw5ICsyNSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1J0
cFJlY2VpdmVyQmFja2VuZC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJM
aWJXZWJSVENBdWRpb01vZHVsZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0R0bHNUcmFuc3BvcnRC
YWNrZW5kLmgiCisjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJMaWJX
ZWJSVENSdHBSZWNlaXZlclRyYW5zZm9ybUJhY2tlbmQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENV
dGlscy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgiCiAjaW5jbHVk
ZSAiUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgiCkBAIC05OSw3ICsxMDMsNyBAQCBWZWN0
b3I8UlRDUnRwU3luY2hyb25pemF0aW9uU291cmNlPiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tl
bmQ6OmdldFN5bmNocm9uaXphdAogICAgIHJldHVybiBzb3VyY2VzOwogfQogCi1SZWY8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTb3VyY2Uo
KQorUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZDo6
Y3JlYXRlU291cmNlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBhdXRvIHJ0Y1RyYWNrID0g
bV9ydGNSZWNlaXZlci0+dHJhY2soKTsKICAgICBzd2l0Y2ggKG1fcnRjUmVjZWl2ZXItPm1lZGlh
X3R5cGUoKSkgewpAQCAtMTA4LDcgKzExMiwxMCBAQCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4g
TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kOjpjcmVhdGVTb3VyY2UoKQogICAgICAgICBicmVh
azsKICAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU86IHsKICAgICAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4gYXVkaW9UcmFjayA9IHN0
YXRpY19jYXN0PHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZSo+KHJ0Y1RyYWNrLmdldCgpKTsK
LSAgICAgICAgcmV0dXJuIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKFdURk1v
dmUoYXVkaW9UcmFjayksIGZyb21TdGRTdHJpbmcocnRjVHJhY2stPmlkKCkpKTsKKyAgICAgICAg
YXV0byBzb3VyY2UgPSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OmNyZWF0ZShXVEZNb3Zl
KGF1ZGlvVHJhY2spLCBmcm9tU3RkU3RyaW5nKHJ0Y1RyYWNrLT5pZCgpKSk7CisgICAgICAgIGlm
IChkb2N1bWVudC5wYWdlKCkpCisgICAgICAgICAgICBzb3VyY2UtPnNldEF1ZGlvTW9kdWxlKGRv
Y3VtZW50LnBhZ2UoKS0+bGliV2ViUlRDUHJvdmlkZXIoKS5hdWRpb01vZHVsZSgpKTsKKyAgICAg
ICAgcmV0dXJuIHNvdXJjZTsKICAgICB9CiAgICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX1ZJ
REVPOiB7CiAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlZpZGVvVHJhY2tJbnRl
cmZhY2U+IHZpZGVvVHJhY2sgPSBzdGF0aWNfY2FzdDx3ZWJydGM6OlZpZGVvVHJhY2tJbnRlcmZh
Y2UqPihydGNUcmFjay5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJl
Y2VpdmVyQmFja2VuZC5oCmluZGV4IGZmZGEwNWQxMzJlNDFjMzBiNjA1OWZjNTBhYzBjMWFmMjE5
YTY3OTUuLjAxZjNkYzc0MmFkYTcxNGI4OTE5ZDlmNGIzZjJkZDg3MzUwZmRmZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1J0cFJlY2VpdmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oCkBAIC0zNSw3ICsz
NSw3IEBAIGNsYXNzIFJ0cFJlY2VpdmVySW50ZXJmYWNlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KK2NsYXNzIERvY3VtZW50OwogY2xhc3MgUmVhbHRpbWVNZWRpYVNvdXJjZTsKIAogY2xh
c3MgTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kIGZpbmFsIDogcHVibGljIFJUQ1J0cFJlY2Vp
dmVyQmFja2VuZCB7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIHdlYnJ0Yzo6UnRw
UmVjZWl2ZXJJbnRlcmZhY2UqIHJ0Y1JlY2VpdmVyKCkgeyByZXR1cm4gbV9ydGNSZWNlaXZlci5n
ZXQoKTsgfQogCi0gICAgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGNyZWF0ZVNvdXJjZSgpOwor
ICAgIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBjcmVhdGVTb3VyY2UoRG9jdW1lbnQmKTsKIAog
cHJpdmF0ZToKICAgICBSVENSdHBQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDkwNmMyOTk4NDVkYjAzZjc3MzhlNTgxODUwZDRkMGM0
YWU5YTMwYzYuLjM2MjcyZmZiZTQ3YTFjNmQyYTA2NjQ0NGVhNWYyYzYxMmQ3Y2EwYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dApAQCAtNTI2LDYgKzUyNiw3IEBAIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFs
VW5pdC5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdC5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Rpc3BsYXlDYXB0
dXJlU291cmNlQ29jb2EuY3BwCitwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFt
L2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2UubW0KIHBsYXRmb3JtL21lZGlhc3RyZWFt
L2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tIEBuby11bmlmeQogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vaW9zL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1MubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBm
YjcyMzJkMmIyZTljNDQ2MDU4ZWVjNjRjYTMwNTMwNzdiMDBiYzFhLi4yMjdlNTI4ZWEyNDNlMGQy
OGY1MThhYmNhYTkxMTA1MWIxODI1Yzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTgwLDYgKzExODAsNyBAQAogCQk0MTg2
QkQzRjIxM0VFMzQzMDAwMTgyNkYgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUQxQTA0QjIxM0VE
REZFMDA2M0ZCNkIgLyogTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgKi87IH07CiAJCTQx
ODZCRDQwMjEzRUUzNDUwMDAxODI2RiAvKiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFEMUEwNEEy
MTNFRERGRTAwNjNGQjZCIC8qIExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHAgKi87IH07
CiAJCTQxODZCRDRFMjE0MEI5RTgwMDAxODI2RiAvKiBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJh
Y2tlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE4NkJENEQyMTQwQjlFODAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2Vu
ZC5jcHAgKi87IH07CisJCTQxODc4RkFEMjcyOTQ3MjEwMDJFMUVERCAvKiBCYXNlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTg3OEZBODI3MjgyMDU1MDAyRTFFREQgLyogQmFzZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxODg1QjkzMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3Vi
bWlzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE4ODVCOTExMUI2RkRBNjAwMzM4M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4OEQ1NUMyNkM1NEQ2RjAw
NDg1OEM4IC8qIFJUQ0R0bHNUcmFuc3BvcnRCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg4RDU1QTI2QzU0RDZGMDA0ODU4QzggLyogUlRD
RHRsc1RyYW5zcG9ydEJhY2tlbmQuaCAqLzsgfTsKIAkJNDE4OEQ1NjMyNkM1NTFCMTAwNDg1OEM4
IC8qIFJUQ0R0bHNUcmFuc3BvcnRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDE4OEQ1NjIyNkM1NTFCMTAwNDg1OEM4IC8qIFJUQ0R0bHNUcmFu
c3BvcnRTdGF0ZS5oICovOyB9OwpAQCAtODE1Myw2ICs4MTU0LDkgQEAKIAkJNDE4NkJENDYyMTQw
NzJCNjAwMDE4MjZGIC8qIFJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4NkJENEIyMTQwQTgwNTAwMDE4MjZGIC8qIExpYldlYlJU
Q1J0cFRyYW5zY2VpdmVyQmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE4NkJENEQyMTQwQjlFODAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFj
a2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMaWJXZWJSVENS
dHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1J0cFRy
YW5zY2VpdmVyQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODc4
RkE4MjcyODIwNTUwMDJFMUVERCAvKiBCYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4NzhGQUEyNzI4MjA1NzAwMkUx
RUREIC8qIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODc4RkFCMjcyOTM0RTYwMDJFMUVERCAvKiBJ
bmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyVW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODgwN0RGMjRF
NDU1ODMwMEREQUY5NCAvKiBBYm9ydEFsZ29yaXRobS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQWJvcnRBbGdvcml0aG0u
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg4MDdFMTI0RTQ1OEMzMDBEREFG
OTQgLyogQWJvcnRBbGdvcml0aG0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJvcnRBbGdvcml0aG0uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4ODVCOTExMUI2RkRBNjAwMzM4M0JCIC8q
IEZvcm1TdWJtaXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1T
dWJtaXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDE1Miw4ICsyMDE1
NiwxMSBAQAogCQkJCTQxQzNCODlGMjY0OUIxQjcwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oICovLAogCQkJCTQxQzNCOEEwMjY0OUIxQjcwMDRF
RDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwICovLAogCQkJCTQx
QzNCODlCMjY0OUIxQjYwMDRFRDRERSAvKiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQuaCAqLywKKwkJCQk0MTg3OEZBODI3MjgyMDU1MDAyRTFFREQgLyogQmFzZUF1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oICovLAogCQkJCTA3QkIxRTZFMjcxNzZDQ0EwMDFERjI4
OSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmNwcCAqLywKIAkJCQkwN0JCMUU2RjI3MTc2
Q0NBMDAxREYyODkgLyogRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5oICovLAorCQkJCTQxODc4
RkFCMjcyOTM0RTYwMDJFMUVERCAvKiBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyVW5pdC5jcHAgKi8sCisJCQkJNDE4NzhGQUEyNzI4MjA1NzAwMkUxRUREIC8qIEluY29taW5n
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxODg5LDYgKzMxODk2LDcg
QEAKIAkJCQlCQzEyNEVFODBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDYwQkI2MTYxRDBBMUJGMDAwMjIxODEyIC8qIEJhc2U2NFV0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODMxOThGQkYyNEExNjBERDAwNDIwQjA1IC8qIEJhc2VBdWRpb0Nv
bnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxODc4RkFEMjcyOTQ3MjEwMDJFMUVERCAvKiBC
YXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTJERUYxRjIzQTkxOEEzMDBEODQwRjYgLyogQmFzZUF1ZGlvU2hhcmVkVW5pdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzc5RTYxQ0ExMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VCdXR0b25JbnB1
dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUU2MUNDMTI2Q0E1QzQwMEI2M0U4RCAvKiBC
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKaW5kZXggZjdkNGU3YWZiODc2NDZhZWU2NjJkNTdlZmY4MjgzY2Q3
YjdjNzc1Yi4uNTE3Y2RiMGE0OWUzZmM2ODQ2MjQyOTBmZTk1ZWRkYjAzMzBjMTJkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNs
dWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvTW9k
dWxlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJNZWRpYVJl
Y29yZGVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcm92aWRlci5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVE
YXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1Nh
bXBsZURhdGFTb3VyY2UuaAppbmRleCA5OWJkMzg2ZmUzNTY1M2M1ZDNlYjM3Y2Q3Y2Y1ZmYwMzNi
NjY4YWNlLi4yY2QyMGQ1OGViYmYzN2RiNjVlYzJiZGM4M2RkZDY3Njg2ZTNlYTE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1NhbXBsZURhdGFT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb1Nh
bXBsZURhdGFTb3VyY2UuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwdWxs
U2FtcGxlcyhBdWRpb0J1ZmZlckxpc3QmLCBzaXplX3QsIHVpbnQ2NF90LCBkb3VibGUsIFB1bGxN
b2RlKTsKIAogICAgIGJvb2wgcHVsbEF2YWlsYWJsZVNhbXBsZXNBc0NodW5rcyhBdWRpb0J1ZmZl
ckxpc3QmLCBzaXplX3QgZnJhbWVDb3VudCwgdWludDY0X3QgdGltZVN0YW1wLCBGdW5jdGlvbjx2
b2lkKCk+JiYpOworICAgIGJvb2wgcHVsbEF2YWlsYWJsZVNhbXBsZUNodW5rKEF1ZGlvQnVmZmVy
TGlzdCYsIHNpemVfdCBmcmFtZUNvdW50LCB1aW50NjRfdCB0aW1lU3RhbXAsIFB1bGxNb2RlKTsK
IAogICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkgeyBtX3ZvbHVtZSA9IHZvbHVtZTsg
fQogICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9sdW1lOyB9CkBAIC02OSw2
ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRl
ZDsgfQogCiAgICAgY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKiBpbnB1dERlc2NyaXB0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pbnB1dERlc2NyaXB0aW9uID8gJm1faW5wdXREZXNjcmlw
dGlvbi52YWx1ZSgpIDogbnVsbHB0cjsgfQorICAgIGNvbnN0IENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiogb3V0cHV0RGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX291dHB1dERlc2NyaXB0
aW9uID8gJm1fb3V0cHV0RGVzY3JpcHRpb24udmFsdWUoKSA6IG51bGxwdHI7IH0KIAogICAgIHZv
aWQgcmVjb21wdXRlU2FtcGxlT2Zmc2V0KCkgeyBtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVP
ZmZzZXQgPSB0cnVlOyB9CiAKQEAgLTg2LDYgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBPU1N0YXR1
cyBzZXR1cENvbnZlcnRlcigpOwogCiAgICAgdm9pZCBwdXNoU2FtcGxlc0ludGVybmFsKGNvbnN0
IEF1ZGlvQnVmZmVyTGlzdCYsIGNvbnN0IE1lZGlhVGltZSYsIHNpemVfdCBmcmFtZUNvdW50KTsK
KyAgICBib29sIHB1bGxTYW1wbGVzSW50ZXJuYWwoQXVkaW9CdWZmZXJMaXN0Jiwgc2l6ZV90IHNh
bXBsZUNvdW50LCB1aW50NjRfdCB0aW1lU3RhbXAsIFB1bGxNb2RlKTsKIAogICAgIHN0ZDo6b3B0
aW9uYWw8Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uPiBtX2lucHV0RGVzY3JpcHRpb247CiAgICAg
c3RkOjpvcHRpb25hbDxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1fb3V0cHV0RGVzY3JpcHRp
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b1NhbXBsZURhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KaW5kZXggMDVhODNkNzIwOTE2MTE3YTA0Y2ZkMjhm
MjA4ZGNiYmUzZDAyZmZmNy4uZjAxMGQzY2NjYmVhNTU3NTU4MmNhZDQ0YzNmZDJhMjE0YWM2MmYy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9T
YW1wbGVEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQpAQCAtMjg2LDYgKzI4NiwxMSBAQCBib29sIEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNhbXBsZXMoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIs
IHNpemVfdCBzYW1wbGVDbwogCiAgICAgbV9pc0ZpcnN0UHVsbCA9IGZhbHNlOwogCisgICAgcmV0
dXJuIHB1bGxTYW1wbGVzSW50ZXJuYWwoYnVmZmVyLCBzYW1wbGVDb3VudCwgdGltZVN0YW1wLCBt
b2RlKTsKK30KKworYm9vbCBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxTYW1wbGVzSW50ZXJu
YWwoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIsIHNpemVfdCBzYW1wbGVDb3VudCwgdWludDY0X3Qg
dGltZVN0YW1wLCBQdWxsTW9kZSBtb2RlKQorewogICAgIGlmIChtb2RlID09IENvcHkpIHsKICAg
ICAgICAgbV9yaW5nQnVmZmVyLT5mZXRjaCgmYnVmZmVyLCBzYW1wbGVDb3VudCwgdGltZVN0YW1w
LCBDQVJpbmdCdWZmZXI6OkNvcHkpOwogICAgICAgICBpZiAobV92b2x1bWUgPCBFcXVpdmFsZW50
VG9NYXhWb2x1bWUpCkBAIC0zMDksNiArMzE0LDI1IEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291
cmNlOjpwdWxsU2FtcGxlcyhBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNv
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxs
QXZhaWxhYmxlU2FtcGxlQ2h1bmsoQXVkaW9CdWZmZXJMaXN0JiBidWZmZXIsIHNpemVfdCBzYW1w
bGVDb3VudCwgdWludDY0X3QgdGltZVN0YW1wLCBQdWxsTW9kZSBtb2RlKQoreworICAgIEFTU0VS
VChidWZmZXIubU51bWJlckJ1ZmZlcnMgPT0gbV9yaW5nQnVmZmVyLT5jaGFubmVsQ291bnQoKSk7
CisgICAgaWYgKGJ1ZmZlci5tTnVtYmVyQnVmZmVycyAhPSBtX3JpbmdCdWZmZXItPmNoYW5uZWxD
b3VudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9tdXRlZCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9m
ZnNldCkgeworICAgICAgICBtX3Nob3VsZENvbXB1dGVPdXRwdXRTYW1wbGVPZmZzZXQgPSBmYWxz
ZTsKKyAgICAgICAgbV9vdXRwdXRTYW1wbGVPZmZzZXQgPSBtX2lucHV0U2FtcGxlT2Zmc2V0LnRp
bWVWYWx1ZSgpICogbV9vdXRwdXREZXNjcmlwdGlvbi0+c2FtcGxlUmF0ZSgpIC8gbV9pbnB1dFNh
bXBsZU9mZnNldC50aW1lU2NhbGUoKTsKKyAgICB9CisKKyAgICB0aW1lU3RhbXAgKz0gbV9vdXRw
dXRTYW1wbGVPZmZzZXQ7CisKKyAgICByZXR1cm4gcHVsbFNhbXBsZXNJbnRlcm5hbChidWZmZXIs
IHNhbXBsZUNvdW50LCB0aW1lU3RhbXAsIG1vZGUpOworfQorCiBib29sIEF1ZGlvU2FtcGxlRGF0
YVNvdXJjZTo6cHVsbEF2YWlsYWJsZVNhbXBsZXNBc0NodW5rcyhBdWRpb0J1ZmZlckxpc3QmIGJ1
ZmZlciwgc2l6ZV90IHNhbXBsZUNvdW50UGVyQ2h1bmssIHVpbnQ2NF90IHRpbWVTdGFtcCwgRnVu
Y3Rpb248dm9pZCgpPiYmIGNvbnN1bWVGaWxsZWRCdWZmZXIpCiB7CiAgICAgQVNTRVJUKGJ1ZmZl
ci5tTnVtYmVyQnVmZmVycyA9PSBtX3JpbmdCdWZmZXItPmNoYW5uZWxDb3VudCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAppbmRleCBlNThhY2U2Mzg5ZWIyZWJm
Y2IyZjVkNDRmNDMxODJkNmMwYjU1NjcxLi40ZDc5OGFlMTFjODg0OTE0YmU1NjA2ZDg5MzJiZjAw
OTBiMGM0MWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCkBA
IC00MCwzMSArNDAsMjggQEAgY2xhc3MgTWVkaWFUaW1lOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpSZW5kZXJlckNyZWF0b3IgQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6Om1fcmVuZGVyZXJDcmVhdG9yID0gbnVsbHB0cjsKLXZv
aWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnNldENyZWF0b3IoUmVuZGVyZXJDcmVh
dG9yIGNyZWF0b3IpCitzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXI+IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpjcmVhdGUoSW5pdCYmIGluaXQpCiB7
Ci0gICAgbV9yZW5kZXJlckNyZWF0b3IgPSBjcmVhdG9yOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyOjpjcmVhdGUoKQotewotICAgIGlmIChtX3JlbmRlcmVyQ3JlYXRvcikKLSAgICAgICAgcmV0
dXJuIG1fcmVuZGVyZXJDcmVhdG9yKCk7Ci0KICNpZiBQTEFURk9STShDT0NPQSkKLSAgICByZXR1
cm4gbWFrZVVuaXF1ZTxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hPigpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E+KFdU
Rk1vdmUoaW5pdCkpOwogI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogfQogCitB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXIoSW5pdCYmIGluaXQpCisgICAgOiBtX2NyYXNoQ2FsbGJhY2soV1RGTW92ZShpbml0LmNyYXNo
Q2FsbGJhY2spKQorI2lmIFVTRShMSUJXRUJSVEMpCisgICAgLCBtX2F1ZGlvTW9kdWxlKFdURk1v
dmUoaW5pdC5hdWRpb01vZHVsZSkpCisjZW5kaWYKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
LXZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OnNldExvZ2dlcihjb25zdCBMb2dn
ZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogaWRlbnRpZmllcikKKyAgICAsIG1fbG9nZ2VyKGluaXQu
bG9nZ2VyKQorICAgICwgbV9sb2dJZGVudGlmaWVyKGluaXQubG9nSWRlbnRpZmllcikKKyNlbmRp
ZgogewotICAgIG1fbG9nZ2VyID0gJmxvZ2dlcjsKLSAgICBtX2xvZ0lkZW50aWZpZXIgPSBpZGVu
dGlmaWVyOwogfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBXVEZMb2dDaGFubmVsJiBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6bG9nQ2hhbm5lbCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIExvZ01lZGlhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmgKaW5k
ZXggMDk3Mjc2OGRlZmViZWJhOGYwMjg0ODU5MjJhZDZiMTgxMWZjYTMwYi4uNmQ4YTFiYjkyMjEy
NWVmODQzMjBkODhlOWM1ZGEzOWY1MDY0ZTFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlci5oCkBAIC0zNywxMiArMzcsMjMgQEAgY2xhc3MgTWVkaWFUaW1lOwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOworY2xhc3MgTGli
V2ViUlRDQXVkaW9Nb2R1bGU7CiBjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0YTsKIAogY2xhc3MgV0VC
Q09SRV9FWFBPUlQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIgOiBwdWJsaWMgTG9nZ2Vy
SGVscGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyPiBjcmVhdGUo
KTsKKyAgICBzdHJ1Y3QgSW5pdCB7CisgICAgICAgIEZ1bmN0aW9uPHZvaWQoKT4mJiBjcmFzaENh
bGxiYWNrOworI2lmIFVTRShMSUJXRUJSVEMpCisgICAgICAgIFJlZlB0cjxMaWJXZWJSVENBdWRp
b01vZHVsZT4gYXVkaW9Nb2R1bGU7CisjZW5kaWYKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
KyAgICAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXI7CisgICAgICAgIGNvbnN0IHZvaWQqIGxvZ0lk
ZW50aWZpZXI7CisjZW5kaWYKKyAgICB9OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+IGNyZWF0ZShJbml0JiYpOwogICAgIHZpcnR1YWwg
fkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwpAQCAtNTYsMTYg
KzY3LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldEF1ZGlvT3V0cHV0RGV2aWNl
KGNvbnN0IFN0cmluZyYpOwogCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgdm9pZCBz
ZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiwgY29uc3Qgdm9pZCopOwotI2VuZGlmCi0KLSAgICB1c2lu
ZyBSZW5kZXJlckNyZWF0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXI+ICgqKSgpOwotICAgIHN0YXRpYyB2b2lkIHNldENyZWF0b3IoUmVuZGVyZXJDcmVh
dG9yKTsKLQotICAgIHZvaWQgc2V0Q3Jhc2hDYWxsYmFjayhGdW5jdGlvbjx2b2lkKCk+JiYgY2Fs
bGJhY2spIHsgbV9jcmFzaENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KLQogcHJvdGVj
dGVkOgorICAgIGV4cGxpY2l0IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyKEluaXQmJik7
CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigp
IGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5h
bDsKQEAgLTc0LDE3ICs3OCwyMyBAQCBwcm90ZWN0ZWQ6CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9n
Q2hhbm5lbCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKKyNpZiBVU0UoTElCV0VCUlRDKQorICAg
IExpYldlYlJUQ0F1ZGlvTW9kdWxlKiBhdWRpb01vZHVsZSgpOworI2VuZGlmCisKICAgICB2b2lk
IGNyYXNoZWQoKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgUmVuZGVyZXJDcmVhdG9yIG1fcmVu
ZGVyZXJDcmVhdG9yOwotCiAgICAgLy8gTWFpbiB0aHJlYWQgd3JpdGFibGUgbWVtYmVycwogICAg
IGZsb2F0IG1fdm9sdW1lIHsgMSB9OwogICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9jcmFzaENhbGxi
YWNrOwogCisjaWYgVVNFKExJQldFQlJUQykKKyAgICBSZWZQdHI8TGliV2ViUlRDQXVkaW9Nb2R1
bGU+IG1fYXVkaW9Nb2R1bGU7CisjZW5kaWYKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAot
ICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOworICAgIFJlZjxjb25zdCBMb2dnZXI+
IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKICNlbmRpZgogfTsK
QEAgLTEwNSwxMCArMTE1LDE3IEBAIGlubGluZSB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyOjpjcmFzaGVkKCkKICAgICAgICAgbV9jcmFzaENhbGxiYWNrKCk7CiB9CiAKKyNpZiBV
U0UoTElCV0VCUlRDKQoraW5saW5lIExpYldlYlJUQ0F1ZGlvTW9kdWxlKiBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlcjo6YXVkaW9Nb2R1bGUoKQoreworICAgIHJldHVybiBtX2F1ZGlvTW9k
dWxlLmdldCgpOworfQorI2VuZGlmCisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIGlubGlu
ZSBjb25zdCBMb2dnZXImIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpsb2dnZXIoKSBj
b25zdAogewotICAgIHJldHVybiAqbV9sb2dnZXI7CisgICAgcmV0dXJuIG1fbG9nZ2VyLmdldCgp
OwogICAgIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwCmluZGV4
IDE2MjQ5ODA5NTEyMmY0ZjRiMDUyMDVlNzFmYjdjYzViOTBlNGJmOTIuLmE0NzEyZDNjMDFjNzQ1
OGM4MjY1YzJhY2M0MDNiODUxMTE3MTg3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTdHJlYW0uY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAogI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmgiCisjaW5jbHVkZSAi
TGliV2ViUlRDQXVkaW9Nb2R1bGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAi
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNDgsMjAgKzUwLDMxIEBAIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW06On5BdWRpb1Ry
YWNrUHJpdmF0ZU1lZGlhU3RyZWFtKCkKICAgICBjbGVhcigpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW06OmNyZWF0ZVJlbmRlcmVyKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0mIHN0cmVh
bSkKKyNpZiBVU0UoTElCV0VCUlRDKQorc3RhdGljIFJlZlB0cjxMaWJXZWJSVENBdWRpb01vZHVs
ZT4gYXVkaW9Nb2R1bGVGcm9tU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2UmIHNvdXJjZSkKIHsK
LSAgICBhdXRvIHJlbmRlcmVyID0gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmNyZWF0
ZSgpOwotICAgIGlmICghcmVuZGVyZXIpCisgICAgaWYgKCFpczxSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2U+KHNvdXJjZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorICAgIHJldHVybiBkb3duY2FzdDxSZWFsdGltZUluY29taW5nQXVkaW9T
b3VyY2U+KHNvdXJjZSkuYXVkaW9Nb2R1bGUoKTsKK30KKyNlbmRpZgorCitzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI+IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW06OmNyZWF0ZVJlbmRlcmVyKEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0mIHN0cmVh
bSkKK3sKICAgICBhdXRvJiB0cmFjayA9IHN0cmVhbS5tX3N0cmVhbVRyYWNrLmdldCgpOwotICAg
IHJlbmRlcmVyLT5zZXRMb2dnZXIodHJhY2subG9nZ2VyKCksIHRyYWNrLmxvZ0lkZW50aWZpZXIo
KSk7CisgICAgcmV0dXJuIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpjcmVhdGUoQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OkluaXQgeworICAgICAgICBbc3RyZWFtID0gV2Vh
a1B0ciB7IHN0cmVhbSB9XSB7CisgICAgICAgICAgICBpZiAoc3RyZWFtKQorICAgICAgICAgICAg
ICAgIHN0cmVhbS0+Y3JlYXRlTmV3UmVuZGVyZXIoKTsKKyAgICAgICAgfQorI2lmIFVTRShMSUJX
RUJSVEMpCisgICAgICAgICwgYXVkaW9Nb2R1bGVGcm9tU291cmNlKHN0cmVhbS5tX2F1ZGlvU291
cmNlLmdldCgpKQorI2VuZGlmCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgICAgICwg
dHJhY2subG9nZ2VyKCkKKyAgICAgICAgLCB0cmFjay5sb2dJZGVudGlmaWVyKCkKICNlbmRpZgot
ICAgIHJlbmRlcmVyLT5zZXRDcmFzaENhbGxiYWNrKFtzdHJlYW0gPSBXZWFrUHRyIHsgc3RyZWFt
IH1dIHsKLSAgICAgICAgaWYgKHN0cmVhbSkKLSAgICAgICAgICAgIHN0cmVhbS0+Y3JlYXRlTmV3
UmVuZGVyZXIoKTsKICAgICB9KTsKLSAgICByZXR1cm4gcmVuZGVyZXI7CiB9CiAKIHZvaWQgQXVk
aW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTo6Y2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZS5jcHAKaW5kZXggNDgzNGU3ZjA3Y2U3MDk3ZDA1NmRkNjQ5NTliMzc2ZGZkMGE0
YmE2NS4uMTE5YzMwNTA5ZjQ5MTQ1MDA0MzE1NDFlODI3NTBhODljMGNjNjYxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaWYgVVNF
KExJQldFQlJUQykKIAogI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCisjaW5jbHVk
ZSAiTGliV2ViUlRDQXVkaW9Nb2R1bGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTgwLDYgKzgxLDEyIEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXR0aW5ncygpCiAgICAg
cmV0dXJuIG1fY3VycmVudFNldHRpbmdzOwogfQogCit2b2lkIFJlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZTo6c2V0QXVkaW9Nb2R1bGUoUmVmUHRyPExpYldlYlJUQ0F1ZGlvTW9kdWxlPiYmIGF1
ZGlvTW9kdWxlKQoreworICAgIEFTU0VSVCghbV9hdWRpb01vZHVsZSk7CisgICAgbV9hdWRpb01v
ZHVsZSA9IFdURk1vdmUoYXVkaW9Nb2R1bGUpOworfQorCiB9CiAKICNlbmRpZiAvLyBVU0UoTElC
V0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaAppbmRleCBhMThmYzIxNjA4
YzFjZDU5NmE1NDQ1NTAzMjhiODA1MjEzYjhhNGYwLi5hODVjZWIxMmM0ZWJhMWZiNjg1ODM4ODNk
NWNiNjJjOTcwYWVmOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaApAQCAt
NDUsNiArNDUsOCBAQCBBTExPV19VTlVTRURfUEFSQU1FVEVSU19FTkQKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBMaWJXZWJSVENBdWRpb01vZHVsZTsKKwogY2xhc3MgUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlCiAgICAgOiBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJjZQogICAg
ICwgcHJpdmF0ZSB3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlCkBAIC01Myw2ICs1NSw5
IEBAIGNsYXNzIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZQogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlPiBjcmVhdGUocnRjOjpzY29wZWRfcmVm
cHRyPHdlYnJ0Yzo6QXVkaW9UcmFja0ludGVyZmFjZT4mJiwgU3RyaW5nJiYpOwogCisgICAgdm9p
ZCBzZXRBdWRpb01vZHVsZShSZWZQdHI8TGliV2ViUlRDQXVkaW9Nb2R1bGU+JiYpOworICAgIExp
YldlYlJUQ0F1ZGlvTW9kdWxlKiBhdWRpb01vZHVsZSgpIHsgcmV0dXJuIG1fYXVkaW9Nb2R1bGUu
Z2V0KCk7IH0KKwogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZShy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcm
Jik7CiAgICAgflJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZSgpOwpAQCAtNzksNiArODQsNyBA
QCBwcml2YXRlOgogCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzIG1fY3VycmVudFNl
dHRpbmdzOwogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZh
Y2U+IG1fYXVkaW9UcmFjazsKKyAgICBSZWZQdHI8TGliV2ViUlRDQXVkaW9Nb2R1bGU+IG1fYXVk
aW9Nb2R1bGU7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBtdXRhYmxlIFJlZlB0
cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2Nv
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcAppbmRleCBiMjA1MzM0ZDgzNzA5YWY5Zjc2
N2ViYzAwZTJjMjE4MmZhMmNhNWZjLi43ZmIyMmM4ZDc3MWE0Y2Y1YzMzZTUwOWU1Mzk3ZWJlZWFl
ZTA3NzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9j
b2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hLmNwcApAQCAtMzYsOCArMzYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OkF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyQ29jb2EoKQotICAgIDogbV9yZXNldE9ic2VydmVyKFt0aGlzXSB7IHJlc2V0
KCk7IH0pCitBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckNvY29hKEluaXQmJiBpbml0KQorICAgIDogQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXIoV1RGTW92ZShpbml0KSkKKyAgICAsIG1fcmVzZXRPYnNlcnZlcihbdGhp
c10geyByZXNldCgpOyB9KQogewogfQogCkBAIC01NCwxMCArNTUsMTcgQEAgdm9pZCBBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpzdGFydChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY2FsbGIKICAgICB9KTsKIH0KIAorQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyVW5pdCYgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6cmVuZGVyZXJVbml0
KCkKK3sKKyAgICBpZiAoYXV0byogYXVkaW9Nb2R1bGUgPSB0aGlzLT5hdWRpb01vZHVsZSgpKQor
ICAgICAgICByZXR1cm4gYXVkaW9Nb2R1bGUtPmluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJVbml0KCk7CisgICAgcmV0dXJuIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
VW5pdDo6c2luZ2xldG9uKCk7Cit9CisKIHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJDb2NvYTo6c3RvcCgpCiB7CiAgICAgaWYgKG1fZGF0YVNvdXJjZSkKLSAgICAgICAgQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzaW5nbGV0b24oKS5yZW1vdmVTb3VyY2UoKm1f
ZGF0YVNvdXJjZSk7CisgICAgICAgIHJlbmRlcmVyVW5pdCgpLnJlbW92ZVNvdXJjZSgqbV9kYXRh
U291cmNlKTsKIH0KIAogdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpj
bGVhcigpCkBAIC04NCw3ICs5Miw3IEBAIHZvaWQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJDb2NvYTo6cmVzZXQoKQogdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
OjpzZXRBdWRpb091dHB1dERldmljZShjb25zdCBTdHJpbmcmIGRldmljZUlkKQogewogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgY3JlYXRlIGEgdW5pdCBmb3Igb3Vyc2VsdmVzIGhlcmUgb3IgdXNl
IHRoZSBkZWZhdWx0IHVuaXQgaWYgZGV2aWNlSWQgaXMgbWF0Y2hpbmcuCi0gICAgQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzaW5nbGV0b24oKS5zZXRBdWRpb091dHB1dERldmlj
ZShkZXZpY2VJZCk7CisgICAgcmVuZGVyZXJVbml0KCkuc2V0QXVkaW9PdXRwdXREZXZpY2UoZGV2
aWNlSWQpOwogICAgIG1fc2hvdWxkUmVjcmVhdGVEYXRhU291cmNlID0gdHJ1ZTsKIH0KIApAQCAt
MTI2LDExICsxMzQsMTEgQEAgdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
OjpwdXNoU2FtcGxlcyhjb25zdCBNZWRpYVRpbWUmIHNhbXBsZVRpbWUKICAgICAgICAgICAgIG5l
d1NvdXJjZS0+c2V0TG9nZ2VyKGxvZ2dlcigpLCBsb2dJZGVudGlmaWVyKCkpOwogI2VuZGlmCiAg
ICAgICAgICAgICBpZiAob2xkU291cmNlKQotICAgICAgICAgICAgICAgIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdDo6c2luZ2xldG9uKCkucmVtb3ZlU291cmNlKCpvbGRTb3VyY2Up
OworICAgICAgICAgICAgICAgIHJlbmRlcmVyVW5pdCgpLnJlbW92ZVNvdXJjZSgqb2xkU291cmNl
KTsKIAogICAgICAgICAgICAgbmV3U291cmNlLT5zZXRWb2x1bWUodm9sdW1lKCkpOwotICAgICAg
ICAgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzaW5nbGV0b24oKS5hZGRS
ZXNldE9ic2VydmVyKG1fcmVzZXRPYnNlcnZlcik7Ci0gICAgICAgICAgICBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRvbigpLmFkZFNvdXJjZShXVEZNb3ZlKG5ld1Nv
dXJjZSkpOworICAgICAgICAgICAgcmVuZGVyZXJVbml0KCkuYWRkUmVzZXRPYnNlcnZlcihtX3Jl
c2V0T2JzZXJ2ZXIpOworICAgICAgICAgICAgcmVuZGVyZXJVbml0KCkuYWRkU291cmNlKFdURk1v
dmUobmV3U291cmNlKSk7CiAgICAgICAgIH0pOwogICAgICAgICBtX2RhdGFTb3VyY2UgPSBXVEZN
b3ZlKGRhdGFTb3VyY2UpOwogICAgICAgICBtX3Nob3VsZFJlY3JlYXRlRGF0YVNvdXJjZSA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29j
b2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJD
b2NvYS5oCmluZGV4IDNhN2IzZGM5MTMyZTZmNDEyMTRlYTg0NzVhY2VlM2MwMTFlMmNlM2QuLjY0
NjY5ODc3NDk1YjY5OWY3YmI2YTM1NDkwYzI0OTMzMzAxNjkxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmgKQEAgLTM5LDEyICsz
OSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvU2FtcGxlRGF0YVNvdXJj
ZTsKIGNsYXNzIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDsKK2NsYXNzIEJhc2VBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQ7CiBjbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiAK
IGNsYXNzIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EgOiBwdWJsaWMgQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLCBXZWFrUHRyRmFjdG9yeUluaXRpYWxpemF0aW9uOjpF
YWdlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EoKTsKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckNvY29hKEluaXQmJik7CiAgICAgfkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyQ29jb2EoKTsKIAogcHJpdmF0ZToKQEAgLTU4LDYgKzU5LDggQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgcmVzZXQoKTsKIAorICAgIEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQmIHJlbmRlcmVyVW5pdCgpOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPENBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbj4gbV9vdXRwdXREZXNjcmlwdGlvbjsKICAgICBSZWZQdHI8QXVkaW9TYW1wbGVE
YXRhU291cmNlPiBtX2RhdGFTb3VyY2U7CiAgICAgYm9vbCBtX3Nob3VsZFJlY3JlYXRlRGF0YVNv
dXJjZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdC5oCmluZGV4IDVmMzBiOWJkNDYyYWQyM2I2NzAxMzI5OTRlNDhkNmZmOTVi
NzA0ZDYuLjNmMDliZTgxODU4YWQ5MGRlMDhlZGM2MTYwNGEzNjM5ZWRmODA0NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oCkBAIC0y
OCwxMCArMjgsOSBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVybmFsVW5pdC5oIgotI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSAiQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5p
dC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNp
bmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgpAQCAtNDMs
NyArNDIsNyBAQCBjbGFzcyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q7CiBjbGFzcyBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb247CiBjbGFzcyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckludGVy
bmFsVW5pdDsKIAotY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IHsKK2Ns
YXNzIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCA6IHB1YmxpYyBCYXNlQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0JiBzaW5nbGV0b24oKTsK
IApAQCAtNTYsMTUgKzU1LDE0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bmRlcihzaXplX3Qgc2FtcGxlQ291bnQsIEF1ZGlvQnVmZmVyTGlzdCYsIHVpbnQ2NF90IHNhbXBs
ZVRpbWUsIGRvdWJsZSBob3N0VGltZSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MmKTsKICAg
ICB2b2lkIHJlc2V0KCk7CiAKLSAgICB2b2lkIHNldEF1ZGlvT3V0cHV0RGV2aWNlKGNvbnN0IFN0
cmluZyYpOwotCi0gICAgdm9pZCBhZGRTb3VyY2UoUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4m
Jik7Ci0gICAgdm9pZCByZW1vdmVTb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJik7Ci0KLSAg
ICB1c2luZyBSZXNldE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZCgpPjsKLSAgICB2b2lkIGFkZFJl
c2V0T2JzZXJ2ZXIoUmVzZXRPYnNlcnZlciYgb2JzZXJ2ZXIpIHsgbV9yZXNldE9ic2VydmVycy5h
ZGQob2JzZXJ2ZXIpOyB9CiAgICAgdm9pZCByZXRyaWV2ZUZvcm1hdERlc2NyaXB0aW9uKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uKik+JiYpOwog
CisgICAgLy8gQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdAorICAgIHZvaWQg
c2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBhZGRT
b3VyY2UoUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4mJikgZmluYWw7CisgICAgdm9pZCByZW1v
dmVTb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJikgZmluYWw7CisgICAgdm9pZCBhZGRSZXNl
dE9ic2VydmVyKFJlc2V0T2JzZXJ2ZXImIG9ic2VydmVyKSBmaW5hbCB7IG1fcmVzZXRPYnNlcnZl
cnMuYWRkKG9ic2VydmVyKTsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2
b2lkIHN0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2NvY29hL0Jhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Jhc2VBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlclVuaXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjc2NTNhMDNmNTZlZTkwZmU2ZmVhZTY3
MDYyYTZmODk4NWMxMjRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vY29jb2EvQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5p
dC5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9PYnNlcnZlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvU2Ft
cGxlRGF0YVNvdXJjZTsKKworY2xhc3MgQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
VW5pdCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyVW5pdCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBhZGRTb3VyY2UoUmVm
PEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVT
b3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNl
dEF1ZGlvT3V0cHV0RGV2aWNlKGNvbnN0IFN0cmluZyYpID0gMDsKKworICAgIHVzaW5nIFJlc2V0
T2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKCk+OworICAgIHZpcnR1YWwgdm9pZCBhZGRSZXNldE9i
c2VydmVyKFJlc2V0T2JzZXJ2ZXImKSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vY29jb2EvSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvSW5jb21pbmdBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjNTAwYjE0ZjE1
NmUxZTg2Y2E2NWM5N2VlZTIxNDU1MjA0MGVhY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdC5jcHAKQEAgLTAsMCArMSwyMDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlclVuaXQuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRl
ICJBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCIKKyNpbmNsdWRlICJBdWRpb1Nh
bXBsZURhdGFTb3VyY2UuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRpb0Zvcm1hdC5oIgorI2lu
Y2x1ZGUgIkxpYldlYlJUQ0F1ZGlvTW9kdWxlLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIldlYkF1ZGlvQnVmZmVyTGlzdC5oIgorI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24v
TWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgorCisj
aW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OkluY29taW5n
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0KExpYldlYlJUQ0F1ZGlvTW9kdWxlJiBh
dWRpb01vZHVsZSkKKyAgICA6IG1fYXVkaW9Nb2R1bGUoYXVkaW9Nb2R1bGUpCisgICAgLCBtX3F1
ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyVW5pdCIsIFdvcmtRdWV1ZTo6UU9TOjpVc2VySW5pdGlhdGVkKSkKKyNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKKyAgICAsIG1fbG9nSWRlbnRpZmllcihMb2dnZXJIZWxwZXI6OnVuaXF1ZUxv
Z0lkZW50aWZpZXIoKSkKKyNlbmRpZgoreworfQorCitJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyVW5pdDo6fkluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0KCkKK3sKK30KKwordm9pZCBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
VW5pdDo6c2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJiBkZXZpY2VJRCkKK3sKKyAg
ICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRvbigpLnNldEF1ZGlv
T3V0cHV0RGV2aWNlKGRldmljZUlEKTsKK30KKwordm9pZCBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdDo6YWRkUmVzZXRPYnNlcnZlcihSZXNldE9ic2VydmVyJiBvYnNl
cnZlcikKK3sKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRv
bigpLmFkZFJlc2V0T2JzZXJ2ZXIob2JzZXJ2ZXIpOworfQorCit2b2lkIEluY29taW5nQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjphZGRTb3VyY2UoUmVmPEF1ZGlvU2FtcGxlRGF0
YVNvdXJjZT4mJiBzb3VyY2UpCit7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgc291
cmNlLT5sb2dnZXIoKS5sb2dBbHdheXMoTG9nV2ViUlRDLCAiSW5jb21pbmdBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQ6OmFkZFNvdXJjZSAiLCBzb3VyY2UtPmxvZ0lkZW50aWZpZXIo
KSk7CisjZW5kaWYKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorICAgICAgICBpZiAoIW1fbG9nZ2VyKQorICAgICAgICAgICAgbV9sb2dnZXIg
PSAmc291cmNlLT5sb2dnZXIoKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKHNvdXJjZS0+b3V0cHV0
RGVzY3JpcHRpb24oKSk7CisgICAgaWYgKCFzb3VyY2UtPm91dHB1dERlc2NyaXB0aW9uKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBhdXRvIG91dHB1dERlc2NyaXB0aW9uID0gKnNvdXJjZS0+b3V0
cHV0RGVzY3JpcHRpb24oKTsKKworICAgIEFTU0VSVCghbV9zb3VyY2VzLmNvbnRhaW5zKHNvdXJj
ZS5nZXQoKSkpOworICAgIGJvb2wgc2hvdWxkU3RhcnQgPSBtX3NvdXJjZXMuaXNFbXB0eSgpOwor
ICAgIG1fc291cmNlcy5hZGQoV1RGTW92ZShzb3VyY2UpKTsKKworICAgIHBvc3RUYXNrKFt0aGlz
LCBuZXdTb3VyY2VzID0gY29weVRvVmVjdG9yKG1fc291cmNlcyksIHNob3VsZFN0YXJ0LCBvdXRw
dXREZXNjcmlwdGlvbl0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9yZW5kZXJTb3VyY2VzID0gV1RG
TW92ZShuZXdTb3VyY2VzKTsKKyAgICAgICAgaWYgKCFzaG91bGRTdGFydCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uID0gb3V0cHV0RGVz
Y3JpcHRpb247CisgICAgICAgIG1fYXVkaW9CdWZmZXJMaXN0ID0gbWFrZVVuaXF1ZTxXZWJBdWRp
b0J1ZmZlckxpc3Q+KG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24pOworICAgICAgICBtX3NhbXBs
ZUNvdW50ID0gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgLyAxMDA7Cisg
ICAgICAgIG1fYXVkaW9CdWZmZXJMaXN0LT5zZXRTYW1wbGVDb3VudChtX3NhbXBsZUNvdW50KTsK
KyAgICAgICAgbV9taXhlZFNvdXJjZSA9IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Y3JlYXRlKG1f
b3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpICogMC41LCAqdGhpcywgTGliV2Vi
UlRDQXVkaW9Nb2R1bGU6OlBvbGxTYW1wbGVzQ291bnQgKyAxKTsKKyAgICAgICAgbV9taXhlZFNv
dXJjZS0+c2V0SW5wdXRGb3JtYXQob3V0cHV0RGVzY3JpcHRpb24pOworICAgICAgICBtX21peGVk
U291cmNlLT5zZXRPdXRwdXRGb3JtYXQob3V0cHV0RGVzY3JpcHRpb24pOworICAgICAgICBtX3dy
aXRlQ291bnQgPSAwOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRN
b2R1bGUgPSBSZWYgeyBtX2F1ZGlvTW9kdWxlIH0sIHNvdXJjZSA9IG1fbWl4ZWRTb3VyY2VdKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBtX3JlZ2lzdGVyZWRNaXhlZFNvdXJjZSA9IFdURk1vdmUo
c291cmNlKTsKKyAgICAgICAgICAgIHN0YXJ0KCk7CisgICAgICAgIH0pOworICAgIH0pOworfQor
Cit2b2lkIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpyZW1vdmVT
b3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJiBzb3VyY2UpCit7CisjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECisgICAgc291cmNlLmxvZ2dlcigpLmxvZ0Fsd2F5cyhMb2dXZWJSVEMsICJJbmNv
bWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6cmVtb3ZlU291cmNlICIsIHNv
dXJjZS5sb2dJZGVudGlmaWVyKCkpOworI2VuZGlmCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGJvb2wgc2hvdWxkU3RvcCA9ICFtX3NvdXJjZXMuaXNFbXB0eSgpOworICAgIG1f
c291cmNlcy5yZW1vdmUoc291cmNlKTsKKyAgICBzaG91bGRTdG9wICY9IG1fc291cmNlcy5pc0Vt
cHR5KCk7CisKKyAgICBwb3N0VGFzayhbdGhpcywgbmV3U291cmNlcyA9IGNvcHlUb1ZlY3Rvciht
X3NvdXJjZXMpLCBzaG91bGRTdG9wXSgpIG11dGFibGUgeworICAgICAgICBtX3JlbmRlclNvdXJj
ZXMgPSBXVEZNb3ZlKG5ld1NvdXJjZXMpOworICAgICAgICBpZiAoIXNob3VsZFN0b3ApCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVj
dGVkTW9kdWxlID0gUmVmIHsgbV9hdWRpb01vZHVsZSB9XSB7CisgICAgICAgICAgICBzdG9wKCk7
CisgICAgICAgIH0pOworICAgIH0pOworCit9CisKK3ZvaWQgSW5jb21pbmdBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnN0YXJ0KCkKK3sKKyAgICBSRUxFQVNFX0xPRyhXZWJSVEMs
ICJJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c3RhcnQiKTsKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJVbml0OjpzaW5nbGV0b24oKS5hZGRTb3VyY2UoKm1fcmVnaXN0ZXJlZE1peGVkU291cmNl
KTsKKyAgICBtX2F1ZGlvTW9kdWxlLnN0YXJ0SW5jb21pbmdBdWRpb1JlbmRlcmluZygpOworfQor
Cit2b2lkIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzdG9wKCkK
K3sKKyAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdDo6c3RvcCIpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAg
ICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRvbigpLnJlbW92ZVNv
dXJjZSgqbV9yZWdpc3RlcmVkTWl4ZWRTb3VyY2UpOworICAgIG1fcmVnaXN0ZXJlZE1peGVkU291
cmNlID0gbnVsbHB0cjsKKyAgICBtX2F1ZGlvTW9kdWxlLnN0b3BJbmNvbWluZ0F1ZGlvUmVuZGVy
aW5nKCk7Cit9CisKK3ZvaWQgSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQ6OnBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICAvLyBXZSBw
cm90ZWN0ICd0aGlzJyBieSB0YWtpbmcgYSByZWYgdG8gaXRzIGF1ZGlvIG1vZHVsZS4KKyAgICBt
X3F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkTW9kdWxlID0gUmVmIHsgbV9hdWRpb01vZHVsZSB9
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBjYWxs
YmFjaygpOworICAgIH0pOworfQorCit2b2lkIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJVbml0OjpuZXdBdWRpb0NodW5rUHVzaGVkKCkKK3sKKyAgICBEaXNhYmxlTWFsbG9j
UmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlIGRpc2FibGVNYWxsb2NSZXN0cmljdGlv
bnM7CisgICAgcG9zdFRhc2soW3RoaXMsIGN1cnJlbnRBdWRpb1NhbXBsZUNvdW50ID0gbV9hdWRp
b01vZHVsZS5jdXJyZW50QXVkaW9TYW1wbGVDb3VudCgpXSB7CisgICAgICAgIHJlbmRlckF1ZGlv
Q2h1bmsoY3VycmVudEF1ZGlvU2FtcGxlQ291bnQpOworICAgIH0pOworfQorCit2b2lkIEluY29t
aW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpyZW5kZXJBdWRpb0NodW5rKHVp
bnQ2NF90IGN1cnJlbnRBdWRpb1NhbXBsZUNvdW50KQoreworICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOworCisgICAgaWYgKG1fcmVuZGVyU291cmNlcy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIHVpbnQ2NF90IHRpbWVTdGFtcCA9IGN1cnJlbnRBdWRpb1NhbXBsZUNvdW50
ICogbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgLyBMaWJXZWJSVENBdWRp
b0Zvcm1hdDo6c2FtcGxlUmF0ZTsKKworICAgIC8vIE1peCBhbGwgc291cmNlcy4KKyAgICBib29s
IGlzRmlyc3RTb3VyY2UgPSB0cnVlOworICAgIGZvciAoYXV0byYgc291cmNlIDogbV9yZW5kZXJT
b3VyY2VzKSB7CisgICAgICAgIGlmIChzb3VyY2UtPnB1bGxBdmFpbGFibGVTYW1wbGVDaHVuaygq
bV9hdWRpb0J1ZmZlckxpc3QsIG1fc2FtcGxlQ291bnQsIHRpbWVTdGFtcCwgaXNGaXJzdFNvdXJj
ZSA/IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Q29weSA6IEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6
TWl4KSkKKyAgICAgICAgICAgIGlzRmlyc3RTb3VyY2UgPSBmYWxzZTsKKyAgICB9CisKKyAgICBD
TVRpbWUgc3RhcnRUaW1lID0gUEFMOjpDTVRpbWVNYWtlKG1fd3JpdGVDb3VudCwgbV9vdXRwdXRT
dHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkpOworICAgIG1fbWl4ZWRTb3VyY2UtPnB1c2hT
YW1wbGVzKFBBTDo6dG9NZWRpYVRpbWUoc3RhcnRUaW1lKSwgKm1fYXVkaW9CdWZmZXJMaXN0LCBt
X3NhbXBsZUNvdW50KTsKKyAgICBtX3dyaXRlQ291bnQgKz0gbV9zYW1wbGVDb3VudDsKK30KKwor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorY29uc3QgTG9nZ2VyJiBJbmNvbWluZ0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6bG9nZ2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Km1fbG9nZ2VyOworfQorCitXVEZMb2dDaGFubmVsJiBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyVW5pdDo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ1dl
YlJUQzsKK30KKworY29uc3Qgdm9pZCogSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlclVuaXQ6OmxvZ0lkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2xvZ0lkZW50
aWZpZXI7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2NvY29hL0luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWlu
Z0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzOWU1YTNh
MDA2NWQxZTIwOTE5ZGIzYTM1Njk2Y2E5OWU3MGFmMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQmFz
ZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oIgorI2luY2x1ZGUgIkNBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
VEYgeworY2xhc3MgV29ya1F1ZXVlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OworY2xhc3MgQXVkaW9T
YW1wbGVEYXRhU291cmNlOworY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OworY2xhc3MgQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uOworY2xhc3MgTGliV2ViUlRDQXVkaW9Nb2R1bGU7CitjbGFz
cyBXZWJBdWRpb0J1ZmZlckxpc3Q7CisKK2NsYXNzIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJVbml0IDogcHVibGljIEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
clVuaXQKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIHB1YmxpYyBMb2dnZXJIZWxw
ZXIKKyNlbmRpZgoreworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IGV4cGxpY2l0IEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0KExpYldl
YlJUQ0F1ZGlvTW9kdWxlJik7CisgICAgfkluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJVbml0KCk7CisKKyAgICB2b2lkIG5ld0F1ZGlvQ2h1bmtQdXNoZWQoKTsKKworcHJpdmF0
ZToKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CisgICAgdm9pZCBwb3N0VGFz
ayhGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVuZGVyQXVkaW9DaHVuayh1aW50NjRf
dCBjdXJyZW50QXVkaW9TYW1wbGVDb3VudCk7CisKKyAgICAvLyBCYXNlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmljZShjb25zdCBT
dHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGFkZFJlc2V0T2JzZXJ2ZXIoUmVzZXRPYnNlcnZlciYp
IGZpbmFsOworICAgIHZvaWQgYWRkU291cmNlKFJlZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+JiYp
IGZpbmFsOworICAgIHZvaWQgcmVtb3ZlU291cmNlKEF1ZGlvU2FtcGxlRGF0YVNvdXJjZSYpIGZp
bmFsOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLy8gTG9nZ2VySGVscGVyLgor
ICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgY2hhciog
bG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkluY29taW5nQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJVbml0IjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwo
KSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmlu
YWw7CisjZW5kaWYKKworICAgIC8vIE1haW4gdGhyZWFkIHZhcmlhYmxlcy4KKyAgICBMaWJXZWJS
VENBdWRpb01vZHVsZSYgbV9hdWRpb01vZHVsZTsKKyAgICBSZWY8V1RGOjpXb3JrUXVldWU+IG1f
cXVldWU7CisgICAgSGFzaFNldDxSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPj4gbV9zb3VyY2Vz
OworICAgIFJlZlB0cjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fcmVnaXN0ZXJlZE1peGVkU291
cmNlOworCisgICAgLy8gQmFja2dyb3VuZCB0aHJlYWQgdmFyaWFibGVzLgorICAgIFZlY3RvcjxS
ZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPj4gbV9yZW5kZXJTb3VyY2VzOworICAgIFJlZlB0cjxB
dWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fbWl4ZWRTb3VyY2U7CisgICAgQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb247CisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CisgICAgc2l6ZV90IG1fc2Ft
cGxlQ291bnQgeyAwIH07CisgICAgc2l6ZV90IG1fd3JpdGVDb3VudCB7IDAgfTsKKworI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJlZlB0cjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwor
ICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgorfTsKKworfQorCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb01vZHVsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVk
aW9Nb2R1bGUuY3BwCmluZGV4IDk4ZmI1MmM1MjQyZTgwNjRiMTQ5ZDExNWEzZGE2YTA0MjM2N2Uw
NjcuLmE5ZjkzMmYzNzdhNzIzOTk3Y2Y0MjRlZmFkOGE0Y2FiNWMzZGFhYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENB
dWRpb01vZHVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvTW9kdWxlLmNwcApAQCAtMzIsNiArMzIsMTAgQEAKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAorI2lmIFBM
QVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJVbml0LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBMaWJXZWJSVENB
dWRpb01vZHVsZTo6TGliV2ViUlRDQXVkaW9Nb2R1bGUoKQpAQCAtNDAsNiArNDQsMTAgQEAgTGli
V2ViUlRDQXVkaW9Nb2R1bGU6OkxpYldlYlJUQ0F1ZGlvTW9kdWxlKCkKIHsKIH0KIAorTGliV2Vi
UlRDQXVkaW9Nb2R1bGU6On5MaWJXZWJSVENBdWRpb01vZHVsZSgpCit7Cit9CisKIGludDMyX3Qg
TGliV2ViUlRDQXVkaW9Nb2R1bGU6OlJlZ2lzdGVyQXVkaW9DYWxsYmFjayh3ZWJydGM6OkF1ZGlv
VHJhbnNwb3J0KiBhdWRpb1RyYW5zcG9ydCkKIHsKICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJM
aWJXZWJSVENBdWRpb01vZHVsZTo6UmVnaXN0ZXJBdWRpb0NhbGxiYWNrICVkIiwgISFhdWRpb1Ry
YW5zcG9ydCk7CkBAIC02Miw2ICs3MCw5IEBAIGludDMyX3QgTGliV2ViUlRDQXVkaW9Nb2R1bGU6
OlN0YXJ0UGxheW91dCgpCiAKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGV2aWNlTW9kdWxlPih0aGlz
KV0gewogICAgICAgICBtX3BvbGxpbmdUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgICAgIG1fY3VycmVudEF1ZGlvU2FtcGxlQ291bnQgPSAwOwor
I2VuZGlmCiAgICAgICAgIHBvbGxBdWRpb0RhdGEoKTsKICAgICB9KTsKICAgICByZXR1cm4gMDsK
QEAgLTEyOSw5ICsxNDAsMjMgQEAgdm9pZCBMaWJXZWJSVENBdWRpb01vZHVsZTo6cG9sbEZyb21T
b3VyY2UoKQogICAgICAgICBpbnQ2NF90IG50cFRpbWUgPSAtMTsKICAgICAgICAgY2hhciBkYXRh
W0xpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIGNoYW5uZWxzICogTGliV2Vi
UlRDQXVkaW9Gb3JtYXQ6OmNodW5rU2FtcGxlQ291bnRdOwogICAgICAgICBtX2F1ZGlvVHJhbnNw
b3J0LT5QdWxsUmVuZGVyRGF0YShMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlQnl0ZVNpemUg
KiA4LCBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6c2FtcGxlUmF0ZSwgY2hhbm5lbHMsIExpYldlYlJU
Q0F1ZGlvRm9ybWF0OjpjaHVua1NhbXBsZUNvdW50LCBkYXRhLCAmZWxhcHNlZFRpbWUsICZudHBU
aW1lKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgaWYgKG1faXNSZW5kZXJpbmdJbmNv
bWluZ0F1ZGlvKQorICAgICAgICAgICAgbV9pbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyVW5pdC0+bmV3QXVkaW9DaHVua1B1c2hlZCgpOworICAgICAgICBtX2N1cnJlbnRBdWRp
b1NhbXBsZUNvdW50ICs9IExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpjaHVua1NhbXBsZUNvdW50Owor
I2VuZGlmCiAgICAgfQogfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCitCYXNlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJVbml0JiBMaWJXZWJSVENBdWRpb01vZHVsZTo6aW5jb21pbmdBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQoKQoreworICAgIGlmICghbV9pbmNvbWluZ0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCkKKyAgICAgICAgbV9pbmNvbWluZ0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCA9IG1ha2VVbmlxdWU8SW5jb21pbmdBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1faW5jb21p
bmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENB
dWRpb01vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0F1ZGlvTW9kdWxlLmgKaW5kZXggNjcwYWM4ZmE0NWQzNWQxOTAwMDZjY2M4
NDZkYWQ1YTg4Y2I0ZmFmZC4uMDg4YWEyNTg0YzZiNzVkM2Q2YTU0MDFiMjcxMThjMzFiMTU1MGI3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0F1ZGlvTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvTW9kdWxlLmgKQEAgLTM5LDE0ICsz
OSwyNiBAQCBBTExPV19VTlVTRURfUEFSQU1FVEVSU19CRUdJTgogQUxMT1dfVU5VU0VEX1BBUkFN
RVRFUlNfRU5ECiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEJhc2VBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQ7CitjbGFzcyBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdDsKIAogLy8gTGliV2ViUlRDQXVkaW9Nb2R1bGUgaXMgcHVsbGluZyBzdHJl
YW1lZCBkYXRhIHRvIGVuc3VyZSBhdWRpbyBkYXRhIGlzIHBhc3NlZCB0byB0aGUgYXVkaW8gdHJh
Y2suCiBjbGFzcyBMaWJXZWJSVENBdWRpb01vZHVsZSA6IHB1YmxpYyB3ZWJydGM6OkF1ZGlvRGV2
aWNlTW9kdWxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBM
aWJXZWJSVENBdWRpb01vZHVsZSgpOworICAgIH5MaWJXZWJSVENBdWRpb01vZHVsZSgpOwogCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBQb2xsU2FtcGxlc0NvdW50ID0gMTsKKyAgICB2
b2lkIHJlZigpIHsgQWRkUmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmKCkgeyBSZWxlYXNlKCk7IH0K
KworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgc3RhcnRJbmNvbWluZ0F1ZGlvUmVuZGVy
aW5nKCkgeyBtX2lzUmVuZGVyaW5nSW5jb21pbmdBdWRpbyA9IHRydWU7IH0KKyAgICB2b2lkIHN0
b3BJbmNvbWluZ0F1ZGlvUmVuZGVyaW5nKCkgeyBtX2lzUmVuZGVyaW5nSW5jb21pbmdBdWRpbyA9
IGZhbHNlOyB9CisgICAgQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCYgaW5j
b21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQoKTsKKyAgICB1aW50NjRfdCBj
dXJyZW50QXVkaW9TYW1wbGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudEF1ZGlvU2Ft
cGxlQ291bnQ7IH0KKyNlbmRpZgogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IFUgc2hvdWxkTm90QmVDYWxsZWQoVSB2YWx1ZSkgY29uc3QKQEAgLTEzNSw2ICsxNDcsMTIgQEAg
cHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fcG9sbGluZ1RpbWU7CiAgICAgVGltZXIgbV9s
b2dUaW1lcjsKICAgICBpbnQgbV90aW1lU3BlbnQgeyAwIH07CisKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICB1aW50NjRfdCBtX2N1cnJlbnRBdWRpb1NhbXBsZUNvdW50IHsgMCB9OworICAgIGJv
b2wgbV9pc1JlbmRlcmluZ0luY29taW5nQXVkaW8geyBmYWxzZSB9OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdD4gbV9pbmNvbWlu
Z0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKaW5k
ZXggZmRkNzg4YTEwNjU1NDJmZTRlNzgwZjZlNDhjODcxNTI5M2M5MDc2OS4uOWUxYjNlNWJhOTI4
ZjJmMTY0Mjk0MzU2ZTM0ZDIxNjYwODcyODUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
UHJvdmlkZXIuY3BwCkBAIC03MCw2ICs3MCwxNiBAQCBib29sIExpYldlYlJUQ1Byb3ZpZGVyOjp3
ZWJSVENBdmFpbGFibGUoKQogfQogI2VuZGlmCiAKKyNpZiBVU0UoTElCV0VCUlRDKQorTGliV2Vi
UlRDUHJvdmlkZXI6OkxpYldlYlJUQ1Byb3ZpZGVyKCkKK3sKK30KKyNlbmRpZgorCitMaWJXZWJS
VENQcm92aWRlcjo6fkxpYldlYlJUQ1Byb3ZpZGVyKCkKK3sKK30KKwogI2lmICFVU0UoTElCV0VC
UlRDKSB8fCAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIExpYldlYlJUQ1Byb3ZpZGVyOjpyZWdpc3Rl
cldlYktpdFZQOURlY29kZXIoKQogewpAQCAtMjczLDcgKzI4MywxMiBAQCB3ZWJydGM6OlBlZXJD
b25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSogTGliV2ViUlRDUHJvdmlkZXI6OmZhY3RvcnkoKQog
CiBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZh
Y2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3RvcnkocnRjOjpU
aHJlYWQqIG5ldHdvcmtUaHJlYWQsIHJ0Yzo6VGhyZWFkKiBzaWduYWxpbmdUaHJlYWQpCiB7Ci0g
ICAgYXV0byBhdWRpb01vZHVsZSA9IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGV2
aWNlTW9kdWxlPihuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PExpYldlYlJUQ0F1ZGlvTW9kdWxl
PigpKTsKKyAgICBydGM6OnNjb3BlZF9yZWZwdHI8TGliV2ViUlRDQXVkaW9Nb2R1bGU+IGF1ZGlv
TW9kdWxlOworICAgIGlmICghbV9hdWRpb01vZHVsZSkgeworICAgICAgICBhdWRpb01vZHVsZSA9
IHJ0Yzo6c2NvcGVkX3JlZnB0cjxMaWJXZWJSVENBdWRpb01vZHVsZT4obmV3IHJ0Yzo6UmVmQ291
bnRlZE9iamVjdDxMaWJXZWJSVENBdWRpb01vZHVsZT4oKSk7CisgICAgICAgIG1fYXVkaW9Nb2R1
bGUgPSBhdWRpb01vZHVsZS5nZXQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgYXVkaW9Nb2R1bGUg
PSBtX2F1ZGlvTW9kdWxlLmdldCgpOwogCiAgICAgcmV0dXJuIHdlYnJ0Yzo6Q3JlYXRlUGVlckNv
bm5lY3Rpb25GYWN0b3J5KG5ldHdvcmtUaHJlYWQsIHNpZ25hbGluZ1RocmVhZCwgc2lnbmFsaW5n
VGhyZWFkLCBXVEZNb3ZlKGF1ZGlvTW9kdWxlKSwgd2VicnRjOjpDcmVhdGVCdWlsdGluQXVkaW9F
bmNvZGVyRmFjdG9yeSgpLCB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5BdWRpb0RlY29kZXJGYWN0b3J5
KCksIGNyZWF0ZUVuY29kZXJGYWN0b3J5KCksIGNyZWF0ZURlY29kZXJGYWN0b3J5KCksIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
aAppbmRleCA1MWI0OWEwZjExMTVjZGJjODQ5NDVjMDQyMTgzZmU2Y2UxMTYwN2Y1Li4wYjdhOTFi
NzY0MDQxMDY3MjRiNjdjZDg1OWY3MjdjZmE4ZDBlNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUHJvdmlkZXIuaApAQCAtNzksNyArNzksNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBMaWJX
ZWJSVENQcm92aWRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFVuaXF1ZVJlZjxMaWJXZWJSVENQ
cm92aWRlcj4gY3JlYXRlKCk7CiAKLSAgICB2aXJ0dWFsIH5MaWJXZWJSVENQcm92aWRlcigpID0g
ZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5MaWJXZWJSVENQcm92aWRlcigpOwogCiAgICAgc3RhdGlj
IGJvb2wgd2ViUlRDQXZhaWxhYmxlKCk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJXZWJLaXRW
UDlEZWNvZGVyKCk7CkBAIC0xMDMsNiArMTAzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgcnRj
OjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBl
ZXJDb25uZWN0aW9uKERvY3VtZW50SWRlbnRpZmllciwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbk9i
c2VydmVyJiwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Kiwgd2VicnRjOjpQZWVyQ29ubmVjdGlv
bkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmKTsKIAogICAgIHdlYnJ0Yzo6UGVlckNvbm5l
Y3Rpb25GYWN0b3J5SW50ZXJmYWNlKiBmYWN0b3J5KCk7CisgICAgTGliV2ViUlRDQXVkaW9Nb2R1
bGUqIGF1ZGlvTW9kdWxlKCk7CiAKICAgICAvLyBGSVhNRTogTWFrZSB0aGVzZSBtZXRob2RzIG5v
dCBzdGF0aWMuCiAgICAgc3RhdGljIHZvaWQgY2FsbE9uV2ViUlRDTmV0d29ya1RocmVhZChGdW5j
dGlvbjx2b2lkKCk+JiYpOwpAQCAtMTUwLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kYWJsZVNvY2tldEZhY3Rvcnk+IGNyZWF0ZVNvY2tldEZh
Y3RvcnkoU3RyaW5nJiYgLyogdXNlckFnZW50ICovLCBib29sIC8qIGlzRmlyc3RQYXJ0eSAqLywg
UmVnaXN0cmFibGVEb21haW4mJikgeyByZXR1cm4gbnVsbHB0cjsgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgTGliV2ViUlRDUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisgICAgTGliV2ViUlRDUHJvdmlkZXIo
KTsKIAogICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJm
YWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXIm
LCBydGM6Ok5ldHdvcmtNYW5hZ2VyJiwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Jiwgd2VicnRj
OjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmLCBzdGQ6OnVuaXF1
ZV9wdHI8d2VicnRjOjpBc3luY1Jlc29sdmVyRmFjdG9yeT4mJik7CiAKQEAgLTE3MSw2ICsxNzIs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gRklYTUU6IFJlbW92ZSBtX3VzZU5ldHdvcmtUaHJlYWRX
aXRoU29ja2V0U2VydmVyIG1lbWJlciB2YXJpYWJsZSBhbmQgbWFrZSBpdCBhIGdsb2JhbC4KICAg
ICBib29sIG1fdXNlTmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIgeyB0cnVlIH07CiAKKyAg
ICBSZWZQdHI8TGliV2ViUlRDQXVkaW9Nb2R1bGU+IG1fYXVkaW9Nb2R1bGU7CiAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiBtX2Zh
Y3Rvcnk7CiAgICAgYm9vbCBtX2Rpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3N1cHBvcnRzSDI2NSB7IGZhbHNlIH07CkBAIC0xODcsNCArMTg5LDEx
IEBAIHByb3RlY3RlZDoKICNlbmRpZgogfTsKIAorI2lmIFVTRShMSUJXRUJSVEMpCitpbmxpbmUg
TGliV2ViUlRDQXVkaW9Nb2R1bGUqIExpYldlYlJUQ1Byb3ZpZGVyOjphdWRpb01vZHVsZSgpCit7
CisgICAgcmV0dXJuIG1fYXVkaW9Nb2R1bGUuZ2V0KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAKaW5kZXggODk0NzljNjI0Zjc5ODgzMTQ1YTA4NmY1N2M1MDQyNGY0YzIzZDM2
ZC4uOWFlYTVmMWMwNzJjMDliZjA2M2Y0OTk5ZTAzYjIxOWU4NWQ3ZTJkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwCkBAIC0xMzIsNyAr
MTMyLDcgQEAgdm9pZCBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYTo6T25EYXRhKGNv
bnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdHNQZXIKICAgICAgICAgICAgIG1fbnVtYmVyT2ZG
cmFtZXMgPSAwOwogICAgIH0KIAotICAgIENNVGltZSBzdGFydFRpbWUgPSBQQUw6OkNNVGltZU1h
a2UobV9udW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CisgICAgQ01UaW1lIHN0YXJ0VGltZSA9
IFBBTDo6Q01UaW1lTWFrZShhdWRpb01vZHVsZSgpID8gYXVkaW9Nb2R1bGUoKS0+Y3VycmVudEF1
ZGlvU2FtcGxlQ291bnQoKSA6IG1fbnVtYmVyT2ZGcmFtZXMsIExpYldlYlJUQ0F1ZGlvRm9ybWF0
OjpzYW1wbGVSYXRlKTsKICAgICBhdXRvIG1lZGlhVGltZSA9IFBBTDo6dG9NZWRpYVRpbWUoc3Rh
cnRUaW1lKTsKICAgICBtX251bWJlck9mRnJhbWVzICs9IG51bWJlck9mRnJhbWVzOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442703</attachid>
            <date>2021-10-28 06:52:58 -0700</date>
            <delta_ts>2021-10-29 05:47:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232375-20211028155256.patch</filename>
            <type>text/plain</type>
            <size>55383</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzE1ZmQ1NDk0ZGM3YzRi
ZGQ3MzBkYTdlMDFkNTk4OTMzYzIyMTM2OC4uZjliZDgyNDg0OGMwMWE1MmQ1NWQ0ODcyZWE0OTc2
YzM2MGYxMDZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTEwLTI4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFbnN1cmUgc3luY2hyb25p
emVkIHJlbmRlcmluZyBvZiBpbmNvbWluZyBhdWRpbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjM3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYlJUQyBpbmNvbWluZyBhdWRpbyB0cmFj
a3MgYXJlIGd1YXJhbnRlZWQgdG8gYmUgc3luY2hyb25pemVkIGJhc2VkIG9uIHRoZSBhdWRpbyBt
b2R1bGUgY2xvY2suCisgICAgICAgIFByZXZpb3VzbHksIHdlIHdlcmUgbWl4aW5nIGFsbCBhdWRp
byB0cmFja3MgdG9nZXRoZXIsIGJ1dCB3ZSB3ZXJlIG5vdCBoYW5kbGluZyBzeW5jaHJvbml6YXRp
b24gb2YgdHJhY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBjbG9jay4KKyAgICAgICAgVGhpcyBjYW4g
Y2F1c2Ugc29tZSBsb3dlciBxdWFsaXR5IGF1ZGlvIHJlbmRlcmluZy4KKyAgICAgICAgVG8gcHJl
dmVudCB0aGlzLCBhbGwgV2ViUlRDIGluY29taW5nIGF1ZGlvIHRyYWNrcyBhcmUgbm93IG1peGVk
IHRvZ2V0aGVyIGluIGEgc2luZ2xlIHRyYWNrIHRoYXQgaXMgdGhlbiBtaXhlZCB3aXRoIGFsbCBv
dGhlciBub24gc3luY2hyb25pemVkIHRyYWNrcy4KKyAgICAgICAgVG8gZG8gc28gd2UgaW50cm9k
dWNlIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IHdoaWNoIHdpbGwg
cmVjZWl2ZSBhbGwgaW5jb21pbmcgYXVkaW8gdHJhY2tzLgorICAgICAgICBJdCB0aGVuIHNlbmRz
IHRoZSBtaXggdG8gdGhlIGFjdHVhbCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQu
CisgICAgICAgIFRvIGVuc3VyZSB0aWdodCBzeW5jaHJvbml6YXRpb24sIHdlIGludHJvZHVjZSBB
dWRpb1NhbXBsZURhdGFTb3VyY2U6OnB1bGxBdmFpbGFibGVTYW1wbGVDaHVuayB3aGljaCByZWFk
cyBkYXRhIHVzaW5nIHRoZSBwcm92aWRlZCB0aW1lc3RhbXAgcmVsYXRpdmUgdG8gdGhlIGlucHV0
IG9mZnNldC4KKyAgICAgICAgV2UgZG8gYSByZWZhY3RvcmluZyB0byBtYWtlIGl0IGVhc3kgdG8g
ZWl0aGVyIHVzZSBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCBvciBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQgYnkgaGF2aW5nIGEgYmFzZSBjbGFzcyBj
YWxsZWQgQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC4KKworICAgICAgICBN
YW51YWxseSB0ZXN0ZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kLmg6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRh
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRh
U291cmNlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJDb2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0Jhc2VBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlclVuaXQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y29jb2EvSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb01vZHVsZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRl
ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1Byb3ZpZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcDoKKwogMjAyMS0xMC0yOCAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBNYWMgd2sxIF0gMiBtZWRpYS1jYXBh
YmlsaXRpZXMvd2VicnRjIHRlc3RzIGFyZSBmbGFreSBmYWlsdXJlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMzZjOGI1
MGQ0MDE1NjcxYzIzN2UzMDZkOWMzMjNmMDlhZTE2ZDk4Zi4uYmJhOGM1YWFlMTExYjA4ZDc3OGEw
N2VkZmIwYTlkNjYxNGRiOTlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC0yOSw4ICsyOSwxMCBAQAogCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJJY2VDYW5kaWRhdGUuaCIKKyNpbmNsdWRlICJMaWJX
ZWJSVENBdWRpb01vZHVsZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCIKKyNpbmNsdWRlICJMaWJX
ZWJSVENQcm92aWRlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5o
IgogI2luY2x1ZGUgIkxpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaCIKICNpbmNsdWRlICJMaWJX
ZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuaCIKQEAgLTI5Myw3ICsyOTUsOCBAQCBSZWY8UlRD
UnRwUmVjZWl2ZXI+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2
ZXIoc3RkOjp1bmlxdWVfcAogewogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KCptX3BlZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKLSAgICBh
dXRvIHNvdXJjZSA9IGJhY2tlbmQtPmNyZWF0ZVNvdXJjZSgpOworICAgIGF1dG8gc291cmNlID0g
YmFja2VuZC0+Y3JlYXRlU291cmNlKGRvY3VtZW50KTsKKwogICAgIC8vIFJlbW90ZSBzb3VyY2Ug
aXMgaW5pdGlhbGx5IG11dGVkIGFuZCB3aWxsIGJlIHVubXV0ZWQgd2hlbiByZWNlaXZpbmcgdGhl
IGZpcnN0IHBhY2tldC4KICAgICBzb3VyY2UtPnNldE11dGVkKHRydWUpOwogICAgIGF1dG8gdHJh
Y2tJRCA9IHNvdXJjZS0+cGVyc2lzdGVudElEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tl
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcAppbmRleCBjY2E5NzA0YjU2NmMzNGVhYTBkZmYw
Y2M5OGRmZmE4M2E2ZTY3NDU4Li44MGQ3OGExMzY5YjEyYjM4MmU0ZjMwYTBkZTNjY2Q1MmJiOTVh
ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2Vu
ZC5jcHAKQEAgLTI1LDkgKzI1LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvTW9kdWxlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDRHRs
c1RyYW5zcG9ydEJhY2tlbmQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgogI2lu
Y2x1ZGUgIkxpYldlYlJUQ1J0cFJlY2VpdmVyVHJhbnNmb3JtQmFja2VuZC5oIgogI2luY2x1ZGUg
IkxpYldlYlJUQ1V0aWxzLmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJUQ1J0cFRy
YW5zZm9ybUJhY2tlbmQuaCIKICNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2Uu
aCIKICNpbmNsdWRlICJSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCIKQEAgLTk5LDcgKzEw
Myw3IEBAIFZlY3RvcjxSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2U+IExpYldlYlJUQ1J0cFJl
Y2VpdmVyQmFja2VuZDo6Z2V0U3luY2hyb25pemF0CiAgICAgcmV0dXJuIHNvdXJjZXM7CiB9CiAK
LVJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ6OmNy
ZWF0ZVNvdXJjZSgpCitSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gTGliV2ViUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kOjpjcmVhdGVTb3VyY2UoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIGF1dG8g
cnRjVHJhY2sgPSBtX3J0Y1JlY2VpdmVyLT50cmFjaygpOwogICAgIHN3aXRjaCAobV9ydGNSZWNl
aXZlci0+bWVkaWFfdHlwZSgpKSB7CkBAIC0xMDgsNyArMTEyLDEwIEBAIFJlZjxSZWFsdGltZU1l
ZGlhU291cmNlPiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ6OmNyZWF0ZVNvdXJjZSgpCiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzogewogICAg
ICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiBhdWRp
b1RyYWNrID0gc3RhdGljX2Nhc3Q8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlKj4ocnRjVHJh
Y2suZ2V0KCkpOwotICAgICAgICByZXR1cm4gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlOjpj
cmVhdGUoV1RGTW92ZShhdWRpb1RyYWNrKSwgZnJvbVN0ZFN0cmluZyhydGNUcmFjay0+aWQoKSkp
OworICAgICAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3Jl
YXRlKFdURk1vdmUoYXVkaW9UcmFjayksIGZyb21TdGRTdHJpbmcocnRjVHJhY2stPmlkKCkpKTsK
KyAgICAgICAgaWYgKGRvY3VtZW50LnBhZ2UoKSkKKyAgICAgICAgICAgIHNvdXJjZS0+c2V0QXVk
aW9Nb2R1bGUoZG9jdW1lbnQucGFnZSgpLT5saWJXZWJSVENQcm92aWRlcigpLmF1ZGlvTW9kdWxl
KCkpOworICAgICAgICByZXR1cm4gc291cmNlOwogICAgIH0KICAgICBjYXNlIGNyaWNrZXQ6Ok1F
RElBX1RZUEVfVklERU86IHsKICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6Vmlk
ZW9UcmFja0ludGVyZmFjZT4gdmlkZW9UcmFjayA9IHN0YXRpY19jYXN0PHdlYnJ0Yzo6VmlkZW9U
cmFja0ludGVyZmFjZSo+KHJ0Y1RyYWNrLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFj
a2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgKaW5kZXggZmZkYTA1ZDEzMmU0MWMzMGI2MDU5ZmM1
MGFjMGMxYWYyMTlhNjc5NS4uMDFmM2RjNzQyYWRhNzE0Yjg5MTlkOWY0YjNmMmRkODczNTBmZGZk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgK
QEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUnRwUmVjZWl2ZXJJbnRlcmZhY2U7CiB9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLQorY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBSZWFsdGltZU1lZGlhU291
cmNlOwogCiBjbGFzcyBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQgZmluYWwgOiBwdWJsaWMg
UlRDUnRwUmVjZWl2ZXJCYWNrZW5kIHsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAg
d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZSogcnRjUmVjZWl2ZXIoKSB7IHJldHVybiBtX3J0
Y1JlY2VpdmVyLmdldCgpOyB9CiAKLSAgICBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gY3JlYXRl
U291cmNlKCk7CisgICAgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGNyZWF0ZVNvdXJjZShEb2N1
bWVudCYpOwogCiBwcml2YXRlOgogICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMGNlNTg0YmU2MjcwZjFjNTc1NDMy
NGU1MWRiYTg5NTg5OWM3YjRkYy4uODdiMDlhMjlmOTc4ODc1ZWQ4YTA1M2ZhZDU1NDFkZTQ5NmEy
MTFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC01MjYsNiArNTI2LDcgQEAgcGxhdGZv
cm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5j
cHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0LmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2Ev
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKK3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29h
L0luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcAogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5tbQogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlP
Uy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDgxOTUyOTdlYTZlNWJhZjkyMjU4N2U2ZTY3NmE4ZDJjMTIzYzhkMjguLmNiYWE1
MDJkN2ExZDE3NTI4NzU1NzBiMWU3MjVmYjcyMjljMDkzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExODAsNiArMTE4MCw3
IEBACiAJCTQxODZCRDNGMjEzRUUzNDMwMDAxODI2RiAvKiBMaWJXZWJSVENSdHBTZW5kZXJCYWNr
ZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
RDFBMDRCMjEzRURERkUwMDYzRkI2QiAvKiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCAq
LzsgfTsKIAkJNDE4NkJENDAyMTNFRTM0NTAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFJlY2VpdmVy
QmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MUQxQTA0QTIxM0VEREZFMDA2M0ZCNkIgLyogTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5k
LmNwcCAqLzsgfTsKIAkJNDE4NkJENEUyMTQwQjlFODAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFRy
YW5zY2VpdmVyQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTg2QkQ0RDIxNDBCOUU4MDAwMTgyNkYgLyogTGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kLmNwcCAqLzsgfTsKKwkJNDE4NzhGQUQyNzI5NDcyMTAwMkUxRUREIC8qIEJh
c2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODc4RkE4MjcyODIwNTUwMDJFMUVERCAvKiBC
YXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4ODVCOTMxMUI2RkRBNjAwMzM4M0JC
IC8qIEZvcm1TdWJtaXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTg4NUI5MTExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTg4RDU1
QzI2QzU0RDZGMDA0ODU4QzggLyogUlRDRHRsc1RyYW5zcG9ydEJhY2tlbmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODhENTVBMjZDNTRENkYwMDQ4
NThDOCAvKiBSVENEdGxzVHJhbnNwb3J0QmFja2VuZC5oICovOyB9OwogCQk0MTg4RDU2MzI2QzU1
MUIxMDA0ODU4QzggLyogUlRDRHRsc1RyYW5zcG9ydFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg4RDU2MjI2QzU1MUIxMDA0ODU4QzggLyog
UlRDRHRsc1RyYW5zcG9ydFN0YXRlLmggKi87IH07CkBAIC04MTU0LDYgKzgxNTUsOSBAQAogCQk0
MTg2QkQ0NjIxNDA3MkI2MDAwMTgyNkYgLyogUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg2QkQ0QjIxNDBBODA1MDAwMTgyNkYg
LyogTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5oOyBwYXRoID0gbGli
d2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTg2QkQ0RDIxNDBCOUU4MDAwMTgyNkYgLyogTGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHA7IHBhdGggPSBsaWJ3ZWJydGMvTGli
V2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDE4NzhGQTgyNzI4MjA1NTAwMkUxRUREIC8qIEJhc2VBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlclVuaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTg3OEZBQTI3
MjgyMDU3MDAyRTFFREQgLyogSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
clVuaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4NzhGQUIyNzI5MzRFNjAw
MkUxRUREIC8qIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluY29taW5nQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE4ODA3REYyNEU0NTU4MzAwRERBRjk0IC8qIEFib3J0QWxnb3JpdGhtLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBYm9y
dEFsZ29yaXRobS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODgwN0UxMjRF
NDU4QzMwMEREQUY5NCAvKiBBYm9ydEFsZ29yaXRobS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYm9ydEFs
Z29yaXRobS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg4NUI5MTExQjZGREE2
MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRm9ybVN1Ym1pc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIw
MTU3LDggKzIwMTYxLDExIEBACiAJCQkJNDFDM0I4OUYyNjQ5QjFCNzAwNEVENERFIC8qIEF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0LmggKi8sCiAJCQkJNDFDM0I4QTAy
NjQ5QjFCNzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAg
Ki8sCiAJCQkJNDFDM0I4OUIyNjQ5QjFCNjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdC5oICovLAorCQkJCTQxODc4RkE4MjcyODIwNTUwMDJFMUVERCAvKiBCYXNl
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggKi8sCiAJCQkJMDdCQjFFNkUyNzE3
NkNDQTAwMURGMjg5IC8qIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwICovLAogCQkJCTA3
QkIxRTZGMjcxNzZDQ0EwMDFERjI4OSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmggKi8s
CisJCQkJNDE4NzhGQUIyNzI5MzRFNjAwMkUxRUREIC8qIEluY29taW5nQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0LmNwcCAqLywKKwkJCQk0MTg3OEZBQTI3MjgyMDU3MDAyRTFFREQg
LyogSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzE4OTQs
NiArMzE5MDEsNyBAQAogCQkJCUJDMTI0RUU4MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJQcm9wLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0NjBCQjYxNjFEMEExQkYwMDAyMjE4MTIgLyogQmFzZTY0VXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzE5OEZCRjI0QTE2MEREMDA0MjBCMDUgLyog
QmFzZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE4NzhGQUQyNzI5NDcyMTAw
MkUxRUREIC8qIEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxMkRFRjFGMjNBOTE4QTMwMEQ4NDBGNiAvKiBCYXNlQXVkaW9TaGFyZWRV
bml0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFNjFDQTEyNkNBNUM0MDBCNjNFOEQgLyogQmFz
ZUJ1dHRvbklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTYxQ0MxMjZDQTVDNDAw
QjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBmN2Q0ZTdhZmI4NzY0NmFlZTY2MmQ1
N2VmZjgyODNjZDdiN2M3NzViLi41MTdjZGIwYTQ5ZTNmYzY4NDYyNDI5MGZlOTVlZGRiMDMzMGMx
MmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNTcsNiArNTcs
NyBAQAogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSURCQ29ubmVjdGlvblRv
U2VydmVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiTGliV2Vi
UlRDQXVkaW9Nb2R1bGUuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgogI2luY2x1
ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByb3Zp
ZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb1NhbXBsZURhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCmluZGV4IDk5YmQzODZmZTM1NjUzYzVkM2ViMzdj
ZDdjZjVmZjAzM2I2NjhhY2UuLjJjZDIwZDU4ZWJiZjM3ZGI2NWVjMmJkYzgzZGRkNjc2ODZlM2Vh
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
U2FtcGxlRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHB1bGxTYW1wbGVzKEF1ZGlvQnVmZmVyTGlzdCYsIHNpemVfdCwgdWludDY0X3QsIGRv
dWJsZSwgUHVsbE1vZGUpOwogCiAgICAgYm9vbCBwdWxsQXZhaWxhYmxlU2FtcGxlc0FzQ2h1bmtz
KEF1ZGlvQnVmZmVyTGlzdCYsIHNpemVfdCBmcmFtZUNvdW50LCB1aW50NjRfdCB0aW1lU3RhbXAs
IEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgYm9vbCBwdWxsQXZhaWxhYmxlU2FtcGxlQ2h1bmso
QXVkaW9CdWZmZXJMaXN0Jiwgc2l6ZV90IGZyYW1lQ291bnQsIHVpbnQ2NF90IHRpbWVTdGFtcCwg
UHVsbE1vZGUpOwogCiAgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKSB7IG1fdm9sdW1l
ID0gdm9sdW1lOyB9CiAgICAgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1bWU7
IH0KQEAgLTY5LDYgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX211dGVkOyB9CiAKICAgICBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24qIGlu
cHV0RGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2lucHV0RGVzY3JpcHRpb24gPyAmbV9p
bnB1dERlc2NyaXB0aW9uLnZhbHVlKCkgOiBudWxscHRyOyB9CisgICAgY29uc3QgQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uKiBvdXRwdXREZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3V0
cHV0RGVzY3JpcHRpb24gPyAmbV9vdXRwdXREZXNjcmlwdGlvbi52YWx1ZSgpIDogbnVsbHB0cjsg
fQogCiAgICAgdm9pZCByZWNvbXB1dGVTYW1wbGVPZmZzZXQoKSB7IG1fc2hvdWxkQ29tcHV0ZU91
dHB1dFNhbXBsZU9mZnNldCA9IHRydWU7IH0KIApAQCAtODYsNiArODgsNyBAQCBwcml2YXRlOgog
ICAgIE9TU3RhdHVzIHNldHVwQ29udmVydGVyKCk7CiAKICAgICB2b2lkIHB1c2hTYW1wbGVzSW50
ZXJuYWwoY29uc3QgQXVkaW9CdWZmZXJMaXN0JiwgY29uc3QgTWVkaWFUaW1lJiwgc2l6ZV90IGZy
YW1lQ291bnQpOworICAgIGJvb2wgcHVsbFNhbXBsZXNJbnRlcm5hbChBdWRpb0J1ZmZlckxpc3Qm
LCBzaXplX3Qgc2FtcGxlQ291bnQsIHVpbnQ2NF90IHRpbWVTdGFtcCwgUHVsbE1vZGUpOwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1faW5wdXREZXNjcmlw
dGlvbjsKICAgICBzdGQ6Om9wdGlvbmFsPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9vdXRw
dXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRleCAwNWE4M2Q3MjA5MTYx
MTdhMDRjZmQyOGYyMDhkY2JiZTNkMDJmZmY3Li5mMDEwZDNjY2NiZWE1NTc1NTgyY2FkNDRjM2Zk
MmEyMTRhYzYyZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0yODYsNiArMjg2LDEx
IEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlcyhBdWRpb0J1ZmZlckxp
c3QmIGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNvCiAKICAgICBtX2lzRmlyc3RQdWxsID0gZmFsc2U7
CiAKKyAgICByZXR1cm4gcHVsbFNhbXBsZXNJbnRlcm5hbChidWZmZXIsIHNhbXBsZUNvdW50LCB0
aW1lU3RhbXAsIG1vZGUpOworfQorCitib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVsbFNh
bXBsZXNJbnRlcm5hbChBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNvdW50
LCB1aW50NjRfdCB0aW1lU3RhbXAsIFB1bGxNb2RlIG1vZGUpCit7CiAgICAgaWYgKG1vZGUgPT0g
Q29weSkgewogICAgICAgICBtX3JpbmdCdWZmZXItPmZldGNoKCZidWZmZXIsIHNhbXBsZUNvdW50
LCB0aW1lU3RhbXAsIENBUmluZ0J1ZmZlcjo6Q29weSk7CiAgICAgICAgIGlmIChtX3ZvbHVtZSA8
IEVxdWl2YWxlbnRUb01heFZvbHVtZSkKQEAgLTMwOSw2ICszMTQsMjUgQEAgYm9vbCBBdWRpb1Nh
bXBsZURhdGFTb3VyY2U6OnB1bGxTYW1wbGVzKEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyLCBzaXpl
X3Qgc2FtcGxlQ28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBBdWRpb1NhbXBsZURhdGFT
b3VyY2U6OnB1bGxBdmFpbGFibGVTYW1wbGVDaHVuayhBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwg
c2l6ZV90IHNhbXBsZUNvdW50LCB1aW50NjRfdCB0aW1lU3RhbXAsIFB1bGxNb2RlIG1vZGUpCit7
CisgICAgQVNTRVJUKGJ1ZmZlci5tTnVtYmVyQnVmZmVycyA9PSBtX3JpbmdCdWZmZXItPmNoYW5u
ZWxDb3VudCgpKTsKKyAgICBpZiAoYnVmZmVyLm1OdW1iZXJCdWZmZXJzICE9IG1fcmluZ0J1ZmZl
ci0+Y2hhbm5lbENvdW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX211
dGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9zaG91bGRDb21wdXRlT3V0
cHV0U2FtcGxlT2Zmc2V0KSB7CisgICAgICAgIG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBsZU9m
ZnNldCA9IGZhbHNlOworICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCA9IG1faW5wdXRTYW1w
bGVPZmZzZXQudGltZVZhbHVlKCkgKiBtX291dHB1dERlc2NyaXB0aW9uLT5zYW1wbGVSYXRlKCkg
LyBtX2lucHV0U2FtcGxlT2Zmc2V0LnRpbWVTY2FsZSgpOworICAgIH0KKworICAgIHRpbWVTdGFt
cCArPSBtX291dHB1dFNhbXBsZU9mZnNldDsKKworICAgIHJldHVybiBwdWxsU2FtcGxlc0ludGVy
bmFsKGJ1ZmZlciwgc2FtcGxlQ291bnQsIHRpbWVTdGFtcCwgbW9kZSk7Cit9CisKIGJvb2wgQXVk
aW9TYW1wbGVEYXRhU291cmNlOjpwdWxsQXZhaWxhYmxlU2FtcGxlc0FzQ2h1bmtzKEF1ZGlvQnVm
ZmVyTGlzdCYgYnVmZmVyLCBzaXplX3Qgc2FtcGxlQ291bnRQZXJDaHVuaywgdWludDY0X3QgdGlt
ZVN0YW1wLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29uc3VtZUZpbGxlZEJ1ZmZlcikKIHsKICAgICBB
U1NFUlQoYnVmZmVyLm1OdW1iZXJCdWZmZXJzID09IG1fcmluZ0J1ZmZlci0+Y2hhbm5lbENvdW50
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCmluZGV4IGU1OGFj
ZTYzODllYjJlYmZjYjJmNWQ0NGY0MzE4MmQ2YzBiNTU2NzEuLjRkNzk4YWUxMWM4ODQ5MTRiZTU2
MDZkODkzMmJmMDA5MGIwYzQxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlci5jcHAKQEAgLTQwLDMxICs0MCwyOCBAQCBjbGFzcyBNZWRpYVRpbWU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OlJlbmRlcmVyQ3Jl
YXRvciBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6bV9yZW5kZXJlckNyZWF0b3IgPSBu
dWxscHRyOwotdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6c2V0Q3JlYXRvcihS
ZW5kZXJlckNyZWF0b3IgY3JlYXRvcikKK3N0ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcj4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmNyZWF0ZShJbml0
JiYgaW5pdCkKIHsKLSAgICBtX3JlbmRlcmVyQ3JlYXRvciA9IGNyZWF0b3I7Ci19Ci0KLXN0ZDo6
dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXI6OmNyZWF0ZSgpCi17Ci0gICAgaWYgKG1fcmVuZGVyZXJDcmVhdG9yKQot
ICAgICAgICByZXR1cm4gbV9yZW5kZXJlckNyZWF0b3IoKTsKLQogI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29j
b2E+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJDb2NvYT4oV1RGTW92ZShpbml0KSk7CiAjZWxzZQogICAgIHJldHVybiBudWxscHRyOwogI2Vu
ZGlmCiB9CiAKK0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlcihJbml0JiYgaW5pdCkKKyAgICA6IG1fY3Jhc2hDYWxsYmFjayhXVEZNb3Zl
KGluaXQuY3Jhc2hDYWxsYmFjaykpCisjaWYgVVNFKExJQldFQlJUQykKKyAgICAsIG1fYXVkaW9N
b2R1bGUoV1RGTW92ZShpbml0LmF1ZGlvTW9kdWxlKSkKKyNlbmRpZgogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAotdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6c2V0TG9nZ2Vy
KGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBpZGVudGlmaWVyKQorICAgICwgbV9s
b2dnZXIoaW5pdC5sb2dnZXIpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIoaW5pdC5sb2dJZGVudGlm
aWVyKQorI2VuZGlmCiB7Ci0gICAgbV9sb2dnZXIgPSAmbG9nZ2VyOwotICAgIG1fbG9nSWRlbnRp
ZmllciA9IGlkZW50aWZpZXI7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIFdURkxv
Z0NoYW5uZWwmIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpsb2dDaGFubmVsKCkgY29u
c3QKIHsKICAgICByZXR1cm4gTG9nTWVkaWE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXIuaAppbmRleCAwOTcyNzY4ZGVmZWJlYmE4ZjAyODQ4NTkyMmFkNmIxODExZmNhMzBiLi42
ZDhhMWJiOTIyMTI1ZWY4NDMyMGQ4OGU5YzVkYTM5ZjUwNjRlMWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyLmgKQEAgLTM3LDEyICszNywyMyBAQCBjbGFzcyBNZWRpYVRp
bWU7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247
CitjbGFzcyBMaWJXZWJSVENBdWRpb01vZHVsZTsKIGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRhOwog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciA6IHB1
YmxpYyBMb2dnZXJIZWxwZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXI+IGNyZWF0ZSgpOworICAgIHN0cnVjdCBJbml0IHsKKyAgICAgICAgRnVuY3Rpb248dm9pZCgp
PiYmIGNyYXNoQ2FsbGJhY2s7CisjaWYgVVNFKExJQldFQlJUQykKKyAgICAgICAgUmVmUHRyPExp
YldlYlJUQ0F1ZGlvTW9kdWxlPiBhdWRpb01vZHVsZTsKKyNlbmRpZgorI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAorICAgICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcjsKKyAgICAgICAgY29uc3Qg
dm9pZCogbG9nSWRlbnRpZmllcjsKKyNlbmRpZgorICAgIH07CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gY3JlYXRlKEluaXQmJik7CiAg
ICAgdmlydHVhbCB+QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIoKSA9IGRlZmF1bHQ7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7
CkBAIC01NiwxNiArNjcsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVkaW9P
dXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJik7CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
LSAgICB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lkKik7Ci0jZW5kaWYK
LQotICAgIHVzaW5nIFJlbmRlcmVyQ3JlYXRvciA9IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlcj4gKCopKCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0Q3JlYXRvcihS
ZW5kZXJlckNyZWF0b3IpOwotCi0gICAgdm9pZCBzZXRDcmFzaENhbGxiYWNrKEZ1bmN0aW9uPHZv
aWQoKT4mJiBjYWxsYmFjaykgeyBtX2NyYXNoQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsg
fQotCiBwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXIoSW5pdCYmKTsKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dl
ciYgbG9nZ2VyKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigp
IGNvbnN0IGZpbmFsOwpAQCAtNzQsMTcgKzc4LDIzIEBAIHByb3RlY3RlZDoKICAgICBXVEZMb2dD
aGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAorI2lmIFVTRShMSUJX
RUJSVEMpCisgICAgTGliV2ViUlRDQXVkaW9Nb2R1bGUqIGF1ZGlvTW9kdWxlKCk7CisjZW5kaWYK
KwogICAgIHZvaWQgY3Jhc2hlZCgpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZW5kZXJlckNy
ZWF0b3IgbV9yZW5kZXJlckNyZWF0b3I7Ci0KICAgICAvLyBNYWluIHRocmVhZCB3cml0YWJsZSBt
ZW1iZXJzCiAgICAgZmxvYXQgbV92b2x1bWUgeyAxIH07CiAgICAgRnVuY3Rpb248dm9pZCgpPiBt
X2NyYXNoQ2FsbGJhY2s7CiAKKyNpZiBVU0UoTElCV0VCUlRDKQorICAgIFJlZlB0cjxMaWJXZWJS
VENBdWRpb01vZHVsZT4gbV9hdWRpb01vZHVsZTsKKyNlbmRpZgorCiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECi0gICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgUmVmPGNv
bnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwog
I2VuZGlmCiB9OwpAQCAtMTA1LDEwICsxMTUsMTcgQEAgaW5saW5lIHZvaWQgQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXI6OmNyYXNoZWQoKQogICAgICAgICBtX2NyYXNoQ2FsbGJhY2soKTsK
IH0KIAorI2lmIFVTRShMSUJXRUJSVEMpCitpbmxpbmUgTGliV2ViUlRDQXVkaW9Nb2R1bGUqIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjphdWRpb01vZHVsZSgpCit7CisgICAgcmV0dXJu
IG1fYXVkaW9Nb2R1bGUuZ2V0KCk7Cit9CisjZW5kaWYKKwogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogaW5saW5lIGNvbnN0IExvZ2dlciYgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6
OmxvZ2dlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICptX2xvZ2dlcjsKKyAgICByZXR1cm4gbV9s
b2dnZXIuZ2V0KCk7CiAgICAgCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bS5jcHAKaW5kZXggMTYyNDk4MDk1MTIyZjRmNGIwNTIwNWU3MWZiN2NjNWI5MGU0YmY5Mi4uYTQ3
MTJkM2MwMWM3NDU4YzgyNjVjMmFjYzQwM2I4NTExMTcxODcyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbS5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaCIK
KyNpbmNsdWRlICJMaWJXZWJSVENBdWRpb01vZHVsZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC00OCwyMCArNTAsMzEgQEAgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bTo6fkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0oKQogICAgIGNsZWFyKCk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlUmVuZGVyZXIoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbSYgc3RyZWFtKQorI2lmIFVTRShMSUJXRUJSVEMpCitzdGF0aWMgUmVmUHRyPExpYldlYlJU
Q0F1ZGlvTW9kdWxlPiBhdWRpb01vZHVsZUZyb21Tb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSYg
c291cmNlKQogewotICAgIGF1dG8gcmVuZGVyZXIgPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlcjo6Y3JlYXRlKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKKyAgICBpZiAoIWlzPFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZT4oc291cmNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0j
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgcmV0dXJuIGRvd25jYXN0PFJlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZT4oc291cmNlKS5hdWRpb01vZHVsZSgpOworfQorI2VuZGlmCisKK3N0
ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gQXVkaW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlUmVuZGVyZXIoQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbSYgc3RyZWFtKQorewogICAgIGF1dG8mIHRyYWNrID0gc3RyZWFtLm1fc3RyZWFtVHJhY2su
Z2V0KCk7Ci0gICAgcmVuZGVyZXItPnNldExvZ2dlcih0cmFjay5sb2dnZXIoKSwgdHJhY2subG9n
SWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6
OmNyZWF0ZShBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6SW5pdCB7CisgICAgICAgIFtz
dHJlYW0gPSBXZWFrUHRyIHsgc3RyZWFtIH1dIHsKKyAgICAgICAgICAgIGlmIChzdHJlYW0pCisg
ICAgICAgICAgICAgICAgc3RyZWFtLT5jcmVhdGVOZXdSZW5kZXJlcigpOworICAgICAgICB9Cisj
aWYgVVNFKExJQldFQlJUQykKKyAgICAgICAgLCBhdWRpb01vZHVsZUZyb21Tb3VyY2Uoc3RyZWFt
Lm1fYXVkaW9Tb3VyY2UuZ2V0KCkpCisjZW5kaWYKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
KyAgICAgICAgLCB0cmFjay5sb2dnZXIoKQorICAgICAgICAsIHRyYWNrLmxvZ0lkZW50aWZpZXIo
KQogI2VuZGlmCi0gICAgcmVuZGVyZXItPnNldENyYXNoQ2FsbGJhY2soW3N0cmVhbSA9IFdlYWtQ
dHIgeyBzdHJlYW0gfV0gewotICAgICAgICBpZiAoc3RyZWFtKQotICAgICAgICAgICAgc3RyZWFt
LT5jcmVhdGVOZXdSZW5kZXJlcigpOwogICAgIH0pOwotICAgIHJldHVybiByZW5kZXJlcjsKIH0K
IAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpjbGVhcigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcAppbmRleCA0ODM0ZTdmMDdjZTcwOTdkMDU2ZGQ2NDk1
OWIzNzZkZmQwYTRiYTY1Li4xMTljMzA1MDlmNDkxNDUwMDQzMTU0MWU4Mjc1MGE4OWMwY2M2NjEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpZiBVU0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3JtYXQu
aCIKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRpb01vZHVsZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODAsNiArODEsMTIgQEAgY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzJiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNldHRp
bmdzKCkKICAgICByZXR1cm4gbV9jdXJyZW50U2V0dGluZ3M7CiB9CiAKK3ZvaWQgUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlOjpzZXRBdWRpb01vZHVsZShSZWZQdHI8TGliV2ViUlRDQXVkaW9N
b2R1bGU+JiYgYXVkaW9Nb2R1bGUpCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvTW9kdWxlKTsKKyAg
ICBtX2F1ZGlvTW9kdWxlID0gV1RGTW92ZShhdWRpb01vZHVsZSk7Cit9CisKIH0KIAogI2VuZGlm
IC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCmluZGV4
IGExOGZjMjE2MDhjMWNkNTk2YTU0NDU1MDMyOGI4MDUyMTNiOGE0ZjAuLmE4NWNlYjEyYzRlYmEx
ZmI2ODU4Mzg4M2Q1Y2I2MmM5NzBhZWY4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1Nv
dXJjZS5oCkBAIC00NSw2ICs0NSw4IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIExpYldlYlJUQ0F1ZGlvTW9kdWxlOworCiBjbGFz
cyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UKICAgICA6IHB1YmxpYyBSZWFsdGltZU1lZGlh
U291cmNlCiAgICAgLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UKQEAg
LTUzLDYgKzU1LDkgQEAgY2xhc3MgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlCiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IGNyZWF0ZShydGM6
OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcmJik7
CiAKKyAgICB2b2lkIHNldEF1ZGlvTW9kdWxlKFJlZlB0cjxMaWJXZWJSVENBdWRpb01vZHVsZT4m
Jik7CisgICAgTGliV2ViUlRDQXVkaW9Nb2R1bGUqIGF1ZGlvTW9kdWxlKCkgeyByZXR1cm4gbV9h
dWRpb01vZHVsZS5nZXQoKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgUmVhbHRpbWVJbmNvbWluZ0F1
ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZhY2U+
JiYsIFN0cmluZyYmKTsKICAgICB+UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKCk7CkBAIC03
OSw2ICs4NCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3Mg
bV9jdXJyZW50U2V0dGluZ3M7CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9U
cmFja0ludGVyZmFjZT4gbV9hdWRpb1RyYWNrOworICAgIFJlZlB0cjxMaWJXZWJSVENBdWRpb01v
ZHVsZT4gbV9hdWRpb01vZHVsZTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIG11
dGFibGUgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nv
Y29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCmluZGV4IGIyMDUzMzRk
ODM3MDlhZjlmNzY3ZWJjMDBlMmMyMTgyZmEyY2E1ZmMuLjdmYjIyYzhkNzcxYTRjZjVjMzNlNTA5
ZTUzOTdlYmVlYWVlMDc3MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCkBAIC0zNiw4ICszNiw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6QXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSgpCi0gICAgOiBtX3Jlc2V0T2JzZXJ2ZXIoW3Ro
aXNdIHsgcmVzZXQoKTsgfSkKK0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OkF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EoSW5pdCYmIGluaXQpCisgICAgOiBBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcihXVEZNb3ZlKGluaXQpKQorICAgICwgbV9yZXNldE9i
c2VydmVyKFt0aGlzXSB7IHJlc2V0KCk7IH0pCiB7CiB9CiAKQEAgLTU0LDEwICs1NSwxNyBAQCB2
b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnN0YXJ0KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjYWxsYgogICAgIH0pOwogfQogCitCYXNlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0JiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpy
ZW5kZXJlclVuaXQoKQoreworICAgIGlmIChhdXRvKiBhdWRpb01vZHVsZSA9IHRoaXMtPmF1ZGlv
TW9kdWxlKCkpCisgICAgICAgIHJldHVybiBhdWRpb01vZHVsZS0+aW5jb21pbmdBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlclVuaXQoKTsKKyAgICByZXR1cm4gQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJVbml0OjpzaW5nbGV0b24oKTsKK30KKwogdm9pZCBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckNvY29hOjpzdG9wKCkKIHsKICAgICBpZiAobV9kYXRhU291cmNlKQotICAg
ICAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRvbigpLnJlbW92
ZVNvdXJjZSgqbV9kYXRhU291cmNlKTsKKyAgICAgICAgcmVuZGVyZXJVbml0KCkucmVtb3ZlU291
cmNlKCptX2RhdGFTb3VyY2UpOwogfQogCiB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyQ29jb2E6OmNsZWFyKCkKQEAgLTg0LDcgKzkyLDcgQEAgdm9pZCBBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlckNvY29hOjpyZXNldCgpCiB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2E6OnNldEF1ZGlvT3V0cHV0RGV2aWNlKGNvbnN0IFN0cmluZyYgZGV2aWNlSWQp
CiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjcmVhdGUgYSB1bml0IGZvciBvdXJzZWx2ZXMg
aGVyZSBvciB1c2UgdGhlIGRlZmF1bHQgdW5pdCBpZiBkZXZpY2VJZCBpcyBtYXRjaGluZy4KLSAg
ICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRvbigpLnNldEF1ZGlv
T3V0cHV0RGV2aWNlKGRldmljZUlkKTsKKyAgICByZW5kZXJlclVuaXQoKS5zZXRBdWRpb091dHB1
dERldmljZShkZXZpY2VJZCk7CiAgICAgbV9zaG91bGRSZWNyZWF0ZURhdGFTb3VyY2UgPSB0cnVl
OwogfQogCkBAIC0xMjYsMTEgKzEzNCwxMSBAQCB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyQ29jb2E6OnB1c2hTYW1wbGVzKGNvbnN0IE1lZGlhVGltZSYgc2FtcGxlVGltZQogICAg
ICAgICAgICAgbmV3U291cmNlLT5zZXRMb2dnZXIobG9nZ2VyKCksIGxvZ0lkZW50aWZpZXIoKSk7
CiAjZW5kaWYKICAgICAgICAgICAgIGlmIChvbGRTb3VyY2UpCi0gICAgICAgICAgICAgICAgQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzaW5nbGV0b24oKS5yZW1vdmVTb3VyY2Uo
Km9sZFNvdXJjZSk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXJVbml0KCkucmVtb3ZlU291cmNl
KCpvbGRTb3VyY2UpOwogCiAgICAgICAgICAgICBuZXdTb3VyY2UtPnNldFZvbHVtZSh2b2x1bWUo
KSk7Ci0gICAgICAgICAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmds
ZXRvbigpLmFkZFJlc2V0T2JzZXJ2ZXIobV9yZXNldE9ic2VydmVyKTsKLSAgICAgICAgICAgIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2luZ2xldG9uKCkuYWRkU291cmNlKFdU
Rk1vdmUobmV3U291cmNlKSk7CisgICAgICAgICAgICByZW5kZXJlclVuaXQoKS5hZGRSZXNldE9i
c2VydmVyKG1fcmVzZXRPYnNlcnZlcik7CisgICAgICAgICAgICByZW5kZXJlclVuaXQoKS5hZGRT
b3VyY2UoV1RGTW92ZShuZXdTb3VyY2UpKTsKICAgICAgICAgfSk7CiAgICAgICAgIG1fZGF0YVNv
dXJjZSA9IFdURk1vdmUoZGF0YVNvdXJjZSk7CiAgICAgICAgIG1fc2hvdWxkUmVjcmVhdGVEYXRh
U291cmNlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckNvY29hLmgKaW5kZXggM2E3YjNkYzkxMzJlNmY0MTIxNGVhODQ3NWFjZWUzYzAx
MWUyY2UzZC4uNjQ2Njk4Nzc0OTViNjk5ZjdiYjZhMzU0OTBjMjQ5MzMzMDE2OTE1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaApA
QCAtMzksMTIgKzM5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9TYW1w
bGVEYXRhU291cmNlOwogY2xhc3MgQXVkaW9TYW1wbGVCdWZmZXJMaXN0OworY2xhc3MgQmFzZUF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDsKIGNsYXNzIENBQXVkaW9TdHJlYW1EZXNj
cmlwdGlvbjsKIAogY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSA6IHB1
YmxpYyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciwgcHVibGljIENhbk1ha2VXZWFrUHRy
PEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EsIFdlYWtQdHJGYWN0b3J5SW5pdGlh
bGl6YXRpb246OkVhZ2VyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSgpOworICAgIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EoSW5pdCYmKTsKICAgICB+QXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYSgpOwogCiBwcml2YXRlOgpAQCAtNTgsNiArNTksOCBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCByZXNldCgpOwogCisgICAgQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdCYgcmVuZGVyZXJVbml0KCk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uPiBtX291dHB1dERlc2NyaXB0aW9uOwogICAgIFJlZlB0cjxB
dWRpb1NhbXBsZURhdGFTb3VyY2U+IG1fZGF0YVNvdXJjZTsKICAgICBib29sIG1fc2hvdWxkUmVj
cmVhdGVEYXRhU291cmNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5p
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgKaW5kZXggNWYzMGI5YmQ0NjJhZDIzYjY3MDEzMjk5
NGU0OGQ2ZmY5NWI3MDRkNi4uM2YwOWJlODE4NThhZDkwZGUwOGVkYzYxNjA0YTM2MzllZGY4MDQ0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2Ev
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0LmgKQEAgLTI4LDEwICsyOCw5IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2lu
Y2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0LmgiCi0jaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlICJCYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJVbml0LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
TG9jay5oPgotI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0
Lmg+CkBAIC00Myw3ICs0Miw3IEBAIGNsYXNzIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDsKIGNsYXNz
IENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIGNsYXNzIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0OwogCi1jbGFzcyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
clVuaXQgeworY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IDogcHVibGlj
IEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQgewogcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQmIHNp
bmdsZXRvbigpOwogCkBAIC01NiwxNSArNTUsMTQgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVuZGVyKHNpemVfdCBzYW1wbGVDb3VudCwgQXVkaW9CdWZmZXJMaXN0JiwgdWlu
dDY0X3Qgc2FtcGxlVGltZSwgZG91YmxlIGhvc3RUaW1lLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25G
bGFncyYpOwogICAgIHZvaWQgcmVzZXQoKTsKIAotICAgIHZvaWQgc2V0QXVkaW9PdXRwdXREZXZp
Y2UoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIGFkZFNvdXJjZShSZWY8QXVkaW9TYW1wbGVE
YXRhU291cmNlPiYmKTsKLSAgICB2b2lkIHJlbW92ZVNvdXJjZShBdWRpb1NhbXBsZURhdGFTb3Vy
Y2UmKTsKLQotICAgIHVzaW5nIFJlc2V0T2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKCk+OwotICAg
IHZvaWQgYWRkUmVzZXRPYnNlcnZlcihSZXNldE9ic2VydmVyJiBvYnNlcnZlcikgeyBtX3Jlc2V0
T2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7IH0KICAgICB2b2lkIHJldHJpZXZlRm9ybWF0RGVzY3Jp
cHRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24qKT4mJik7CiAKKyAgICAvLyBCYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0
CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmljZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAg
ICB2b2lkIGFkZFNvdXJjZShSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlbW92ZVNvdXJjZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmKSBmaW5hbDsKKyAgICB2
b2lkIGFkZFJlc2V0T2JzZXJ2ZXIoUmVzZXRPYnNlcnZlciYgb2JzZXJ2ZXIpIGZpbmFsIHsgbV9y
ZXNldE9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBzdGFy
dCgpOwogICAgIHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vY29jb2EvQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5p
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQmFzZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNzY1M2EwM2Y1NmVl
OTBmZTZmZWFlNjcwNjJhNmY4OTg1YzEyNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9CYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJVbml0LmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQXVkaW9TYW1wbGVEYXRhU291cmNlOworCitjbGFzcyBCYXNlQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJVbml0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5CYXNlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJVbml0KCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB2b2lkIGFk
ZFNvdXJjZShSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiYmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlbW92ZVNvdXJjZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmKSA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJikgPSAwOworCisgICAg
dXNpbmcgUmVzZXRPYnNlcnZlciA9IE9ic2VydmVyPHZvaWQoKT47CisgICAgdmlydHVhbCB2b2lk
IGFkZFJlc2V0T2JzZXJ2ZXIoUmVzZXRPYnNlcnZlciYpID0gMDsKK307CisKK30KKworI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyVW5pdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9J
bmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjFhNzIzYTQyYmE4ODFhOGQyMTQwMWZhNjE5ZjkyYzU5M2VlZDYzNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0luY29taW5nQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcApAQCAtMCwwICsxLDIwMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmNvbWluZ0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oIgorI2luY2x1
ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgorI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9y
bWF0LmgiCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Nb2R1bGUuaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJMaXN0LmgiCisjaW5jbHVkZSA8cGFsL2F2
Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1
ZXVlLmg+CisKKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5p
dDo6SW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQoTGliV2ViUlRDQXVk
aW9Nb2R1bGUmIGF1ZGlvTW9kdWxlKQorICAgIDogbV9hdWRpb01vZHVsZShhdWRpb01vZHVsZSkK
KyAgICAsIG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkluY29taW5nQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0IiwgV29ya1F1ZXVlOjpRT1M6OlVzZXJJbml0aWF0ZWQpKQorI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dJZGVudGlmaWVyKExvZ2dlckhlbHBl
cjo6dW5pcXVlTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCit7Cit9CisKK0luY29taW5nQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Ojp+SW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlclVuaXQoKQoreworfQorCit2b2lkIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJVbml0OjpzZXRBdWRpb091dHB1dERldmljZShjb25zdCBTdHJpbmcmIGRldmlj
ZUlEKQoreworICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2luZ2xldG9u
KCkuc2V0QXVkaW9PdXRwdXREZXZpY2UoZGV2aWNlSUQpOworfQorCit2b2lkIEluY29taW5nQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjphZGRSZXNldE9ic2VydmVyKFJlc2V0T2Jz
ZXJ2ZXImIG9ic2VydmVyKQoreworICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5p
dDo6c2luZ2xldG9uKCkuYWRkUmVzZXRPYnNlcnZlcihvYnNlcnZlcik7Cit9CisKK3ZvaWQgSW5j
b21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OmFkZFNvdXJjZShSZWY8QXVk
aW9TYW1wbGVEYXRhU291cmNlPiYmIHNvdXJjZSkKK3sKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKKyAgICBzb3VyY2UtPmxvZ2dlcigpLmxvZ0Fsd2F5cyhMb2dXZWJSVEMsICJJbmNvbWluZ0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6YWRkU291cmNlICIsIHNvdXJjZS0+bG9n
SWRlbnRpZmllcigpKTsKKyNlbmRpZgorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgICAgIGlmICghbV9sb2dnZXIpCisgICAgICAgICAg
ICBtX2xvZ2dlciA9ICZzb3VyY2UtPmxvZ2dlcigpOworI2VuZGlmCisKKyAgICBBU1NFUlQoc291
cmNlLT5vdXRwdXREZXNjcmlwdGlvbigpKTsKKyAgICBpZiAoIXNvdXJjZS0+b3V0cHV0RGVzY3Jp
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gb3V0cHV0RGVzY3JpcHRpb24gPSAq
c291cmNlLT5vdXRwdXREZXNjcmlwdGlvbigpOworCisgICAgQVNTRVJUKCFtX3NvdXJjZXMuY29u
dGFpbnMoc291cmNlLmdldCgpKSk7CisgICAgYm9vbCBzaG91bGRTdGFydCA9IG1fc291cmNlcy5p
c0VtcHR5KCk7CisgICAgbV9zb3VyY2VzLmFkZChXVEZNb3ZlKHNvdXJjZSkpOworCisgICAgcG9z
dFRhc2soW3RoaXMsIG5ld1NvdXJjZXMgPSBjb3B5VG9WZWN0b3IobV9zb3VyY2VzKSwgc2hvdWxk
U3RhcnQsIG91dHB1dERlc2NyaXB0aW9uXSgpIG11dGFibGUgeworICAgICAgICBtX3JlbmRlclNv
dXJjZXMgPSBXVEZNb3ZlKG5ld1NvdXJjZXMpOworICAgICAgICBpZiAoIXNob3VsZFN0YXJ0KQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24g
PSBvdXRwdXREZXNjcmlwdGlvbjsKKyAgICAgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5p
cXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4obV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbik7CisgICAg
ICAgIG1fc2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVhbURlc2NyaXB0aW9uLnNhbXBsZVJhdGUo
KSAvIDEwMDsKKyAgICAgICAgbV9hdWRpb0J1ZmZlckxpc3QtPnNldFNhbXBsZUNvdW50KG1fc2Ft
cGxlQ291bnQpOworICAgICAgICBtX21peGVkU291cmNlID0gQXVkaW9TYW1wbGVEYXRhU291cmNl
OjpjcmVhdGUobV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiAwLjUsICp0
aGlzLCBMaWJXZWJSVENBdWRpb01vZHVsZTo6UG9sbFNhbXBsZXNDb3VudCArIDEpOworICAgICAg
ICBtX21peGVkU291cmNlLT5zZXRJbnB1dEZvcm1hdChvdXRwdXREZXNjcmlwdGlvbik7CisgICAg
ICAgIG1fbWl4ZWRTb3VyY2UtPnNldE91dHB1dEZvcm1hdChvdXRwdXREZXNjcmlwdGlvbik7Cisg
ICAgICAgIG1fd3JpdGVDb3VudCA9IDA7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IHByb3RlY3RlZE1vZHVsZSA9IFJlZiB7IG1fYXVkaW9Nb2R1bGUgfSwgc291cmNlID0gbV9taXhl
ZFNvdXJjZV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fcmVnaXN0ZXJlZE1peGVkU291cmNl
ID0gV1RGTW92ZShzb3VyY2UpOworICAgICAgICAgICAgc3RhcnQoKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQ6OnJlbW92ZVNvdXJjZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmIHNvdXJjZSkKK3sKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBzb3VyY2UubG9nZ2VyKCkubG9nQWx3YXlzKExvZ1dl
YlJUQywgIkluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpyZW1vdmVT
b3VyY2UgIiwgc291cmNlLmxvZ0lkZW50aWZpZXIoKSk7CisjZW5kaWYKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCisgICAgYm9vbCBzaG91bGRTdG9wID0gIW1fc291cmNlcy5pc0VtcHR5
KCk7CisgICAgbV9zb3VyY2VzLnJlbW92ZShzb3VyY2UpOworICAgIHNob3VsZFN0b3AgJj0gbV9z
b3VyY2VzLmlzRW1wdHkoKTsKKworICAgIHBvc3RUYXNrKFt0aGlzLCBuZXdTb3VyY2VzID0gY29w
eVRvVmVjdG9yKG1fc291cmNlcyksIHNob3VsZFN0b3BdKCkgbXV0YWJsZSB7CisgICAgICAgIG1f
cmVuZGVyU291cmNlcyA9IFdURk1vdmUobmV3U291cmNlcyk7CisgICAgICAgIGlmICghc2hvdWxk
U3RvcCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCBwcm90ZWN0ZWRNb2R1bGUgPSBSZWYgeyBtX2F1ZGlvTW9kdWxlIH1dIHsKKyAgICAgICAg
ICAgIHN0b3AoKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKK30KKwordm9pZCBJbmNvbWluZ0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c3RhcnQoKQoreworICAgIFJFTEVBU0Vf
TE9HKFdlYlJUQywgIkluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Ojpz
dGFydCIpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRvbigpLmFkZFNvdXJjZSgqbV9yZWdpc3RlcmVk
TWl4ZWRTb3VyY2UpOworICAgIG1fYXVkaW9Nb2R1bGUuc3RhcnRJbmNvbWluZ0F1ZGlvUmVuZGVy
aW5nKCk7Cit9CisKK3ZvaWQgSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQ6OnN0b3AoKQoreworICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkluY29taW5nQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzdG9wIik7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKworICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2luZ2xldG9u
KCkucmVtb3ZlU291cmNlKCptX3JlZ2lzdGVyZWRNaXhlZFNvdXJjZSk7CisgICAgbV9yZWdpc3Rl
cmVkTWl4ZWRTb3VyY2UgPSBudWxscHRyOworICAgIG1fYXVkaW9Nb2R1bGUuc3RvcEluY29taW5n
QXVkaW9SZW5kZXJpbmcoKTsKK30KKwordm9pZCBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdDo6cG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQorewor
ICAgIC8vIFdlIHByb3RlY3QgJ3RoaXMnIGJ5IHRha2luZyBhIHJlZiB0byBpdHMgYXVkaW8gbW9k
dWxlLgorICAgIG1fcXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRNb2R1bGUgPSBSZWYgeyBtX2F1
ZGlvTW9kdWxlIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5jb21pbmdBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6Om5ld0F1ZGlvQ2h1bmtQdXNoZWQoKQoreworICAgIERp
c2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUgZGlzYWJsZU1hbGxv
Y1Jlc3RyaWN0aW9uczsKKyAgICBwb3N0VGFzayhbdGhpcywgY3VycmVudEF1ZGlvU2FtcGxlQ291
bnQgPSBtX2F1ZGlvTW9kdWxlLmN1cnJlbnRBdWRpb1NhbXBsZUNvdW50KCldIHsKKyAgICAgICAg
cmVuZGVyQXVkaW9DaHVuayhjdXJyZW50QXVkaW9TYW1wbGVDb3VudCk7CisgICAgfSk7Cit9CisK
K3ZvaWQgSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnJlbmRlckF1
ZGlvQ2h1bmsodWludDY0X3QgY3VycmVudEF1ZGlvU2FtcGxlQ291bnQpCit7CisgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CisKKyAgICB1aW50NjRfdCB0aW1lU3RhbXAgPSBjdXJyZW50QXVk
aW9TYW1wbGVDb3VudCAqIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpIC8g
TGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGU7CisKKyAgICAvLyBNaXggYWxsIHNvdXJj
ZXMuCisgICAgYm9vbCBoYXNDb3BpZWREYXRhID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBzb3Vy
Y2UgOiBtX3JlbmRlclNvdXJjZXMpIHsKKyAgICAgICAgaWYgKHNvdXJjZS0+cHVsbEF2YWlsYWJs
ZVNhbXBsZUNodW5rKCptX2F1ZGlvQnVmZmVyTGlzdCwgbV9zYW1wbGVDb3VudCwgdGltZVN0YW1w
LCBoYXNDb3BpZWREYXRhID8gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpNaXggOiBBdWRpb1NhbXBs
ZURhdGFTb3VyY2U6OkNvcHkpKQorICAgICAgICAgICAgaGFzQ29waWVkRGF0YSA9IHRydWU7Cisg
ICAgfQorCisgICAgQ01UaW1lIHN0YXJ0VGltZSA9IFBBTDo6Q01UaW1lTWFrZShtX3dyaXRlQ291
bnQsIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2FtcGxlUmF0ZSgpKTsKKyAgICBpZiAoaGFz
Q29waWVkRGF0YSkKKyAgICAgICAgbV9taXhlZFNvdXJjZS0+cHVzaFNhbXBsZXMoUEFMOjp0b01l
ZGlhVGltZShzdGFydFRpbWUpLCAqbV9hdWRpb0J1ZmZlckxpc3QsIG1fc2FtcGxlQ291bnQpOwor
ICAgIG1fd3JpdGVDb3VudCArPSBtX3NhbXBsZUNvdW50OworfQorCisjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECitjb25zdCBMb2dnZXImIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJVbml0Ojpsb2dnZXIoKSBjb25zdAoreworICAgIHJldHVybiAqbV9sb2dnZXI7Cit9CisK
K1dURkxvZ0NoYW5uZWwmIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0
Ojpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nV2ViUlRDOworfQorCitjb25z
dCB2b2lkKiBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6bG9nSWRl
bnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsKK30KKyNlbmRp
ZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29j
b2EvSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0luY29taW5nQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTM5ZTVhM2EwMDY1ZDFlMjA5MTlkYjNh
MzU2OTZjYTk5ZTcwYWYwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2NvY29hL0luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXJVbml0LmgKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJCYXNlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0LmgiCisjaW5jbHVkZSAiQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9u
LmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBXb3Jr
UXVldWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ7CitjbGFzcyBBdWRpb1NhbXBsZURhdGFTb3VyY2U7
CitjbGFzcyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q7CitjbGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb247CitjbGFzcyBMaWJXZWJSVENBdWRpb01vZHVsZTsKK2NsYXNzIFdlYkF1ZGlvQnVmZmVy
TGlzdDsKKworY2xhc3MgSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQg
OiBwdWJsaWMgQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdAorI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgICwgcHVibGljIExvZ2dlckhlbHBlcgorI2VuZGlmCit7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgSW5jb21p
bmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQoTGliV2ViUlRDQXVkaW9Nb2R1bGUm
KTsKKyAgICB+SW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQoKTsKKwor
ICAgIHZvaWQgbmV3QXVkaW9DaHVua1B1c2hlZCgpOworCitwcml2YXRlOgorICAgIHZvaWQgc3Rh
cnQoKTsKKyAgICB2b2lkIHN0b3AoKTsKKyAgICB2b2lkIHBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQo
KT4mJik7CisgICAgdm9pZCByZW5kZXJBdWRpb0NodW5rKHVpbnQ2NF90IGN1cnJlbnRBdWRpb1Nh
bXBsZUNvdW50KTsKKworICAgIC8vIEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQKKyAgICB2b2lkIHNldEF1ZGlvT3V0cHV0RGV2aWNlKGNvbnN0IFN0cmluZyYpIGZpbmFsOwor
ICAgIHZvaWQgYWRkUmVzZXRPYnNlcnZlcihSZXNldE9ic2VydmVyJikgZmluYWw7CisgICAgdm9p
ZCBhZGRTb3VyY2UoUmVmPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4mJikgZmluYWw7CisgICAgdm9p
ZCByZW1vdmVTb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291cmNlJikgZmluYWw7CisKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICAvLyBMb2dnZXJIZWxwZXIuCisgICAgY29uc3QgTG9nZ2Vy
JiBsb2dnZXIoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAiSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
clVuaXQiOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFsOwor
ICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCisg
ICAgLy8gTWFpbiB0aHJlYWQgdmFyaWFibGVzLgorICAgIExpYldlYlJUQ0F1ZGlvTW9kdWxlJiBt
X2F1ZGlvTW9kdWxlOworICAgIFJlZjxXVEY6OldvcmtRdWV1ZT4gbV9xdWV1ZTsKKyAgICBIYXNo
U2V0PFJlZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+PiBtX3NvdXJjZXM7CisgICAgUmVmUHRyPEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9yZWdpc3RlcmVkTWl4ZWRTb3VyY2U7CisKKyAgICAvLyBC
YWNrZ3JvdW5kIHRocmVhZCB2YXJpYWJsZXMuCisgICAgVmVjdG9yPFJlZjxBdWRpb1NhbXBsZURh
dGFTb3VyY2U+PiBtX3JlbmRlclNvdXJjZXM7CisgICAgUmVmUHRyPEF1ZGlvU2FtcGxlRGF0YVNv
dXJjZT4gbV9taXhlZFNvdXJjZTsKKyAgICBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gbV9vdXRw
dXRTdHJlYW1EZXNjcmlwdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQXVkaW9CdWZmZXJM
aXN0PiBtX2F1ZGlvQnVmZmVyTGlzdDsKKyAgICBzaXplX3QgbV9zYW1wbGVDb3VudCB7IDAgfTsK
KyAgICBzaXplX3QgbV93cml0ZUNvdW50IHsgMCB9OworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECisgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCog
bV9sb2dJZGVudGlmaWVyOworI2VuZGlmCit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENBdWRpb01vZHVsZS5jcHAKaW5k
ZXggOThmYjUyYzUyNDJlODA2NGIxNDlkMTE1YTNkYTZhMDQyMzY3ZTA2Ny4uYTlmOTMyZjM3N2E3
MjM5OTdjZjQyNGVmYWQ4YTRjYWI1YzNkYWFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvTW9kdWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDQXVkaW9Nb2R1bGUuY3BwCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisj
aW5jbHVkZSAiSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExpYldlYlJUQ0F1ZGlvTW9kdWxlOjpMaWJX
ZWJSVENBdWRpb01vZHVsZSgpCkBAIC00MCw2ICs0NCwxMCBAQCBMaWJXZWJSVENBdWRpb01vZHVs
ZTo6TGliV2ViUlRDQXVkaW9Nb2R1bGUoKQogewogfQogCitMaWJXZWJSVENBdWRpb01vZHVsZTo6
fkxpYldlYlJUQ0F1ZGlvTW9kdWxlKCkKK3sKK30KKwogaW50MzJfdCBMaWJXZWJSVENBdWRpb01v
ZHVsZTo6UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKHdlYnJ0Yzo6QXVkaW9UcmFuc3BvcnQqIGF1ZGlv
VHJhbnNwb3J0KQogewogICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkxpYldlYlJUQ0F1ZGlvTW9k
dWxlOjpSZWdpc3RlckF1ZGlvQ2FsbGJhY2sgJWQiLCAhIWF1ZGlvVHJhbnNwb3J0KTsKQEAgLTYy
LDYgKzcwLDkgQEAgaW50MzJfdCBMaWJXZWJSVENBdWRpb01vZHVsZTo6U3RhcnRQbGF5b3V0KCkK
IAogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcnRjOjpzY29w
ZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZXZpY2VNb2R1bGU+KHRoaXMpXSB7CiAgICAgICAgIG1f
cG9sbGluZ1RpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICAgICAgbV9jdXJyZW50QXVkaW9TYW1wbGVDb3VudCA9IDA7CisjZW5kaWYKICAgICAgICAg
cG9sbEF1ZGlvRGF0YSgpOwogICAgIH0pOwogICAgIHJldHVybiAwOwpAQCAtMTI5LDkgKzE0MCwy
MyBAQCB2b2lkIExpYldlYlJUQ0F1ZGlvTW9kdWxlOjpwb2xsRnJvbVNvdXJjZSgpCiAgICAgICAg
IGludDY0X3QgbnRwVGltZSA9IC0xOwogICAgICAgICBjaGFyIGRhdGFbTGliV2ViUlRDQXVkaW9G
b3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogY2hhbm5lbHMgKiBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6
Y2h1bmtTYW1wbGVDb3VudF07CiAgICAgICAgIG1fYXVkaW9UcmFuc3BvcnQtPlB1bGxSZW5kZXJE
YXRhKExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVCeXRlU2l6ZSAqIDgsIExpYldlYlJUQ0F1
ZGlvRm9ybWF0OjpzYW1wbGVSYXRlLCBjaGFubmVscywgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmNo
dW5rU2FtcGxlQ291bnQsIGRhdGEsICZlbGFwc2VkVGltZSwgJm50cFRpbWUpOworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgICAgICBpZiAobV9pc1JlbmRlcmluZ0luY29taW5nQXVkaW8pCisgICAg
ICAgICAgICBtX2luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LT5uZXdB
dWRpb0NodW5rUHVzaGVkKCk7CisgICAgICAgIG1fY3VycmVudEF1ZGlvU2FtcGxlQ291bnQgKz0g
TGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmNodW5rU2FtcGxlQ291bnQ7CisjZW5kaWYKICAgICB9CiB9
CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK0Jhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
clVuaXQmIExpYldlYlJUQ0F1ZGlvTW9kdWxlOjppbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdCgpCit7CisgICAgaWYgKCFtX2luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJVbml0KQorICAgICAgICBtX2luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJVbml0ID0gbWFrZVVuaXF1ZTxJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVyVW5pdD4oKnRoaXMpOworICAgIHJldHVybiAqbV9pbmNvbWluZ0F1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdDsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvTW9kdWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVk
aW9Nb2R1bGUuaAppbmRleCA2NzBhYzhmYTQ1ZDM1ZDE5MDAwNmNjYzg0NmRhZDVhODhjYjRmYWZk
Li4wODhhYTI1ODRjNmI3NWQzZDZhNTQwMWIyNzExOGMzMWIxNTUwYjc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVk
aW9Nb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUuaApAQCAtMzksMTQgKzM5LDI2IEBAIEFMTE9XX1VO
VVNFRF9QQVJBTUVURVJTX0JFR0lOCiBBTExPV19VTlVTRURfUEFSQU1FVEVSU19FTkQKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
VW5pdDsKK2NsYXNzIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Owog
CiAvLyBMaWJXZWJSVENBdWRpb01vZHVsZSBpcyBwdWxsaW5nIHN0cmVhbWVkIGRhdGEgdG8gZW5z
dXJlIGF1ZGlvIGRhdGEgaXMgcGFzc2VkIHRvIHRoZSBhdWRpbyB0cmFjay4KIGNsYXNzIExpYldl
YlJUQ0F1ZGlvTW9kdWxlIDogcHVibGljIHdlYnJ0Yzo6QXVkaW9EZXZpY2VNb2R1bGUgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExpYldlYlJUQ0F1ZGlvTW9k
dWxlKCk7CisgICAgfkxpYldlYlJUQ0F1ZGlvTW9kdWxlKCk7CiAKICAgICBzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIFBvbGxTYW1wbGVzQ291bnQgPSAxOworICAgIHZvaWQgcmVmKCkgeyBBZGRS
ZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSB7IFJlbGVhc2UoKTsgfQorCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgdm9pZCBzdGFydEluY29taW5nQXVkaW9SZW5kZXJpbmcoKSB7IG1faXNSZW5k
ZXJpbmdJbmNvbWluZ0F1ZGlvID0gdHJ1ZTsgfQorICAgIHZvaWQgc3RvcEluY29taW5nQXVkaW9S
ZW5kZXJpbmcoKSB7IG1faXNSZW5kZXJpbmdJbmNvbWluZ0F1ZGlvID0gZmFsc2U7IH0KKyAgICBC
YXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0JiBpbmNvbWluZ0F1ZGlvTWVkaWFT
dHJlYW1UcmFja1JlbmRlcmVyVW5pdCgpOworICAgIHVpbnQ2NF90IGN1cnJlbnRBdWRpb1NhbXBs
ZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50QXVkaW9TYW1wbGVDb3VudDsgfQorI2Vu
ZGlmCiAKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gVSBzaG91bGROb3RCZUNh
bGxlZChVIHZhbHVlKSBjb25zdApAQCAtMTM1LDYgKzE0NywxMiBAQCBwcml2YXRlOgogICAgIE1v
bm90b25pY1RpbWUgbV9wb2xsaW5nVGltZTsKICAgICBUaW1lciBtX2xvZ1RpbWVyOwogICAgIGlu
dCBtX3RpbWVTcGVudCB7IDAgfTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHVpbnQ2NF90
IG1fY3VycmVudEF1ZGlvU2FtcGxlQ291bnQgeyAwIH07CisgICAgYm9vbCBtX2lzUmVuZGVyaW5n
SW5jb21pbmdBdWRpbyB7IGZhbHNlIH07CisgICAgc3RkOjp1bmlxdWVfcHRyPEluY29taW5nQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0PiBtX2luY29taW5nQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmNwcAppbmRleCBmZGQ3ODhhMTA2NTU0
MmZlNGU3ODBmNmU0OGM4NzE1MjkzYzkwNzY5Li45ZTFiM2U1YmE5MjhmMmYxNjQyOTQzNTZlMzRk
MjE2NjA4NzI4NTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHAKQEAg
LTcwLDYgKzcwLDE2IEBAIGJvb2wgTGliV2ViUlRDUHJvdmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgp
CiB9CiAjZW5kaWYKIAorI2lmIFVTRShMSUJXRUJSVEMpCitMaWJXZWJSVENQcm92aWRlcjo6TGli
V2ViUlRDUHJvdmlkZXIoKQoreworfQorI2VuZGlmCisKK0xpYldlYlJUQ1Byb3ZpZGVyOjp+TGli
V2ViUlRDUHJvdmlkZXIoKQoreworfQorCiAjaWYgIVVTRShMSUJXRUJSVEMpIHx8ICFQTEFURk9S
TShDT0NPQSkKIHZvaWQgTGliV2ViUlRDUHJvdmlkZXI6OnJlZ2lzdGVyV2ViS2l0VlA5RGVjb2Rl
cigpCiB7CkBAIC0yNzMsNyArMjgzLDEyIEBAIHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5
SW50ZXJmYWNlKiBMaWJXZWJSVENQcm92aWRlcjo6ZmFjdG9yeSgpCiAKIHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZT4gTGliV2ViUlRDUHJv
dmlkZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeShydGM6OlRocmVhZCogbmV0d29ya1Ro
cmVhZCwgcnRjOjpUaHJlYWQqIHNpZ25hbGluZ1RocmVhZCkKIHsKLSAgICBhdXRvIGF1ZGlvTW9k
dWxlID0gcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZXZpY2VNb2R1bGU+KG5ldyBy
dGM6OlJlZkNvdW50ZWRPYmplY3Q8TGliV2ViUlRDQXVkaW9Nb2R1bGU+KCkpOworICAgIHJ0Yzo6
c2NvcGVkX3JlZnB0cjxMaWJXZWJSVENBdWRpb01vZHVsZT4gYXVkaW9Nb2R1bGU7CisgICAgaWYg
KCFtX2F1ZGlvTW9kdWxlKSB7CisgICAgICAgIGF1ZGlvTW9kdWxlID0gcnRjOjpzY29wZWRfcmVm
cHRyPExpYldlYlJUQ0F1ZGlvTW9kdWxlPihuZXcgcnRjOjpSZWZDb3VudGVkT2JqZWN0PExpYldl
YlJUQ0F1ZGlvTW9kdWxlPigpKTsKKyAgICAgICAgbV9hdWRpb01vZHVsZSA9IGF1ZGlvTW9kdWxl
LmdldCgpOworICAgIH0gZWxzZQorICAgICAgICBhdWRpb01vZHVsZSA9IG1fYXVkaW9Nb2R1bGUu
Z2V0KCk7CiAKICAgICByZXR1cm4gd2VicnRjOjpDcmVhdGVQZWVyQ29ubmVjdGlvbkZhY3Rvcnko
bmV0d29ya1RocmVhZCwgc2lnbmFsaW5nVGhyZWFkLCBzaWduYWxpbmdUaHJlYWQsIFdURk1vdmUo
YXVkaW9Nb2R1bGUpLCB3ZWJydGM6OkNyZWF0ZUJ1aWx0aW5BdWRpb0VuY29kZXJGYWN0b3J5KCks
IHdlYnJ0Yzo6Q3JlYXRlQnVpbHRpbkF1ZGlvRGVjb2RlckZhY3RvcnkoKSwgY3JlYXRlRW5jb2Rl
ckZhY3RvcnkoKSwgY3JlYXRlRGVjb2RlckZhY3RvcnkoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCmluZGV4IDUxYjQ5YTBm
MTExNWNkYmM4NDk0NWMwNDIxODNmZTZjZTExNjA3ZjUuLjBiN2E5MWI3NjQwNDEwNjcyNGI2N2Nk
ODU5ZjcyN2NmYThkMGU1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oCkBA
IC03OSw3ICs3OSw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExpYldlYlJUQ1Byb3ZpZGVyIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiBjcmVhdGUo
KTsKIAotICAgIHZpcnR1YWwgfkxpYldlYlJUQ1Byb3ZpZGVyKCkgPSBkZWZhdWx0OworICAgIHZp
cnR1YWwgfkxpYldlYlJUQ1Byb3ZpZGVyKCk7CiAKICAgICBzdGF0aWMgYm9vbCB3ZWJSVENBdmFp
bGFibGUoKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3RlcldlYktpdFZQOURlY29kZXIoKTsKQEAg
LTEwMyw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpQZWVyQ29ubmVjdGlvbkludGVyZmFjZT4gY3JlYXRlUGVlckNvbm5lY3Rpb24oRG9j
dW1lbnRJZGVudGlmaWVyLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImLCBydGM6OlBh
Y2tldFNvY2tldEZhY3RvcnkqLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlOjpSVEND
b25maWd1cmF0aW9uJiYpOwogCiAgICAgd2VicnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRl
cmZhY2UqIGZhY3RvcnkoKTsKKyAgICBMaWJXZWJSVENBdWRpb01vZHVsZSogYXVkaW9Nb2R1bGUo
KTsKIAogICAgIC8vIEZJWE1FOiBNYWtlIHRoZXNlIG1ldGhvZHMgbm90IHN0YXRpYy4KICAgICBz
dGF0aWMgdm9pZCBjYWxsT25XZWJSVENOZXR3b3JrVGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJik7
CkBAIC0xNTAsNyArMTUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRy
PFN1c3BlbmRhYmxlU29ja2V0RmFjdG9yeT4gY3JlYXRlU29ja2V0RmFjdG9yeShTdHJpbmcmJiAv
KiB1c2VyQWdlbnQgKi8sIGJvb2wgLyogaXNGaXJzdFBhcnR5ICovLCBSZWdpc3RyYWJsZURvbWFp
biYmKSB7IHJldHVybiBudWxscHRyOyB9CiAKIHByb3RlY3RlZDoKLSAgICBMaWJXZWJSVENQcm92
aWRlcigpID0gZGVmYXVsdDsKKyAgICBMaWJXZWJSVENQcm92aWRlcigpOwogCiAgICAgcnRjOjpz
Y29wZWRfcmVmcHRyPHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U+IGNyZWF0ZVBlZXJD
b25uZWN0aW9uKHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6TmV0d29ya01h
bmFnZXImLCBydGM6OlBhY2tldFNvY2tldEZhY3RvcnkmLCB3ZWJydGM6OlBlZXJDb25uZWN0aW9u
SW50ZXJmYWNlOjpSVENDb25maWd1cmF0aW9uJiYsIHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OkFz
eW5jUmVzb2x2ZXJGYWN0b3J5PiYmKTsKIApAQCAtMTcxLDYgKzE3Miw3IEBAIHByb3RlY3RlZDoK
ICAgICAvLyBGSVhNRTogUmVtb3ZlIG1fdXNlTmV0d29ya1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIg
bWVtYmVyIHZhcmlhYmxlIGFuZCBtYWtlIGl0IGEgZ2xvYmFsLgogICAgIGJvb2wgbV91c2VOZXR3
b3JrVGhyZWFkV2l0aFNvY2tldFNlcnZlciB7IHRydWUgfTsKIAorICAgIFJlZlB0cjxMaWJXZWJS
VENBdWRpb01vZHVsZT4gbV9hdWRpb01vZHVsZTsKICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2Vi
cnRjOjpQZWVyQ29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IG1fZmFjdG9yeTsKICAgICBib29s
IG1fZGlzYWJsZU5vbkxvY2FsaG9zdENvbm5lY3Rpb25zIHsgZmFsc2UgfTsKICAgICBib29sIG1f
c3VwcG9ydHNIMjY1IHsgZmFsc2UgfTsKQEAgLTE4Nyw0ICsxODksMTEgQEAgcHJvdGVjdGVkOgog
I2VuZGlmCiB9OwogCisjaWYgVVNFKExJQldFQlJUQykKK2lubGluZSBMaWJXZWJSVENBdWRpb01v
ZHVsZSogTGliV2ViUlRDUHJvdmlkZXI6OmF1ZGlvTW9kdWxlKCkKK3sKKyAgICByZXR1cm4gbV9h
dWRpb01vZHVsZS5nZXQoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcAppbmRl
eCA4OTQ3OWM2MjRmNzk4ODMxNDVhMDg2ZjU3YzUwNDI0ZjRjMjNkMzZkLi45YWVhNWYxYzA3MmMw
OWJmMDYzZjQ5OTllMDNiMjE5ZTg1ZDdlMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2Eu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hOjpPbkRhdGEoY29uc3Qgdm9pZCogYXVkaW9E
YXRhLCBpbnQgYml0c1BlcgogICAgICAgICAgICAgbV9udW1iZXJPZkZyYW1lcyA9IDA7CiAgICAg
fQogCi0gICAgQ01UaW1lIHN0YXJ0VGltZSA9IFBBTDo6Q01UaW1lTWFrZShtX251bWJlck9mRnJh
bWVzLCBzYW1wbGVSYXRlKTsKKyAgICBDTVRpbWUgc3RhcnRUaW1lID0gUEFMOjpDTVRpbWVNYWtl
KGF1ZGlvTW9kdWxlKCkgPyBhdWRpb01vZHVsZSgpLT5jdXJyZW50QXVkaW9TYW1wbGVDb3VudCgp
IDogbV9udW1iZXJPZkZyYW1lcywgTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGUpOwog
ICAgIGF1dG8gbWVkaWFUaW1lID0gUEFMOjp0b01lZGlhVGltZShzdGFydFRpbWUpOwogICAgIG1f
bnVtYmVyT2ZGcmFtZXMgKz0gbnVtYmVyT2ZGcmFtZXM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442810</attachid>
            <date>2021-10-29 05:47:41 -0700</date>
            <delta_ts>2021-10-29 06:36:13 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-232375-20211029144739.patch</filename>
            <type>text/plain</type>
            <size>56065</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY4NTQ2MjY3ZTdhZTEz
OTY5NjQ1YWIzNGNjNGYyMzNjMWJjM2QzMi4uNGUyZjdjMzE2MzhiYmRmMTNlNTNiNGFhMDBlZWFl
M2IxMDk0NWRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTEwLTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBFbnN1cmUgc3luY2hyb25p
emVkIHJlbmRlcmluZyBvZiBpbmNvbWluZyBhdWRpbyB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjM3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBXZWJSVEMgaW5jb21pbmcgYXVkaW8gdHJhY2tz
IGFyZSBndWFyYW50ZWVkIHRvIGJlIHN5bmNocm9uaXplZCBiYXNlZCBvbiB0aGUgYXVkaW8gbW9k
dWxlIGNsb2NrLgorICAgICAgICBQcmV2aW91c2x5LCB3ZSB3ZXJlIG1peGluZyBhbGwgYXVkaW8g
dHJhY2tzIHRvZ2V0aGVyLCBidXQgd2Ugd2VyZSBub3QgaGFuZGxpbmcgc3luY2hyb25pemF0aW9u
IG9mIHRyYWNrcyB0aGF0IGhhdmUgdGhlIHNhbWUgY2xvY2suCisgICAgICAgIFRoaXMgY2FuIGNh
dXNlIHNvbWUgbG93ZXIgcXVhbGl0eSBhdWRpbyByZW5kZXJpbmcuCisgICAgICAgIFRvIHByZXZl
bnQgdGhpcywgYWxsIFdlYlJUQyBpbmNvbWluZyBhdWRpbyB0cmFja3MgYXJlIG5vdyBtaXhlZCB0
b2dldGhlciBpbiBhIHNpbmdsZSB0cmFjayB0aGF0IGlzIHRoZW4gbWl4ZWQgd2l0aCBhbGwgb3Ro
ZXIgbm9uIHN5bmNocm9uaXplZCB0cmFja3MuCisgICAgICAgIFRvIGRvIHNvIHdlIGludHJvZHVj
ZSBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCB3aGljaCB3aWxsIHJl
Y2VpdmUgYWxsIGluY29taW5nIGF1ZGlvIHRyYWNrcy4KKyAgICAgICAgSXQgdGhlbiBzZW5kcyB0
aGUgbWl4IHRvIHRoZSBhY3R1YWwgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Lgor
ICAgICAgICBUbyBlbnN1cmUgdGlnaHQgc3luY2hyb25pemF0aW9uLCB3ZSBpbnRyb2R1Y2UgQXVk
aW9TYW1wbGVEYXRhU291cmNlOjpwdWxsQXZhaWxhYmxlU2FtcGxlQ2h1bmsgd2hpY2ggcmVhZHMg
ZGF0YSB1c2luZyB0aGUgcHJvdmlkZWQgdGltZXN0YW1wIHJlbGF0aXZlIHRvIHRoZSBpbnB1dCBv
ZmZzZXQuCisgICAgICAgIFdlIGRvIGEgcmVmYWN0b3JpbmcgdG8gbWFrZSBpdCBlYXN5IHRvIGVp
dGhlciB1c2UgSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQgb3IgQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IGJ5IGhhdmluZyBhIGJhc2UgY2xhc3MgY2Fs
bGVkIEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuCisKKyAgICAgICAgTWFu
dWFsbHkgdGVzdGVkLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVy
QmFja2VuZC5oOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNv
dXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNv
dXJjZS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyQ29jb2EuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9CYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXJVbml0Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2Nv
Y29hL0luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvSW5jb21pbmdBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvTW9kdWxlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQ
cm92aWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA6CisKIDIwMjEtMTAtMjkgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBwb3RlbnRpYWwgcmFjZSBpbiBBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpwdXNoU2FtcGxlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMzZj
OGI1MGQ0MDE1NjcxYzIzN2UzMDZkOWMzMjNmMDlhZTE2ZDk4Zi4uYmJhOGM1YWFlMTExYjA4ZDc3
OGEwN2VkZmIwYTlkNjYxNGRiOTlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC0yOSw4ICsyOSwxMCBAQAogCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJJY2VDYW5kaWRhdGUuaCIKKyNpbmNsdWRlICJM
aWJXZWJSVENBdWRpb01vZHVsZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ01lZGlhRW5kcG9pbnQuaCIKKyNpbmNsdWRlICJM
aWJXZWJSVENQcm92aWRlci5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2Vu
ZC5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuaCIKICNpbmNsdWRlICJM
aWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuaCIKQEAgLTI5Myw3ICsyOTUsOCBAQCBSZWY8
UlRDUnRwUmVjZWl2ZXI+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlUmVj
ZWl2ZXIoc3RkOjp1bmlxdWVfcAogewogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KCptX3BlZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKLSAg
ICBhdXRvIHNvdXJjZSA9IGJhY2tlbmQtPmNyZWF0ZVNvdXJjZSgpOworICAgIGF1dG8gc291cmNl
ID0gYmFja2VuZC0+Y3JlYXRlU291cmNlKGRvY3VtZW50KTsKKwogICAgIC8vIFJlbW90ZSBzb3Vy
Y2UgaXMgaW5pdGlhbGx5IG11dGVkIGFuZCB3aWxsIGJlIHVubXV0ZWQgd2hlbiByZWNlaXZpbmcg
dGhlIGZpcnN0IHBhY2tldC4KICAgICBzb3VyY2UtPnNldE11dGVkKHRydWUpOwogICAgIGF1dG8g
dHJhY2tJRCA9IHNvdXJjZS0+cGVyc2lzdGVudElEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmNwcAppbmRleCBjY2E5NzA0YjU2NmMzNGVhYTBk
ZmYwY2M5OGRmZmE4M2E2ZTY3NDU4Li44MGQ3OGExMzY5YjEyYjM4MmU0ZjMwYTBkZTNjY2Q1MmJi
OTVhZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFj
a2VuZC5jcHAKQEAgLTI1LDkgKzI1LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkxpYldlYlJUQ0F1ZGlvTW9kdWxlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRD
RHRsc1RyYW5zcG9ydEJhY2tlbmQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgog
I2luY2x1ZGUgIkxpYldlYlJUQ1J0cFJlY2VpdmVyVHJhbnNmb3JtQmFja2VuZC5oIgogI2luY2x1
ZGUgIkxpYldlYlJUQ1V0aWxzLmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQuaCIKICNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9Tb3Vy
Y2UuaCIKICNpbmNsdWRlICJSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCIKQEAgLTk5LDcg
KzEwMyw3IEBAIFZlY3RvcjxSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2U+IExpYldlYlJUQ1J0
cFJlY2VpdmVyQmFja2VuZDo6Z2V0U3luY2hyb25pemF0CiAgICAgcmV0dXJuIHNvdXJjZXM7CiB9
CiAKLVJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ6
OmNyZWF0ZVNvdXJjZSgpCitSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gTGliV2ViUlRDUnRwUmVj
ZWl2ZXJCYWNrZW5kOjpjcmVhdGVTb3VyY2UoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIGF1
dG8gcnRjVHJhY2sgPSBtX3J0Y1JlY2VpdmVyLT50cmFjaygpOwogICAgIHN3aXRjaCAobV9ydGNS
ZWNlaXZlci0+bWVkaWFfdHlwZSgpKSB7CkBAIC0xMDgsNyArMTEyLDEwIEBAIFJlZjxSZWFsdGlt
ZU1lZGlhU291cmNlPiBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQ6OmNyZWF0ZVNvdXJjZSgp
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQRV9BVURJTzogewog
ICAgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiBh
dWRpb1RyYWNrID0gc3RhdGljX2Nhc3Q8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlKj4ocnRj
VHJhY2suZ2V0KCkpOwotICAgICAgICByZXR1cm4gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNl
OjpjcmVhdGUoV1RGTW92ZShhdWRpb1RyYWNrKSwgZnJvbVN0ZFN0cmluZyhydGNUcmFjay0+aWQo
KSkpOworICAgICAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6
Y3JlYXRlKFdURk1vdmUoYXVkaW9UcmFjayksIGZyb21TdGRTdHJpbmcocnRjVHJhY2stPmlkKCkp
KTsKKyAgICAgICAgaWYgKGRvY3VtZW50LnBhZ2UoKSkKKyAgICAgICAgICAgIHNvdXJjZS0+c2V0
QXVkaW9Nb2R1bGUoZG9jdW1lbnQucGFnZSgpLT5saWJXZWJSVENQcm92aWRlcigpLmF1ZGlvTW9k
dWxlKCkpOworICAgICAgICByZXR1cm4gc291cmNlOwogICAgIH0KICAgICBjYXNlIGNyaWNrZXQ6
Ok1FRElBX1RZUEVfVklERU86IHsKICAgICAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6
VmlkZW9UcmFja0ludGVyZmFjZT4gdmlkZW9UcmFjayA9IHN0YXRpY19jYXN0PHdlYnJ0Yzo6Vmlk
ZW9UcmFja0ludGVyZmFjZSo+KHJ0Y1RyYWNrLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVy
QmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgKaW5kZXggZmZkYTA1ZDEzMmU0MWMzMGI2MDU5
ZmM1MGFjMGMxYWYyMTlhNjc5NS4uMDFmM2RjNzQyYWRhNzE0Yjg5MTlkOWY0YjNmMmRkODczNTBm
ZGZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5k
LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUnRwUmVjZWl2ZXJJbnRlcmZhY2U7CiB9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLQorY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBSZWFsdGltZU1lZGlh
U291cmNlOwogCiBjbGFzcyBMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQgZmluYWwgOiBwdWJs
aWMgUlRDUnRwUmVjZWl2ZXJCYWNrZW5kIHsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAg
ICAgd2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZSogcnRjUmVjZWl2ZXIoKSB7IHJldHVybiBt
X3J0Y1JlY2VpdmVyLmdldCgpOyB9CiAKLSAgICBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gY3Jl
YXRlU291cmNlKCk7CisgICAgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGNyZWF0ZVNvdXJjZShE
b2N1bWVudCYpOwogCiBwcml2YXRlOgogICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVy
cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMGNlNTg0YmU2MjcwZjFjNTc1
NDMyNGU1MWRiYTg5NTg5OWM3YjRkYy4uODdiMDlhMjlmOTc4ODc1ZWQ4YTA1M2ZhZDU1NDFkZTQ5
NmEyMTFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC01MjYsNiArNTI2LDcgQEAgcGxh
dGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2Nv
YS5jcHAKIHBsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1Jl
bmRlcmVySW50ZXJuYWxVbml0LmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcAogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29j
b2EvRGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYS5jcHAKK3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nv
Y29hL0luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcAogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZS5tbQogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0g
QG5vLXVuaWZ5CiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJj
ZUlPUy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDU5NjdhOTQyNzY5NTgwYzhiM2YwZjdlMTJkZGQyNTExMjE1YmQzNTAuLjM1
NGQwYThlZDA0NGEyZDJkZTM2ZDY4ZWFhYTNiMjgwNmQ5NzMyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExODAsNiArMTE4
MCw3IEBACiAJCTQxODZCRDNGMjEzRUUzNDMwMDAxODI2RiAvKiBMaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxRDFBMDRCMjEzRURERkUwMDYzRkI2QiAvKiBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNw
cCAqLzsgfTsKIAkJNDE4NkJENDAyMTNFRTM0NTAwMDE4MjZGIC8qIExpYldlYlJUQ1J0cFJlY2Vp
dmVyQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUQxQTA0QTIxM0VEREZFMDA2M0ZCNkIgLyogTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNr
ZW5kLmNwcCAqLzsgfTsKIAkJNDE4NkJENEUyMTQwQjlFODAwMDE4MjZGIC8qIExpYldlYlJUQ1J0
cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTg2QkQ0RDIxNDBCOUU4MDAwMTgyNkYgLyogTGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kLmNwcCAqLzsgfTsKKwkJNDE4NzhGQUQyNzI5NDcyMTAwMkUxRUREIC8q
IEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODc4RkE4MjcyODIwNTUwMDJFMUVERCAv
KiBCYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4ODVCOTMxMUI2RkRBNjAwMzM4
M0JCIC8qIEZvcm1TdWJtaXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTg4NUI5MTExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTg4
RDU1QzI2QzU0RDZGMDA0ODU4QzggLyogUlRDRHRsc1RyYW5zcG9ydEJhY2tlbmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODhENTVBMjZDNTRENkYw
MDQ4NThDOCAvKiBSVENEdGxzVHJhbnNwb3J0QmFja2VuZC5oICovOyB9OwogCQk0MTg4RDU2MzI2
QzU1MUIxMDA0ODU4QzggLyogUlRDRHRsc1RyYW5zcG9ydFN0YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg4RDU2MjI2QzU1MUIxMDA0ODU4Qzgg
LyogUlRDRHRsc1RyYW5zcG9ydFN0YXRlLmggKi87IH07CkBAIC04MTU4LDYgKzgxNTksOSBAQAog
CQk0MTg2QkQ0NjIxNDA3MkI2MDAwMTgyNkYgLyogUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFRyYW5zY2VpdmVyQmFja2Vu
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg2QkQ0QjIxNDBBODA1MDAwMTgy
NkYgLyogTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5oOyBwYXRoID0g
bGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTg2QkQ0RDIxNDBCOUU4MDAwMTgyNkYgLyogTGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHA7IHBhdGggPSBsaWJ3ZWJydGMv
TGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDE4NzhGQTgyNzI4MjA1NTAwMkUxRUREIC8qIEJhc2VBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlclVuaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZUF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyVW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTg3OEZB
QTI3MjgyMDU3MDAyRTFFREQgLyogSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
clVuaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5k
ZXJlclVuaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4NzhGQUIyNzI5MzRF
NjAwMkUxRUREIC8qIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluY29taW5nQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE4ODA3REYyNEU0NTU4MzAwRERBRjk0IC8qIEFib3J0QWxnb3JpdGhtLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBB
Ym9ydEFsZ29yaXRobS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODgwN0Ux
MjRFNDU4QzMwMEREQUY5NCAvKiBBYm9ydEFsZ29yaXRobS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYm9y
dEFsZ29yaXRobS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg4NUI5MTExQjZG
REE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRm9ybVN1Ym1pc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIwMTcyLDggKzIwMTc2LDExIEBACiAJCQkJNDFDM0I4OUYyNjQ5QjFCNzAwNEVENERFIC8qIEF1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0LmggKi8sCiAJCQkJNDFDM0I4
QTAyNjQ5QjFCNzAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5j
cHAgKi8sCiAJCQkJNDFDM0I4OUIyNjQ5QjFCNjAwNEVENERFIC8qIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyVW5pdC5oICovLAorCQkJCTQxODc4RkE4MjcyODIwNTUwMDJFMUVERCAvKiBC
YXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmggKi8sCiAJCQkJMDdCQjFFNkUy
NzE3NkNDQTAwMURGMjg5IC8qIERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2EuY3BwICovLAogCQkJ
CTA3QkIxRTZGMjcxNzZDQ0EwMDFERjI4OSAvKiBEaXNwbGF5Q2FwdHVyZVNvdXJjZUNvY29hLmgg
Ki8sCisJCQkJNDE4NzhGQUIyNzI5MzRFNjAwMkUxRUREIC8qIEluY29taW5nQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNwcCAqLywKKwkJCQk0MTg3OEZBQTI3MjgyMDU3MDAyRTFF
REQgLyogSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzE5
MjgsNiArMzE5MzUsNyBAQAogCQkJCUJDMTI0RUU4MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJQcm9w
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjBCQjYxNjFEMEExQkYwMDAyMjE4MTIgLyogQmFzZTY0
VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzE5OEZCRjI0QTE2MEREMDA0MjBCMDUg
LyogQmFzZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE4NzhGQUQyNzI5NDcy
MTAwMkUxRUREIC8qIEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxMkRFRjFGMjNBOTE4QTMwMEQ4NDBGNiAvKiBCYXNlQXVkaW9TaGFy
ZWRVbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFNjFDQTEyNkNBNUM0MDBCNjNFOEQgLyog
QmFzZUJ1dHRvbklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTYxQ0MxMjZDQTVD
NDAwQjYzRThEIC8qIEJhc2VDaGVja2FibGVJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCBmN2Q0ZTdhZmI4NzY0NmFlZTY2
MmQ1N2VmZjgyODNjZDdiN2M3NzViLi41MTdjZGIwYTQ5ZTNmYzY4NDYyNDI5MGZlOTVlZGRiMDMz
MGMxMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNTcsNiAr
NTcsNyBAQAogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSURCQ29ubmVjdGlv
blRvU2VydmVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiTGli
V2ViUlRDQXVkaW9Nb2R1bGUuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgogI2lu
Y2x1ZGUgIk1lZGlhUmVjb3JkZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclBy
b3ZpZGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb1NhbXBsZURhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCmluZGV4IDk5YmQzODZmZTM1NjUzYzVkM2Vi
MzdjZDdjZjVmZjAzM2I2NjhhY2UuLjJjZDIwZDU4ZWJiZjM3ZGI2NWVjMmJkYzgzZGRkNjc2ODZl
M2VhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIHB1bGxTYW1wbGVzKEF1ZGlvQnVmZmVyTGlzdCYsIHNpemVfdCwgdWludDY0X3Qs
IGRvdWJsZSwgUHVsbE1vZGUpOwogCiAgICAgYm9vbCBwdWxsQXZhaWxhYmxlU2FtcGxlc0FzQ2h1
bmtzKEF1ZGlvQnVmZmVyTGlzdCYsIHNpemVfdCBmcmFtZUNvdW50LCB1aW50NjRfdCB0aW1lU3Rh
bXAsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgYm9vbCBwdWxsQXZhaWxhYmxlU2FtcGxlQ2h1
bmsoQXVkaW9CdWZmZXJMaXN0Jiwgc2l6ZV90IGZyYW1lQ291bnQsIHVpbnQ2NF90IHRpbWVTdGFt
cCwgUHVsbE1vZGUpOwogCiAgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKSB7IG1fdm9s
dW1lID0gdm9sdW1lOyB9CiAgICAgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV92b2x1
bWU7IH0KQEAgLTY5LDYgKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wgbXV0ZWQoKSBjb25zdCB7
IHJldHVybiBtX211dGVkOyB9CiAKICAgICBjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24q
IGlucHV0RGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2lucHV0RGVzY3JpcHRpb24gPyAm
bV9pbnB1dERlc2NyaXB0aW9uLnZhbHVlKCkgOiBudWxscHRyOyB9CisgICAgY29uc3QgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uKiBvdXRwdXREZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
b3V0cHV0RGVzY3JpcHRpb24gPyAmbV9vdXRwdXREZXNjcmlwdGlvbi52YWx1ZSgpIDogbnVsbHB0
cjsgfQogCiAgICAgdm9pZCByZWNvbXB1dGVTYW1wbGVPZmZzZXQoKSB7IG1fc2hvdWxkQ29tcHV0
ZU91dHB1dFNhbXBsZU9mZnNldCA9IHRydWU7IH0KIApAQCAtODYsNiArODgsNyBAQCBwcml2YXRl
OgogICAgIE9TU3RhdHVzIHNldHVwQ29udmVydGVyKCk7CiAKICAgICB2b2lkIHB1c2hTYW1wbGVz
SW50ZXJuYWwoY29uc3QgQXVkaW9CdWZmZXJMaXN0JiwgY29uc3QgTWVkaWFUaW1lJiwgc2l6ZV90
IGZyYW1lQ291bnQpOworICAgIGJvb2wgcHVsbFNhbXBsZXNJbnRlcm5hbChBdWRpb0J1ZmZlckxp
c3QmLCBzaXplX3Qgc2FtcGxlQ291bnQsIHVpbnQ2NF90IHRpbWVTdGFtcCwgUHVsbE1vZGUpOwog
CiAgICAgc3RkOjpvcHRpb25hbDxDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24+IG1faW5wdXREZXNj
cmlwdGlvbjsKICAgICBzdGQ6Om9wdGlvbmFsPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9v
dXRwdXREZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvU2FtcGxlRGF0YVNvdXJjZS5tbQppbmRleCAwNWE4M2Q3MjA5
MTYxMTdhMDRjZmQyOGYyMDhkY2JiZTNkMDJmZmY3Li5mMDEwZDNjY2NiZWE1NTc1NTgyY2FkNDRj
M2ZkMmEyMTRhYzYyZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb1NhbXBsZURhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9TYW1wbGVEYXRhU291cmNlLm1tCkBAIC0yODYsNiArMjg2
LDExIEBAIGJvb2wgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsU2FtcGxlcyhBdWRpb0J1ZmZl
ckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNvCiAKICAgICBtX2lzRmlyc3RQdWxsID0gZmFs
c2U7CiAKKyAgICByZXR1cm4gcHVsbFNhbXBsZXNJbnRlcm5hbChidWZmZXIsIHNhbXBsZUNvdW50
LCB0aW1lU3RhbXAsIG1vZGUpOworfQorCitib29sIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6cHVs
bFNhbXBsZXNJbnRlcm5hbChBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZlciwgc2l6ZV90IHNhbXBsZUNv
dW50LCB1aW50NjRfdCB0aW1lU3RhbXAsIFB1bGxNb2RlIG1vZGUpCit7CiAgICAgaWYgKG1vZGUg
PT0gQ29weSkgewogICAgICAgICBtX3JpbmdCdWZmZXItPmZldGNoKCZidWZmZXIsIHNhbXBsZUNv
dW50LCB0aW1lU3RhbXAsIENBUmluZ0J1ZmZlcjo6Q29weSk7CiAgICAgICAgIGlmIChtX3ZvbHVt
ZSA8IEVxdWl2YWxlbnRUb01heFZvbHVtZSkKQEAgLTMwOSw2ICszMTQsMjUgQEAgYm9vbCBBdWRp
b1NhbXBsZURhdGFTb3VyY2U6OnB1bGxTYW1wbGVzKEF1ZGlvQnVmZmVyTGlzdCYgYnVmZmVyLCBz
aXplX3Qgc2FtcGxlQ28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBBdWRpb1NhbXBsZURh
dGFTb3VyY2U6OnB1bGxBdmFpbGFibGVTYW1wbGVDaHVuayhBdWRpb0J1ZmZlckxpc3QmIGJ1ZmZl
ciwgc2l6ZV90IHNhbXBsZUNvdW50LCB1aW50NjRfdCB0aW1lU3RhbXAsIFB1bGxNb2RlIG1vZGUp
Cit7CisgICAgQVNTRVJUKGJ1ZmZlci5tTnVtYmVyQnVmZmVycyA9PSBtX3JpbmdCdWZmZXItPmNo
YW5uZWxDb3VudCgpKTsKKyAgICBpZiAoYnVmZmVyLm1OdW1iZXJCdWZmZXJzICE9IG1fcmluZ0J1
ZmZlci0+Y2hhbm5lbENvdW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICht
X211dGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9zaG91bGRDb21wdXRl
T3V0cHV0U2FtcGxlT2Zmc2V0KSB7CisgICAgICAgIG1fc2hvdWxkQ29tcHV0ZU91dHB1dFNhbXBs
ZU9mZnNldCA9IGZhbHNlOworICAgICAgICBtX291dHB1dFNhbXBsZU9mZnNldCA9IG1faW5wdXRT
YW1wbGVPZmZzZXQudGltZVZhbHVlKCkgKiBtX291dHB1dERlc2NyaXB0aW9uLT5zYW1wbGVSYXRl
KCkgLyBtX2lucHV0U2FtcGxlT2Zmc2V0LnRpbWVTY2FsZSgpOworICAgIH0KKworICAgIHRpbWVT
dGFtcCArPSBtX291dHB1dFNhbXBsZU9mZnNldDsKKworICAgIHJldHVybiBwdWxsU2FtcGxlc0lu
dGVybmFsKGJ1ZmZlciwgc2FtcGxlQ291bnQsIHRpbWVTdGFtcCwgbW9kZSk7Cit9CisKIGJvb2wg
QXVkaW9TYW1wbGVEYXRhU291cmNlOjpwdWxsQXZhaWxhYmxlU2FtcGxlc0FzQ2h1bmtzKEF1ZGlv
QnVmZmVyTGlzdCYgYnVmZmVyLCBzaXplX3Qgc2FtcGxlQ291bnRQZXJDaHVuaywgdWludDY0X3Qg
dGltZVN0YW1wLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29uc3VtZUZpbGxlZEJ1ZmZlcikKIHsKICAg
ICBBU1NFUlQoYnVmZmVyLm1OdW1iZXJCdWZmZXJzID09IG1fcmluZ0J1ZmZlci0+Y2hhbm5lbENv
dW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIuY3BwCmluZGV4IGU1
OGFjZTYzODllYjJlYmZjYjJmNWQ0NGY0MzE4MmQ2YzBiNTU2NzEuLjRkNzk4YWUxMWM4ODQ5MTRi
ZTU2MDZkODkzMmJmMDA5MGIwYzQxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlci5jcHAKQEAgLTQwLDMxICs0MCwyOCBAQCBjbGFzcyBNZWRpYVRpbWU7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OlJlbmRlcmVy
Q3JlYXRvciBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6bV9yZW5kZXJlckNyZWF0b3Ig
PSBudWxscHRyOwotdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6c2V0Q3JlYXRv
cihSZW5kZXJlckNyZWF0b3IgY3JlYXRvcikKK3N0ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlcj4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXI6OmNyZWF0ZShJ
bml0JiYgaW5pdCkKIHsKLSAgICBtX3JlbmRlcmVyQ3JlYXRvciA9IGNyZWF0b3I7Ci19Ci0KLXN0
ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXI6OmNyZWF0ZSgpCi17Ci0gICAgaWYgKG1fcmVuZGVyZXJDcmVhdG9y
KQotICAgICAgICByZXR1cm4gbV9yZW5kZXJlckNyZWF0b3IoKTsKLQogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIHJldHVybiBtYWtlVW5pcXVlPEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVy
Q29jb2E+KCk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJDb2NvYT4oV1RGTW92ZShpbml0KSk7CiAjZWxzZQogICAgIHJldHVybiBudWxscHRyOwog
I2VuZGlmCiB9CiAKK0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlcihJbml0JiYgaW5pdCkKKyAgICA6IG1fY3Jhc2hDYWxsYmFjayhXVEZN
b3ZlKGluaXQuY3Jhc2hDYWxsYmFjaykpCisjaWYgVVNFKExJQldFQlJUQykKKyAgICAsIG1fYXVk
aW9Nb2R1bGUoV1RGTW92ZShpbml0LmF1ZGlvTW9kdWxlKSkKKyNlbmRpZgogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAotdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6c2V0TG9n
Z2VyKGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBpZGVudGlmaWVyKQorICAgICwg
bV9sb2dnZXIoaW5pdC5sb2dnZXIpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIoaW5pdC5sb2dJZGVu
dGlmaWVyKQorI2VuZGlmCiB7Ci0gICAgbV9sb2dnZXIgPSAmbG9nZ2VyOwotICAgIG1fbG9nSWRl
bnRpZmllciA9IGlkZW50aWZpZXI7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIFdU
RkxvZ0NoYW5uZWwmIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjpsb2dDaGFubmVsKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gTG9nTWVkaWE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9NZWRpYVN0cmVhbVRyYWNr
UmVuZGVyZXIuaAppbmRleCAwOTcyNzY4ZGVmZWJlYmE4ZjAyODQ4NTkyMmFkNmIxODExZmNhMzBi
Li42ZDhhMWJiOTIyMTI1ZWY4NDMyMGQ4OGU5YzVkYTM5ZjUwNjRlMWFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9BdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyLmgKQEAgLTM3LDEyICszNywyMyBAQCBjbGFzcyBNZWRp
YVRpbWU7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRp
b247CitjbGFzcyBMaWJXZWJSVENBdWRpb01vZHVsZTsKIGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRh
OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlciA6
IHB1YmxpYyBMb2dnZXJIZWxwZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXI+IGNyZWF0ZSgpOworICAgIHN0cnVjdCBJbml0IHsKKyAgICAgICAgRnVuY3Rpb248dm9p
ZCgpPiYmIGNyYXNoQ2FsbGJhY2s7CisjaWYgVVNFKExJQldFQlJUQykKKyAgICAgICAgUmVmUHRy
PExpYldlYlJUQ0F1ZGlvTW9kdWxlPiBhdWRpb01vZHVsZTsKKyNlbmRpZgorI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorICAgICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcjsKKyAgICAgICAgY29u
c3Qgdm9pZCogbG9nSWRlbnRpZmllcjsKKyNlbmRpZgorICAgIH07CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gY3JlYXRlKEluaXQmJik7
CiAgICAgdmlydHVhbCB+QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIoKSA9IGRlZmF1bHQ7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9
IDA7CkBAIC01NiwxNiArNjcsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXVk
aW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJik7CiAKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICB2b2lkIHNldExvZ2dlcihjb25zdCBMb2dnZXImLCBjb25zdCB2b2lkKik7Ci0jZW5k
aWYKLQotICAgIHVzaW5nIFJlbmRlcmVyQ3JlYXRvciA9IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gKCopKCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0Q3JlYXRv
cihSZW5kZXJlckNyZWF0b3IpOwotCi0gICAgdm9pZCBzZXRDcmFzaENhbGxiYWNrKEZ1bmN0aW9u
PHZvaWQoKT4mJiBjYWxsYmFjaykgeyBtX2NyYXNoQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KTsgfQotCiBwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXIoSW5pdCYmKTsKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExv
Z2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmll
cigpIGNvbnN0IGZpbmFsOwpAQCAtNzQsMTcgKzc4LDIzIEBAIHByb3RlY3RlZDoKICAgICBXVEZM
b2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAorI2lmIFVTRShM
SUJXRUJSVEMpCisgICAgTGliV2ViUlRDQXVkaW9Nb2R1bGUqIGF1ZGlvTW9kdWxlKCk7CisjZW5k
aWYKKwogICAgIHZvaWQgY3Jhc2hlZCgpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBSZW5kZXJl
ckNyZWF0b3IgbV9yZW5kZXJlckNyZWF0b3I7Ci0KICAgICAvLyBNYWluIHRocmVhZCB3cml0YWJs
ZSBtZW1iZXJzCiAgICAgZmxvYXQgbV92b2x1bWUgeyAxIH07CiAgICAgRnVuY3Rpb248dm9pZCgp
PiBtX2NyYXNoQ2FsbGJhY2s7CiAKKyNpZiBVU0UoTElCV0VCUlRDKQorICAgIFJlZlB0cjxMaWJX
ZWJSVENBdWRpb01vZHVsZT4gbV9hdWRpb01vZHVsZTsKKyNlbmRpZgorCiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECi0gICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgUmVm
PGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVy
OwogI2VuZGlmCiB9OwpAQCAtMTA1LDEwICsxMTUsMTcgQEAgaW5saW5lIHZvaWQgQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXI6OmNyYXNoZWQoKQogICAgICAgICBtX2NyYXNoQ2FsbGJhY2so
KTsKIH0KIAorI2lmIFVTRShMSUJXRUJSVEMpCitpbmxpbmUgTGliV2ViUlRDQXVkaW9Nb2R1bGUq
IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyOjphdWRpb01vZHVsZSgpCit7CisgICAgcmV0
dXJuIG1fYXVkaW9Nb2R1bGUuZ2V0KCk7Cit9CisjZW5kaWYKKwogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogaW5saW5lIGNvbnN0IExvZ2dlciYgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXI6OmxvZ2dlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICptX2xvZ2dlcjsKKyAgICByZXR1cm4g
bV9sb2dnZXIuZ2V0KCk7CiAgICAgCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbS5jcHAKaW5kZXggMTYyNDk4MDk1MTIyZjRmNGIwNTIwNWU3MWZiN2NjNWI5MGU0YmY5Mi4u
YTQ3MTJkM2MwMWM3NDU4YzgyNjVjMmFjYzQwM2I4NTExMTcxODcyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQXVkaW9U
cmFja1ByaXZhdGVNZWRpYVN0cmVhbS5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIu
aCIKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRpb01vZHVsZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00OCwyMCArNTAsMzEgQEAgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0
cmVhbTo6fkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0oKQogICAgIGNsZWFyKCk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlUmVuZGVyZXIoQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbSYgc3RyZWFtKQorI2lmIFVTRShMSUJXRUJSVEMpCitzdGF0aWMgUmVmUHRyPExpYldl
YlJUQ0F1ZGlvTW9kdWxlPiBhdWRpb01vZHVsZUZyb21Tb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJj
ZSYgc291cmNlKQogewotICAgIGF1dG8gcmVuZGVyZXIgPSBBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlcjo6Y3JlYXRlKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKKyAgICBpZiAoIWlzPFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZT4oc291cmNlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgcmV0dXJuIGRvd25jYXN0PFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZT4oc291cmNlKS5hdWRpb01vZHVsZSgpOworfQorI2VuZGlmCisK
K3N0ZDo6dW5pcXVlX3B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcj4gQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVN0cmVhbTo6Y3JlYXRlUmVuZGVyZXIoQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbSYgc3RyZWFtKQorewogICAgIGF1dG8mIHRyYWNrID0gc3RyZWFtLm1fc3RyZWFtVHJh
Y2suZ2V0KCk7Ci0gICAgcmVuZGVyZXItPnNldExvZ2dlcih0cmFjay5sb2dnZXIoKSwgdHJhY2su
bG9nSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVy
ZXI6OmNyZWF0ZShBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcjo6SW5pdCB7CisgICAgICAg
IFtzdHJlYW0gPSBXZWFrUHRyIHsgc3RyZWFtIH1dIHsKKyAgICAgICAgICAgIGlmIChzdHJlYW0p
CisgICAgICAgICAgICAgICAgc3RyZWFtLT5jcmVhdGVOZXdSZW5kZXJlcigpOworICAgICAgICB9
CisjaWYgVVNFKExJQldFQlJUQykKKyAgICAgICAgLCBhdWRpb01vZHVsZUZyb21Tb3VyY2Uoc3Ry
ZWFtLm1fYXVkaW9Tb3VyY2UuZ2V0KCkpCisjZW5kaWYKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKKyAgICAgICAgLCB0cmFjay5sb2dnZXIoKQorICAgICAgICAsIHRyYWNrLmxvZ0lkZW50aWZp
ZXIoKQogI2VuZGlmCi0gICAgcmVuZGVyZXItPnNldENyYXNoQ2FsbGJhY2soW3N0cmVhbSA9IFdl
YWtQdHIgeyBzdHJlYW0gfV0gewotICAgICAgICBpZiAoc3RyZWFtKQotICAgICAgICAgICAgc3Ry
ZWFtLT5jcmVhdGVOZXdSZW5kZXJlcigpOwogICAgIH0pOwotICAgIHJldHVybiByZW5kZXJlcjsK
IH0KIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtOjpjbGVhcigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
QXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcAppbmRleCA0ODM0ZTdmMDdjZTcwOTdkMDU2ZGQ2
NDk1OWIzNzZkZmQwYTRiYTY1Li4xMTljMzA1MDlmNDkxNDUwMDQzMTU0MWU4Mjc1MGE4OWMwY2M2
NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpZiBVU0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9Gb3Jt
YXQuaCIKKyNpbmNsdWRlICJMaWJXZWJSVENBdWRpb01vZHVsZS5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODAsNiArODEsMTIgQEAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U6OnNl
dHRpbmdzKCkKICAgICByZXR1cm4gbV9jdXJyZW50U2V0dGluZ3M7CiB9CiAKK3ZvaWQgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlOjpzZXRBdWRpb01vZHVsZShSZWZQdHI8TGliV2ViUlRDQXVk
aW9Nb2R1bGU+JiYgYXVkaW9Nb2R1bGUpCit7CisgICAgQVNTRVJUKCFtX2F1ZGlvTW9kdWxlKTsK
KyAgICBtX2F1ZGlvTW9kdWxlID0gV1RGTW92ZShhdWRpb01vZHVsZSk7Cit9CisKIH0KIAogI2Vu
ZGlmIC8vIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCmlu
ZGV4IGExOGZjMjE2MDhjMWNkNTk2YTU0NDU1MDMyOGI4MDUyMTNiOGE0ZjAuLmE4NWNlYjEyYzRl
YmExZmI2ODU4Mzg4M2Q1Y2I2MmM5NzBhZWY4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdBdWRp
b1NvdXJjZS5oCkBAIC00NSw2ICs0NSw4IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIExpYldlYlJUQ0F1ZGlvTW9kdWxlOworCiBj
bGFzcyBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UKICAgICA6IHB1YmxpYyBSZWFsdGltZU1l
ZGlhU291cmNlCiAgICAgLCBwcml2YXRlIHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UK
QEAgLTUzLDYgKzU1LDkgQEAgY2xhc3MgUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlCiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2U+IGNyZWF0ZShy
dGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpBdWRpb1RyYWNrSW50ZXJmYWNlPiYmLCBTdHJpbmcm
Jik7CiAKKyAgICB2b2lkIHNldEF1ZGlvTW9kdWxlKFJlZlB0cjxMaWJXZWJSVENBdWRpb01vZHVs
ZT4mJik7CisgICAgTGliV2ViUlRDQXVkaW9Nb2R1bGUqIGF1ZGlvTW9kdWxlKCkgeyByZXR1cm4g
bV9hdWRpb01vZHVsZS5nZXQoKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgUmVhbHRpbWVJbmNvbWlu
Z0F1ZGlvU291cmNlKHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OkF1ZGlvVHJhY2tJbnRlcmZh
Y2U+JiYsIFN0cmluZyYmKTsKICAgICB+UmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlKCk7CkBA
IC03OSw2ICs4NCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWFsdGltZU1lZGlhU291cmNlU2V0dGlu
Z3MgbV9jdXJyZW50U2V0dGluZ3M7CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVk
aW9UcmFja0ludGVyZmFjZT4gbV9hdWRpb1RyYWNrOworICAgIFJlZlB0cjxMaWJXZWJSVENBdWRp
b01vZHVsZT4gbV9hdWRpb01vZHVsZTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IG11dGFibGUgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCmluZGV4IDk2ODNm
NmMyMjU4ZDNhMWY2MjFlMzE5NzUwZGZmYzUzYTljMzA5NTMuLjA1MGU4OTMzNjlhY2YyMjZmN2U0
MmUzZmE0YjM0YjkyNDk2ZjFiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuY3BwCkBAIC0zNiw4ICszNiw5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYTo6QXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYSgpCi0gICAgOiBtX3Jlc2V0T2JzZXJ2ZXIo
W3RoaXNdIHsgcmVzZXQoKTsgfSkKK0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6
OkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EoSW5pdCYmIGluaXQpCisgICAgOiBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlcihXVEZNb3ZlKGluaXQpKQorICAgICwgbV9yZXNl
dE9ic2VydmVyKFt0aGlzXSB7IHJlc2V0KCk7IH0pCiB7CiB9CiAKQEAgLTU5LDEyICs2MCwxOSBA
QCB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnN0YXJ0KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYgogICAgIH0pOwogfQogCitCYXNlQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJVbml0JiBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29h
OjpyZW5kZXJlclVuaXQoKQoreworICAgIGlmIChhdXRvKiBhdWRpb01vZHVsZSA9IHRoaXMtPmF1
ZGlvTW9kdWxlKCkpCisgICAgICAgIHJldHVybiBhdWRpb01vZHVsZS0+aW5jb21pbmdBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQoKTsKKyAgICByZXR1cm4gQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0OjpzaW5nbGV0b24oKTsKK30KKwogdm9pZCBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlckNvY29hOjpzdG9wKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCiAgICAgaWYgKG1fcmVnaXN0ZXJlZERhdGFTb3VyY2UpCi0gICAgICAgIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2luZ2xldG9uKCkucmVtb3ZlU291cmNlKCptX3Jl
Z2lzdGVyZWREYXRhU291cmNlKTsKKyAgICAgICAgcmVuZGVyZXJVbml0KCkucmVtb3ZlU291cmNl
KCptX3JlZ2lzdGVyZWREYXRhU291cmNlKTsKIH0KIAogdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlckNvY29hOjpjbGVhcigpCkBAIC05NSw3ICsxMDMsNyBAQCB2b2lkIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2E6OnJlc2V0KCkKIHZvaWQgQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJDb2NvYTo6c2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJiBk
ZXZpY2VJZCkKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNyZWF0ZSBhIHVuaXQgZm9yIG91
cnNlbHZlcyBoZXJlIG9yIHVzZSB0aGUgZGVmYXVsdCB1bml0IGlmIGRldmljZUlkIGlzIG1hdGNo
aW5nLgotICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2luZ2xldG9uKCku
c2V0QXVkaW9PdXRwdXREZXZpY2UoZGV2aWNlSWQpOworICAgIHJlbmRlcmVyVW5pdCgpLnNldEF1
ZGlvT3V0cHV0RGV2aWNlKGRldmljZUlkKTsKICAgICBtX3Nob3VsZFJlY3JlYXRlRGF0YVNvdXJj
ZSA9IHRydWU7CiB9CiAKQEAgLTEwNCw3ICsxMTIsNyBAQCB2b2lkIEF1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyQ29jb2E6OnNldFJlZ2lzdGVyZWREYXRhU291cmNlKFJlZlB0cjxBdWRpb1Nh
bQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAobV9yZWdpc3RlcmVkRGF0
YVNvdXJjZSkKLSAgICAgICAgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzaW5n
bGV0b24oKS5yZW1vdmVTb3VyY2UoKm1fcmVnaXN0ZXJlZERhdGFTb3VyY2UpOworICAgICAgICBy
ZW5kZXJlclVuaXQoKS5yZW1vdmVTb3VyY2UoKm1fcmVnaXN0ZXJlZERhdGFTb3VyY2UpOwogCiAg
ICAgaWYgKCFtX291dHB1dERlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0xMTUsOCAr
MTIzLDggQEAgdm9pZCBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hOjpzZXRSZWdp
c3RlcmVkRGF0YVNvdXJjZShSZWZQdHI8QXVkaW9TYW0KIAogICAgIG1fcmVnaXN0ZXJlZERhdGFT
b3VyY2UtPnNldExvZ2dlcihsb2dnZXIoKSwgbG9nSWRlbnRpZmllcigpKTsKICAgICBtX3JlZ2lz
dGVyZWREYXRhU291cmNlLT5zZXRWb2x1bWUodm9sdW1lKCkpOwotICAgIEF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyVW5pdDo6c2luZ2xldG9uKCkuYWRkUmVzZXRPYnNlcnZlcihtX3Jlc2V0
T2JzZXJ2ZXIpOwotICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2luZ2xl
dG9uKCkuYWRkU291cmNlKCptX3JlZ2lzdGVyZWREYXRhU291cmNlKTsKKyAgICByZW5kZXJlclVu
aXQoKS5hZGRSZXNldE9ic2VydmVyKG1fcmVzZXRPYnNlcnZlcik7CisgICAgcmVuZGVyZXJVbml0
KCkuYWRkU291cmNlKCptX3JlZ2lzdGVyZWREYXRhU291cmNlKTsKIH0KIAogc3RhdGljIHVuc2ln
bmVkIHBvbGxTYW1wbGVzQ291bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJDb2NvYS5oCmluZGV4IGZkYTBmZmVhNjQ4MDEyMTg0NmEyMjgwMTVl
MGZmNGZkZTg2NjM1NDkuLjZiZmYwYjA1NzJiZmQ4ODdkMDZlZTQzMzg1N2RmZjBiMTViOTkzODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9BdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNv
Y29hLmgKQEAgLTM5LDEyICszOSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1
ZGlvU2FtcGxlRGF0YVNvdXJjZTsKIGNsYXNzIEF1ZGlvU2FtcGxlQnVmZmVyTGlzdDsKK2NsYXNz
IEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ7CiBjbGFzcyBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb247CiAKIGNsYXNzIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29j
b2EgOiBwdWJsaWMgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXIsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hLCBXZWFrUHRyRmFjdG9y
eUluaXRpYWxpemF0aW9uOjpFYWdlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EoKTsKKyAgICBB
dWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlckNvY29hKEluaXQmJik7CiAgICAgfkF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyQ29jb2EoKTsKIAogcHJpdmF0ZToKQEAgLTU5LDYgKzYwLDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBzZXRSZWdpc3RlcmVkRGF0
YVNvdXJjZShSZWZQdHI8QXVkaW9TYW1wbGVEYXRhU291cmNlPiYmKTsKIAorICAgIEJhc2VBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQmIHJlbmRlcmVyVW5pdCgpOworCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbj4gbV9vdXRwdXREZXNjcmlwdGlv
bjsKICAgICBSZWZQdHI8QXVkaW9TYW1wbGVEYXRhU291cmNlPiBtX2RhdGFTb3VyY2U7IC8vIFVz
ZWQgaW4gYmFja2dyb3VuZCB0aHJlYWQuCiAgICAgUmVmUHRyPEF1ZGlvU2FtcGxlRGF0YVNvdXJj
ZT4gbV9yZWdpc3RlcmVkRGF0YVNvdXJjZTsgLy8gVXNlZCBpbiBtYWluIHRocmVhZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgKaW5kZXgg
NWYzMGI5YmQ0NjJhZDIzYjY3MDEzMjk5NGU0OGQ2ZmY5NWI3MDRkNi4uM2YwOWJlODE4NThhZDkw
ZGUwOGVkYzYxNjA0YTM2MzllZGY4MDQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQXVkaW9N
ZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgKQEAgLTI4LDEwICsyOCw5IEBACiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVySW50ZXJuYWxVbml0LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlICJC
YXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5o
PgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CkBAIC00Myw3ICs0Miw3IEBAIGNsYXNzIEF1ZGlv
U2FtcGxlQnVmZmVyTGlzdDsKIGNsYXNzIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjsKIGNsYXNz
IEF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVySW50ZXJuYWxVbml0OwogCi1jbGFzcyBBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQgeworY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJVbml0IDogcHVibGljIEJhc2VBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
clVuaXQgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBdWRpb01lZGlhU3Ry
ZWFtVHJhY2tSZW5kZXJlclVuaXQmIHNpbmdsZXRvbigpOwogCkBAIC01NiwxNSArNTUsMTQgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVuZGVyKHNpemVfdCBzYW1wbGVDb3Vu
dCwgQXVkaW9CdWZmZXJMaXN0JiwgdWludDY0X3Qgc2FtcGxlVGltZSwgZG91YmxlIGhvc3RUaW1l
LCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyYpOwogICAgIHZvaWQgcmVzZXQoKTsKIAotICAg
IHZvaWQgc2V0QXVkaW9PdXRwdXREZXZpY2UoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIGFk
ZFNvdXJjZShSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiYmKTsKLSAgICB2b2lkIHJlbW92ZVNv
dXJjZShBdWRpb1NhbXBsZURhdGFTb3VyY2UmKTsKLQotICAgIHVzaW5nIFJlc2V0T2JzZXJ2ZXIg
PSBPYnNlcnZlcjx2b2lkKCk+OwotICAgIHZvaWQgYWRkUmVzZXRPYnNlcnZlcihSZXNldE9ic2Vy
dmVyJiBvYnNlcnZlcikgeyBtX3Jlc2V0T2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7IH0KICAgICB2
b2lkIHJldHJpZXZlRm9ybWF0RGVzY3JpcHRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24qKT4mJik7CiAKKyAgICAvLyBCYXNlQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0CisgICAgdm9pZCBzZXRBdWRpb091dHB1dERldmljZShj
b25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIGFkZFNvdXJjZShSZWY8QXVkaW9TYW1wbGVE
YXRhU291cmNlPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZVNvdXJjZShBdWRpb1NhbXBsZURh
dGFTb3VyY2UmKSBmaW5hbDsKKyAgICB2b2lkIGFkZFJlc2V0T2JzZXJ2ZXIoUmVzZXRPYnNlcnZl
ciYgb2JzZXJ2ZXIpIGZpbmFsIHsgbV9yZXNldE9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOyB9CisK
IHByaXZhdGU6CiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvQmFzZUF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY29jb2EvQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFiNzY1M2EwM2Y1NmVlOTBmZTZmZWFlNjcwNjJhNmY4OTg1YzEyNGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9C
YXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgKQEAgLTAsMCArMSw1MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TYW1wbGVEYXRhU291cmNlOworCitjbGFz
cyBCYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5CYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0KCkgPSBkZWZhdWx0
OworCisgICAgdmlydHVhbCB2b2lkIGFkZFNvdXJjZShSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNl
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNvdXJjZShBdWRpb1NhbXBsZURhdGFT
b3VyY2UmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXVkaW9PdXRwdXREZXZpY2UoY29u
c3QgU3RyaW5nJikgPSAwOworCisgICAgdXNpbmcgUmVzZXRPYnNlcnZlciA9IE9ic2VydmVyPHZv
aWQoKT47CisgICAgdmlydHVhbCB2b2lkIGFkZFJlc2V0T2JzZXJ2ZXIoUmVzZXRPYnNlcnZlciYp
ID0gMDsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1
ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9jb2NvYS9JbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRl
cmVyVW5pdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFhNzIzYTQyYmE4ODFhOGQyMTQwMWZhNjE5ZjkyYzU5
M2VlZDYzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL2NvY29hL0luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmNw
cApAQCAtMCwwICsxLDIwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdC5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdC5oIgorI2luY2x1ZGUgIkF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIgorI2lu
Y2x1ZGUgIkxpYldlYlJUQ0F1ZGlvRm9ybWF0LmgiCisjaW5jbHVkZSAiTGliV2ViUlRDQXVkaW9N
b2R1bGUuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViQXVkaW9CdWZmZXJM
aXN0LmgiCisjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24u
aD4KKyNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CisKKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1l
ZGlhU29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbmNvbWluZ0F1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6SW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlclVuaXQoTGliV2ViUlRDQXVkaW9Nb2R1bGUmIGF1ZGlvTW9kdWxlKQorICAgIDogbV9h
dWRpb01vZHVsZShhdWRpb01vZHVsZSkKKyAgICAsIG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUo
IkluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0IiwgV29ya1F1ZXVlOjpR
T1M6OlVzZXJJbml0aWF0ZWQpKQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9s
b2dJZGVudGlmaWVyKExvZ2dlckhlbHBlcjo6dW5pcXVlTG9nSWRlbnRpZmllcigpKQorI2VuZGlm
Cit7Cit9CisKK0luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Ojp+SW5j
b21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQoKQoreworfQorCit2b2lkIElu
Y29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzZXRBdWRpb091dHB1dERl
dmljZShjb25zdCBTdHJpbmcmIGRldmljZUlEKQoreworICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdDo6c2luZ2xldG9uKCkuc2V0QXVkaW9PdXRwdXREZXZpY2UoZGV2aWNlSUQp
OworfQorCit2b2lkIEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Ojph
ZGRSZXNldE9ic2VydmVyKFJlc2V0T2JzZXJ2ZXImIG9ic2VydmVyKQoreworICAgIEF1ZGlvTWVk
aWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6c2luZ2xldG9uKCkuYWRkUmVzZXRPYnNlcnZlcihv
YnNlcnZlcik7Cit9CisKK3ZvaWQgSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJl
clVuaXQ6OmFkZFNvdXJjZShSZWY8QXVkaW9TYW1wbGVEYXRhU291cmNlPiYmIHNvdXJjZSkKK3sK
KyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBzb3VyY2UtPmxvZ2dlcigpLmxvZ0Fsd2F5
cyhMb2dXZWJSVEMsICJJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6
YWRkU291cmNlICIsIHNvdXJjZS0+bG9nSWRlbnRpZmllcigpKTsKKyNlbmRpZgorICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgICAgIGlm
ICghbV9sb2dnZXIpCisgICAgICAgICAgICBtX2xvZ2dlciA9ICZzb3VyY2UtPmxvZ2dlcigpOwor
I2VuZGlmCisKKyAgICBBU1NFUlQoc291cmNlLT5vdXRwdXREZXNjcmlwdGlvbigpKTsKKyAgICBp
ZiAoIXNvdXJjZS0+b3V0cHV0RGVzY3JpcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1
dG8gb3V0cHV0RGVzY3JpcHRpb24gPSAqc291cmNlLT5vdXRwdXREZXNjcmlwdGlvbigpOworCisg
ICAgQVNTRVJUKCFtX3NvdXJjZXMuY29udGFpbnMoc291cmNlLmdldCgpKSk7CisgICAgYm9vbCBz
aG91bGRTdGFydCA9IG1fc291cmNlcy5pc0VtcHR5KCk7CisgICAgbV9zb3VyY2VzLmFkZChXVEZN
b3ZlKHNvdXJjZSkpOworCisgICAgcG9zdFRhc2soW3RoaXMsIG5ld1NvdXJjZXMgPSBjb3B5VG9W
ZWN0b3IobV9zb3VyY2VzKSwgc2hvdWxkU3RhcnQsIG91dHB1dERlc2NyaXB0aW9uXSgpIG11dGFi
bGUgeworICAgICAgICBtX3JlbmRlclNvdXJjZXMgPSBXVEZNb3ZlKG5ld1NvdXJjZXMpOworICAg
ICAgICBpZiAoIXNob3VsZFN0YXJ0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1f
b3V0cHV0U3RyZWFtRGVzY3JpcHRpb24gPSBvdXRwdXREZXNjcmlwdGlvbjsKKyAgICAgICAgbV9h
dWRpb0J1ZmZlckxpc3QgPSBtYWtlVW5pcXVlPFdlYkF1ZGlvQnVmZmVyTGlzdD4obV9vdXRwdXRT
dHJlYW1EZXNjcmlwdGlvbik7CisgICAgICAgIG1fc2FtcGxlQ291bnQgPSBtX291dHB1dFN0cmVh
bURlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAvIDEwMDsKKyAgICAgICAgbV9hdWRpb0J1ZmZlckxp
c3QtPnNldFNhbXBsZUNvdW50KG1fc2FtcGxlQ291bnQpOworICAgICAgICBtX21peGVkU291cmNl
ID0gQXVkaW9TYW1wbGVEYXRhU291cmNlOjpjcmVhdGUobV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlv
bi5zYW1wbGVSYXRlKCkgKiAwLjUsICp0aGlzLCBMaWJXZWJSVENBdWRpb01vZHVsZTo6UG9sbFNh
bXBsZXNDb3VudCArIDEpOworICAgICAgICBtX21peGVkU291cmNlLT5zZXRJbnB1dEZvcm1hdChv
dXRwdXREZXNjcmlwdGlvbik7CisgICAgICAgIG1fbWl4ZWRTb3VyY2UtPnNldE91dHB1dEZvcm1h
dChvdXRwdXREZXNjcmlwdGlvbik7CisgICAgICAgIG1fd3JpdGVDb3VudCA9IDA7CisgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZE1vZHVsZSA9IFJlZiB7IG1fYXVkaW9N
b2R1bGUgfSwgc291cmNlID0gbV9taXhlZFNvdXJjZV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IG1fcmVnaXN0ZXJlZE1peGVkU291cmNlID0gV1RGTW92ZShzb3VyY2UpOworICAgICAgICAgICAg
c3RhcnQoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5jb21pbmdBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnJlbW92ZVNvdXJjZShBdWRpb1NhbXBsZURhdGFT
b3VyY2UmIHNvdXJjZSkKK3sKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBzb3VyY2Uu
bG9nZ2VyKCkubG9nQWx3YXlzKExvZ1dlYlJUQywgIkluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRy
YWNrUmVuZGVyZXJVbml0OjpyZW1vdmVTb3VyY2UgIiwgc291cmNlLmxvZ0lkZW50aWZpZXIoKSk7
CisjZW5kaWYKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgYm9vbCBzaG91bGRT
dG9wID0gIW1fc291cmNlcy5pc0VtcHR5KCk7CisgICAgbV9zb3VyY2VzLnJlbW92ZShzb3VyY2Up
OworICAgIHNob3VsZFN0b3AgJj0gbV9zb3VyY2VzLmlzRW1wdHkoKTsKKworICAgIHBvc3RUYXNr
KFt0aGlzLCBuZXdTb3VyY2VzID0gY29weVRvVmVjdG9yKG1fc291cmNlcyksIHNob3VsZFN0b3Bd
KCkgbXV0YWJsZSB7CisgICAgICAgIG1fcmVuZGVyU291cmNlcyA9IFdURk1vdmUobmV3U291cmNl
cyk7CisgICAgICAgIGlmICghc2hvdWxkU3RvcCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRNb2R1bGUgPSBSZWYgeyBtX2F1
ZGlvTW9kdWxlIH1dIHsKKyAgICAgICAgICAgIHN0b3AoKTsKKyAgICAgICAgfSk7CisgICAgfSk7
CisKK30KKwordm9pZCBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6
c3RhcnQoKQoreworICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkluY29taW5nQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzdGFydCIpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICBBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnNpbmdsZXRvbigp
LmFkZFNvdXJjZSgqbV9yZWdpc3RlcmVkTWl4ZWRTb3VyY2UpOworICAgIG1fYXVkaW9Nb2R1bGUu
c3RhcnRJbmNvbWluZ0F1ZGlvUmVuZGVyaW5nKCk7Cit9CisKK3ZvaWQgSW5jb21pbmdBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6OnN0b3AoKQoreworICAgIFJFTEVBU0VfTE9HKFdl
YlJUQywgIkluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OjpzdG9wIik7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIEF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdDo6c2luZ2xldG9uKCkucmVtb3ZlU291cmNlKCptX3JlZ2lzdGVyZWRNaXhl
ZFNvdXJjZSk7CisgICAgbV9yZWdpc3RlcmVkTWl4ZWRTb3VyY2UgPSBudWxscHRyOworICAgIG1f
YXVkaW9Nb2R1bGUuc3RvcEluY29taW5nQXVkaW9SZW5kZXJpbmcoKTsKK30KKwordm9pZCBJbmNv
bWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDo6cG9zdFRhc2soRnVuY3Rpb248
dm9pZCgpPiYmIGNhbGxiYWNrKQoreworICAgIC8vIFdlIHByb3RlY3QgJ3RoaXMnIGJ5IHRha2lu
ZyBhIHJlZiB0byBpdHMgYXVkaW8gbW9kdWxlLgorICAgIG1fcXVldWUtPmRpc3BhdGNoKFtwcm90
ZWN0ZWRNb2R1bGUgPSBSZWYgeyBtX2F1ZGlvTW9kdWxlIH0sIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgfSk7Cit9CisK
K3ZvaWQgSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQ6Om5ld0F1ZGlv
Q2h1bmtQdXNoZWQoKQoreworICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50
VGhyZWFkU2NvcGUgZGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uczsKKyAgICBwb3N0VGFzayhbdGhp
cywgY3VycmVudEF1ZGlvU2FtcGxlQ291bnQgPSBtX2F1ZGlvTW9kdWxlLmN1cnJlbnRBdWRpb1Nh
bXBsZUNvdW50KCldIHsKKyAgICAgICAgcmVuZGVyQXVkaW9DaHVuayhjdXJyZW50QXVkaW9TYW1w
bGVDb3VudCk7CisgICAgfSk7Cit9CisKK3ZvaWQgSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJh
Y2tSZW5kZXJlclVuaXQ6OnJlbmRlckF1ZGlvQ2h1bmsodWludDY0X3QgY3VycmVudEF1ZGlvU2Ft
cGxlQ291bnQpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICB1aW50NjRf
dCB0aW1lU3RhbXAgPSBjdXJyZW50QXVkaW9TYW1wbGVDb3VudCAqIG1fb3V0cHV0U3RyZWFtRGVz
Y3JpcHRpb24uc2FtcGxlUmF0ZSgpIC8gTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZVJhdGU7
CisKKyAgICAvLyBNaXggYWxsIHNvdXJjZXMuCisgICAgYm9vbCBoYXNDb3BpZWREYXRhID0gZmFs
c2U7CisgICAgZm9yIChhdXRvJiBzb3VyY2UgOiBtX3JlbmRlclNvdXJjZXMpIHsKKyAgICAgICAg
aWYgKHNvdXJjZS0+cHVsbEF2YWlsYWJsZVNhbXBsZUNodW5rKCptX2F1ZGlvQnVmZmVyTGlzdCwg
bV9zYW1wbGVDb3VudCwgdGltZVN0YW1wLCBoYXNDb3BpZWREYXRhID8gQXVkaW9TYW1wbGVEYXRh
U291cmNlOjpNaXggOiBBdWRpb1NhbXBsZURhdGFTb3VyY2U6OkNvcHkpKQorICAgICAgICAgICAg
aGFzQ29waWVkRGF0YSA9IHRydWU7CisgICAgfQorCisgICAgQ01UaW1lIHN0YXJ0VGltZSA9IFBB
TDo6Q01UaW1lTWFrZShtX3dyaXRlQ291bnQsIG1fb3V0cHV0U3RyZWFtRGVzY3JpcHRpb24uc2Ft
cGxlUmF0ZSgpKTsKKyAgICBpZiAoaGFzQ29waWVkRGF0YSkKKyAgICAgICAgbV9taXhlZFNvdXJj
ZS0+cHVzaFNhbXBsZXMoUEFMOjp0b01lZGlhVGltZShzdGFydFRpbWUpLCAqbV9hdWRpb0J1ZmZl
ckxpc3QsIG1fc2FtcGxlQ291bnQpOworICAgIG1fd3JpdGVDb3VudCArPSBtX3NhbXBsZUNvdW50
OworfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitjb25zdCBMb2dnZXImIEluY29taW5n
QXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Ojpsb2dnZXIoKSBjb25zdAoreworICAg
IHJldHVybiAqbV9sb2dnZXI7Cit9CisKK1dURkxvZ0NoYW5uZWwmIEluY29taW5nQXVkaW9NZWRp
YVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0Ojpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gTG9nV2ViUlRDOworfQorCitjb25zdCB2b2lkKiBJbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1U
cmFja1JlbmRlcmVyVW5pdDo6bG9nSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bG9nSWRlbnRpZmllcjsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vY29jb2EvSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tS
ZW5kZXJlclVuaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29h
L0luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTM5ZTVhM2EwMDY1ZDFlMjA5MTlkYjNhMzU2OTZjYTk5ZTcwYWYwYQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2NvY29hL0luY29taW5nQXVk
aW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJCYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0LmgiCisjaW5jbHVkZSAi
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIFdURiB7CitjbGFzcyBXb3JrUXVldWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXQ7CitjbGFz
cyBBdWRpb1NhbXBsZURhdGFTb3VyY2U7CitjbGFzcyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q7Citj
bGFzcyBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CitjbGFzcyBMaWJXZWJSVENBdWRpb01vZHVs
ZTsKK2NsYXNzIFdlYkF1ZGlvQnVmZmVyTGlzdDsKKworY2xhc3MgSW5jb21pbmdBdWRpb01lZGlh
U3RyZWFtVHJhY2tSZW5kZXJlclVuaXQgOiBwdWJsaWMgQmFzZUF1ZGlvTWVkaWFTdHJlYW1UcmFj
a1JlbmRlcmVyVW5pdAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgcHVibGljIExv
Z2dlckhlbHBlcgorI2VuZGlmCit7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgSW5jb21pbmdBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVu
aXQoTGliV2ViUlRDQXVkaW9Nb2R1bGUmKTsKKyAgICB+SW5jb21pbmdBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlclVuaXQoKTsKKworICAgIHZvaWQgbmV3QXVkaW9DaHVua1B1c2hlZCgpOwor
Citwcml2YXRlOgorICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lkIHN0b3AoKTsKKyAgICB2b2lk
IHBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCByZW5kZXJBdWRpb0NodW5r
KHVpbnQ2NF90IGN1cnJlbnRBdWRpb1NhbXBsZUNvdW50KTsKKworICAgIC8vIEJhc2VBdWRpb01l
ZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQKKyAgICB2b2lkIHNldEF1ZGlvT3V0cHV0RGV2aWNl
KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgYWRkUmVzZXRPYnNlcnZlcihSZXNldE9i
c2VydmVyJikgZmluYWw7CisgICAgdm9pZCBhZGRTb3VyY2UoUmVmPEF1ZGlvU2FtcGxlRGF0YVNv
dXJjZT4mJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVTb3VyY2UoQXVkaW9TYW1wbGVEYXRhU291
cmNlJikgZmluYWw7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAvLyBMb2dnZXJI
ZWxwZXIuCisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbDsKKyAgICBjb25z
dCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSW5jb21pbmdBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQiOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9n
Q2hhbm5lbCgpIGNvbnN0IGZpbmFsOworICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBj
b25zdCBmaW5hbDsKKyNlbmRpZgorCisgICAgLy8gTWFpbiB0aHJlYWQgdmFyaWFibGVzLgorICAg
IExpYldlYlJUQ0F1ZGlvTW9kdWxlJiBtX2F1ZGlvTW9kdWxlOworICAgIFJlZjxXVEY6OldvcmtR
dWV1ZT4gbV9xdWV1ZTsKKyAgICBIYXNoU2V0PFJlZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+PiBt
X3NvdXJjZXM7CisgICAgUmVmUHRyPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9yZWdpc3RlcmVk
TWl4ZWRTb3VyY2U7CisKKyAgICAvLyBCYWNrZ3JvdW5kIHRocmVhZCB2YXJpYWJsZXMuCisgICAg
VmVjdG9yPFJlZjxBdWRpb1NhbXBsZURhdGFTb3VyY2U+PiBtX3JlbmRlclNvdXJjZXM7CisgICAg
UmVmUHRyPEF1ZGlvU2FtcGxlRGF0YVNvdXJjZT4gbV9taXhlZFNvdXJjZTsKKyAgICBDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24gbV9vdXRwdXRTdHJlYW1EZXNjcmlwdGlvbjsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQXVkaW9CdWZmZXJMaXN0PiBtX2F1ZGlvQnVmZmVyTGlzdDsKKyAgICBzaXpl
X3QgbV9zYW1wbGVDb3VudCB7IDAgfTsKKyAgICBzaXplX3QgbV93cml0ZUNvdW50IHsgMCB9Owor
CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9s
b2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCit9OworCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0F1ZGlvTW9kdWxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENBdWRpb01vZHVsZS5jcHAKaW5kZXggOThmYjUyYzUyNDJlODA2NGIxNDlkMTE1YTNkYTZh
MDQyMzY3ZTA2Ny4uYTlmOTMyZjM3N2E3MjM5OTdjZjQyNGVmYWQ4YTRjYWI1YzNkYWFhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0F1ZGlvTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUuY3BwCkBAIC0zMiw2ICszMiwx
MCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgog
CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiSW5jb21pbmdBdWRpb01lZGlhU3RyZWFt
VHJhY2tSZW5kZXJlclVuaXQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExp
YldlYlJUQ0F1ZGlvTW9kdWxlOjpMaWJXZWJSVENBdWRpb01vZHVsZSgpCkBAIC00MCw2ICs0NCwx
MCBAQCBMaWJXZWJSVENBdWRpb01vZHVsZTo6TGliV2ViUlRDQXVkaW9Nb2R1bGUoKQogewogfQog
CitMaWJXZWJSVENBdWRpb01vZHVsZTo6fkxpYldlYlJUQ0F1ZGlvTW9kdWxlKCkKK3sKK30KKwog
aW50MzJfdCBMaWJXZWJSVENBdWRpb01vZHVsZTo6UmVnaXN0ZXJBdWRpb0NhbGxiYWNrKHdlYnJ0
Yzo6QXVkaW9UcmFuc3BvcnQqIGF1ZGlvVHJhbnNwb3J0KQogewogICAgIFJFTEVBU0VfTE9HKFdl
YlJUQywgIkxpYldlYlJUQ0F1ZGlvTW9kdWxlOjpSZWdpc3RlckF1ZGlvQ2FsbGJhY2sgJWQiLCAh
IWF1ZGlvVHJhbnNwb3J0KTsKQEAgLTYyLDYgKzcwLDkgQEAgaW50MzJfdCBMaWJXZWJSVENBdWRp
b01vZHVsZTo6U3RhcnRQbGF5b3V0KCkKIAogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6QXVkaW9EZXZpY2VNb2R1
bGU+KHRoaXMpXSB7CiAgICAgICAgIG1fcG9sbGluZ1RpbWUgPSBNb25vdG9uaWNUaW1lOjpub3co
KTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgbV9jdXJyZW50QXVkaW9TYW1wbGVDb3Vu
dCA9IDA7CisjZW5kaWYKICAgICAgICAgcG9sbEF1ZGlvRGF0YSgpOwogICAgIH0pOwogICAgIHJl
dHVybiAwOwpAQCAtMTI5LDkgKzE0MCwyMyBAQCB2b2lkIExpYldlYlJUQ0F1ZGlvTW9kdWxlOjpw
b2xsRnJvbVNvdXJjZSgpCiAgICAgICAgIGludDY0X3QgbnRwVGltZSA9IC0xOwogICAgICAgICBj
aGFyIGRhdGFbTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OnNhbXBsZUJ5dGVTaXplICogY2hhbm5lbHMg
KiBMaWJXZWJSVENBdWRpb0Zvcm1hdDo6Y2h1bmtTYW1wbGVDb3VudF07CiAgICAgICAgIG1fYXVk
aW9UcmFuc3BvcnQtPlB1bGxSZW5kZXJEYXRhKExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVC
eXRlU2l6ZSAqIDgsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlLCBjaGFubmVscywg
TGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmNodW5rU2FtcGxlQ291bnQsIGRhdGEsICZlbGFwc2VkVGlt
ZSwgJm50cFRpbWUpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBpZiAobV9pc1JlbmRl
cmluZ0luY29taW5nQXVkaW8pCisgICAgICAgICAgICBtX2luY29taW5nQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJVbml0LT5uZXdBdWRpb0NodW5rUHVzaGVkKCk7CisgICAgICAgIG1fY3Vy
cmVudEF1ZGlvU2FtcGxlQ291bnQgKz0gTGliV2ViUlRDQXVkaW9Gb3JtYXQ6OmNodW5rU2FtcGxl
Q291bnQ7CisjZW5kaWYKICAgICB9CiB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKK0Jhc2VBdWRp
b01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlclVuaXQmIExpYldlYlJUQ0F1ZGlvTW9kdWxlOjppbmNv
bWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCgpCit7CisgICAgaWYgKCFtX2lu
Y29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0KQorICAgICAgICBtX2luY29t
aW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0ID0gbWFrZVVuaXF1ZTxJbmNvbWlu
Z0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdD4oKnRoaXMpOworICAgIHJldHVybiAq
bV9pbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoTElCV0VCUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0F1ZGlvTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUuaAppbmRleCA2NzBhYzhmYTQ1ZDM1ZDE5
MDAwNmNjYzg0NmRhZDVhODhjYjRmYWZkLi4wODhhYTI1ODRjNmI3NWQzZDZhNTQwMWIyNzExOGMz
MWIxNTUwYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDQXVkaW9Nb2R1bGUuaApAQCAt
MzksMTQgKzM5LDI2IEBAIEFMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0JFR0lOCiBBTExPV19VTlVT
RURfUEFSQU1FVEVSU19FTkQKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQmFzZUF1ZGlv
TWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdDsKK2NsYXNzIEluY29taW5nQXVkaW9NZWRpYVN0
cmVhbVRyYWNrUmVuZGVyZXJVbml0OwogCiAvLyBMaWJXZWJSVENBdWRpb01vZHVsZSBpcyBwdWxs
aW5nIHN0cmVhbWVkIGRhdGEgdG8gZW5zdXJlIGF1ZGlvIGRhdGEgaXMgcGFzc2VkIHRvIHRoZSBh
dWRpbyB0cmFjay4KIGNsYXNzIExpYldlYlJUQ0F1ZGlvTW9kdWxlIDogcHVibGljIHdlYnJ0Yzo6
QXVkaW9EZXZpY2VNb2R1bGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIExpYldlYlJUQ0F1ZGlvTW9kdWxlKCk7CisgICAgfkxpYldlYlJUQ0F1ZGlvTW9kdWxl
KCk7CiAKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFBvbGxTYW1wbGVzQ291bnQgPSAx
OworICAgIHZvaWQgcmVmKCkgeyBBZGRSZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSB7IFJlbGVh
c2UoKTsgfQorCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBzdGFydEluY29taW5nQXVk
aW9SZW5kZXJpbmcoKSB7IG1faXNSZW5kZXJpbmdJbmNvbWluZ0F1ZGlvID0gdHJ1ZTsgfQorICAg
IHZvaWQgc3RvcEluY29taW5nQXVkaW9SZW5kZXJpbmcoKSB7IG1faXNSZW5kZXJpbmdJbmNvbWlu
Z0F1ZGlvID0gZmFsc2U7IH0KKyAgICBCYXNlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJV
bml0JiBpbmNvbWluZ0F1ZGlvTWVkaWFTdHJlYW1UcmFja1JlbmRlcmVyVW5pdCgpOworICAgIHVp
bnQ2NF90IGN1cnJlbnRBdWRpb1NhbXBsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50
QXVkaW9TYW1wbGVDb3VudDsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gVSBzaG91bGROb3RCZUNhbGxlZChVIHZhbHVlKSBjb25zdApAQCAtMTM1LDYgKzE0
NywxMiBAQCBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9wb2xsaW5nVGltZTsKICAgICBU
aW1lciBtX2xvZ1RpbWVyOwogICAgIGludCBtX3RpbWVTcGVudCB7IDAgfTsKKworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIHVpbnQ2NF90IG1fY3VycmVudEF1ZGlvU2FtcGxlQ291bnQgeyAwIH07
CisgICAgYm9vbCBtX2lzUmVuZGVyaW5nSW5jb21pbmdBdWRpbyB7IGZhbHNlIH07CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEluY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0PiBt
X2luY29taW5nQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJVbml0OworI2VuZGlmCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVy
LmNwcAppbmRleCBmZGQ3ODhhMTA2NTU0MmZlNGU3ODBmNmU0OGM4NzE1MjkzYzkwNzY5Li5lOTlh
NWFiZTljYWUzMjMwNWU1YzBiNTE0MTVmNDQ3MDE2MDYwNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENQcm92aWRlci5jcHAKQEAgLTcwLDYgKzcwLDE2IEBAIGJvb2wgTGliV2ViUlRDUHJv
dmlkZXI6OndlYlJUQ0F2YWlsYWJsZSgpCiB9CiAjZW5kaWYKIAorI2lmIFVTRShMSUJXRUJSVEMp
CitMaWJXZWJSVENQcm92aWRlcjo6TGliV2ViUlRDUHJvdmlkZXIoKQoreworfQorI2VuZGlmCisK
K0xpYldlYlJUQ1Byb3ZpZGVyOjp+TGliV2ViUlRDUHJvdmlkZXIoKQoreworfQorCiAjaWYgIVVT
RShMSUJXRUJSVEMpIHx8ICFQTEFURk9STShDT0NPQSkKIHZvaWQgTGliV2ViUlRDUHJvdmlkZXI6
OnJlZ2lzdGVyV2ViS2l0VlA5RGVjb2RlcigpCiB7CkBAIC0yNzEsOSArMjgxLDE3IEBAIHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlKiBMaWJXZWJSVENQcm92aWRlcjo6ZmFj
dG9yeSgpCiAgICAgcmV0dXJuIG1fZmFjdG9yeTsKIH0KIAordm9pZCBMaWJXZWJSVENQcm92aWRl
cjo6Y2xlYXJGYWN0b3J5KCkKK3sKKyAgICBtX2F1ZGlvTW9kdWxlID0gbnVsbHB0cjsKKyAgICBt
X2ZhY3RvcnkgPSBudWxscHRyOworfQorCiBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpQZWVy
Q29ubmVjdGlvbkZhY3RvcnlJbnRlcmZhY2U+IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGVQZWVy
Q29ubmVjdGlvbkZhY3RvcnkocnRjOjpUaHJlYWQqIG5ldHdvcmtUaHJlYWQsIHJ0Yzo6VGhyZWFk
KiBzaWduYWxpbmdUaHJlYWQpCiB7Ci0gICAgYXV0byBhdWRpb01vZHVsZSA9IHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OkF1ZGlvRGV2aWNlTW9kdWxlPihuZXcgcnRjOjpSZWZDb3VudGVkT2Jq
ZWN0PExpYldlYlJUQ0F1ZGlvTW9kdWxlPigpKTsKKyAgICBBU1NFUlQoIW1fYXVkaW9Nb2R1bGUp
OworICAgIGF1dG8gYXVkaW9Nb2R1bGUgPSBydGM6OnNjb3BlZF9yZWZwdHI8TGliV2ViUlRDQXVk
aW9Nb2R1bGU+KG5ldyBydGM6OlJlZkNvdW50ZWRPYmplY3Q8TGliV2ViUlRDQXVkaW9Nb2R1bGU+
KCkpOworICAgIG1fYXVkaW9Nb2R1bGUgPSBhdWRpb01vZHVsZS5nZXQoKTsKIAogICAgIHJldHVy
biB3ZWJydGM6OkNyZWF0ZVBlZXJDb25uZWN0aW9uRmFjdG9yeShuZXR3b3JrVGhyZWFkLCBzaWdu
YWxpbmdUaHJlYWQsIHNpZ25hbGluZ1RocmVhZCwgV1RGTW92ZShhdWRpb01vZHVsZSksIHdlYnJ0
Yzo6Q3JlYXRlQnVpbHRpbkF1ZGlvRW5jb2RlckZhY3RvcnkoKSwgd2VicnRjOjpDcmVhdGVCdWls
dGluQXVkaW9EZWNvZGVyRmFjdG9yeSgpLCBjcmVhdGVFbmNvZGVyRmFjdG9yeSgpLCBjcmVhdGVE
ZWNvZGVyRmFjdG9yeSgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKaW5kZXggNTFiNDlhMGYxMTE1Y2RiYzg0OTQ1YzA0MjE4
M2ZlNmNlMTE2MDdmNS4uZWRlNTNjYTFmOTIzNzdiMjIzYjkxMTExMDA5ZDgxOWNmZDIwYjU2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmgKQEAgLTc5LDcgKzc5LDcgQEAgY2xh
c3MgV0VCQ09SRV9FWFBPUlQgTGliV2ViUlRDUHJvdmlkZXIgewogcHVibGljOgogICAgIHN0YXRp
YyBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+IGNyZWF0ZSgpOwogCi0gICAgdmlydHVhbCB+
TGliV2ViUlRDUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+TGliV2ViUlRDUHJv
dmlkZXIoKTsKIAogICAgIHN0YXRpYyBib29sIHdlYlJUQ0F2YWlsYWJsZSgpOwogICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyV2ViS2l0VlA5RGVjb2RlcigpOwpAQCAtMTAzLDYgKzEwMyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0
aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29ubmVjdGlvbihEb2N1bWVudElkZW50aWZpZXIsIHdl
YnJ0Yzo6UGVlckNvbm5lY3Rpb25PYnNlcnZlciYsIHJ0Yzo6UGFja2V0U29ja2V0RmFjdG9yeSos
IHdlYnJ0Yzo6UGVlckNvbm5lY3Rpb25JbnRlcmZhY2U6OlJUQ0NvbmZpZ3VyYXRpb24mJik7CiAK
ICAgICB3ZWJydGM6OlBlZXJDb25uZWN0aW9uRmFjdG9yeUludGVyZmFjZSogZmFjdG9yeSgpOwor
ICAgIExpYldlYlJUQ0F1ZGlvTW9kdWxlKiBhdWRpb01vZHVsZSgpOwogCiAgICAgLy8gRklYTUU6
IE1ha2UgdGhlc2UgbWV0aG9kcyBub3Qgc3RhdGljLgogICAgIHN0YXRpYyB2b2lkIGNhbGxPbldl
YlJUQ05ldHdvcmtUaHJlYWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKQEAgLTEzNCw3ICsxMzUsNyBA
QCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IHJlY2VpdmVy
Q2FwYWJpbGl0aWVzKGNvbnN0IFN0cmluZyYga2luZCk7CiAgICAgc3RkOjpvcHRpb25hbDxSVENS
dHBDYXBhYmlsaXRpZXM+IHNlbmRlckNhcGFiaWxpdGllcyhjb25zdCBTdHJpbmcmIGtpbmQpOwog
Ci0gICAgdm9pZCBjbGVhckZhY3RvcnkoKSB7IG1fZmFjdG9yeSA9IG51bGxwdHI7IH0KKyAgICB2
b2lkIGNsZWFyRmFjdG9yeSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldExvZ2dpbmdMZXZlbChX
VEZMb2dMZXZlbCk7CiAgICAgdm9pZCBzZXRFbmFibGVXZWJSVENFbmNyeXB0aW9uKGJvb2wpOwpA
QCAtMTUwLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxT
dXNwZW5kYWJsZVNvY2tldEZhY3Rvcnk+IGNyZWF0ZVNvY2tldEZhY3RvcnkoU3RyaW5nJiYgLyog
dXNlckFnZW50ICovLCBib29sIC8qIGlzRmlyc3RQYXJ0eSAqLywgUmVnaXN0cmFibGVEb21haW4m
JikgeyByZXR1cm4gbnVsbHB0cjsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgTGliV2ViUlRDUHJvdmlk
ZXIoKSA9IGRlZmF1bHQ7CisgICAgTGliV2ViUlRDUHJvdmlkZXIoKTsKIAogICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjx3ZWJydGM6OlBlZXJDb25uZWN0aW9uSW50ZXJmYWNlPiBjcmVhdGVQZWVyQ29u
bmVjdGlvbih3ZWJydGM6OlBlZXJDb25uZWN0aW9uT2JzZXJ2ZXImLCBydGM6Ok5ldHdvcmtNYW5h
Z2VyJiwgcnRjOjpQYWNrZXRTb2NrZXRGYWN0b3J5Jiwgd2VicnRjOjpQZWVyQ29ubmVjdGlvbklu
dGVyZmFjZTo6UlRDQ29uZmlndXJhdGlvbiYmLCBzdGQ6OnVuaXF1ZV9wdHI8d2VicnRjOjpBc3lu
Y1Jlc29sdmVyRmFjdG9yeT4mJik7CiAKQEAgLTE3MSw2ICsxNzIsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgLy8gRklYTUU6IFJlbW92ZSBtX3VzZU5ldHdvcmtUaHJlYWRXaXRoU29ja2V0U2VydmVyIG1l
bWJlciB2YXJpYWJsZSBhbmQgbWFrZSBpdCBhIGdsb2JhbC4KICAgICBib29sIG1fdXNlTmV0d29y
a1RocmVhZFdpdGhTb2NrZXRTZXJ2ZXIgeyB0cnVlIH07CiAKKyAgICBSZWZQdHI8TGliV2ViUlRD
QXVkaW9Nb2R1bGU+IG1fYXVkaW9Nb2R1bGU7CiAgICAgcnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0
Yzo6UGVlckNvbm5lY3Rpb25GYWN0b3J5SW50ZXJmYWNlPiBtX2ZhY3Rvcnk7CiAgICAgYm9vbCBt
X2Rpc2FibGVOb25Mb2NhbGhvc3RDb25uZWN0aW9ucyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3N1
cHBvcnRzSDI2NSB7IGZhbHNlIH07CkBAIC0xODcsNCArMTg5LDExIEBAIHByb3RlY3RlZDoKICNl
bmRpZgogfTsKIAorI2lmIFVTRShMSUJXRUJSVEMpCitpbmxpbmUgTGliV2ViUlRDQXVkaW9Nb2R1
bGUqIExpYldlYlJUQ1Byb3ZpZGVyOjphdWRpb01vZHVsZSgpCit7CisgICAgcmV0dXJuIG1fYXVk
aW9Nb2R1bGUuZ2V0KCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHAKaW5kZXgg
ODk0NzljNjI0Zjc5ODgzMTQ1YTA4NmY1N2M1MDQyNGY0YzIzZDM2ZC4uOWFlYTVmMWMwNzJjMDli
ZjA2M2Y0OTk5ZTAzYjIxOWU4NWQ3ZTJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJ
bmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBSZWFs
dGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYTo6T25EYXRhKGNvbnN0IHZvaWQqIGF1ZGlvRGF0
YSwgaW50IGJpdHNQZXIKICAgICAgICAgICAgIG1fbnVtYmVyT2ZGcmFtZXMgPSAwOwogICAgIH0K
IAotICAgIENNVGltZSBzdGFydFRpbWUgPSBQQUw6OkNNVGltZU1ha2UobV9udW1iZXJPZkZyYW1l
cywgc2FtcGxlUmF0ZSk7CisgICAgQ01UaW1lIHN0YXJ0VGltZSA9IFBBTDo6Q01UaW1lTWFrZShh
dWRpb01vZHVsZSgpID8gYXVkaW9Nb2R1bGUoKS0+Y3VycmVudEF1ZGlvU2FtcGxlQ291bnQoKSA6
IG1fbnVtYmVyT2ZGcmFtZXMsIExpYldlYlJUQ0F1ZGlvRm9ybWF0OjpzYW1wbGVSYXRlKTsKICAg
ICBhdXRvIG1lZGlhVGltZSA9IFBBTDo6dG9NZWRpYVRpbWUoc3RhcnRUaW1lKTsKICAgICBtX251
bWJlck9mRnJhbWVzICs9IG51bWJlck9mRnJhbWVzOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>