<?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>237613</bug_id>
          
          <creation_ts>2022-03-08 12:04:48 -0800</creation_ts>
          <short_desc>Rename TextRecognitionUtilities.* to ImageAnalysisUtilities.*</short_desc>
          <delta_ts>2022-03-08 17:18:29 -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>Platform</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>hi</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1849353</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-03-08 12:04:48 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849359</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-08 12:11:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/89982051&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849361</commentid>
    <comment_count>2</comment_count>
      <attachid>454141</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-03-08 12:14:37 -0800</bug_when>
    <thetext>Created attachment 454141
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849369</commentid>
    <comment_count>3</comment_count>
      <attachid>454141</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2022-03-08 12:38:00 -0800</bug_when>
    <thetext>Comment on attachment 454141
Patch

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

&gt; Source/WebKit/Platform/cocoa/ImageAnalysisUtilities.h:2
&gt; + * Copyright (C) 2021 Apple Inc. All rights reserved.

Could update to 2022!

&gt; Source/WebKit/Platform/cocoa/ImageAnalysisUtilities.mm:2
&gt; + * Copyright (C) 2021 Apple Inc. All rights reserved.

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849370</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-03-08 12:38:22 -0800</bug_when>
    <thetext>(In reply to Kate Cheney from comment #3)
&gt; Comment on attachment 454141 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=454141&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Platform/cocoa/ImageAnalysisUtilities.h:2
&gt; &gt; + * Copyright (C) 2021 Apple Inc. All rights reserved.
&gt; 
&gt; Could update to 2022!
&gt; 
&gt; &gt; Source/WebKit/Platform/cocoa/ImageAnalysisUtilities.mm:2
&gt; &gt; + * Copyright (C) 2021 Apple Inc. All rights reserved.
&gt; 
&gt; ditto

Good catch — will do!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849375</commentid>
    <comment_count>5</comment_count>
      <attachid>454146</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-03-08 12:43:15 -0800</bug_when>
    <thetext>Created attachment 454146
For landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849493</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-08 17:18:26 -0800</bug_when>
    <thetext>Committed r291022 (248196@main): &lt;https://commits.webkit.org/248196@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 454146.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454141</attachid>
            <date>2022-03-08 12:14:37 -0800</date>
            <delta_ts>2022-03-08 12:43:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237613-20220308121437.patch</filename>
            <type>text/plain</type>
            <size>33289</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJhY2ZlZDc5YjBjOWIyYmQ1
MGEzN2MxNjExMmQzNWRjMWE3OTdmMzIuLjYyZTFjZWYxZTg2YTVjZGI1N2NjMzdiYzI1ZTk4Yjlj
ZTY1NGIyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjItMDMtMDggIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFRleHRSZWNv
Z25pdGlvblV0aWxpdGllcy4qIHRvIEltYWdlQW5hbHlzaXNVdGlsaXRpZXMuKgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NjEzCisgICAgICAgIHJk
YXI6Ly84OTk4MjA1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbmFtZSBUZXh0UmVjb2duaXRpb25VdGlsaXRpZXMuaCBhbmQgVGV4dFJlY29nbml0
aW9uVXRpbGl0aWVzLm1tIHRvIEltYWdlQW5hbHlzaXNVdGlsaXRpZXMuaCBhbmQKKyAgICAgICAg
SW1hZ2VBbmFseXNpc1V0aWxpdGllcy5tbSwgcmVzcGVjdGl2ZWx5LiBUaGlzIGlzIGJlY2F1c2Ug
dGhpcyBmaWxlIG5vdyBjb250YWlucyBoZWxwZXIgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdAorICAg
ICAgICBzcGVjaWZpYyB0byBqdXN0IHRoZSB0ZXh0IHJlY29nbml0aW9uIGFzcGVjdCBvZiB2aXN1
YWwgaW50ZWxsaWdlbmNlIGZlYXR1cmVzIG9uIENvY29hLCBidXQgcmF0aGVyIGVuY29tcGFzcyBh
CisgICAgICAgIHZhcmlldHkgb2YgaW1hZ2UgYW5hbHlzaXMgaGVscGVycy4KKworICAgICAgICAq
IFBsYXRmb3JtL2NvY29hL0ltYWdlQW5hbHlzaXNVdGlsaXRpZXMuaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLmguCisg
ICAgICAgICogUGxhdGZvcm0vY29jb2EvSW1hZ2VBbmFseXNpc1V0aWxpdGllcy5tbTogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0
aWVzLm1tLgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVJbWFnZUFuYWx5emVyKToKKyAgICAgICAg
KFdlYktpdDo6Y3JlYXRlSW1hZ2VBbmFseXplclJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0Ojpm
bG9hdFF1YWQpOgorICAgICAgICAoV2ViS2l0OjpmbG9hdFF1YWRzKToKKyAgICAgICAgKFdlYktp
dDo6bWFrZVRleHRSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OnRleHRSZWNv
Z25pdGlvbkVuaGFuY2VtZW50c1N5c3RlbUZlYXR1cmVFbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6aW1hZ2VBbmFseXNpc1F1ZXVlU3lzdGVtRmVhdHVyZUVuYWJsZWQpOgorICAgICAgICAoV2Vi
S2l0Ojppc0ltYWdlQW5hbHlzaXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxlZCk6CisgICAgICAg
IChXZWJLaXQ6OmlzTGl2ZVRleHRBdmFpbGFibGVBbmRFbmFibGVkKToKKyAgICAgICAgKiBTaGFy
ZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW06CisgICAgICAgICog
U291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW06CisgICAg
ICAgICgtW1dLUkJTQXNzZXJ0aW9uRGVsZWdhdGUgYXNzZXJ0aW9uOmRpZEludmFsaWRhdGVXaXRo
RXJyb3I6XSk6CisKKyAgICAgICAgRHJpdmUtYnkgZml4OiBhZGRpdGlvbmFsbHkgdHdlYWsgYSBj
b3VwbGUgb2YgcmVsZWFzZSBsb2dnaW5nIGFyZ3VtZW50cyB0aGF0IGFyZSBjdXJyZW50bHkgaW4g
cmV2ZXJzZSBvcmRlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFz
c2lzdGFudC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMu
bW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAg
ICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjItMDMtMDcgIEFkcmlh
biBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBn
ZW5lcmF0ZS1hdXRvbWF0aW9uLWF0b20ucHkgYnJlYWtzIHJlcHJvZHVjaWJsZSBidWlsZHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvSW1hZ2VBbmFseXNpc1V0aWxp
dGllcy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9JbWFnZUFuYWx5c2lzVXRpbGl0
aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDk3NDE2MzEyYjEyYTJiMTEwODdiYmY3MjM0NDdiOTg1ZWI5MzI5
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvSW1hZ2VB
bmFseXNpc1V0aWxpdGllcy5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKKworI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9WaXNpb25LaXRDb3JlU1BJLmg+CisjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJ
U19FTkhBTkNFTUVOVFMpCit1c2luZyBDb2NvYUltYWdlQW5hbHlzaXMgPSBWS0NJbWFnZUFuYWx5
c2lzOwordXNpbmcgQ29jb2FJbWFnZUFuYWx5emVyID0gVktDSW1hZ2VBbmFseXplcjsKK3VzaW5n
IENvY29hSW1hZ2VBbmFseXplclJlcXVlc3QgPSBWS0NJbWFnZUFuYWx5emVyUmVxdWVzdDsKKyNl
bHNlCit1c2luZyBDb2NvYUltYWdlQW5hbHlzaXMgPSBWS0ltYWdlQW5hbHlzaXM7Cit1c2luZyBD
b2NvYUltYWdlQW5hbHl6ZXIgPSBWS0ltYWdlQW5hbHl6ZXI7Cit1c2luZyBDb2NvYUltYWdlQW5h
bHl6ZXJSZXF1ZXN0ID0gVktJbWFnZUFuYWx5emVyUmVxdWVzdDsKKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitzdHJ1Y3QgVGV4dFJlY29nbml0aW9uUmVzdWx0OworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworYm9vbCBpc0xpdmVUZXh0QXZhaWxhYmxlQW5kRW5hYmxlZCgpOworYm9v
bCB0ZXh0UmVjb2duaXRpb25FbmhhbmNlbWVudHNTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpOworYm9v
bCBpbWFnZUFuYWx5c2lzUXVldWVTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpOworYm9vbCBpc0ltYWdl
QW5hbHlzaXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpOworCitXZWJDb3JlOjpUZXh0UmVj
b2duaXRpb25SZXN1bHQgbWFrZVRleHRSZWNvZ25pdGlvblJlc3VsdChDb2NvYUltYWdlQW5hbHlz
aXMgKik7CisKK1JldGFpblB0cjxDb2NvYUltYWdlQW5hbHl6ZXI+IGNyZWF0ZUltYWdlQW5hbHl6
ZXIoKTsKK1JldGFpblB0cjxDb2NvYUltYWdlQW5hbHl6ZXJSZXF1ZXN0PiBjcmVhdGVJbWFnZUFu
YWx5emVyUmVxdWVzdChDR0ltYWdlUmVmLCBWS0FuYWx5c2lzVHlwZXMpOworCisjaWYgRU5BQkxF
KElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKK3ZvaWQgcmVxdWVzdEltYWdlQW5hbHlzaXNX
aXRoSWRlbnRpZmllcihDb2NvYUltYWdlQW5hbHl6ZXIgKiwgY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBDR0ltYWdlUmVmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlRleHRSZWNv
Z25pdGlvblJlc3VsdCYmKT4mJik7Cit2b2lkIHJlcXVlc3RJbWFnZUFuYWx5c2lzTWFya3VwKENH
SW1hZ2VSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ0dJbWFnZVJlZiwgQ0dSZWN0KT4mJik7
CisjZW5kaWYKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9JbWFnZUFuYWx5c2lzVXRpbGl0aWVz
Lm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9JbWFnZUFuYWx5c2lzVXRpbGl0aWVz
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmE4Y2EwZmFlYjI3Mzc0MjhhMjg5NjYyYWZlNmIyMGE0NDJhNmFiNjYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL0ltYWdlQW5h
bHlzaXNVdGlsaXRpZXMubW0KQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIkltYWdlQW5hbHlzaXNVdGlsaXRpZXMuaCIKKworI2lmIEVO
QUJMRShJTUFHRV9BTkFMWVNJUykKKworI2ltcG9ydCAiQ29jb2FJbWFnZS5oIgorI2ltcG9ydCAi
TG9nZ2luZy5oIgorI2ltcG9ydCAiVHJhbnNhY3Rpb25JRC5oIgorI2ltcG9ydCA8V2ViQ29yZS9U
ZXh0UmVjb2duaXRpb25SZXN1bHQuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvRmVhdHVyZUZs
YWdzU1BJLmg+CisjaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+CisKKyNpbXBvcnQgPHBhbC9jb2Nv
YS9WaXNpb25LaXRDb3JlU29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworUmV0YWluUHRyPENvY29hSW1hZ2VBbmFseXplcj4gY3JlYXRl
SW1hZ2VBbmFseXplcigpCit7CisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5U
UykKKyAgICByZXR1cm4gYWRvcHROUyhbUEFMOjphbGxvY1ZLQ0ltYWdlQW5hbHl6ZXJJbnN0YW5j
ZSgpIGluaXRdKTsKKyNlbHNlCisgICAgcmV0dXJuIGFkb3B0TlMoW1BBTDo6YWxsb2NWS0ltYWdl
QW5hbHl6ZXJJbnN0YW5jZSgpIGluaXRdKTsKKyNlbmRpZgorfQorCitSZXRhaW5QdHI8Q29jb2FJ
bWFnZUFuYWx5emVyUmVxdWVzdD4gY3JlYXRlSW1hZ2VBbmFseXplclJlcXVlc3QoQ0dJbWFnZVJl
ZiBpbWFnZSwgVktBbmFseXNpc1R5cGVzIHR5cGVzKQoreworI2lmIEVOQUJMRShJTUFHRV9BTkFM
WVNJU19FTkhBTkNFTUVOVFMpCisgICAgcmV0dXJuIGFkb3B0TlMoWyhQQUw6OmFsbG9jVktDSW1h
Z2VBbmFseXplclJlcXVlc3RJbnN0YW5jZSgpKSBpbml0V2l0aENHSW1hZ2U6aW1hZ2Ugb3JpZW50
YXRpb246VktJbWFnZU9yaWVudGF0aW9uVXAgcmVxdWVzdFR5cGU6dHlwZXNdKTsKKyNlbHNlCisg
ICAgcmV0dXJuIGFkb3B0TlMoW1BBTDo6YWxsb2NWS0ltYWdlQW5hbHl6ZXJSZXF1ZXN0SW5zdGFu
Y2UoKSBpbml0V2l0aENHSW1hZ2U6aW1hZ2Ugb3JpZW50YXRpb246VktJbWFnZU9yaWVudGF0aW9u
VXAgcmVxdWVzdFR5cGU6dHlwZXNdKTsKKyNlbmRpZgorfQorCitzdGF0aWMgRmxvYXRRdWFkIGZs
b2F0UXVhZChWS1F1YWQgKnF1YWQpCit7CisgICAgcmV0dXJuIHsgcXVhZC50b3BMZWZ0LCBxdWFk
LnRvcFJpZ2h0LCBxdWFkLmJvdHRvbVJpZ2h0LCBxdWFkLmJvdHRvbUxlZnQgfTsKK30KKworc3Rh
dGljIFZlY3RvcjxGbG9hdFF1YWQ+IGZsb2F0UXVhZHMoTlNBcnJheTxWS1F1YWQgKj4gKnZrUXVh
ZHMpCit7CisgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CisgICAgcXVhZHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eSh2a1F1YWRzLmNvdW50KTsKKyAgICBmb3IgKFZLUXVhZCAqdmtRdWFkIGlu
IHZrUXVhZHMpCisgICAgICAgIHF1YWRzLnVuY2hlY2tlZEFwcGVuZChmbG9hdFF1YWQodmtRdWFk
KSk7CisgICAgcmV0dXJuIHF1YWRzOworfQorCitUZXh0UmVjb2duaXRpb25SZXN1bHQgbWFrZVRl
eHRSZWNvZ25pdGlvblJlc3VsdChDb2NvYUltYWdlQW5hbHlzaXMgKmFuYWx5c2lzKQoreworICAg
IE5TQXJyYXk8VktXS0xpbmVJbmZvICo+ICphbGxMaW5lcyA9IGFuYWx5c2lzLmFsbExpbmVzOwor
ICAgIFRleHRSZWNvZ25pdGlvblJlc3VsdCByZXN1bHQ7CisgICAgcmVzdWx0LmxpbmVzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoYWxsTGluZXMuY291bnQpOworCisgICAgYm9vbCBpc0ZpcnN0TGlu
ZSA9IHRydWU7CisgICAgc2l6ZV90IG5leHRMaW5lSW5kZXggPSAxOworICAgIGZvciAoVktXS0xp
bmVJbmZvICpsaW5lIGluIGFsbExpbmVzKSB7CisgICAgICAgIFZlY3RvcjxUZXh0UmVjb2duaXRp
b25Xb3JkRGF0YT4gY2hpbGRyZW47CisgICAgICAgIE5TQXJyYXk8VktXS1RleHRJbmZvICo+ICp2
a0NoaWxkcmVuID0gbGluZS5jaGlsZHJlbjsKKyAgICAgICAgY2hpbGRyZW4ucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSh2a0NoaWxkcmVuLmNvdW50KTsKKworICAgICAgICBTdHJpbmcgbGluZVRleHQg
PSBsaW5lLnN0cmluZzsKKyAgICAgICAgdW5zaWduZWQgc2VhcmNoTG9jYXRpb24gPSAwOworICAg
ICAgICBmb3IgKFZLV0tUZXh0SW5mbyAqY2hpbGQgaW4gdmtDaGlsZHJlbikgeworICAgICAgICAg
ICAgaWYgKHNlYXJjaExvY2F0aW9uID49IGxpbmVUZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN0cmluZyBjaGlsZFRleHQgPSBjaGlsZC5zdHJp
bmc7CisgICAgICAgICAgICBhdXRvIG1hdGNoTG9jYXRpb24gPSBsaW5lVGV4dC5maW5kKGNoaWxk
VGV4dCwgc2VhcmNoTG9jYXRpb24pOworICAgICAgICAgICAgaWYgKG1hdGNoTG9jYXRpb24gPT0g
bm90Rm91bmQpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYm9vbCBo
YXNMZWFkaW5nV2hpdGVzcGFjZSA9IChbJl0geworICAgICAgICAgICAgICAgIGlmIChtYXRjaExv
Y2F0aW9uID09IHNlYXJjaExvY2F0aW9uKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWlz
Rmlyc3RMaW5lICYmICFzZWFyY2hMb2NhdGlvbjsKKworICAgICAgICAgICAgICAgIGF1dG8gdGV4
dEJlZm9yZU1hdGNoID0gbGluZVRleHQuc3Vic3RyaW5nKHNlYXJjaExvY2F0aW9uLCBtYXRjaExv
Y2F0aW9uIC0gc2VhcmNoTG9jYXRpb24pOworICAgICAgICAgICAgICAgIHJldHVybiAhdGV4dEJl
Zm9yZU1hdGNoLmlzRW1wdHkoKSAmJiBpc1NwYWNlT3JOZXdsaW5lKHRleHRCZWZvcmVNYXRjaFsw
XSk7CisgICAgICAgICAgICB9KSgpOworCisgICAgICAgICAgICBzZWFyY2hMb2NhdGlvbiA9IG1h
dGNoTG9jYXRpb24gKyBjaGlsZFRleHQubGVuZ3RoKCk7CisgICAgICAgICAgICBjaGlsZHJlbi51
bmNoZWNrZWRBcHBlbmQoeyBXVEZNb3ZlKGNoaWxkVGV4dCksIGZsb2F0UXVhZChjaGlsZC5xdWFk
KSwgaGFzTGVhZGluZ1doaXRlc3BhY2UgfSk7CisgICAgICAgIH0KKyAgICAgICAgVktXS0xpbmVJ
bmZvICpuZXh0TGluZSA9IG5leHRMaW5lSW5kZXggPCBhbGxMaW5lcy5jb3VudCA/IGFsbExpbmVz
W25leHRMaW5lSW5kZXhdIDogbmlsOworICAgICAgICAvLyBUaGUgYHNob3VsZFdyYXBgIHByb3Bl
cnR5IGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhIGxpbmUgc2hvdWxkIHdyYXAsIHJlbGF0aXZl
IHRvIHRoZSBwcmV2aW91cyBsaW5lLgorICAgICAgICBib29sIGhhc1RyYWlsaW5nTmV3bGluZSA9
IG5leHRMaW5lICYmICghW25leHRMaW5lIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hv
dWxkV3JhcCldIHx8ICFbbmV4dExpbmUgc2hvdWxkV3JhcF0pOworICAgICAgICByZXN1bHQubGlu
ZXMudW5jaGVja2VkQXBwZW5kKHsgZmxvYXRRdWFkKGxpbmUucXVhZCksIFdURk1vdmUoY2hpbGRy
ZW4pLCBoYXNUcmFpbGluZ05ld2xpbmUgfSk7CisgICAgICAgIGlzRmlyc3RMaW5lID0gZmFsc2U7
CisgICAgICAgIG5leHRMaW5lSW5kZXgrKzsKKyAgICB9CisKKyNpZiBFTkFCTEUoREFUQV9ERVRF
Q1RJT04pCisgICAgaWYgKFthbmFseXNpcyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHRl
eHREYXRhRGV0ZWN0b3JzKV0pIHsKKyAgICAgICAgYXV0byBkYXRhRGV0ZWN0b3JzID0gUmV0YWlu
UHRyIHsgYW5hbHlzaXMudGV4dERhdGFEZXRlY3RvcnMgfTsKKyAgICAgICAgcmVzdWx0LmRhdGFE
ZXRlY3RvcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbZGF0YURldGVjdG9ycyBjb3VudF0pOwor
ICAgICAgICBmb3IgKFZLV0tEYXRhRGV0ZWN0b3JJbmZvICppbmZvIGluIGRhdGFEZXRlY3RvcnMu
Z2V0KCkpCisgICAgICAgICAgICByZXN1bHQuZGF0YURldGVjdG9ycy51bmNoZWNrZWRBcHBlbmQo
eyBpbmZvLnJlc3VsdCwgZmxvYXRRdWFkcyhpbmZvLmJvdW5kaW5nUXVhZHMpIH0pOworICAgIH0K
KyNlbmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisKKyNpZiBFTkFCTEUoSU1BR0VfQU5B
TFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIGlmIChbYW5hbHlzaXMgaXNLaW5kT2ZDbGFzczpQQUw6
OmdldFZLQ0ltYWdlQW5hbHlzaXNDbGFzcygpXSkKKyAgICAgICAgcmVzdWx0LnBsYXRmb3JtRGF0
YSA9IGFuYWx5c2lzOworI2VuZGlmCisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvSW1hZ2VBbmFs
eXNpc1V0aWxpdGllc0FkZGl0aW9ucy5tbT4KKyNlbHNlCisKK2Jvb2wgdGV4dFJlY29nbml0aW9u
RW5oYW5jZW1lbnRzU3lzdGVtRmVhdHVyZUVuYWJsZWQoKQoreworI2lmIEVOQUJMRShJTUFHRV9B
TkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorfQorCitib29sIGltYWdlQW5hbHlzaXNRdWV1ZVN5c3RlbUZlYXR1
cmVFbmFibGVkKCkKK3sKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQor
ICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwor
Ym9vbCBpc0ltYWdlQW5hbHlzaXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpCit7CisjaWYg
RU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICByZXR1cm4gdHJ1ZTsKKyNl
bHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKKyNlbmRpZgorCitib29sIGlzTGl2
ZVRleHRBdmFpbGFibGVBbmRFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gUEFMOjppc1Zpc2lvbktp
dENvcmVGcmFtZXdvcmtBdmFpbGFibGUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL2NvY29hL1RleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRpb25VdGlsaXRpZXMuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZDk3NDE2MzEyYjEyYTJiMTEwODdiYmY3MjM0NDdiOTg1ZWI5
MzI5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1RleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQotCi0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Zpc2lv
bktpdENvcmVTUEkuaD4KLSNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgotI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgotCi0jaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VN
RU5UUykKLXVzaW5nIENvY29hSW1hZ2VBbmFseXNpcyA9IFZLQ0ltYWdlQW5hbHlzaXM7Ci11c2lu
ZyBDb2NvYUltYWdlQW5hbHl6ZXIgPSBWS0NJbWFnZUFuYWx5emVyOwotdXNpbmcgQ29jb2FJbWFn
ZUFuYWx5emVyUmVxdWVzdCA9IFZLQ0ltYWdlQW5hbHl6ZXJSZXF1ZXN0OwotI2Vsc2UKLXVzaW5n
IENvY29hSW1hZ2VBbmFseXNpcyA9IFZLSW1hZ2VBbmFseXNpczsKLXVzaW5nIENvY29hSW1hZ2VB
bmFseXplciA9IFZLSW1hZ2VBbmFseXplcjsKLXVzaW5nIENvY29hSW1hZ2VBbmFseXplclJlcXVl
c3QgPSBWS0ltYWdlQW5hbHl6ZXJSZXF1ZXN0OwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLXN0cnVjdCBUZXh0UmVjb2duaXRpb25SZXN1bHQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1ib29sIGlzTGl2ZVRleHRBdmFpbGFibGVBbmRFbmFibGVkKCk7Ci1ib29sIHRleHRSZWNv
Z25pdGlvbkVuaGFuY2VtZW50c1N5c3RlbUZlYXR1cmVFbmFibGVkKCk7Ci1ib29sIGltYWdlQW5h
bHlzaXNRdWV1ZVN5c3RlbUZlYXR1cmVFbmFibGVkKCk7Ci1ib29sIGlzSW1hZ2VBbmFseXNpc01h
cmt1cFN5c3RlbUZlYXR1cmVFbmFibGVkKCk7Ci0KLVdlYkNvcmU6OlRleHRSZWNvZ25pdGlvblJl
c3VsdCBtYWtlVGV4dFJlY29nbml0aW9uUmVzdWx0KENvY29hSW1hZ2VBbmFseXNpcyAqKTsKLQot
UmV0YWluUHRyPENvY29hSW1hZ2VBbmFseXplcj4gY3JlYXRlSW1hZ2VBbmFseXplcigpOwotUmV0
YWluUHRyPENvY29hSW1hZ2VBbmFseXplclJlcXVlc3Q+IGNyZWF0ZUltYWdlQW5hbHl6ZXJSZXF1
ZXN0KENHSW1hZ2VSZWYsIFZLQW5hbHlzaXNUeXBlcyk7Ci0KLSNpZiBFTkFCTEUoSU1BR0VfQU5B
TFlTSVNfRU5IQU5DRU1FTlRTKQotdm9pZCByZXF1ZXN0SW1hZ2VBbmFseXNpc1dpdGhJZGVudGlm
aWVyKENvY29hSW1hZ2VBbmFseXplciAqLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIENHSW1h
Z2VSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6VGV4dFJlY29nbml0aW9uUmVz
dWx0JiYpPiYmKTsKLXZvaWQgcmVxdWVzdEltYWdlQW5hbHlzaXNNYXJrdXAoQ0dJbWFnZVJlZiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChDR0ltYWdlUmVmLCBDR1JlY3QpPiYmKTsKLSNlbmRpZgot
Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1RleHRSZWNvZ25pdGlvblV0aWxpdGllcy5tbSBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OGQ4NWExMTVhNDUxYTIxMzZlNmM0MDQxZWFh
MDFhNGQ0MDNmNTlmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0aWVz
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIlRleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oIgotCi0jaWYg
RU5BQkxFKElNQUdFX0FOQUxZU0lTKQotCi0jaW1wb3J0ICJDb2NvYUltYWdlLmgiCi0jaW1wb3J0
ICJMb2dnaW5nLmgiCi0jaW1wb3J0IDxXZWJDb3JlL1RleHRSZWNvZ25pdGlvblJlc3VsdC5oPgot
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9GZWF0dXJlRmxhZ3NTUEkuaD4KLSNpbXBvcnQgPHd0Zi9X
b3JrUXVldWUuaD4KLQotI2ltcG9ydCA8cGFsL2NvY29hL1Zpc2lvbktpdENvcmVTb2Z0TGluay5o
PgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZXRh
aW5QdHI8Q29jb2FJbWFnZUFuYWx5emVyPiBjcmVhdGVJbWFnZUFuYWx5emVyKCkKLXsKLSNpZiBF
TkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQotICAgIHJldHVybiBhZG9wdE5TKFtQ
QUw6OmFsbG9jVktDSW1hZ2VBbmFseXplckluc3RhbmNlKCkgaW5pdF0pOwotI2Vsc2UKLSAgICBy
ZXR1cm4gYWRvcHROUyhbUEFMOjphbGxvY1ZLSW1hZ2VBbmFseXplckluc3RhbmNlKCkgaW5pdF0p
OwotI2VuZGlmCi19Ci0KLVJldGFpblB0cjxDb2NvYUltYWdlQW5hbHl6ZXJSZXF1ZXN0PiBjcmVh
dGVJbWFnZUFuYWx5emVyUmVxdWVzdChDR0ltYWdlUmVmIGltYWdlLCBWS0FuYWx5c2lzVHlwZXMg
dHlwZXMpCi17Ci0jaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKLSAgICBy
ZXR1cm4gYWRvcHROUyhbKFBBTDo6YWxsb2NWS0NJbWFnZUFuYWx5emVyUmVxdWVzdEluc3RhbmNl
KCkpIGluaXRXaXRoQ0dJbWFnZTppbWFnZSBvcmllbnRhdGlvbjpWS0ltYWdlT3JpZW50YXRpb25V
cCByZXF1ZXN0VHlwZTp0eXBlc10pOwotI2Vsc2UKLSAgICByZXR1cm4gYWRvcHROUyhbUEFMOjph
bGxvY1ZLSW1hZ2VBbmFseXplclJlcXVlc3RJbnN0YW5jZSgpIGluaXRXaXRoQ0dJbWFnZTppbWFn
ZSBvcmllbnRhdGlvbjpWS0ltYWdlT3JpZW50YXRpb25VcCByZXF1ZXN0VHlwZTp0eXBlc10pOwot
I2VuZGlmCi19Ci0KLXN0YXRpYyBGbG9hdFF1YWQgZmxvYXRRdWFkKFZLUXVhZCAqcXVhZCkKLXsK
LSAgICByZXR1cm4geyBxdWFkLnRvcExlZnQsIHF1YWQudG9wUmlnaHQsIHF1YWQuYm90dG9tUmln
aHQsIHF1YWQuYm90dG9tTGVmdCB9OwotfQotCi1zdGF0aWMgVmVjdG9yPEZsb2F0UXVhZD4gZmxv
YXRRdWFkcyhOU0FycmF5PFZLUXVhZCAqPiAqdmtRdWFkcykKLXsKLSAgICBWZWN0b3I8RmxvYXRR
dWFkPiBxdWFkczsKLSAgICBxdWFkcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHZrUXVhZHMuY291
bnQpOwotICAgIGZvciAoVktRdWFkICp2a1F1YWQgaW4gdmtRdWFkcykKLSAgICAgICAgcXVhZHMu
dW5jaGVja2VkQXBwZW5kKGZsb2F0UXVhZCh2a1F1YWQpKTsKLSAgICByZXR1cm4gcXVhZHM7Ci19
Ci0KLVRleHRSZWNvZ25pdGlvblJlc3VsdCBtYWtlVGV4dFJlY29nbml0aW9uUmVzdWx0KENvY29h
SW1hZ2VBbmFseXNpcyAqYW5hbHlzaXMpCi17Ci0gICAgTlNBcnJheTxWS1dLTGluZUluZm8gKj4g
KmFsbExpbmVzID0gYW5hbHlzaXMuYWxsTGluZXM7Ci0gICAgVGV4dFJlY29nbml0aW9uUmVzdWx0
IHJlc3VsdDsKLSAgICByZXN1bHQubGluZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhbGxMaW5l
cy5jb3VudCk7Ci0KLSAgICBib29sIGlzRmlyc3RMaW5lID0gdHJ1ZTsKLSAgICBzaXplX3QgbmV4
dExpbmVJbmRleCA9IDE7Ci0gICAgZm9yIChWS1dLTGluZUluZm8gKmxpbmUgaW4gYWxsTGluZXMp
IHsKLSAgICAgICAgVmVjdG9yPFRleHRSZWNvZ25pdGlvbldvcmREYXRhPiBjaGlsZHJlbjsKLSAg
ICAgICAgTlNBcnJheTxWS1dLVGV4dEluZm8gKj4gKnZrQ2hpbGRyZW4gPSBsaW5lLmNoaWxkcmVu
OwotICAgICAgICBjaGlsZHJlbi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHZrQ2hpbGRyZW4uY291
bnQpOwotCi0gICAgICAgIFN0cmluZyBsaW5lVGV4dCA9IGxpbmUuc3RyaW5nOwotICAgICAgICB1
bnNpZ25lZCBzZWFyY2hMb2NhdGlvbiA9IDA7Ci0gICAgICAgIGZvciAoVktXS1RleHRJbmZvICpj
aGlsZCBpbiB2a0NoaWxkcmVuKSB7Ci0gICAgICAgICAgICBpZiAoc2VhcmNoTG9jYXRpb24gPj0g
bGluZVRleHQubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgU3RyaW5nIGNoaWxkVGV4dCA9IGNoaWxkLnN0cmluZzsKLSAgICAgICAgICAgIGF1dG8gbWF0
Y2hMb2NhdGlvbiA9IGxpbmVUZXh0LmZpbmQoY2hpbGRUZXh0LCBzZWFyY2hMb2NhdGlvbik7Ci0g
ICAgICAgICAgICBpZiAobWF0Y2hMb2NhdGlvbiA9PSBub3RGb3VuZCkgewotICAgICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sIGhhc0xlYWRpbmdXaGl0ZXNwYWNlID0gKFsm
XSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1hdGNoTG9jYXRpb24gPT0gc2VhcmNoTG9jYXRpb24p
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAhaXNGaXJzdExpbmUgJiYgIXNlYXJjaExvY2F0
aW9uOwotCi0gICAgICAgICAgICAgICAgYXV0byB0ZXh0QmVmb3JlTWF0Y2ggPSBsaW5lVGV4dC5z
dWJzdHJpbmcoc2VhcmNoTG9jYXRpb24sIG1hdGNoTG9jYXRpb24gLSBzZWFyY2hMb2NhdGlvbik7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuICF0ZXh0QmVmb3JlTWF0Y2guaXNFbXB0eSgpICYmIGlz
U3BhY2VPck5ld2xpbmUodGV4dEJlZm9yZU1hdGNoWzBdKTsKLSAgICAgICAgICAgIH0pKCk7Ci0K
LSAgICAgICAgICAgIHNlYXJjaExvY2F0aW9uID0gbWF0Y2hMb2NhdGlvbiArIGNoaWxkVGV4dC5s
ZW5ndGgoKTsKLSAgICAgICAgICAgIGNoaWxkcmVuLnVuY2hlY2tlZEFwcGVuZCh7IFdURk1vdmUo
Y2hpbGRUZXh0KSwgZmxvYXRRdWFkKGNoaWxkLnF1YWQpLCBoYXNMZWFkaW5nV2hpdGVzcGFjZSB9
KTsKLSAgICAgICAgfQotICAgICAgICBWS1dLTGluZUluZm8gKm5leHRMaW5lID0gbmV4dExpbmVJ
bmRleCA8IGFsbExpbmVzLmNvdW50ID8gYWxsTGluZXNbbmV4dExpbmVJbmRleF0gOiBuaWw7Ci0g
ICAgICAgIC8vIFRoZSBgc2hvdWxkV3JhcGAgcHJvcGVydHkgaW5kaWNhdGVzIHdoZXRoZXIgb3Ig
bm90IGEgbGluZSBzaG91bGQgd3JhcCwgcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIGxpbmUuCi0g
ICAgICAgIGJvb2wgaGFzVHJhaWxpbmdOZXdsaW5lID0gbmV4dExpbmUgJiYgKCFbbmV4dExpbmUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzaG91bGRXcmFwKV0gfHwgIVtuZXh0TGluZSBz
aG91bGRXcmFwXSk7Ci0gICAgICAgIHJlc3VsdC5saW5lcy51bmNoZWNrZWRBcHBlbmQoeyBmbG9h
dFF1YWQobGluZS5xdWFkKSwgV1RGTW92ZShjaGlsZHJlbiksIGhhc1RyYWlsaW5nTmV3bGluZSB9
KTsKLSAgICAgICAgaXNGaXJzdExpbmUgPSBmYWxzZTsKLSAgICAgICAgbmV4dExpbmVJbmRleCsr
OwotICAgIH0KLQotI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKLSAgICBpZiAoW2FuYWx5c2lz
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IodGV4dERhdGFEZXRlY3RvcnMpXSkgewotICAg
ICAgICBhdXRvIGRhdGFEZXRlY3RvcnMgPSBSZXRhaW5QdHIgeyBhbmFseXNpcy50ZXh0RGF0YURl
dGVjdG9ycyB9OwotICAgICAgICByZXN1bHQuZGF0YURldGVjdG9ycy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KFtkYXRhRGV0ZWN0b3JzIGNvdW50XSk7Ci0gICAgICAgIGZvciAoVktXS0RhdGFEZXRl
Y3RvckluZm8gKmluZm8gaW4gZGF0YURldGVjdG9ycy5nZXQoKSkKLSAgICAgICAgICAgIHJlc3Vs
dC5kYXRhRGV0ZWN0b3JzLnVuY2hlY2tlZEFwcGVuZCh7IGluZm8ucmVzdWx0LCBmbG9hdFF1YWRz
KGluZm8uYm91bmRpbmdRdWFkcykgfSk7Ci0gICAgfQotI2VuZGlmIC8vIEVOQUJMRShEQVRBX0RF
VEVDVElPTikKLQotI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi0gICAg
aWYgKFthbmFseXNpcyBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0VktDSW1hZ2VBbmFseXNpc0NsYXNz
KCldKQotICAgICAgICByZXN1bHQucGxhdGZvcm1EYXRhID0gYW5hbHlzaXM7Ci0jZW5kaWYKLQot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2lu
Y2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9UZXh0UmVjb2duaXRpb25VdGlsaXRpZXNBZGRpdGlvbnMu
bW0+Ci0jZWxzZQotCi1ib29sIHRleHRSZWNvZ25pdGlvbkVuaGFuY2VtZW50c1N5c3RlbUZlYXR1
cmVFbmFibGVkKCkKLXsKLSNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQot
ICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQot
Ym9vbCBpbWFnZUFuYWx5c2lzUXVldWVTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpCi17Ci0jaWYgRU5B
QkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNl
Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLWJvb2wgaXNJbWFnZUFuYWx5c2lzTWFy
a3VwU3lzdGVtRmVhdHVyZUVuYWJsZWQoKQotewotI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19F
TkhBTkNFTUVOVFMpCi0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsK
LSNlbmRpZgotfQotCi0jZW5kaWYKLQotYm9vbCBpc0xpdmVUZXh0QXZhaWxhYmxlQW5kRW5hYmxl
ZCgpCi17Ci0gICAgcmV0dXJuIFBBTDo6aXNWaXNpb25LaXRDb3JlRnJhbWV3b3JrQXZhaWxhYmxl
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKElNQUdF
X0FOQUxZU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViUHJl
ZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNDb2NvYS5tbQppbmRleCA4MTk3YjcyNDhkMjJl
MzRlYWM2NDBlOGQ5NDE0NWJjMzkxMDFiYjUwLi41NmZjMDVlNjUzZTNiZDAwMTRhYzk5MmI4YjBj
MjM3YjkxMDAxY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJQ
cmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNDb2NvYS5tbQpAQCAtMjgsNyArMjgs
NyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAKLSNpbXBvcnQgIlRleHRSZWNvZ25pdGlvblV0
aWxpdGllcy5oIgorI2ltcG9ydCAiSW1hZ2VBbmFseXNpc1V0aWxpdGllcy5oIgogI2ltcG9ydCA8
Rm91bmRhdGlvbi9OU0J1bmRsZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9GZWF0dXJlRmxh
Z3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApp
bmRleCAwMTQzODRmOGU1OGM1Y2VkZDA4MTRjZDNmNDJlYjk2NDIzZDYzZjM0Li4wMWJlOGQ3ZGFk
OWI2M2I3YjdiNTM3MjA1YTU5Yzc1NTBjMjI2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBA
IC04NCwxMSArODQsMTEgQEAgUGxhdGZvcm0vY2xhc3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcAogUGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAKIAogUGxhdGZvcm0vY29jb2EvQ29jb2FJbWFn
ZS5tbQorUGxhdGZvcm0vY29jb2EvSW1hZ2VBbmFseXNpc1V0aWxpdGllcy5tbQogUGxhdGZvcm0v
Y29jb2EvTGF5ZXJIb3N0aW5nQ29udGV4dC5tbQogUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIubW0KIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIubW0KIFBsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcAot
UGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLm1tCiBQbGF0Zm9ybS9jb2Nv
YS9XS0NyYXNoUmVwb3J0ZXIubW0KIFBsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRp
b25EZWxlZ2F0ZS5tbQogUGxhdGZvcm0vY29jb2EvV2ViS2l0QWRkaXRpb25zLm1tIEBuby11bmlm
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggMzlj
NzNhYTIwYjEyOTA0MjJjNDZmNTFlYjA0NDc0YzJkNTcyYmI4ZS4uZjRhNmEzMzkxYzFkMjBjNzRi
ZTI2M2E3MjczZjQ1NjIwYmRiMmUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5oCkBAIC0yNyw5ICsyNyw5IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAK
KyNpbmNsdWRlICJJbWFnZUFuYWx5c2lzVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUERGUGx1Z2lu
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgotI2luY2x1ZGUgIlRl
eHRSZWNvZ25pdGlvblV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldLTGF5b3V0TW9kZS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRE9NUGFzdGVBY2Nlc3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3Vz
RGlyZWN0aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJv
Y2Vzc0Fzc2VydGlvbklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Qcm9jZXNz
QXNzZXJ0aW9uSU9TLm1tCmluZGV4IGViY2Y3YjFkYzhhY2M0YTdhMTFmM2NjOWJhZDA0NDhiOWQy
ZDY5NjMuLmZkODc4OWI4NjhkMjExNGI2YjcwMzlhNjMwZjdmMWRiZjgwZDE1YjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Qcm9jZXNzQXNzZXJ0aW9uSU9TLm1tCkBA
IC0yODAsNyArMjgwLDcgQEAgLSAodm9pZClhc3NlcnRpb25XaWxsSW52YWxpZGF0ZTooUkJTQXNz
ZXJ0aW9uICopYXNzZXJ0aW9uCiAKIC0gKHZvaWQpYXNzZXJ0aW9uOihSQlNBc3NlcnRpb24gKilh
c3NlcnRpb24gZGlkSW52YWxpZGF0ZVdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCiB7Ci0gICAg
UkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdLUkJTQXNzZXJ0aW9uRGVsZWdh
dGU6IGFzc2VydGlvbiB3YXMgaW52YWxpZGF0ZWQsIGVycm9yOiAle3B1YmxpY31AIiwgZXJyb3Is
IHNlbGYpOworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXS1JCU0Fz
c2VydGlvbkRlbGVnYXRlOiBhc3NlcnRpb24gd2FzIGludmFsaWRhdGVkLCBlcnJvcjogJXtwdWJs
aWN9QCIsIHNlbGYsIGVycm9yKTsKIAogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vh
a1NlbGYgPSBXZWFrT2JqQ1B0cjxXS1JCU0Fzc2VydGlvbkRlbGVnYXRlPihzZWxmKV0gewogICAg
ICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KaW5kZXggN2U4
Y2U4NGUyNWNkOGU3NTdmMGU2Y2RkNDViMWMwOGRmZTNmYTBjNS4uM2RjNmFkYWZhODUzMDQ0MDYy
NTBhNTZjMGZmOTFlN2E4OTQxOTA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KQEAgLTI5LDcgKzI5LDcgQEAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgotI2ltcG9y
dCAiVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJJbWFnZUFuYWx5c2lzVXRp
bGl0aWVzLmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV0tBY3Rpb25TaGVldC5o
IgogI2ltcG9ydCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRl
eCA5M2YwOTM3ZTFjYjliODJiOWVlNTE1YTM0ODk2ZjQ1YTdkMmY3NDhhLi41ZDRiMWEwNzZmMjBk
MzVlNGM1NjkzNDBmZDk5ZmIxNDM2MzU3ZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTMyLDYgKzMy
LDcgQEAKICNpbXBvcnQgIkNvY29hSW1hZ2UuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVy
Q2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIkRvY3VtZW50RWRpdGluZ0NvbnRleHQuaCIKKyNpbXBv
cnQgIkltYWdlQW5hbHlzaXNVdGlsaXRpZXMuaCIKICNpbXBvcnQgIklucHV0Vmlld1VwZGF0ZURl
ZmVycmVyLmgiCiAjaW1wb3J0ICJJbnNlcnRUZXh0T3B0aW9ucy5oIgogI2ltcG9ydCAiTG9nZ2lu
Zy5oIgpAQCAtNDUsNyArNDYsNiBAQAogI2ltcG9ydCAiVGV4dENoZWNrZXIuaCIKICNpbXBvcnQg
IlRleHRJbnB1dFNQSS5oIgogI2ltcG9ydCAiVGV4dFJlY29nbml0aW9uVXBkYXRlUmVzdWx0Lmgi
Ci0jaW1wb3J0ICJUZXh0UmVjb2duaXRpb25VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlVJS2l0U1BJ
LmgiCiAjaW1wb3J0ICJVc2VySW50ZXJmYWNlSWRpb20uaCIKICNpbXBvcnQgIldLQWN0aW9uU2hl
ZXRBc3Npc3RhbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJDb250ZXh0TWVudVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YkNvbnRleHRNZW51UHJveHlNYWMubW0KaW5kZXggMTYzZjhhZDRlODA0N2VlMDI4MTczMGY1MTJl
NWVjNDdhMDY1YTdiMS4uZGUzZTYwMTUwODI2OTQ4ZWEwODIyMzIzMjdlM2FjZTVkZWE5YTBmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJv
eHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51
UHJveHlNYWMubW0KQEAgLTMxLDExICszMSwxMSBAQAogI2ltcG9ydCAiQVBJQXR0YWNobWVudC5o
IgogI2ltcG9ydCAiQVBJQ29udGV4dE1lbnVDbGllbnQuaCIKICNpbXBvcnQgIkNvY29hSW1hZ2Uu
aCIKKyNpbXBvcnQgIkltYWdlQW5hbHlzaXNVdGlsaXRpZXMuaCIKICNpbXBvcnQgIk1lbnVVdGls
aXRpZXMuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsTWFjLmgiCiAjaW1wb3J0ICJTZXJ2aWNl
c0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIlNoYXJlYWJsZUJpdG1hcC5oIgotI2ltcG9ydCAiVGV4
dFJlY29nbml0aW9uVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXS01lbnVJdGVtSWRlbnRpZmllcnNQ
cml2YXRlLmgiCiAjaW1wb3J0ICJXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCIKICNp
bXBvcnQgIldlYkNvbnRleHRNZW51SXRlbS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggZTQwNjRlMzE0NWYyOWNlZTA4OTUzZDJkMTMx
OGFiOGJjZWYwNTZmMy4uMTAyZGZlOThmMmRkYzY2MjU1MDY3ZWMyMzZiYTIxYzUyODI3YTI3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBA
IC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJFZGl0b3JTdGF0ZS5oIgogI2ltcG9ydCAiRm9udElu
Zm8uaCIKICNpbXBvcnQgIkZyYW1lSW5mb0RhdGEuaCIKKyNpbXBvcnQgIkltYWdlQW5hbHlzaXNV
dGlsaXRpZXMuaCIKICNpbXBvcnQgIkluc2VydFRleHRPcHRpb25zLmgiCiAjaW1wb3J0ICJNZW51
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCkBAIC00NCw3
ICs0NSw2IEBACiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVIb3N0LmgiCiAjaW1wb3J0ICJTdHJp
bmdVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRleHRDaGVja2VyLmgiCi0jaW1wb3J0ICJUZXh0UmVj
b2duaXRpb25VdGlsaXRpZXMuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ckludGVybmFsLmgiCiAjaW1wb3J0ICJXS1F1aWNrTG9va1ByZXZpZXdDb250cm9sbGVyLmgiCiAj
aW1wb3J0ICJXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDcyZDMxMjNjM2UyOTBj
NzQyYjk2NTgxZjhlM2I3NDAzMWZjMGU4OTYuLmM4OGVhNDlmNzY2MzY5NjdmZjc3YmNiOGQ2ODRj
OGQzYjE3NjQ1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjA1MCw3ICsyMDUwLDcgQEAKIAkJRjQyRDYzNDEyMkEwRUZERjAwRDJG
QjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQyRDYzM0YyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1dG9j
b3JyZWN0aW9uRGF0YS5oICovOyB9OwogCQlGNDMwRTk0MjIyNDczMzVGMDA1RkUwNTMgLyogV2Vi
c2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmll
d3BvcnRQb2xpY3kuaCAqLzsgfTsKIAkJRjQzMEU5NDQyMjQ3M0RGRjAwNUZFMDUzIC8qIFdlYkNv
bnRlbnRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNDMwRTk0MzIyNDczREI4MDA1RkUwNTMgLyogV2ViQ29udGVudE1vZGUuaCAqLzsgfTsKLQkJ
RjQzNTFCOUUyNUVFQzg0QzAwRDYzODkyIC8qIFRleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzNTFCOUQyNUVF
Qzg0QzAwRDYzODkyIC8qIFRleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oICovOyB9OworCQlGNDM1
MUI5RTI1RUVDODRDMDBENjM4OTIgLyogSW1hZ2VBbmFseXNpc1V0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzNTFCOUQyNUVFQzg0QzAw
RDYzODkyIC8qIEltYWdlQW5hbHlzaXNVdGlsaXRpZXMuaCAqLzsgfTsKIAkJRjQzOENEMUMyMjQx
NDIxNDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDM4Q0QxQjIyNDE0MEE2MDBERTZEREEgLyog
V0tXZWJwYWdlUHJlZmVyZW5jZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CiAJCUY0MzhDRDFGMjI0MTRENDAwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVm
ZXJlbmNlc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDM4Q0QxRTIyNDE0RDQwMDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJ
bnRlcm5hbC5oICovOyB9OwogCQlGNDM4Q0QyMTIyNDFGNjk1MDBERTZEREEgLyogV0tXZWJwYWdl
UHJlZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDM4Q0QyMDIyNDFGNjk1MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5j
ZXNQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTY2MDYsOCArNjYwNiw4IEBACiAJCUY0MkQ2MzQwMjJBMEVGRDMwMEQyRkIzQSAvKiBX
ZWJBdXRvY29ycmVjdGlvbkRhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkRhdGEubW07IHBhdGggPSBpb3MvV2ViQXV0b2NvcnJl
Y3Rpb25EYXRhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMwRTk0MTIyNDcz
MkE5MDA1RkUwNTMgLyogV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0MzBFOTQzMjI0NzNEQjgwMDVGRTA1MyAvKiBXZWJDb250ZW50TW9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJDb250ZW50TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlG
NDM1MUI5RDI1RUVDODRDMDBENjM4OTIgLyogVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlGNDM1MUI5RjI1RUVDODc4MDBENjM4OTIgLyogVGV4dFJlY29nbml0aW9u
VXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dFJlY29nbml0aW9uVXRpbGl0
aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDM1MUI5RDI1RUVDODRDMDBE
NjM4OTIgLyogSW1hZ2VBbmFseXNpc1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUFu
YWx5c2lzVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0MzUxQjlG
MjVFRUM4NzgwMEQ2Mzg5MiAvKiBJbWFnZUFuYWx5c2lzVXRpbGl0aWVzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSW1hZ2VBbmFseXNpc1V0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQzOENEMUIyMjQxNDBBNjAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVu
Y2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2VzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0MzhDRDFEMjI0MTRBRDYwMERFNkREQSAvKiBXS1dlYnBhZ2VQ
cmVmZXJlbmNlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2VicGFnZVByZWZlcmVuY2Vz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0QxRTIyNDE0RDQwMDBERTZE
REEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dl
YnBhZ2VQcmVmZXJlbmNlc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05NDU0LDYgKzk0NTQsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDQ4MjczNDYyNDUyOEY2
MDAwQTk1NDkzIC8qIENvY29hSW1hZ2UuaCAqLywKIAkJCQlGNEU0N0JCNTI3QjVBRTVCMDA4MTNC
MzggLyogQ29jb2FJbWFnZS5tbSAqLywKKwkJCQlGNDM1MUI5RDI1RUVDODRDMDBENjM4OTIgLyog
SW1hZ2VBbmFseXNpc1V0aWxpdGllcy5oICovLAorCQkJCUY0MzUxQjlGMjVFRUM4NzgwMEQ2Mzg5
MiAvKiBJbWFnZUFuYWx5c2lzVXRpbGl0aWVzLm1tICovLAogCQkJCUJDRTA5Mzc2MTRGQjEyOEIw
MDExMzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0LmggKi8sCiAJCQkJQkNFMDkzNzUxNEZCMTI4
QjAwMTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQubW0gKi8sCiAJCQkJQTE3OThCM0QyMjJE
OTdBMjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmggKi8sCkBAIC05
NDYxLDggKzk0NjMsNiBAQAogCQkJCUExNzk4QjNGMjIyRDk4QjYwMDA3NjRCRCAvKiBQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmggKi8sCiAJCQkJQTE3OThCNDAyMjJEOThCNjAw
MDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0gKi8sCiAJCQkJ
NDQ1MEFFQkYxREMzRkFFNTAwOTk0M0YyIC8qIFNoYXJlZE1lbW9yeUNvY29hLmNwcCAqLywKLQkJ
CQlGNDM1MUI5RDI1RUVDODRDMDBENjM4OTIgLyogVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLmgg
Ki8sCi0JCQkJRjQzNTFCOUYyNUVFQzg3ODAwRDYzODkyIC8qIFRleHRSZWNvZ25pdGlvblV0aWxp
dGllcy5tbSAqLywKIAkJCQlBMTgxQTc5NzIxQUNBQzYxMDA1OUEzMTYgLyogV2ViS2l0QWRkaXRp
b25zLm1tICovLAogCQkJCUExRkI2ODIyMUY2RTUxODIwMEM0M0Y5RiAvKiBXS0NyYXNoUmVwb3J0
ZXIuaCAqLywKIAkJCQlBMUZCNjgyMzFGNkU1MTgyMDBDNDNGOUYgLyogV0tDcmFzaFJlcG9ydGVy
Lm1tICovLApAQCAtMTMyODksNiArMTMyODksNyBAQAogCQkJCTkzQjYzMUU4MjdBQkE2NUQwMDQ0
M0E0NCAvKiBJREJTdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCNjMxRUQy
N0FCQTZCNDAwNDQzQTQ0IC8qIElEQlN0b3JhZ2VSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFFMzUxQ0IxODBGMkNDQzAwRTUzQkU5IC8qIElEQlV0aWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRjQzNTFCOUUyNUVFQzg0QzAwRDYzODkyIC8qIEltYWdlQW5hbHlzaXNVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2QjI1MTJDOTNFN0EwMDhGOUMzNSAvKiBJbWFn
ZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUVDNjlFMTg3MjA5MjEwMEI5NTFGMCAv
KiBJbXBvcnRhbmNlQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIwNEVFMzExQzgz
RTk4MDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTM2NTUs
NyArMTM2NTYsNiBAQAogCQkJCTUzQ0ZCQkM4MjIyNEQxQjUwMDI2NjU0NiAvKiBUZXh0Q2hlY2tl
ckNvbXBsZXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNUU0REE0MTJEM0JEM0QwMDk5QTJC
QiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTFBMEJENzFBNDhF
NkM2MDA1NEVGNzQgLyogVGV4dElucHV0U1BJLmggaW4gSGVhZGVycyAqLywKLQkJCQlGNDM1MUI5
RTI1RUVDODRDMDBENjM4OTIgLyogVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUFGMjYzOTE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjA1RDg3MTQ2ODgzNDgwMDhCMUU4
MSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGNDg1NzBBMzI2NDRCRUM1MDBDMDVGNzEgLyogVGltZW91dC5oIGluIEhlYWRlcnMgKi8s
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454146</attachid>
            <date>2022-03-08 12:43:15 -0800</date>
            <delta_ts>2022-03-08 17:18:28 -0800</delta_ts>
            <desc>For landing</desc>
            <filename>bug-237613-20220308124314.patch</filename>
            <type>text/plain</type>
            <size>33311</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJhY2ZlZDc5YjBjOWIyYmQ1
MGEzN2MxNjExMmQzNWRjMWE3OTdmMzIuLjRiMmY2ZWUwZDYzNWQzYjg4ZDQ1YTM4YzhkNTliMTAx
YzVmZTYyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjItMDMtMDggIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFRleHRSZWNv
Z25pdGlvblV0aWxpdGllcy4qIHRvIEltYWdlQW5hbHlzaXNVdGlsaXRpZXMuKgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NjEzCisgICAgICAgIHJk
YXI6Ly84OTk4MjA1MQorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24gYW5kIEthdGUg
Q2hlbmV5LgorCisgICAgICAgIFJlbmFtZSBUZXh0UmVjb2duaXRpb25VdGlsaXRpZXMuaCBhbmQg
VGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLm1tIHRvIEltYWdlQW5hbHlzaXNVdGlsaXRpZXMuaCBh
bmQKKyAgICAgICAgSW1hZ2VBbmFseXNpc1V0aWxpdGllcy5tbSwgcmVzcGVjdGl2ZWx5LiBUaGlz
IGlzIGJlY2F1c2UgdGhpcyBmaWxlIG5vdyBjb250YWlucyBoZWxwZXIgZnVuY3Rpb25zIHRoYXQg
YXJlIG5vdAorICAgICAgICBzcGVjaWZpYyB0byBqdXN0IHRoZSB0ZXh0IHJlY29nbml0aW9uIGFz
cGVjdCBvZiB2aXN1YWwgaW50ZWxsaWdlbmNlIGZlYXR1cmVzIG9uIENvY29hLCBidXQgcmF0aGVy
IGVuY29tcGFzcyBhCisgICAgICAgIHZhcmlldHkgb2YgaW1hZ2UgYW5hbHlzaXMgaGVscGVycy4K
KworICAgICAgICAqIFBsYXRmb3JtL2NvY29hL0ltYWdlQW5hbHlzaXNVdGlsaXRpZXMuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9uVXRp
bGl0aWVzLmguCisgICAgICAgICogUGxhdGZvcm0vY29jb2EvSW1hZ2VBbmFseXNpc1V0aWxpdGll
cy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29n
bml0aW9uVXRpbGl0aWVzLm1tLgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVJbWFnZUFuYWx5emVy
KToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlSW1hZ2VBbmFseXplclJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpmbG9hdFF1YWQpOgorICAgICAgICAoV2ViS2l0OjpmbG9hdFF1YWRzKToKKyAg
ICAgICAgKFdlYktpdDo6bWFrZVRleHRSZWNvZ25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJL
aXQ6OnRleHRSZWNvZ25pdGlvbkVuaGFuY2VtZW50c1N5c3RlbUZlYXR1cmVFbmFibGVkKToKKyAg
ICAgICAgKFdlYktpdDo6aW1hZ2VBbmFseXNpc1F1ZXVlU3lzdGVtRmVhdHVyZUVuYWJsZWQpOgor
ICAgICAgICAoV2ViS2l0Ojppc0ltYWdlQW5hbHlzaXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxl
ZCk6CisgICAgICAgIChXZWJLaXQ6OmlzTGl2ZVRleHRBdmFpbGFibGVBbmRFbmFibGVkKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW06
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25J
T1MubW06CisgICAgICAgICgtW1dLUkJTQXNzZXJ0aW9uRGVsZWdhdGUgYXNzZXJ0aW9uOmRpZElu
dmFsaWRhdGVXaXRoRXJyb3I6XSk6CisKKyAgICAgICAgRHJpdmUtYnkgZml4OiBhZGRpdGlvbmFs
bHkgdHdlYWsgYSBjb3VwbGUgb2YgcmVsZWFzZSBsb2dnaW5nIGFyZ3VtZW50cyB0aGF0IGFyZSBj
dXJyZW50bHkgaW4gcmV2ZXJzZSBvcmRlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tB
Y3Rpb25TaGVldEFzc2lzdGFudC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRN
ZW51UHJveHlNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW06CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjIt
MDMtMDcgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBnZW5lcmF0ZS1hdXRvbWF0aW9uLWF0b20ucHkgYnJlYWtzIHJlcHJvZHVjaWJs
ZSBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvSW1hZ2VB
bmFseXNpc1V0aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9JbWFnZUFu
YWx5c2lzVXRpbGl0aWVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGU3NDViNWYxYTZiOTcyZjY5NmIzMGZjM2Q4
MmI4YjMyMmM2MWU5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
Y29jb2EvSW1hZ2VBbmFseXNpc1V0aWxpdGllcy5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQorCisj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL1Zpc2lvbktpdENvcmVTUEkuaD4KKyNpbXBvcnQgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgRU5B
QkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKK3VzaW5nIENvY29hSW1hZ2VBbmFseXNp
cyA9IFZLQ0ltYWdlQW5hbHlzaXM7Cit1c2luZyBDb2NvYUltYWdlQW5hbHl6ZXIgPSBWS0NJbWFn
ZUFuYWx5emVyOwordXNpbmcgQ29jb2FJbWFnZUFuYWx5emVyUmVxdWVzdCA9IFZLQ0ltYWdlQW5h
bHl6ZXJSZXF1ZXN0OworI2Vsc2UKK3VzaW5nIENvY29hSW1hZ2VBbmFseXNpcyA9IFZLSW1hZ2VB
bmFseXNpczsKK3VzaW5nIENvY29hSW1hZ2VBbmFseXplciA9IFZLSW1hZ2VBbmFseXplcjsKK3Vz
aW5nIENvY29hSW1hZ2VBbmFseXplclJlcXVlc3QgPSBWS0ltYWdlQW5hbHl6ZXJSZXF1ZXN0Owor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBUZXh0UmVjb2duaXRpb25SZXN1
bHQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitib29sIGlzTGl2ZVRleHRBdmFpbGFibGVB
bmRFbmFibGVkKCk7Citib29sIHRleHRSZWNvZ25pdGlvbkVuaGFuY2VtZW50c1N5c3RlbUZlYXR1
cmVFbmFibGVkKCk7Citib29sIGltYWdlQW5hbHlzaXNRdWV1ZVN5c3RlbUZlYXR1cmVFbmFibGVk
KCk7Citib29sIGlzSW1hZ2VBbmFseXNpc01hcmt1cFN5c3RlbUZlYXR1cmVFbmFibGVkKCk7CisK
K1dlYkNvcmU6OlRleHRSZWNvZ25pdGlvblJlc3VsdCBtYWtlVGV4dFJlY29nbml0aW9uUmVzdWx0
KENvY29hSW1hZ2VBbmFseXNpcyAqKTsKKworUmV0YWluUHRyPENvY29hSW1hZ2VBbmFseXplcj4g
Y3JlYXRlSW1hZ2VBbmFseXplcigpOworUmV0YWluUHRyPENvY29hSW1hZ2VBbmFseXplclJlcXVl
c3Q+IGNyZWF0ZUltYWdlQW5hbHl6ZXJSZXF1ZXN0KENHSW1hZ2VSZWYsIFZLQW5hbHlzaXNUeXBl
cyk7CisKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQordm9pZCByZXF1
ZXN0SW1hZ2VBbmFseXNpc1dpdGhJZGVudGlmaWVyKENvY29hSW1hZ2VBbmFseXplciAqLCBjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIENHSW1hZ2VSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6VGV4dFJlY29nbml0aW9uUmVzdWx0JiYpPiYmKTsKK3ZvaWQgcmVxdWVzdEltYWdl
QW5hbHlzaXNNYXJrdXAoQ0dJbWFnZVJlZiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChDR0ltYWdl
UmVmLCBDR1JlY3QpPiYmKTsKKyNlbmRpZgorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU1BR0Vf
QU5BTFlTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL0ltYWdl
QW5hbHlzaXNVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL0ltYWdl
QW5hbHlzaXNVdGlsaXRpZXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE1MzM3OTFkYzE4NTJjZGFhNWI4Y2Rh
NDM4MDdmYTIzODNkMjI5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vY29jb2EvSW1hZ2VBbmFseXNpc1V0aWxpdGllcy5tbQpAQCAtMCwwICsxLDE3OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJJbWFnZUFuYWx5c2lz
VXRpbGl0aWVzLmgiCisKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCisKKyNpbXBvcnQgIkNv
Y29hSW1hZ2UuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlRyYW5zYWN0aW9uSUQu
aCIKKyNpbXBvcnQgPFdlYkNvcmUvVGV4dFJlY29nbml0aW9uUmVzdWx0Lmg+CisjaW1wb3J0IDxw
YWwvc3BpL2NvY29hL0ZlYXR1cmVGbGFnc1NQSS5oPgorI2ltcG9ydCA8d3RmL1dvcmtRdWV1ZS5o
PgorCisjaW1wb3J0IDxwYWwvY29jb2EvVmlzaW9uS2l0Q29yZVNvZnRMaW5rLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JldGFpblB0cjxDb2Nv
YUltYWdlQW5hbHl6ZXI+IGNyZWF0ZUltYWdlQW5hbHl6ZXIoKQoreworI2lmIEVOQUJMRShJTUFH
RV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAgcmV0dXJuIGFkb3B0TlMoW1BBTDo6YWxsb2NW
S0NJbWFnZUFuYWx5emVySW5zdGFuY2UoKSBpbml0XSk7CisjZWxzZQorICAgIHJldHVybiBhZG9w
dE5TKFtQQUw6OmFsbG9jVktJbWFnZUFuYWx5emVySW5zdGFuY2UoKSBpbml0XSk7CisjZW5kaWYK
K30KKworUmV0YWluUHRyPENvY29hSW1hZ2VBbmFseXplclJlcXVlc3Q+IGNyZWF0ZUltYWdlQW5h
bHl6ZXJSZXF1ZXN0KENHSW1hZ2VSZWYgaW1hZ2UsIFZLQW5hbHlzaXNUeXBlcyB0eXBlcykKK3sK
KyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIHJldHVybiBhZG9w
dE5TKFsoUEFMOjphbGxvY1ZLQ0ltYWdlQW5hbHl6ZXJSZXF1ZXN0SW5zdGFuY2UoKSkgaW5pdFdp
dGhDR0ltYWdlOmltYWdlIG9yaWVudGF0aW9uOlZLSW1hZ2VPcmllbnRhdGlvblVwIHJlcXVlc3RU
eXBlOnR5cGVzXSk7CisjZWxzZQorICAgIHJldHVybiBhZG9wdE5TKFtQQUw6OmFsbG9jVktJbWFn
ZUFuYWx5emVyUmVxdWVzdEluc3RhbmNlKCkgaW5pdFdpdGhDR0ltYWdlOmltYWdlIG9yaWVudGF0
aW9uOlZLSW1hZ2VPcmllbnRhdGlvblVwIHJlcXVlc3RUeXBlOnR5cGVzXSk7CisjZW5kaWYKK30K
Kworc3RhdGljIEZsb2F0UXVhZCBmbG9hdFF1YWQoVktRdWFkICpxdWFkKQoreworICAgIHJldHVy
biB7IHF1YWQudG9wTGVmdCwgcXVhZC50b3BSaWdodCwgcXVhZC5ib3R0b21SaWdodCwgcXVhZC5i
b3R0b21MZWZ0IH07Cit9CisKK3N0YXRpYyBWZWN0b3I8RmxvYXRRdWFkPiBmbG9hdFF1YWRzKE5T
QXJyYXk8VktRdWFkICo+ICp2a1F1YWRzKQoreworICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRz
OworICAgIHF1YWRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodmtRdWFkcy5jb3VudCk7CisgICAg
Zm9yIChWS1F1YWQgKnZrUXVhZCBpbiB2a1F1YWRzKQorICAgICAgICBxdWFkcy51bmNoZWNrZWRB
cHBlbmQoZmxvYXRRdWFkKHZrUXVhZCkpOworICAgIHJldHVybiBxdWFkczsKK30KKworVGV4dFJl
Y29nbml0aW9uUmVzdWx0IG1ha2VUZXh0UmVjb2duaXRpb25SZXN1bHQoQ29jb2FJbWFnZUFuYWx5
c2lzICphbmFseXNpcykKK3sKKyAgICBOU0FycmF5PFZLV0tMaW5lSW5mbyAqPiAqYWxsTGluZXMg
PSBhbmFseXNpcy5hbGxMaW5lczsKKyAgICBUZXh0UmVjb2duaXRpb25SZXN1bHQgcmVzdWx0Owor
ICAgIHJlc3VsdC5saW5lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFsbExpbmVzLmNvdW50KTsK
KworICAgIGJvb2wgaXNGaXJzdExpbmUgPSB0cnVlOworICAgIHNpemVfdCBuZXh0TGluZUluZGV4
ID0gMTsKKyAgICBmb3IgKFZLV0tMaW5lSW5mbyAqbGluZSBpbiBhbGxMaW5lcykgeworICAgICAg
ICBWZWN0b3I8VGV4dFJlY29nbml0aW9uV29yZERhdGE+IGNoaWxkcmVuOworICAgICAgICBOU0Fy
cmF5PFZLV0tUZXh0SW5mbyAqPiAqdmtDaGlsZHJlbiA9IGxpbmUuY2hpbGRyZW47CisgICAgICAg
IGNoaWxkcmVuLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodmtDaGlsZHJlbi5jb3VudCk7CisKKyAg
ICAgICAgU3RyaW5nIGxpbmVUZXh0ID0gbGluZS5zdHJpbmc7CisgICAgICAgIHVuc2lnbmVkIHNl
YXJjaExvY2F0aW9uID0gMDsKKyAgICAgICAgZm9yIChWS1dLVGV4dEluZm8gKmNoaWxkIGluIHZr
Q2hpbGRyZW4pIHsKKyAgICAgICAgICAgIGlmIChzZWFyY2hMb2NhdGlvbiA+PSBsaW5lVGV4dC5s
ZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBTdHJpbmcg
Y2hpbGRUZXh0ID0gY2hpbGQuc3RyaW5nOworICAgICAgICAgICAgYXV0byBtYXRjaExvY2F0aW9u
ID0gbGluZVRleHQuZmluZChjaGlsZFRleHQsIHNlYXJjaExvY2F0aW9uKTsKKyAgICAgICAgICAg
IGlmIChtYXRjaExvY2F0aW9uID09IG5vdEZvdW5kKSB7CisgICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGJvb2wgaGFzTGVhZGluZ1doaXRlc3BhY2UgPSAoWyZdIHsKKyAgICAg
ICAgICAgICAgICBpZiAobWF0Y2hMb2NhdGlvbiA9PSBzZWFyY2hMb2NhdGlvbikKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICFpc0ZpcnN0TGluZSAmJiAhc2VhcmNoTG9jYXRpb247CisKKyAg
ICAgICAgICAgICAgICBhdXRvIHRleHRCZWZvcmVNYXRjaCA9IGxpbmVUZXh0LnN1YnN0cmluZyhz
ZWFyY2hMb2NhdGlvbiwgbWF0Y2hMb2NhdGlvbiAtIHNlYXJjaExvY2F0aW9uKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gIXRleHRCZWZvcmVNYXRjaC5pc0VtcHR5KCkgJiYgaXNTcGFjZU9yTmV3
bGluZSh0ZXh0QmVmb3JlTWF0Y2hbMF0pOworICAgICAgICAgICAgfSkoKTsKKworICAgICAgICAg
ICAgc2VhcmNoTG9jYXRpb24gPSBtYXRjaExvY2F0aW9uICsgY2hpbGRUZXh0Lmxlbmd0aCgpOwor
ICAgICAgICAgICAgY2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKHsgV1RGTW92ZShjaGlsZFRleHQp
LCBmbG9hdFF1YWQoY2hpbGQucXVhZCksIGhhc0xlYWRpbmdXaGl0ZXNwYWNlIH0pOworICAgICAg
ICB9CisgICAgICAgIFZLV0tMaW5lSW5mbyAqbmV4dExpbmUgPSBuZXh0TGluZUluZGV4IDwgYWxs
TGluZXMuY291bnQgPyBhbGxMaW5lc1tuZXh0TGluZUluZGV4XSA6IG5pbDsKKyAgICAgICAgLy8g
VGhlIGBzaG91bGRXcmFwYCBwcm9wZXJ0eSBpbmRpY2F0ZXMgd2hldGhlciBvciBub3QgYSBsaW5l
IHNob3VsZCB3cmFwLCByZWxhdGl2ZSB0byB0aGUgcHJldmlvdXMgbGluZS4KKyAgICAgICAgYm9v
bCBoYXNUcmFpbGluZ05ld2xpbmUgPSBuZXh0TGluZSAmJiAoIVtuZXh0TGluZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHNob3VsZFdyYXApXSB8fCAhW25leHRMaW5lIHNob3VsZFdyYXBd
KTsKKyAgICAgICAgcmVzdWx0LmxpbmVzLnVuY2hlY2tlZEFwcGVuZCh7IGZsb2F0UXVhZChsaW5l
LnF1YWQpLCBXVEZNb3ZlKGNoaWxkcmVuKSwgaGFzVHJhaWxpbmdOZXdsaW5lIH0pOworICAgICAg
ICBpc0ZpcnN0TGluZSA9IGZhbHNlOworICAgICAgICBuZXh0TGluZUluZGV4Kys7CisgICAgfQor
CisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorICAgIGlmIChbYW5hbHlzaXMgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcih0ZXh0RGF0YURldGVjdG9ycyldKSB7CisgICAgICAgIGF1dG8g
ZGF0YURldGVjdG9ycyA9IFJldGFpblB0ciB7IGFuYWx5c2lzLnRleHREYXRhRGV0ZWN0b3JzIH07
CisgICAgICAgIHJlc3VsdC5kYXRhRGV0ZWN0b3JzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoW2Rh
dGFEZXRlY3RvcnMgY291bnRdKTsKKyAgICAgICAgZm9yIChWS1dLRGF0YURldGVjdG9ySW5mbyAq
aW5mbyBpbiBkYXRhRGV0ZWN0b3JzLmdldCgpKQorICAgICAgICAgICAgcmVzdWx0LmRhdGFEZXRl
Y3RvcnMudW5jaGVja2VkQXBwZW5kKHsgaW5mby5yZXN1bHQsIGZsb2F0UXVhZHMoaW5mby5ib3Vu
ZGluZ1F1YWRzKSB9KTsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKERBVEFfREVURUNUSU9OKQor
CisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICBpZiAoW2FuYWx5
c2lzIGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRWS0NJbWFnZUFuYWx5c2lzQ2xhc3MoKV0pCisgICAg
ICAgIHJlc3VsdC5wbGF0Zm9ybURhdGEgPSBhbmFseXNpczsKKyNlbmRpZgorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8V2Vi
S2l0QWRkaXRpb25zL0ltYWdlQW5hbHlzaXNVdGlsaXRpZXNBZGRpdGlvbnMubW0+CisjZWxzZQor
Citib29sIHRleHRSZWNvZ25pdGlvbkVuaGFuY2VtZW50c1N5c3RlbUZlYXR1cmVFbmFibGVkKCkK
K3sKKyNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQorICAgIHJldHVybiB0
cnVlOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworYm9vbCBpbWFnZUFu
YWx5c2lzUXVldWVTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpCit7CisjaWYgRU5BQkxFKElNQUdFX0FO
QUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCit9CisKK2Jvb2wgaXNJbWFnZUFuYWx5c2lzTWFya3VwU3lzdGVtRmVh
dHVyZUVuYWJsZWQoKQoreworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMp
CisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQor
CisjZW5kaWYKKworYm9vbCBpc0xpdmVUZXh0QXZhaWxhYmxlQW5kRW5hYmxlZCgpCit7CisgICAg
cmV0dXJuIFBBTDo6aXNWaXNpb25LaXRDb3JlRnJhbWV3b3JrQXZhaWxhYmxlKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2duaXRpb25V
dGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvVGV4dFJlY29nbml0aW9u
VXRpbGl0aWVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NzQxNjMxMmIxMmEy
YjExMDg3YmJmNzIzNDQ3Yjk4NWViOTMyOTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2du
aXRpb25VdGlsaXRpZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKLQotI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9WaXNpb25LaXRDb3JlU1BJLmg+Ci0jaW1wb3J0IDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmIEVOQUJMRShJ
TUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi11c2luZyBDb2NvYUltYWdlQW5hbHlzaXMgPSBW
S0NJbWFnZUFuYWx5c2lzOwotdXNpbmcgQ29jb2FJbWFnZUFuYWx5emVyID0gVktDSW1hZ2VBbmFs
eXplcjsKLXVzaW5nIENvY29hSW1hZ2VBbmFseXplclJlcXVlc3QgPSBWS0NJbWFnZUFuYWx5emVy
UmVxdWVzdDsKLSNlbHNlCi11c2luZyBDb2NvYUltYWdlQW5hbHlzaXMgPSBWS0ltYWdlQW5hbHlz
aXM7Ci11c2luZyBDb2NvYUltYWdlQW5hbHl6ZXIgPSBWS0ltYWdlQW5hbHl6ZXI7Ci11c2luZyBD
b2NvYUltYWdlQW5hbHl6ZXJSZXF1ZXN0ID0gVktJbWFnZUFuYWx5emVyUmVxdWVzdDsKLSNlbmRp
ZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1zdHJ1Y3QgVGV4dFJlY29nbml0aW9uUmVzdWx0Owot
fQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotYm9vbCBpc0xpdmVUZXh0QXZhaWxhYmxlQW5kRW5h
YmxlZCgpOwotYm9vbCB0ZXh0UmVjb2duaXRpb25FbmhhbmNlbWVudHNTeXN0ZW1GZWF0dXJlRW5h
YmxlZCgpOwotYm9vbCBpbWFnZUFuYWx5c2lzUXVldWVTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpOwot
Ym9vbCBpc0ltYWdlQW5hbHlzaXNNYXJrdXBTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpOwotCi1XZWJD
b3JlOjpUZXh0UmVjb2duaXRpb25SZXN1bHQgbWFrZVRleHRSZWNvZ25pdGlvblJlc3VsdChDb2Nv
YUltYWdlQW5hbHlzaXMgKik7Ci0KLVJldGFpblB0cjxDb2NvYUltYWdlQW5hbHl6ZXI+IGNyZWF0
ZUltYWdlQW5hbHl6ZXIoKTsKLVJldGFpblB0cjxDb2NvYUltYWdlQW5hbHl6ZXJSZXF1ZXN0PiBj
cmVhdGVJbWFnZUFuYWx5emVyUmVxdWVzdChDR0ltYWdlUmVmLCBWS0FuYWx5c2lzVHlwZXMpOwot
Ci0jaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKLXZvaWQgcmVxdWVzdElt
YWdlQW5hbHlzaXNXaXRoSWRlbnRpZmllcihDb2NvYUltYWdlQW5hbHl6ZXIgKiwgY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBDR0ltYWdlUmVmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlRleHRSZWNvZ25pdGlvblJlc3VsdCYmKT4mJik7Ci12b2lkIHJlcXVlc3RJbWFnZUFuYWx5
c2lzTWFya3VwKENHSW1hZ2VSZWYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQ0dJbWFnZVJlZiwg
Q0dSZWN0KT4mJik7Ci0jZW5kaWYKLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZ
U0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9UZXh0UmVjb2du
aXRpb25VdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1RleHRSZWNv
Z25pdGlvblV0aWxpdGllcy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhkODVh
MTE1YTQ1MWEyMTM2ZTZjNDA0MWVhYTAxYTRkNDAzZjU5Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1Rl
eHRSZWNvZ25pdGlvblV0aWxpdGllcy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJUZXh0UmVjb2duaXRp
b25VdGlsaXRpZXMuaCIKLQotI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKLQotI2ltcG9ydCAi
Q29jb2FJbWFnZS5oIgotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9ydCA8V2ViQ29yZS9UZXh0
UmVjb2duaXRpb25SZXN1bHQuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY29jb2EvRmVhdHVyZUZsYWdz
U1BJLmg+Ci0jaW1wb3J0IDx3dGYvV29ya1F1ZXVlLmg+Ci0KLSNpbXBvcnQgPHBhbC9jb2NvYS9W
aXNpb25LaXRDb3JlU29mdExpbmsuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQotUmV0YWluUHRyPENvY29hSW1hZ2VBbmFseXplcj4gY3JlYXRlSW1h
Z2VBbmFseXplcigpCi17Ci0jaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykK
LSAgICByZXR1cm4gYWRvcHROUyhbUEFMOjphbGxvY1ZLQ0ltYWdlQW5hbHl6ZXJJbnN0YW5jZSgp
IGluaXRdKTsKLSNlbHNlCi0gICAgcmV0dXJuIGFkb3B0TlMoW1BBTDo6YWxsb2NWS0ltYWdlQW5h
bHl6ZXJJbnN0YW5jZSgpIGluaXRdKTsKLSNlbmRpZgotfQotCi1SZXRhaW5QdHI8Q29jb2FJbWFn
ZUFuYWx5emVyUmVxdWVzdD4gY3JlYXRlSW1hZ2VBbmFseXplclJlcXVlc3QoQ0dJbWFnZVJlZiBp
bWFnZSwgVktBbmFseXNpc1R5cGVzIHR5cGVzKQotewotI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJ
U19FTkhBTkNFTUVOVFMpCi0gICAgcmV0dXJuIGFkb3B0TlMoWyhQQUw6OmFsbG9jVktDSW1hZ2VB
bmFseXplclJlcXVlc3RJbnN0YW5jZSgpKSBpbml0V2l0aENHSW1hZ2U6aW1hZ2Ugb3JpZW50YXRp
b246VktJbWFnZU9yaWVudGF0aW9uVXAgcmVxdWVzdFR5cGU6dHlwZXNdKTsKLSNlbHNlCi0gICAg
cmV0dXJuIGFkb3B0TlMoW1BBTDo6YWxsb2NWS0ltYWdlQW5hbHl6ZXJSZXF1ZXN0SW5zdGFuY2Uo
KSBpbml0V2l0aENHSW1hZ2U6aW1hZ2Ugb3JpZW50YXRpb246VktJbWFnZU9yaWVudGF0aW9uVXAg
cmVxdWVzdFR5cGU6dHlwZXNdKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgRmxvYXRRdWFkIGZsb2F0
UXVhZChWS1F1YWQgKnF1YWQpCi17Ci0gICAgcmV0dXJuIHsgcXVhZC50b3BMZWZ0LCBxdWFkLnRv
cFJpZ2h0LCBxdWFkLmJvdHRvbVJpZ2h0LCBxdWFkLmJvdHRvbUxlZnQgfTsKLX0KLQotc3RhdGlj
IFZlY3RvcjxGbG9hdFF1YWQ+IGZsb2F0UXVhZHMoTlNBcnJheTxWS1F1YWQgKj4gKnZrUXVhZHMp
Ci17Ci0gICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7Ci0gICAgcXVhZHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSh2a1F1YWRzLmNvdW50KTsKLSAgICBmb3IgKFZLUXVhZCAqdmtRdWFkIGluIHZr
UXVhZHMpCi0gICAgICAgIHF1YWRzLnVuY2hlY2tlZEFwcGVuZChmbG9hdFF1YWQodmtRdWFkKSk7
Ci0gICAgcmV0dXJuIHF1YWRzOwotfQotCi1UZXh0UmVjb2duaXRpb25SZXN1bHQgbWFrZVRleHRS
ZWNvZ25pdGlvblJlc3VsdChDb2NvYUltYWdlQW5hbHlzaXMgKmFuYWx5c2lzKQotewotICAgIE5T
QXJyYXk8VktXS0xpbmVJbmZvICo+ICphbGxMaW5lcyA9IGFuYWx5c2lzLmFsbExpbmVzOwotICAg
IFRleHRSZWNvZ25pdGlvblJlc3VsdCByZXN1bHQ7Ci0gICAgcmVzdWx0LmxpbmVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoYWxsTGluZXMuY291bnQpOwotCi0gICAgYm9vbCBpc0ZpcnN0TGluZSA9
IHRydWU7Ci0gICAgc2l6ZV90IG5leHRMaW5lSW5kZXggPSAxOwotICAgIGZvciAoVktXS0xpbmVJ
bmZvICpsaW5lIGluIGFsbExpbmVzKSB7Ci0gICAgICAgIFZlY3RvcjxUZXh0UmVjb2duaXRpb25X
b3JkRGF0YT4gY2hpbGRyZW47Ci0gICAgICAgIE5TQXJyYXk8VktXS1RleHRJbmZvICo+ICp2a0No
aWxkcmVuID0gbGluZS5jaGlsZHJlbjsKLSAgICAgICAgY2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eSh2a0NoaWxkcmVuLmNvdW50KTsKLQotICAgICAgICBTdHJpbmcgbGluZVRleHQgPSBs
aW5lLnN0cmluZzsKLSAgICAgICAgdW5zaWduZWQgc2VhcmNoTG9jYXRpb24gPSAwOwotICAgICAg
ICBmb3IgKFZLV0tUZXh0SW5mbyAqY2hpbGQgaW4gdmtDaGlsZHJlbikgewotICAgICAgICAgICAg
aWYgKHNlYXJjaExvY2F0aW9uID49IGxpbmVUZXh0Lmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIFN0cmluZyBjaGlsZFRleHQgPSBjaGlsZC5zdHJpbmc7
Ci0gICAgICAgICAgICBhdXRvIG1hdGNoTG9jYXRpb24gPSBsaW5lVGV4dC5maW5kKGNoaWxkVGV4
dCwgc2VhcmNoTG9jYXRpb24pOwotICAgICAgICAgICAgaWYgKG1hdGNoTG9jYXRpb24gPT0gbm90
Rm91bmQpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBoYXNM
ZWFkaW5nV2hpdGVzcGFjZSA9IChbJl0gewotICAgICAgICAgICAgICAgIGlmIChtYXRjaExvY2F0
aW9uID09IHNlYXJjaExvY2F0aW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWlzRmly
c3RMaW5lICYmICFzZWFyY2hMb2NhdGlvbjsKLQotICAgICAgICAgICAgICAgIGF1dG8gdGV4dEJl
Zm9yZU1hdGNoID0gbGluZVRleHQuc3Vic3RyaW5nKHNlYXJjaExvY2F0aW9uLCBtYXRjaExvY2F0
aW9uIC0gc2VhcmNoTG9jYXRpb24pOwotICAgICAgICAgICAgICAgIHJldHVybiAhdGV4dEJlZm9y
ZU1hdGNoLmlzRW1wdHkoKSAmJiBpc1NwYWNlT3JOZXdsaW5lKHRleHRCZWZvcmVNYXRjaFswXSk7
Ci0gICAgICAgICAgICB9KSgpOwotCi0gICAgICAgICAgICBzZWFyY2hMb2NhdGlvbiA9IG1hdGNo
TG9jYXRpb24gKyBjaGlsZFRleHQubGVuZ3RoKCk7Ci0gICAgICAgICAgICBjaGlsZHJlbi51bmNo
ZWNrZWRBcHBlbmQoeyBXVEZNb3ZlKGNoaWxkVGV4dCksIGZsb2F0UXVhZChjaGlsZC5xdWFkKSwg
aGFzTGVhZGluZ1doaXRlc3BhY2UgfSk7Ci0gICAgICAgIH0KLSAgICAgICAgVktXS0xpbmVJbmZv
ICpuZXh0TGluZSA9IG5leHRMaW5lSW5kZXggPCBhbGxMaW5lcy5jb3VudCA/IGFsbExpbmVzW25l
eHRMaW5lSW5kZXhdIDogbmlsOwotICAgICAgICAvLyBUaGUgYHNob3VsZFdyYXBgIHByb3BlcnR5
IGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhIGxpbmUgc2hvdWxkIHdyYXAsIHJlbGF0aXZlIHRv
IHRoZSBwcmV2aW91cyBsaW5lLgotICAgICAgICBib29sIGhhc1RyYWlsaW5nTmV3bGluZSA9IG5l
eHRMaW5lICYmICghW25leHRMaW5lIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hvdWxk
V3JhcCldIHx8ICFbbmV4dExpbmUgc2hvdWxkV3JhcF0pOwotICAgICAgICByZXN1bHQubGluZXMu
dW5jaGVja2VkQXBwZW5kKHsgZmxvYXRRdWFkKGxpbmUucXVhZCksIFdURk1vdmUoY2hpbGRyZW4p
LCBoYXNUcmFpbGluZ05ld2xpbmUgfSk7Ci0gICAgICAgIGlzRmlyc3RMaW5lID0gZmFsc2U7Ci0g
ICAgICAgIG5leHRMaW5lSW5kZXgrKzsKLSAgICB9Ci0KLSNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJ
T04pCi0gICAgaWYgKFthbmFseXNpcyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHRleHRE
YXRhRGV0ZWN0b3JzKV0pIHsKLSAgICAgICAgYXV0byBkYXRhRGV0ZWN0b3JzID0gUmV0YWluUHRy
IHsgYW5hbHlzaXMudGV4dERhdGFEZXRlY3RvcnMgfTsKLSAgICAgICAgcmVzdWx0LmRhdGFEZXRl
Y3RvcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbZGF0YURldGVjdG9ycyBjb3VudF0pOwotICAg
ICAgICBmb3IgKFZLV0tEYXRhRGV0ZWN0b3JJbmZvICppbmZvIGluIGRhdGFEZXRlY3RvcnMuZ2V0
KCkpCi0gICAgICAgICAgICByZXN1bHQuZGF0YURldGVjdG9ycy51bmNoZWNrZWRBcHBlbmQoeyBp
bmZvLnJlc3VsdCwgZmxvYXRRdWFkcyhpbmZvLmJvdW5kaW5nUXVhZHMpIH0pOwotICAgIH0KLSNl
bmRpZiAvLyBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCi0KLSNpZiBFTkFCTEUoSU1BR0VfQU5BTFlT
SVNfRU5IQU5DRU1FTlRTKQotICAgIGlmIChbYW5hbHlzaXMgaXNLaW5kT2ZDbGFzczpQQUw6Omdl
dFZLQ0ltYWdlQW5hbHlzaXNDbGFzcygpXSkKLSAgICAgICAgcmVzdWx0LnBsYXRmb3JtRGF0YSA9
IGFuYWx5c2lzOwotI2VuZGlmCi0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvVGV4dFJlY29nbml0
aW9uVXRpbGl0aWVzQWRkaXRpb25zLm1tPgotI2Vsc2UKLQotYm9vbCB0ZXh0UmVjb2duaXRpb25F
bmhhbmNlbWVudHNTeXN0ZW1GZWF0dXJlRW5hYmxlZCgpCi17Ci0jaWYgRU5BQkxFKElNQUdFX0FO
QUxZU0lTX0VOSEFOQ0VNRU5UUykKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCi19Ci0KLWJvb2wgaW1hZ2VBbmFseXNpc1F1ZXVlU3lzdGVtRmVhdHVy
ZUVuYWJsZWQoKQotewotI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCi0g
ICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi1i
b29sIGlzSW1hZ2VBbmFseXNpc01hcmt1cFN5c3RlbUZlYXR1cmVFbmFibGVkKCkKLXsKLSNpZiBF
TkFCTEUoSU1BR0VfQU5BTFlTSVNfRU5IQU5DRU1FTlRTKQotICAgIHJldHVybiB0cnVlOwotI2Vs
c2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotI2VuZGlmCi0KLWJvb2wgaXNMaXZl
VGV4dEF2YWlsYWJsZUFuZEVuYWJsZWQoKQotewotICAgIHJldHVybiBQQUw6OmlzVmlzaW9uS2l0
Q29yZUZyYW1ld29ya0F2YWlsYWJsZSgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0NvY29hLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2Eu
bW0KaW5kZXggODE5N2I3MjQ4ZDIyZTM0ZWFjNjQwZThkOTQxNDViYzM5MTAxYmI1MC4uNTZmYzA1
ZTY1M2UzYmQwMDE0YWM5OTJiOGIwYzIzN2I5MTAwMWNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVz
Q29jb2EubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCi0jaW1w
b3J0ICJUZXh0UmVjb2duaXRpb25VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIkltYWdlQW5hbHlzaXNV
dGlsaXRpZXMuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNCdW5kbGUuaD4KICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvRmVhdHVyZUZsYWdzU1BJLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDE0Mzg0ZjhlNThjNWNlZGQwODE0Y2QzZjQyZWI5
NjQyM2Q2M2YzNC4uMDFiZThkN2RhZDliNjNiN2I3YjUzNzIwNWE1OWM3NTUwYzIyNjY2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dApAQCAtODQsMTEgKzg0LDExIEBAIFBsYXRmb3JtL2NsYXNzaWZp
ZXIvY29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5jcHAKIFBsYXRm
b3JtL2NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuY3BwCiAKIFBs
YXRmb3JtL2NvY29hL0NvY29hSW1hZ2UubW0KK1BsYXRmb3JtL2NvY29hL0ltYWdlQW5hbHlzaXNV
dGlsaXRpZXMubW0KIFBsYXRmb3JtL2NvY29hL0xheWVySG9zdGluZ0NvbnRleHQubW0KIFBsYXRm
b3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLm1tCiBQbGF0Zm9ybS9jb2Nv
YS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tCiBQbGF0Zm9ybS9jb2NvYS9T
aGFyZWRNZW1vcnlDb2NvYS5jcHAKLVBsYXRmb3JtL2NvY29hL1RleHRSZWNvZ25pdGlvblV0aWxp
dGllcy5tbQogUGxhdGZvcm0vY29jb2EvV0tDcmFzaFJlcG9ydGVyLm1tCiBQbGF0Zm9ybS9jb2Nv
YS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0KIFBsYXRmb3JtL2NvY29hL1dlYktp
dEFkZGl0aW9ucy5tbSBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oCmluZGV4IDM5YzczYWEyMGIxMjkwNDIyYzQ2ZjUxZWIwNDQ3NGMyZDU3MmJi
OGUuLmY0YTZhMzM5MWMxZDIwYzc0YmUyNjNhNzI3M2Y0NTYyMGJkYjJlMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtMjcsOSArMjcsOSBAQAog
CiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW5jbHVkZSAiSW1hZ2VBbmFseXNpc1V0aWxpdGllcy5o
IgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVC
aXRtYXAuaCIKLSNpbmNsdWRlICJUZXh0UmVjb2duaXRpb25VdGlsaXRpZXMuaCIKICNpbmNsdWRl
ICJXS0xheW91dE1vZGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVBhc3RlQWNjZXNzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0RpcmVjdGlvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1Byb2Nlc3NBc3NlcnRpb25JT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUHJvY2Vzc0Fzc2VydGlvbklPUy5tbQppbmRleCBlYmNmN2IxZGM4YWNj
NGE3YTExZjNjYzliYWQwNDQ4YjlkMmQ2OTYzLi5mZDg3ODliODY4ZDIxMTRiNmI3MDM5YTYzMGY3
ZjFkYmY4MGQxNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJv
Y2Vzc0Fzc2VydGlvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUHJv
Y2Vzc0Fzc2VydGlvbklPUy5tbQpAQCAtMjgwLDcgKzI4MCw3IEBAIC0gKHZvaWQpYXNzZXJ0aW9u
V2lsbEludmFsaWRhdGU6KFJCU0Fzc2VydGlvbiAqKWFzc2VydGlvbgogCiAtICh2b2lkKWFzc2Vy
dGlvbjooUkJTQXNzZXJ0aW9uICopYXNzZXJ0aW9uIGRpZEludmFsaWRhdGVXaXRoRXJyb3I6KE5T
RXJyb3IgKillcnJvcgogewotICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAg
LSBXS1JCU0Fzc2VydGlvbkRlbGVnYXRlOiBhc3NlcnRpb24gd2FzIGludmFsaWRhdGVkLCBlcnJv
cjogJXtwdWJsaWN9QCIsIGVycm9yLCBzZWxmKTsKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3Vz
cGVuc2lvbiwgIiVwIC0gV0tSQlNBc3NlcnRpb25EZWxlZ2F0ZTogYXNzZXJ0aW9uIHdhcyBpbnZh
bGlkYXRlZCwgZXJyb3I6ICV7cHVibGljfUAiLCBzZWxmLCBlcnJvcik7CiAKICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tSQlNBc3NlcnRpb25E
ZWxlZ2F0ZT4oc2VsZildIHsKICAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVl
dEFzc2lzdGFudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0
QXNzaXN0YW50Lm1tCmluZGV4IDdlOGNlODRlMjVjZDhlNzU3ZjBlNmNkZDQ1YjFjMDhkZmUzZmEw
YzUuLjNkYzZhZGFmYTg1MzA0NDA2MjUwYTU2YzBmZjkxZTdhODk0MTkwOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1t
CkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2ltcG9ydCAi
QVBJVUlDbGllbnQuaCIKLSNpbXBvcnQgIlRleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oIgorI2lt
cG9ydCAiSW1hZ2VBbmFseXNpc1V0aWxpdGllcy5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNp
bXBvcnQgIldLQWN0aW9uU2hlZXQuaCIKICNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggOTNmMDkzN2UxY2I5YjgyYjllZTUxNWEzNDg5NmY0NWE3
ZDJmNzQ4YS4uNWQ0YjFhMDc2ZjIwZDM1ZTRjNTY5MzQwZmQ5OWZiMTQzNjM1N2Y1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJDb2NvYUltYWdlLmgiCiAjaW1w
b3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJEb2N1bWVudEVk
aXRpbmdDb250ZXh0LmgiCisjaW1wb3J0ICJJbWFnZUFuYWx5c2lzVXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJJbnB1dFZpZXdVcGRhdGVEZWZlcnJlci5oIgogI2ltcG9ydCAiSW5zZXJ0VGV4dE9wdGlv
bnMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKQEAgLTQ1LDcgKzQ2LDYgQEAKICNpbXBvcnQgIlRl
eHRDaGVja2VyLmgiCiAjaW1wb3J0ICJUZXh0SW5wdXRTUEkuaCIKICNpbXBvcnQgIlRleHRSZWNv
Z25pdGlvblVwZGF0ZVJlc3VsdC5oIgotI2ltcG9ydCAiVGV4dFJlY29nbml0aW9uVXRpbGl0aWVz
LmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiVXNlckludGVyZmFjZUlkaW9tLmgi
CiAjaW1wb3J0ICJXS0FjdGlvblNoZWV0QXNzaXN0YW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCmluZGV4IDE2M2Y4
YWQ0ZTgwNDdlZTAyODE3MzBmNTEyZTVlYzQ3YTA2NWE3YjEuLmRlM2U2MDE1MDgyNjk0OGVhMDgy
MjMyMzI3ZTNhY2U1ZGVhOWEwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCkBAIC0zMSwxMSArMzEsMTEgQEAKICNp
bXBvcnQgIkFQSUF0dGFjaG1lbnQuaCIKICNpbXBvcnQgIkFQSUNvbnRleHRNZW51Q2xpZW50Lmgi
CiAjaW1wb3J0ICJDb2NvYUltYWdlLmgiCisjaW1wb3J0ICJJbWFnZUFuYWx5c2lzVXRpbGl0aWVz
LmgiCiAjaW1wb3J0ICJNZW51VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJQYWdlQ2xpZW50SW1wbE1h
Yy5oIgogI2ltcG9ydCAiU2VydmljZXNDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJTaGFyZWFibGVC
aXRtYXAuaCIKLSNpbXBvcnQgIlRleHRSZWNvZ25pdGlvblV0aWxpdGllcy5oIgogI2ltcG9ydCAi
V0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tTaGFyaW5nU2Vydmlj
ZVBpY2tlckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGU0MDY0
ZTMxNDVmMjljZWUwODk1M2QyZDEzMThhYjhiY2VmMDU2ZjMuLjEwMmRmZTk4ZjJkZGM2NjI1NTA2
N2VjMjM2YmEyMWM1MjgyN2EyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiRWRpdG9yU3Rh
dGUuaCIKICNpbXBvcnQgIkZvbnRJbmZvLmgiCiAjaW1wb3J0ICJGcmFtZUluZm9EYXRhLmgiCisj
aW1wb3J0ICJJbWFnZUFuYWx5c2lzVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJJbnNlcnRUZXh0T3B0
aW9ucy5oIgogI2ltcG9ydCAiTWVudVV0aWxpdGllcy5oIgogI2ltcG9ydCAiTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudC5oIgpAQCAtNDQsNyArNDUsNiBAQAogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVl
SG9zdC5oIgogI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXh0Q2hlY2tl
ci5oIgotI2ltcG9ydCAiVGV4dFJlY29nbml0aW9uVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tRdWlja0xvb2tQ
cmV2aWV3Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVn
YXRlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA3MmQzMTIzYzNlMjkwYzc0MmI5NjU4MWY4ZTNiNzQwMzFmYzBlODk2Li5jODhlYTQ5
Zjc2NjM2OTY3ZmY3N2JjYjhkNjg0YzhkM2IxNzY0NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNTAsNyArMjA1MCw3IEBACiAJ
CUY0MkQ2MzQxMjJBMEVGREYwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MkQ2MzNGMjJBMEVG
RDMwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCAqLzsgfTsKIAkJRjQzMEU5NDIy
MjQ3MzM1RjAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3kuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MzBFOTQxMjI0NzMyQTkwMDVG
RTA1MyAvKiBXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5LmggKi87IH07CiAJCUY0MzBFOTQ0MjI0
NzNERkYwMDVGRTA1MyAvKiBXZWJDb250ZW50TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzMEU5NDMyMjQ3M0RCODAwNUZFMDUzIC8qIFdlYkNv
bnRlbnRNb2RlLmggKi87IH07Ci0JCUY0MzUxQjlFMjVFRUM4NEMwMEQ2Mzg5MiAvKiBUZXh0UmVj
b2duaXRpb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0MzUxQjlEMjVFRUM4NEMwMEQ2Mzg5MiAvKiBUZXh0UmVjb2duaXRpb25VdGls
aXRpZXMuaCAqLzsgfTsKKwkJRjQzNTFCOUUyNUVFQzg0QzAwRDYzODkyIC8qIEltYWdlQW5hbHlz
aXNVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0MzUxQjlEMjVFRUM4NEMwMEQ2Mzg5MiAvKiBJbWFnZUFuYWx5c2lzVXRpbGl0aWVzLmgg
Ki87IH07CiAJCUY0MzhDRDFDMjI0MTQyMTQwMERFNkREQSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzOENE
MUIyMjQxNDBBNjAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlGNDM4Q0QxRjIyNDE0RDQwMDBE
RTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzOENEMUUyMjQxNEQ0MDAwREU2RERBIC8q
IFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwuaCAqLzsgfTsKIAkJRjQzOENEMjEyMjQxRjY5
NTAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzOENEMjAyMjQxRjY5NTAwREU2RERB
IC8qIFdLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02NjA2LDggKzY2MDYsOCBAQAogCQlGNDJENjM0
MDIyQTBFRkQzMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tOyBw
YXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjQzMEU5NDEyMjQ3MzJBOTAwNUZFMDUzIC8qIFdlYnNpdGVNZXRhVmlld3BvcnRQ
b2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDMwRTk0MzIyNDczREI4MDA1RkUwNTMgLyogV2Vi
Q29udGVudE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGVudE1vZGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjQzNTFCOUQyNUVFQzg0QzAwRDYzODkyIC8qIFRleHRSZWNv
Z25pdGlvblV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0UmVjb2duaXRpb25VdGlsaXRp
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjQzNTFCOUYyNUVFQzg3ODAwRDYz
ODkyIC8qIFRleHRSZWNvZ25pdGlvblV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFRleHRSZWNvZ25pdGlvblV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRjQzNTFCOUQyNUVFQzg0QzAwRDYzODkyIC8qIEltYWdlQW5hbHlzaXNVdGlsaXRpZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW1hZ2VBbmFseXNpc1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNDM1MUI5RjI1RUVDODc4MDBENjM4OTIgLyogSW1hZ2VBbmFseXNpc1V0
aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEltYWdlQW5hbHlzaXNVdGlsaXRpZXMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MzhDRDFCMjI0MTQwQTYwMERFNkRE
QSAvKiBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYnBhZ2VQcmVm
ZXJlbmNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDM4Q0QxRDIyNDE0QUQ2
MDBERTZEREEgLyogV0tXZWJwYWdlUHJlZmVyZW5jZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQzOENEMUUyMjQxNEQ0MDAwREU2RERBIC8qIFdLV2VicGFnZVByZWZlcmVuY2VzSW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJwYWdlUHJlZmVyZW5jZXNJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQ1NCw2ICs5NDU0LDggQEAKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTQ0ODI3MzQ2MjQ1MjhGNjAwMEE5NTQ5MyAvKiBDb2NvYUltYWdlLmggKi8sCiAJCQkJ
RjRFNDdCQjUyN0I1QUU1QjAwODEzQjM4IC8qIENvY29hSW1hZ2UubW0gKi8sCisJCQkJRjQzNTFC
OUQyNUVFQzg0QzAwRDYzODkyIC8qIEltYWdlQW5hbHlzaXNVdGlsaXRpZXMuaCAqLywKKwkJCQlG
NDM1MUI5RjI1RUVDODc4MDBENjM4OTIgLyogSW1hZ2VBbmFseXNpc1V0aWxpdGllcy5tbSAqLywK
IAkJCQlCQ0UwOTM3NjE0RkIxMjhCMDAxMTM4RDkgLyogTGF5ZXJIb3N0aW5nQ29udGV4dC5oICov
LAogCQkJCUJDRTA5Mzc1MTRGQjEyOEIwMDExMzhEOSAvKiBMYXllckhvc3RpbmdDb250ZXh0Lm1t
ICovLAogCQkJCUExNzk4QjNEMjIyRDk3QTIwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlci5oICovLApAQCAtOTQ2MSw4ICs5NDYzLDYgQEAKIAkJCQlBMTc5OEIzRjIyMkQ5
OEI2MDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oICovLAog
CQkJCUExNzk4QjQwMjIyRDk4QjYwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyLm1tICovLAogCQkJCTQ0NTBBRUJGMURDM0ZBRTUwMDk5NDNGMiAvKiBTaGFyZWRN
ZW1vcnlDb2NvYS5jcHAgKi8sCi0JCQkJRjQzNTFCOUQyNUVFQzg0QzAwRDYzODkyIC8qIFRleHRS
ZWNvZ25pdGlvblV0aWxpdGllcy5oICovLAotCQkJCUY0MzUxQjlGMjVFRUM4NzgwMEQ2Mzg5MiAv
KiBUZXh0UmVjb2duaXRpb25VdGlsaXRpZXMubW0gKi8sCiAJCQkJQTE4MUE3OTcyMUFDQUM2MTAw
NTlBMzE2IC8qIFdlYktpdEFkZGl0aW9ucy5tbSAqLywKIAkJCQlBMUZCNjgyMjFGNkU1MTgyMDBD
NDNGOUYgLyogV0tDcmFzaFJlcG9ydGVyLmggKi8sCiAJCQkJQTFGQjY4MjMxRjZFNTE4MjAwQzQz
RjlGIC8qIFdLQ3Jhc2hSZXBvcnRlci5tbSAqLywKQEAgLTEzMjg5LDYgKzEzMjg5LDcgQEAKIAkJ
CQk5M0I2MzFFODI3QUJBNjVEMDA0NDNBNDQgLyogSURCU3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTkzQjYzMUVEMjdBQkE2QjQwMDQ0M0E0NCAvKiBJREJTdG9yYWdlUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTM1MUNCMTgwRjJDQ0MwMEU1M0JFOSAvKiBJREJV
dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0MzUxQjlFMjVFRUM4NEMwMEQ2Mzg5MiAv
KiBJbWFnZUFuYWx5c2lzVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGNkIyNTEy
QzkzRTdBMDA4RjlDMzUgLyogSW1hZ2VPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTFF
QzY5RTE4NzIwOTIxMDBCOTUxRjAgLyogSW1wb3J0YW5jZUFzc2VydGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMyMDRFRTMxMUM4M0U5ODAwOEYzMzc1IC8qIEluamVjdGVkQnVuZGxlLmggaW4g
SGVhZGVycyAqLywKQEAgLTEzNjU1LDcgKzEzNjU2LDYgQEAKIAkJCQk1M0NGQkJDODIyMjREMUI1
MDAyNjY1NDYgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTVFNERBNDEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0UxQTBCRDcxQTQ4RTZDNjAwNTRFRjc0IC8qIFRleHRJbnB1dFNQSS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJRjQzNTFCOUUyNUVFQzg0QzAwRDYzODkyIC8qIFRleHRSZWNvZ25pdGlv
blV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBRjI2MzkxNDY4N0MzOTAwNEExRThB
IC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUYwNUQ4NzE0Njg4MzQ4MDA4QjFFODEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ4NTcwQTMyNjQ0QkVDNTAwQzA1RjcxIC8qIFRp
bWVvdXQuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>