<?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>225573</bug_id>
          
          <creation_ts>2021-05-08 18:35:09 -0700</creation_ts>
          <short_desc>Remove uses of the String::toInt family of functions from the WebCore/svg and WebCore/workers directories</short_desc>
          <delta_ts>2021-05-09 11:40:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1758259</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-08 18:35:09 -0700</bug_when>
    <thetext>Remove uses of the String::toInt family of functions from the WebCore/svg and WebCore/workers directories</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758260</commentid>
    <comment_count>1</comment_count>
      <attachid>428107</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-08 19:04:55 -0700</bug_when>
    <thetext>Created attachment 428107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758270</commentid>
    <comment_count>2</comment_count>
      <attachid>428109</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-08 20:48:00 -0700</bug_when>
    <thetext>Created attachment 428109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758281</commentid>
    <comment_count>3</comment_count>
      <attachid>428111</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-08 21:21:38 -0700</bug_when>
    <thetext>Created attachment 428111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758289</commentid>
    <comment_count>4</comment_count>
      <attachid>428111</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-08 21:53:42 -0700</bug_when>
    <thetext>Comment on attachment 428111
Patch

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

&gt; Source/WebCore/svg/SVGToOTFFontConversion.cpp:1456
&gt; +            if (value &amp;&amp; *value &gt;= 0 &amp;&amp; *value &lt; 1000) {
&gt; +                m_weight = std::max(std::min((*value + 50) / 100, static_cast&lt;int&gt;(std::numeric_limits&lt;uint8_t&gt;::max())), static_cast&lt;int&gt;(std::numeric_limits&lt;uint8_t&gt;::min()));

This std::max/min stuff is not needed. We can’t get a value outside the range 0-255 when we take a number that’s required to be in the range 0-999 and divide it by 100 (with rounding). That gives us a number in the range of 0-10, nowhere near 255, and not less than 0.

I’ll remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758348</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-09 11:40:25 -0700</bug_when>
    <thetext>Accidentally commit this along at the same time as the fix for bug 225577.

Committed r277245 (237514@main): &lt;https://commits.webkit.org/237514@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758349</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-09 11:40:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/77717702&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428107</attachid>
            <date>2021-05-08 19:04:55 -0700</date>
            <delta_ts>2021-05-08 20:57:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225573-20210508190454.patch</filename>
            <type>text/plain</type>
            <size>30377</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzdmY2ZjODNiMDQ1NTU5
NDlkMDIzZGZkNzliNjM5ODgxZjg3NDljYS4uZjYxNjJhZDYzN2JlNGZkM2M0ZWIyNjI4MTcyZDI0
YjEzOWU3ZjU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTA1LTA4ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdXNlcyBvZiB0aGUg
U3RyaW5nOjp0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zIGZyb20gdGhlIFdlYkNvcmUvc3ZnIGFu
ZCBXZWJDb3JlL3dvcmtlcnMgZGlyZWN0b3JpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEJvdGggU1ZHIGFuZCBzZXJ2aWNlIHdvcmtlcnMgaGFkIGNv
ZGUgdGhhdCBzaG91bGQgYmUgbW92ZWQgZnJvbSBoZWFkZXJzCisgICAgICAgIGludG8gaW1wbGVt
ZW50YXRpb24gZmlsZXMuIFRoaXMgYWxsb3dlZCB1cyB0byB1c2UgdGhlIG5ldyBwYXJzZUludGVn
ZXIKKyAgICAgICAgZnVuY3Rpb24gdGVtcGxhdGVzIHdpdGhvdXQgaW5jbHVkaW5nIHRoZSBoZWFk
ZXIgaW4gaGVhZGVycywgd2hpY2ggbWF5IGhlbHAKKyAgICAgICAga2VlcCBjb21waWxlIHRpbWVz
IGZyb20gZ2V0dGluZyBvdXQgb2YgaGFuZC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OiBBZGRl
ZCB0aGUgbmV3IHNvdXJjZSBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IERpdHRvLgorCisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6IFVzZSBwYXJzZUludGVnZXI8dW5zaWduZWQ+CisgICAgICAgIGlu
c3RlYWQgb2YgU3RyaW5nOjp0b1VJbnRTdHJpY3QuCisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOiBEaXR0by4KKworICAgICAgICAqIHN2Zy9TVkdUb09URkZvbnRD
b252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6
YXBwZW5kT1MyVGFibGUpOiBVc2UKKyAgICAgICAgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGlu
Z0p1bms8aW50PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQuIFVzZQorICAgICAgICBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50OF90PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9J
bnQsCisgICAgICAgIGFsbG93aW5nIHVzIHRvIHJlbW92ZSByYW5nZSBjaGVja2luZyB0byByZWpl
Y3QgdmFsdWVzIHRoYXQgYXJlIG91dCBvZiByYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rv
T1RGRm9udENvbnZlcnRlcjo6YXBwZW5kVk9SR1RhYmxlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRlcik6IERpdHRv
LgorCisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKTogVXNlIHBhcnNlSW50
ZWdlcjx1aW50OF90PgorICAgICAgICBpbnN0ZWFkIG9mIFN0cmluZzo6dG9VSW50U3RyaWN0LiBU
aGVzZSBhcmUgYWxsIDItY2hhcmFjdGVyIG51bWVyaWMKKyAgICAgICAgc3RyaW5ncy4gQWxzbyBz
aW1wbGlmaWVkIHRoZSBsb2dpYyBhbmQgdXNlZCBTdHJpbmdWaWV3IHNvIHdlIGRvbid0IGhhdmUg
dG8KKyAgICAgICAgYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgc3Vic3RyaW5ncy4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJzZUNvbmRpdGlvbik6IFVzZSBwYXJzZUludGVn
ZXI8dW5zaWduZWQ+CisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nOjp0b1VJbnRTdHJpY3QuIEFs
c28gdXNlZCBTdHJpbmdWaWV3LgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlv
bkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0aW9uSW50ZWdlckZ1bmN0aW9uOjpjYWxjdWxhdGVEaXN0YW5jZSBjb25zdCk6IE1vdmVkCisg
ICAgICAgIHRoaXMgZmlsZSBoZXJlIGZyb20gdGhlIGhlYWRlciwgYW5kIHVzZWQgcGFyc2VJbnRl
Z2VyPGludD4gcmF0aGVyIHRoYW4KKyAgICAgICAgU3RyaW5nOjp0b0ludFN0cmljdC4KKworICAg
ICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbklt
cGwuaDogTW92ZWQKKyAgICAgICAgU1ZHQW5pbWF0aW9uSW50ZWdlckZ1bmN0aW9uOjpjYWxjdWxh
dGVEaXN0YW5jZSBvdXQgb2YgdGhlIGhlYWRlci4KKyAgICAgICAgQWxzbyBtYXJrZWQgdGhlIGNs
YXNzIGFuZCBtZW1iZXIgZnVuY3Rpb25zIGZpbmFsLiAoQ291bGQgZG8gdGhhdCBmb3IKKyAgICAg
ICAgYSBsb3QgbW9yZSBvZiB0aGUgY2xhc3NlcyBpbiB0aGlzIGZpbGUuKQorCisgICAgICAgICog
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPGludD46OmZyb21TdHJpbmcpOiBNb3ZlZCB0aGlzIGhl
cmUgZnJvbSB0aGUKKyAgICAgICAgaGVhZGVyIGFuZCB1c2UgcGFyc2VJbnRlZ2VyPGludD4gaW5z
dGVhZCBvZiBTdHJpbmc6OnRvSW50U3RyaWN0LgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5VHJhaXRzLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6OmZyb21TdHJp
bmcpOiBNb3ZlZCB0aGlzIGhlcmUKKyAgICAgICAgZnJvbSB0aGUgaGVhZGVyIGFuZCB1c2UgcGFy
c2VJbnRlZ2VyPHVpbnQ2NF90PiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ1ZpZXc6OnRvVUlu
dDY0U3RyaWN0LgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllci5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisgICAgICAgIEFsc28gbW92ZWQg
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXJIYXNoIGZyb20gdGhlIFdURiBuYW1lc3BhY2UK
KyAgICAgICAgdG8gdGhlIFdlYkNvcmUgbmFtZXNwYWNlLgorCisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFiYXNlS2V5KTogVXNlCisg
ICAgICAgIHBhcnNlSW50ZWdlcjx1aW50MTZfdD4gaW5zdGVhZCBvZiBjaGFyYWN0ZXJzVG9VSW50
U3RyaWN0LCBhbGxvd2luZyB1cworICAgICAgICB0byByZW1vdmUgcmFuZ2UgY2hlY2tpbmcuIEFs
c28gdXNlIFN0cmluZ1ZpZXc6OnN1YnN0cmluZyBpbnN0ZWFkIG9mCisgICAgICAgIHdyaXRpbmcg
b3V0IHNwZWNpYWwgY2FzZXMgZm9yIDgtYml0IGFuZCAxNi1iaXQgY2hhcmFjdGVycy4KKwogMjAy
MS0wNS0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtDb2NvYV0gVW5pZnkgZm9udCBjb2xsZWN0aW9uIGhhbmRsaW5nIGJldHdlZW4gYWxsIENv
Y29hIHBvcnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGRlOTU3MGE1MjY3ZWY1Mzk1N2UzN2QxNjYwY2Uy
ZGEzOGNlZTc3ZmIuLmI5MTUwNWM1YWVhOTM2YjQ1NzYzY2I4NzM4ZDg2YjEzNzJmYTdiNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC0yNjUwLDYgKzI2NTAsNyBAQCBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXJCdWlsZGVyLmNwcAogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5j
cHAKIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwu
Y3BwCiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5jcHAKK3N2Zy9wcm9wZXJ0
aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmNwcAogd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAKIHdv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCiB3b3JrZXJzL0RlZGljYXRlZFdv
cmtlclRocmVhZC5jcHAKQEAgLTI2NzYsNiArMjY3Nyw3IEBAIHdvcmtlcnMvc2VydmljZS9TV0Ns
aWVudENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAKIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAogd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAord29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyLmNwcAogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRz
LmNwcAogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUwYzBhYTY0MzMwOGYx
YjI1ZTRkOWQ2Y2E3MGJlYWVhMTBmNWQ0ZmIuLmRlYzVkMGE4Yzc0YjA5NzljYmE2Y2JkMDY2NGQz
ZTUwOTgwNTZkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTExNzk3LDYgKzExNzk3LDggQEAKIAkJOTNGOUI2REYwQkEwRkI3
MjAwODU0MDY0IC8qIEpTQ29tbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0NvbW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOUI3OUUwQkE2
MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQ0RBVEFTZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0RBVEFTZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRkNEQjQ5MjY0NDU1RDYwMDQ2REQ3RCAvKiBTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
RkNEQjRCMjY0NzBERDEwMDQ2REQ3RCAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTVkdQcm9wZXJ0eVRyYWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzRkRBRkM5MEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRvckluc2VydEFjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQgLyog
U3R5bGVDb2xvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHls
ZUNvbG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQxODI3ODkxRDhCMjQy
MjAwNDkyNzY0IC8qIFN0eWxlQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3R5bGVDb2xvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc4NTQsNiAr
MTc4NTYsNyBAQAogCQkJCTU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eU93
bmVyLmggKi8sCiAJCQkJNTVCRTAyNUMyMjNCMjlDMzAwMzJGMDhBIC8qIFNWR1Byb3BlcnR5T3du
ZXJSZWdpc3RyeS5oICovLAogCQkJCTU1QkUwMjU3MjIzQjI5QzAwMDMyRjA4QSAvKiBTVkdQcm9w
ZXJ0eVJlZ2lzdHJ5LmggKi8sCisJCQkJOTNGQ0RCNEIyNjQ3MEREMTAwNDZERDdEIC8qIFNWR1By
b3BlcnR5VHJhaXRzLmNwcCAqLywKIAkJCQkwODhBMEUwMzEyNkVGMURCMDA5NzhGN0EgLyogU1ZH
UHJvcGVydHlUcmFpdHMuaCAqLywKIAkJCQk1NTBGNjY0NTIyQ0E4OUJEMDAwQTM0MTcgLyogU1ZH
U2hhcmVkUHJpbWl0aXZlUHJvcGVydHkuaCAqLywKIAkJCQk3MjE0NDM0NjIyNDBDQUQyMDBGMTJG
RjcgLyogU1ZHVmFsdWVQcm9wZXJ0eS5oICovLApAQCAtMjA5MzgsNiArMjA5NDEsNyBAQAogCQkJ
CTQ2RUYxNDI4MUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkbCAqLywK
IAkJCQk4Mzc5MzYzQzFGQkJCMEE0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEu
Y3BwICovLAogCQkJCTgzNzkzNjNFMUZCQkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YS5oICovLAorCQkJCTkzRkNEQjQ5MjY0NDU1RDYwMDQ2REQ3RCAvKiBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllci5jcHAgKi8sCiAJCQkJODM3RDQ2MjUxRkEyQThDNTAwNTRFMUZB
IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmggKi8sCiAJCQkJNDEzRkM0Q0QxRkQx
REQ4QzAwNTQxQzRCIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaCAqLywKIAkJ
CQk0NkVGMTQyMTFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMuY3BwICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5j
cHAKaW5kZXggNGU4YjZjNTkyMmU4YjI5ZTBmOTY2M2MxMzEyMDQ1ODg2MzAzOThlYi4uYmEwYmI1
MWM5N2UyNjgyYjUzMDA2NDlmMmQyNTcwOGY1ZWI1MDI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC0xMDUsMTIgKzEwNSwx
MiBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdAogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNW
R05hbWVzOjp0YXJnZXRYQXR0cikgewotICAgICAgICBtX3RhcmdldFgtPnNldEJhc2VWYWxJbnRl
cm5hbCh2YWx1ZS5zdHJpbmcoKS50b1VJbnRTdHJpY3QoKSk7CisgICAgICAgIG1fdGFyZ2V0WC0+
c2V0QmFzZVZhbEludGVybmFsKHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4odmFsdWUpLnZhbHVlT3Io
MCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OnRhcmdldFlBdHRyKSB7Ci0gICAgICAgIG1fdGFyZ2V0WS0+c2V0QmFzZVZhbEludGVybmFsKHZh
bHVlLnN0cmluZygpLnRvVUludFN0cmljdCgpKTsKKyAgICAgICAgbV90YXJnZXRZLT5zZXRCYXNl
VmFsSW50ZXJuYWwocGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZSkudmFsdWVPcigwKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmNwcAppbmRleCBjZjQ5ODRiZjk0N2FlZDFhNTA3Njc2MWZlMDBhZTc4OGY1
MjYwMmJkLi4zNjUzZmZlMzRiYmJlNTdhYTdkMzIxY2NiMTRmODNhMWRlYmIwZjFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCkBAIC04MCw3ICs4
MCw3IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyKSB7Ci0gICAgICAgIG1fbnVtT2N0YXZlcy0+c2V0QmFz
ZVZhbEludGVybmFsKHZhbHVlLnN0cmluZygpLnRvVUludFN0cmljdCgpKTsKKyAgICAgICAgbV9u
dW1PY3RhdmVzLT5zZXRCYXNlVmFsSW50ZXJuYWwocGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1
ZSkudmFsdWVPcigwKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRleCBkMjhjNDRmYjc0MmFkMzBm
OTdkNDcwZGY5NjdhOWIwOGY0NWMwNzEwLi4wOWY2NmFlYWYyNjZiNTYwMThiZmJhZDA1OTcxNDBi
MmFiZDc1NzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29u
dmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNp
b24uY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiU1ZHVktlcm5FbGVtZW50LmgiCiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4OSwxMyArNDkw
LDExIEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjphcHBlbmROQU1FVGFibGUoKQogdm9p
ZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZE9TMlRhYmxlKCkKIHsKICAgICBpbnQxNl90
IGF2ZXJhZ2VBZHZhbmNlID0gc19vdXRwdXRVbml0c1BlckVtOwotICAgIGJvb2wgb2s7Ci0gICAg
aW50IHZhbHVlID0gbV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIpLnRvSW50KCZvayk7Ci0gICAgaWYgKCFvayAmJiBt
X21pc3NpbmdHbHlwaEVsZW1lbnQpCi0gICAgICAgIHZhbHVlID0gbV9taXNzaW5nR2x5cGhFbGVt
ZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZf
eEF0dHIpLnRvSW50KCZvayk7Ci0gICAgdmFsdWUgPSBzY2FsZVVuaXRzUGVyRW0odmFsdWUpOwot
ICAgIGlmIChvaykKLSAgICAgICAgYXZlcmFnZUFkdmFuY2UgPSBjbGFtcFRvPGludDE2X3Q+KHZh
bHVlKTsKKyAgICBhdXRvIGhvcml6QWR2WCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPGludD4obV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNW
R05hbWVzOjpob3Jpel9hZHZfeEF0dHIpKTsKKyAgICBpZiAoIWhvcml6QWR2WCAmJiBtX21pc3Np
bmdHbHlwaEVsZW1lbnQpCisgICAgICAgIGhvcml6QWR2WCA9IHBhcnNlSW50ZWdlckFsbG93aW5n
VHJhaWxpbmdKdW5rPGludD4obV9taXNzaW5nR2x5cGhFbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIpKTsKKyAgICBpZiAoaG9y
aXpBZHZYKQorICAgICAgICBhdmVyYWdlQWR2YW5jZSA9IGNsYW1wVG88aW50MTZfdD4oc2NhbGVV
bml0c1BlckVtKCpob3JpekFkdlgpKTsKIAogICAgIGFwcGVuZDE2KDIpOyAvLyBWZXJzaW9uCiAg
ICAgYXBwZW5kMTYoY2xhbXBUbzxpbnQxNl90PihhdmVyYWdlQWR2YW5jZSkpOwpAQCAtNTIyLDEw
ICs1MjEsOCBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kT1MyVGFibGUoKQog
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBzZWdtZW50cyA9IG1fZm9udEZhY2VFbGVtZW50LT5hdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpwYW5vc2VfMUF0dHIpLnN0cmlu
ZygpLnNwbGl0KCcgJyk7CiAgICAgICAgIGlmIChzZWdtZW50cy5zaXplKCkgPT0gcGFub3NlU2l6
ZSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogc2VnbWVudHMpIHsKLSAgICAg
ICAgICAgICAgICBib29sIG9rOwotICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9IHNlZ21lbnQu
dG9JbnQoJm9rKTsKLSAgICAgICAgICAgICAgICBpZiAob2sgJiYgdmFsdWUgPj0gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50OF90Pjo6bWluKCkgJiYgdmFsdWUgPD0gc3RkOjpudW1lcmljX2xpbWl0
czx1aW50OF90Pjo6bWF4KCkpCi0gICAgICAgICAgICAgICAgICAgIHBhbm9zZUJ5dGVzW251bVBh
bm9zZUJ5dGVzKytdID0gdmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50OF90PihzZWdtZW50KSkKKyAgICAg
ICAgICAgICAgICAgICAgcGFub3NlQnl0ZXNbbnVtUGFub3NlQnl0ZXMrK10gPSAqdmFsdWU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC05NDcsMjAgKzk0NCwxOCBAQCB2b2lk
IFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kVk9SR1RhYmxlKCkKICAgICBhcHBlbmQxNigx
KTsgLy8gTWFqb3IgdmVyc2lvbgogICAgIGFwcGVuZDE2KDApOyAvLyBNaW5vciB2ZXJzaW9uCiAK
LSAgICBib29sIG9rOwotICAgIGludCBkZWZhdWx0VmVydGljYWxPcmlnaW5ZID0gbV9mb250RWxl
bWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2ZXJ0X29yaWdp
bl95QXR0cikudG9JbnQoJm9rKTsKLSAgICBpZiAoIW9rICYmIG1fbWlzc2luZ0dseXBoRWxlbWVu
dCkKLSAgICAgICAgZGVmYXVsdFZlcnRpY2FsT3JpZ2luWSA9IG1fbWlzc2luZ0dseXBoRWxlbWVu
dC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6dmVydF9vcmlnaW5f
eUF0dHIpLnRvSW50KCk7Ci0gICAgZGVmYXVsdFZlcnRpY2FsT3JpZ2luWSA9IHNjYWxlVW5pdHNQ
ZXJFbShkZWZhdWx0VmVydGljYWxPcmlnaW5ZKTsKLSAgICBhcHBlbmQxNihjbGFtcFRvPGludDE2
X3Q+KGRlZmF1bHRWZXJ0aWNhbE9yaWdpblkpKTsKKyAgICBhdXRvIHZlcnRPcmlnaW5ZID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihtX2ZvbnRFbGVtZW50LmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lBdHRyKSk7Cisg
ICAgaWYgKCF2ZXJ0T3JpZ2luWSAmJiBtX21pc3NpbmdHbHlwaEVsZW1lbnQpCisgICAgICAgIHZl
cnRPcmlnaW5ZID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihtX21pc3Np
bmdHbHlwaEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6
OnZlcnRfb3JpZ2luX3lBdHRyKSk7CisgICAgYXBwZW5kMTYoY2xhbXBUbzxpbnQxNl90PihzY2Fs
ZVVuaXRzUGVyRW0odmVydE9yaWdpblkudmFsdWVPcigwKSkpKTsKIAogICAgIGF1dG8gdGFibGVT
aXplT2Zmc2V0ID0gbV9yZXN1bHQuc2l6ZSgpOwogICAgIGFwcGVuZDE2KDApOyAvLyBQbGFjZSB0
byB3cml0ZSB0YWJsZSBzaXplLgogICAgIGZvciAoR2x5cGggaSA9IDA7IGkgPCBtX2dseXBocy5z
aXplKCk7ICsraSkgewogICAgICAgICBpZiAoYXV0byogZ2x5cGggPSBtX2dseXBoc1tpXS5nbHlw
aEVsZW1lbnQpIHsKLSAgICAgICAgICAgIGlmIChpbnQgdmVydGljYWxPcmlnaW5ZID0gZ2x5cGgt
PmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lB
dHRyKS50b0ludCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byB2ZXJ0aWNhbE9yaWdpblkgPSBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KGdseXBoLT5hdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2ZXJ0X29yaWdpbl95QXR0cikpKSB7CiAgICAg
ICAgICAgICAgICAgYXBwZW5kMTYoaSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kMTYoY2xhbXBU
bzxpbnQxNl90PihzY2FsZVVuaXRzUGVyRW0odmVydGljYWxPcmlnaW5ZKSkpOworICAgICAgICAg
ICAgICAgIGFwcGVuZDE2KGNsYW1wVG88aW50MTZfdD4oc2NhbGVVbml0c1BlckVtKCp2ZXJ0aWNh
bE9yaWdpblkpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDU2LDEw
ICsxNDUxLDkgQEAgU1ZHVG9PVEZGb250Q29udmVydGVyOjpTVkdUb09URkZvbnRDb252ZXJ0ZXIo
Y29uc3QgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50KQogICAgICAgICAgICAgICAgIG1fd2Vp
Z2h0ID0gNzsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICBpbnQgdmFsdWUgPSBzZWdtZW50LnRvSW50KG9rKTsK
LSAgICAgICAgICAgIGlmIChvayAmJiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMTAwMCkgewotICAg
ICAgICAgICAgICAgIG1fd2VpZ2h0ID0gc3RkOjptYXgoc3RkOjptaW4oKHZhbHVlICsgNTApIC8g
MTAwLCBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDhfdD46Om1heCgp
KSksIHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWluKCkp
KTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazxpbnQ+KHNlZ21lbnQpOworICAgICAgICAgICAgaWYgKHZhbHVlICYmICp2YWx1ZSA+PSAw
ICYmICp2YWx1ZSA8IDEwMDApIHsKKyAgICAgICAgICAgICAgICBtX3dlaWdodCA9IHN0ZDo6bWF4
KHN0ZDo6bWluKCgqdmFsdWUgKyA1MCkgLyAxMDAsIHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1l
cmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkpKSwgc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQ4X3Q+OjptaW4oKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5p
bWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24v
U1ZHU01JTEVsZW1lbnQuY3BwCmluZGV4IDY2MzM5MDU1MDAxZTVhOWI5ZGY5Yjc3YjI0Mzc2ZjUy
MGM0YzMzMTEuLjdjNGU0N2NhNjFjMjJhMDFjNTRmMjMzZmEzNDE4NThiMTM2MzkzYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC0z
MzMsNyArMzMzLDcgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZShj
b25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgaWYgKGRhdGEuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBTTUlMVGltZTo6dW5yZXNvbHZlZCgpOwotICAgIAorCiAgICAgU3RyaW5nIHBhcnNlID0g
ZGF0YS5zdHJpcFdoaXRlU3BhY2UoKTsKIAogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW5kZWZpbml0ZVZhbHVlKCJpbmRlZmluaXRlIiwgQXRv
bVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwpAQCAtMzQ0LDI3ICszNDQsMjQgQEAgU01J
TFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZShjb25zdCBTdHJpbmcmIGRhdGEp
CiAgICAgYm9vbCBvazsKICAgICBzaXplX3QgZG91YmxlUG9pbnRPbmUgPSBwYXJzZS5maW5kKCc6
Jyk7CiAgICAgc2l6ZV90IGRvdWJsZVBvaW50VHdvID0gcGFyc2UuZmluZCgnOicsIGRvdWJsZVBv
aW50T25lICsgMSk7Ci0gICAgaWYgKGRvdWJsZVBvaW50T25lID09IDIgJiYgZG91YmxlUG9pbnRU
d28gPT0gNSAmJiBwYXJzZS5sZW5ndGgoKSA+PSA4KSB7IAotICAgICAgICByZXN1bHQgKz0gcGFy
c2Uuc3Vic3RyaW5nKDAsIDIpLnRvVUludFN0cmljdCgmb2spICogNjAgKiA2MDsKLSAgICAgICAg
aWYgKCFvaykKKyAgICBpZiAoZG91YmxlUG9pbnRPbmUgPT0gMiAmJiBkb3VibGVQb2ludFR3byA9
PSA1ICYmIHBhcnNlLmxlbmd0aCgpID49IDgpIHsKKyAgICAgICAgYXV0byBob3VyID0gcGFyc2VJ
bnRlZ2VyPHVpbnQ4X3Q+KFN0cmluZ1ZpZXcgeyBwYXJzZSB9LnN1YnN0cmluZygwLCAyKSk7Cisg
ICAgICAgIGF1dG8gbWludXRlID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KFN0cmluZ1ZpZXcgeyBw
YXJzZSB9LnN1YnN0cmluZygzLCAyKSk7CisgICAgICAgIGlmICghaG91ciB8fCAhbWludXRlKQog
ICAgICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJlc29sdmVkKCk7Ci0gICAgICAgIHJlc3Vs
dCArPSBwYXJzZS5zdWJzdHJpbmcoMywgMikudG9VSW50U3RyaWN0KCZvaykgKiA2MDsKLSAgICAg
ICAgaWYgKCFvaykKLSAgICAgICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNvbHZlZCgpOwot
ICAgICAgICByZXN1bHQgKz0gcGFyc2Uuc3Vic3RyaW5nKDYpLnRvRG91YmxlKCZvayk7CisgICAg
ICAgIHJlc3VsdCA9ICpob3VyICogNjAgKiA2MCArICptaW51dGUgKiA2MCArIHBhcnNlLnN1YnN0
cmluZyg2KS50b0RvdWJsZSgmb2spOwogICAgIH0gZWxzZSBpZiAoZG91YmxlUG9pbnRPbmUgPT0g
MiAmJiBkb3VibGVQb2ludFR3byA9PSBub3RGb3VuZCAmJiBwYXJzZS5sZW5ndGgoKSA+PSA1KSB7
IAotICAgICAgICByZXN1bHQgKz0gcGFyc2Uuc3Vic3RyaW5nKDAsIDIpLnRvVUludFN0cmljdCgm
b2spICogNjA7Ci0gICAgICAgIGlmICghb2spCisgICAgICAgIGF1dG8gbWludXRlID0gcGFyc2VJ
bnRlZ2VyPHVpbnQ4X3Q+KFN0cmluZ1ZpZXcgeyBwYXJzZSB9LnN1YnN0cmluZygwLCAyKSk7Cisg
ICAgICAgIGlmICghbWludXRlKQogICAgICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJlc29s
dmVkKCk7Ci0gICAgICAgIHJlc3VsdCArPSBwYXJzZS5zdWJzdHJpbmcoMykudG9Eb3VibGUoJm9r
KTsKKyAgICAgICAgcmVzdWx0ID0gKm1pbnV0ZSAqIDYwICsgcGFyc2Uuc3Vic3RyaW5nKDMpLnRv
RG91YmxlKCZvayk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBwYXJzZU9mZnNldFZhbHVl
KHBhcnNlKTsKLQogICAgIGlmICghb2sgfHwgIVNNSUxUaW1lKHJlc3VsdCkuaXNGaW5pdGUoKSkK
ICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJlc29sdmVkKCk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KLSAgICAKKwogc3RhdGljIHZvaWQgc29ydFRpbWVMaXN0KFZlY3RvcjxTTUlMVGltZVdp
dGhPcmlnaW4+JiB0aW1lTGlzdCkKIHsKICAgICBzdGQ6OnNvcnQodGltZUxpc3QuYmVnaW4oKSwg
dGltZUxpc3QuZW5kKCkpOwpAQCAtMzc1LDcgKzM3Miw2IEBAIGJvb2wgU1ZHU01JTEVsZW1lbnQ6
OnBhcnNlQ29uZGl0aW9uKGNvbnN0IFN0cmluZyYgdmFsdWUsIEJlZ2luT3JFbmQgYmVnaW5PckVu
ZCkKICAgICBTdHJpbmcgcGFyc2VTdHJpbmcgPSB2YWx1ZS5zdHJpcFdoaXRlU3BhY2UoKTsKICAg
ICAKICAgICBkb3VibGUgc2lnbiA9IDEuOwotICAgIGJvb2wgb2s7CiAgICAgc2l6ZV90IHBvcyA9
IHBhcnNlU3RyaW5nLmZpbmQoJysnKTsKICAgICBpZiAocG9zID09IG5vdEZvdW5kKSB7CiAgICAg
ICAgIHBvcyA9IHBhcnNlU3RyaW5nLmZpbmQoJy0nKTsKQEAgLTQxMiwxMiArNDA4LDEzIEBAIGJv
b2wgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ29uZGl0aW9uKGNvbnN0IFN0cmluZyYgdmFsdWUsIEJl
Z2luT3JFbmQgYmVnaW5PckVuZCkKICAgICBDb25kaXRpb246OlR5cGUgdHlwZTsKICAgICBpbnQg
cmVwZWF0cyA9IC0xOwogICAgIGlmIChuYW1lU3RyaW5nLnN0YXJ0c1dpdGgoInJlcGVhdCgiKSAm
JiBuYW1lU3RyaW5nLmVuZHNXaXRoKCcpJykpIHsKLSAgICAgICAgLy8gRklYTUU6IEZvciByZXBl
YXQgZXZlbnRzIHdlIGp1c3QgbmVlZCB0byBhZGQgdGhlIGRhdGEgY2FycnlpbmcgVGltZUV2ZW50
IGNsYXNzIGFuZCAKLSAgICAgICAgLy8gZmlyZSB0aGUgZXZlbnRzIGF0IGFwcHJvcGlhdGUgdGlt
ZXMuCi0gICAgICAgIHJlcGVhdHMgPSBuYW1lU3RyaW5nLnN1YnN0cmluZyg3LCBuYW1lU3RyaW5n
Lmxlbmd0aCgpIC0gOCkudG9VSW50U3RyaWN0KCZvayk7Ci0gICAgICAgIGlmICghb2spCisgICAg
ICAgIC8vIEZJWE1FOiBGb3IgcmVwZWF0IGV2ZW50cyB3ZSBqdXN0IG5lZWQgdG8gYWRkIHRoZSBk
YXRhIGNhcnJ5aW5nIFRpbWVFdmVudCBjbGFzcyBhbmQgZmlyZSB0aGUgZXZlbnRzIGF0IGFwcHJv
cGlhdGUgdGltZXMuCisgICAgICAgIGF1dG8gcGFyc2VkUmVwZWF0ID0gcGFyc2VJbnRlZ2VyPHVu
c2lnbmVkPihTdHJpbmdWaWV3IHsgbmFtZVN0cmluZyB9LnN1YnN0cmluZyg3LCBuYW1lU3RyaW5n
Lmxlbmd0aCgpIC0gOCkpOworICAgICAgICBpZiAoIXBhcnNlZFJlcGVhdCkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgbmFtZVN0cmluZyA9ICJyZXBlYXQiOworICAgICAgICAv
LyBGSVhNRTogQnkgYXNzaWduaW5nIGFuIHVuc2lnbmVkIHRvIGEgc2lnbmVkLCB0aGlzIGNhbiB0
dXJuIGxhcmdlIGludGVnZXJzIGludG8gbmVnYXRpdmUgbnVtYmVycy4KKyAgICAgICAgcmVwZWF0
cyA9ICpwYXJzZWRSZXBlYXQ7CisgICAgICAgIG5hbWVTdHJpbmcgPSAicmVwZWF0Il9zOwogICAg
ICAgICB0eXBlID0gQ29uZGl0aW9uOjpFdmVudEJhc2U7CiAgICAgfSBlbHNlIGlmIChuYW1lU3Ry
aW5nID09ICJiZWdpbiIgfHwgbmFtZVN0cmluZyA9PSAiZW5kIikgewogICAgICAgICBpZiAoYmFz
ZUlELmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5j
cHAKaW5kZXggNDc2ZmIzNGIzYWNhNGIyMWZiN2QwZWRjZWMxZGYwYTkxMjhkOTg5NC4uMjY0YWI2
MDE0OTk1NmE1ZDFjZTQzZGU0NzU4ZDRlNzE1ZTRiNjYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRk
aXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQ0LDQgKzQ1LDkgQEAgQ29sb3IgU1ZHQW5pbWF0aW9uQ29sb3JGdW5jdGlvbjo6Y29s
b3JGcm9tU3RyaW5nKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnMKICAgICByZXR1cm4g
eyB9OwogfQogCitPcHRpb25hbDxmbG9hdD4gU1ZHQW5pbWF0aW9uSW50ZWdlckZ1bmN0aW9uOjpj
YWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBT
dHJpbmcmIHRvKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6OmFicyhwYXJzZUludGVnZXI8aW50
Pih0bykudmFsdWVPcigwKSAtIHBhcnNlSW50ZWdlcjxpbnQ+KGZyb20pLnZhbHVlT3IoMCkpOwor
fQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgKaW5kZXggNGNl
Y2NmN2FmMDBhNzUyYzlkMGY1YWQ5MDQ3MWY1MDg2YzdhNzkwNi4uNGJhMzdhOWNhN2NmOGEzNDRi
YTYzYjQ2MTcwYWM3YjI0NWEyYzY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5j
dGlvbkltcGwuaApAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIENvbG9y
IGNvbG9yRnJvbVN0cmluZyhTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJik7CiB9OwogCi1jbGFz
cyBTVkdBbmltYXRpb25JbnRlZ2VyRnVuY3Rpb24gOiBwdWJsaWMgU1ZHQW5pbWF0aW9uQWRkaXRp
dmVWYWx1ZUZ1bmN0aW9uPGludD4geworY2xhc3MgU1ZHQW5pbWF0aW9uSW50ZWdlckZ1bmN0aW9u
IGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbjxpbnQ+IHsK
ICAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9yOwogCiBwdWJs
aWM6CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogICAgICAgICBtX3RvID0gU1ZHUHJvcGVy
dHlUcmFpdHM8aW50Pjo6ZnJvbVN0cmluZyh0byk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRUb0F0
RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb24pIG92ZXJy
aWRlCisgICAgdm9pZCBzZXRUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9B
dEVuZE9mRHVyYXRpb24pIGZpbmFsCiAgICAgewogICAgICAgICBtX3RvQXRFbmRPZkR1cmF0aW9u
ID0gU1ZHUHJvcGVydHlUcmFpdHM8aW50Pjo6ZnJvbVN0cmluZyh0b0F0RW5kT2ZEdXJhdGlvbik7
CiAgICAgfQpAQCAtMTQ5LDEzICsxNDksMTAgQEAgcHVibGljOgogICAgICAgICBhbmltYXRlZCA9
IHN0YXRpY19jYXN0PGludD4ocm91bmRmKEJhc2U6OmFuaW1hdGUocHJvZ3Jlc3MsIHJlcGVhdENv
dW50LCBtX2Zyb20sIG1fdG8sIHRvQXRFbmRPZkR1cmF0aW9uKCksIGFuaW1hdGVkKSkpOwogICAg
IH0KIAotICAgIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50Kiwg
Y29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdCBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6YWJzKHRvLnRvSW50U3RyaWN0KCkgLSBmcm9tLnRvSW50
U3RyaWN0KCkpOwotICAgIH0KKyAgICBPcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2Uo
U1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwog
CiBwcml2YXRlOgotICAgIHZvaWQgYWRkRnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqKSBvdmVy
cmlkZQorICAgIHZvaWQgYWRkRnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqKSBmaW5hbAogICAg
IHsKICAgICAgICAgbV90byArPSBtX2Zyb207CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlNGY0
NzhkNzEzMmYxOWRmZWM2YjkwMjQwMDQwOWQzZTFjOTVlYjgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5jcHAKQEAgLTAs
MCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0cy5oIgorCisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2ludCBTVkdQcm9wZXJ0eVRyYWl0czxpbnQ+Ojpmcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiBwYXJzZUludGVnZXI8aW50PihzdHJp
bmcpLnZhbHVlT3IoMCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCmluZGV4IDdkMDRmYmM1YTVhZTgxZTRlMDRiODA0ZjM5
ZGY2ZDY2NjgzZTBhODUuLjBjYWRhN2EwMmNhZjAwNDMyNzIyMmIzOGUxY2FmZjkyYmNjYzIzNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJh
aXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFp
dHMuaApAQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8dW5zaWduZWQ+
IHsKIHRlbXBsYXRlPD4KIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxpbnQ+IHsKICAgICBzdGF0
aWMgaW50IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMgaW50IGZyb21T
dHJpbmcoY29uc3QgU3RyaW5nJnN0cmluZykgeyByZXR1cm4gc3RyaW5nLnRvSW50U3RyaWN0KCk7
IH0KKyAgICBzdGF0aWMgaW50IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGlj
IE9wdGlvbmFsPGludD4gcGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFN0cmluZyYp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBpbml0aWFsVmFsdWUoKTsgfQogICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmcoaW50IHR5cGUpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHR5
cGUpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTZk
NDQ3ZGFiNTRhYzk2ZWY2ZTBjNzY3N2IyNWUyYzczNDRhMDg0YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllci5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIgorCisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGVOdW1iZXJzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lv
bi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK09wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhT
dHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBj
bGllbnRJZGVudGlmaWVyOworICAgIHVuc2lnbmVkIGNvdW50ZXIgPSAwOworICAgIGZvciAoYXV0
byBpdGVtIDogc3RyaW5nLnNwbGl0KCctJykpIHsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyID0g
cGFyc2VJbnRlZ2VyPHVpbnQ2NF90PihpdGVtKTsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyIHx8
ICEqaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IGlmICghY291bnRlcisrKQorICAgICAgICAgICAgY2xpZW50SWRlbnRpZmllci5zZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXJUeXBlPihpZGVudGlmaWVyLnZhbHVlKCkpOworICAgICAgICBlbHNlIGlmIChj
b3VudGVyID09IDIpCisgICAgICAgICAgICBjbGllbnRJZGVudGlmaWVyLmNvbnRleHRJZGVudGlm
aWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8RG9jdW1lbnRJZGVudGlmaWVyVHlwZT4oaWRlbnRp
Zmllci52YWx1ZSgpKTsKKyAgICB9CisgICAgcmV0dXJuIChjb3VudGVyID09IDIpID8gbWFrZU9w
dGlvbmFsKFdURk1vdmUoY2xpZW50SWRlbnRpZmllcikpIDogV1RGOjpudWxsb3B0OworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCmluZGV4IGMzZmRiNWUxZDZiYTA3MzFmMjZmZjVh
NGYzNzU1OGRiNGY0YzE1NzYuLjk4YTRlMzU1NmQxNzgwMDIwMmU1M2EzMGZiNDIwZGZmNjhmYTgz
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5j
bHVkZSAiRG9jdW1lbnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVz
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlTnVtYmVycy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ5LDI0ICs0
OCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciB7CiAKIGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGEsIGNv
bnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBiKQogewotICAgIHJldHVybiBhLnNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID09IGIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIg
JiYgIGEuY29udGV4dElkZW50aWZpZXIgPT0gYi5jb250ZXh0SWRlbnRpZmllcjsKLX0KLQotaW5s
aW5lIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyOwotCi0gICAgdW5z
aWduZWQgY291bnRlciA9IDA7Ci0gICAgZm9yIChhdXRvIGl0ZW0gOiBzdHJpbmcuc3BsaXQoJy0n
KSkgewotICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBpdGVtLnRvVUludDY0U3RyaWN0KCk7Ci0g
ICAgICAgIGlmICghaWRlbnRpZmllciB8fCAhKmlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgICAgICBpZiAoIWNvdW50ZXIrKykKLSAgICAgICAgICAgIGNs
aWVudElkZW50aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRl
bnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oaWRlbnRpZmllci52YWx1
ZSgpKTsKLSAgICAgICAgZWxzZSBpZiAoY291bnRlciA9PSAyKQotICAgICAgICAgICAgY2xpZW50
SWRlbnRpZmllci5jb250ZXh0SWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPERvY3Vt
ZW50SWRlbnRpZmllclR5cGU+KGlkZW50aWZpZXIudmFsdWUoKSk7Ci0gICAgfQotICAgIHJldHVy
biAoY291bnRlciA9PSAyKSA/IG1ha2VPcHRpb25hbChXVEZNb3ZlKGNsaWVudElkZW50aWZpZXIp
KSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciA9PSBiLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyICYmIGEuY29udGV4dElkZW50aWZpZXIg
PT0gYi5jb250ZXh0SWRlbnRpZmllcjsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAg
LTk2LDI1ICs3OCwyMyBAQCBpbmxpbmUgdW5zaWduZWQgU2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXI6Omhhc2goKSBjb25zdAogICAgIHJldHVybiBjb21wdXRlSGFzaChzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgY29udGV4dElkZW50aWZpZXIpOwogfQogCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXJIYXNoIHsKICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9
CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXImIGEsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyJiBiKSB7IHJldHVybiBhID09IGI7IH0KICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiB9OwogCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKK25hbWVzcGFjZSBXVEYgeworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRz
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiB7CiAgICAgc3RhdGljIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGVtcHR5VmFsdWUoKSB7IHJldHVy
biB7IH07IH0KLQogICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZz
bG90LnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KLQogICAgIHN0YXRpYyBib29s
IGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyJiBzbG90KSB7IHJldHVybiBzbG90LnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiA6IFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVySGFzaCB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFz
aDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gOiBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllckhhc2ggeyB9OwogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5LmNwcAppbmRleCA0Y2U3MGExNTEyZmEwYjQzNzE0YWJjMWRlYjc0ZTE0NWI0ZDll
YzExLi5lNDQ1MmE3ZjQ1YTg0MDQ2YjUzNGZmMDQ1ZWFiYTBiY2M2MWQ4YmI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTEwNywyMCArMTA4LDkgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eT4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFiYXMKIAogICAgIC8vIElm
IHRoZXJlJ3MgYSBnYXAgYmV0d2VlbiB0aGlyZCBhbmQgc2Vjb25kLCB3ZSBleHBlY3QgdG8gaGF2
ZSBhIHBvcnQgdG8gZGVjb2RlCiAgICAgaWYgKHRoaXJkIC0gc2Vjb25kID4gMSkgewotICAgICAg
ICBib29sIG9rOwotICAgICAgICB1bnNpZ25lZCBwb3J0OwotICAgICAgICBpZiAoa2V5LmlzOEJp
dCgpKQotICAgICAgICAgICAgcG9ydCA9IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3Qoa2V5LmNoYXJh
Y3RlcnM4KCkgKyBzZWNvbmQgKyAxLCB0aGlyZCAtIHNlY29uZCAtIDEgLCAmb2spOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBwb3J0ID0gY2hhcmFjdGVyc1RvVUludFN0cmljdChrZXkuY2hh
cmFjdGVyczE2KCkgKyBzZWNvbmQgKyAxLCB0aGlyZCAtIHNlY29uZCAtIDEsICZvayk7Ci0KLSAg
ICAgICAgaWYgKCFvaykKKyAgICAgICAgc2hvcnRQb3J0ID0gcGFyc2VJbnRlZ2VyPHVpbnQxNl90
PihTdHJpbmdWaWV3IHsga2V5IH0uc3Vic3RyaW5nKHNlY29uZCArIDEsIHRoaXJkIC0gc2Vjb25k
IC0gMSkpOworICAgICAgICBpZiAoIXNob3J0UG9ydCkKICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0KLSAgICAgICAgaWYgKHBvcnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQx
Nl90Pjo6bWF4KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAg
IHNob3J0UG9ydCA9IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KTsKICAgICB9CiAKICAgICBh
dXRvIHNjb3BlID0gVVJMIHsgVVJMKCksIGtleS5zdWJzdHJpbmcodGhpcmQgKyAxKSB9Owo=
</data>
<flag name="commit-queue"
          id="448934"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428109</attachid>
            <date>2021-05-08 20:48:00 -0700</date>
            <delta_ts>2021-05-08 21:40:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225573-20210508204759.patch</filename>
            <type>text/plain</type>
            <size>30728</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQzOGI1M2Y1MjhiMzE5
M2QwZDhhN2U5N2U1ZGU5YTcxMDhjNGQzNS4uNGMwMDlkNWFjM2RmZjM4NDM2YTgyY2RjM2FmOTRh
NzYwOTk5YTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTA1LTA4ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdXNlcyBvZiB0aGUg
U3RyaW5nOjp0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zIGZyb20gdGhlIFdlYkNvcmUvc3ZnIGFu
ZCBXZWJDb3JlL3dvcmtlcnMgZGlyZWN0b3JpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEJvdGggU1ZHIGFuZCBzZXJ2aWNlIHdvcmtlcnMgaGFkIGNv
ZGUgdGhhdCBzaG91bGQgYmUgbW92ZWQgZnJvbSBoZWFkZXJzCisgICAgICAgIGludG8gaW1wbGVt
ZW50YXRpb24gZmlsZXMuIFRoaXMgYWxsb3dlZCB1cyB0byB1c2UgdGhlIG5ldyBwYXJzZUludGVn
ZXIKKyAgICAgICAgZnVuY3Rpb24gdGVtcGxhdGVzIHdpdGhvdXQgaW5jbHVkaW5nIHRoZSBoZWFk
ZXIgaW4gaGVhZGVycywgd2hpY2ggbWF5IGhlbHAKKyAgICAgICAga2VlcCBjb21waWxlIHRpbWVz
IGZyb20gZ2V0dGluZyBvdXQgb2YgaGFuZC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OiBBZGRl
ZCB0aGUgbmV3IHNvdXJjZSBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IERpdHRvLgorCisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6IFVzZSBwYXJzZUludGVnZXI8dW5zaWduZWQ+CisgICAgICAgIGlu
c3RlYWQgb2YgU3RyaW5nOjp0b1VJbnRTdHJpY3QuCisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOiBEaXR0by4KKworICAgICAgICAqIHN2Zy9TVkdUb09URkZvbnRD
b252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6
YXBwZW5kT1MyVGFibGUpOiBVc2UKKyAgICAgICAgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGlu
Z0p1bms8aW50PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQuIFVzZQorICAgICAgICBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50OF90PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9J
bnQsCisgICAgICAgIGFsbG93aW5nIHVzIHRvIHJlbW92ZSByYW5nZSBjaGVja2luZyB0byByZWpl
Y3QgdmFsdWVzIHRoYXQgYXJlIG91dCBvZiByYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rv
T1RGRm9udENvbnZlcnRlcjo6YXBwZW5kVk9SR1RhYmxlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRlcik6IERpdHRv
LgorCisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKTogVXNlIHBhcnNlSW50
ZWdlcjx1aW50OF90PgorICAgICAgICBpbnN0ZWFkIG9mIFN0cmluZzo6dG9VSW50U3RyaWN0LiBU
aGVzZSBhcmUgYWxsIDItY2hhcmFjdGVyIG51bWVyaWMKKyAgICAgICAgc3RyaW5ncy4gQWxzbyBz
aW1wbGlmaWVkIHRoZSBsb2dpYyBhbmQgdXNlZCBTdHJpbmdWaWV3IHNvIHdlIGRvbid0IGhhdmUg
dG8KKyAgICAgICAgYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgc3Vic3RyaW5ncy4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJzZUNvbmRpdGlvbik6IFVzZSBwYXJzZUludGVn
ZXI8dW5zaWduZWQ+CisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nOjp0b1VJbnRTdHJpY3QuIEFs
c28gdXNlZCBTdHJpbmdWaWV3LgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlv
bkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0aW9uSW50ZWdlckZ1bmN0aW9uOjpjYWxjdWxhdGVEaXN0YW5jZSBjb25zdCk6IE1vdmVkCisg
ICAgICAgIHRoaXMgZmlsZSBoZXJlIGZyb20gdGhlIGhlYWRlciwgYW5kIHVzZWQgcGFyc2VJbnRl
Z2VyPGludD4gcmF0aGVyIHRoYW4KKyAgICAgICAgU3RyaW5nOjp0b0ludFN0cmljdC4KKworICAg
ICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbklt
cGwuaDogTW92ZWQKKyAgICAgICAgU1ZHQW5pbWF0aW9uSW50ZWdlckZ1bmN0aW9uOjpjYWxjdWxh
dGVEaXN0YW5jZSBvdXQgb2YgdGhlIGhlYWRlci4KKyAgICAgICAgQWxzbyBtYXJrZWQgdGhlIGNs
YXNzIGFuZCBtZW1iZXIgZnVuY3Rpb25zIGZpbmFsLiAoQ291bGQgZG8gdGhhdCBmb3IKKyAgICAg
ICAgYSBsb3QgbW9yZSBvZiB0aGUgY2xhc3NlcyBpbiB0aGlzIGZpbGUuKQorCisgICAgICAgICog
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPGludD46OmZyb21TdHJpbmcpOiBNb3ZlZCB0aGlzIGhl
cmUgZnJvbSB0aGUKKyAgICAgICAgaGVhZGVyIGFuZCB1c2UgcGFyc2VJbnRlZ2VyPGludD4gaW5z
dGVhZCBvZiBTdHJpbmc6OnRvSW50U3RyaWN0LgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5VHJhaXRzLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6OmZyb21TdHJp
bmcpOiBNb3ZlZCB0aGlzIGhlcmUKKyAgICAgICAgZnJvbSB0aGUgaGVhZGVyIGFuZCB1c2UgcGFy
c2VJbnRlZ2VyPHVpbnQ2NF90PiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ1ZpZXc6OnRvVUlu
dDY0U3RyaWN0LgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllci5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisgICAgICAgIEFsc28gbW92ZWQg
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXJIYXNoIGZyb20gdGhlIFdURiBuYW1lc3BhY2UK
KyAgICAgICAgdG8gdGhlIFdlYkNvcmUgbmFtZXNwYWNlLgorCisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFiYXNlS2V5KTogVXNlCisg
ICAgICAgIHBhcnNlSW50ZWdlcjx1aW50MTZfdD4gaW5zdGVhZCBvZiBjaGFyYWN0ZXJzVG9VSW50
U3RyaWN0LCBhbGxvd2luZyB1cworICAgICAgICB0byByZW1vdmUgcmFuZ2UgY2hlY2tpbmcuIEFs
c28gdXNlIFN0cmluZ1ZpZXc6OnN1YnN0cmluZyBpbnN0ZWFkIG9mCisgICAgICAgIHdyaXRpbmcg
b3V0IHNwZWNpYWwgY2FzZXMgZm9yIDgtYml0IGFuZCAxNi1iaXQgY2hhcmFjdGVycy4KKwogMjAy
MS0wNS0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRmFjdG9y
IG91dCBwaXhlbCBidWZmZXIgZnJvbSBET00gc3BlY2lmaWMgSW1hZ2VEYXRhIGNsYXNzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IGVjNzA2ZmYzZjcwMTI3M2NiZDZlNTVkYzI0MWViYTE0N2ZjYTA3M2MuLjAz
YjczMzUzY2U1NGJjNjcyNDU1MjcyMDY3MzAzYzQxODJlZTgxODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0yNjUxLDYgKzI2NTEsNyBAQCBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
LmNwcAogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAKIHN2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3BwCiBzdmcvcHJvcGVy
dGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5jcHAKK3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5
VHJhaXRzLmNwcAogd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAKIHdvcmtlcnMvRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuY3BwCiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAK
QEAgLTI2NzcsNiArMjY3OCw3IEBAIHdvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24u
Y3BwCiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAKIHdvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnREYXRhLmNwcAord29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
LmNwcAogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNlZDkyNTU1MDEwZDM2MDgzZDQwZWI0MTNmOTQx
NGYzNTBjY2FkMjIuLmI1OGI5ODZjNzY0YjNkNDFmNjFmMTQwMzExOTI3NmJiNGI4OWE2NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTExNzk4LDYgKzExNzk4LDggQEAKIAkJOTNGOUI2REYwQkEwRkI3MjAwODU0MDY0IC8qIEpT
Q29tbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NvbW1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOUI3OUUwQkE2MDMyNjAwODU0MDY0IC8q
IEpTQ0RBVEFTZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQ0RBVEFTZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOUI3
OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQ0RBVEFTZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzRkNEQjQ5MjY0NDU1RDYwMDQ2REQ3RCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRkNEQjRCMjY0NzBERDEw
MDQ2REQ3RCAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQ
cm9wZXJ0eVRyYWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRkRBRkM5
MEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRvckluc2VydEFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQgLyogU3R5bGVDb2xvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUNvbG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQxODI3ODkxRDhCMjQyMjAwNDkyNzY0IC8qIFN0
eWxlQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVDb2xvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc4NTcsNiArMTc4NTksNyBAQAogCQkJ
CTU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eU93bmVyLmggKi8sCiAJCQkJ
NTVCRTAyNUMyMjNCMjlDMzAwMzJGMDhBIC8qIFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oICov
LAogCQkJCTU1QkUwMjU3MjIzQjI5QzAwMDMyRjA4QSAvKiBTVkdQcm9wZXJ0eVJlZ2lzdHJ5Lmgg
Ki8sCisJCQkJOTNGQ0RCNEIyNjQ3MEREMTAwNDZERDdEIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmNw
cCAqLywKIAkJCQkwODhBMEUwMzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMu
aCAqLywKIAkJCQk1NTBGNjY0NTIyQ0E4OUJEMDAwQTM0MTcgLyogU1ZHU2hhcmVkUHJpbWl0aXZl
UHJvcGVydHkuaCAqLywKIAkJCQk3MjE0NDM0NjIyNDBDQUQyMDBGMTJGRjcgLyogU1ZHVmFsdWVQ
cm9wZXJ0eS5oICovLApAQCAtMjA5NDEsNiArMjA5NDQsNyBAQAogCQkJCTQ2RUYxNDI4MUY5N0I3
QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkbCAqLywKIAkJCQk4Mzc5MzYzQzFG
QkJCMEE0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwICovLAogCQkJCTgz
NzkzNjNFMUZCQkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oICovLAor
CQkJCTkzRkNEQjQ5MjY0NDU1RDYwMDQ2REQ3RCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllci5jcHAgKi8sCiAJCQkJODM3RDQ2MjUxRkEyQThDNTAwNTRFMUZBIC8qIFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyLmggKi8sCiAJCQkJNDEzRkM0Q0QxRkQxREQ4QzAwNTQxQzRCIC8q
IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaCAqLywKIAkJCQk0NkVGMTQyMTFGOTdC
N0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMuY3BwICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKaW5kZXggNGU4YjZj
NTkyMmU4YjI5ZTBmOTY2M2MxMzEyMDQ1ODg2MzAzOThlYi4uZWFjOGVmODk5MTgyNjBiMDU2Yzkx
NmE4MTJiNGFiYmNkNTdmMWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiU1ZH
TmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNv
bnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDUsMTIgKzEwNiwxMiBA
QCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdAogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05h
bWVzOjp0YXJnZXRYQXR0cikgewotICAgICAgICBtX3RhcmdldFgtPnNldEJhc2VWYWxJbnRlcm5h
bCh2YWx1ZS5zdHJpbmcoKS50b1VJbnRTdHJpY3QoKSk7CisgICAgICAgIG1fdGFyZ2V0WC0+c2V0
QmFzZVZhbEludGVybmFsKHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4odmFsdWUpLnZhbHVlT3IoMCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnRh
cmdldFlBdHRyKSB7Ci0gICAgICAgIG1fdGFyZ2V0WS0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVl
LnN0cmluZygpLnRvVUludFN0cmljdCgpKTsKKyAgICAgICAgbV90YXJnZXRZLT5zZXRCYXNlVmFs
SW50ZXJuYWwocGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZSkudmFsdWVPcigwKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LmNwcAppbmRleCBjZjQ5ODRiZjk0N2FlZDFhNTA3Njc2MWZlMDBhZTc4OGY1MjYw
MmJkLi5jMzI0MjQzYWQ3YTQ4YzkwMjg5OGVhOThlZGNjY2VlMzA1ZGVkMmZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCkBAIC0yNSw2ICsyNSw3
IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMu
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC04MCw3ICs4MSw3IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAgICAgfQogCiAgICAgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyKSB7Ci0gICAgICAgIG1fbnVtT2N0YXZl
cy0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnN0cmluZygpLnRvVUludFN0cmljdCgpKTsKKyAg
ICAgICAgbV9udW1PY3RhdmVzLT5zZXRCYXNlVmFsSW50ZXJuYWwocGFyc2VJbnRlZ2VyPHVuc2ln
bmVkPih2YWx1ZSkudmFsdWVPcigwKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRleCBkMjhjNDRm
Yjc0MmFkMzBmOTdkNDcwZGY5NjdhOWIwOGY0NWMwNzEwLi4wOWY2NmFlYWYyNjZiNTYwMThiZmJh
ZDA1OTcxNDBiMmFiZDc1NzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9P
VEZGb250Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9u
dENvbnZlcnNpb24uY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiU1ZHVktlcm5FbGVt
ZW50LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4
OSwxMyArNDkwLDExIEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjphcHBlbmROQU1FVGFi
bGUoKQogdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZE9TMlRhYmxlKCkKIHsKICAg
ICBpbnQxNl90IGF2ZXJhZ2VBZHZhbmNlID0gc19vdXRwdXRVbml0c1BlckVtOwotICAgIGJvb2wg
b2s7Ci0gICAgaW50IHZhbHVlID0gbV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIpLnRvSW50KCZvayk7Ci0gICAgaWYg
KCFvayAmJiBtX21pc3NpbmdHbHlwaEVsZW1lbnQpCi0gICAgICAgIHZhbHVlID0gbV9taXNzaW5n
R2x5cGhFbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpo
b3Jpel9hZHZfeEF0dHIpLnRvSW50KCZvayk7Ci0gICAgdmFsdWUgPSBzY2FsZVVuaXRzUGVyRW0o
dmFsdWUpOwotICAgIGlmIChvaykKLSAgICAgICAgYXZlcmFnZUFkdmFuY2UgPSBjbGFtcFRvPGlu
dDE2X3Q+KHZhbHVlKTsKKyAgICBhdXRvIGhvcml6QWR2WCA9IHBhcnNlSW50ZWdlckFsbG93aW5n
VHJhaWxpbmdKdW5rPGludD4obV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIpKTsKKyAgICBpZiAoIWhvcml6QWR2WCAm
JiBtX21pc3NpbmdHbHlwaEVsZW1lbnQpCisgICAgICAgIGhvcml6QWR2WCA9IHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4obV9taXNzaW5nR2x5cGhFbGVtZW50LT5hdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIpKTsKKyAg
ICBpZiAoaG9yaXpBZHZYKQorICAgICAgICBhdmVyYWdlQWR2YW5jZSA9IGNsYW1wVG88aW50MTZf
dD4oc2NhbGVVbml0c1BlckVtKCpob3JpekFkdlgpKTsKIAogICAgIGFwcGVuZDE2KDIpOyAvLyBW
ZXJzaW9uCiAgICAgYXBwZW5kMTYoY2xhbXBUbzxpbnQxNl90PihhdmVyYWdlQWR2YW5jZSkpOwpA
QCAtNTIyLDEwICs1MjEsOCBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kT1My
VGFibGUoKQogICAgICAgICBWZWN0b3I8U3RyaW5nPiBzZWdtZW50cyA9IG1fZm9udEZhY2VFbGVt
ZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpwYW5vc2VfMUF0
dHIpLnN0cmluZygpLnNwbGl0KCcgJyk7CiAgICAgICAgIGlmIChzZWdtZW50cy5zaXplKCkgPT0g
cGFub3NlU2l6ZSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogc2VnbWVudHMp
IHsKLSAgICAgICAgICAgICAgICBib29sIG9rOwotICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9
IHNlZ21lbnQudG9JbnQoJm9rKTsKLSAgICAgICAgICAgICAgICBpZiAob2sgJiYgdmFsdWUgPj0g
c3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWluKCkgJiYgdmFsdWUgPD0gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkpCi0gICAgICAgICAgICAgICAgICAgIHBhbm9zZUJ5
dGVzW251bVBhbm9zZUJ5dGVzKytdID0gdmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8g
dmFsdWUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50OF90PihzZWdtZW50
KSkKKyAgICAgICAgICAgICAgICAgICAgcGFub3NlQnl0ZXNbbnVtUGFub3NlQnl0ZXMrK10gPSAq
dmFsdWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC05NDcsMjAgKzk0NCwx
OCBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kVk9SR1RhYmxlKCkKICAgICBh
cHBlbmQxNigxKTsgLy8gTWFqb3IgdmVyc2lvbgogICAgIGFwcGVuZDE2KDApOyAvLyBNaW5vciB2
ZXJzaW9uCiAKLSAgICBib29sIG9rOwotICAgIGludCBkZWZhdWx0VmVydGljYWxPcmlnaW5ZID0g
bV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2
ZXJ0X29yaWdpbl95QXR0cikudG9JbnQoJm9rKTsKLSAgICBpZiAoIW9rICYmIG1fbWlzc2luZ0ds
eXBoRWxlbWVudCkKLSAgICAgICAgZGVmYXVsdFZlcnRpY2FsT3JpZ2luWSA9IG1fbWlzc2luZ0ds
eXBoRWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6dmVy
dF9vcmlnaW5feUF0dHIpLnRvSW50KCk7Ci0gICAgZGVmYXVsdFZlcnRpY2FsT3JpZ2luWSA9IHNj
YWxlVW5pdHNQZXJFbShkZWZhdWx0VmVydGljYWxPcmlnaW5ZKTsKLSAgICBhcHBlbmQxNihjbGFt
cFRvPGludDE2X3Q+KGRlZmF1bHRWZXJ0aWNhbE9yaWdpblkpKTsKKyAgICBhdXRvIHZlcnRPcmln
aW5ZID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihtX2ZvbnRFbGVtZW50
LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lB
dHRyKSk7CisgICAgaWYgKCF2ZXJ0T3JpZ2luWSAmJiBtX21pc3NpbmdHbHlwaEVsZW1lbnQpCisg
ICAgICAgIHZlcnRPcmlnaW5ZID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50
PihtX21pc3NpbmdHbHlwaEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
U1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lBdHRyKSk7CisgICAgYXBwZW5kMTYoY2xhbXBUbzxpbnQx
Nl90PihzY2FsZVVuaXRzUGVyRW0odmVydE9yaWdpblkudmFsdWVPcigwKSkpKTsKIAogICAgIGF1
dG8gdGFibGVTaXplT2Zmc2V0ID0gbV9yZXN1bHQuc2l6ZSgpOwogICAgIGFwcGVuZDE2KDApOyAv
LyBQbGFjZSB0byB3cml0ZSB0YWJsZSBzaXplLgogICAgIGZvciAoR2x5cGggaSA9IDA7IGkgPCBt
X2dseXBocy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoYXV0byogZ2x5cGggPSBtX2dseXBo
c1tpXS5nbHlwaEVsZW1lbnQpIHsKLSAgICAgICAgICAgIGlmIChpbnQgdmVydGljYWxPcmlnaW5Z
ID0gZ2x5cGgtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRf
b3JpZ2luX3lBdHRyKS50b0ludCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byB2ZXJ0aWNhbE9y
aWdpblkgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KGdseXBoLT5hdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2ZXJ0X29yaWdpbl95QXR0cikp
KSB7CiAgICAgICAgICAgICAgICAgYXBwZW5kMTYoaSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5k
MTYoY2xhbXBUbzxpbnQxNl90PihzY2FsZVVuaXRzUGVyRW0odmVydGljYWxPcmlnaW5ZKSkpOwor
ICAgICAgICAgICAgICAgIGFwcGVuZDE2KGNsYW1wVG88aW50MTZfdD4oc2NhbGVVbml0c1BlckVt
KCp2ZXJ0aWNhbE9yaWdpblkpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNDU2LDEwICsxNDUxLDkgQEAgU1ZHVG9PVEZGb250Q29udmVydGVyOjpTVkdUb09URkZvbnRD
b252ZXJ0ZXIoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50KQogICAgICAgICAgICAg
ICAgIG1fd2VpZ2h0ID0gNzsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICBpbnQgdmFsdWUgPSBzZWdtZW50LnRv
SW50KG9rKTsKLSAgICAgICAgICAgIGlmIChvayAmJiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMTAw
MCkgewotICAgICAgICAgICAgICAgIG1fd2VpZ2h0ID0gc3RkOjptYXgoc3RkOjptaW4oKHZhbHVl
ICsgNTApIC8gMTAwLCBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDhf
dD46Om1heCgpKSksIHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90
Pjo6bWluKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazxpbnQ+KHNlZ21lbnQpOworICAgICAgICAgICAgaWYgKHZhbHVlICYmICp2
YWx1ZSA+PSAwICYmICp2YWx1ZSA8IDEwMDApIHsKKyAgICAgICAgICAgICAgICBtX3dlaWdodCA9
IHN0ZDo6bWF4KHN0ZDo6bWluKCgqdmFsdWUgKyA1MCkgLyAxMDAsIHN0YXRpY19jYXN0PGludD4o
c3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkpKSwgc3RhdGljX2Nhc3Q8aW50Pihz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptaW4oKSkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9h
bmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCmluZGV4IDY2MzM5MDU1MDAxZTVhOWI5ZGY5Yjc3
YjI0Mzc2ZjUyMGM0YzMzMTEuLjdjNGU0N2NhNjFjMjJhMDFjNTRmMjMzZmEzNDE4NThiMTM2Mzkz
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQu
Y3BwCkBAIC0zMzMsNyArMzMzLDcgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xv
Y2tWYWx1ZShjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgaWYgKGRhdGEuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNvbHZlZCgpOwotICAgIAorCiAgICAgU3RyaW5n
IHBhcnNlID0gZGF0YS5zdHJpcFdoaXRlU3BhY2UoKTsKIAogICAgIHN0YXRpYyBNYWluVGhyZWFk
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW5kZWZpbml0ZVZhbHVlKCJpbmRlZmlu
aXRlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwpAQCAtMzQ0LDI3ICszNDQs
MjQgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZShjb25zdCBTdHJp
bmcmIGRhdGEpCiAgICAgYm9vbCBvazsKICAgICBzaXplX3QgZG91YmxlUG9pbnRPbmUgPSBwYXJz
ZS5maW5kKCc6Jyk7CiAgICAgc2l6ZV90IGRvdWJsZVBvaW50VHdvID0gcGFyc2UuZmluZCgnOics
IGRvdWJsZVBvaW50T25lICsgMSk7Ci0gICAgaWYgKGRvdWJsZVBvaW50T25lID09IDIgJiYgZG91
YmxlUG9pbnRUd28gPT0gNSAmJiBwYXJzZS5sZW5ndGgoKSA+PSA4KSB7IAotICAgICAgICByZXN1
bHQgKz0gcGFyc2Uuc3Vic3RyaW5nKDAsIDIpLnRvVUludFN0cmljdCgmb2spICogNjAgKiA2MDsK
LSAgICAgICAgaWYgKCFvaykKKyAgICBpZiAoZG91YmxlUG9pbnRPbmUgPT0gMiAmJiBkb3VibGVQ
b2ludFR3byA9PSA1ICYmIHBhcnNlLmxlbmd0aCgpID49IDgpIHsKKyAgICAgICAgYXV0byBob3Vy
ID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KFN0cmluZ1ZpZXcgeyBwYXJzZSB9LnN1YnN0cmluZygw
LCAyKSk7CisgICAgICAgIGF1dG8gbWludXRlID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KFN0cmlu
Z1ZpZXcgeyBwYXJzZSB9LnN1YnN0cmluZygzLCAyKSk7CisgICAgICAgIGlmICghaG91ciB8fCAh
bWludXRlKQogICAgICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJlc29sdmVkKCk7Ci0gICAg
ICAgIHJlc3VsdCArPSBwYXJzZS5zdWJzdHJpbmcoMywgMikudG9VSW50U3RyaWN0KCZvaykgKiA2
MDsKLSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNv
bHZlZCgpOwotICAgICAgICByZXN1bHQgKz0gcGFyc2Uuc3Vic3RyaW5nKDYpLnRvRG91YmxlKCZv
ayk7CisgICAgICAgIHJlc3VsdCA9ICpob3VyICogNjAgKiA2MCArICptaW51dGUgKiA2MCArIHBh
cnNlLnN1YnN0cmluZyg2KS50b0RvdWJsZSgmb2spOwogICAgIH0gZWxzZSBpZiAoZG91YmxlUG9p
bnRPbmUgPT0gMiAmJiBkb3VibGVQb2ludFR3byA9PSBub3RGb3VuZCAmJiBwYXJzZS5sZW5ndGgo
KSA+PSA1KSB7IAotICAgICAgICByZXN1bHQgKz0gcGFyc2Uuc3Vic3RyaW5nKDAsIDIpLnRvVUlu
dFN0cmljdCgmb2spICogNjA7Ci0gICAgICAgIGlmICghb2spCisgICAgICAgIGF1dG8gbWludXRl
ID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KFN0cmluZ1ZpZXcgeyBwYXJzZSB9LnN1YnN0cmluZygw
LCAyKSk7CisgICAgICAgIGlmICghbWludXRlKQogICAgICAgICAgICAgcmV0dXJuIFNNSUxUaW1l
Ojp1bnJlc29sdmVkKCk7Ci0gICAgICAgIHJlc3VsdCArPSBwYXJzZS5zdWJzdHJpbmcoMykudG9E
b3VibGUoJm9rKTsKKyAgICAgICAgcmVzdWx0ID0gKm1pbnV0ZSAqIDYwICsgcGFyc2Uuc3Vic3Ry
aW5nKDMpLnRvRG91YmxlKCZvayk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBwYXJzZU9m
ZnNldFZhbHVlKHBhcnNlKTsKLQogICAgIGlmICghb2sgfHwgIVNNSUxUaW1lKHJlc3VsdCkuaXNG
aW5pdGUoKSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJlc29sdmVkKCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KLSAgICAKKwogc3RhdGljIHZvaWQgc29ydFRpbWVMaXN0KFZlY3RvcjxT
TUlMVGltZVdpdGhPcmlnaW4+JiB0aW1lTGlzdCkKIHsKICAgICBzdGQ6OnNvcnQodGltZUxpc3Qu
YmVnaW4oKSwgdGltZUxpc3QuZW5kKCkpOwpAQCAtMzc1LDcgKzM3Miw2IEBAIGJvb2wgU1ZHU01J
TEVsZW1lbnQ6OnBhcnNlQ29uZGl0aW9uKGNvbnN0IFN0cmluZyYgdmFsdWUsIEJlZ2luT3JFbmQg
YmVnaW5PckVuZCkKICAgICBTdHJpbmcgcGFyc2VTdHJpbmcgPSB2YWx1ZS5zdHJpcFdoaXRlU3Bh
Y2UoKTsKICAgICAKICAgICBkb3VibGUgc2lnbiA9IDEuOwotICAgIGJvb2wgb2s7CiAgICAgc2l6
ZV90IHBvcyA9IHBhcnNlU3RyaW5nLmZpbmQoJysnKTsKICAgICBpZiAocG9zID09IG5vdEZvdW5k
KSB7CiAgICAgICAgIHBvcyA9IHBhcnNlU3RyaW5nLmZpbmQoJy0nKTsKQEAgLTQxMiwxMiArNDA4
LDEzIEBAIGJvb2wgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ29uZGl0aW9uKGNvbnN0IFN0cmluZyYg
dmFsdWUsIEJlZ2luT3JFbmQgYmVnaW5PckVuZCkKICAgICBDb25kaXRpb246OlR5cGUgdHlwZTsK
ICAgICBpbnQgcmVwZWF0cyA9IC0xOwogICAgIGlmIChuYW1lU3RyaW5nLnN0YXJ0c1dpdGgoInJl
cGVhdCgiKSAmJiBuYW1lU3RyaW5nLmVuZHNXaXRoKCcpJykpIHsKLSAgICAgICAgLy8gRklYTUU6
IEZvciByZXBlYXQgZXZlbnRzIHdlIGp1c3QgbmVlZCB0byBhZGQgdGhlIGRhdGEgY2Fycnlpbmcg
VGltZUV2ZW50IGNsYXNzIGFuZCAKLSAgICAgICAgLy8gZmlyZSB0aGUgZXZlbnRzIGF0IGFwcHJv
cGlhdGUgdGltZXMuCi0gICAgICAgIHJlcGVhdHMgPSBuYW1lU3RyaW5nLnN1YnN0cmluZyg3LCBu
YW1lU3RyaW5nLmxlbmd0aCgpIC0gOCkudG9VSW50U3RyaWN0KCZvayk7Ci0gICAgICAgIGlmICgh
b2spCisgICAgICAgIC8vIEZJWE1FOiBGb3IgcmVwZWF0IGV2ZW50cyB3ZSBqdXN0IG5lZWQgdG8g
YWRkIHRoZSBkYXRhIGNhcnJ5aW5nIFRpbWVFdmVudCBjbGFzcyBhbmQgZmlyZSB0aGUgZXZlbnRz
IGF0IGFwcHJvcGlhdGUgdGltZXMuCisgICAgICAgIGF1dG8gcGFyc2VkUmVwZWF0ID0gcGFyc2VJ
bnRlZ2VyPHVuc2lnbmVkPihTdHJpbmdWaWV3IHsgbmFtZVN0cmluZyB9LnN1YnN0cmluZyg3LCBu
YW1lU3RyaW5nLmxlbmd0aCgpIC0gOCkpOworICAgICAgICBpZiAoIXBhcnNlZFJlcGVhdCkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbmFtZVN0cmluZyA9ICJyZXBlYXQiOwor
ICAgICAgICAvLyBGSVhNRTogQnkgYXNzaWduaW5nIGFuIHVuc2lnbmVkIHRvIGEgc2lnbmVkLCB0
aGlzIGNhbiB0dXJuIGxhcmdlIGludGVnZXJzIGludG8gbmVnYXRpdmUgbnVtYmVycy4KKyAgICAg
ICAgcmVwZWF0cyA9ICpwYXJzZWRSZXBlYXQ7CisgICAgICAgIG5hbWVTdHJpbmcgPSAicmVwZWF0
Il9zOwogICAgICAgICB0eXBlID0gQ29uZGl0aW9uOjpFdmVudEJhc2U7CiAgICAgfSBlbHNlIGlm
IChuYW1lU3RyaW5nID09ICJiZWdpbiIgfHwgbmFtZVN0cmluZyA9PSAiZW5kIikgewogICAgICAg
ICBpZiAoYmFzZUlELmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0
aW9uSW1wbC5jcHAKaW5kZXggNDc2ZmIzNGIzYWNhNGIyMWZiN2QwZWRjZWMxZGYwYTkxMjhkOTg5
NC4uMjY0YWI2MDE0OTk1NmE1ZDFjZTQzZGU0NzU4ZDRlNzE1ZTRiNjYwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1
bmN0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTQ0LDQgKzQ1LDkgQEAgQ29sb3IgU1ZHQW5pbWF0aW9uQ29sb3JGdW5j
dGlvbjo6Y29sb3JGcm9tU3RyaW5nKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnMKICAg
ICByZXR1cm4geyB9OwogfQogCitPcHRpb25hbDxmbG9hdD4gU1ZHQW5pbWF0aW9uSW50ZWdlckZ1
bmN0aW9uOjpjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9t
LCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6OmFicyhwYXJzZUlu
dGVnZXI8aW50Pih0bykudmFsdWVPcigwKSAtIHBhcnNlSW50ZWdlcjxpbnQ+KGZyb20pLnZhbHVl
T3IoMCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgK
aW5kZXggNGNlY2NmN2FmMDBhNzUyYzlkMGY1YWQ5MDQ3MWY1MDg2YzdhNzkwNi4uNGJhMzdhOWNh
N2NmOGEzNDRiYTYzYjQ2MTcwYWM3YjI0NWEyYzY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZl
VmFsdWVGdW5jdGlvbkltcGwuaApAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIENvbG9yIGNvbG9yRnJvbVN0cmluZyhTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJik7CiB9
OwogCi1jbGFzcyBTVkdBbmltYXRpb25JbnRlZ2VyRnVuY3Rpb24gOiBwdWJsaWMgU1ZHQW5pbWF0
aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uPGludD4geworY2xhc3MgU1ZHQW5pbWF0aW9uSW50ZWdl
ckZ1bmN0aW9uIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlv
bjxpbnQ+IHsKICAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyUGFpckFuaW1hdG9y
OwogCiBwdWJsaWM6CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogICAgICAgICBtX3RvID0g
U1ZHUHJvcGVydHlUcmFpdHM8aW50Pjo6ZnJvbVN0cmluZyh0byk7CiAgICAgfQogCi0gICAgdm9p
ZCBzZXRUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRp
b24pIG92ZXJyaWRlCisgICAgdm9pZCBzZXRUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0
cmluZyYgdG9BdEVuZE9mRHVyYXRpb24pIGZpbmFsCiAgICAgewogICAgICAgICBtX3RvQXRFbmRP
ZkR1cmF0aW9uID0gU1ZHUHJvcGVydHlUcmFpdHM8aW50Pjo6ZnJvbVN0cmluZyh0b0F0RW5kT2ZE
dXJhdGlvbik7CiAgICAgfQpAQCAtMTQ5LDEzICsxNDksMTAgQEAgcHVibGljOgogICAgICAgICBh
bmltYXRlZCA9IHN0YXRpY19jYXN0PGludD4ocm91bmRmKEJhc2U6OmFuaW1hdGUocHJvZ3Jlc3Ms
IHJlcGVhdENvdW50LCBtX2Zyb20sIG1fdG8sIHRvQXRFbmRPZkR1cmF0aW9uKCksIGFuaW1hdGVk
KSkpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdF
bGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdCBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6YWJzKHRvLnRvSW50U3RyaWN0KCkgLSBm
cm9tLnRvSW50U3RyaWN0KCkpOwotICAgIH0KKyAgICBPcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRl
RGlzdGFuY2UoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOwogCiBwcml2YXRlOgotICAgIHZvaWQgYWRkRnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1l
bnQqKSBvdmVycmlkZQorICAgIHZvaWQgYWRkRnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqKSBm
aW5hbAogICAgIHsKICAgICAgICAgbV90byArPSBtX2Zyb207CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFlNGY0NzhkNzEzMmYxOWRmZWM2YjkwMjQwMDQwOWQzZTFjOTVlYjgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5j
cHAKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eVRyYWl0
cy5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2ludCBTVkdQcm9wZXJ0eVRyYWl0czxpbnQ+Ojpmcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiBwYXJzZUludGVnZXI8
aW50PihzdHJpbmcpLnZhbHVlT3IoMCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCmluZGV4IDdkMDRmYmM1YTVhZTgxZTRl
MDRiODA0ZjM5ZGY2ZDY2NjgzZTBhODUuLjBjYWRhN2EwMmNhZjAwNDMyNzIyMmIzOGUxY2FmZjky
YmNjYzIzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1By
b3BlcnR5VHJhaXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJv
cGVydHlUcmFpdHMuaApAQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8
dW5zaWduZWQ+IHsKIHRlbXBsYXRlPD4KIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxpbnQ+IHsK
ICAgICBzdGF0aWMgaW50IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIDA7IH0KLSAgICBzdGF0aWMg
aW50IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJnN0cmluZykgeyByZXR1cm4gc3RyaW5nLnRvSW50
U3RyaWN0KCk7IH0KKyAgICBzdGF0aWMgaW50IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAg
ICAgc3RhdGljIE9wdGlvbmFsPGludD4gcGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IFN0cmluZyYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBpbml0aWFsVmFsdWUoKTsg
fQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoaW50IHR5cGUpIHsgcmV0dXJuIFN0cmluZzo6
bnVtYmVyKHR5cGUpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTZkNDQ3ZGFiNTRhYzk2ZWY2ZTBjNzY3N2IyNWUyYzczNDRhMDg0YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllci5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIgor
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGVOdW1iZXJzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2Vy
Q29udmVyc2lvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK09wdGlvbmFsPFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyOworICAgIHVuc2lnbmVkIGNvdW50ZXIgPSAwOworICAg
IGZvciAoYXV0byBpdGVtIDogc3RyaW5nLnNwbGl0KCctJykpIHsKKyAgICAgICAgYXV0byBpZGVu
dGlmaWVyID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90PihpdGVtKTsKKyAgICAgICAgaWYgKCFpZGVu
dGlmaWVyIHx8ICEqaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIGlmICghY291bnRlcisrKQorICAgICAgICAgICAgY2xpZW50SWRlbnRpZmllci5z
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihpZGVudGlmaWVyLnZhbHVlKCkpOworICAgICAgICBl
bHNlIGlmIChjb3VudGVyID09IDIpCisgICAgICAgICAgICBjbGllbnRJZGVudGlmaWVyLmNvbnRl
eHRJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8RG9jdW1lbnRJZGVudGlmaWVyVHlw
ZT4oaWRlbnRpZmllci52YWx1ZSgpKTsKKyAgICB9CisgICAgcmV0dXJuIChjb3VudGVyID09IDIp
ID8gbWFrZU9wdGlvbmFsKFdURk1vdmUoY2xpZW50SWRlbnRpZmllcikpIDogV1RGOjpudWxsb3B0
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCmluZGV4IGMzZmRiNWUxZDZiYTA3
MzFmMjZmZjVhNGYzNzU1OGRiNGY0YzE1NzYuLjk4YTRlMzU1NmQxNzgwMDIwMmU1M2EzMGZiNDIw
ZGZmNjhmYTgzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCkBAIC0zMCw3ICszMCw2
IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlclR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTQ5LDI0ICs0OCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciB7CiAK
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXImIGEsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBiKQogewotICAgIHJl
dHVybiBhLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID09IGIuc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgJiYgIGEuY29udGV4dElkZW50aWZpZXIgPT0gYi5jb250ZXh0SWRlbnRpZmllcjsK
LX0KLQotaW5saW5lIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhTdHJpbmdWaWV3IHN0cmluZykK
LXsKLSAgICBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyOwot
Ci0gICAgdW5zaWduZWQgY291bnRlciA9IDA7Ci0gICAgZm9yIChhdXRvIGl0ZW0gOiBzdHJpbmcu
c3BsaXQoJy0nKSkgewotICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBpdGVtLnRvVUludDY0U3Ry
aWN0KCk7Ci0gICAgICAgIGlmICghaWRlbnRpZmllciB8fCAhKmlkZW50aWZpZXIpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICBpZiAoIWNvdW50ZXIrKykKLSAgICAg
ICAgICAgIGNsaWVudElkZW50aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgPSBtYWtl
T2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oaWRlbnRp
Zmllci52YWx1ZSgpKTsKLSAgICAgICAgZWxzZSBpZiAoY291bnRlciA9PSAyKQotICAgICAgICAg
ICAgY2xpZW50SWRlbnRpZmllci5jb250ZXh0SWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlm
aWVyPERvY3VtZW50SWRlbnRpZmllclR5cGU+KGlkZW50aWZpZXIudmFsdWUoKSk7Ci0gICAgfQot
ICAgIHJldHVybiAoY291bnRlciA9PSAyKSA/IG1ha2VPcHRpb25hbChXVEZNb3ZlKGNsaWVudElk
ZW50aWZpZXIpKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYS5zZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciA9PSBiLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyICYmIGEuY29udGV4dElk
ZW50aWZpZXIgPT0gYi5jb250ZXh0SWRlbnRpZmllcjsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KQEAgLTk2LDI1ICs3OCwyMyBAQCBpbmxpbmUgdW5zaWduZWQgU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI6Omhhc2goKSBjb25zdAogICAgIHJldHVybiBjb21wdXRlSGFzaChzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGV4dElkZW50aWZpZXIpOwogfQogCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCiBzdHJ1Y3QgU2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXJIYXNoIHsKICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYga2V5KSB7IHJldHVybiBrZXku
aGFzaCgpOyB9CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXImIGEsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyJiBiKSB7IHJldHVybiBhID09IGI7IH0KICAgICBzdGF0aWMgY29uc3QgYm9v
bCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiB9OwogCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNo
VHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiA6IEdlbmVyaWNI
YXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiB7CiAgICAg
c3RhdGljIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGVtcHR5VmFsdWUo
KSB7IHJldHVybiB7IH07IH0KLQogICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1
ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgc2xvdCkgeyBuZXcgKE5v
dE51bGwsICZzbG90LnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSBXZWJDb3JlOjpTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KLQogICAgIHN0
YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyJiBzbG90KSB7IHJldHVybiBzbG90LnNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0
IERlZmF1bHRIYXNoPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiA6IFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVySGFzaCB7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBE
ZWZhdWx0SGFzaDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gOiBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllckhhc2ggeyB9OwogCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LmNwcAppbmRleCA0Y2U3MGExNTEyZmEwYjQzNzE0YWJjMWRlYjc0
ZTE0NWI0ZDllYzExLi5lNDQ1MmE3ZjQ1YTg0MDQ2YjUzNGZmMDQ1ZWFiYTBiY2M2MWQ4YmI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTEwNywyMCArMTA4LDkgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleT4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFiYXMKIAog
ICAgIC8vIElmIHRoZXJlJ3MgYSBnYXAgYmV0d2VlbiB0aGlyZCBhbmQgc2Vjb25kLCB3ZSBleHBl
Y3QgdG8gaGF2ZSBhIHBvcnQgdG8gZGVjb2RlCiAgICAgaWYgKHRoaXJkIC0gc2Vjb25kID4gMSkg
ewotICAgICAgICBib29sIG9rOwotICAgICAgICB1bnNpZ25lZCBwb3J0OwotICAgICAgICBpZiAo
a2V5LmlzOEJpdCgpKQotICAgICAgICAgICAgcG9ydCA9IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3Qo
a2V5LmNoYXJhY3RlcnM4KCkgKyBzZWNvbmQgKyAxLCB0aGlyZCAtIHNlY29uZCAtIDEgLCAmb2sp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3J0ID0gY2hhcmFjdGVyc1RvVUludFN0cmlj
dChrZXkuY2hhcmFjdGVyczE2KCkgKyBzZWNvbmQgKyAxLCB0aGlyZCAtIHNlY29uZCAtIDEsICZv
ayk7Ci0KLSAgICAgICAgaWYgKCFvaykKKyAgICAgICAgc2hvcnRQb3J0ID0gcGFyc2VJbnRlZ2Vy
PHVpbnQxNl90PihTdHJpbmdWaWV3IHsga2V5IH0uc3Vic3RyaW5nKHNlY29uZCArIDEsIHRoaXJk
IC0gc2Vjb25kIC0gMSkpOworICAgICAgICBpZiAoIXNob3J0UG9ydCkKICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAgICAgaWYgKHBvcnQgPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQxNl90Pjo6bWF4KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgICAgIHNob3J0UG9ydCA9IHN0YXRpY19jYXN0PHVpbnQxNl90Pihwb3J0KTsKICAgICB9
CiAKICAgICBhdXRvIHNjb3BlID0gVVJMIHsgVVJMKCksIGtleS5zdWJzdHJpbmcodGhpcmQgKyAx
KSB9Owo=
</data>
<flag name="commit-queue"
          id="448939"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428111</attachid>
            <date>2021-05-08 21:21:38 -0700</date>
            <delta_ts>2021-05-09 10:04:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225573-20210508212137.patch</filename>
            <type>text/plain</type>
            <size>30911</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQzOGI1M2Y1MjhiMzE5
M2QwZDhhN2U5N2U1ZGU5YTcxMDhjNGQzNS4uNGMwMDlkNWFjM2RmZjM4NDM2YTgyY2RjM2FmOTRh
NzYwOTk5YTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTA1LTA4ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgdXNlcyBvZiB0aGUg
U3RyaW5nOjp0b0ludCBmYW1pbHkgb2YgZnVuY3Rpb25zIGZyb20gdGhlIFdlYkNvcmUvc3ZnIGFu
ZCBXZWJDb3JlL3dvcmtlcnMgZGlyZWN0b3JpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEJvdGggU1ZHIGFuZCBzZXJ2aWNlIHdvcmtlcnMgaGFkIGNv
ZGUgdGhhdCBzaG91bGQgYmUgbW92ZWQgZnJvbSBoZWFkZXJzCisgICAgICAgIGludG8gaW1wbGVt
ZW50YXRpb24gZmlsZXMuIFRoaXMgYWxsb3dlZCB1cyB0byB1c2UgdGhlIG5ldyBwYXJzZUludGVn
ZXIKKyAgICAgICAgZnVuY3Rpb24gdGVtcGxhdGVzIHdpdGhvdXQgaW5jbHVkaW5nIHRoZSBoZWFk
ZXIgaW4gaGVhZGVycywgd2hpY2ggbWF5IGhlbHAKKyAgICAgICAga2VlcCBjb21waWxlIHRpbWVz
IGZyb20gZ2V0dGluZyBvdXQgb2YgaGFuZC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OiBBZGRl
ZCB0aGUgbmV3IHNvdXJjZSBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IERpdHRvLgorCisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6IFVzZSBwYXJzZUludGVnZXI8dW5zaWduZWQ+CisgICAgICAgIGlu
c3RlYWQgb2YgU3RyaW5nOjp0b1VJbnRTdHJpY3QuCisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOiBEaXR0by4KKworICAgICAgICAqIHN2Zy9TVkdUb09URkZvbnRD
b252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6
YXBwZW5kT1MyVGFibGUpOiBVc2UKKyAgICAgICAgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGlu
Z0p1bms8aW50PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9JbnQuIFVzZQorICAgICAgICBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50OF90PiBpbnN0ZWFkIG9mIFN0cmluZzo6dG9J
bnQsCisgICAgICAgIGFsbG93aW5nIHVzIHRvIHJlbW92ZSByYW5nZSBjaGVja2luZyB0byByZWpl
Y3QgdmFsdWVzIHRoYXQgYXJlIG91dCBvZiByYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rv
T1RGRm9udENvbnZlcnRlcjo6YXBwZW5kVk9SR1RhYmxlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRlcik6IERpdHRv
LgorCisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKTogVXNlIHBhcnNlSW50
ZWdlcjx1aW50OF90PgorICAgICAgICBpbnN0ZWFkIG9mIFN0cmluZzo6dG9VSW50U3RyaWN0LiBU
aGVzZSBhcmUgYWxsIDItY2hhcmFjdGVyIG51bWVyaWMKKyAgICAgICAgc3RyaW5ncy4gQWxzbyBz
aW1wbGlmaWVkIHRoZSBsb2dpYyBhbmQgdXNlZCBTdHJpbmdWaWV3IHNvIHdlIGRvbid0IGhhdmUg
dG8KKyAgICAgICAgYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgc3Vic3RyaW5ncy4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJzZUNvbmRpdGlvbik6IFVzZSBwYXJzZUludGVn
ZXI8dW5zaWduZWQ+CisgICAgICAgIGluc3RlYWQgb2YgU3RyaW5nOjp0b1VJbnRTdHJpY3QuIEFs
c28gdXNlZCBTdHJpbmdWaWV3LgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlv
bkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0aW9uSW50ZWdlckZ1bmN0aW9uOjpjYWxjdWxhdGVEaXN0YW5jZSBjb25zdCk6IE1vdmVkCisg
ICAgICAgIHRoaXMgZmlsZSBoZXJlIGZyb20gdGhlIGhlYWRlciwgYW5kIHVzZWQgcGFyc2VJbnRl
Z2VyPGludD4gcmF0aGVyIHRoYW4KKyAgICAgICAgU3RyaW5nOjp0b0ludFN0cmljdC4KKworICAg
ICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbklt
cGwuaDogTW92ZWQKKyAgICAgICAgU1ZHQW5pbWF0aW9uSW50ZWdlckZ1bmN0aW9uOjpjYWxjdWxh
dGVEaXN0YW5jZSBvdXQgb2YgdGhlIGhlYWRlci4KKyAgICAgICAgQWxzbyBtYXJrZWQgdGhlIGNs
YXNzIGFuZCBtZW1iZXIgZnVuY3Rpb25zIGZpbmFsLiAoQ291bGQgZG8gdGhhdCBmb3IKKyAgICAg
ICAgYSBsb3QgbW9yZSBvZiB0aGUgY2xhc3NlcyBpbiB0aGlzIGZpbGUuKQorCisgICAgICAgICog
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPGludD46OmZyb21TdHJpbmcpOiBNb3ZlZCB0aGlzIGhl
cmUgZnJvbSB0aGUKKyAgICAgICAgaGVhZGVyIGFuZCB1c2UgcGFyc2VJbnRlZ2VyPGludD4gaW5z
dGVhZCBvZiBTdHJpbmc6OnRvSW50U3RyaWN0LgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5VHJhaXRzLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6OmZyb21TdHJp
bmcpOiBNb3ZlZCB0aGlzIGhlcmUKKyAgICAgICAgZnJvbSB0aGUgaGVhZGVyIGFuZCB1c2UgcGFy
c2VJbnRlZ2VyPHVpbnQ2NF90PiBpbnN0ZWFkIG9mCisgICAgICAgIFN0cmluZ1ZpZXc6OnRvVUlu
dDY0U3RyaWN0LgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllci5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisgICAgICAgIEFsc28gbW92ZWQg
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXJIYXNoIGZyb20gdGhlIFdURiBuYW1lc3BhY2UK
KyAgICAgICAgdG8gdGhlIFdlYkNvcmUgbmFtZXNwYWNlLgorCisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFiYXNlS2V5KTogVXNlCisg
ICAgICAgIHBhcnNlSW50ZWdlcjx1aW50MTZfdD4gaW5zdGVhZCBvZiBjaGFyYWN0ZXJzVG9VSW50
U3RyaWN0LCBhbGxvd2luZyB1cworICAgICAgICB0byByZW1vdmUgcmFuZ2UgY2hlY2tpbmcuIEFs
c28gdXNlIFN0cmluZ1ZpZXc6OnN1YnN0cmluZyBpbnN0ZWFkIG9mCisgICAgICAgIHdyaXRpbmcg
b3V0IHNwZWNpYWwgY2FzZXMgZm9yIDgtYml0IGFuZCAxNi1iaXQgY2hhcmFjdGVycy4KKwogMjAy
MS0wNS0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRmFjdG9y
IG91dCBwaXhlbCBidWZmZXIgZnJvbSBET00gc3BlY2lmaWMgSW1hZ2VEYXRhIGNsYXNzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IGVjNzA2ZmYzZjcwMTI3M2NiZDZlNTVkYzI0MWViYTE0N2ZjYTA3M2MuLjAz
YjczMzUzY2U1NGJjNjcyNDU1MjcyMDY3MzAzYzQxODJlZTgxODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0yNjUxLDYgKzI2NTEsNyBAQCBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVy
LmNwcAogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5jcHAKIHN2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3BwCiBzdmcvcHJvcGVy
dGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5jcHAKK3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5
VHJhaXRzLmNwcAogd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAKIHdvcmtlcnMvRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuY3BwCiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAK
QEAgLTI2NzcsNiArMjY3OCw3IEBAIHdvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24u
Y3BwCiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAKIHdvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnREYXRhLmNwcAord29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
LmNwcAogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNlZDkyNTU1MDEwZDM2MDgzZDQwZWI0MTNmOTQx
NGYzNTBjY2FkMjIuLmI1OGI5ODZjNzY0YjNkNDFmNjFmMTQwMzExOTI3NmJiNGI4OWE2NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTExNzk4LDYgKzExNzk4LDggQEAKIAkJOTNGOUI2REYwQkEwRkI3MjAwODU0MDY0IC8qIEpT
Q29tbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NvbW1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOUI3OUUwQkE2MDMyNjAwODU0MDY0IC8q
IEpTQ0RBVEFTZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQ0RBVEFTZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOUI3
OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQ0RBVEFTZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzRkNEQjQ5MjY0NDU1RDYwMDQ2REQ3RCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRkNEQjRCMjY0NzBERDEw
MDQ2REQ3RCAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQ
cm9wZXJ0eVRyYWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRkRBRkM5
MEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRvckluc2VydEFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQgLyogU3R5bGVDb2xvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUNvbG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQxODI3ODkxRDhCMjQyMjAwNDkyNzY0IC8qIFN0
eWxlQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVDb2xvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc4NTcsNiArMTc4NTksNyBAQAogCQkJ
CTU1RUU1MzYwMjIzQjJBMjEwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eU93bmVyLmggKi8sCiAJCQkJ
NTVCRTAyNUMyMjNCMjlDMzAwMzJGMDhBIC8qIFNWR1Byb3BlcnR5T3duZXJSZWdpc3RyeS5oICov
LAogCQkJCTU1QkUwMjU3MjIzQjI5QzAwMDMyRjA4QSAvKiBTVkdQcm9wZXJ0eVJlZ2lzdHJ5Lmgg
Ki8sCisJCQkJOTNGQ0RCNEIyNjQ3MEREMTAwNDZERDdEIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmNw
cCAqLywKIAkJCQkwODhBMEUwMzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMu
aCAqLywKIAkJCQk1NTBGNjY0NTIyQ0E4OUJEMDAwQTM0MTcgLyogU1ZHU2hhcmVkUHJpbWl0aXZl
UHJvcGVydHkuaCAqLywKIAkJCQk3MjE0NDM0NjIyNDBDQUQyMDBGMTJGRjcgLyogU1ZHVmFsdWVQ
cm9wZXJ0eS5oICovLApAQCAtMjA5NDEsNiArMjA5NDQsNyBAQAogCQkJCTQ2RUYxNDI4MUY5N0I3
QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50LmlkbCAqLywKIAkJCQk4Mzc5MzYzQzFG
QkJCMEE0MDBDODAyM0MgLyogU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwICovLAogCQkJCTgz
NzkzNjNFMUZCQkIwQTUwMEM4MDIzQyAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oICovLAor
CQkJCTkzRkNEQjQ5MjY0NDU1RDYwMDQ2REQ3RCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllci5jcHAgKi8sCiAJCQkJODM3RDQ2MjUxRkEyQThDNTAwNTRFMUZBIC8qIFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyLmggKi8sCiAJCQkJNDEzRkM0Q0QxRkQxREQ4QzAwNTQxQzRCIC8q
IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaCAqLywKIAkJCQk0NkVGMTQyMTFGOTdC
N0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMuY3BwICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKaW5kZXggNGU4YjZj
NTkyMmU4YjI5ZTBmOTY2M2MxMzEyMDQ1ODg2MzAzOThlYi4uZWFjOGVmODk5MTgyNjBiMDU2Yzkx
NmE4MTJiNGFiYmNkNTdmMWM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiU1ZH
TmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNv
bnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDUsMTIgKzEwNiwxMiBA
QCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdAogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05h
bWVzOjp0YXJnZXRYQXR0cikgewotICAgICAgICBtX3RhcmdldFgtPnNldEJhc2VWYWxJbnRlcm5h
bCh2YWx1ZS5zdHJpbmcoKS50b1VJbnRTdHJpY3QoKSk7CisgICAgICAgIG1fdGFyZ2V0WC0+c2V0
QmFzZVZhbEludGVybmFsKHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4odmFsdWUpLnZhbHVlT3IoMCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnRh
cmdldFlBdHRyKSB7Ci0gICAgICAgIG1fdGFyZ2V0WS0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVl
LnN0cmluZygpLnRvVUludFN0cmljdCgpKTsKKyAgICAgICAgbV90YXJnZXRZLT5zZXRCYXNlVmFs
SW50ZXJuYWwocGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZSkudmFsdWVPcigwKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LmNwcAppbmRleCBjZjQ5ODRiZjk0N2FlZDFhNTA3Njc2MWZlMDBhZTc4OGY1MjYw
MmJkLi5jMzI0MjQzYWQ3YTQ4YzkwMjg5OGVhOThlZGNjY2VlMzA1ZGVkMmZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCkBAIC0yNSw2ICsyNSw3
IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMu
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC04MCw3ICs4MSw3IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAgICAgfQogCiAgICAgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyKSB7Ci0gICAgICAgIG1fbnVtT2N0YXZl
cy0+c2V0QmFzZVZhbEludGVybmFsKHZhbHVlLnN0cmluZygpLnRvVUludFN0cmljdCgpKTsKKyAg
ICAgICAgbV9udW1PY3RhdmVzLT5zZXRCYXNlVmFsSW50ZXJuYWwocGFyc2VJbnRlZ2VyPHVuc2ln
bmVkPih2YWx1ZSkudmFsdWVPcigwKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRleCBkMjhjNDRm
Yjc0MmFkMzBmOTdkNDcwZGY5NjdhOWIwOGY0NWMwNzEwLi4wOWY2NmFlYWYyNjZiNTYwMThiZmJh
ZDA1OTcxNDBiMmFiZDc1NzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9P
VEZGb250Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9u
dENvbnZlcnNpb24uY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiU1ZHVktlcm5FbGVt
ZW50LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4
OSwxMyArNDkwLDExIEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjphcHBlbmROQU1FVGFi
bGUoKQogdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZE9TMlRhYmxlKCkKIHsKICAg
ICBpbnQxNl90IGF2ZXJhZ2VBZHZhbmNlID0gc19vdXRwdXRVbml0c1BlckVtOwotICAgIGJvb2wg
b2s7Ci0gICAgaW50IHZhbHVlID0gbV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIpLnRvSW50KCZvayk7Ci0gICAgaWYg
KCFvayAmJiBtX21pc3NpbmdHbHlwaEVsZW1lbnQpCi0gICAgICAgIHZhbHVlID0gbV9taXNzaW5n
R2x5cGhFbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpo
b3Jpel9hZHZfeEF0dHIpLnRvSW50KCZvayk7Ci0gICAgdmFsdWUgPSBzY2FsZVVuaXRzUGVyRW0o
dmFsdWUpOwotICAgIGlmIChvaykKLSAgICAgICAgYXZlcmFnZUFkdmFuY2UgPSBjbGFtcFRvPGlu
dDE2X3Q+KHZhbHVlKTsKKyAgICBhdXRvIGhvcml6QWR2WCA9IHBhcnNlSW50ZWdlckFsbG93aW5n
VHJhaWxpbmdKdW5rPGludD4obV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIpKTsKKyAgICBpZiAoIWhvcml6QWR2WCAm
JiBtX21pc3NpbmdHbHlwaEVsZW1lbnQpCisgICAgICAgIGhvcml6QWR2WCA9IHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4obV9taXNzaW5nR2x5cGhFbGVtZW50LT5hdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpob3Jpel9hZHZfeEF0dHIpKTsKKyAg
ICBpZiAoaG9yaXpBZHZYKQorICAgICAgICBhdmVyYWdlQWR2YW5jZSA9IGNsYW1wVG88aW50MTZf
dD4oc2NhbGVVbml0c1BlckVtKCpob3JpekFkdlgpKTsKIAogICAgIGFwcGVuZDE2KDIpOyAvLyBW
ZXJzaW9uCiAgICAgYXBwZW5kMTYoY2xhbXBUbzxpbnQxNl90PihhdmVyYWdlQWR2YW5jZSkpOwpA
QCAtNTIyLDEwICs1MjEsOCBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kT1My
VGFibGUoKQogICAgICAgICBWZWN0b3I8U3RyaW5nPiBzZWdtZW50cyA9IG1fZm9udEZhY2VFbGVt
ZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpwYW5vc2VfMUF0
dHIpLnN0cmluZygpLnNwbGl0KCcgJyk7CiAgICAgICAgIGlmIChzZWdtZW50cy5zaXplKCkgPT0g
cGFub3NlU2l6ZSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogc2VnbWVudHMp
IHsKLSAgICAgICAgICAgICAgICBib29sIG9rOwotICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9
IHNlZ21lbnQudG9JbnQoJm9rKTsKLSAgICAgICAgICAgICAgICBpZiAob2sgJiYgdmFsdWUgPj0g
c3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWluKCkgJiYgdmFsdWUgPD0gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkpCi0gICAgICAgICAgICAgICAgICAgIHBhbm9zZUJ5
dGVzW251bVBhbm9zZUJ5dGVzKytdID0gdmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8g
dmFsdWUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50OF90PihzZWdtZW50
KSkKKyAgICAgICAgICAgICAgICAgICAgcGFub3NlQnl0ZXNbbnVtUGFub3NlQnl0ZXMrK10gPSAq
dmFsdWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC05NDcsMjAgKzk0NCwx
OCBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kVk9SR1RhYmxlKCkKICAgICBh
cHBlbmQxNigxKTsgLy8gTWFqb3IgdmVyc2lvbgogICAgIGFwcGVuZDE2KDApOyAvLyBNaW5vciB2
ZXJzaW9uCiAKLSAgICBib29sIG9rOwotICAgIGludCBkZWZhdWx0VmVydGljYWxPcmlnaW5ZID0g
bV9mb250RWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2
ZXJ0X29yaWdpbl95QXR0cikudG9JbnQoJm9rKTsKLSAgICBpZiAoIW9rICYmIG1fbWlzc2luZ0ds
eXBoRWxlbWVudCkKLSAgICAgICAgZGVmYXVsdFZlcnRpY2FsT3JpZ2luWSA9IG1fbWlzc2luZ0ds
eXBoRWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6dmVy
dF9vcmlnaW5feUF0dHIpLnRvSW50KCk7Ci0gICAgZGVmYXVsdFZlcnRpY2FsT3JpZ2luWSA9IHNj
YWxlVW5pdHNQZXJFbShkZWZhdWx0VmVydGljYWxPcmlnaW5ZKTsKLSAgICBhcHBlbmQxNihjbGFt
cFRvPGludDE2X3Q+KGRlZmF1bHRWZXJ0aWNhbE9yaWdpblkpKTsKKyAgICBhdXRvIHZlcnRPcmln
aW5ZID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihtX2ZvbnRFbGVtZW50
LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lB
dHRyKSk7CisgICAgaWYgKCF2ZXJ0T3JpZ2luWSAmJiBtX21pc3NpbmdHbHlwaEVsZW1lbnQpCisg
ICAgICAgIHZlcnRPcmlnaW5ZID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50
PihtX21pc3NpbmdHbHlwaEVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
U1ZHTmFtZXM6OnZlcnRfb3JpZ2luX3lBdHRyKSk7CisgICAgYXBwZW5kMTYoY2xhbXBUbzxpbnQx
Nl90PihzY2FsZVVuaXRzUGVyRW0odmVydE9yaWdpblkudmFsdWVPcigwKSkpKTsKIAogICAgIGF1
dG8gdGFibGVTaXplT2Zmc2V0ID0gbV9yZXN1bHQuc2l6ZSgpOwogICAgIGFwcGVuZDE2KDApOyAv
LyBQbGFjZSB0byB3cml0ZSB0YWJsZSBzaXplLgogICAgIGZvciAoR2x5cGggaSA9IDA7IGkgPCBt
X2dseXBocy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoYXV0byogZ2x5cGggPSBtX2dseXBo
c1tpXS5nbHlwaEVsZW1lbnQpIHsKLSAgICAgICAgICAgIGlmIChpbnQgdmVydGljYWxPcmlnaW5Z
ID0gZ2x5cGgtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnZlcnRf
b3JpZ2luX3lBdHRyKS50b0ludCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byB2ZXJ0aWNhbE9y
aWdpblkgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KGdseXBoLT5hdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp2ZXJ0X29yaWdpbl95QXR0cikp
KSB7CiAgICAgICAgICAgICAgICAgYXBwZW5kMTYoaSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5k
MTYoY2xhbXBUbzxpbnQxNl90PihzY2FsZVVuaXRzUGVyRW0odmVydGljYWxPcmlnaW5ZKSkpOwor
ICAgICAgICAgICAgICAgIGFwcGVuZDE2KGNsYW1wVG88aW50MTZfdD4oc2NhbGVVbml0c1BlckVt
KCp2ZXJ0aWNhbE9yaWdpblkpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNDU2LDEwICsxNDUxLDkgQEAgU1ZHVG9PVEZGb250Q29udmVydGVyOjpTVkdUb09URkZvbnRD
b252ZXJ0ZXIoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50KQogICAgICAgICAgICAg
ICAgIG1fd2VpZ2h0ID0gNzsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICBpbnQgdmFsdWUgPSBzZWdtZW50LnRv
SW50KG9rKTsKLSAgICAgICAgICAgIGlmIChvayAmJiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMTAw
MCkgewotICAgICAgICAgICAgICAgIG1fd2VpZ2h0ID0gc3RkOjptYXgoc3RkOjptaW4oKHZhbHVl
ICsgNTApIC8gMTAwLCBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDhf
dD46Om1heCgpKSksIHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90
Pjo6bWluKCkpKTsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazxpbnQ+KHNlZ21lbnQpOworICAgICAgICAgICAgaWYgKHZhbHVlICYmICp2
YWx1ZSA+PSAwICYmICp2YWx1ZSA8IDEwMDApIHsKKyAgICAgICAgICAgICAgICBtX3dlaWdodCA9
IHN0ZDo6bWF4KHN0ZDo6bWluKCgqdmFsdWUgKyA1MCkgLyAxMDAsIHN0YXRpY19jYXN0PGludD4o
c3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkpKSwgc3RhdGljX2Nhc3Q8aW50Pihz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptaW4oKSkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9h
bmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCmluZGV4IDY2MzM5MDU1MDAxZTVhOWI5ZGY5Yjc3
YjI0Mzc2ZjUyMGM0YzMzMTEuLjU1NGNkMWM3NThjYTIyY2RiYmVmZjQwYmRmYTc2Y2ExZDNhNTEy
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQu
Y3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhhc2hTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC0zMzMsNyArMzM0LDcgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1l
bnQ6OnBhcnNlQ2xvY2tWYWx1ZShjb25zdCBTdHJpbmcmIGRhdGEpCiB7CiAgICAgaWYgKGRhdGEu
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNvbHZlZCgpOwotICAgIAor
CiAgICAgU3RyaW5nIHBhcnNlID0gZGF0YS5zdHJpcFdoaXRlU3BhY2UoKTsKIAogICAgIHN0YXRp
YyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gaW5kZWZpbml0ZVZh
bHVlKCJpbmRlZmluaXRlIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwpAQCAt
MzQ0LDI3ICszNDUsMjQgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1
ZShjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgYm9vbCBvazsKICAgICBzaXplX3QgZG91YmxlUG9p
bnRPbmUgPSBwYXJzZS5maW5kKCc6Jyk7CiAgICAgc2l6ZV90IGRvdWJsZVBvaW50VHdvID0gcGFy
c2UuZmluZCgnOicsIGRvdWJsZVBvaW50T25lICsgMSk7Ci0gICAgaWYgKGRvdWJsZVBvaW50T25l
ID09IDIgJiYgZG91YmxlUG9pbnRUd28gPT0gNSAmJiBwYXJzZS5sZW5ndGgoKSA+PSA4KSB7IAot
ICAgICAgICByZXN1bHQgKz0gcGFyc2Uuc3Vic3RyaW5nKDAsIDIpLnRvVUludFN0cmljdCgmb2sp
ICogNjAgKiA2MDsKLSAgICAgICAgaWYgKCFvaykKKyAgICBpZiAoZG91YmxlUG9pbnRPbmUgPT0g
MiAmJiBkb3VibGVQb2ludFR3byA9PSA1ICYmIHBhcnNlLmxlbmd0aCgpID49IDgpIHsKKyAgICAg
ICAgYXV0byBob3VyID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KFN0cmluZ1ZpZXcgeyBwYXJzZSB9
LnN1YnN0cmluZygwLCAyKSk7CisgICAgICAgIGF1dG8gbWludXRlID0gcGFyc2VJbnRlZ2VyPHVp
bnQ4X3Q+KFN0cmluZ1ZpZXcgeyBwYXJzZSB9LnN1YnN0cmluZygzLCAyKSk7CisgICAgICAgIGlm
ICghaG91ciB8fCAhbWludXRlKQogICAgICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJlc29s
dmVkKCk7Ci0gICAgICAgIHJlc3VsdCArPSBwYXJzZS5zdWJzdHJpbmcoMywgMikudG9VSW50U3Ry
aWN0KCZvaykgKiA2MDsKLSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgIHJldHVybiBTTUlM
VGltZTo6dW5yZXNvbHZlZCgpOwotICAgICAgICByZXN1bHQgKz0gcGFyc2Uuc3Vic3RyaW5nKDYp
LnRvRG91YmxlKCZvayk7CisgICAgICAgIHJlc3VsdCA9ICpob3VyICogNjAgKiA2MCArICptaW51
dGUgKiA2MCArIHBhcnNlLnN1YnN0cmluZyg2KS50b0RvdWJsZSgmb2spOwogICAgIH0gZWxzZSBp
ZiAoZG91YmxlUG9pbnRPbmUgPT0gMiAmJiBkb3VibGVQb2ludFR3byA9PSBub3RGb3VuZCAmJiBw
YXJzZS5sZW5ndGgoKSA+PSA1KSB7IAotICAgICAgICByZXN1bHQgKz0gcGFyc2Uuc3Vic3RyaW5n
KDAsIDIpLnRvVUludFN0cmljdCgmb2spICogNjA7Ci0gICAgICAgIGlmICghb2spCisgICAgICAg
IGF1dG8gbWludXRlID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KFN0cmluZ1ZpZXcgeyBwYXJzZSB9
LnN1YnN0cmluZygwLCAyKSk7CisgICAgICAgIGlmICghbWludXRlKQogICAgICAgICAgICAgcmV0
dXJuIFNNSUxUaW1lOjp1bnJlc29sdmVkKCk7Ci0gICAgICAgIHJlc3VsdCArPSBwYXJzZS5zdWJz
dHJpbmcoMykudG9Eb3VibGUoJm9rKTsKKyAgICAgICAgcmVzdWx0ID0gKm1pbnV0ZSAqIDYwICsg
cGFyc2Uuc3Vic3RyaW5nKDMpLnRvRG91YmxlKCZvayk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJl
dHVybiBwYXJzZU9mZnNldFZhbHVlKHBhcnNlKTsKLQogICAgIGlmICghb2sgfHwgIVNNSUxUaW1l
KHJlc3VsdCkuaXNGaW5pdGUoKSkKICAgICAgICAgcmV0dXJuIFNNSUxUaW1lOjp1bnJlc29sdmVk
KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KLSAgICAKKwogc3RhdGljIHZvaWQgc29ydFRpbWVM
aXN0KFZlY3RvcjxTTUlMVGltZVdpdGhPcmlnaW4+JiB0aW1lTGlzdCkKIHsKICAgICBzdGQ6OnNv
cnQodGltZUxpc3QuYmVnaW4oKSwgdGltZUxpc3QuZW5kKCkpOwpAQCAtMzc1LDcgKzM3Myw2IEBA
IGJvb2wgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ29uZGl0aW9uKGNvbnN0IFN0cmluZyYgdmFsdWUs
IEJlZ2luT3JFbmQgYmVnaW5PckVuZCkKICAgICBTdHJpbmcgcGFyc2VTdHJpbmcgPSB2YWx1ZS5z
dHJpcFdoaXRlU3BhY2UoKTsKICAgICAKICAgICBkb3VibGUgc2lnbiA9IDEuOwotICAgIGJvb2wg
b2s7CiAgICAgc2l6ZV90IHBvcyA9IHBhcnNlU3RyaW5nLmZpbmQoJysnKTsKICAgICBpZiAocG9z
ID09IG5vdEZvdW5kKSB7CiAgICAgICAgIHBvcyA9IHBhcnNlU3RyaW5nLmZpbmQoJy0nKTsKQEAg
LTQxMiwxMiArNDA5LDEzIEBAIGJvb2wgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ29uZGl0aW9uKGNv
bnN0IFN0cmluZyYgdmFsdWUsIEJlZ2luT3JFbmQgYmVnaW5PckVuZCkKICAgICBDb25kaXRpb246
OlR5cGUgdHlwZTsKICAgICBpbnQgcmVwZWF0cyA9IC0xOwogICAgIGlmIChuYW1lU3RyaW5nLnN0
YXJ0c1dpdGgoInJlcGVhdCgiKSAmJiBuYW1lU3RyaW5nLmVuZHNXaXRoKCcpJykpIHsKLSAgICAg
ICAgLy8gRklYTUU6IEZvciByZXBlYXQgZXZlbnRzIHdlIGp1c3QgbmVlZCB0byBhZGQgdGhlIGRh
dGEgY2FycnlpbmcgVGltZUV2ZW50IGNsYXNzIGFuZCAKLSAgICAgICAgLy8gZmlyZSB0aGUgZXZl
bnRzIGF0IGFwcHJvcGlhdGUgdGltZXMuCi0gICAgICAgIHJlcGVhdHMgPSBuYW1lU3RyaW5nLnN1
YnN0cmluZyg3LCBuYW1lU3RyaW5nLmxlbmd0aCgpIC0gOCkudG9VSW50U3RyaWN0KCZvayk7Ci0g
ICAgICAgIGlmICghb2spCisgICAgICAgIC8vIEZJWE1FOiBGb3IgcmVwZWF0IGV2ZW50cyB3ZSBq
dXN0IG5lZWQgdG8gYWRkIHRoZSBkYXRhIGNhcnJ5aW5nIFRpbWVFdmVudCBjbGFzcyBhbmQgZmly
ZSB0aGUgZXZlbnRzIGF0IGFwcHJvcGlhdGUgdGltZXMuCisgICAgICAgIGF1dG8gcGFyc2VkUmVw
ZWF0ID0gcGFyc2VJbnRlZ2VyPHVuc2lnbmVkPihTdHJpbmdWaWV3IHsgbmFtZVN0cmluZyB9LnN1
YnN0cmluZyg3LCBuYW1lU3RyaW5nLmxlbmd0aCgpIC0gOCkpOworICAgICAgICBpZiAoIXBhcnNl
ZFJlcGVhdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbmFtZVN0cmluZyA9
ICJyZXBlYXQiOworICAgICAgICAvLyBGSVhNRTogQnkgYXNzaWduaW5nIGFuIHVuc2lnbmVkIHRv
IGEgc2lnbmVkLCB0aGlzIGNhbiB0dXJuIGxhcmdlIGludGVnZXJzIGludG8gbmVnYXRpdmUgbnVt
YmVycy4KKyAgICAgICAgcmVwZWF0cyA9ICpwYXJzZWRSZXBlYXQ7CisgICAgICAgIG5hbWVTdHJp
bmcgPSAicmVwZWF0Il9zOwogICAgICAgICB0eXBlID0gQ29uZGl0aW9uOjpFdmVudEJhc2U7CiAg
ICAgfSBlbHNlIGlmIChuYW1lU3RyaW5nID09ICJiZWdpbiIgfHwgbmFtZVN0cmluZyA9PSAiZW5k
IikgewogICAgICAgICBpZiAoYmFzZUlELmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbklt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRp
dmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKaW5kZXggNDc2ZmIzNGIzYWNhNGIyMWZiN2QwZWRjZWMx
ZGYwYTkxMjhkOTg5NC4uMjY0YWI2MDE0OTk1NmE1ZDFjZTQzZGU0NzU4ZDRlNzE1ZTRiNjYwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRk
aXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVt
ZW50LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDQgKzQ1LDkgQEAgQ29sb3IgU1ZHQW5pbWF0
aW9uQ29sb3JGdW5jdGlvbjo6Y29sb3JGcm9tU3RyaW5nKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1l
bnQsIGNvbnMKICAgICByZXR1cm4geyB9OwogfQogCitPcHRpb25hbDxmbG9hdD4gU1ZHQW5pbWF0
aW9uSW50ZWdlckZ1bmN0aW9uOjpjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3Qg
U3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6
OmFicyhwYXJzZUludGVnZXI8aW50Pih0bykudmFsdWVPcigwKSAtIHBhcnNlSW50ZWdlcjxpbnQ+
KGZyb20pLnZhbHVlT3IoMCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVu
Y3Rpb25JbXBsLmgKaW5kZXggNGNlY2NmN2FmMDBhNzUyYzlkMGY1YWQ5MDQ3MWY1MDg2YzdhNzkw
Ni4uNGJhMzdhOWNhN2NmOGEzNDRiYTYzYjQ2MTcwYWM3YjI0NWEyYzY0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1
bmN0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaApAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIENvbG9yIGNvbG9yRnJvbVN0cmluZyhTVkdFbGVtZW50KiwgY29uc3Qg
U3RyaW5nJik7CiB9OwogCi1jbGFzcyBTVkdBbmltYXRpb25JbnRlZ2VyRnVuY3Rpb24gOiBwdWJs
aWMgU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uPGludD4geworY2xhc3MgU1ZHQW5p
bWF0aW9uSW50ZWdlckZ1bmN0aW9uIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGlvbkFkZGl0aXZl
VmFsdWVGdW5jdGlvbjxpbnQ+IHsKICAgICBmcmllbmQgY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2Vy
UGFpckFuaW1hdG9yOwogCiBwdWJsaWM6CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogICAg
ICAgICBtX3RvID0gU1ZHUHJvcGVydHlUcmFpdHM8aW50Pjo6ZnJvbVN0cmluZyh0byk7CiAgICAg
fQogCi0gICAgdm9pZCBzZXRUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9B
dEVuZE9mRHVyYXRpb24pIG92ZXJyaWRlCisgICAgdm9pZCBzZXRUb0F0RW5kT2ZEdXJhdGlvblZh
bHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb24pIGZpbmFsCiAgICAgewogICAgICAg
ICBtX3RvQXRFbmRPZkR1cmF0aW9uID0gU1ZHUHJvcGVydHlUcmFpdHM8aW50Pjo6ZnJvbVN0cmlu
Zyh0b0F0RW5kT2ZEdXJhdGlvbik7CiAgICAgfQpAQCAtMTQ5LDEzICsxNDksMTAgQEAgcHVibGlj
OgogICAgICAgICBhbmltYXRlZCA9IHN0YXRpY19jYXN0PGludD4ocm91bmRmKEJhc2U6OmFuaW1h
dGUocHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBtX2Zyb20sIG1fdG8sIHRvQXRFbmRPZkR1cmF0aW9u
KCksIGFuaW1hdGVkKSkpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVE
aXN0YW5jZShTVkdFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRv
KSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6YWJzKHRvLnRvSW50
U3RyaWN0KCkgLSBmcm9tLnRvSW50U3RyaWN0KCkpOwotICAgIH0KKyAgICBPcHRpb25hbDxmbG9h
dD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgotICAgIHZvaWQgYWRkRnJvbUFuZFRvVmFs
dWVzKFNWR0VsZW1lbnQqKSBvdmVycmlkZQorICAgIHZvaWQgYWRkRnJvbUFuZFRvVmFsdWVzKFNW
R0VsZW1lbnQqKSBmaW5hbAogICAgIHsKICAgICAgICAgbV90byArPSBtX2Zyb207CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFp
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFlNGY0NzhkNzEzMmYxOWRmZWM2YjkwMjQwMDQwOWQzZTFjOTVlYjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eVRyYWl0cy5jcHAKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTVkdQ
cm9wZXJ0eVRyYWl0cy5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29u
dmVyc2lvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2ludCBTVkdQcm9wZXJ0eVRyYWl0
czxpbnQ+Ojpmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiBw
YXJzZUludGVnZXI8aW50PihzdHJpbmcpLnZhbHVlT3IoMCk7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCmluZGV4IDdkMDRm
YmM1YTVhZTgxZTRlMDRiODA0ZjM5ZGY2ZDY2NjgzZTBhODUuLjBjYWRhN2EwMmNhZjAwNDMyNzIy
MmIzOGUxY2FmZjkyYmNjYzIzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaApAQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgU1ZHUHJv
cGVydHlUcmFpdHM8dW5zaWduZWQ+IHsKIHRlbXBsYXRlPD4KIHN0cnVjdCBTVkdQcm9wZXJ0eVRy
YWl0czxpbnQ+IHsKICAgICBzdGF0aWMgaW50IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIDA7IH0K
LSAgICBzdGF0aWMgaW50IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJnN0cmluZykgeyByZXR1cm4g
c3RyaW5nLnRvSW50U3RyaWN0KCk7IH0KKyAgICBzdGF0aWMgaW50IGZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPGludD4gcGFyc2UoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IFN0cmluZyYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBpbml0
aWFsVmFsdWUoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoaW50IHR5cGUpIHsgcmV0
dXJuIFN0cmluZzo6bnVtYmVyKHR5cGUpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTZkNDQ3ZGFiNTRhYzk2ZWY2ZTBjNzY3N2IyNWUyYzczNDRhMDg0
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllci5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK09wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyOworICAgIHVuc2lnbmVkIGNvdW50
ZXIgPSAwOworICAgIGZvciAoYXV0byBpdGVtIDogc3RyaW5nLnNwbGl0KCctJykpIHsKKyAgICAg
ICAgYXV0byBpZGVudGlmaWVyID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90PihpdGVtKTsKKyAgICAg
ICAgaWYgKCFpZGVudGlmaWVyIHx8ICEqaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIGlmICghY291bnRlcisrKQorICAgICAgICAgICAgY2xpZW50
SWRlbnRpZmllci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlm
aWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihpZGVudGlmaWVyLnZhbHVlKCkp
OworICAgICAgICBlbHNlIGlmIChjb3VudGVyID09IDIpCisgICAgICAgICAgICBjbGllbnRJZGVu
dGlmaWVyLmNvbnRleHRJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8RG9jdW1lbnRJ
ZGVudGlmaWVyVHlwZT4oaWRlbnRpZmllci52YWx1ZSgpKTsKKyAgICB9CisgICAgcmV0dXJuIChj
b3VudGVyID09IDIpID8gbWFrZU9wdGlvbmFsKFdURk1vdmUoY2xpZW50SWRlbnRpZmllcikpIDog
V1RGOjpudWxsb3B0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCmluZGV4IGMz
ZmRiNWUxZDZiYTA3MzFmMjZmZjVhNGYzNzU1OGRiNGY0YzE1NzYuLjk4YTRlMzU1NmQxNzgwMDIw
MmU1M2EzMGZiNDIwZGZmNjhmYTgzODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCkBA
IC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTQ5LDI0ICs0OCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllciB7CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXImIGEsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBi
KQogewotICAgIHJldHVybiBhLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID09IGIuc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIgJiYgIGEuY29udGV4dElkZW50aWZpZXIgPT0gYi5jb250ZXh0
SWRlbnRpZmllcjsKLX0KLQotaW5saW5lIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyPiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhTdHJpbmdW
aWV3IHN0cmluZykKLXsKLSAgICBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJ
ZGVudGlmaWVyOwotCi0gICAgdW5zaWduZWQgY291bnRlciA9IDA7Ci0gICAgZm9yIChhdXRvIGl0
ZW0gOiBzdHJpbmcuc3BsaXQoJy0nKSkgewotICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBpdGVt
LnRvVUludDY0U3RyaWN0KCk7Ci0gICAgICAgIGlmICghaWRlbnRpZmllciB8fCAhKmlkZW50aWZp
ZXIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICBpZiAoIWNvdW50
ZXIrKykKLSAgICAgICAgICAgIGNsaWVudElkZW50aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
VHlwZT4oaWRlbnRpZmllci52YWx1ZSgpKTsKLSAgICAgICAgZWxzZSBpZiAoY291bnRlciA9PSAy
KQotICAgICAgICAgICAgY2xpZW50SWRlbnRpZmllci5jb250ZXh0SWRlbnRpZmllciA9IG1ha2VP
YmplY3RJZGVudGlmaWVyPERvY3VtZW50SWRlbnRpZmllclR5cGU+KGlkZW50aWZpZXIudmFsdWUo
KSk7Ci0gICAgfQotICAgIHJldHVybiAoY291bnRlciA9PSAyKSA/IG1ha2VPcHRpb25hbChXVEZN
b3ZlKGNsaWVudElkZW50aWZpZXIpKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYS5zZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9PSBiLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyICYm
IGEuY29udGV4dElkZW50aWZpZXIgPT0gYi5jb250ZXh0SWRlbnRpZmllcjsKIH0KIAogdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTk2LDI1ICs3OCwyMyBAQCBpbmxpbmUgdW5zaWduZWQgU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6Omhhc2goKSBjb25zdAogICAgIHJldHVybiBjb21w
dXRlSGFzaChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGV4dElkZW50aWZpZXIpOwog
fQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCiBzdHJ1Y3Qg
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXJIYXNoIHsKICAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYga2V5KSB7
IHJldHVybiBrZXkuaGFzaCgpOyB9CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGEsIGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBiKSB7IHJldHVybiBhID09IGI7IH0KICAgICBzdGF0
aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiB9Owog
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyPiB7CiAgICAgc3RhdGljIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
IGVtcHR5VmFsdWUoKSB7IHJldHVybiB7IH07IH0KLQogICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVj
dERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgc2xv
dCkgeyBuZXcgKE5vdE51bGwsICZzbG90LnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSBXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7
IH0KLQogICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBzbG90KSB7IHJldHVybiBzbG90LnNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIH07CiAKLXRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyPiA6IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVySGFzaCB7IH07Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllcj4gOiBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllckhhc2ggeyB9Owog
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAppbmRleCA0Y2U3MGExNTEyZmEwYjQz
NzE0YWJjMWRlYjc0ZTE0NWI0ZDllYzExLi5lNDQ1MmE3ZjQ1YTg0MDQ2YjUzNGZmMDQ1ZWFiYTBi
Y2M2MWQ4YmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9VUkxIYXNo
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwNywyMCArMTA4LDkgQEAgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJv
bURhdGFiYXMKIAogICAgIC8vIElmIHRoZXJlJ3MgYSBnYXAgYmV0d2VlbiB0aGlyZCBhbmQgc2Vj
b25kLCB3ZSBleHBlY3QgdG8gaGF2ZSBhIHBvcnQgdG8gZGVjb2RlCiAgICAgaWYgKHRoaXJkIC0g
c2Vjb25kID4gMSkgewotICAgICAgICBib29sIG9rOwotICAgICAgICB1bnNpZ25lZCBwb3J0Owot
ICAgICAgICBpZiAoa2V5LmlzOEJpdCgpKQotICAgICAgICAgICAgcG9ydCA9IGNoYXJhY3RlcnNU
b1VJbnRTdHJpY3Qoa2V5LmNoYXJhY3RlcnM4KCkgKyBzZWNvbmQgKyAxLCB0aGlyZCAtIHNlY29u
ZCAtIDEgLCAmb2spOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwb3J0ID0gY2hhcmFjdGVy
c1RvVUludFN0cmljdChrZXkuY2hhcmFjdGVyczE2KCkgKyBzZWNvbmQgKyAxLCB0aGlyZCAtIHNl
Y29uZCAtIDEsICZvayk7Ci0KLSAgICAgICAgaWYgKCFvaykKKyAgICAgICAgc2hvcnRQb3J0ID0g
cGFyc2VJbnRlZ2VyPHVpbnQxNl90PihTdHJpbmdWaWV3IHsga2V5IH0uc3Vic3RyaW5nKHNlY29u
ZCArIDEsIHRoaXJkIC0gc2Vjb25kIC0gMSkpOworICAgICAgICBpZiAoIXNob3J0UG9ydCkKICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAgICAgaWYgKHBvcnQgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgICAgIHNob3J0UG9ydCA9IHN0YXRpY19jYXN0PHVpbnQxNl90Pihw
b3J0KTsKICAgICB9CiAKICAgICBhdXRvIHNjb3BlID0gVVJMIHsgVVJMKCksIGtleS5zdWJzdHJp
bmcodGhpcmQgKyAxKSB9Owo=
</data>
<flag name="review"
          id="448937"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>