<?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>212585</bug_id>
          
          <creation_ts>2020-05-31 16:18:17 -0700</creation_ts>
          <short_desc>Change Gigacage::Config to use storage in WebConfig::g_config instead of its own.</short_desc>
          <delta_ts>2020-06-02 12:45:45 -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>bmalloc</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=212599</see_also>
          <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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>guijemont</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1657807</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-31 16:18:17 -0700</bug_when>
    <thetext>This should save us another 16K for LuaJSFight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657808</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-31 16:18:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/63812487&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657811</commentid>
    <comment_count>2</comment_count>
      <attachid>400710</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-31 17:41:49 -0700</bug_when>
    <thetext>Created attachment 400710
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657813</commentid>
    <comment_count>3</comment_count>
      <attachid>400711</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-31 17:54:09 -0700</bug_when>
    <thetext>Created attachment 400711
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657814</commentid>
    <comment_count>4</comment_count>
      <attachid>400712</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-31 18:05:01 -0700</bug_when>
    <thetext>Created attachment 400712
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657815</commentid>
    <comment_count>5</comment_count>
      <attachid>400713</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-31 18:29:33 -0700</bug_when>
    <thetext>Created attachment 400713
work in progress for EWS testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657816</commentid>
    <comment_count>6</comment_count>
      <attachid>400714</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-31 18:37:40 -0700</bug_when>
    <thetext>Created attachment 400714
work in progress for EWS testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657817</commentid>
    <comment_count>7</comment_count>
      <attachid>400715</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-31 18:40:33 -0700</bug_when>
    <thetext>Created attachment 400715
work in progress for EWS testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657831</commentid>
    <comment_count>8</comment_count>
      <attachid>400720</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-31 21:41:19 -0700</bug_when>
    <thetext>Created attachment 400720
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657832</commentid>
    <comment_count>9</comment_count>
      <attachid>400721</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-31 22:10:26 -0700</bug_when>
    <thetext>Created attachment 400721
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657833</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-31 23:00:35 -0700</bug_when>
    <thetext>Looks like Win EWS bot failure is unrelated to my patch.  That means this is ready for a review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657940</commentid>
    <comment_count>11</comment_count>
      <attachid>400721</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-01 09:25:43 -0700</bug_when>
    <thetext>Comment on attachment 400721
proposed patch.

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

&gt; Source/WTF/ChangeLog:24
&gt; +        We now think of the various Config records as being allocated from parts of a
&gt; +        WebConfig::g_config buffer.  WTF::Config will manage the mechanics of freezing
&gt; +        that buffer.  And the JSC VM is still the determiner of if/when to freeze the
&gt; +        buffer, and it will do this at the end of the construction of the very first
&gt; +        VM instance (as before).
&gt; +
&gt; +        Gigacage::Config reserves space in WebConfig::g_config.
&gt; +        WTF::Config will honor that reservation and place itself after that.
&gt; +        JSC::Config will continue to place itself at WTF::Config::spaceForExtensions.
&gt; +
&gt; +        The upside of this approach this is that we can now share the same memory page
&gt; +        for all the Configs, and can freeze them in one go.
&gt; +
&gt; +        The downside is that g_gigacageConfig, g_wtfConfig, and g_jscConfig now have to
&gt; +        be macros.  This results in some weirdness e.g. they are no longer qualified by
&gt; +        namespaces: referring to WTF::g_wtfConfig is now incorrect.

This is unfortunate that we need to organize this as it is. However, given that RAMification and daemon apps&apos; requirement is super tight, we have no room for wasting 16KB memory. Actually, this improves LuaJSFight by 2%.
So, I agree to this direction.

&gt; Source/bmalloc/bmalloc/Gigacage.cpp:202
&gt;  }

Does disablePrimitiveGigacage work after this change? If it does not work, do we need to have this function?
This function is called from ArrayBuffer::createFromBytes, but it is super likely that this function is called after the config is permanently frozen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657958</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-01 10:15:33 -0700</bug_when>
    <thetext>*** Bug 212599 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658191</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 00:57:48 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #11)
&gt; Does disablePrimitiveGigacage work after this change? If it does not work,
&gt; do we need to have this function?
&gt; This function is called from ArrayBuffer::createFromBytes, but it is super
&gt; likely that this function is called after the config is permanently frozen.

You are correct.  Unconditional freezing does break disablePrimitiveGigacage().  I&apos;ve implemented a workaround for this in my revised patch.  Uploading soon for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658193</commentid>
    <comment_count>14</comment_count>
      <attachid>400792</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 00:58:21 -0700</bug_when>
    <thetext>Created attachment 400792
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658262</commentid>
    <comment_count>15</comment_count>
      <attachid>400792</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2020-06-02 06:19:05 -0700</bug_when>
    <thetext>Comment on attachment 400792
proposed patch.

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

&gt; Source/bmalloc/bmalloc/Gigacage.h:216
&gt; +BINLINE bool disablingPrimitiveGigacageIsForbidden() { return false }

Looks like the missing semicolon is what&apos;s making the 32-bit EWS bots red.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658269</commentid>
    <comment_count>16</comment_count>
      <attachid>400813</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 06:43:32 -0700</bug_when>
    <thetext>Created attachment 400813
propose patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658283</commentid>
    <comment_count>17</comment_count>
      <attachid>400813</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 07:18:44 -0700</bug_when>
    <thetext>Comment on attachment 400813
propose patch.

I think this is ready for a review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658411</commentid>
    <comment_count>18</comment_count>
      <attachid>400813</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-02 12:19:29 -0700</bug_when>
    <thetext>Comment on attachment 400813
propose patch.

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

r=me

&gt; Source/bmalloc/ChangeLog:36
&gt; +           base pointer.  We can longer do that because the base pointer will be frozen

/longer/no longer/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658418</commentid>
    <comment_count>19</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-02 12:45:45 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r262434: &lt;http://trac.webkit.org/r262434&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400710</attachid>
            <date>2020-05-31 17:41:49 -0700</date>
            <delta_ts>2020-05-31 17:42:32 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-212585.patch</filename>
            <type>text/plain</type>
            <size>28581</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDIwLTA1LTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29u
ZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMjU4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvSlNDQ29uZmln
Lmg6CisgICAgICAgIChKU0M6OkNvbmZpZzo6aXNQZXJtYW5lbnRseUZyb3plbik6CisKIDIwMjAt
MDUtMzEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBK
U0M6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXVEY6OkNvbmZpZyBpbnN0ZWFkIG9mIGl0cyBv
d24uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTQzMiw3ICs0MzIsNyBAQCBtYWNybyBjYWdlZFByaW1pdGl2ZShwdHIsIGxlbmd0aCwgc2NyYXRj
CiAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHB0cgogICAgIGVuZAogICAgIGlmIEdJR0FDQUdFX0VO
QUJMRUQKLSAgICAgICAgY2FnZShfZ19naWdhY2FnZUNvbmZpZyArIEdpZ2FjYWdlOjpDb25maWc6
OmJhc2VQdHJzICsgR2lnYWNhZ2VQcmltaXRpdmVCYXNlUHRyT2Zmc2V0LCBjb25zdGV4cHIgR2ln
YWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgc291cmNlLCBzY3JhdGNoKQorICAgICAgICBj
YWdlKF9nX2NvbmZpZyArIChjb25zdGV4cHIgR2lnYWNhZ2U6OnN0YXJ0T2Zmc2V0T2ZHaWdhY2Fn
ZUNvbmZpZykgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2FjYWdlUHJpbWl0aXZl
QmFzZVB0ck9mZnNldCwgY29uc3RleHByIEdpZ2FjYWdlOjpwcmltaXRpdmVHaWdhY2FnZU1hc2ss
IHNvdXJjZSwgc2NyYXRjaCkKICAgICAgICAgaWYgQVJNNjRFCiAgICAgICAgICAgICBjb25zdCBu
dW1iZXJPZlBBQ0JpdHMgPSBjb25zdGV4cHIgTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUEFDQml0
cwogICAgICAgICAgICAgYmZpcSBzY3JhdGNoMiwgMCwgNjQgLSBudW1iZXJPZlBBQ0JpdHMsIHB0
cgpAQCAtNDQ2LDcgKzQ0Niw3IEBAIGVuZAogbWFjcm8gbG9hZENhZ2VkSlNWYWx1ZShzb3VyY2Us
IGRlc3QsIHNjcmF0Y2hPckxlbmd0aCkKICAgICBsb2FkcCBzb3VyY2UsIGRlc3QKICAgICBpZiBH
SUdBQ0FHRV9FTkFCTEVECi0gICAgICAgIGNhZ2UoX2dfZ2lnYWNhZ2VDb25maWcgKyBHaWdhY2Fn
ZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2FjYWdlSlNWYWx1ZUJhc2VQdHJPZmZzZXQsIGNvbnN0
ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2FjYWdlTWFzaywgZGVzdCwgc2NyYXRjaE9yTGVuZ3Ro
KQorICAgICAgICBjYWdlKF9nX2NvbmZpZyArIChjb25zdGV4cHIgR2lnYWNhZ2U6OnN0YXJ0T2Zm
c2V0T2ZHaWdhY2FnZUNvbmZpZykgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2Fj
YWdlSlNWYWx1ZUJhc2VQdHJPZmZzZXQsIGNvbnN0ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2Fj
YWdlTWFzaywgZGVzdCwgc2NyYXRjaE9yTGVuZ3RoKQogICAgIGVuZAogZW5kCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCShyZXZpc2lvbiAyNjIzNjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgZW5hYmxlUmVz
dHJpY3RlZE9wdGlvbnMoKTsKICAgICB9CiAKLSAgICBib29sIGlzUGVybWFuZW50bHlGcm96ZW4o
KSB7IHJldHVybiBXVEY6Omdfd3RmQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW47IH0KKyAgICBi
b29sIGlzUGVybWFuZW50bHlGcm96ZW4oKSB7IHJldHVybiBnX3d0ZkNvbmZpZy5pc1Blcm1hbmVu
dGx5RnJvemVuOyB9CiAKICAgICAvLyBBbGwgdGhlIGZpZWxkcyBpbiB0aGlzIHN0cnVjdCBzaG91
bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgogICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAv
IG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKQEAgLTgyLDEyICs4
MiwxMSBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICBXVEY6OlB0clRhZ0xvb2t1cCBwdHJUYWdMb29r
dXBSZWNvcmQ7CiB9OwogCi1jb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5z
aW9uID0gb2Zmc2V0b2YoV1RGOjpDb25maWcsIHNwYWNlRm9yRXh0ZW5zaW9ucyk7CiBjb25zdGV4
cHIgc2l6ZV90IGFsaWdubWVudE9mSlNDQ29uZmlnID0gc3RkOjphbGlnbm1lbnRfb2Y8SlNDOjpD
b25maWc+Ojp2YWx1ZTsKIAotc3RhdGljX2Fzc2VydChzaXplb2YoSlNDOjpDb25maWcpIDw9IChz
aXplb2YoV1RGOjpDb25maWcpIC0gb2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24pKTsKLXN0YXRp
Y19hc3NlcnQocm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkpTQ0NvbmZpZz4ob2Zmc2V0
T2ZXVEZDb25maWdFeHRlbnNpb24pID09IG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uKTsKK3N0
YXRpY19hc3NlcnQoV1RGOjpvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbiArIHNpemVvZihKU0M6
OkNvbmZpZykgPD0gV1RGOjpDb25maWdTaXplVG9Qcm90ZWN0KTsKK3N0YXRpY19hc3NlcnQocm91
bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkpTQ0NvbmZpZz4oV1RGOjpvZmZzZXRPZldURkNv
bmZpZ0V4dGVuc2lvbikgPT0gV1RGOjpvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbik7CiAKLSNk
ZWZpbmUgZ19qc2NDb25maWcgKCpiaXR3aXNlX2Nhc3Q8Q29uZmlnKj4oJldURjo6Z193dGZDb25m
aWcuc3BhY2VGb3JFeHRlbnNpb25zKSkKKyNkZWZpbmUgZ19qc2NDb25maWcgKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmZ193dGZDb25maWcuc3BhY2VGb3JFeHRlbnNpb25zKSkKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL1dURi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wNS0zMSAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEdpZ2FjYWdlOjpD
b25maWcgdG8gdXNlIHN0b3JhZ2UgaW4gV2ViQ29uZmlnOjpnX2NvbmZpZyBpbnN0ZWFkIG9mIGl0
cyBvd24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTI1ODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzODEyNDg3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5vdyB0aGluayBvZiB0aGUgdmFy
aW91cyBDb25maWcgcmVjb3JkcyBhcyBiZWluZyBhbGxvY2F0ZWQgZnJvbSBwYXJ0cyBvZiBhCisg
ICAgICAgIFdlYkNvbmZpZzo6Z19jb25maWcgYnVmZmVyLiAgV1RGOjpDb25maWcgd2lsbCBtYW5h
Z2UgdGhlIG1lY2hhbmljcyBvZiBmcmVlemluZworICAgICAgICB0aGF0IGJ1ZmZlci4gIEFuZCB0
aGUgSlNDIFZNIGlzIHN0aWxsIHRoZSBkZXRlcm1pbmVyIG9mIGlmL3doZW4gdG8gZnJlZXplIHRo
ZQorICAgICAgICBidWZmZXIuCisKKyAgICAgICAgR2lnYWNhZ2U6OkNvbmZpZyByZXNlcnZlcyBz
cGFjZSBpbiBXZWJDb25maWc6OmdfY29uZmlnLgorICAgICAgICBXVEY6OkNvbmZpZyB3aWxsIGhv
bm9yIHRoYXQgcmVzZXJ2YXRpb24gYW5kIHBsYWNlIGl0c2VsZiBhZnRlciB0aGF0LgorICAgICAg
ICBKU0M6OkNvbmZpZyB3aWxsIGNvbnRpbnVlIHRvIHBsYWNlIGl0c2VsZiBhdCBXVEY6OkNvbmZp
Zzo6c3BhY2VGb3JFeHRlbnNpb25zLgorCisgICAgICAgIFRoZSB1cHNpZGUgb2YgdGhpcyBhcHBy
b2FjaCB0aGlzIGlzIHRoYXQgd2UgY2FuIG5vdyBzaGFyZSB0aGUgc2FtZSBtZW1vcnkgcGFnZQor
ICAgICAgICBmb3IgYWxsIHRoaXMgQ29uZmlncywgYW5kIGNhbiBmcmVlemUgdGhlbSBpbiBvbmUg
Z28uCisKKyAgICAgICAgVGhlIGRvd25zaWRlIGlzIHRoYXQgZ19naWdhY2FnZUNvbmZpZywgZ193
dGZDb25maWcsIGFuZCBnX2pzY0NvbmZpZyBub3cgaGF2ZSB0bworICAgICAgICBiZSBtYWNyb3Mu
ICBUaGlzIHJlc3VsdHMgaW4gc29tZSB3ZWlyZG5lc3MgZS5nLiB0aGV5IGFyZSBubyBsb25nZXIg
cXVhbGlmaWVkIGJ5CisgICAgICAgIG5hbWVzcGFjZXM6IHJlZmVycmluZyB0byBXVEY6Omdfd3Rm
Q29uZmlnIGlzIGluY29ycmVjdC4KKworICAgICAgICAqIHd0Zi9XVEZDb25maWcuY3BwOgorICAg
ICAgICAoV1RGOjpDb25maWc6OnBlcm1hbmVudGx5RnJlZXplKToKKyAgICAgICAgKiB3dGYvV1RG
Q29uZmlnLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorCiAyMDIwLTA1LTMxICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgSlNDOjpDb25maWcgdG8gdXNl
IHN0b3JhZ2UgaW4gV1RGOjpDb25maWcgaW5zdGVhZCBvZiBpdHMgb3duLgpJbmRleDogU291cmNl
L1dURi93dGYvV1RGQ29uZmlnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9XVEZD
b25maWcuY3BwCShyZXZpc2lvbiAyNjIzNjEpCisrKyBTb3VyY2UvV1RGL3d0Zi9XVEZDb25maWcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw5ICszNSwxNCBAQAogI2luY2x1ZGUgPHN5cy9tbWFu
Lmg+CiAjZW5kaWYKIAotbmFtZXNwYWNlIFdURiB7CituYW1lc3BhY2UgV2ViQ29uZmlnIHsKKwor
dXNpbmcgU2xvdCA9IHVpbnQ2NF90OworYWxpZ25hcyhXVEY6OkNvbmZpZ1NpemVUb1Byb3RlY3Qp
IFdURl9FWFBPUlRfUFJJVkFURSBTbG90IGdfY29uZmlnW1dURjo6Q29uZmlnU2l6ZVRvUHJvdGVj
dCAvIHNpemVvZihTbG90KV07CiAKLWFsaWduYXMoQ29uZmlnU2l6ZVRvUHJvdGVjdCkgV1RGX0VY
UE9SVF9QUklWQVRFIENvbmZpZyBnX3d0ZkNvbmZpZzsKK30gLy8gbmFtZXNwYWNlIFdlYkNvbmZp
ZworCituYW1lc3BhY2UgV1RGIHsKIAogdm9pZCBDb25maWc6OnBlcm1hbmVudGx5RnJlZXplKCkK
IHsKQEAgLTQ2LDggKzUxLDEwIEBAIHZvaWQgQ29uZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSgpCiAK
ICAgICBSRUxFQVNFX0FTU0VSVChyb3VuZFVwVG9NdWx0aXBsZU9mKHBhZ2VTaXplKCksIENvbmZp
Z1NpemVUb1Byb3RlY3QpID09IENvbmZpZ1NpemVUb1Byb3RlY3QpOwogCi0gICAgaWYgKCFnX3d0
ZkNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuKQorICAgIGlmICghZ193dGZDb25maWcuaXNQZXJt
YW5lbnRseUZyb3plbikgewogICAgICAgICBnX3d0ZkNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVu
ID0gdHJ1ZTsKKyAgICAgICAgZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuID0g
dHJ1ZTsKKyAgICB9CiAKICAgICBpbnQgcmVzdWx0ID0gMDsKICNpZiBPUyhEQVJXSU4pCkBAIC01
Nyw5ICs2NCw5IEBAIHZvaWQgQ29uZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSgpCiAgICAgfTsKIAog
ICAgIC8vIFRoZXJlJ3Mgbm8gZ29pbmcgYmFjayBub3chCi0gICAgcmVzdWx0ID0gdm1fcHJvdGVj
dChtYWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfd3Rm
Q29uZmlnKSwgQ29uZmlnU2l6ZVRvUHJvdGVjdCwgRGlzYWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0Fm
dGVyVGhpcywgVk1fUFJPVF9SRUFEKTsKKyAgICByZXN1bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFz
a19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190PigmV2ViQ29uZmlnOjpnX2Nv
bmZpZyksIENvbmZpZ1NpemVUb1Byb3RlY3QsIERpc2FsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRl
clRoaXMsIFZNX1BST1RfUkVBRCk7CiAjZWxpZiBPUyhMSU5VWCkKLSAgICByZXN1bHQgPSBtcHJv
dGVjdCgmZ193dGZDb25maWcsIENvbmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7CisgICAg
cmVzdWx0ID0gbXByb3RlY3QoJldlYkNvbmZpZzo6Z19jb25maWcsIENvbmZpZ1NpemVUb1Byb3Rl
Y3QsIFBST1RfUkVBRCk7CiAjZWxpZiBPUyhXSU5ET1dTKQogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgZXF1aXZhbGVudCwgbWF5YmUgd2l0aCBWaXJ0dWFsUHJvdGVjdC4KICAgICAvLyBBbHNvIG5l
ZWQgdG8gZml4IFdlYktpdFRlc3RSdW5uZXIuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9XVEZDb25m
aWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9XVEZDb25maWcuaAkocmV2aXNpb24g
MjYyMzYxKQorKysgU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDIyIEBACiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi90aHJlYWRzL1NpZ25hbHMuaD4KIAorI2lmIGRlZmluZWQoVVNFX1NZU1RFTV9NQUxMT0Mp
ICYmIFVTRV9TWVNURU1fTUFMTE9DCituYW1lc3BhY2UgR2lnYWNhZ2UgeworY29uc3RleHByIHNp
emVfdCByZXNlcnZlZFNsb3RzRm9yR2lnYWNhZ2VDb25maWcgPSAwOworY29uc3RleHByIHNpemVf
dCByZXNlcnZlZEJ5dGVzRm9yR2lnYWNhZ2VDb25maWcgPSAwOworfQorI2Vsc2UKKyNpbmNsdWRl
IDxibWFsbG9jL0dpZ2FjYWdlQ29uZmlnLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvbmZp
ZyB7CisKK3VzaW5nIFNsb3QgPSB1aW50NjRfdDsKK2V4dGVybiAiQyIgU2xvdCBnX2NvbmZpZ1td
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb25maWcKKwogbmFtZXNwYWNlIFdURiB7CiAKIGNvbnN0
ZXhwciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJvdGVjdCA9IENlaWxpbmdPblBhZ2VTaXplOwpAQCAt
NDUsMjggKzYxLDMxIEBAIHN0cnVjdCBDb25maWcgewogICAgICAgICB+QXNzZXJ0Tm90RnJvemVu
U2NvcGUoKTsKICAgICB9OwogCi0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgewotICAgICAg
ICAgICAgLy8gQWxsIHRoZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3Qgc2hvdWxkIGJlIGNob3NlbiBz
dWNoIHRoYXQgdGhlaXIKLSAgICAgICAgICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAvIG51bGwg
LyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKLSAgICAgICAgICAgIC8vIGFz
IGEgZ2xvYmFsIHNpbmdsZXRvbi4KKyAgICAvLyBBbGwgdGhlIGZpZWxkcyBpbiB0aGlzIHN0cnVj
dCBzaG91bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgorICAgIC8vIGluaXRpYWwgdmFsdWUg
aXMgMCAvIG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKKyAgICAv
LyBhcyBhIGdsb2JhbCBzaW5nbGV0b24uCiAKLSAgICAgICAgICAgIGJvb2wgaXNQZXJtYW5lbnRs
eUZyb3plbjsKKyAgICBib29sIGlzUGVybWFuZW50bHlGcm96ZW47CiAKICNpZiBVU0UoUFRIUkVB
RFMpICYmIEhBVkUoTUFDSElORV9DT05URVhUKQotICAgICAgICAgICAgU2lnbmFsSGFuZGxlcnMg
c2lnbmFsSGFuZGxlcnM7CisgICAgU2lnbmFsSGFuZGxlcnMgc2lnbmFsSGFuZGxlcnM7CiAjZW5k
aWYKLSAgICAgICAgICAgIFB0clRhZ0xvb2t1cCogcHRyVGFnTG9va3VwSGVhZDsKKyAgICBQdHJU
YWdMb29rdXAqIHB0clRhZ0xvb2t1cEhlYWQ7CiAKLSAgICAgICAgICAgIHVpbnQ2NF90IHNwYWNl
Rm9yRXh0ZW5zaW9uc1sxXTsKLSAgICAgICAgfTsKLSAgICAgICAgY2hhciBlbnN1cmVTaXplW0Nv
bmZpZ1NpemVUb1Byb3RlY3RdOwotICAgIH07CisgICAgdWludDY0X3Qgc3BhY2VGb3JFeHRlbnNp
b25zWzFdOwogfTsKIAotZXh0ZXJuICJDIiBhbGlnbmFzKENvbmZpZ1NpemVUb1Byb3RlY3QpIFdU
Rl9FWFBPUlRfUFJJVkFURSBDb25maWcgZ193dGZDb25maWc7Citjb25zdGV4cHIgc2l6ZV90IHN0
YXJ0U2xvdE9mV1RGQ29uZmlnID0gR2lnYWNhZ2U6OnJlc2VydmVkU2xvdHNGb3JHaWdhY2FnZUNv
bmZpZzsKK2NvbnN0ZXhwciBzaXplX3Qgc3RhcnRPZmZzZXRPZldURkNvbmZpZyA9IHN0YXJ0U2xv
dE9mV1RGQ29uZmlnICogc2l6ZW9mKFdlYkNvbmZpZzo6U2xvdCk7CisKK2NvbnN0ZXhwciBzaXpl
X3Qgb2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24gPSBzdGFydE9mZnNldE9mV1RGQ29uZmlnICsg
b2Zmc2V0b2YoV1RGOjpDb25maWcsIHNwYWNlRm9yRXh0ZW5zaW9ucyk7CisKK2NvbnN0ZXhwciBz
aXplX3QgYWxpZ25tZW50T2ZXVEZDb25maWcgPSBzdGQ6OmFsaWdubWVudF9vZjxXVEY6OkNvbmZp
Zz46OnZhbHVlOworCitzdGF0aWNfYXNzZXJ0KEdpZ2FjYWdlOjpyZXNlcnZlZEJ5dGVzRm9yR2ln
YWNhZ2VDb25maWcgKyBzaXplb2YoV1RGOjpDb25maWcpIDw9IENvbmZpZ1NpemVUb1Byb3RlY3Qp
Oworc3RhdGljX2Fzc2VydChyb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdubWVudE9mV1RGQ29uZmln
PihzdGFydE9mZnNldE9mV1RGQ29uZmlnKSA9PSBzdGFydE9mZnNldE9mV1RGQ29uZmlnKTsKIAot
c3RhdGljX2Fzc2VydChzaXplb2YoQ29uZmlnKSA9PSBDb25maWdTaXplVG9Qcm90ZWN0KTsKKyNk
ZWZpbmUgZ193dGZDb25maWcgKCpiaXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmln
OjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkpCiAKIEFMV0FZU19JTkxJTkUg
Q29uZmlnOjpBc3NlcnROb3RGcm96ZW5TY29wZTo6QXNzZXJ0Tm90RnJvemVuU2NvcGUoKQogewpJ
bmRleDogU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFs
bG9jL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMzY1KQorKysgU291cmNlL2JtYWxsb2MvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjAtMDUtMzEgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIENoYW5nZSBHaWdhY2FnZTo6Q29uZmln
IHRvIHVzZSBzdG9yYWdlIGluIFdlYkNvbmZpZzo6Z19jb25maWcgaW5zdGVhZCBvZiBpdHMgb3du
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNTg1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzgxMjQ4Nz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBHaWdhY2FnZTo6Q29uZmlnIG5vdyByZXNl
cnZlcyBhbmQgZXhwZWN0IHNwYWNlIHRvIGJlIGF2YWlsYWJsZSBpbiBhbiBleHRlcm5hbAorICAg
ICAgICAgICBXZWJDb25maWc6OmdfY29uZmlnIGJ1ZmZlci4gIEdpZ2FjYWdlIGRvZXMgbm90IGFs
bG9jYXRlIHRoYXQgYnVmZmVyLgorCisgICAgICAgIDIuIE1vdmUgR2lnYWNhZ2U6OkNvbmZpZyB0
byBHaWdhY2FnZUNvbmZpZy5oLgorICAgICAgICAgICBUaGlzIGFsbG93cyBXVEZDb25maWcuaCB0
byBpbmNsdWRlIEdpZ2FjYWdlQ29uZmlnLmggaW5zdGVhZCBvZiBhbGwgb2YgR2lnYWNhZ2UuaC4K
KworICAgICAgICAzLiBNb3ZlZCBHaWdhY2FnZTo6S2luZCB0byBHaWdhY2FnZUtpbmQuaC4KKyAg
ICAgICAgICAgT3RoZXJ3aXNlLCBHaWdhY2FnZTo6S2luZCB3b3VsZCBuZWVkIHRvIG1vdmUgdG8g
R2lnYWNhZ2VDb25maWcuaCB3aGljaCBpcyBhCisgICAgICAgICAgIHdlaXJkIHBsYWNlIHRvIHB1
dCBpdC4KKworICAgICAgICA0LiBSZW1vdmVkIGZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCksIHVuZnJl
ZXplR2lnYWNhZ2VDb25maWcoKSwgYW5kCisgICAgICAgICAgIHBlcm1hbmVudGx5RnJlZXplR2ln
YWNhZ2VDb25maWcoKS4KKworICAgICAgICAgICBJdCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8g
dGVtcG9yYXJpbHkgZnJlZXplIGFuZCB1bmZyZWV6ZSB0aGUgR2lnYWNhZ2U6OkNvbmZpZworICAg
ICAgICAgICBiZWNhdXNlIGl0IG5vdyBzaGFyZSB0aGUgc2FtZSBtZW1vcnkgcGFnZSB3aXRoIGhp
Z2hlciBsZXZlbCBDb25maWdzLgorCisgICAgICAgICAgIHBlcm1hbmVudGx5RnJlZXplR2lnYWNh
Z2VDb25maWcoKSBpcyBubyBsb25nZXIgbmVlZGVkIGJlY2F1c2UgaXQgaXMgc3Vic3VtZWQKKyAg
ICAgICAgICAgYnkgV1RGOjpDb25maWc6OnBlcm1hbmVudGx5RnJlZXplKCksIHdoaWNoIHdpbGwg
ZnJlZXplIHRoZSBlbnRpcmUgV2ViQ29uZmlnOjpnX2NvbmZpZworICAgICAgICAgICBidWZmZXIu
CisKKyAgICAgICAgICAgT25lIGRpZmZlcmVuY2UgaW4gYmVoYXZpb3IgaGVyZSBpcyB0aGF0IEdp
Z2FjYWdlOjpDb25maWcgZGF0YSB1c2VkIHRvIGJlIHBlcm1hbmVudGx5CisgICAgICAgICAgIGZy
b3plbiBhcyBzb29uIGFzIGZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCkgaXMgY2Fs
bGVkLiAgTm93LCBpdCBpc24ndAorICAgICAgICAgICBwZXJtYW5lbnRseSBmcm96ZW4gdW50aWwg
dGhlIGVuZCBvZiB0aGUgY29uc3RydWN0aW9uIG9mIHRoZSBmaXJzdCBKU0M6OlZNIGluc3RhbmNl
CisgICAgICAgICAgIGluIHRoZSBwcm9jZXNzIChqdXN0IGxpa2UgdGhlIG90aGVyIENvbmZpZyBy
ZWNvcmRzKS4gIFRoaXMgc3RpbGwgZ3VhcmFudGVlcyB0aGF0CisgICAgICAgICAgIGl0IGlzIGZy
b3plbiBiZWZvcmUgYW55IEpTIHNjcmlwdCBjYW4gcnVuLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuY3BwOgorICAgICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdp
Z2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UpOgor
ICAgICAgICAoR2lnYWNhZ2U6OmZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKToKKyAg
ICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpmcmVlemVHaWdhY2FnZUNvbmZpZyk6IERlbGV0ZWQu
CisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6dW5mcmVlemVHaWdhY2FnZUNvbmZpZyk6IERl
bGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6cGVybWFuZW50bHlGcmVlemVHaWdh
Y2FnZUNvbmZpZyk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6VW5mcmVl
emVHaWdhY2FnZUNvbmZpZ1Njb3BlOjpVbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGUpOiBEZWxl
dGVkLgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OlVuZnJlZXplR2lnYWNhZ2VDb25maWdT
Y29wZTo6flVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSk6IERlbGV0ZWQuCisgICAgICAgICog
Ym1hbGxvYy9HaWdhY2FnZS5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2Fj
YWdlOjpDb25maWc6OmJhc2VQdHIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6
OkNvbmZpZzo6c2V0QmFzZVB0cik6IERlbGV0ZWQuCisgICAgICAgICogYm1hbGxvYy9HaWdhY2Fn
ZUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpDb25maWc6OmJhc2VQdHIgY29u
c3QpOgorICAgICAgICAoR2lnYWNhZ2U6OkNvbmZpZzo6c2V0QmFzZVB0cik6CisgICAgICAgICog
Ym1hbGxvYy9HaWdhY2FnZUtpbmQuaDogQWRkZWQuCisKIDIwMjAtMDUtMjMgIENhaW8gTGltYSAg
PHRpY2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIFtibWFsbG9jXSBGaXggT09NIGVycm9y
cyBvbiBNSVBTIGFmdGVyIHIyNjE2NjcKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAyNjIzNjEpCisrKyBTb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNjksNiArNjksOCBAQCBzZXQoYm1hbGxvY19QVUJMSUNfSEVBREVSUwogICAgIGJtYWxs
b2MvRnJlZUxpc3QuaAogICAgIGJtYWxsb2MvRnJlZUxpc3RJbmxpbmVzLmgKICAgICBibWFsbG9j
L0dpZ2FjYWdlLmgKKyAgICBibWFsbG9jL0dpZ2FjYWdlQ29uZmlnLmgKKyAgICBibWFsbG9jL0dp
Z2FjYWdlS2luZC5oCiAgICAgYm1hbGxvYy9IZWFwLmgKICAgICBibWFsbG9jL0hlYXBDb25zdGFu
dHMuaAogICAgIGJtYWxsb2MvSGVhcEtpbmQuaApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYyMzYxKQorKysg
U291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTEsNiArMTUxLDggQEAKIAkJRUIxN0QxMTEyM0JGQ0Q0MjAwMjA5M0E3IC8q
IEhlYXBDb25zdGFudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRUIxN0QxMTAyM0JGQzhDNDAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuY3BwICov
OyB9OwogCQlFQjE3RDExMjIzQkZDRDdBMDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIxN0QxMEUyM0JFNjkx
RDAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTQ4QkQzQjIzMjFFOEQ3MDBGMTM2RDAgLyogRmFpbHVy
ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU0OEJEM0EyMzIxRThDQzAwRjEzNkQwIC8qIEZhaWx1cmVBY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRUMzQTM5MzI0ODQ2QTgxMDAz
OTVCNTQgLyogR2lnYWNhZ2VDb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFQzNBMzkyMjQ4NDZBNkQwMDM5NUI1NCAvKiBHaWdhY2FnZUNvbmZp
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZF
QzNBMzk1MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzNBMzk0MjQ4NDcxRkUwMDM5NUI1NCAv
KiBHaWdhY2FnZUtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0zMDcsNiArMzA5LDggQEAKIAkJRUIxN0Qx
MEUyM0JFNjkxRDAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gSGVhcENvbnN0YW50cy5oOyBwYXRoID0gYm1hbGxvYy9IZWFwQ29uc3Rh
bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMTdEMTEwMjNCRkM4QzQwMDIw
OTNBNyAvKiBIZWFwQ29uc3RhbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEhlYXBDb25zdGFudHMuY3BwOyBwYXRoID0gYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0OEJEM0EyMzIxRThDQzAwRjEzNkQw
IC8qIEZhaWx1cmVBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmFp
bHVyZUFjdGlvbi5oOyBwYXRoID0gYm1hbGxvYy9GYWlsdXJlQWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFQzNBMzkyMjQ4NDZBNkQwMDM5NUI1NCAvKiBHaWdhY2FnZUNv
bmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHaWdhY2FnZUNvbmZpZy5o
OyBwYXRoID0gYm1hbGxvYy9HaWdhY2FnZUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRUMzQTM5NDI0ODQ3MUZFMDAzOTVCNTQgLyogR2lnYWNhZ2VLaW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdpZ2FjYWdlS2luZC5oOyBwYXRoID0gYm1hbGxv
Yy9HaWdhY2FnZUtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwpAQCAtNDg2LDYgKzQ5MCw4IEBACiAJCQkJRkU0OEJEM0EyMzIxRThDQzAw
RjEzNkQwIC8qIEZhaWx1cmVBY3Rpb24uaCAqLywKIAkJCQkwRjVCRjE0RTFGMjJERUFGMDAyOUQ5
MUQgLyogR2lnYWNhZ2UuY3BwICovLAogCQkJCTBGNUJGMTRDMUYyMkIwQzMwMDI5RDkxRCAvKiBH
aWdhY2FnZS5oICovLAorCQkJCUZFQzNBMzkyMjQ4NDZBNkQwMDM5NUI1NCAvKiBHaWdhY2FnZUNv
bmZpZy5oICovLAorCQkJCUZFQzNBMzk0MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQu
aCAqLywKIAkJCQkxNERBMzIwRTE4ODc1RDlGMDA3MjY5RTAgLyogSGVhcC5jcHAgKi8sCiAJCQkJ
MTREQTMyMEMxODg3NUIwOTAwNzI2OUUwIC8qIEhlYXAuaCAqLywKIAkJCQlFQjE3RDExMDIzQkZD
OEM0MDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5jcHAgKi8sCkBAIC02MDYsNiArNjEyLDcgQEAK
IAkJCQlGRTQ4QkQzQjIzMjFFOEQ3MDBGMTM2RDAgLyogRmFpbHVyZUFjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTRERDc4QzgxOEY0OEQ3NTAwOTUwNzAyIC8qIEZpeGVkVmVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjdFQjg0NDFGOTU0MUIwMDBGMUFCQ0IgLyogRnJlZUxpc3QuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFQzNBMzkzMjQ4NDZBODEwMDM5NUI1NCAvKiBHaWdhY2FnZUNv
bmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3RUI4MjkxRjk1NDFCMDAwRjFBQkNCIC8qIEZy
ZWVMaXN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QkYxNEQxRjIyQjBDMzAwMjlE
OTFEIC8qIEdpZ2FjYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDAwMjc0OTE4Rjg5QzEzMDAx
MTVDOTcgLyogSGVhcC5oIGluIEhlYWRlcnMgKi8sCkBAIC02NTQsNiArNjYxLDcgQEAKIAkJCQlF
Mzc4QTlFMDI0NkI2ODc1MDAyOUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMzI4RDg0RDIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjVCRjE0OTFGMjJBOEQ4MDAyOUQ5MUQgLyogUGVySGVhcEtpbmQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUZFQzNBMzk1MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0REQ3OENCMThGNDhENzUwMDk1MDcwMiAvKiBQZXJQcm9jZXNz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhDQzE4RjQ4RDc1MDA5NTA3MDIgLyogUGVyVGhy
ZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTVBQjNDNzIwNkUwRDM0MDA3NEZFNzYgLyogUGh5
c2ljYWxQYWdlTWFwLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvR2lnYWNhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2ln
YWNhZ2UuY3BwCShyZXZpc2lvbiAyNjIzNjEpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dp
Z2FjYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgQ2FsbGJh
Y2sgewogICAgIHZvaWQqIGFyZ3VtZW50IHsgbnVsbHB0ciB9OwogfTsKIAotfQorfSAvLyBuYW1l
c3BhY2UgR2lnYWNhZ2UKIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCkBAIC03OSw4ICs3OSw2IEBA
IG5hbWVzcGFjZSBHaWdhY2FnZSB7CiAvLyBJZiB0aGlzIHdlcmUgbGVzcyB0aGFuIDMyR0IsIHRo
b3NlIE9PQiBhY2Nlc3NlcyBjb3VsZCByZWFjaCBvdXRzaWRlIG9mIHRoZSBjYWdlLgogY29uc3Rl
eHByIHNpemVfdCBnaWdhY2FnZVJ1bndheSA9IDMybGx1ICogYm1hbGxvYzo6U2l6ZXM6OkdCOwog
Ci1hbGlnbmFzKGNvbmZpZ1NpemVUb1Byb3RlY3QpIENvbmZpZyBnX2dpZ2FjYWdlQ29uZmlnOwot
CiB1c2luZyBuYW1lc3BhY2UgYm1hbGxvYzsKIAogbmFtZXNwYWNlIHsKQEAgLTkyLDYyICs5MCw2
IEBAIGVudW0gewogfTsKICNlbmRpZgogCi1zdGF0aWMgdm9pZCBmcmVlemVHaWdhY2FnZUNvbmZp
ZygpCi17Ci0gICAgaW50IHJlc3VsdDsKLSNpZiBCT1MoREFSV0lOKQotICAgIHJlc3VsdCA9IHZt
X3Byb3RlY3QobWFjaF90YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+
KCZnX2dpZ2FjYWdlQ29uZmlnKSwgY29uZmlnU2l6ZVRvUHJvdGVjdCwgQWxsb3dQZXJtaXNzaW9u
Q2hhbmdlc0FmdGVyVGhpcywgVk1fUFJPVF9SRUFEKTsKLSNlbHNlCi0gICAgcmVzdWx0ID0gbXBy
b3RlY3QoJmdfZ2lnYWNhZ2VDb25maWcsIGNvbmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7
Ci0jZW5kaWYKLSAgICBSRUxFQVNFX0JBU1NFUlQoIXJlc3VsdCk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHVuZnJlZXplR2lnYWNhZ2VDb25maWcoKQotewotICAgIFJFTEVBU0VfQkFTU0VSVCghZ19naWdh
Y2FnZUNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuKTsKLSAgICBpbnQgcmVzdWx0OwotI2lmIEJP
UyhEQVJXSU4pCi0gICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tfc2VsZigpLCByZWlu
dGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfZ2lnYWNhZ2VDb25maWcpLCBjb25maWdTaXpl
VG9Qcm90ZWN0LCBBbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzLCBWTV9QUk9UX1JFQUQg
fCBWTV9QUk9UX1dSSVRFKTsKLSNlbHNlCi0gICAgcmVzdWx0ID0gbXByb3RlY3QoJmdfZ2lnYWNh
Z2VDb25maWcsIGNvbmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwot
I2VuZGlmCi0gICAgUkVMRUFTRV9CQVNTRVJUKCFyZXN1bHQpOwotfQotCi1zdGF0aWMgdm9pZCBw
ZXJtYW5lbnRseUZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCkKLXsKLSAgICBzdGF0aWMgTXV0ZXggY29u
ZmlnTG9jazsKLSAgICBMb2NrSG9sZGVyIGxvY2tpbmcoY29uZmlnTG9jayk7Ci0KLSAgICBpZiAo
IWdfZ2lnYWNhZ2VDb25maWcuaXNQZXJtYW5lbnRseUZyb3plbikgewotICAgICAgICB1bmZyZWV6
ZUdpZ2FjYWdlQ29uZmlnKCk7Ci0gICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuaXNQZXJtYW5lbnRs
eUZyb3plbiA9IHRydWU7Ci0gICAgfQotCi0gICAgLy8gVGhlcmUncyBubyBnb2luZyBiYWNrIG5v
dyEKLSAgICBpbnQgcmVzdWx0OwotI2lmIEJPUyhEQVJXSU4pCi0gICAgcmVzdWx0ID0gdm1fcHJv
dGVjdChtYWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdf
Z2lnYWNhZ2VDb25maWcpLCBjb25maWdTaXplVG9Qcm90ZWN0LCBEaXNhbGxvd1Blcm1pc3Npb25D
aGFuZ2VzQWZ0ZXJUaGlzLCBWTV9QUk9UX1JFQUQpOwotI2Vsc2UKLSAgICByZXN1bHQgPSBtcHJv
dGVjdCgmZ19naWdhY2FnZUNvbmZpZywgY29uZmlnU2l6ZVRvUHJvdGVjdCwgUFJPVF9SRUFEKTsK
LSNlbmRpZgotICAgIFJFTEVBU0VfQkFTU0VSVCghcmVzdWx0KTsKLX0KLQotY2xhc3MgVW5mcmVl
emVHaWdhY2FnZUNvbmZpZ1Njb3BlIHsKLXB1YmxpYzoKLSAgICBVbmZyZWV6ZUdpZ2FjYWdlQ29u
ZmlnU2NvcGUoKQotICAgIHsKLSAgICAgICAgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpOwotICAg
IH0KLSAgICAKLSAgICB+VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlKCkKLSAgICB7Ci0gICAg
ICAgIGZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7Ci0gICAgfQotfTsKLQogc2l6ZV90IHJ1bndheVNp
emUoS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewpAQCAtMjQwLDcgKzE4Miw2IEBA
IHZvaWQgZW5zdXJlR2lnYWNhZ2UoKQogICAgICAgICAgICAgZ19naWdhY2FnZUNvbmZpZy50b3Rh
bFNpemUgPSB0b3RhbFNpemU7CiAgICAgICAgICAgICB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2Vz
KGJhc2UsIHRvdGFsU2l6ZSk7CiAgICAgICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmlzRW5hYmxl
ZCA9IHRydWU7Ci0gICAgICAgICAgICBmcmVlemVHaWdhY2FnZUNvbmZpZygpOwogICAgICAgICB9
KTsKIH0KIApAQCAtMjY0LDcgKzIwNSw2IEBAIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdl
KCkKICAgICBmb3IgKENhbGxiYWNrJiBjYWxsYmFjayA6IGNhbGxiYWNrcy5jYWxsYmFja3MpCiAg
ICAgICAgIGNhbGxiYWNrLmZ1bmN0aW9uKGNhbGxiYWNrLmFyZ3VtZW50KTsKICAgICBjYWxsYmFj
a3MuY2FsbGJhY2tzLnNocmluaygwKTsKLSAgICBVbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGUg
dW5mcmVlemVTY29wZTsKICAgICBnX2dpZ2FjYWdlQ29uZmlnLmJhc2VQdHJzW1ByaW1pdGl2ZV0g
PSBudWxscHRyOwogfQogCkBAIC0zMTMsMTAgKzI1Myw4IEBAIHZvaWQgZm9yYmlkRGlzYWJsaW5n
UHJpbWl0aXZlR2lnYWNhZ2UoKQogICAgICAgICAmJiAoR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5f
RkFJTCB8fCAhZ19naWdhY2FnZUNvbmZpZy5zaG91bGRCZUVuYWJsZWQgfHwgdmVyaWZ5R2lnYWNh
Z2VJc0VuYWJsZWQoKSkpOwogCiAgICAgaWYgKCFnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1By
aW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4pIHsKLSAgICAgICAgdW5mcmVlemVHaWdhY2FnZUNv
bmZpZygpOwogICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2Fj
YWdlSXNGb3JiaWRkZW4gPSB0cnVlOwogICAgIH0KLSAgICBwZXJtYW5lbnRseUZyZWV6ZUdpZ2Fj
YWdlQ29uZmlnKCk7CiAgICAgUkVMRUFTRV9CQVNTRVJUKGlzRGlzYWJsaW5nUHJpbWl0aXZlR2ln
YWNhZ2VGb3JiaWRkZW4oKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2ln
YWNhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgJ
KHJldmlzaW9uIDI2MjM2MSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDExICsyNSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgIkFsZ29yaXRobS5oIgogI2luY2x1ZGUgIkJBc3NlcnQuaCIKICNpbmNsdWRlICJCRXhw
b3J0LmgiCiAjaW5jbHVkZSAiQklubGluZS5oIgogI2luY2x1ZGUgIkJQbGF0Zm9ybS5oIgorI2lu
Y2x1ZGUgIkdpZ2FjYWdlQ29uZmlnLmgiCiAjaW5jbHVkZSAiU2l6ZXMuaCIKICNpbmNsdWRlIDxj
c3RkZGVmPgogI2luY2x1ZGUgPGludHR5cGVzLmg+CkBAIC00NCwxMiArNDQsNiBAQAogCiBuYW1l
c3BhY2UgR2lnYWNhZ2UgewogCi1lbnVtIEtpbmQgewotICAgIFByaW1pdGl2ZSwKLSAgICBKU1Zh
bHVlLAotICAgIE51bWJlck9mS2luZHMKLX07Ci0KIEJJTkxJTkUgY29uc3QgY2hhciogbmFtZShL
aW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CkBAIC02Niw4ICs2MCw2IEBAIEJJTkxJ
TkUgY29uc3QgY2hhciogbmFtZShLaW5kIGtpbmQpCiAKICNpZiBHSUdBQ0FHRV9FTkFCTEVECiAK
LWNvbnN0ZXhwciBzaXplX3QgY29uZmlnU2l6ZVRvUHJvdGVjdCA9IDE2ICogYm1hbGxvYzo6U2l6
ZXM6OmtCOwotCiAjaWYgQk9TX0VGRkVDVElWRV9BRERSRVNTX1dJRFRIIDwgNDgKIGNvbnN0ZXhw
ciBzaXplX3QgcHJpbWl0aXZlR2lnYWNhZ2VTaXplID0gMiAqIGJtYWxsb2M6OlNpemVzOjpHQjsK
IGNvbnN0ZXhwciBzaXplX3QganNWYWx1ZUdpZ2FjYWdlU2l6ZSA9IDIgKiBibWFsbG9jOjpTaXpl
czo6R0I7CkBAIC05Nyw0NyArODksNiBAQCBjb25zdGV4cHIgc2l6ZV90IGdpZ2FjYWdlU2l6ZVRv
TWFzayhzaXplCiBjb25zdGV4cHIgc2l6ZV90IHByaW1pdGl2ZUdpZ2FjYWdlTWFzayA9IGdpZ2Fj
YWdlU2l6ZVRvTWFzayhwcmltaXRpdmVHaWdhY2FnZVNpemUpOwogY29uc3RleHByIHNpemVfdCBq
c1ZhbHVlR2lnYWNhZ2VNYXNrID0gZ2lnYWNhZ2VTaXplVG9NYXNrKGpzVmFsdWVHaWdhY2FnZVNp
emUpOwogCi1zdHJ1Y3QgQ29uZmlnIHsKLSAgICB2b2lkKiBiYXNlUHRyKEtpbmQga2luZCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQkFTU0VSVChraW5kIDwgTnVtYmVyT2ZLaW5kcyk7
Ci0gICAgICAgIHJldHVybiBiYXNlUHRyc1traW5kXTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldEJh
c2VQdHIoS2luZCBraW5kLCB2b2lkKiBwdHIpCi0gICAgewotICAgICAgICBSRUxFQVNFX0JBU1NF
UlQoa2luZCA8IE51bWJlck9mS2luZHMpOwotICAgICAgICBiYXNlUHRyc1traW5kXSA9IHB0cjsK
LSAgICB9Ci0KLSAgICB1bmlvbiB7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAvLyBB
bGwgdGhlIGZpZWxkcyBpbiB0aGlzIHN0cnVjdCBzaG91bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0
aGVpcgotICAgICAgICAgICAgLy8gaW5pdGlhbCB2YWx1ZSBpcyAwIC8gbnVsbCAvIGZhbHN5IGJl
Y2F1c2UgQ29uZmlnIGlzIGluc3RhbnRpYXRlZAotICAgICAgICAgICAgLy8gYXMgYSBnbG9iYWwg
c2luZ2xldG9uLgotCi0gICAgICAgICAgICBib29sIGlzRW5hYmxlZDsKLSAgICAgICAgICAgIGJv
b2wgaXNQZXJtYW5lbnRseUZyb3plbjsKLSAgICAgICAgICAgIGJvb2wgZGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbjsKLSAgICAgICAgICAgIGJvb2wgc2hvdWxkQmVFbmFibGVk
OwotCi0gICAgICAgICAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIGp1c3QgcHV0IHRoZSBzdGQ6Om9u
Y2VfZmxhZyBmb3IgdGhlc2UgZnVuY3Rpb25zCi0gICAgICAgICAgICAvLyBoZXJlLCBidXQgd2Ug
Y2FuJ3QgYmVjYXVzZSBzdGQ6Om9uY2VfZmxhZyBoYXMgYSBpbXBsaWNpdGx5LWRlbGV0ZWQKLSAg
ICAgICAgICAgIC8vIGRlZmF1bHQgY29uc3RydWN0b3IuIFNvLCB3ZSB1c2UgYSBib29sZWFuIGlu
c3RlYWQuCi0gICAgICAgICAgICBib29sIHNob3VsZEJlRW5hYmxlZEhhc0JlZW5DYWxsZWQ7Ci0g
ICAgICAgICAgICBib29sIGVuc3VyZUdpZ2FjYWdlSGFzQmVlbkNhbGxlZDsKLQotICAgICAgICAg
ICAgdm9pZCogc3RhcnQ7Ci0gICAgICAgICAgICBzaXplX3QgdG90YWxTaXplOwotICAgICAgICAg
ICAgdm9pZCogYmFzZVB0cnNbTnVtYmVyT2ZLaW5kc107Ci0gICAgICAgIH07Ci0gICAgICAgIGNo
YXIgZW5zdXJlU2l6ZVtjb25maWdTaXplVG9Qcm90ZWN0XTsKLSAgICB9OwotfTsKLXN0YXRpY19h
c3NlcnQoc2l6ZW9mKENvbmZpZykgPT0gY29uZmlnU2l6ZVRvUHJvdGVjdCwgIkdpZ2FjYWdlIENv
bmZpZyBtdXN0IGZpdCBpbiBjb25maWdTaXplVG9Qcm90ZWN0Iik7Ci0KLWV4dGVybiAiQyIgYWxp
Z25hcyhjb25maWdTaXplVG9Qcm90ZWN0KSBCRVhQT1JUIENvbmZpZyBnX2dpZ2FjYWdlQ29uZmln
OwotCiAvLyBUaGVzZSBjb25zdGFudHMgYXJlIG5lZWRlZCBieSB0aGUgTExJbnQuCiBjb25zdGV4
cHIgcHRyZGlmZl90IG9mZnNldE9mUHJpbWl0aXZlR2lnYWNhZ2VCYXNlUHRyID0gS2luZDo6UHJp
bWl0aXZlICogc2l6ZW9mKHZvaWQqKTsKIGNvbnN0ZXhwciBwdHJkaWZmX3Qgb2Zmc2V0T2ZKU1Zh
bHVlR2lnYWNhZ2VCYXNlUHRyID0gS2luZDo6SlNWYWx1ZSAqIHNpemVvZih2b2lkKik7CkluZGV4
OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlQ29uZmlnLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZUNvbmZpZy5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2VDb25maWcuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBbGdvcml0aG0uaCIKKyNpbmNsdWRlICJH
aWdhY2FnZUtpbmQuaCIKKyNpbmNsdWRlICJTdGRMaWJFeHRyYXMuaCIKKyNpbmNsdWRlIDxpbnR0
eXBlcy5oPgorCituYW1lc3BhY2UgV2ViQ29uZmlnIHsKKwordXNpbmcgU2xvdCA9IHVpbnQ2NF90
OworZXh0ZXJuICJDIiBTbG90IGdfY29uZmlnW107CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvbmZp
ZworCituYW1lc3BhY2UgR2lnYWNhZ2UgeworCitzdHJ1Y3QgQ29uZmlnIHsKKyAgICB2b2lkKiBi
YXNlUHRyKEtpbmQga2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQkFTU0VSVChr
aW5kIDwgTnVtYmVyT2ZLaW5kcyk7CisgICAgICAgIHJldHVybiBiYXNlUHRyc1traW5kXTsKKyAg
ICB9CisKKyAgICB2b2lkIHNldEJhc2VQdHIoS2luZCBraW5kLCB2b2lkKiBwdHIpCisgICAgewor
ICAgICAgICBSRUxFQVNFX0JBU1NFUlQoa2luZCA8IE51bWJlck9mS2luZHMpOworICAgICAgICBi
YXNlUHRyc1traW5kXSA9IHB0cjsKKyAgICB9CisKKyAgICAvLyBBbGwgdGhlIGZpZWxkcyBpbiB0
aGlzIHN0cnVjdCBzaG91bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgorICAgIC8vIGluaXRp
YWwgdmFsdWUgaXMgMCAvIG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0
ZWQKKyAgICAvLyBhcyBhIGdsb2JhbCBzaW5nbGV0b24uCisKKyAgICBib29sIGlzUGVybWFuZW50
bHlGcm96ZW47IC8vIFdpbGwgYmUgc2V0IGJ5IHRoZSBjbGllbnQgaWYgdGhlIENvbmZpZyBnZXRz
IGZyb3plbi4KKyAgICBib29sIGlzRW5hYmxlZDsKKyAgICBib29sIGRpc2FibGluZ1ByaW1pdGl2
ZUdpZ2FjYWdlSXNGb3JiaWRkZW47CisgICAgYm9vbCBzaG91bGRCZUVuYWJsZWQ7CisKKyAgICAv
LyBXZSB3b3VsZCBsaWtlIHRvIGp1c3QgcHV0IHRoZSBzdGQ6Om9uY2VfZmxhZyBmb3IgdGhlc2Ug
ZnVuY3Rpb25zCisgICAgLy8gaGVyZSwgYnV0IHdlIGNhbid0IGJlY2F1c2Ugc3RkOjpvbmNlX2Zs
YWcgaGFzIGEgaW1wbGljaXRseS1kZWxldGVkCisgICAgLy8gZGVmYXVsdCBjb25zdHJ1Y3Rvci4g
U28sIHdlIHVzZSBhIGJvb2xlYW4gaW5zdGVhZC4KKyAgICBib29sIHNob3VsZEJlRW5hYmxlZEhh
c0JlZW5DYWxsZWQ7CisgICAgYm9vbCBlbnN1cmVHaWdhY2FnZUhhc0JlZW5DYWxsZWQ7CisKKyAg
ICB2b2lkKiBzdGFydDsKKyAgICBzaXplX3QgdG90YWxTaXplOworICAgIHZvaWQqIGJhc2VQdHJz
W051bWJlck9mS2luZHNdOworfTsKKworY29uc3RleHByIHNpemVfdCBzdGFydFNsb3RPZkdpZ2Fj
YWdlQ29uZmlnID0gMDsKK2NvbnN0ZXhwciBzaXplX3Qgc3RhcnRPZmZzZXRPZkdpZ2FjYWdlQ29u
ZmlnID0gc3RhcnRTbG90T2ZHaWdhY2FnZUNvbmZpZyAqIHNpemVvZihXZWJDb25maWc6OlNsb3Qp
OworCitjb25zdGV4cHIgc2l6ZV90IHJlc2VydmVkU2xvdHNGb3JHaWdhY2FnZUNvbmZpZyA9IDY7
Citjb25zdGV4cHIgc2l6ZV90IHJlc2VydmVkQnl0ZXNGb3JHaWdhY2FnZUNvbmZpZyA9IHJlc2Vy
dmVkU2xvdHNGb3JHaWdhY2FnZUNvbmZpZyAqIHNpemVvZihXZWJDb25maWc6OlNsb3QpOworCitj
b25zdGV4cHIgc2l6ZV90IGFsaWdubWVudE9mR2lnYWNhZ2VDb25maWcgPSBzdGQ6OmFsaWdubWVu
dF9vZjxHaWdhY2FnZTo6Q29uZmlnPjo6dmFsdWU7CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdp
Z2FjYWdlOjpDb25maWcpIDw9IHJlc2VydmVkQnl0ZXNGb3JHaWdhY2FnZUNvbmZpZyk7CitzdGF0
aWNfYXNzZXJ0KGJtYWxsb2M6OnJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25tZW50T2ZHaWdhY2Fn
ZUNvbmZpZz4oc3RhcnRPZmZzZXRPZkdpZ2FjYWdlQ29uZmlnKSA9PSBzdGFydE9mZnNldE9mR2ln
YWNhZ2VDb25maWcpOworCisjZGVmaW5lIGdfZ2lnYWNhZ2VDb25maWcgKCpibWFsbG9jOjpiaXR3
aXNlX2Nhc3Q8R2lnYWNhZ2U6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW0dpZ2FjYWdl
OjpzdGFydFNsb3RPZkdpZ2FjYWdlQ29uZmlnXSkpCisKK30gLy8gbmFtZXNwYWNlIEdpZ2FjYWdl
CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlS2luZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2VLaW5kLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZUtpbmQuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBHaWdhY2FnZSB7CisKK2VudW0gS2luZCB7
CisgICAgUHJpbWl0aXZlLAorICAgIEpTVmFsdWUsCisgICAgTnVtYmVyT2ZLaW5kcworfTsKKwor
fSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400711</attachid>
            <date>2020-05-31 17:54:09 -0700</date>
            <delta_ts>2020-05-31 18:05:01 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-212585.patch</filename>
            <type>text/plain</type>
            <size>28784</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDIwLTA1LTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29u
ZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMjU4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvSlNDQ29uZmln
Lmg6CisgICAgICAgIChKU0M6OkNvbmZpZzo6aXNQZXJtYW5lbnRseUZyb3plbik6CisKIDIwMjAt
MDUtMzEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBK
U0M6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXVEY6OkNvbmZpZyBpbnN0ZWFkIG9mIGl0cyBv
d24uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTQzMiw3ICs0MzIsNyBAQCBtYWNybyBjYWdlZFByaW1pdGl2ZShwdHIsIGxlbmd0aCwgc2NyYXRj
CiAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHB0cgogICAgIGVuZAogICAgIGlmIEdJR0FDQUdFX0VO
QUJMRUQKLSAgICAgICAgY2FnZShfZ19naWdhY2FnZUNvbmZpZyArIEdpZ2FjYWdlOjpDb25maWc6
OmJhc2VQdHJzICsgR2lnYWNhZ2VQcmltaXRpdmVCYXNlUHRyT2Zmc2V0LCBjb25zdGV4cHIgR2ln
YWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgc291cmNlLCBzY3JhdGNoKQorICAgICAgICBj
YWdlKF9nX2NvbmZpZyArIChjb25zdGV4cHIgR2lnYWNhZ2U6OnN0YXJ0T2Zmc2V0T2ZHaWdhY2Fn
ZUNvbmZpZykgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2FjYWdlUHJpbWl0aXZl
QmFzZVB0ck9mZnNldCwgY29uc3RleHByIEdpZ2FjYWdlOjpwcmltaXRpdmVHaWdhY2FnZU1hc2ss
IHNvdXJjZSwgc2NyYXRjaCkKICAgICAgICAgaWYgQVJNNjRFCiAgICAgICAgICAgICBjb25zdCBu
dW1iZXJPZlBBQ0JpdHMgPSBjb25zdGV4cHIgTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUEFDQml0
cwogICAgICAgICAgICAgYmZpcSBzY3JhdGNoMiwgMCwgNjQgLSBudW1iZXJPZlBBQ0JpdHMsIHB0
cgpAQCAtNDQ2LDcgKzQ0Niw3IEBAIGVuZAogbWFjcm8gbG9hZENhZ2VkSlNWYWx1ZShzb3VyY2Us
IGRlc3QsIHNjcmF0Y2hPckxlbmd0aCkKICAgICBsb2FkcCBzb3VyY2UsIGRlc3QKICAgICBpZiBH
SUdBQ0FHRV9FTkFCTEVECi0gICAgICAgIGNhZ2UoX2dfZ2lnYWNhZ2VDb25maWcgKyBHaWdhY2Fn
ZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2FjYWdlSlNWYWx1ZUJhc2VQdHJPZmZzZXQsIGNvbnN0
ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2FjYWdlTWFzaywgZGVzdCwgc2NyYXRjaE9yTGVuZ3Ro
KQorICAgICAgICBjYWdlKF9nX2NvbmZpZyArIChjb25zdGV4cHIgR2lnYWNhZ2U6OnN0YXJ0T2Zm
c2V0T2ZHaWdhY2FnZUNvbmZpZykgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2Fj
YWdlSlNWYWx1ZUJhc2VQdHJPZmZzZXQsIGNvbnN0ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2Fj
YWdlTWFzaywgZGVzdCwgc2NyYXRjaE9yTGVuZ3RoKQogICAgIGVuZAogZW5kCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCShyZXZpc2lvbiAyNjIzNjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgZW5hYmxlUmVz
dHJpY3RlZE9wdGlvbnMoKTsKICAgICB9CiAKLSAgICBib29sIGlzUGVybWFuZW50bHlGcm96ZW4o
KSB7IHJldHVybiBXVEY6Omdfd3RmQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW47IH0KKyAgICBi
b29sIGlzUGVybWFuZW50bHlGcm96ZW4oKSB7IHJldHVybiBnX3d0ZkNvbmZpZy5pc1Blcm1hbmVu
dGx5RnJvemVuOyB9CiAKICAgICAvLyBBbGwgdGhlIGZpZWxkcyBpbiB0aGlzIHN0cnVjdCBzaG91
bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgogICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAv
IG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKQEAgLTgyLDEyICs4
MiwxMSBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICBXVEY6OlB0clRhZ0xvb2t1cCBwdHJUYWdMb29r
dXBSZWNvcmQ7CiB9OwogCi1jb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5z
aW9uID0gb2Zmc2V0b2YoV1RGOjpDb25maWcsIHNwYWNlRm9yRXh0ZW5zaW9ucyk7CiBjb25zdGV4
cHIgc2l6ZV90IGFsaWdubWVudE9mSlNDQ29uZmlnID0gc3RkOjphbGlnbm1lbnRfb2Y8SlNDOjpD
b25maWc+Ojp2YWx1ZTsKIAotc3RhdGljX2Fzc2VydChzaXplb2YoSlNDOjpDb25maWcpIDw9IChz
aXplb2YoV1RGOjpDb25maWcpIC0gb2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24pKTsKLXN0YXRp
Y19hc3NlcnQocm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkpTQ0NvbmZpZz4ob2Zmc2V0
T2ZXVEZDb25maWdFeHRlbnNpb24pID09IG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uKTsKK3N0
YXRpY19hc3NlcnQoV1RGOjpvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbiArIHNpemVvZihKU0M6
OkNvbmZpZykgPD0gV1RGOjpDb25maWdTaXplVG9Qcm90ZWN0KTsKK3N0YXRpY19hc3NlcnQocm91
bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkpTQ0NvbmZpZz4oV1RGOjpvZmZzZXRPZldURkNv
bmZpZ0V4dGVuc2lvbikgPT0gV1RGOjpvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbik7CiAKLSNk
ZWZpbmUgZ19qc2NDb25maWcgKCpiaXR3aXNlX2Nhc3Q8Q29uZmlnKj4oJldURjo6Z193dGZDb25m
aWcuc3BhY2VGb3JFeHRlbnNpb25zKSkKKyNkZWZpbmUgZ19qc2NDb25maWcgKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmZ193dGZDb25maWcuc3BhY2VGb3JFeHRlbnNpb25zKSkKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL1dURi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0wNS0zMSAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEdpZ2FjYWdlOjpD
b25maWcgdG8gdXNlIHN0b3JhZ2UgaW4gV2ViQ29uZmlnOjpnX2NvbmZpZyBpbnN0ZWFkIG9mIGl0
cyBvd24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTI1ODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzODEyNDg3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5vdyB0aGluayBvZiB0aGUgdmFy
aW91cyBDb25maWcgcmVjb3JkcyBhcyBiZWluZyBhbGxvY2F0ZWQgZnJvbSBwYXJ0cyBvZiBhCisg
ICAgICAgIFdlYkNvbmZpZzo6Z19jb25maWcgYnVmZmVyLiAgV1RGOjpDb25maWcgd2lsbCBtYW5h
Z2UgdGhlIG1lY2hhbmljcyBvZiBmcmVlemluZworICAgICAgICB0aGF0IGJ1ZmZlci4gIEFuZCB0
aGUgSlNDIFZNIGlzIHN0aWxsIHRoZSBkZXRlcm1pbmVyIG9mIGlmL3doZW4gdG8gZnJlZXplIHRo
ZQorICAgICAgICBidWZmZXIsIGFuZCBpdCB3aWxsIGRvIHRoaXMgYXQgdGhlIGVuZCBvZiB0aGUg
Y29uc3RydWN0aW9uIG9mIHRoZSB2ZXJ5IGZpcnN0CisgICAgICAgIFZNIGluc3RhbmNlIChhcyBi
ZWZvcmUpLgorCisgICAgICAgIEdpZ2FjYWdlOjpDb25maWcgcmVzZXJ2ZXMgc3BhY2UgaW4gV2Vi
Q29uZmlnOjpnX2NvbmZpZy4KKyAgICAgICAgV1RGOjpDb25maWcgd2lsbCBob25vciB0aGF0IHJl
c2VydmF0aW9uIGFuZCBwbGFjZSBpdHNlbGYgYWZ0ZXIgdGhhdC4KKyAgICAgICAgSlNDOjpDb25m
aWcgd2lsbCBjb250aW51ZSB0byBwbGFjZSBpdHNlbGYgYXQgV1RGOjpDb25maWc6OnNwYWNlRm9y
RXh0ZW5zaW9ucy4KKworICAgICAgICBUaGUgdXBzaWRlIG9mIHRoaXMgYXBwcm9hY2ggdGhpcyBp
cyB0aGF0IHdlIGNhbiBub3cgc2hhcmUgdGhlIHNhbWUgbWVtb3J5IHBhZ2UKKyAgICAgICAgZm9y
IGFsbCB0aGUgQ29uZmlncywgYW5kIGNhbiBmcmVlemUgdGhlbSBpbiBvbmUgZ28uCisKKyAgICAg
ICAgVGhlIGRvd25zaWRlIGlzIHRoYXQgZ19naWdhY2FnZUNvbmZpZywgZ193dGZDb25maWcsIGFu
ZCBnX2pzY0NvbmZpZyBub3cgaGF2ZSB0bworICAgICAgICBiZSBtYWNyb3MuICBUaGlzIHJlc3Vs
dHMgaW4gc29tZSB3ZWlyZG5lc3MgZS5nLiB0aGV5IGFyZSBubyBsb25nZXIgcXVhbGlmaWVkIGJ5
CisgICAgICAgIG5hbWVzcGFjZXM6IHJlZmVycmluZyB0byBXVEY6Omdfd3RmQ29uZmlnIGlzIG5v
dyBpbmNvcnJlY3QuCisKKyAgICAgICAgKiB3dGYvV1RGQ29uZmlnLmNwcDoKKyAgICAgICAgKFdU
Rjo6Q29uZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSk6CisgICAgICAgICogd3RmL1dURkNvbmZpZy5o
OgorICAgICAgICAoKTogRGVsZXRlZC4KKwogMjAyMC0wNS0zMSAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIEpTQzo6Q29uZmlnIHRvIHVzZSBzdG9yYWdl
IGluIFdURjo6Q29uZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1dURkNvbmZpZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmNw
cAkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsOSArMzUsMTQgQEAKICNpbmNsdWRlIDxzeXMvbW1hbi5oPgogI2Vu
ZGlmCiAKLW5hbWVzcGFjZSBXVEYgeworbmFtZXNwYWNlIFdlYkNvbmZpZyB7CisKK3VzaW5nIFNs
b3QgPSB1aW50NjRfdDsKK2FsaWduYXMoV1RGOjpDb25maWdTaXplVG9Qcm90ZWN0KSBXVEZfRVhQ
T1JUX1BSSVZBVEUgU2xvdCBnX2NvbmZpZ1tXVEY6OkNvbmZpZ1NpemVUb1Byb3RlY3QgLyBzaXpl
b2YoU2xvdCldOwogCi1hbGlnbmFzKENvbmZpZ1NpemVUb1Byb3RlY3QpIFdURl9FWFBPUlRfUFJJ
VkFURSBDb25maWcgZ193dGZDb25maWc7Cit9IC8vIG5hbWVzcGFjZSBXZWJDb25maWcKKworbmFt
ZXNwYWNlIFdURiB7CiAKIHZvaWQgQ29uZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSgpCiB7CkBAIC00
Niw4ICs1MSwxMCBAQCB2b2lkIENvbmZpZzo6cGVybWFuZW50bHlGcmVlemUoKQogCiAgICAgUkVM
RUFTRV9BU1NFUlQocm91bmRVcFRvTXVsdGlwbGVPZihwYWdlU2l6ZSgpLCBDb25maWdTaXplVG9Q
cm90ZWN0KSA9PSBDb25maWdTaXplVG9Qcm90ZWN0KTsKIAotICAgIGlmICghZ193dGZDb25maWcu
aXNQZXJtYW5lbnRseUZyb3plbikKKyAgICBpZiAoIWdfd3RmQ29uZmlnLmlzUGVybWFuZW50bHlG
cm96ZW4pIHsKICAgICAgICAgZ193dGZDb25maWcuaXNQZXJtYW5lbnRseUZyb3plbiA9IHRydWU7
CisgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuaXNQZXJtYW5lbnRseUZyb3plbiA9IHRydWU7Cisg
ICAgfQogCiAgICAgaW50IHJlc3VsdCA9IDA7CiAjaWYgT1MoREFSV0lOKQpAQCAtNTcsOSArNjQs
OSBAQCB2b2lkIENvbmZpZzo6cGVybWFuZW50bHlGcmVlemUoKQogICAgIH07CiAKICAgICAvLyBU
aGVyZSdzIG5vIGdvaW5nIGJhY2sgbm93IQotICAgIHJlc3VsdCA9IHZtX3Byb3RlY3QobWFjaF90
YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KCZnX3d0ZkNvbmZpZyks
IENvbmZpZ1NpemVUb1Byb3RlY3QsIERpc2FsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMs
IFZNX1BST1RfUkVBRCk7CisgICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tfc2VsZigp
LCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJldlYkNvbmZpZzo6Z19jb25maWcpLCBD
b25maWdTaXplVG9Qcm90ZWN0LCBEaXNhbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzLCBW
TV9QUk9UX1JFQUQpOwogI2VsaWYgT1MoTElOVVgpCi0gICAgcmVzdWx0ID0gbXByb3RlY3QoJmdf
d3RmQ29uZmlnLCBDb25maWdTaXplVG9Qcm90ZWN0LCBQUk9UX1JFQUQpOworICAgIHJlc3VsdCA9
IG1wcm90ZWN0KCZXZWJDb25maWc6OmdfY29uZmlnLCBDb25maWdTaXplVG9Qcm90ZWN0LCBQUk9U
X1JFQUQpOwogI2VsaWYgT1MoV0lORE9XUykKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVxdWl2
YWxlbnQsIG1heWJlIHdpdGggVmlydHVhbFByb3RlY3QuCiAgICAgLy8gQWxzbyBuZWVkIHRvIGZp
eCBXZWJLaXRUZXN0UnVubmVyLgpJbmRleDogU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmgJKHJldmlzaW9uIDI2MjM2MSkK
KysrIFNvdXJjZS9XVEYvd3RmL1dURkNvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
MywyMiBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGhy
ZWFkcy9TaWduYWxzLmg+CiAKKyNpZiBkZWZpbmVkKFVTRV9TWVNURU1fTUFMTE9DKSAmJiBVU0Vf
U1lTVEVNX01BTExPQworbmFtZXNwYWNlIEdpZ2FjYWdlIHsKK2NvbnN0ZXhwciBzaXplX3QgcmVz
ZXJ2ZWRTbG90c0ZvckdpZ2FjYWdlQ29uZmlnID0gMDsKK2NvbnN0ZXhwciBzaXplX3QgcmVzZXJ2
ZWRCeXRlc0ZvckdpZ2FjYWdlQ29uZmlnID0gMDsKK30KKyNlbHNlCisjaW5jbHVkZSA8Ym1hbGxv
Yy9HaWdhY2FnZUNvbmZpZy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb25maWcgeworCit1
c2luZyBTbG90ID0gdWludDY0X3Q7CitleHRlcm4gIkMiIFNsb3QgZ19jb25maWdbXTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29uZmlnCisKIG5hbWVzcGFjZSBXVEYgewogCiBjb25zdGV4cHIgc2l6
ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSBDZWlsaW5nT25QYWdlU2l6ZTsKQEAgLTQ1LDI4ICs2
MSwzMSBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgfkFzc2VydE5vdEZyb3plblNjb3BlKCk7
CiAgICAgfTsKIAotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIC8v
IEFsbCB0aGUgZmllbGRzIGluIHRoaXMgc3RydWN0IHNob3VsZCBiZSBjaG9zZW4gc3VjaCB0aGF0
IHRoZWlyCi0gICAgICAgICAgICAvLyBpbml0aWFsIHZhbHVlIGlzIDAgLyBudWxsIC8gZmFsc3kg
YmVjYXVzZSBDb25maWcgaXMgaW5zdGFudGlhdGVkCi0gICAgICAgICAgICAvLyBhcyBhIGdsb2Jh
bCBzaW5nbGV0b24uCisgICAgLy8gQWxsIHRoZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3Qgc2hvdWxk
IGJlIGNob3NlbiBzdWNoIHRoYXQgdGhlaXIKKyAgICAvLyBpbml0aWFsIHZhbHVlIGlzIDAgLyBu
dWxsIC8gZmFsc3kgYmVjYXVzZSBDb25maWcgaXMgaW5zdGFudGlhdGVkCisgICAgLy8gYXMgYSBn
bG9iYWwgc2luZ2xldG9uLgogCi0gICAgICAgICAgICBib29sIGlzUGVybWFuZW50bHlGcm96ZW47
CisgICAgYm9vbCBpc1Blcm1hbmVudGx5RnJvemVuOwogCiAjaWYgVVNFKFBUSFJFQURTKSAmJiBI
QVZFKE1BQ0hJTkVfQ09OVEVYVCkKLSAgICAgICAgICAgIFNpZ25hbEhhbmRsZXJzIHNpZ25hbEhh
bmRsZXJzOworICAgIFNpZ25hbEhhbmRsZXJzIHNpZ25hbEhhbmRsZXJzOwogI2VuZGlmCi0gICAg
ICAgICAgICBQdHJUYWdMb29rdXAqIHB0clRhZ0xvb2t1cEhlYWQ7CisgICAgUHRyVGFnTG9va3Vw
KiBwdHJUYWdMb29rdXBIZWFkOwogCi0gICAgICAgICAgICB1aW50NjRfdCBzcGFjZUZvckV4dGVu
c2lvbnNbMV07Ci0gICAgICAgIH07Ci0gICAgICAgIGNoYXIgZW5zdXJlU2l6ZVtDb25maWdTaXpl
VG9Qcm90ZWN0XTsKLSAgICB9OworICAgIHVpbnQ2NF90IHNwYWNlRm9yRXh0ZW5zaW9uc1sxXTsK
IH07CiAKLWV4dGVybiAiQyIgYWxpZ25hcyhDb25maWdTaXplVG9Qcm90ZWN0KSBXVEZfRVhQT1JU
X1BSSVZBVEUgQ29uZmlnIGdfd3RmQ29uZmlnOworY29uc3RleHByIHNpemVfdCBzdGFydFNsb3RP
ZldURkNvbmZpZyA9IEdpZ2FjYWdlOjpyZXNlcnZlZFNsb3RzRm9yR2lnYWNhZ2VDb25maWc7Citj
b25zdGV4cHIgc2l6ZV90IHN0YXJ0T2Zmc2V0T2ZXVEZDb25maWcgPSBzdGFydFNsb3RPZldURkNv
bmZpZyAqIHNpemVvZihXZWJDb25maWc6OlNsb3QpOworCitjb25zdGV4cHIgc2l6ZV90IG9mZnNl
dE9mV1RGQ29uZmlnRXh0ZW5zaW9uID0gc3RhcnRPZmZzZXRPZldURkNvbmZpZyArIG9mZnNldG9m
KFdURjo6Q29uZmlnLCBzcGFjZUZvckV4dGVuc2lvbnMpOworCitjb25zdGV4cHIgc2l6ZV90IGFs
aWdubWVudE9mV1RGQ29uZmlnID0gc3RkOjphbGlnbm1lbnRfb2Y8V1RGOjpDb25maWc+Ojp2YWx1
ZTsKKworc3RhdGljX2Fzc2VydChHaWdhY2FnZTo6cmVzZXJ2ZWRCeXRlc0ZvckdpZ2FjYWdlQ29u
ZmlnICsgc2l6ZW9mKFdURjo6Q29uZmlnKSA8PSBDb25maWdTaXplVG9Qcm90ZWN0KTsKK3N0YXRp
Y19hc3NlcnQocm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZldURkNvbmZpZz4oc3RhcnRP
ZmZzZXRPZldURkNvbmZpZykgPT0gc3RhcnRPZmZzZXRPZldURkNvbmZpZyk7CiAKLXN0YXRpY19h
c3NlcnQoc2l6ZW9mKENvbmZpZykgPT0gQ29uZmlnU2l6ZVRvUHJvdGVjdCk7CisjZGVmaW5lIGdf
d3RmQ29uZmlnICgqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25m
aWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKQogCiBBTFdBWVNfSU5MSU5FIENvbmZpZzo6
QXNzZXJ0Tm90RnJvemVuU2NvcGU6OkFzc2VydE5vdEZyb3plblNjb3BlKCkKIHsKSW5kZXg6IFNv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI2MjM2NSkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA1LTMxICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0byB1c2Ug
c3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29uZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjU4NQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgMS4gR2lnYWNhZ2U6OkNvbmZpZyBub3cgcmVzZXJ2ZXMgYW5k
IGV4cGVjdCBzcGFjZSB0byBiZSBhdmFpbGFibGUgaW4gYW4gZXh0ZXJuYWwKKyAgICAgICAgICAg
V2ViQ29uZmlnOjpnX2NvbmZpZyBidWZmZXIuICBHaWdhY2FnZSBkb2VzIG5vdCBhbGxvY2F0ZSB0
aGF0IGJ1ZmZlci4KKworICAgICAgICAyLiBNb3ZlZCBHaWdhY2FnZTo6Q29uZmlnIHRvIEdpZ2Fj
YWdlQ29uZmlnLmguCisgICAgICAgICAgIFRoaXMgYWxsb3dzIFdURkNvbmZpZy5oIHRvIGluY2x1
ZGUgR2lnYWNhZ2VDb25maWcuaCBpbnN0ZWFkIG9mIGFsbCBvZiBHaWdhY2FnZS5oLgorCisgICAg
ICAgIDMuIE1vdmVkIEdpZ2FjYWdlOjpLaW5kIHRvIEdpZ2FjYWdlS2luZC5oLgorICAgICAgICAg
ICBPdGhlcndpc2UsIEdpZ2FjYWdlOjpLaW5kIHdvdWxkIG5lZWQgdG8gbW92ZSB0byBHaWdhY2Fn
ZUNvbmZpZy5oIHdoaWNoIGlzIGEKKyAgICAgICAgICAgd2VpcmQgcGxhY2UgdG8gcHV0IGl0Lgor
CisgICAgICAgIDQuIFJlbW92ZWQgZnJlZXplR2lnYWNhZ2VDb25maWcoKSwgdW5mcmVlemVHaWdh
Y2FnZUNvbmZpZygpLCBhbmQKKyAgICAgICAgICAgcGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNv
bmZpZygpLgorCisgICAgICAgICAgIEl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSB0byB0ZW1wb3Jh
cmlseSBmcmVlemUgYW5kIHVuZnJlZXplIHRoZSBHaWdhY2FnZTo6Q29uZmlnCisgICAgICAgICAg
IGJlY2F1c2UgaXQgbm93IHNoYXJlIHRoZSBzYW1lIG1lbW9yeSBwYWdlIHdpdGggaGlnaGVyIGxl
dmVsIENvbmZpZ3MuCisKKyAgICAgICAgICAgcGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZp
ZygpIGlzIG5vIGxvbmdlciBuZWVkZWQgYmVjYXVzZSBpdCBpcyBzdWJzdW1lZAorICAgICAgICAg
ICBieSBXVEY6OkNvbmZpZzo6cGVybWFuZW50bHlGcmVlemUoKSwgd2hpY2ggd2lsbCBmcmVlemUg
dGhlIGVudGlyZSBXZWJDb25maWc6OmdfY29uZmlnCisgICAgICAgICAgIGJ1ZmZlci4KKworICAg
ICAgICAgICBPbmUgZGlmZmVyZW5jZSBpbiBiZWhhdmlvciBoZXJlIGlzIHRoYXQgR2lnYWNhZ2U6
OkNvbmZpZyBkYXRhIHVzZWQgdG8gYmUgcGVybWFuZW50bHkKKyAgICAgICAgICAgZnJvemVuIGFz
IHNvb24gYXMgZm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKSBpcyBjYWxsZWQuICBO
b3csIGl0IGlzbid0CisgICAgICAgICAgIHBlcm1hbmVudGx5IGZyb3plbiB1bnRpbCB0aGUgZW5k
IG9mIHRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlIGZpcnN0IEpTQzo6Vk0gaW5zdGFuY2UKKyAgICAg
ICAgICAgaW4gdGhlIHByb2Nlc3MgKGp1c3QgbGlrZSB0aGUgb3RoZXIgQ29uZmlnIHJlY29yZHMp
LiAgVGhpcyBzdGlsbCBndWFyYW50ZWVzIHRoYXQKKyAgICAgICAgICAgaXQgaXMgZnJvemVuIGJl
Zm9yZSBhbnkgSlMgc2NyaXB0IGNhbiBydW4uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
Ym1hbGxvYy9HaWdhY2FnZS5jcHA6CisgICAgICAgIChHaWdhY2FnZTo6ZW5zdXJlR2lnYWNhZ2Up
OgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSk6CisgICAgICAg
IChHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UpOgorICAgICAgICAo
R2lnYWNhZ2U6OmJtYWxsb2M6OmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKTogRGVsZXRlZC4KKyAgICAg
ICAgKEdpZ2FjYWdlOjpibWFsbG9jOjp1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKTogRGVsZXRlZC4K
KyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpwZXJtYW5lbnRseUZyZWV6ZUdpZ2FjYWdlQ29u
ZmlnKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpVbmZyZWV6ZUdpZ2Fj
YWdlQ29uZmlnU2NvcGU6OlVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSk6IERlbGV0ZWQuCisg
ICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlOjp+
VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9j
L0dpZ2FjYWdlLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OkNv
bmZpZzo6YmFzZVB0ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Q29uZmln
OjpzZXRCYXNlUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdlQ29uZmln
Lmg6IEFkZGVkLgorICAgICAgICAoR2lnYWNhZ2U6OkNvbmZpZzo6YmFzZVB0ciBjb25zdCk6Cisg
ICAgICAgIChHaWdhY2FnZTo6Q29uZmlnOjpzZXRCYXNlUHRyKToKKyAgICAgICAgKiBibWFsbG9j
L0dpZ2FjYWdlS2luZC5oOiBBZGRlZC4KKwogMjAyMC0wNS0yMyAgQ2FpbyBMaW1hICA8dGljYWlv
bGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW2JtYWxsb2NdIEZpeCBPT00gZXJyb3JzIG9uIE1J
UFMgYWZ0ZXIgcjI2MTY2NwpJbmRleDogU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI2MjM2
MSkKKysrIFNvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02
OSw2ICs2OSw4IEBAIHNldChibWFsbG9jX1BVQkxJQ19IRUFERVJTCiAgICAgYm1hbGxvYy9GcmVl
TGlzdC5oCiAgICAgYm1hbGxvYy9GcmVlTGlzdElubGluZXMuaAogICAgIGJtYWxsb2MvR2lnYWNh
Z2UuaAorICAgIGJtYWxsb2MvR2lnYWNhZ2VDb25maWcuaAorICAgIGJtYWxsb2MvR2lnYWNhZ2VL
aW5kLmgKICAgICBibWFsbG9jL0hlYXAuaAogICAgIGJtYWxsb2MvSGVhcENvbnN0YW50cy5oCiAg
ICAgYm1hbGxvYy9IZWFwS2luZC5oCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjIzNjEpCisrKyBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTE1MSw2ICsxNTEsOCBAQAogCQlFQjE3RDExMTIzQkZDRDQyMDAyMDkzQTcgLyogSGVhcENv
bnN0YW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFQjE3RDExMDIzQkZDOEM0MDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5jcHAgKi87IH07CiAJ
CUVCMTdEMTEyMjNCRkNEN0EwMDIwOTNBNyAvKiBIZWFwQ29uc3RhbnRzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjE3RDEwRTIzQkU2OTFEMDAyMDkz
QTcgLyogSGVhcENvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUZFNDhCRDNCMjMyMUU4RDcwMEYxMzZEMCAvKiBGYWlsdXJlQWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ4QkQz
QTIzMjFFOENDMDBGMTM2RDAgLyogRmFpbHVyZUFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFQzNBMzkzMjQ4NDZBODEwMDM5NUI1NCAv
KiBHaWdhY2FnZUNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVDM0EzOTIyNDg0NkE2RDAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29uZmlnLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVDM0EzOTUy
NDg0NzFGRTAwMzk1QjU0IC8qIEdpZ2FjYWdlS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDM0EzOTQyNDg0NzFGRTAwMzk1QjU0IC8qIEdpZ2Fj
YWdlS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVy
SXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTMwNyw2ICszMDksOCBAQAogCQlFQjE3RDEwRTIzQkU2
OTFEMDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBIZWFwQ29uc3RhbnRzLmg7IHBhdGggPSBibWFsbG9jL0hlYXBDb25zdGFudHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUIxN0QxMTAyM0JGQzhDNDAwMjA5M0E3IC8q
IEhlYXBDb25zdGFudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
SGVhcENvbnN0YW50cy5jcHA7IHBhdGggPSBibWFsbG9jL0hlYXBDb25zdGFudHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTQ4QkQzQTIzMjFFOENDMDBGMTM2RDAgLyogRmFp
bHVyZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGYWlsdXJlQWN0
aW9uLmg7IHBhdGggPSBibWFsbG9jL0ZhaWx1cmVBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkVDM0EzOTIyNDg0NkE2RDAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29uZmlnLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdpZ2FjYWdlQ29uZmlnLmg7IHBhdGgg
PSBibWFsbG9jL0dpZ2FjYWdlQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFQzNBMzk0MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gR2lnYWNhZ2VLaW5kLmg7IHBhdGggPSBibWFsbG9jL0dpZ2Fj
YWdlS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZl
cmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0
aW9uICovCkBAIC00ODYsNiArNDkwLDggQEAKIAkJCQlGRTQ4QkQzQTIzMjFFOENDMDBGMTM2RDAg
LyogRmFpbHVyZUFjdGlvbi5oICovLAogCQkJCTBGNUJGMTRFMUYyMkRFQUYwMDI5RDkxRCAvKiBH
aWdhY2FnZS5jcHAgKi8sCiAJCQkJMEY1QkYxNEMxRjIyQjBDMzAwMjlEOTFEIC8qIEdpZ2FjYWdl
LmggKi8sCisJCQkJRkVDM0EzOTIyNDg0NkE2RDAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29uZmlnLmgg
Ki8sCisJCQkJRkVDM0EzOTQyNDg0NzFGRTAwMzk1QjU0IC8qIEdpZ2FjYWdlS2luZC5oICovLAog
CQkJCTE0REEzMjBFMTg4NzVEOUYwMDcyNjlFMCAvKiBIZWFwLmNwcCAqLywKIAkJCQkxNERBMzIw
QzE4ODc1QjA5MDA3MjY5RTAgLyogSGVhcC5oICovLAogCQkJCUVCMTdEMTEwMjNCRkM4QzQwMDIw
OTNBNyAvKiBIZWFwQ29uc3RhbnRzLmNwcCAqLywKQEAgLTYwNiw2ICs2MTIsNyBAQAogCQkJCUZF
NDhCRDNCMjMyMUU4RDcwMEYxMzZEMCAvKiBGYWlsdXJlQWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNERENzhDODE4RjQ4RDc1MDA5NTA3MDIgLyogRml4ZWRWZWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGN0VCODQ0MUY5NTQxQjAwMEYxQUJDQiAvKiBGcmVlTGlzdC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkVDM0EzOTMyNDg0NkE4MTAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29uZmlnLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjdFQjgyOTFGOTU0MUIwMDBGMUFCQ0IgLyogRnJlZUxpc3RJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVCRjE0RDFGMjJCMEMzMDAyOUQ5MUQgLyog
R2lnYWNhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MDAyNzQ5MThGODlDMTMwMDExNUM5NyAv
KiBIZWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTY1NCw2ICs2NjEsNyBAQAogCQkJCUUzNzhBOUUw
MjQ2QjY4NzUwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUzMjhEODREMjNDRUIzODkwMDU0NUIxOCAvKiBQYWNrZWQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNUJGMTQ5MUYyMkE4RDgwMDI5RDkxRCAvKiBQZXJIZWFwS2luZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkVDM0EzOTUyNDg0NzFGRTAwMzk1QjU0IC8qIEdpZ2FjYWdlS2luZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTRERDc4Q0IxOEY0OEQ3NTAwOTUwNzAyIC8qIFBlclByb2Nlc3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0REQ3OENDMThGNDhENzUwMDk1MDcwMiAvKiBQZXJUaHJlYWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTc5NUFCM0M3MjA2RTBEMzQwMDc0RkU3NiAvKiBQaHlzaWNhbFBh
Z2VNYXAuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdh
Y2FnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5j
cHAJKHJldmlzaW9uIDI2MjM2MSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBDYWxsYmFjayB7CiAg
ICAgdm9pZCogYXJndW1lbnQgeyBudWxscHRyIH07CiB9OwogCi19Cit9IC8vIG5hbWVzcGFjZSBH
aWdhY2FnZQogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKQEAgLTc5LDc1ICs3OSwxMCBAQCBuYW1l
c3BhY2UgR2lnYWNhZ2UgewogLy8gSWYgdGhpcyB3ZXJlIGxlc3MgdGhhbiAzMkdCLCB0aG9zZSBP
T0IgYWNjZXNzZXMgY291bGQgcmVhY2ggb3V0c2lkZSBvZiB0aGUgY2FnZS4KIGNvbnN0ZXhwciBz
aXplX3QgZ2lnYWNhZ2VSdW53YXkgPSAzMmxsdSAqIGJtYWxsb2M6OlNpemVzOjpHQjsKIAotYWxp
Z25hcyhjb25maWdTaXplVG9Qcm90ZWN0KSBDb25maWcgZ19naWdhY2FnZUNvbmZpZzsKLQogdXNp
bmcgbmFtZXNwYWNlIGJtYWxsb2M7CiAKIG5hbWVzcGFjZSB7CiAKLSNpZiBCT1MoREFSV0lOKQot
ZW51bSB7Ci0gICAgQWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcyA9IGZhbHNlLAotICAg
IERpc2FsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMgPSB0cnVlCi19OwotI2VuZGlmCi0K
LXN0YXRpYyB2b2lkIGZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCkKLXsKLSAgICBpbnQgcmVzdWx0Owot
I2lmIEJPUyhEQVJXSU4pCi0gICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tfc2VsZigp
LCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfZ2lnYWNhZ2VDb25maWcpLCBjb25m
aWdTaXplVG9Qcm90ZWN0LCBBbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzLCBWTV9QUk9U
X1JFQUQpOwotI2Vsc2UKLSAgICByZXN1bHQgPSBtcHJvdGVjdCgmZ19naWdhY2FnZUNvbmZpZywg
Y29uZmlnU2l6ZVRvUHJvdGVjdCwgUFJPVF9SRUFEKTsKLSNlbmRpZgotICAgIFJFTEVBU0VfQkFT
U0VSVCghcmVzdWx0KTsKLX0KLQotc3RhdGljIHZvaWQgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygp
Ci17Ci0gICAgUkVMRUFTRV9CQVNTRVJUKCFnX2dpZ2FjYWdlQ29uZmlnLmlzUGVybWFuZW50bHlG
cm96ZW4pOwotICAgIGludCByZXN1bHQ7Ci0jaWYgQk9TKERBUldJTikKLSAgICByZXN1bHQgPSB2
bV9wcm90ZWN0KG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190
PigmZ19naWdhY2FnZUNvbmZpZyksIGNvbmZpZ1NpemVUb1Byb3RlY3QsIEFsbG93UGVybWlzc2lv
bkNoYW5nZXNBZnRlclRoaXMsIFZNX1BST1RfUkVBRCB8IFZNX1BST1RfV1JJVEUpOwotI2Vsc2UK
LSAgICByZXN1bHQgPSBtcHJvdGVjdCgmZ19naWdhY2FnZUNvbmZpZywgY29uZmlnU2l6ZVRvUHJv
dGVjdCwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7Ci0jZW5kaWYKLSAgICBSRUxFQVNFX0JBU1NF
UlQoIXJlc3VsdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHBlcm1hbmVudGx5RnJlZXplR2lnYWNhZ2VD
b25maWcoKQotewotICAgIHN0YXRpYyBNdXRleCBjb25maWdMb2NrOwotICAgIExvY2tIb2xkZXIg
bG9ja2luZyhjb25maWdMb2NrKTsKLQotICAgIGlmICghZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1h
bmVudGx5RnJvemVuKSB7Ci0gICAgICAgIHVuZnJlZXplR2lnYWNhZ2VDb25maWcoKTsKLSAgICAg
ICAgZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuID0gdHJ1ZTsKLSAgICB9Ci0K
LSAgICAvLyBUaGVyZSdzIG5vIGdvaW5nIGJhY2sgbm93IQotICAgIGludCByZXN1bHQ7Ci0jaWYg
Qk9TKERBUldJTikKLSAgICByZXN1bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFza19zZWxmKCksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190PigmZ19naWdhY2FnZUNvbmZpZyksIGNvbmZpZ1Np
emVUb1Byb3RlY3QsIERpc2FsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMsIFZNX1BST1Rf
UkVBRCk7Ci0jZWxzZQotICAgIHJlc3VsdCA9IG1wcm90ZWN0KCZnX2dpZ2FjYWdlQ29uZmlnLCBj
b25maWdTaXplVG9Qcm90ZWN0LCBQUk9UX1JFQUQpOwotI2VuZGlmCi0gICAgUkVMRUFTRV9CQVNT
RVJUKCFyZXN1bHQpOwotfQotCi1jbGFzcyBVbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGUgewot
cHVibGljOgotICAgIFVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSgpCi0gICAgewotICAgICAg
ICB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7Ci0gICAgfQotICAgIAotICAgIH5VbmZyZWV6ZUdp
Z2FjYWdlQ29uZmlnU2NvcGUoKQotICAgIHsKLSAgICAgICAgZnJlZXplR2lnYWNhZ2VDb25maWco
KTsKLSAgICB9Ci19OwotCiBzaXplX3QgcnVud2F5U2l6ZShLaW5kIGtpbmQpCiB7CiAgICAgc3dp
dGNoIChraW5kKSB7CkBAIC0yNDAsNyArMTc1LDYgQEAgdm9pZCBlbnN1cmVHaWdhY2FnZSgpCiAg
ICAgICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLnRvdGFsU2l6ZSA9IHRvdGFsU2l6ZTsKICAgICAg
ICAgICAgIHZtRGVhbGxvY2F0ZVBoeXNpY2FsUGFnZXMoYmFzZSwgdG90YWxTaXplKTsKICAgICAg
ICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuaXNFbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGZy
ZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7CiAgICAgICAgIH0pOwogfQogCkBAIC0yNjQsNyArMTk4LDYg
QEAgdm9pZCBkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UoKQogICAgIGZvciAoQ2FsbGJhY2smIGNh
bGxiYWNrIDogY2FsbGJhY2tzLmNhbGxiYWNrcykKICAgICAgICAgY2FsbGJhY2suZnVuY3Rpb24o
Y2FsbGJhY2suYXJndW1lbnQpOwogICAgIGNhbGxiYWNrcy5jYWxsYmFja3Muc2hyaW5rKDApOwot
ICAgIFVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSB1bmZyZWV6ZVNjb3BlOwogICAgIGdfZ2ln
YWNhZ2VDb25maWcuYmFzZVB0cnNbUHJpbWl0aXZlXSA9IG51bGxwdHI7CiB9CiAKQEAgLTMxMywx
MCArMjQ2LDggQEAgdm9pZCBmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpCiAgICAg
ICAgICYmIChHSUdBQ0FHRV9BTExPQ0FUSU9OX0NBTl9GQUlMIHx8ICFnX2dpZ2FjYWdlQ29uZmln
LnNob3VsZEJlRW5hYmxlZCB8fCB2ZXJpZnlHaWdhY2FnZUlzRW5hYmxlZCgpKSk7CiAKICAgICBp
ZiAoIWdfZ2lnYWNhZ2VDb25maWcuZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRl
bikgewotICAgICAgICB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7CiAgICAgICAgIGdfZ2lnYWNh
Z2VDb25maWcuZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbiA9IHRydWU7CiAg
ICAgfQotICAgIHBlcm1hbmVudGx5RnJlZXplR2lnYWNhZ2VDb25maWcoKTsKICAgICBSRUxFQVNF
X0JBU1NFUlQoaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbigpKTsKIH0KIApJ
bmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAkocmV2aXNpb24gMjYyMzYxKQorKysgU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTEg
KzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWxnb3JpdGhtLmgiCiAjaW5j
bHVkZSAiQkFzc2VydC5oIgogI2luY2x1ZGUgIkJFeHBvcnQuaCIKICNpbmNsdWRlICJCSW5saW5l
LmgiCiAjaW5jbHVkZSAiQlBsYXRmb3JtLmgiCisjaW5jbHVkZSAiR2lnYWNhZ2VDb25maWcuaCIK
ICNpbmNsdWRlICJTaXplcy5oIgogI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVkZSA8aW50dHlw
ZXMuaD4KQEAgLTQ0LDEyICs0NCw2IEBACiAKIG5hbWVzcGFjZSBHaWdhY2FnZSB7CiAKLWVudW0g
S2luZCB7Ci0gICAgUHJpbWl0aXZlLAotICAgIEpTVmFsdWUsCi0gICAgTnVtYmVyT2ZLaW5kcwot
fTsKLQogQklOTElORSBjb25zdCBjaGFyKiBuYW1lKEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2gg
KGtpbmQpIHsKQEAgLTY2LDggKzYwLDYgQEAgQklOTElORSBjb25zdCBjaGFyKiBuYW1lKEtpbmQg
a2luZCkKIAogI2lmIEdJR0FDQUdFX0VOQUJMRUQKIAotY29uc3RleHByIHNpemVfdCBjb25maWdT
aXplVG9Qcm90ZWN0ID0gMTYgKiBibWFsbG9jOjpTaXplczo6a0I7Ci0KICNpZiBCT1NfRUZGRUNU
SVZFX0FERFJFU1NfV0lEVEggPCA0OAogY29uc3RleHByIHNpemVfdCBwcmltaXRpdmVHaWdhY2Fn
ZVNpemUgPSAyICogYm1hbGxvYzo6U2l6ZXM6OkdCOwogY29uc3RleHByIHNpemVfdCBqc1ZhbHVl
R2lnYWNhZ2VTaXplID0gMiAqIGJtYWxsb2M6OlNpemVzOjpHQjsKQEAgLTk3LDQ3ICs4OSw2IEBA
IGNvbnN0ZXhwciBzaXplX3QgZ2lnYWNhZ2VTaXplVG9NYXNrKHNpemUKIGNvbnN0ZXhwciBzaXpl
X3QgcHJpbWl0aXZlR2lnYWNhZ2VNYXNrID0gZ2lnYWNhZ2VTaXplVG9NYXNrKHByaW1pdGl2ZUdp
Z2FjYWdlU2l6ZSk7CiBjb25zdGV4cHIgc2l6ZV90IGpzVmFsdWVHaWdhY2FnZU1hc2sgPSBnaWdh
Y2FnZVNpemVUb01hc2soanNWYWx1ZUdpZ2FjYWdlU2l6ZSk7CiAKLXN0cnVjdCBDb25maWcgewot
ICAgIHZvaWQqIGJhc2VQdHIoS2luZCBraW5kKSBjb25zdAotICAgIHsKLSAgICAgICAgUkVMRUFT
RV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRzKTsKLSAgICAgICAgcmV0dXJuIGJhc2VQdHJz
W2tpbmRdOwotICAgIH0KLQotICAgIHZvaWQgc2V0QmFzZVB0cihLaW5kIGtpbmQsIHZvaWQqIHB0
cikKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQkFTU0VSVChraW5kIDwgTnVtYmVyT2ZLaW5kcyk7
Ci0gICAgICAgIGJhc2VQdHJzW2tpbmRdID0gcHRyOwotICAgIH0KLQotICAgIHVuaW9uIHsKLSAg
ICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIC8vIEFsbCB0aGUgZmllbGRzIGluIHRoaXMgc3Ry
dWN0IHNob3VsZCBiZSBjaG9zZW4gc3VjaCB0aGF0IHRoZWlyCi0gICAgICAgICAgICAvLyBpbml0
aWFsIHZhbHVlIGlzIDAgLyBudWxsIC8gZmFsc3kgYmVjYXVzZSBDb25maWcgaXMgaW5zdGFudGlh
dGVkCi0gICAgICAgICAgICAvLyBhcyBhIGdsb2JhbCBzaW5nbGV0b24uCi0KLSAgICAgICAgICAg
IGJvb2wgaXNFbmFibGVkOwotICAgICAgICAgICAgYm9vbCBpc1Blcm1hbmVudGx5RnJvemVuOwot
ICAgICAgICAgICAgYm9vbCBkaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuOwot
ICAgICAgICAgICAgYm9vbCBzaG91bGRCZUVuYWJsZWQ7Ci0KLSAgICAgICAgICAgIC8vIFdlIHdv
dWxkIGxpa2UgdG8ganVzdCBwdXQgdGhlIHN0ZDo6b25jZV9mbGFnIGZvciB0aGVzZSBmdW5jdGlv
bnMKLSAgICAgICAgICAgIC8vIGhlcmUsIGJ1dCB3ZSBjYW4ndCBiZWNhdXNlIHN0ZDo6b25jZV9m
bGFnIGhhcyBhIGltcGxpY2l0bHktZGVsZXRlZAotICAgICAgICAgICAgLy8gZGVmYXVsdCBjb25z
dHJ1Y3Rvci4gU28sIHdlIHVzZSBhIGJvb2xlYW4gaW5zdGVhZC4KLSAgICAgICAgICAgIGJvb2wg
c2hvdWxkQmVFbmFibGVkSGFzQmVlbkNhbGxlZDsKLSAgICAgICAgICAgIGJvb2wgZW5zdXJlR2ln
YWNhZ2VIYXNCZWVuQ2FsbGVkOwotCi0gICAgICAgICAgICB2b2lkKiBzdGFydDsKLSAgICAgICAg
ICAgIHNpemVfdCB0b3RhbFNpemU7Ci0gICAgICAgICAgICB2b2lkKiBiYXNlUHRyc1tOdW1iZXJP
ZktpbmRzXTsKLSAgICAgICAgfTsKLSAgICAgICAgY2hhciBlbnN1cmVTaXplW2NvbmZpZ1NpemVU
b1Byb3RlY3RdOwotICAgIH07Ci19Owotc3RhdGljX2Fzc2VydChzaXplb2YoQ29uZmlnKSA9PSBj
b25maWdTaXplVG9Qcm90ZWN0LCAiR2lnYWNhZ2UgQ29uZmlnIG11c3QgZml0IGluIGNvbmZpZ1Np
emVUb1Byb3RlY3QiKTsKLQotZXh0ZXJuICJDIiBhbGlnbmFzKGNvbmZpZ1NpemVUb1Byb3RlY3Qp
IEJFWFBPUlQgQ29uZmlnIGdfZ2lnYWNhZ2VDb25maWc7Ci0KIC8vIFRoZXNlIGNvbnN0YW50cyBh
cmUgbmVlZGVkIGJ5IHRoZSBMTEludC4KIGNvbnN0ZXhwciBwdHJkaWZmX3Qgb2Zmc2V0T2ZQcmlt
aXRpdmVHaWdhY2FnZUJhc2VQdHIgPSBLaW5kOjpQcmltaXRpdmUgKiBzaXplb2Yodm9pZCopOwog
Y29uc3RleHByIHB0cmRpZmZfdCBvZmZzZXRPZkpTVmFsdWVHaWdhY2FnZUJhc2VQdHIgPSBLaW5k
OjpKU1ZhbHVlICogc2l6ZW9mKHZvaWQqKTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
R2lnYWNhZ2VDb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dp
Z2FjYWdlQ29uZmlnLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9H
aWdhY2FnZUNvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkFsZ29yaXRobS5oIgorI2luY2x1ZGUgIkdpZ2FjYWdlS2luZC5oIgorI2luY2x1ZGUg
IlN0ZExpYkV4dHJhcy5oIgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisKK25hbWVzcGFjZSBXZWJD
b25maWcgeworCit1c2luZyBTbG90ID0gdWludDY0X3Q7CitleHRlcm4gIkMiIFNsb3QgZ19jb25m
aWdbXTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29uZmlnCisKK25hbWVzcGFjZSBHaWdhY2FnZSB7
CisKK3N0cnVjdCBDb25maWcgeworICAgIHZvaWQqIGJhc2VQdHIoS2luZCBraW5kKSBjb25zdAor
ICAgIHsKKyAgICAgICAgUkVMRUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRzKTsKKyAg
ICAgICAgcmV0dXJuIGJhc2VQdHJzW2tpbmRdOworICAgIH0KKworICAgIHZvaWQgc2V0QmFzZVB0
cihLaW5kIGtpbmQsIHZvaWQqIHB0cikKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQkFTU0VSVChr
aW5kIDwgTnVtYmVyT2ZLaW5kcyk7CisgICAgICAgIGJhc2VQdHJzW2tpbmRdID0gcHRyOworICAg
IH0KKworICAgIC8vIEFsbCB0aGUgZmllbGRzIGluIHRoaXMgc3RydWN0IHNob3VsZCBiZSBjaG9z
ZW4gc3VjaCB0aGF0IHRoZWlyCisgICAgLy8gaW5pdGlhbCB2YWx1ZSBpcyAwIC8gbnVsbCAvIGZh
bHN5IGJlY2F1c2UgQ29uZmlnIGlzIGluc3RhbnRpYXRlZAorICAgIC8vIGFzIGEgZ2xvYmFsIHNp
bmdsZXRvbi4KKworICAgIGJvb2wgaXNQZXJtYW5lbnRseUZyb3plbjsgLy8gV2lsbCBiZSBzZXQg
YnkgdGhlIGNsaWVudCBpZiB0aGUgQ29uZmlnIGdldHMgZnJvemVuLgorICAgIGJvb2wgaXNFbmFi
bGVkOworICAgIGJvb2wgZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbjsKKyAg
ICBib29sIHNob3VsZEJlRW5hYmxlZDsKKworICAgIC8vIFdlIHdvdWxkIGxpa2UgdG8ganVzdCBw
dXQgdGhlIHN0ZDo6b25jZV9mbGFnIGZvciB0aGVzZSBmdW5jdGlvbnMKKyAgICAvLyBoZXJlLCBi
dXQgd2UgY2FuJ3QgYmVjYXVzZSBzdGQ6Om9uY2VfZmxhZyBoYXMgYSBpbXBsaWNpdGx5LWRlbGV0
ZWQKKyAgICAvLyBkZWZhdWx0IGNvbnN0cnVjdG9yLiBTbywgd2UgdXNlIGEgYm9vbGVhbiBpbnN0
ZWFkLgorICAgIGJvb2wgc2hvdWxkQmVFbmFibGVkSGFzQmVlbkNhbGxlZDsKKyAgICBib29sIGVu
c3VyZUdpZ2FjYWdlSGFzQmVlbkNhbGxlZDsKKworICAgIHZvaWQqIHN0YXJ0OworICAgIHNpemVf
dCB0b3RhbFNpemU7CisgICAgdm9pZCogYmFzZVB0cnNbTnVtYmVyT2ZLaW5kc107Cit9OworCitj
b25zdGV4cHIgc2l6ZV90IHN0YXJ0U2xvdE9mR2lnYWNhZ2VDb25maWcgPSAwOworY29uc3RleHBy
IHNpemVfdCBzdGFydE9mZnNldE9mR2lnYWNhZ2VDb25maWcgPSBzdGFydFNsb3RPZkdpZ2FjYWdl
Q29uZmlnICogc2l6ZW9mKFdlYkNvbmZpZzo6U2xvdCk7CisKK2NvbnN0ZXhwciBzaXplX3QgcmVz
ZXJ2ZWRTbG90c0ZvckdpZ2FjYWdlQ29uZmlnID0gNjsKK2NvbnN0ZXhwciBzaXplX3QgcmVzZXJ2
ZWRCeXRlc0ZvckdpZ2FjYWdlQ29uZmlnID0gcmVzZXJ2ZWRTbG90c0ZvckdpZ2FjYWdlQ29uZmln
ICogc2l6ZW9mKFdlYkNvbmZpZzo6U2xvdCk7CisKK2NvbnN0ZXhwciBzaXplX3QgYWxpZ25tZW50
T2ZHaWdhY2FnZUNvbmZpZyA9IHN0ZDo6YWxpZ25tZW50X29mPEdpZ2FjYWdlOjpDb25maWc+Ojp2
YWx1ZTsKKworc3RhdGljX2Fzc2VydChzaXplb2YoR2lnYWNhZ2U6OkNvbmZpZykgPD0gcmVzZXJ2
ZWRCeXRlc0ZvckdpZ2FjYWdlQ29uZmlnKTsKK3N0YXRpY19hc3NlcnQoYm1hbGxvYzo6cm91bmRV
cFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkdpZ2FjYWdlQ29uZmlnPihzdGFydE9mZnNldE9mR2ln
YWNhZ2VDb25maWcpID09IHN0YXJ0T2Zmc2V0T2ZHaWdhY2FnZUNvbmZpZyk7CisKKyNkZWZpbmUg
Z19naWdhY2FnZUNvbmZpZyAoKmJtYWxsb2M6OmJpdHdpc2VfY2FzdDxHaWdhY2FnZTo6Q29uZmln
Kj4oJldlYkNvbmZpZzo6Z19jb25maWdbR2lnYWNhZ2U6OnN0YXJ0U2xvdE9mR2lnYWNhZ2VDb25m
aWddKSkKKworfSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvR2lnYWNhZ2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9HaWdhY2FnZUtpbmQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0dpZ2FjYWdlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFt
ZXNwYWNlIEdpZ2FjYWdlIHsKKworZW51bSBLaW5kIHsKKyAgICBQcmltaXRpdmUsCisgICAgSlNW
YWx1ZSwKKyAgICBOdW1iZXJPZktpbmRzCit9OworCit9IC8vIG5hbWVzcGFjZSBHaWdhY2FnZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400712</attachid>
            <date>2020-05-31 18:05:01 -0700</date>
            <delta_ts>2020-05-31 18:29:33 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-212585.patch</filename>
            <type>text/plain</type>
            <size>28942</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDIwLTA1LTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29u
ZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMjU4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvSlNDQ29uZmln
Lmg6CisgICAgICAgIChKU0M6OkNvbmZpZzo6aXNQZXJtYW5lbnRseUZyb3plbik6CisKIDIwMjAt
MDUtMzEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBK
U0M6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXVEY6OkNvbmZpZyBpbnN0ZWFkIG9mIGl0cyBv
d24uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTQzMiw3ICs0MzIsNyBAQCBtYWNybyBjYWdlZFByaW1pdGl2ZShwdHIsIGxlbmd0aCwgc2NyYXRj
CiAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHB0cgogICAgIGVuZAogICAgIGlmIEdJR0FDQUdFX0VO
QUJMRUQKLSAgICAgICAgY2FnZShfZ19naWdhY2FnZUNvbmZpZyArIEdpZ2FjYWdlOjpDb25maWc6
OmJhc2VQdHJzICsgR2lnYWNhZ2VQcmltaXRpdmVCYXNlUHRyT2Zmc2V0LCBjb25zdGV4cHIgR2ln
YWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgc291cmNlLCBzY3JhdGNoKQorICAgICAgICBj
YWdlKF9nX2NvbmZpZyArIChjb25zdGV4cHIgR2lnYWNhZ2U6OnN0YXJ0T2Zmc2V0T2ZHaWdhY2Fn
ZUNvbmZpZykgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2FjYWdlUHJpbWl0aXZl
QmFzZVB0ck9mZnNldCwgY29uc3RleHByIEdpZ2FjYWdlOjpwcmltaXRpdmVHaWdhY2FnZU1hc2ss
IHNvdXJjZSwgc2NyYXRjaCkKICAgICAgICAgaWYgQVJNNjRFCiAgICAgICAgICAgICBjb25zdCBu
dW1iZXJPZlBBQ0JpdHMgPSBjb25zdGV4cHIgTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUEFDQml0
cwogICAgICAgICAgICAgYmZpcSBzY3JhdGNoMiwgMCwgNjQgLSBudW1iZXJPZlBBQ0JpdHMsIHB0
cgpAQCAtNDQ2LDcgKzQ0Niw3IEBAIGVuZAogbWFjcm8gbG9hZENhZ2VkSlNWYWx1ZShzb3VyY2Us
IGRlc3QsIHNjcmF0Y2hPckxlbmd0aCkKICAgICBsb2FkcCBzb3VyY2UsIGRlc3QKICAgICBpZiBH
SUdBQ0FHRV9FTkFCTEVECi0gICAgICAgIGNhZ2UoX2dfZ2lnYWNhZ2VDb25maWcgKyBHaWdhY2Fn
ZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2FjYWdlSlNWYWx1ZUJhc2VQdHJPZmZzZXQsIGNvbnN0
ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2FjYWdlTWFzaywgZGVzdCwgc2NyYXRjaE9yTGVuZ3Ro
KQorICAgICAgICBjYWdlKF9nX2NvbmZpZyArIChjb25zdGV4cHIgR2lnYWNhZ2U6OnN0YXJ0T2Zm
c2V0T2ZHaWdhY2FnZUNvbmZpZykgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2Fj
YWdlSlNWYWx1ZUJhc2VQdHJPZmZzZXQsIGNvbnN0ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2Fj
YWdlTWFzaywgZGVzdCwgc2NyYXRjaE9yTGVuZ3RoKQogICAgIGVuZAogZW5kCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCShyZXZpc2lvbiAyNjIzNjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgZW5hYmxlUmVz
dHJpY3RlZE9wdGlvbnMoKTsKICAgICB9CiAKLSAgICBib29sIGlzUGVybWFuZW50bHlGcm96ZW4o
KSB7IHJldHVybiBXVEY6Omdfd3RmQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW47IH0KKyAgICBi
b29sIGlzUGVybWFuZW50bHlGcm96ZW4oKSB7IHJldHVybiBnX3d0ZkNvbmZpZy5pc1Blcm1hbmVu
dGx5RnJvemVuOyB9CiAKICAgICAvLyBBbGwgdGhlIGZpZWxkcyBpbiB0aGlzIHN0cnVjdCBzaG91
bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgogICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAv
IG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKQEAgLTgyLDEyICs4
MiwxMSBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICBXVEY6OlB0clRhZ0xvb2t1cCBwdHJUYWdMb29r
dXBSZWNvcmQ7CiB9OwogCi1jb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5z
aW9uID0gb2Zmc2V0b2YoV1RGOjpDb25maWcsIHNwYWNlRm9yRXh0ZW5zaW9ucyk7CiBjb25zdGV4
cHIgc2l6ZV90IGFsaWdubWVudE9mSlNDQ29uZmlnID0gc3RkOjphbGlnbm1lbnRfb2Y8SlNDOjpD
b25maWc+Ojp2YWx1ZTsKIAotc3RhdGljX2Fzc2VydChzaXplb2YoSlNDOjpDb25maWcpIDw9IChz
aXplb2YoV1RGOjpDb25maWcpIC0gb2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24pKTsKLXN0YXRp
Y19hc3NlcnQocm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkpTQ0NvbmZpZz4ob2Zmc2V0
T2ZXVEZDb25maWdFeHRlbnNpb24pID09IG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uKTsKK3N0
YXRpY19hc3NlcnQoV1RGOjpvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbiArIHNpemVvZihKU0M6
OkNvbmZpZykgPD0gV1RGOjpDb25maWdTaXplVG9Qcm90ZWN0KTsKK3N0YXRpY19hc3NlcnQocm91
bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkpTQ0NvbmZpZz4oV1RGOjpvZmZzZXRPZldURkNv
bmZpZ0V4dGVuc2lvbikgPT0gV1RGOjpvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbik7CiAKLSNk
ZWZpbmUgZ19qc2NDb25maWcgKCpiaXR3aXNlX2Nhc3Q8Q29uZmlnKj4oJldURjo6Z193dGZDb25m
aWcuc3BhY2VGb3JFeHRlbnNpb25zKSkKKyNkZWZpbmUgZ19qc2NDb25maWcgKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmZ193dGZDb25maWcuc3BhY2VGb3JFeHRlbnNpb25zKSkKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL1dURi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0wNS0zMSAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEdpZ2FjYWdlOjpD
b25maWcgdG8gdXNlIHN0b3JhZ2UgaW4gV2ViQ29uZmlnOjpnX2NvbmZpZyBpbnN0ZWFkIG9mIGl0
cyBvd24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTI1ODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzODEyNDg3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5vdyB0aGluayBvZiB0aGUgdmFy
aW91cyBDb25maWcgcmVjb3JkcyBhcyBiZWluZyBhbGxvY2F0ZWQgZnJvbSBwYXJ0cyBvZiBhCisg
ICAgICAgIFdlYkNvbmZpZzo6Z19jb25maWcgYnVmZmVyLiAgV1RGOjpDb25maWcgd2lsbCBtYW5h
Z2UgdGhlIG1lY2hhbmljcyBvZiBmcmVlemluZworICAgICAgICB0aGF0IGJ1ZmZlci4gIEFuZCB0
aGUgSlNDIFZNIGlzIHN0aWxsIHRoZSBkZXRlcm1pbmVyIG9mIGlmL3doZW4gdG8gZnJlZXplIHRo
ZQorICAgICAgICBidWZmZXIsIGFuZCBpdCB3aWxsIGRvIHRoaXMgYXQgdGhlIGVuZCBvZiB0aGUg
Y29uc3RydWN0aW9uIG9mIHRoZSB2ZXJ5IGZpcnN0CisgICAgICAgIFZNIGluc3RhbmNlIChhcyBi
ZWZvcmUpLgorCisgICAgICAgIEdpZ2FjYWdlOjpDb25maWcgcmVzZXJ2ZXMgc3BhY2UgaW4gV2Vi
Q29uZmlnOjpnX2NvbmZpZy4KKyAgICAgICAgV1RGOjpDb25maWcgd2lsbCBob25vciB0aGF0IHJl
c2VydmF0aW9uIGFuZCBwbGFjZSBpdHNlbGYgYWZ0ZXIgdGhhdC4KKyAgICAgICAgSlNDOjpDb25m
aWcgd2lsbCBjb250aW51ZSB0byBwbGFjZSBpdHNlbGYgYXQgV1RGOjpDb25maWc6OnNwYWNlRm9y
RXh0ZW5zaW9ucy4KKworICAgICAgICBUaGUgdXBzaWRlIG9mIHRoaXMgYXBwcm9hY2ggdGhpcyBp
cyB0aGF0IHdlIGNhbiBub3cgc2hhcmUgdGhlIHNhbWUgbWVtb3J5IHBhZ2UKKyAgICAgICAgZm9y
IGFsbCB0aGUgQ29uZmlncywgYW5kIGNhbiBmcmVlemUgdGhlbSBpbiBvbmUgZ28uCisKKyAgICAg
ICAgVGhlIGRvd25zaWRlIGlzIHRoYXQgZ19naWdhY2FnZUNvbmZpZywgZ193dGZDb25maWcsIGFu
ZCBnX2pzY0NvbmZpZyBub3cgaGF2ZSB0bworICAgICAgICBiZSBtYWNyb3MuICBUaGlzIHJlc3Vs
dHMgaW4gc29tZSB3ZWlyZG5lc3MgZS5nLiB0aGV5IGFyZSBubyBsb25nZXIgcXVhbGlmaWVkIGJ5
CisgICAgICAgIG5hbWVzcGFjZXM6IHJlZmVycmluZyB0byBXVEY6Omdfd3RmQ29uZmlnIGlzIG5v
dyBpbmNvcnJlY3QuCisKKyAgICAgICAgKiB3dGYvV1RGQ29uZmlnLmNwcDoKKyAgICAgICAgKFdU
Rjo6Q29uZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSk6CisgICAgICAgICogd3RmL1dURkNvbmZpZy5o
OgorICAgICAgICAoKTogRGVsZXRlZC4KKwogMjAyMC0wNS0zMSAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIEpTQzo6Q29uZmlnIHRvIHVzZSBzdG9yYWdl
IGluIFdURjo6Q29uZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1dURkNvbmZpZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmNw
cAkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgPHd0Zi9XVEZDb25maWcuaD4KIAorI2luY2x1ZGUgPHd0Zi9HaWdhY2FnZS5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNSw5
ICszNiwxMyBAQAogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiAjZW5kaWYKIAotbmFtZXNwYWNlIFdU
RiB7CituYW1lc3BhY2UgV2ViQ29uZmlnIHsKKworYWxpZ25hcyhXVEY6OkNvbmZpZ1NpemVUb1By
b3RlY3QpIFdURl9FWFBPUlRfUFJJVkFURSBTbG90IGdfY29uZmlnW1dURjo6Q29uZmlnU2l6ZVRv
UHJvdGVjdCAvIHNpemVvZihTbG90KV07CiAKLWFsaWduYXMoQ29uZmlnU2l6ZVRvUHJvdGVjdCkg
V1RGX0VYUE9SVF9QUklWQVRFIENvbmZpZyBnX3d0ZkNvbmZpZzsKK30gLy8gbmFtZXNwYWNlIFdl
YkNvbmZpZworCituYW1lc3BhY2UgV1RGIHsKIAogdm9pZCBDb25maWc6OnBlcm1hbmVudGx5RnJl
ZXplKCkKIHsKQEAgLTQ2LDggKzUxLDEyIEBAIHZvaWQgQ29uZmlnOjpwZXJtYW5lbnRseUZyZWV6
ZSgpCiAKICAgICBSRUxFQVNFX0FTU0VSVChyb3VuZFVwVG9NdWx0aXBsZU9mKHBhZ2VTaXplKCks
IENvbmZpZ1NpemVUb1Byb3RlY3QpID09IENvbmZpZ1NpemVUb1Byb3RlY3QpOwogCi0gICAgaWYg
KCFnX3d0ZkNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuKQorICAgIGlmICghZ193dGZDb25maWcu
aXNQZXJtYW5lbnRseUZyb3plbikgewogICAgICAgICBnX3d0ZkNvbmZpZy5pc1Blcm1hbmVudGx5
RnJvemVuID0gdHJ1ZTsKKyNpZiBHSUdBQ0FHRV9FTkFCTEVECisgICAgICAgIGdfZ2lnYWNhZ2VD
b25maWcuaXNQZXJtYW5lbnRseUZyb3plbiA9IHRydWU7CisjZW5kaWYKKyAgICB9CiAKICAgICBp
bnQgcmVzdWx0ID0gMDsKICNpZiBPUyhEQVJXSU4pCkBAIC01Nyw5ICs2Niw5IEBAIHZvaWQgQ29u
ZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSgpCiAgICAgfTsKIAogICAgIC8vIFRoZXJlJ3Mgbm8gZ29p
bmcgYmFjayBub3chCi0gICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tfc2VsZigpLCBy
ZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfd3RmQ29uZmlnKSwgQ29uZmlnU2l6ZVRv
UHJvdGVjdCwgRGlzYWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcywgVk1fUFJPVF9SRUFE
KTsKKyAgICByZXN1bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8dm1fYWRkcmVzc190PigmV2ViQ29uZmlnOjpnX2NvbmZpZyksIENvbmZpZ1NpemVUb1By
b3RlY3QsIERpc2FsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMsIFZNX1BST1RfUkVBRCk7
CiAjZWxpZiBPUyhMSU5VWCkKLSAgICByZXN1bHQgPSBtcHJvdGVjdCgmZ193dGZDb25maWcsIENv
bmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7CisgICAgcmVzdWx0ID0gbXByb3RlY3QoJldl
YkNvbmZpZzo6Z19jb25maWcsIENvbmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7CiAjZWxp
ZiBPUyhXSU5ET1dTKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXF1aXZhbGVudCwgbWF5YmUg
d2l0aCBWaXJ0dWFsUHJvdGVjdC4KICAgICAvLyBBbHNvIG5lZWQgdG8gZml4IFdlYktpdFRlc3RS
dW5uZXIuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9XVEZDb25maWcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9XVEZDb25maWcuaAkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL1dU
Ri93dGYvV1RGQ29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDIyIEBACiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMu
aD4KIAorI2lmIGRlZmluZWQoVVNFX1NZU1RFTV9NQUxMT0MpICYmIFVTRV9TWVNURU1fTUFMTE9D
CituYW1lc3BhY2UgR2lnYWNhZ2UgeworY29uc3RleHByIHNpemVfdCByZXNlcnZlZFNsb3RzRm9y
R2lnYWNhZ2VDb25maWcgPSAwOworY29uc3RleHByIHNpemVfdCByZXNlcnZlZEJ5dGVzRm9yR2ln
YWNhZ2VDb25maWcgPSAwOworfQorI2Vsc2UKKyNpbmNsdWRlIDxibWFsbG9jL0dpZ2FjYWdlQ29u
ZmlnLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvbmZpZyB7CisKK3VzaW5nIFNsb3QgPSB1
aW50NjRfdDsKK2V4dGVybiAiQyIgU2xvdCBnX2NvbmZpZ1tdOworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb25maWcKKwogbmFtZXNwYWNlIFdURiB7CiAKIGNvbnN0ZXhwciBzaXplX3QgQ29uZmlnU2l6
ZVRvUHJvdGVjdCA9IENlaWxpbmdPblBhZ2VTaXplOwpAQCAtNDUsMjggKzYxLDMxIEBAIHN0cnVj
dCBDb25maWcgewogICAgICAgICB+QXNzZXJ0Tm90RnJvemVuU2NvcGUoKTsKICAgICB9OwogCi0g
ICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgLy8gQWxsIHRoZSBmaWVs
ZHMgaW4gdGhpcyBzdHJ1Y3Qgc2hvdWxkIGJlIGNob3NlbiBzdWNoIHRoYXQgdGhlaXIKLSAgICAg
ICAgICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAvIG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZp
ZyBpcyBpbnN0YW50aWF0ZWQKLSAgICAgICAgICAgIC8vIGFzIGEgZ2xvYmFsIHNpbmdsZXRvbi4K
KyAgICAvLyBBbGwgdGhlIGZpZWxkcyBpbiB0aGlzIHN0cnVjdCBzaG91bGQgYmUgY2hvc2VuIHN1
Y2ggdGhhdCB0aGVpcgorICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAvIG51bGwgLyBmYWxzeSBi
ZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKKyAgICAvLyBhcyBhIGdsb2JhbCBzaW5nbGV0
b24uCiAKLSAgICAgICAgICAgIGJvb2wgaXNQZXJtYW5lbnRseUZyb3plbjsKKyAgICBib29sIGlz
UGVybWFuZW50bHlGcm96ZW47CiAKICNpZiBVU0UoUFRIUkVBRFMpICYmIEhBVkUoTUFDSElORV9D
T05URVhUKQotICAgICAgICAgICAgU2lnbmFsSGFuZGxlcnMgc2lnbmFsSGFuZGxlcnM7CisgICAg
U2lnbmFsSGFuZGxlcnMgc2lnbmFsSGFuZGxlcnM7CiAjZW5kaWYKLSAgICAgICAgICAgIFB0clRh
Z0xvb2t1cCogcHRyVGFnTG9va3VwSGVhZDsKKyAgICBQdHJUYWdMb29rdXAqIHB0clRhZ0xvb2t1
cEhlYWQ7CiAKLSAgICAgICAgICAgIHVpbnQ2NF90IHNwYWNlRm9yRXh0ZW5zaW9uc1sxXTsKLSAg
ICAgICAgfTsKLSAgICAgICAgY2hhciBlbnN1cmVTaXplW0NvbmZpZ1NpemVUb1Byb3RlY3RdOwot
ICAgIH07CisgICAgdWludDY0X3Qgc3BhY2VGb3JFeHRlbnNpb25zWzFdOwogfTsKIAotZXh0ZXJu
ICJDIiBhbGlnbmFzKENvbmZpZ1NpemVUb1Byb3RlY3QpIFdURl9FWFBPUlRfUFJJVkFURSBDb25m
aWcgZ193dGZDb25maWc7Citjb25zdGV4cHIgc2l6ZV90IHN0YXJ0U2xvdE9mV1RGQ29uZmlnID0g
R2lnYWNhZ2U6OnJlc2VydmVkU2xvdHNGb3JHaWdhY2FnZUNvbmZpZzsKK2NvbnN0ZXhwciBzaXpl
X3Qgc3RhcnRPZmZzZXRPZldURkNvbmZpZyA9IHN0YXJ0U2xvdE9mV1RGQ29uZmlnICogc2l6ZW9m
KFdlYkNvbmZpZzo6U2xvdCk7CisKK2NvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZXVEZDb25maWdF
eHRlbnNpb24gPSBzdGFydE9mZnNldE9mV1RGQ29uZmlnICsgb2Zmc2V0b2YoV1RGOjpDb25maWcs
IHNwYWNlRm9yRXh0ZW5zaW9ucyk7CisKK2NvbnN0ZXhwciBzaXplX3QgYWxpZ25tZW50T2ZXVEZD
b25maWcgPSBzdGQ6OmFsaWdubWVudF9vZjxXVEY6OkNvbmZpZz46OnZhbHVlOworCitzdGF0aWNf
YXNzZXJ0KEdpZ2FjYWdlOjpyZXNlcnZlZEJ5dGVzRm9yR2lnYWNhZ2VDb25maWcgKyBzaXplb2Yo
V1RGOjpDb25maWcpIDw9IENvbmZpZ1NpemVUb1Byb3RlY3QpOworc3RhdGljX2Fzc2VydChyb3Vu
ZFVwVG9NdWx0aXBsZU9mPGFsaWdubWVudE9mV1RGQ29uZmlnPihzdGFydE9mZnNldE9mV1RGQ29u
ZmlnKSA9PSBzdGFydE9mZnNldE9mV1RGQ29uZmlnKTsKIAotc3RhdGljX2Fzc2VydChzaXplb2Yo
Q29uZmlnKSA9PSBDb25maWdTaXplVG9Qcm90ZWN0KTsKKyNkZWZpbmUgZ193dGZDb25maWcgKCpi
aXR3aXNlX2Nhc3Q8V1RGOjpDb25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0
U2xvdE9mV1RGQ29uZmlnXSkpCiAKIEFMV0FZU19JTkxJTkUgQ29uZmlnOjpBc3NlcnROb3RGcm96
ZW5TY29wZTo6QXNzZXJ0Tm90RnJvemVuU2NvcGUoKQogewpJbmRleDogU291cmNlL2JtYWxsb2Mv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwkocmV2aXNp
b24gMjYyMzY1KQorKysgU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTcgQEAKKzIwMjAtMDUtMzEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgorCisgICAgICAgIENoYW5nZSBHaWdhY2FnZTo6Q29uZmlnIHRvIHVzZSBzdG9yYWdlIGluIFdl
YkNvbmZpZzo6Z19jb25maWcgaW5zdGVhZCBvZiBpdHMgb3duLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNTg1CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82MzgxMjQ4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAxLiBHaWdhY2FnZTo6Q29uZmlnIG5vdyByZXNlcnZlcyBhbmQgZXhwZWN0IHNwYWNl
IHRvIGJlIGF2YWlsYWJsZSBpbiBhbiBleHRlcm5hbAorICAgICAgICAgICBXZWJDb25maWc6Omdf
Y29uZmlnIGJ1ZmZlci4gIEdpZ2FjYWdlIGRvZXMgbm90IGFsbG9jYXRlIHRoYXQgYnVmZmVyLgor
CisgICAgICAgIDIuIE1vdmVkIEdpZ2FjYWdlOjpDb25maWcgdG8gR2lnYWNhZ2VDb25maWcuaC4K
KyAgICAgICAgICAgVGhpcyBhbGxvd3MgV1RGQ29uZmlnLmggdG8gaW5jbHVkZSBHaWdhY2FnZUNv
bmZpZy5oIGluc3RlYWQgb2YgYWxsIG9mIEdpZ2FjYWdlLmguCisKKyAgICAgICAgMy4gTW92ZWQg
R2lnYWNhZ2U6OktpbmQgdG8gR2lnYWNhZ2VLaW5kLmguCisgICAgICAgICAgIE90aGVyd2lzZSwg
R2lnYWNhZ2U6OktpbmQgd291bGQgbmVlZCB0byBtb3ZlIHRvIEdpZ2FjYWdlQ29uZmlnLmggd2hp
Y2ggaXMgYQorICAgICAgICAgICB3ZWlyZCBwbGFjZSB0byBwdXQgaXQuCisKKyAgICAgICAgNC4g
UmVtb3ZlZCBmcmVlemVHaWdhY2FnZUNvbmZpZygpLCB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCks
IGFuZAorICAgICAgICAgICBwZXJtYW5lbnRseUZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCkuCisKKyAg
ICAgICAgICAgSXQgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHRvIHRlbXBvcmFyaWx5IGZyZWV6ZSBh
bmQgdW5mcmVlemUgdGhlIEdpZ2FjYWdlOjpDb25maWcKKyAgICAgICAgICAgYmVjYXVzZSBpdCBu
b3cgc2hhcmUgdGhlIHNhbWUgbWVtb3J5IHBhZ2Ugd2l0aCBoaWdoZXIgbGV2ZWwgQ29uZmlncy4K
KworICAgICAgICAgICBwZXJtYW5lbnRseUZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCkgaXMgbm8gbG9u
Z2VyIG5lZWRlZCBiZWNhdXNlIGl0IGlzIHN1YnN1bWVkCisgICAgICAgICAgIGJ5IFdURjo6Q29u
ZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSgpLCB3aGljaCB3aWxsIGZyZWV6ZSB0aGUgZW50aXJlIFdl
YkNvbmZpZzo6Z19jb25maWcKKyAgICAgICAgICAgYnVmZmVyLgorCisgICAgICAgICAgIE9uZSBk
aWZmZXJlbmNlIGluIGJlaGF2aW9yIGhlcmUgaXMgdGhhdCBHaWdhY2FnZTo6Q29uZmlnIGRhdGEg
dXNlZCB0byBiZSBwZXJtYW5lbnRseQorICAgICAgICAgICBmcm96ZW4gYXMgc29vbiBhcyBmb3Ji
aWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpIGlzIGNhbGxlZC4gIE5vdywgaXQgaXNuJ3QK
KyAgICAgICAgICAgcGVybWFuZW50bHkgZnJvemVuIHVudGlsIHRoZSBlbmQgb2YgdGhlIGNvbnN0
cnVjdGlvbiBvZiB0aGUgZmlyc3QgSlNDOjpWTSBpbnN0YW5jZQorICAgICAgICAgICBpbiB0aGUg
cHJvY2VzcyAoanVzdCBsaWtlIHRoZSBvdGhlciBDb25maWcgcmVjb3JkcykuICBUaGlzIHN0aWxs
IGd1YXJhbnRlZXMgdGhhdAorICAgICAgICAgICBpdCBpcyBmcm96ZW4gYmVmb3JlIGFueSBKUyBz
Y3JpcHQgY2FuIHJ1bi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIGJt
YWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBibWFsbG9jL0dpZ2Fj
YWdlLmNwcDoKKyAgICAgICAgKEdpZ2FjYWdlOjplbnN1cmVHaWdhY2FnZSk6CisgICAgICAgIChH
aWdhY2FnZTo6ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpm
b3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSk6CisgICAgICAgIChHaWdhY2FnZTo6Ym1h
bGxvYzo6ZnJlZXplR2lnYWNhZ2VDb25maWcpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6
OmJtYWxsb2M6OnVuZnJlZXplR2lnYWNhZ2VDb25maWcpOiBEZWxldGVkLgorICAgICAgICAoR2ln
YWNhZ2U6OmJtYWxsb2M6OnBlcm1hbmVudGx5RnJlZXplR2lnYWNhZ2VDb25maWcpOiBEZWxldGVk
LgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OlVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29w
ZTo6VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2Fj
YWdlOjpibWFsbG9jOjpVbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGU6On5VbmZyZWV6ZUdpZ2Fj
YWdlQ29uZmlnU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuaDoK
KyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpDb25maWc6OnNldEJhc2VQdHIp
OiBEZWxldGVkLgorICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2VDb25maWcuaDogQWRkZWQuCisg
ICAgICAgIChHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRyIGNvbnN0KToKKyAgICAgICAgKEdpZ2Fj
YWdlOjpDb25maWc6OnNldEJhc2VQdHIpOgorICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2VLaW5k
Lmg6IEFkZGVkLgorCiAyMDIwLTA1LTIzICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNv
bT4KIAogICAgICAgICBbYm1hbGxvY10gRml4IE9PTSBlcnJvcnMgb24gTUlQUyBhZnRlciByMjYx
NjY3CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNl
L2JtYWxsb2MvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDggQEAg
c2V0KGJtYWxsb2NfUFVCTElDX0hFQURFUlMKICAgICBibWFsbG9jL0ZyZWVMaXN0LmgKICAgICBi
bWFsbG9jL0ZyZWVMaXN0SW5saW5lcy5oCiAgICAgYm1hbGxvYy9HaWdhY2FnZS5oCisgICAgYm1h
bGxvYy9HaWdhY2FnZUNvbmZpZy5oCisgICAgYm1hbGxvYy9HaWdhY2FnZUtpbmQuaAogICAgIGJt
YWxsb2MvSGVhcC5oCiAgICAgYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmgKICAgICBibWFsbG9jL0hl
YXBLaW5kLmgKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MjM2MSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTUxLDYgKzE1
MSw4IEBACiAJCUVCMTdEMTExMjNCRkNENDIwMDIwOTNBNyAvKiBIZWFwQ29uc3RhbnRzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCMTdEMTEwMjNC
RkM4QzQwMDIwOTNBNyAvKiBIZWFwQ29uc3RhbnRzLmNwcCAqLzsgfTsKIAkJRUIxN0QxMTIyM0JG
Q0Q3QTAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCMTdEMTBFMjNCRTY5MUQwMDIwOTNBNyAvKiBIZWFwQ29u
c3RhbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRkU0OEJEM0IyMzIxRThENzAwRjEzNkQwIC8qIEZhaWx1cmVBY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDhCRDNBMjMyMUU4Q0MwMEYx
MzZEMCAvKiBGYWlsdXJlQWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRkVDM0EzOTMyNDg0NkE4MTAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29u
ZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUMz
QTM5MjI0ODQ2QTZEMDAzOTVCNTQgLyogR2lnYWNhZ2VDb25maWcuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRUMzQTM5NTI0ODQ3MUZFMDAzOTVC
NTQgLyogR2lnYWNhZ2VLaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRUMzQTM5NDI0ODQ3MUZFMDAzOTVCNTQgLyogR2lnYWNhZ2VLaW5kLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIC8qIEVuZCBQQlhC
dWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2Vj
dGlvbiAqLwpAQCAtMzA3LDYgKzMwOSw4IEBACiAJCUVCMTdEMTBFMjNCRTY5MUQwMDIwOTNBNyAv
KiBIZWFwQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEhlYXBD
b25zdGFudHMuaDsgcGF0aCA9IGJtYWxsb2MvSGVhcENvbnN0YW50cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFQjE3RDExMDIzQkZDOEM0MDAyMDkzQTcgLyogSGVhcENvbnN0YW50
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIZWFwQ29uc3RhbnRz
LmNwcDsgcGF0aCA9IGJtYWxsb2MvSGVhcENvbnN0YW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFNDhCRDNBMjMyMUU4Q0MwMEYxMzZEMCAvKiBGYWlsdXJlQWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZhaWx1cmVBY3Rpb24uaDsgcGF0aCA9
IGJtYWxsb2MvRmFpbHVyZUFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RUMzQTM5MjI0ODQ2QTZEMDAzOTVCNTQgLyogR2lnYWNhZ2VDb25maWcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gR2lnYWNhZ2VDb25maWcuaDsgcGF0aCA9IGJtYWxsb2MvR2ln
YWNhZ2VDb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVDM0EzOTQyNDg0
NzFGRTAwMzk1QjU0IC8qIEdpZ2FjYWdlS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBHaWdhY2FnZUtpbmQuaDsgcGF0aCA9IGJtYWxsb2MvR2lnYWNhZ2VLaW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTQ4
Niw2ICs0OTAsOCBAQAogCQkJCUZFNDhCRDNBMjMyMUU4Q0MwMEYxMzZEMCAvKiBGYWlsdXJlQWN0
aW9uLmggKi8sCiAJCQkJMEY1QkYxNEUxRjIyREVBRjAwMjlEOTFEIC8qIEdpZ2FjYWdlLmNwcCAq
LywKIAkJCQkwRjVCRjE0QzFGMjJCMEMzMDAyOUQ5MUQgLyogR2lnYWNhZ2UuaCAqLywKKwkJCQlG
RUMzQTM5MjI0ODQ2QTZEMDAzOTVCNTQgLyogR2lnYWNhZ2VDb25maWcuaCAqLywKKwkJCQlGRUMz
QTM5NDI0ODQ3MUZFMDAzOTVCNTQgLyogR2lnYWNhZ2VLaW5kLmggKi8sCiAJCQkJMTREQTMyMEUx
ODg3NUQ5RjAwNzI2OUUwIC8qIEhlYXAuY3BwICovLAogCQkJCTE0REEzMjBDMTg4NzVCMDkwMDcy
NjlFMCAvKiBIZWFwLmggKi8sCiAJCQkJRUIxN0QxMTAyM0JGQzhDNDAwMjA5M0E3IC8qIEhlYXBD
b25zdGFudHMuY3BwICovLApAQCAtNjA2LDYgKzYxMiw3IEBACiAJCQkJRkU0OEJEM0IyMzIxRThE
NzAwRjEzNkQwIC8qIEZhaWx1cmVBY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OEM4
MThGNDhENzUwMDk1MDcwMiAvKiBGaXhlZFZlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3
RUI4NDQxRjk1NDFCMDAwRjFBQkNCIC8qIEZyZWVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RUMzQTM5MzI0ODQ2QTgxMDAzOTVCNTQgLyogR2lnYWNhZ2VDb25maWcuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGN0VCODI5MUY5NTQxQjAwMEYxQUJDQiAvKiBGcmVlTGlzdElubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNUJGMTREMUYyMkIwQzMwMDI5RDkxRCAvKiBHaWdhY2FnZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTQwMDI3NDkxOEY4OUMxMzAwMTE1Qzk3IC8qIEhlYXAuaCBpbiBI
ZWFkZXJzICovLApAQCAtNjU0LDYgKzY2MSw3IEBACiAJCQkJRTM3OEE5RTAyNDZCNjg3NTAwMjlD
MkJCIC8qIE9iamVjdFR5cGVUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyOEQ4NEQyM0NF
QjM4OTAwNTQ1QjE4IC8qIFBhY2tlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QkYxNDkxRjIy
QThEODAwMjlEOTFEIC8qIFBlckhlYXBLaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUMzQTM5
NTI0ODQ3MUZFMDAzOTVCNTQgLyogR2lnYWNhZ2VLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NERENzhDQjE4RjQ4RDc1MDA5NTA3MDIgLyogUGVyUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTRERDc4Q0MxOEY0OEQ3NTAwOTUwNzAyIC8qIFBlclRocmVhZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzk1QUIzQzcyMDZFMEQzNDAwNzRGRTc2IC8qIFBoeXNpY2FsUGFnZU1hcC5oIGluIEhl
YWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAkocmV2aXNpb24g
MjYyMzYxKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0IENhbGxiYWNrIHsKICAgICB2b2lkKiBhcmd1
bWVudCB7IG51bGxwdHIgfTsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIEdpZ2FjYWdlCiAKIG5h
bWVzcGFjZSBibWFsbG9jIHsKIApAQCAtNzksNzUgKzc5LDEwIEBAIG5hbWVzcGFjZSBHaWdhY2Fn
ZSB7CiAvLyBJZiB0aGlzIHdlcmUgbGVzcyB0aGFuIDMyR0IsIHRob3NlIE9PQiBhY2Nlc3NlcyBj
b3VsZCByZWFjaCBvdXRzaWRlIG9mIHRoZSBjYWdlLgogY29uc3RleHByIHNpemVfdCBnaWdhY2Fn
ZVJ1bndheSA9IDMybGx1ICogYm1hbGxvYzo6U2l6ZXM6OkdCOwogCi1hbGlnbmFzKGNvbmZpZ1Np
emVUb1Byb3RlY3QpIENvbmZpZyBnX2dpZ2FjYWdlQ29uZmlnOwotCiB1c2luZyBuYW1lc3BhY2Ug
Ym1hbGxvYzsKIAogbmFtZXNwYWNlIHsKIAotI2lmIEJPUyhEQVJXSU4pCi1lbnVtIHsKLSAgICBB
bGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzID0gZmFsc2UsCi0gICAgRGlzYWxsb3dQZXJt
aXNzaW9uQ2hhbmdlc0FmdGVyVGhpcyA9IHRydWUKLX07Ci0jZW5kaWYKLQotc3RhdGljIHZvaWQg
ZnJlZXplR2lnYWNhZ2VDb25maWcoKQotewotICAgIGludCByZXN1bHQ7Ci0jaWYgQk9TKERBUldJ
TikKLSAgICByZXN1bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8dm1fYWRkcmVzc190PigmZ19naWdhY2FnZUNvbmZpZyksIGNvbmZpZ1NpemVUb1Byb3Rl
Y3QsIEFsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMsIFZNX1BST1RfUkVBRCk7Ci0jZWxz
ZQotICAgIHJlc3VsdCA9IG1wcm90ZWN0KCZnX2dpZ2FjYWdlQ29uZmlnLCBjb25maWdTaXplVG9Q
cm90ZWN0LCBQUk9UX1JFQUQpOwotI2VuZGlmCi0gICAgUkVMRUFTRV9CQVNTRVJUKCFyZXN1bHQp
OwotfQotCi1zdGF0aWMgdm9pZCB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCkKLXsKLSAgICBSRUxF
QVNFX0JBU1NFUlQoIWdfZ2lnYWNhZ2VDb25maWcuaXNQZXJtYW5lbnRseUZyb3plbik7Ci0gICAg
aW50IHJlc3VsdDsKLSNpZiBCT1MoREFSV0lOKQotICAgIHJlc3VsdCA9IHZtX3Byb3RlY3QobWFj
aF90YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KCZnX2dpZ2FjYWdl
Q29uZmlnKSwgY29uZmlnU2l6ZVRvUHJvdGVjdCwgQWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVy
VGhpcywgVk1fUFJPVF9SRUFEIHwgVk1fUFJPVF9XUklURSk7Ci0jZWxzZQotICAgIHJlc3VsdCA9
IG1wcm90ZWN0KCZnX2dpZ2FjYWdlQ29uZmlnLCBjb25maWdTaXplVG9Qcm90ZWN0LCBQUk9UX1JF
QUQgfCBQUk9UX1dSSVRFKTsKLSNlbmRpZgotICAgIFJFTEVBU0VfQkFTU0VSVCghcmVzdWx0KTsK
LX0KLQotc3RhdGljIHZvaWQgcGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZygpCi17Ci0g
ICAgc3RhdGljIE11dGV4IGNvbmZpZ0xvY2s7Ci0gICAgTG9ja0hvbGRlciBsb2NraW5nKGNvbmZp
Z0xvY2spOwotCi0gICAgaWYgKCFnX2dpZ2FjYWdlQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4p
IHsKLSAgICAgICAgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpOwotICAgICAgICBnX2dpZ2FjYWdl
Q29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4gPSB0cnVlOwotICAgIH0KLQotICAgIC8vIFRoZXJl
J3Mgbm8gZ29pbmcgYmFjayBub3chCi0gICAgaW50IHJlc3VsdDsKLSNpZiBCT1MoREFSV0lOKQot
ICAgIHJlc3VsdCA9IHZtX3Byb3RlY3QobWFjaF90YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRfY2Fz
dDx2bV9hZGRyZXNzX3Q+KCZnX2dpZ2FjYWdlQ29uZmlnKSwgY29uZmlnU2l6ZVRvUHJvdGVjdCwg
RGlzYWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcywgVk1fUFJPVF9SRUFEKTsKLSNlbHNl
Ci0gICAgcmVzdWx0ID0gbXByb3RlY3QoJmdfZ2lnYWNhZ2VDb25maWcsIGNvbmZpZ1NpemVUb1By
b3RlY3QsIFBST1RfUkVBRCk7Ci0jZW5kaWYKLSAgICBSRUxFQVNFX0JBU1NFUlQoIXJlc3VsdCk7
Ci19Ci0KLWNsYXNzIFVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSB7Ci1wdWJsaWM6Ci0gICAg
VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlKCkKLSAgICB7Ci0gICAgICAgIHVuZnJlZXplR2ln
YWNhZ2VDb25maWcoKTsKLSAgICB9Ci0gICAgCi0gICAgflVuZnJlZXplR2lnYWNhZ2VDb25maWdT
Y29wZSgpCi0gICAgewotICAgICAgICBmcmVlemVHaWdhY2FnZUNvbmZpZygpOwotICAgIH0KLX07
Ci0KIHNpemVfdCBydW53YXlTaXplKEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsK
QEAgLTI0MCw3ICsxNzUsNiBAQCB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkKICAgICAgICAgICAgIGdf
Z2lnYWNhZ2VDb25maWcudG90YWxTaXplID0gdG90YWxTaXplOwogICAgICAgICAgICAgdm1EZWFs
bG9jYXRlUGh5c2ljYWxQYWdlcyhiYXNlLCB0b3RhbFNpemUpOwogICAgICAgICAgICAgZ19naWdh
Y2FnZUNvbmZpZy5pc0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgZnJlZXplR2lnYWNhZ2VD
b25maWcoKTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTI2NCw3ICsxOTgsNiBAQCB2b2lkIGRpc2Fi
bGVQcmltaXRpdmVHaWdhY2FnZSgpCiAgICAgZm9yIChDYWxsYmFjayYgY2FsbGJhY2sgOiBjYWxs
YmFja3MuY2FsbGJhY2tzKQogICAgICAgICBjYWxsYmFjay5mdW5jdGlvbihjYWxsYmFjay5hcmd1
bWVudCk7CiAgICAgY2FsbGJhY2tzLmNhbGxiYWNrcy5zaHJpbmsoMCk7Ci0gICAgVW5mcmVlemVH
aWdhY2FnZUNvbmZpZ1Njb3BlIHVuZnJlZXplU2NvcGU7CiAgICAgZ19naWdhY2FnZUNvbmZpZy5i
YXNlUHRyc1tQcmltaXRpdmVdID0gbnVsbHB0cjsKIH0KIApAQCAtMzEzLDEwICsyNDYsOCBAQCB2
b2lkIGZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCkKICAgICAgICAgJiYgKEdJR0FD
QUdFX0FMTE9DQVRJT05fQ0FOX0ZBSUwgfHwgIWdfZ2lnYWNhZ2VDb25maWcuc2hvdWxkQmVFbmFi
bGVkIHx8IHZlcmlmeUdpZ2FjYWdlSXNFbmFibGVkKCkpKTsKIAogICAgIGlmICghZ19naWdhY2Fn
ZUNvbmZpZy5kaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuKSB7Ci0gICAgICAg
IHVuZnJlZXplR2lnYWNhZ2VDb25maWcoKTsKICAgICAgICAgZ19naWdhY2FnZUNvbmZpZy5kaXNh
YmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuID0gdHJ1ZTsKICAgICB9Ci0gICAgcGVy
bWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZygpOwogICAgIFJFTEVBU0VfQkFTU0VSVChpc0Rp
c2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRm9yYmlkZGVuKCkpOwogfQogCkluZGV4OiBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9HaWdhY2FnZS5oCShyZXZpc2lvbiAyNjIzNjEpCisrKyBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0dpZ2FjYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxMSArMjUsMTEgQEAKIAog
I3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBbGdvcml0aG0uaCIKICNpbmNsdWRlICJCQXNzZXJ0
LmgiCiAjaW5jbHVkZSAiQkV4cG9ydC5oIgogI2luY2x1ZGUgIkJJbmxpbmUuaCIKICNpbmNsdWRl
ICJCUGxhdGZvcm0uaCIKKyNpbmNsdWRlICJHaWdhY2FnZUNvbmZpZy5oIgogI2luY2x1ZGUgIlNp
emVzLmgiCiAjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxpbnR0eXBlcy5oPgpAQCAtNDQs
MTIgKzQ0LDYgQEAKIAogbmFtZXNwYWNlIEdpZ2FjYWdlIHsKIAotZW51bSBLaW5kIHsKLSAgICBQ
cmltaXRpdmUsCi0gICAgSlNWYWx1ZSwKLSAgICBOdW1iZXJPZktpbmRzCi19OwotCiBCSU5MSU5F
IGNvbnN0IGNoYXIqIG5hbWUoS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewpAQCAt
NjYsOCArNjAsNiBAQCBCSU5MSU5FIGNvbnN0IGNoYXIqIG5hbWUoS2luZCBraW5kKQogCiAjaWYg
R0lHQUNBR0VfRU5BQkxFRAogCi1jb25zdGV4cHIgc2l6ZV90IGNvbmZpZ1NpemVUb1Byb3RlY3Qg
PSAxNiAqIGJtYWxsb2M6OlNpemVzOjprQjsKLQogI2lmIEJPU19FRkZFQ1RJVkVfQUREUkVTU19X
SURUSCA8IDQ4CiBjb25zdGV4cHIgc2l6ZV90IHByaW1pdGl2ZUdpZ2FjYWdlU2l6ZSA9IDIgKiBi
bWFsbG9jOjpTaXplczo6R0I7CiBjb25zdGV4cHIgc2l6ZV90IGpzVmFsdWVHaWdhY2FnZVNpemUg
PSAyICogYm1hbGxvYzo6U2l6ZXM6OkdCOwpAQCAtOTcsNDcgKzg5LDYgQEAgY29uc3RleHByIHNp
emVfdCBnaWdhY2FnZVNpemVUb01hc2soc2l6ZQogY29uc3RleHByIHNpemVfdCBwcmltaXRpdmVH
aWdhY2FnZU1hc2sgPSBnaWdhY2FnZVNpemVUb01hc2socHJpbWl0aXZlR2lnYWNhZ2VTaXplKTsK
IGNvbnN0ZXhwciBzaXplX3QganNWYWx1ZUdpZ2FjYWdlTWFzayA9IGdpZ2FjYWdlU2l6ZVRvTWFz
ayhqc1ZhbHVlR2lnYWNhZ2VTaXplKTsKIAotc3RydWN0IENvbmZpZyB7Ci0gICAgdm9pZCogYmFz
ZVB0cihLaW5kIGtpbmQpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0JBU1NFUlQoa2lu
ZCA8IE51bWJlck9mS2luZHMpOwotICAgICAgICByZXR1cm4gYmFzZVB0cnNba2luZF07Ci0gICAg
fQotCi0gICAgdm9pZCBzZXRCYXNlUHRyKEtpbmQga2luZCwgdm9pZCogcHRyKQotICAgIHsKLSAg
ICAgICAgUkVMRUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRzKTsKLSAgICAgICAgYmFz
ZVB0cnNba2luZF0gPSBwdHI7Ci0gICAgfQotCi0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3Qg
ewotICAgICAgICAgICAgLy8gQWxsIHRoZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3Qgc2hvdWxkIGJl
IGNob3NlbiBzdWNoIHRoYXQgdGhlaXIKLSAgICAgICAgICAgIC8vIGluaXRpYWwgdmFsdWUgaXMg
MCAvIG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKLSAgICAgICAg
ICAgIC8vIGFzIGEgZ2xvYmFsIHNpbmdsZXRvbi4KLQotICAgICAgICAgICAgYm9vbCBpc0VuYWJs
ZWQ7Ci0gICAgICAgICAgICBib29sIGlzUGVybWFuZW50bHlGcm96ZW47Ci0gICAgICAgICAgICBi
b29sIGRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW47Ci0gICAgICAgICAgICBi
b29sIHNob3VsZEJlRW5hYmxlZDsKLQotICAgICAgICAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBq
dXN0IHB1dCB0aGUgc3RkOjpvbmNlX2ZsYWcgZm9yIHRoZXNlIGZ1bmN0aW9ucwotICAgICAgICAg
ICAgLy8gaGVyZSwgYnV0IHdlIGNhbid0IGJlY2F1c2Ugc3RkOjpvbmNlX2ZsYWcgaGFzIGEgaW1w
bGljaXRseS1kZWxldGVkCi0gICAgICAgICAgICAvLyBkZWZhdWx0IGNvbnN0cnVjdG9yLiBTbywg
d2UgdXNlIGEgYm9vbGVhbiBpbnN0ZWFkLgotICAgICAgICAgICAgYm9vbCBzaG91bGRCZUVuYWJs
ZWRIYXNCZWVuQ2FsbGVkOwotICAgICAgICAgICAgYm9vbCBlbnN1cmVHaWdhY2FnZUhhc0JlZW5D
YWxsZWQ7Ci0KLSAgICAgICAgICAgIHZvaWQqIHN0YXJ0OwotICAgICAgICAgICAgc2l6ZV90IHRv
dGFsU2l6ZTsKLSAgICAgICAgICAgIHZvaWQqIGJhc2VQdHJzW051bWJlck9mS2luZHNdOwotICAg
ICAgICB9OwotICAgICAgICBjaGFyIGVuc3VyZVNpemVbY29uZmlnU2l6ZVRvUHJvdGVjdF07Ci0g
ICAgfTsKLX07Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihDb25maWcpID09IGNvbmZpZ1NpemVUb1By
b3RlY3QsICJHaWdhY2FnZSBDb25maWcgbXVzdCBmaXQgaW4gY29uZmlnU2l6ZVRvUHJvdGVjdCIp
OwotCi1leHRlcm4gIkMiIGFsaWduYXMoY29uZmlnU2l6ZVRvUHJvdGVjdCkgQkVYUE9SVCBDb25m
aWcgZ19naWdhY2FnZUNvbmZpZzsKLQogLy8gVGhlc2UgY29uc3RhbnRzIGFyZSBuZWVkZWQgYnkg
dGhlIExMSW50LgogY29uc3RleHByIHB0cmRpZmZfdCBvZmZzZXRPZlByaW1pdGl2ZUdpZ2FjYWdl
QmFzZVB0ciA9IEtpbmQ6OlByaW1pdGl2ZSAqIHNpemVvZih2b2lkKik7CiBjb25zdGV4cHIgcHRy
ZGlmZl90IG9mZnNldE9mSlNWYWx1ZUdpZ2FjYWdlQmFzZVB0ciA9IEtpbmQ6OkpTVmFsdWUgKiBz
aXplb2Yodm9pZCopOwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZUNvbmZp
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2VDb25maWcu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlQ29uZmln
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWxnb3Jp
dGhtLmgiCisjaW5jbHVkZSAiR2lnYWNhZ2VLaW5kLmgiCisjaW5jbHVkZSAiU3RkTGliRXh0cmFz
LmgiCisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvbmZpZyB7CisKK3Vz
aW5nIFNsb3QgPSB1aW50NjRfdDsKK2V4dGVybiAiQyIgU2xvdCBnX2NvbmZpZ1tdOworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb25maWcKKworbmFtZXNwYWNlIEdpZ2FjYWdlIHsKKworc3RydWN0IENv
bmZpZyB7CisgICAgdm9pZCogYmFzZVB0cihLaW5kIGtpbmQpIGNvbnN0CisgICAgeworICAgICAg
ICBSRUxFQVNFX0JBU1NFUlQoa2luZCA8IE51bWJlck9mS2luZHMpOworICAgICAgICByZXR1cm4g
YmFzZVB0cnNba2luZF07CisgICAgfQorCisgICAgdm9pZCBzZXRCYXNlUHRyKEtpbmQga2luZCwg
dm9pZCogcHRyKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJP
ZktpbmRzKTsKKyAgICAgICAgYmFzZVB0cnNba2luZF0gPSBwdHI7CisgICAgfQorCisgICAgLy8g
QWxsIHRoZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3Qgc2hvdWxkIGJlIGNob3NlbiBzdWNoIHRoYXQg
dGhlaXIKKyAgICAvLyBpbml0aWFsIHZhbHVlIGlzIDAgLyBudWxsIC8gZmFsc3kgYmVjYXVzZSBD
b25maWcgaXMgaW5zdGFudGlhdGVkCisgICAgLy8gYXMgYSBnbG9iYWwgc2luZ2xldG9uLgorCisg
ICAgYm9vbCBpc1Blcm1hbmVudGx5RnJvemVuOyAvLyBXaWxsIGJlIHNldCBieSB0aGUgY2xpZW50
IGlmIHRoZSBDb25maWcgZ2V0cyBmcm96ZW4uCisgICAgYm9vbCBpc0VuYWJsZWQ7CisgICAgYm9v
bCBkaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuOworICAgIGJvb2wgc2hvdWxk
QmVFbmFibGVkOworCisgICAgLy8gV2Ugd291bGQgbGlrZSB0byBqdXN0IHB1dCB0aGUgc3RkOjpv
bmNlX2ZsYWcgZm9yIHRoZXNlIGZ1bmN0aW9ucworICAgIC8vIGhlcmUsIGJ1dCB3ZSBjYW4ndCBi
ZWNhdXNlIHN0ZDo6b25jZV9mbGFnIGhhcyBhIGltcGxpY2l0bHktZGVsZXRlZAorICAgIC8vIGRl
ZmF1bHQgY29uc3RydWN0b3IuIFNvLCB3ZSB1c2UgYSBib29sZWFuIGluc3RlYWQuCisgICAgYm9v
bCBzaG91bGRCZUVuYWJsZWRIYXNCZWVuQ2FsbGVkOworICAgIGJvb2wgZW5zdXJlR2lnYWNhZ2VI
YXNCZWVuQ2FsbGVkOworCisgICAgdm9pZCogc3RhcnQ7CisgICAgc2l6ZV90IHRvdGFsU2l6ZTsK
KyAgICB2b2lkKiBiYXNlUHRyc1tOdW1iZXJPZktpbmRzXTsKK307CisKK2NvbnN0ZXhwciBzaXpl
X3Qgc3RhcnRTbG90T2ZHaWdhY2FnZUNvbmZpZyA9IDA7Citjb25zdGV4cHIgc2l6ZV90IHN0YXJ0
T2Zmc2V0T2ZHaWdhY2FnZUNvbmZpZyA9IHN0YXJ0U2xvdE9mR2lnYWNhZ2VDb25maWcgKiBzaXpl
b2YoV2ViQ29uZmlnOjpTbG90KTsKKworY29uc3RleHByIHNpemVfdCByZXNlcnZlZFNsb3RzRm9y
R2lnYWNhZ2VDb25maWcgPSA2OworY29uc3RleHByIHNpemVfdCByZXNlcnZlZEJ5dGVzRm9yR2ln
YWNhZ2VDb25maWcgPSByZXNlcnZlZFNsb3RzRm9yR2lnYWNhZ2VDb25maWcgKiBzaXplb2YoV2Vi
Q29uZmlnOjpTbG90KTsKKworY29uc3RleHByIHNpemVfdCBhbGlnbm1lbnRPZkdpZ2FjYWdlQ29u
ZmlnID0gc3RkOjphbGlnbm1lbnRfb2Y8R2lnYWNhZ2U6OkNvbmZpZz46OnZhbHVlOworCitzdGF0
aWNfYXNzZXJ0KHNpemVvZihHaWdhY2FnZTo6Q29uZmlnKSA8PSByZXNlcnZlZEJ5dGVzRm9yR2ln
YWNhZ2VDb25maWcpOworc3RhdGljX2Fzc2VydChibWFsbG9jOjpyb3VuZFVwVG9NdWx0aXBsZU9m
PGFsaWdubWVudE9mR2lnYWNhZ2VDb25maWc+KHN0YXJ0T2Zmc2V0T2ZHaWdhY2FnZUNvbmZpZykg
PT0gc3RhcnRPZmZzZXRPZkdpZ2FjYWdlQ29uZmlnKTsKKworI2RlZmluZSBnX2dpZ2FjYWdlQ29u
ZmlnICgqYm1hbGxvYzo6Yml0d2lzZV9jYXN0PEdpZ2FjYWdlOjpDb25maWcqPigmV2ViQ29uZmln
OjpnX2NvbmZpZ1tHaWdhY2FnZTo6c3RhcnRTbG90T2ZHaWdhY2FnZUNvbmZpZ10pKQorCit9IC8v
IG5hbWVzcGFjZSBHaWdhY2FnZQpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2Fn
ZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlS2lu
ZC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2VLaW5k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgR2lnYWNh
Z2UgeworCitlbnVtIEtpbmQgeworICAgIFByaW1pdGl2ZSwKKyAgICBKU1ZhbHVlLAorICAgIE51
bWJlck9mS2luZHMKK307CisKK30gLy8gbmFtZXNwYWNlIEdpZ2FjYWdlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400713</attachid>
            <date>2020-05-31 18:29:33 -0700</date>
            <delta_ts>2020-05-31 18:37:40 -0700</delta_ts>
            <desc>work in progress for EWS testing.</desc>
            <filename>bug-212585.patch</filename>
            <type>text/plain</type>
            <size>29462</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDIwLTA1LTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29u
ZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMjU4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvSlNDQ29uZmln
Lmg6CisgICAgICAgIChKU0M6OkNvbmZpZzo6aXNQZXJtYW5lbnRseUZyb3plbik6CisKIDIwMjAt
MDUtMzEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBK
U0M6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXVEY6OkNvbmZpZyBpbnN0ZWFkIG9mIGl0cyBv
d24uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTQzMiw3ICs0MzIsNyBAQCBtYWNybyBjYWdlZFByaW1pdGl2ZShwdHIsIGxlbmd0aCwgc2NyYXRj
CiAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHB0cgogICAgIGVuZAogICAgIGlmIEdJR0FDQUdFX0VO
QUJMRUQKLSAgICAgICAgY2FnZShfZ19naWdhY2FnZUNvbmZpZyArIEdpZ2FjYWdlOjpDb25maWc6
OmJhc2VQdHJzICsgR2lnYWNhZ2VQcmltaXRpdmVCYXNlUHRyT2Zmc2V0LCBjb25zdGV4cHIgR2ln
YWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgc291cmNlLCBzY3JhdGNoKQorICAgICAgICBj
YWdlKF9nX2NvbmZpZyArIChjb25zdGV4cHIgR2lnYWNhZ2U6OnN0YXJ0T2Zmc2V0T2ZHaWdhY2Fn
ZUNvbmZpZykgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2FjYWdlUHJpbWl0aXZl
QmFzZVB0ck9mZnNldCwgY29uc3RleHByIEdpZ2FjYWdlOjpwcmltaXRpdmVHaWdhY2FnZU1hc2ss
IHNvdXJjZSwgc2NyYXRjaCkKICAgICAgICAgaWYgQVJNNjRFCiAgICAgICAgICAgICBjb25zdCBu
dW1iZXJPZlBBQ0JpdHMgPSBjb25zdGV4cHIgTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUEFDQml0
cwogICAgICAgICAgICAgYmZpcSBzY3JhdGNoMiwgMCwgNjQgLSBudW1iZXJPZlBBQ0JpdHMsIHB0
cgpAQCAtNDQ2LDcgKzQ0Niw3IEBAIGVuZAogbWFjcm8gbG9hZENhZ2VkSlNWYWx1ZShzb3VyY2Us
IGRlc3QsIHNjcmF0Y2hPckxlbmd0aCkKICAgICBsb2FkcCBzb3VyY2UsIGRlc3QKICAgICBpZiBH
SUdBQ0FHRV9FTkFCTEVECi0gICAgICAgIGNhZ2UoX2dfZ2lnYWNhZ2VDb25maWcgKyBHaWdhY2Fn
ZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2FjYWdlSlNWYWx1ZUJhc2VQdHJPZmZzZXQsIGNvbnN0
ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2FjYWdlTWFzaywgZGVzdCwgc2NyYXRjaE9yTGVuZ3Ro
KQorICAgICAgICBjYWdlKF9nX2NvbmZpZyArIChjb25zdGV4cHIgR2lnYWNhZ2U6OnN0YXJ0T2Zm
c2V0T2ZHaWdhY2FnZUNvbmZpZykgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2Fj
YWdlSlNWYWx1ZUJhc2VQdHJPZmZzZXQsIGNvbnN0ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2Fj
YWdlTWFzaywgZGVzdCwgc2NyYXRjaE9yTGVuZ3RoKQogICAgIGVuZAogZW5kCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCShyZXZpc2lvbiAyNjIzNjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgZW5hYmxlUmVz
dHJpY3RlZE9wdGlvbnMoKTsKICAgICB9CiAKLSAgICBib29sIGlzUGVybWFuZW50bHlGcm96ZW4o
KSB7IHJldHVybiBXVEY6Omdfd3RmQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW47IH0KKyAgICBi
b29sIGlzUGVybWFuZW50bHlGcm96ZW4oKSB7IHJldHVybiBnX3d0ZkNvbmZpZy5pc1Blcm1hbmVu
dGx5RnJvemVuOyB9CiAKICAgICAvLyBBbGwgdGhlIGZpZWxkcyBpbiB0aGlzIHN0cnVjdCBzaG91
bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgogICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAv
IG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKQEAgLTgyLDEyICs4
MiwxMSBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICBXVEY6OlB0clRhZ0xvb2t1cCBwdHJUYWdMb29r
dXBSZWNvcmQ7CiB9OwogCi1jb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5z
aW9uID0gb2Zmc2V0b2YoV1RGOjpDb25maWcsIHNwYWNlRm9yRXh0ZW5zaW9ucyk7CiBjb25zdGV4
cHIgc2l6ZV90IGFsaWdubWVudE9mSlNDQ29uZmlnID0gc3RkOjphbGlnbm1lbnRfb2Y8SlNDOjpD
b25maWc+Ojp2YWx1ZTsKIAotc3RhdGljX2Fzc2VydChzaXplb2YoSlNDOjpDb25maWcpIDw9IChz
aXplb2YoV1RGOjpDb25maWcpIC0gb2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24pKTsKLXN0YXRp
Y19hc3NlcnQocm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkpTQ0NvbmZpZz4ob2Zmc2V0
T2ZXVEZDb25maWdFeHRlbnNpb24pID09IG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uKTsKK3N0
YXRpY19hc3NlcnQoV1RGOjpvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbiArIHNpemVvZihKU0M6
OkNvbmZpZykgPD0gV1RGOjpDb25maWdTaXplVG9Qcm90ZWN0KTsKK3N0YXRpY19hc3NlcnQocm91
bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkpTQ0NvbmZpZz4oV1RGOjpvZmZzZXRPZldURkNv
bmZpZ0V4dGVuc2lvbikgPT0gV1RGOjpvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbik7CiAKLSNk
ZWZpbmUgZ19qc2NDb25maWcgKCpiaXR3aXNlX2Nhc3Q8Q29uZmlnKj4oJldURjo6Z193dGZDb25m
aWcuc3BhY2VGb3JFeHRlbnNpb25zKSkKKyNkZWZpbmUgZ19qc2NDb25maWcgKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmZ193dGZDb25maWcuc3BhY2VGb3JFeHRlbnNpb25zKSkKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL1dURi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0wNS0zMSAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEdpZ2FjYWdlOjpD
b25maWcgdG8gdXNlIHN0b3JhZ2UgaW4gV2ViQ29uZmlnOjpnX2NvbmZpZyBpbnN0ZWFkIG9mIGl0
cyBvd24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTI1ODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzODEyNDg3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5vdyB0aGluayBvZiB0aGUgdmFy
aW91cyBDb25maWcgcmVjb3JkcyBhcyBiZWluZyBhbGxvY2F0ZWQgZnJvbSBwYXJ0cyBvZiBhCisg
ICAgICAgIFdlYkNvbmZpZzo6Z19jb25maWcgYnVmZmVyLiAgV1RGOjpDb25maWcgd2lsbCBtYW5h
Z2UgdGhlIG1lY2hhbmljcyBvZiBmcmVlemluZworICAgICAgICB0aGF0IGJ1ZmZlci4gIEFuZCB0
aGUgSlNDIFZNIGlzIHN0aWxsIHRoZSBkZXRlcm1pbmVyIG9mIGlmL3doZW4gdG8gZnJlZXplIHRo
ZQorICAgICAgICBidWZmZXIsIGFuZCBpdCB3aWxsIGRvIHRoaXMgYXQgdGhlIGVuZCBvZiB0aGUg
Y29uc3RydWN0aW9uIG9mIHRoZSB2ZXJ5IGZpcnN0CisgICAgICAgIFZNIGluc3RhbmNlIChhcyBi
ZWZvcmUpLgorCisgICAgICAgIEdpZ2FjYWdlOjpDb25maWcgcmVzZXJ2ZXMgc3BhY2UgaW4gV2Vi
Q29uZmlnOjpnX2NvbmZpZy4KKyAgICAgICAgV1RGOjpDb25maWcgd2lsbCBob25vciB0aGF0IHJl
c2VydmF0aW9uIGFuZCBwbGFjZSBpdHNlbGYgYWZ0ZXIgdGhhdC4KKyAgICAgICAgSlNDOjpDb25m
aWcgd2lsbCBjb250aW51ZSB0byBwbGFjZSBpdHNlbGYgYXQgV1RGOjpDb25maWc6OnNwYWNlRm9y
RXh0ZW5zaW9ucy4KKworICAgICAgICBUaGUgdXBzaWRlIG9mIHRoaXMgYXBwcm9hY2ggdGhpcyBp
cyB0aGF0IHdlIGNhbiBub3cgc2hhcmUgdGhlIHNhbWUgbWVtb3J5IHBhZ2UKKyAgICAgICAgZm9y
IGFsbCB0aGUgQ29uZmlncywgYW5kIGNhbiBmcmVlemUgdGhlbSBpbiBvbmUgZ28uCisKKyAgICAg
ICAgVGhlIGRvd25zaWRlIGlzIHRoYXQgZ19naWdhY2FnZUNvbmZpZywgZ193dGZDb25maWcsIGFu
ZCBnX2pzY0NvbmZpZyBub3cgaGF2ZSB0bworICAgICAgICBiZSBtYWNyb3MuICBUaGlzIHJlc3Vs
dHMgaW4gc29tZSB3ZWlyZG5lc3MgZS5nLiB0aGV5IGFyZSBubyBsb25nZXIgcXVhbGlmaWVkIGJ5
CisgICAgICAgIG5hbWVzcGFjZXM6IHJlZmVycmluZyB0byBXVEY6Omdfd3RmQ29uZmlnIGlzIG5v
dyBpbmNvcnJlY3QuCisKKyAgICAgICAgKiB3dGYvV1RGQ29uZmlnLmNwcDoKKyAgICAgICAgKFdU
Rjo6Q29uZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSk6CisgICAgICAgICogd3RmL1dURkNvbmZpZy5o
OgorICAgICAgICAoKTogRGVsZXRlZC4KKwogMjAyMC0wNS0zMSAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIEpTQzo6Q29uZmlnIHRvIHVzZSBzdG9yYWdl
IGluIFdURjo6Q29uZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1dURkNvbmZpZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmNw
cAkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgPHd0Zi9XVEZDb25maWcuaD4KIAorI2luY2x1ZGUgPHd0Zi9HaWdhY2FnZS5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNSw5
ICszNiwxMyBAQAogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiAjZW5kaWYKIAotbmFtZXNwYWNlIFdU
RiB7CituYW1lc3BhY2UgV2ViQ29uZmlnIHsKKworYWxpZ25hcyhXVEY6OkNvbmZpZ1NpemVUb1By
b3RlY3QpIFdURl9FWFBPUlRfUFJJVkFURSBTbG90IGdfY29uZmlnW1dURjo6Q29uZmlnU2l6ZVRv
UHJvdGVjdCAvIHNpemVvZihTbG90KV07CiAKLWFsaWduYXMoQ29uZmlnU2l6ZVRvUHJvdGVjdCkg
V1RGX0VYUE9SVF9QUklWQVRFIENvbmZpZyBnX3d0ZkNvbmZpZzsKK30gLy8gbmFtZXNwYWNlIFdl
YkNvbmZpZworCituYW1lc3BhY2UgV1RGIHsKIAogdm9pZCBDb25maWc6OnBlcm1hbmVudGx5RnJl
ZXplKCkKIHsKQEAgLTQ2LDggKzUxLDEyIEBAIHZvaWQgQ29uZmlnOjpwZXJtYW5lbnRseUZyZWV6
ZSgpCiAKICAgICBSRUxFQVNFX0FTU0VSVChyb3VuZFVwVG9NdWx0aXBsZU9mKHBhZ2VTaXplKCks
IENvbmZpZ1NpemVUb1Byb3RlY3QpID09IENvbmZpZ1NpemVUb1Byb3RlY3QpOwogCi0gICAgaWYg
KCFnX3d0ZkNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuKQorICAgIGlmICghZ193dGZDb25maWcu
aXNQZXJtYW5lbnRseUZyb3plbikgewogICAgICAgICBnX3d0ZkNvbmZpZy5pc1Blcm1hbmVudGx5
RnJvemVuID0gdHJ1ZTsKKyNpZiBHSUdBQ0FHRV9FTkFCTEVECisgICAgICAgIGdfZ2lnYWNhZ2VD
b25maWcuaXNQZXJtYW5lbnRseUZyb3plbiA9IHRydWU7CisjZW5kaWYKKyAgICB9CiAKICAgICBp
bnQgcmVzdWx0ID0gMDsKICNpZiBPUyhEQVJXSU4pCkBAIC01Nyw5ICs2Niw5IEBAIHZvaWQgQ29u
ZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSgpCiAgICAgfTsKIAogICAgIC8vIFRoZXJlJ3Mgbm8gZ29p
bmcgYmFjayBub3chCi0gICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tfc2VsZigpLCBy
ZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfd3RmQ29uZmlnKSwgQ29uZmlnU2l6ZVRv
UHJvdGVjdCwgRGlzYWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcywgVk1fUFJPVF9SRUFE
KTsKKyAgICByZXN1bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8dm1fYWRkcmVzc190PigmV2ViQ29uZmlnOjpnX2NvbmZpZyksIENvbmZpZ1NpemVUb1By
b3RlY3QsIERpc2FsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMsIFZNX1BST1RfUkVBRCk7
CiAjZWxpZiBPUyhMSU5VWCkKLSAgICByZXN1bHQgPSBtcHJvdGVjdCgmZ193dGZDb25maWcsIENv
bmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7CisgICAgcmVzdWx0ID0gbXByb3RlY3QoJldl
YkNvbmZpZzo6Z19jb25maWcsIENvbmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7CiAjZWxp
ZiBPUyhXSU5ET1dTKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXF1aXZhbGVudCwgbWF5YmUg
d2l0aCBWaXJ0dWFsUHJvdGVjdC4KICAgICAvLyBBbHNvIG5lZWQgdG8gZml4IFdlYktpdFRlc3RS
dW5uZXIuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9XVEZDb25maWcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9XVEZDb25maWcuaAkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL1dU
Ri93dGYvV1RGQ29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDIyIEBACiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMu
aD4KIAorI2lmIGRlZmluZWQoVVNFX1NZU1RFTV9NQUxMT0MpICYmIFVTRV9TWVNURU1fTUFMTE9D
CituYW1lc3BhY2UgR2lnYWNhZ2UgeworY29uc3RleHByIHNpemVfdCByZXNlcnZlZFNsb3RzRm9y
R2lnYWNhZ2VDb25maWcgPSAwOworY29uc3RleHByIHNpemVfdCByZXNlcnZlZEJ5dGVzRm9yR2ln
YWNhZ2VDb25maWcgPSAwOworfQorI2Vsc2UKKyNpbmNsdWRlIDxibWFsbG9jL0dpZ2FjYWdlQ29u
ZmlnLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvbmZpZyB7CisKK3VzaW5nIFNsb3QgPSB1
aW50NjRfdDsKK2V4dGVybiAiQyIgV1RGX0VYUE9SVF9QUklWQVRFIFNsb3QgZ19jb25maWdbXTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29uZmlnCisKIG5hbWVzcGFjZSBXVEYgewogCiBjb25zdGV4
cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSBDZWlsaW5nT25QYWdlU2l6ZTsKQEAgLTQ1
LDI4ICs2MSwzMSBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgfkFzc2VydE5vdEZyb3plblNj
b3BlKCk7CiAgICAgfTsKIAotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAg
ICAgIC8vIEFsbCB0aGUgZmllbGRzIGluIHRoaXMgc3RydWN0IHNob3VsZCBiZSBjaG9zZW4gc3Vj
aCB0aGF0IHRoZWlyCi0gICAgICAgICAgICAvLyBpbml0aWFsIHZhbHVlIGlzIDAgLyBudWxsIC8g
ZmFsc3kgYmVjYXVzZSBDb25maWcgaXMgaW5zdGFudGlhdGVkCi0gICAgICAgICAgICAvLyBhcyBh
IGdsb2JhbCBzaW5nbGV0b24uCisgICAgLy8gQWxsIHRoZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3Qg
c2hvdWxkIGJlIGNob3NlbiBzdWNoIHRoYXQgdGhlaXIKKyAgICAvLyBpbml0aWFsIHZhbHVlIGlz
IDAgLyBudWxsIC8gZmFsc3kgYmVjYXVzZSBDb25maWcgaXMgaW5zdGFudGlhdGVkCisgICAgLy8g
YXMgYSBnbG9iYWwgc2luZ2xldG9uLgogCi0gICAgICAgICAgICBib29sIGlzUGVybWFuZW50bHlG
cm96ZW47CisgICAgYm9vbCBpc1Blcm1hbmVudGx5RnJvemVuOwogCiAjaWYgVVNFKFBUSFJFQURT
KSAmJiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKLSAgICAgICAgICAgIFNpZ25hbEhhbmRsZXJzIHNp
Z25hbEhhbmRsZXJzOworICAgIFNpZ25hbEhhbmRsZXJzIHNpZ25hbEhhbmRsZXJzOwogI2VuZGlm
Ci0gICAgICAgICAgICBQdHJUYWdMb29rdXAqIHB0clRhZ0xvb2t1cEhlYWQ7CisgICAgUHRyVGFn
TG9va3VwKiBwdHJUYWdMb29rdXBIZWFkOwogCi0gICAgICAgICAgICB1aW50NjRfdCBzcGFjZUZv
ckV4dGVuc2lvbnNbMV07Ci0gICAgICAgIH07Ci0gICAgICAgIGNoYXIgZW5zdXJlU2l6ZVtDb25m
aWdTaXplVG9Qcm90ZWN0XTsKLSAgICB9OworICAgIHVpbnQ2NF90IHNwYWNlRm9yRXh0ZW5zaW9u
c1sxXTsKIH07CiAKLWV4dGVybiAiQyIgYWxpZ25hcyhDb25maWdTaXplVG9Qcm90ZWN0KSBXVEZf
RVhQT1JUX1BSSVZBVEUgQ29uZmlnIGdfd3RmQ29uZmlnOworY29uc3RleHByIHNpemVfdCBzdGFy
dFNsb3RPZldURkNvbmZpZyA9IEdpZ2FjYWdlOjpyZXNlcnZlZFNsb3RzRm9yR2lnYWNhZ2VDb25m
aWc7Citjb25zdGV4cHIgc2l6ZV90IHN0YXJ0T2Zmc2V0T2ZXVEZDb25maWcgPSBzdGFydFNsb3RP
ZldURkNvbmZpZyAqIHNpemVvZihXZWJDb25maWc6OlNsb3QpOworCitjb25zdGV4cHIgc2l6ZV90
IG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uID0gc3RhcnRPZmZzZXRPZldURkNvbmZpZyArIG9m
ZnNldG9mKFdURjo6Q29uZmlnLCBzcGFjZUZvckV4dGVuc2lvbnMpOworCitjb25zdGV4cHIgc2l6
ZV90IGFsaWdubWVudE9mV1RGQ29uZmlnID0gc3RkOjphbGlnbm1lbnRfb2Y8V1RGOjpDb25maWc+
Ojp2YWx1ZTsKKworc3RhdGljX2Fzc2VydChHaWdhY2FnZTo6cmVzZXJ2ZWRCeXRlc0ZvckdpZ2Fj
YWdlQ29uZmlnICsgc2l6ZW9mKFdURjo6Q29uZmlnKSA8PSBDb25maWdTaXplVG9Qcm90ZWN0KTsK
K3N0YXRpY19hc3NlcnQocm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZldURkNvbmZpZz4o
c3RhcnRPZmZzZXRPZldURkNvbmZpZykgPT0gc3RhcnRPZmZzZXRPZldURkNvbmZpZyk7CiAKLXN0
YXRpY19hc3NlcnQoc2l6ZW9mKENvbmZpZykgPT0gQ29uZmlnU2l6ZVRvUHJvdGVjdCk7CisjZGVm
aW5lIGdfd3RmQ29uZmlnICgqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKQogCiBBTFdBWVNfSU5MSU5FIENv
bmZpZzo6QXNzZXJ0Tm90RnJvemVuU2NvcGU6OkFzc2VydE5vdEZyb3plblNjb3BlKCkKIHsKSW5k
ZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxv
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjM2NSkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA1LTMxICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0
byB1c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29uZmlnIGluc3RlYWQgb2YgaXRzIG93bi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjU4NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gR2lnYWNhZ2U6OkNvbmZpZyBub3cgcmVzZXJ2
ZXMgYW5kIGV4cGVjdCBzcGFjZSB0byBiZSBhdmFpbGFibGUgaW4gYW4gZXh0ZXJuYWwKKyAgICAg
ICAgICAgV2ViQ29uZmlnOjpnX2NvbmZpZyBidWZmZXIuICBHaWdhY2FnZSBkb2VzIG5vdCBhbGxv
Y2F0ZSB0aGF0IGJ1ZmZlci4KKworICAgICAgICAyLiBNb3ZlZCBHaWdhY2FnZTo6Q29uZmlnIHRv
IEdpZ2FjYWdlQ29uZmlnLmguCisgICAgICAgICAgIFRoaXMgYWxsb3dzIFdURkNvbmZpZy5oIHRv
IGluY2x1ZGUgR2lnYWNhZ2VDb25maWcuaCBpbnN0ZWFkIG9mIGFsbCBvZiBHaWdhY2FnZS5oLgor
CisgICAgICAgIDMuIE1vdmVkIEdpZ2FjYWdlOjpLaW5kIHRvIEdpZ2FjYWdlS2luZC5oLgorICAg
ICAgICAgICBPdGhlcndpc2UsIEdpZ2FjYWdlOjpLaW5kIHdvdWxkIG5lZWQgdG8gbW92ZSB0byBH
aWdhY2FnZUNvbmZpZy5oIHdoaWNoIGlzIGEKKyAgICAgICAgICAgd2VpcmQgcGxhY2UgdG8gcHV0
IGl0LgorCisgICAgICAgIDQuIFJlbW92ZWQgZnJlZXplR2lnYWNhZ2VDb25maWcoKSwgdW5mcmVl
emVHaWdhY2FnZUNvbmZpZygpLCBhbmQKKyAgICAgICAgICAgcGVybWFuZW50bHlGcmVlemVHaWdh
Y2FnZUNvbmZpZygpLgorCisgICAgICAgICAgIEl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSB0byB0
ZW1wb3JhcmlseSBmcmVlemUgYW5kIHVuZnJlZXplIHRoZSBHaWdhY2FnZTo6Q29uZmlnCisgICAg
ICAgICAgIGJlY2F1c2UgaXQgbm93IHNoYXJlIHRoZSBzYW1lIG1lbW9yeSBwYWdlIHdpdGggaGln
aGVyIGxldmVsIENvbmZpZ3MuCisKKyAgICAgICAgICAgcGVybWFuZW50bHlGcmVlemVHaWdhY2Fn
ZUNvbmZpZygpIGlzIG5vIGxvbmdlciBuZWVkZWQgYmVjYXVzZSBpdCBpcyBzdWJzdW1lZAorICAg
ICAgICAgICBieSBXVEY6OkNvbmZpZzo6cGVybWFuZW50bHlGcmVlemUoKSwgd2hpY2ggd2lsbCBm
cmVlemUgdGhlIGVudGlyZSBXZWJDb25maWc6OmdfY29uZmlnCisgICAgICAgICAgIGJ1ZmZlci4K
KworICAgICAgICAgICBPbmUgZGlmZmVyZW5jZSBpbiBiZWhhdmlvciBoZXJlIGlzIHRoYXQgR2ln
YWNhZ2U6OkNvbmZpZyBkYXRhIHVzZWQgdG8gYmUgcGVybWFuZW50bHkKKyAgICAgICAgICAgZnJv
emVuIGFzIHNvb24gYXMgZm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKSBpcyBjYWxs
ZWQuICBOb3csIGl0IGlzbid0CisgICAgICAgICAgIHBlcm1hbmVudGx5IGZyb3plbiB1bnRpbCB0
aGUgZW5kIG9mIHRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlIGZpcnN0IEpTQzo6Vk0gaW5zdGFuY2UK
KyAgICAgICAgICAgaW4gdGhlIHByb2Nlc3MgKGp1c3QgbGlrZSB0aGUgb3RoZXIgQ29uZmlnIHJl
Y29yZHMpLiAgVGhpcyBzdGlsbCBndWFyYW50ZWVzIHRoYXQKKyAgICAgICAgICAgaXQgaXMgZnJv
emVuIGJlZm9yZSBhbnkgSlMgc2NyaXB0IGNhbiBydW4uCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYm1hbGxvYy9HaWdhY2FnZS5jcHA6CisgICAgICAgIChHaWdhY2FnZTo6ZW5zdXJlR2ln
YWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSk6Cisg
ICAgICAgIChHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UpOgorICAg
ICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKTogRGVsZXRlZC4K
KyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjp1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKTogRGVs
ZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpwZXJtYW5lbnRseUZyZWV6ZUdpZ2Fj
YWdlQ29uZmlnKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpVbmZyZWV6
ZUdpZ2FjYWdlQ29uZmlnU2NvcGU6OlVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSk6IERlbGV0
ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Nj
b3BlOjp+VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
bWFsbG9jL0dpZ2FjYWdlLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNh
Z2U6OkNvbmZpZzo6YmFzZVB0ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6
Q29uZmlnOjpzZXRCYXNlUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdl
Q29uZmlnLmg6IEFkZGVkLgorICAgICAgICAoR2lnYWNhZ2U6OkNvbmZpZzo6YmFzZVB0ciBjb25z
dCk6CisgICAgICAgIChHaWdhY2FnZTo6Q29uZmlnOjpzZXRCYXNlUHRyKToKKyAgICAgICAgKiBi
bWFsbG9jL0dpZ2FjYWdlS2luZC5oOiBBZGRlZC4KKwogMjAyMC0wNS0yMyAgQ2FpbyBMaW1hICA8
dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW2JtYWxsb2NdIEZpeCBPT00gZXJyb3Jz
IG9uIE1JUFMgYWZ0ZXIgcjI2MTY2NwpJbmRleDogU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDI2MjM2MSkKKysrIFNvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC02OSw2ICs2OSw4IEBAIHNldChibWFsbG9jX1BVQkxJQ19IRUFERVJTCiAgICAgYm1hbGxv
Yy9GcmVlTGlzdC5oCiAgICAgYm1hbGxvYy9GcmVlTGlzdElubGluZXMuaAogICAgIGJtYWxsb2Mv
R2lnYWNhZ2UuaAorICAgIGJtYWxsb2MvR2lnYWNhZ2VDb25maWcuaAorICAgIGJtYWxsb2MvR2ln
YWNhZ2VLaW5kLmgKICAgICBibWFsbG9jL0hlYXAuaAogICAgIGJtYWxsb2MvSGVhcENvbnN0YW50
cy5oCiAgICAgYm1hbGxvYy9IZWFwS2luZC5oCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjIzNjEpCisrKyBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MSw2ICsxNTEsOCBAQAogCQlFQjE3RDExMTIzQkZDRDQyMDAyMDkzQTcgLyog
SGVhcENvbnN0YW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFQjE3RDExMDIzQkZDOEM0MDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5jcHAgKi87
IH07CiAJCUVCMTdEMTEyMjNCRkNEN0EwMDIwOTNBNyAvKiBIZWFwQ29uc3RhbnRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjE3RDEwRTIzQkU2OTFE
MDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUZFNDhCRDNCMjMyMUU4RDcwMEYxMzZEMCAvKiBGYWlsdXJl
QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTQ4QkQzQTIzMjFFOENDMDBGMTM2RDAgLyogRmFpbHVyZUFjdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFQzNBMzkzMjQ4NDZBODEwMDM5
NUI1NCAvKiBHaWdhY2FnZUNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkVDM0EzOTIyNDg0NkE2RDAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29uZmln
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVD
M0EzOTUyNDg0NzFGRTAwMzk1QjU0IC8qIEdpZ2FjYWdlS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDM0EzOTQyNDg0NzFGRTAwMzk1QjU0IC8q
IEdpZ2FjYWdlS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTMwNyw2ICszMDksOCBAQAogCQlFQjE3RDEw
RTIzQkU2OTFEMDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBIZWFwQ29uc3RhbnRzLmg7IHBhdGggPSBibWFsbG9jL0hlYXBDb25zdGFu
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUIxN0QxMTAyM0JGQzhDNDAwMjA5
M0E3IC8qIEhlYXBDb25zdGFudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gSGVhcENvbnN0YW50cy5jcHA7IHBhdGggPSBibWFsbG9jL0hlYXBDb25zdGFudHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTQ4QkQzQTIzMjFFOENDMDBGMTM2RDAg
LyogRmFpbHVyZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGYWls
dXJlQWN0aW9uLmg7IHBhdGggPSBibWFsbG9jL0ZhaWx1cmVBY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkVDM0EzOTIyNDg0NkE2RDAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29u
ZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdpZ2FjYWdlQ29uZmlnLmg7
IHBhdGggPSBibWFsbG9jL0dpZ2FjYWdlQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFQzNBMzk0MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR2lnYWNhZ2VLaW5kLmg7IHBhdGggPSBibWFsbG9j
L0dpZ2FjYWdlS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCkBAIC00ODYsNiArNDkwLDggQEAKIAkJCQlGRTQ4QkQzQTIzMjFFOENDMDBG
MTM2RDAgLyogRmFpbHVyZUFjdGlvbi5oICovLAogCQkJCTBGNUJGMTRFMUYyMkRFQUYwMDI5RDkx
RCAvKiBHaWdhY2FnZS5jcHAgKi8sCiAJCQkJMEY1QkYxNEMxRjIyQjBDMzAwMjlEOTFEIC8qIEdp
Z2FjYWdlLmggKi8sCisJCQkJRkVDM0EzOTIyNDg0NkE2RDAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29u
ZmlnLmggKi8sCisJCQkJRkVDM0EzOTQyNDg0NzFGRTAwMzk1QjU0IC8qIEdpZ2FjYWdlS2luZC5o
ICovLAogCQkJCTE0REEzMjBFMTg4NzVEOUYwMDcyNjlFMCAvKiBIZWFwLmNwcCAqLywKIAkJCQkx
NERBMzIwQzE4ODc1QjA5MDA3MjY5RTAgLyogSGVhcC5oICovLAogCQkJCUVCMTdEMTEwMjNCRkM4
QzQwMDIwOTNBNyAvKiBIZWFwQ29uc3RhbnRzLmNwcCAqLywKQEAgLTYwNiw2ICs2MTIsNyBAQAog
CQkJCUZFNDhCRDNCMjMyMUU4RDcwMEYxMzZEMCAvKiBGYWlsdXJlQWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNERENzhDODE4RjQ4RDc1MDA5NTA3MDIgLyogRml4ZWRWZWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGN0VCODQ0MUY5NTQxQjAwMEYxQUJDQiAvKiBGcmVlTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkVDM0EzOTMyNDg0NkE4MTAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29u
ZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdFQjgyOTFGOTU0MUIwMDBGMUFCQ0IgLyogRnJl
ZUxpc3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVCRjE0RDFGMjJCMEMzMDAyOUQ5
MUQgLyogR2lnYWNhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MDAyNzQ5MThGODlDMTMwMDEx
NUM5NyAvKiBIZWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTY1NCw2ICs2NjEsNyBAQAogCQkJCUUz
NzhBOUUwMjQ2QjY4NzUwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzMjhEODREMjNDRUIzODkwMDU0NUIxOCAvKiBQYWNrZWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNUJGMTQ5MUYyMkE4RDgwMDI5RDkxRCAvKiBQZXJIZWFwS2luZC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkVDM0EzOTUyNDg0NzFGRTAwMzk1QjU0IC8qIEdpZ2FjYWdlS2luZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4Q0IxOEY0OEQ3NTAwOTUwNzAyIC8qIFBlclByb2Nlc3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OENDMThGNDhENzUwMDk1MDcwMiAvKiBQZXJUaHJl
YWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5NUFCM0M3MjA2RTBEMzQwMDc0RkU3NiAvKiBQaHlz
aWNhbFBhZ2VNYXAuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9HaWdhY2FnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdh
Y2FnZS5jcHAJKHJldmlzaW9uIDI2MjM2MSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2ln
YWNhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBDYWxsYmFj
ayB7CiAgICAgdm9pZCogYXJndW1lbnQgeyBudWxscHRyIH07CiB9OwogCi19Cit9IC8vIG5hbWVz
cGFjZSBHaWdhY2FnZQogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKQEAgLTc5LDc1ICs3OSwxMCBA
QCBuYW1lc3BhY2UgR2lnYWNhZ2UgewogLy8gSWYgdGhpcyB3ZXJlIGxlc3MgdGhhbiAzMkdCLCB0
aG9zZSBPT0IgYWNjZXNzZXMgY291bGQgcmVhY2ggb3V0c2lkZSBvZiB0aGUgY2FnZS4KIGNvbnN0
ZXhwciBzaXplX3QgZ2lnYWNhZ2VSdW53YXkgPSAzMmxsdSAqIGJtYWxsb2M6OlNpemVzOjpHQjsK
IAotYWxpZ25hcyhjb25maWdTaXplVG9Qcm90ZWN0KSBDb25maWcgZ19naWdhY2FnZUNvbmZpZzsK
LQogdXNpbmcgbmFtZXNwYWNlIGJtYWxsb2M7CiAKIG5hbWVzcGFjZSB7CiAKLSNpZiBCT1MoREFS
V0lOKQotZW51bSB7Ci0gICAgQWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcyA9IGZhbHNl
LAotICAgIERpc2FsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMgPSB0cnVlCi19OwotI2Vu
ZGlmCi0KLXN0YXRpYyB2b2lkIGZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCkKLXsKLSAgICBpbnQgcmVz
dWx0OwotI2lmIEJPUyhEQVJXSU4pCi0gICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tf
c2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfZ2lnYWNhZ2VDb25maWcp
LCBjb25maWdTaXplVG9Qcm90ZWN0LCBBbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzLCBW
TV9QUk9UX1JFQUQpOwotI2Vsc2UKLSAgICByZXN1bHQgPSBtcHJvdGVjdCgmZ19naWdhY2FnZUNv
bmZpZywgY29uZmlnU2l6ZVRvUHJvdGVjdCwgUFJPVF9SRUFEKTsKLSNlbmRpZgotICAgIFJFTEVB
U0VfQkFTU0VSVCghcmVzdWx0KTsKLX0KLQotc3RhdGljIHZvaWQgdW5mcmVlemVHaWdhY2FnZUNv
bmZpZygpCi17Ci0gICAgUkVMRUFTRV9CQVNTRVJUKCFnX2dpZ2FjYWdlQ29uZmlnLmlzUGVybWFu
ZW50bHlGcm96ZW4pOwotICAgIGludCByZXN1bHQ7Ci0jaWYgQk9TKERBUldJTikKLSAgICByZXN1
bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRk
cmVzc190PigmZ19naWdhY2FnZUNvbmZpZyksIGNvbmZpZ1NpemVUb1Byb3RlY3QsIEFsbG93UGVy
bWlzc2lvbkNoYW5nZXNBZnRlclRoaXMsIFZNX1BST1RfUkVBRCB8IFZNX1BST1RfV1JJVEUpOwot
I2Vsc2UKLSAgICByZXN1bHQgPSBtcHJvdGVjdCgmZ19naWdhY2FnZUNvbmZpZywgY29uZmlnU2l6
ZVRvUHJvdGVjdCwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7Ci0jZW5kaWYKLSAgICBSRUxFQVNF
X0JBU1NFUlQoIXJlc3VsdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHBlcm1hbmVudGx5RnJlZXplR2ln
YWNhZ2VDb25maWcoKQotewotICAgIHN0YXRpYyBNdXRleCBjb25maWdMb2NrOwotICAgIExvY2tI
b2xkZXIgbG9ja2luZyhjb25maWdMb2NrKTsKLQotICAgIGlmICghZ19naWdhY2FnZUNvbmZpZy5p
c1Blcm1hbmVudGx5RnJvemVuKSB7Ci0gICAgICAgIHVuZnJlZXplR2lnYWNhZ2VDb25maWcoKTsK
LSAgICAgICAgZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuID0gdHJ1ZTsKLSAg
ICB9Ci0KLSAgICAvLyBUaGVyZSdzIG5vIGdvaW5nIGJhY2sgbm93IQotICAgIGludCByZXN1bHQ7
Ci0jaWYgQk9TKERBUldJTikKLSAgICByZXN1bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFza19zZWxm
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190PigmZ19naWdhY2FnZUNvbmZpZyksIGNv
bmZpZ1NpemVUb1Byb3RlY3QsIERpc2FsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMsIFZN
X1BST1RfUkVBRCk7Ci0jZWxzZQotICAgIHJlc3VsdCA9IG1wcm90ZWN0KCZnX2dpZ2FjYWdlQ29u
ZmlnLCBjb25maWdTaXplVG9Qcm90ZWN0LCBQUk9UX1JFQUQpOwotI2VuZGlmCi0gICAgUkVMRUFT
RV9CQVNTRVJUKCFyZXN1bHQpOwotfQotCi1jbGFzcyBVbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2Nv
cGUgewotcHVibGljOgotICAgIFVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSgpCi0gICAgewot
ICAgICAgICB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7Ci0gICAgfQotICAgIAotICAgIH5VbmZy
ZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGUoKQotICAgIHsKLSAgICAgICAgZnJlZXplR2lnYWNhZ2VD
b25maWcoKTsKLSAgICB9Ci19OwotCiBzaXplX3QgcnVud2F5U2l6ZShLaW5kIGtpbmQpCiB7CiAg
ICAgc3dpdGNoIChraW5kKSB7CkBAIC0yNDAsNyArMTc1LDYgQEAgdm9pZCBlbnN1cmVHaWdhY2Fn
ZSgpCiAgICAgICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLnRvdGFsU2l6ZSA9IHRvdGFsU2l6ZTsK
ICAgICAgICAgICAgIHZtRGVhbGxvY2F0ZVBoeXNpY2FsUGFnZXMoYmFzZSwgdG90YWxTaXplKTsK
ICAgICAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuaXNFbmFibGVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7CiAgICAgICAgIH0pOwogfQogCkBAIC0yNjQsNyAr
MTk4LDYgQEAgdm9pZCBkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UoKQogICAgIGZvciAoQ2FsbGJh
Y2smIGNhbGxiYWNrIDogY2FsbGJhY2tzLmNhbGxiYWNrcykKICAgICAgICAgY2FsbGJhY2suZnVu
Y3Rpb24oY2FsbGJhY2suYXJndW1lbnQpOwogICAgIGNhbGxiYWNrcy5jYWxsYmFja3Muc2hyaW5r
KDApOwotICAgIFVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSB1bmZyZWV6ZVNjb3BlOwogICAg
IGdfZ2lnYWNhZ2VDb25maWcuYmFzZVB0cnNbUHJpbWl0aXZlXSA9IG51bGxwdHI7CiB9CiAKQEAg
LTMxMywxMCArMjQ2LDggQEAgdm9pZCBmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgp
CiAgICAgICAgICYmIChHSUdBQ0FHRV9BTExPQ0FUSU9OX0NBTl9GQUlMIHx8ICFnX2dpZ2FjYWdl
Q29uZmlnLnNob3VsZEJlRW5hYmxlZCB8fCB2ZXJpZnlHaWdhY2FnZUlzRW5hYmxlZCgpKSk7CiAK
ICAgICBpZiAoIWdfZ2lnYWNhZ2VDb25maWcuZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0Zv
cmJpZGRlbikgewotICAgICAgICB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7CiAgICAgICAgIGdf
Z2lnYWNhZ2VDb25maWcuZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbiA9IHRy
dWU7CiAgICAgfQotICAgIHBlcm1hbmVudGx5RnJlZXplR2lnYWNhZ2VDb25maWcoKTsKICAgICBS
RUxFQVNFX0JBU1NFUlQoaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbigpKTsK
IH0KIApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAkocmV2aXNpb24gMjYyMzYxKQor
KysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjUsMTEgKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWxnb3JpdGhtLmgi
CiAjaW5jbHVkZSAiQkFzc2VydC5oIgogI2luY2x1ZGUgIkJFeHBvcnQuaCIKICNpbmNsdWRlICJC
SW5saW5lLmgiCiAjaW5jbHVkZSAiQlBsYXRmb3JtLmgiCisjaW5jbHVkZSAiR2lnYWNhZ2VDb25m
aWcuaCIKICNpbmNsdWRlICJTaXplcy5oIgogI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVkZSA8
aW50dHlwZXMuaD4KQEAgLTQ0LDEyICs0NCw2IEBACiAKIG5hbWVzcGFjZSBHaWdhY2FnZSB7CiAK
LWVudW0gS2luZCB7Ci0gICAgUHJpbWl0aXZlLAotICAgIEpTVmFsdWUsCi0gICAgTnVtYmVyT2ZL
aW5kcwotfTsKLQogQklOTElORSBjb25zdCBjaGFyKiBuYW1lKEtpbmQga2luZCkKIHsKICAgICBz
d2l0Y2ggKGtpbmQpIHsKQEAgLTY2LDggKzYwLDYgQEAgQklOTElORSBjb25zdCBjaGFyKiBuYW1l
KEtpbmQga2luZCkKIAogI2lmIEdJR0FDQUdFX0VOQUJMRUQKIAotY29uc3RleHByIHNpemVfdCBj
b25maWdTaXplVG9Qcm90ZWN0ID0gMTYgKiBibWFsbG9jOjpTaXplczo6a0I7Ci0KICNpZiBCT1Nf
RUZGRUNUSVZFX0FERFJFU1NfV0lEVEggPCA0OAogY29uc3RleHByIHNpemVfdCBwcmltaXRpdmVH
aWdhY2FnZVNpemUgPSAyICogYm1hbGxvYzo6U2l6ZXM6OkdCOwogY29uc3RleHByIHNpemVfdCBq
c1ZhbHVlR2lnYWNhZ2VTaXplID0gMiAqIGJtYWxsb2M6OlNpemVzOjpHQjsKQEAgLTk3LDQ3ICs4
OSw2IEBAIGNvbnN0ZXhwciBzaXplX3QgZ2lnYWNhZ2VTaXplVG9NYXNrKHNpemUKIGNvbnN0ZXhw
ciBzaXplX3QgcHJpbWl0aXZlR2lnYWNhZ2VNYXNrID0gZ2lnYWNhZ2VTaXplVG9NYXNrKHByaW1p
dGl2ZUdpZ2FjYWdlU2l6ZSk7CiBjb25zdGV4cHIgc2l6ZV90IGpzVmFsdWVHaWdhY2FnZU1hc2sg
PSBnaWdhY2FnZVNpemVUb01hc2soanNWYWx1ZUdpZ2FjYWdlU2l6ZSk7CiAKLXN0cnVjdCBDb25m
aWcgewotICAgIHZvaWQqIGJhc2VQdHIoS2luZCBraW5kKSBjb25zdAotICAgIHsKLSAgICAgICAg
UkVMRUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRzKTsKLSAgICAgICAgcmV0dXJuIGJh
c2VQdHJzW2tpbmRdOwotICAgIH0KLQotICAgIHZvaWQgc2V0QmFzZVB0cihLaW5kIGtpbmQsIHZv
aWQqIHB0cikKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQkFTU0VSVChraW5kIDwgTnVtYmVyT2ZL
aW5kcyk7Ci0gICAgICAgIGJhc2VQdHJzW2tpbmRdID0gcHRyOwotICAgIH0KLQotICAgIHVuaW9u
IHsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIC8vIEFsbCB0aGUgZmllbGRzIGluIHRo
aXMgc3RydWN0IHNob3VsZCBiZSBjaG9zZW4gc3VjaCB0aGF0IHRoZWlyCi0gICAgICAgICAgICAv
LyBpbml0aWFsIHZhbHVlIGlzIDAgLyBudWxsIC8gZmFsc3kgYmVjYXVzZSBDb25maWcgaXMgaW5z
dGFudGlhdGVkCi0gICAgICAgICAgICAvLyBhcyBhIGdsb2JhbCBzaW5nbGV0b24uCi0KLSAgICAg
ICAgICAgIGJvb2wgaXNFbmFibGVkOwotICAgICAgICAgICAgYm9vbCBpc1Blcm1hbmVudGx5RnJv
emVuOwotICAgICAgICAgICAgYm9vbCBkaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlk
ZGVuOwotICAgICAgICAgICAgYm9vbCBzaG91bGRCZUVuYWJsZWQ7Ci0KLSAgICAgICAgICAgIC8v
IFdlIHdvdWxkIGxpa2UgdG8ganVzdCBwdXQgdGhlIHN0ZDo6b25jZV9mbGFnIGZvciB0aGVzZSBm
dW5jdGlvbnMKLSAgICAgICAgICAgIC8vIGhlcmUsIGJ1dCB3ZSBjYW4ndCBiZWNhdXNlIHN0ZDo6
b25jZV9mbGFnIGhhcyBhIGltcGxpY2l0bHktZGVsZXRlZAotICAgICAgICAgICAgLy8gZGVmYXVs
dCBjb25zdHJ1Y3Rvci4gU28sIHdlIHVzZSBhIGJvb2xlYW4gaW5zdGVhZC4KLSAgICAgICAgICAg
IGJvb2wgc2hvdWxkQmVFbmFibGVkSGFzQmVlbkNhbGxlZDsKLSAgICAgICAgICAgIGJvb2wgZW5z
dXJlR2lnYWNhZ2VIYXNCZWVuQ2FsbGVkOwotCi0gICAgICAgICAgICB2b2lkKiBzdGFydDsKLSAg
ICAgICAgICAgIHNpemVfdCB0b3RhbFNpemU7Ci0gICAgICAgICAgICB2b2lkKiBiYXNlUHRyc1tO
dW1iZXJPZktpbmRzXTsKLSAgICAgICAgfTsKLSAgICAgICAgY2hhciBlbnN1cmVTaXplW2NvbmZp
Z1NpemVUb1Byb3RlY3RdOwotICAgIH07Ci19Owotc3RhdGljX2Fzc2VydChzaXplb2YoQ29uZmln
KSA9PSBjb25maWdTaXplVG9Qcm90ZWN0LCAiR2lnYWNhZ2UgQ29uZmlnIG11c3QgZml0IGluIGNv
bmZpZ1NpemVUb1Byb3RlY3QiKTsKLQotZXh0ZXJuICJDIiBhbGlnbmFzKGNvbmZpZ1NpemVUb1By
b3RlY3QpIEJFWFBPUlQgQ29uZmlnIGdfZ2lnYWNhZ2VDb25maWc7Ci0KIC8vIFRoZXNlIGNvbnN0
YW50cyBhcmUgbmVlZGVkIGJ5IHRoZSBMTEludC4KIGNvbnN0ZXhwciBwdHJkaWZmX3Qgb2Zmc2V0
T2ZQcmltaXRpdmVHaWdhY2FnZUJhc2VQdHIgPSBLaW5kOjpQcmltaXRpdmUgKiBzaXplb2Yodm9p
ZCopOwogY29uc3RleHByIHB0cmRpZmZfdCBvZmZzZXRPZkpTVmFsdWVHaWdhY2FnZUJhc2VQdHIg
PSBLaW5kOjpKU1ZhbHVlICogc2l6ZW9mKHZvaWQqKTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvR2lnYWNhZ2VDb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0dpZ2FjYWdlQ29uZmlnLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9HaWdhY2FnZUNvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkFsZ29yaXRobS5oIgorI2luY2x1ZGUgIkdpZ2FjYWdlS2luZC5oIgorI2lu
Y2x1ZGUgIlN0ZExpYkV4dHJhcy5oIgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisKK25hbWVzcGFj
ZSBXZWJDb25maWcgeworCit1c2luZyBTbG90ID0gdWludDY0X3Q7CitleHRlcm4gIkMiIFNsb3Qg
Z19jb25maWdbXTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29uZmlnCisKK25hbWVzcGFjZSBHaWdh
Y2FnZSB7CisKK3N0cnVjdCBDb25maWcgeworICAgIHZvaWQqIGJhc2VQdHIoS2luZCBraW5kKSBj
b25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRz
KTsKKyAgICAgICAgcmV0dXJuIGJhc2VQdHJzW2tpbmRdOworICAgIH0KKworICAgIHZvaWQgc2V0
QmFzZVB0cihLaW5kIGtpbmQsIHZvaWQqIHB0cikKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQkFT
U0VSVChraW5kIDwgTnVtYmVyT2ZLaW5kcyk7CisgICAgICAgIGJhc2VQdHJzW2tpbmRdID0gcHRy
OworICAgIH0KKworICAgIC8vIEFsbCB0aGUgZmllbGRzIGluIHRoaXMgc3RydWN0IHNob3VsZCBi
ZSBjaG9zZW4gc3VjaCB0aGF0IHRoZWlyCisgICAgLy8gaW5pdGlhbCB2YWx1ZSBpcyAwIC8gbnVs
bCAvIGZhbHN5IGJlY2F1c2UgQ29uZmlnIGlzIGluc3RhbnRpYXRlZAorICAgIC8vIGFzIGEgZ2xv
YmFsIHNpbmdsZXRvbi4KKworICAgIGJvb2wgaXNQZXJtYW5lbnRseUZyb3plbjsgLy8gV2lsbCBi
ZSBzZXQgYnkgdGhlIGNsaWVudCBpZiB0aGUgQ29uZmlnIGdldHMgZnJvemVuLgorICAgIGJvb2wg
aXNFbmFibGVkOworICAgIGJvb2wgZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRl
bjsKKyAgICBib29sIHNob3VsZEJlRW5hYmxlZDsKKworICAgIC8vIFdlIHdvdWxkIGxpa2UgdG8g
anVzdCBwdXQgdGhlIHN0ZDo6b25jZV9mbGFnIGZvciB0aGVzZSBmdW5jdGlvbnMKKyAgICAvLyBo
ZXJlLCBidXQgd2UgY2FuJ3QgYmVjYXVzZSBzdGQ6Om9uY2VfZmxhZyBoYXMgYSBpbXBsaWNpdGx5
LWRlbGV0ZWQKKyAgICAvLyBkZWZhdWx0IGNvbnN0cnVjdG9yLiBTbywgd2UgdXNlIGEgYm9vbGVh
biBpbnN0ZWFkLgorICAgIGJvb2wgc2hvdWxkQmVFbmFibGVkSGFzQmVlbkNhbGxlZDsKKyAgICBi
b29sIGVuc3VyZUdpZ2FjYWdlSGFzQmVlbkNhbGxlZDsKKworICAgIHZvaWQqIHN0YXJ0OworICAg
IHNpemVfdCB0b3RhbFNpemU7CisgICAgdm9pZCogYmFzZVB0cnNbTnVtYmVyT2ZLaW5kc107Cit9
OworCitjb25zdGV4cHIgc2l6ZV90IHN0YXJ0U2xvdE9mR2lnYWNhZ2VDb25maWcgPSAwOworY29u
c3RleHByIHNpemVfdCBzdGFydE9mZnNldE9mR2lnYWNhZ2VDb25maWcgPSBzdGFydFNsb3RPZkdp
Z2FjYWdlQ29uZmlnICogc2l6ZW9mKFdlYkNvbmZpZzo6U2xvdCk7CisKK2NvbnN0ZXhwciBzaXpl
X3QgcmVzZXJ2ZWRTbG90c0ZvckdpZ2FjYWdlQ29uZmlnID0gNjsKK2NvbnN0ZXhwciBzaXplX3Qg
cmVzZXJ2ZWRCeXRlc0ZvckdpZ2FjYWdlQ29uZmlnID0gcmVzZXJ2ZWRTbG90c0ZvckdpZ2FjYWdl
Q29uZmlnICogc2l6ZW9mKFdlYkNvbmZpZzo6U2xvdCk7CisKK2NvbnN0ZXhwciBzaXplX3QgYWxp
Z25tZW50T2ZHaWdhY2FnZUNvbmZpZyA9IHN0ZDo6YWxpZ25tZW50X29mPEdpZ2FjYWdlOjpDb25m
aWc+Ojp2YWx1ZTsKKworc3RhdGljX2Fzc2VydChzaXplb2YoR2lnYWNhZ2U6OkNvbmZpZykgPD0g
cmVzZXJ2ZWRCeXRlc0ZvckdpZ2FjYWdlQ29uZmlnKTsKK3N0YXRpY19hc3NlcnQoYm1hbGxvYzo6
cm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkdpZ2FjYWdlQ29uZmlnPihzdGFydE9mZnNl
dE9mR2lnYWNhZ2VDb25maWcpID09IHN0YXJ0T2Zmc2V0T2ZHaWdhY2FnZUNvbmZpZyk7CisKKyNk
ZWZpbmUgZ19naWdhY2FnZUNvbmZpZyAoKmJtYWxsb2M6OmJpdHdpc2VfY2FzdDxHaWdhY2FnZTo6
Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbR2lnYWNhZ2U6OnN0YXJ0U2xvdE9mR2lnYWNh
Z2VDb25maWddKSkKKworfSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UKSW5kZXg6IFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvR2lnYWNhZ2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9HaWdhY2FnZUtpbmQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0dpZ2FjYWdlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIEdpZ2FjYWdlIHsKKworZW51bSBLaW5kIHsKKyAgICBQcmltaXRpdmUsCisg
ICAgSlNWYWx1ZSwKKyAgICBOdW1iZXJPZktpbmRzCit9OworCit9IC8vIG5hbWVzcGFjZSBHaWdh
Y2FnZQpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9tYm1hbGxvYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9tYm1hbGxvYy5jcHAJKHJldmlzaW9uIDI2MjM2
MSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvbWJtYWxsb2MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiwxMyBAQAogI2luY2x1ZGUgImJtYWxsb2MuaCIKIAogI2luY2x1ZGUgIkJF
eHBvcnQuaCIKKyNpbmNsdWRlICJHaWdhY2FnZUNvbmZpZy5oIgorCituYW1lc3BhY2UgV2ViQ29u
ZmlnIHsKKworYWxpZ25hcyhXVEY6OkNvbmZpZ1NpemVUb1Byb3RlY3QpIFdURl9FWFBPUlRfUFJJ
VkFURSBTbG90IGdfY29uZmlnW1dURjo6Q29uZmlnU2l6ZVRvUHJvdGVjdCAvIHNpemVvZihTbG90
KV07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvbmZpZwogCiBleHRlcm4gIkMiIHsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400714</attachid>
            <date>2020-05-31 18:37:40 -0700</date>
            <delta_ts>2020-05-31 18:40:33 -0700</delta_ts>
            <desc>work in progress for EWS testing.</desc>
            <filename>bug-212585.patch</filename>
            <type>text/plain</type>
            <size>29484</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDIwLTA1LTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29u
ZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMjU4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvSlNDQ29uZmln
Lmg6CisgICAgICAgIChKU0M6OkNvbmZpZzo6aXNQZXJtYW5lbnRseUZyb3plbik6CisKIDIwMjAt
MDUtMzEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBK
U0M6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXVEY6OkNvbmZpZyBpbnN0ZWFkIG9mIGl0cyBv
d24uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTQzMiw3ICs0MzIsNyBAQCBtYWNybyBjYWdlZFByaW1pdGl2ZShwdHIsIGxlbmd0aCwgc2NyYXRj
CiAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHB0cgogICAgIGVuZAogICAgIGlmIEdJR0FDQUdFX0VO
QUJMRUQKLSAgICAgICAgY2FnZShfZ19naWdhY2FnZUNvbmZpZyArIEdpZ2FjYWdlOjpDb25maWc6
OmJhc2VQdHJzICsgR2lnYWNhZ2VQcmltaXRpdmVCYXNlUHRyT2Zmc2V0LCBjb25zdGV4cHIgR2ln
YWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgc291cmNlLCBzY3JhdGNoKQorICAgICAgICBj
YWdlKF9nX2NvbmZpZyArIChjb25zdGV4cHIgR2lnYWNhZ2U6OnN0YXJ0T2Zmc2V0T2ZHaWdhY2Fn
ZUNvbmZpZykgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2FjYWdlUHJpbWl0aXZl
QmFzZVB0ck9mZnNldCwgY29uc3RleHByIEdpZ2FjYWdlOjpwcmltaXRpdmVHaWdhY2FnZU1hc2ss
IHNvdXJjZSwgc2NyYXRjaCkKICAgICAgICAgaWYgQVJNNjRFCiAgICAgICAgICAgICBjb25zdCBu
dW1iZXJPZlBBQ0JpdHMgPSBjb25zdGV4cHIgTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUEFDQml0
cwogICAgICAgICAgICAgYmZpcSBzY3JhdGNoMiwgMCwgNjQgLSBudW1iZXJPZlBBQ0JpdHMsIHB0
cgpAQCAtNDQ2LDcgKzQ0Niw3IEBAIGVuZAogbWFjcm8gbG9hZENhZ2VkSlNWYWx1ZShzb3VyY2Us
IGRlc3QsIHNjcmF0Y2hPckxlbmd0aCkKICAgICBsb2FkcCBzb3VyY2UsIGRlc3QKICAgICBpZiBH
SUdBQ0FHRV9FTkFCTEVECi0gICAgICAgIGNhZ2UoX2dfZ2lnYWNhZ2VDb25maWcgKyBHaWdhY2Fn
ZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2FjYWdlSlNWYWx1ZUJhc2VQdHJPZmZzZXQsIGNvbnN0
ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2FjYWdlTWFzaywgZGVzdCwgc2NyYXRjaE9yTGVuZ3Ro
KQorICAgICAgICBjYWdlKF9nX2NvbmZpZyArIChjb25zdGV4cHIgR2lnYWNhZ2U6OnN0YXJ0T2Zm
c2V0T2ZHaWdhY2FnZUNvbmZpZykgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2Fj
YWdlSlNWYWx1ZUJhc2VQdHJPZmZzZXQsIGNvbnN0ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2Fj
YWdlTWFzaywgZGVzdCwgc2NyYXRjaE9yTGVuZ3RoKQogICAgIGVuZAogZW5kCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCShyZXZpc2lvbiAyNjIzNjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgZW5hYmxlUmVz
dHJpY3RlZE9wdGlvbnMoKTsKICAgICB9CiAKLSAgICBib29sIGlzUGVybWFuZW50bHlGcm96ZW4o
KSB7IHJldHVybiBXVEY6Omdfd3RmQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW47IH0KKyAgICBi
b29sIGlzUGVybWFuZW50bHlGcm96ZW4oKSB7IHJldHVybiBnX3d0ZkNvbmZpZy5pc1Blcm1hbmVu
dGx5RnJvemVuOyB9CiAKICAgICAvLyBBbGwgdGhlIGZpZWxkcyBpbiB0aGlzIHN0cnVjdCBzaG91
bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgogICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAv
IG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKQEAgLTgyLDEyICs4
MiwxMSBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICBXVEY6OlB0clRhZ0xvb2t1cCBwdHJUYWdMb29r
dXBSZWNvcmQ7CiB9OwogCi1jb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5z
aW9uID0gb2Zmc2V0b2YoV1RGOjpDb25maWcsIHNwYWNlRm9yRXh0ZW5zaW9ucyk7CiBjb25zdGV4
cHIgc2l6ZV90IGFsaWdubWVudE9mSlNDQ29uZmlnID0gc3RkOjphbGlnbm1lbnRfb2Y8SlNDOjpD
b25maWc+Ojp2YWx1ZTsKIAotc3RhdGljX2Fzc2VydChzaXplb2YoSlNDOjpDb25maWcpIDw9IChz
aXplb2YoV1RGOjpDb25maWcpIC0gb2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24pKTsKLXN0YXRp
Y19hc3NlcnQocm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkpTQ0NvbmZpZz4ob2Zmc2V0
T2ZXVEZDb25maWdFeHRlbnNpb24pID09IG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uKTsKK3N0
YXRpY19hc3NlcnQoV1RGOjpvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbiArIHNpemVvZihKU0M6
OkNvbmZpZykgPD0gV1RGOjpDb25maWdTaXplVG9Qcm90ZWN0KTsKK3N0YXRpY19hc3NlcnQocm91
bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkpTQ0NvbmZpZz4oV1RGOjpvZmZzZXRPZldURkNv
bmZpZ0V4dGVuc2lvbikgPT0gV1RGOjpvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbik7CiAKLSNk
ZWZpbmUgZ19qc2NDb25maWcgKCpiaXR3aXNlX2Nhc3Q8Q29uZmlnKj4oJldURjo6Z193dGZDb25m
aWcuc3BhY2VGb3JFeHRlbnNpb25zKSkKKyNkZWZpbmUgZ19qc2NDb25maWcgKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmZ193dGZDb25maWcuc3BhY2VGb3JFeHRlbnNpb25zKSkKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL1dURi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0wNS0zMSAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEdpZ2FjYWdlOjpD
b25maWcgdG8gdXNlIHN0b3JhZ2UgaW4gV2ViQ29uZmlnOjpnX2NvbmZpZyBpbnN0ZWFkIG9mIGl0
cyBvd24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTI1ODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzODEyNDg3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5vdyB0aGluayBvZiB0aGUgdmFy
aW91cyBDb25maWcgcmVjb3JkcyBhcyBiZWluZyBhbGxvY2F0ZWQgZnJvbSBwYXJ0cyBvZiBhCisg
ICAgICAgIFdlYkNvbmZpZzo6Z19jb25maWcgYnVmZmVyLiAgV1RGOjpDb25maWcgd2lsbCBtYW5h
Z2UgdGhlIG1lY2hhbmljcyBvZiBmcmVlemluZworICAgICAgICB0aGF0IGJ1ZmZlci4gIEFuZCB0
aGUgSlNDIFZNIGlzIHN0aWxsIHRoZSBkZXRlcm1pbmVyIG9mIGlmL3doZW4gdG8gZnJlZXplIHRo
ZQorICAgICAgICBidWZmZXIsIGFuZCBpdCB3aWxsIGRvIHRoaXMgYXQgdGhlIGVuZCBvZiB0aGUg
Y29uc3RydWN0aW9uIG9mIHRoZSB2ZXJ5IGZpcnN0CisgICAgICAgIFZNIGluc3RhbmNlIChhcyBi
ZWZvcmUpLgorCisgICAgICAgIEdpZ2FjYWdlOjpDb25maWcgcmVzZXJ2ZXMgc3BhY2UgaW4gV2Vi
Q29uZmlnOjpnX2NvbmZpZy4KKyAgICAgICAgV1RGOjpDb25maWcgd2lsbCBob25vciB0aGF0IHJl
c2VydmF0aW9uIGFuZCBwbGFjZSBpdHNlbGYgYWZ0ZXIgdGhhdC4KKyAgICAgICAgSlNDOjpDb25m
aWcgd2lsbCBjb250aW51ZSB0byBwbGFjZSBpdHNlbGYgYXQgV1RGOjpDb25maWc6OnNwYWNlRm9y
RXh0ZW5zaW9ucy4KKworICAgICAgICBUaGUgdXBzaWRlIG9mIHRoaXMgYXBwcm9hY2ggdGhpcyBp
cyB0aGF0IHdlIGNhbiBub3cgc2hhcmUgdGhlIHNhbWUgbWVtb3J5IHBhZ2UKKyAgICAgICAgZm9y
IGFsbCB0aGUgQ29uZmlncywgYW5kIGNhbiBmcmVlemUgdGhlbSBpbiBvbmUgZ28uCisKKyAgICAg
ICAgVGhlIGRvd25zaWRlIGlzIHRoYXQgZ19naWdhY2FnZUNvbmZpZywgZ193dGZDb25maWcsIGFu
ZCBnX2pzY0NvbmZpZyBub3cgaGF2ZSB0bworICAgICAgICBiZSBtYWNyb3MuICBUaGlzIHJlc3Vs
dHMgaW4gc29tZSB3ZWlyZG5lc3MgZS5nLiB0aGV5IGFyZSBubyBsb25nZXIgcXVhbGlmaWVkIGJ5
CisgICAgICAgIG5hbWVzcGFjZXM6IHJlZmVycmluZyB0byBXVEY6Omdfd3RmQ29uZmlnIGlzIG5v
dyBpbmNvcnJlY3QuCisKKyAgICAgICAgKiB3dGYvV1RGQ29uZmlnLmNwcDoKKyAgICAgICAgKFdU
Rjo6Q29uZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSk6CisgICAgICAgICogd3RmL1dURkNvbmZpZy5o
OgorICAgICAgICAoKTogRGVsZXRlZC4KKwogMjAyMC0wNS0zMSAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIEpTQzo6Q29uZmlnIHRvIHVzZSBzdG9yYWdl
IGluIFdURjo6Q29uZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1dURkNvbmZpZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmNw
cAkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgPHd0Zi9XVEZDb25maWcuaD4KIAorI2luY2x1ZGUgPHd0Zi9HaWdhY2FnZS5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNSw5
ICszNiwxMyBAQAogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiAjZW5kaWYKIAotbmFtZXNwYWNlIFdU
RiB7CituYW1lc3BhY2UgV2ViQ29uZmlnIHsKKworYWxpZ25hcyhXVEY6OkNvbmZpZ1NpemVUb1By
b3RlY3QpIFdURl9FWFBPUlRfUFJJVkFURSBTbG90IGdfY29uZmlnW1dURjo6Q29uZmlnU2l6ZVRv
UHJvdGVjdCAvIHNpemVvZihTbG90KV07CiAKLWFsaWduYXMoQ29uZmlnU2l6ZVRvUHJvdGVjdCkg
V1RGX0VYUE9SVF9QUklWQVRFIENvbmZpZyBnX3d0ZkNvbmZpZzsKK30gLy8gbmFtZXNwYWNlIFdl
YkNvbmZpZworCituYW1lc3BhY2UgV1RGIHsKIAogdm9pZCBDb25maWc6OnBlcm1hbmVudGx5RnJl
ZXplKCkKIHsKQEAgLTQ2LDggKzUxLDEyIEBAIHZvaWQgQ29uZmlnOjpwZXJtYW5lbnRseUZyZWV6
ZSgpCiAKICAgICBSRUxFQVNFX0FTU0VSVChyb3VuZFVwVG9NdWx0aXBsZU9mKHBhZ2VTaXplKCks
IENvbmZpZ1NpemVUb1Byb3RlY3QpID09IENvbmZpZ1NpemVUb1Byb3RlY3QpOwogCi0gICAgaWYg
KCFnX3d0ZkNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuKQorICAgIGlmICghZ193dGZDb25maWcu
aXNQZXJtYW5lbnRseUZyb3plbikgewogICAgICAgICBnX3d0ZkNvbmZpZy5pc1Blcm1hbmVudGx5
RnJvemVuID0gdHJ1ZTsKKyNpZiBHSUdBQ0FHRV9FTkFCTEVECisgICAgICAgIGdfZ2lnYWNhZ2VD
b25maWcuaXNQZXJtYW5lbnRseUZyb3plbiA9IHRydWU7CisjZW5kaWYKKyAgICB9CiAKICAgICBp
bnQgcmVzdWx0ID0gMDsKICNpZiBPUyhEQVJXSU4pCkBAIC01Nyw5ICs2Niw5IEBAIHZvaWQgQ29u
ZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSgpCiAgICAgfTsKIAogICAgIC8vIFRoZXJlJ3Mgbm8gZ29p
bmcgYmFjayBub3chCi0gICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tfc2VsZigpLCBy
ZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfd3RmQ29uZmlnKSwgQ29uZmlnU2l6ZVRv
UHJvdGVjdCwgRGlzYWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcywgVk1fUFJPVF9SRUFE
KTsKKyAgICByZXN1bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8dm1fYWRkcmVzc190PigmV2ViQ29uZmlnOjpnX2NvbmZpZyksIENvbmZpZ1NpemVUb1By
b3RlY3QsIERpc2FsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMsIFZNX1BST1RfUkVBRCk7
CiAjZWxpZiBPUyhMSU5VWCkKLSAgICByZXN1bHQgPSBtcHJvdGVjdCgmZ193dGZDb25maWcsIENv
bmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7CisgICAgcmVzdWx0ID0gbXByb3RlY3QoJldl
YkNvbmZpZzo6Z19jb25maWcsIENvbmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7CiAjZWxp
ZiBPUyhXSU5ET1dTKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXF1aXZhbGVudCwgbWF5YmUg
d2l0aCBWaXJ0dWFsUHJvdGVjdC4KICAgICAvLyBBbHNvIG5lZWQgdG8gZml4IFdlYktpdFRlc3RS
dW5uZXIuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9XVEZDb25maWcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9XVEZDb25maWcuaAkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL1dU
Ri93dGYvV1RGQ29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDIyIEBACiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMu
aD4KIAorI2lmIGRlZmluZWQoVVNFX1NZU1RFTV9NQUxMT0MpICYmIFVTRV9TWVNURU1fTUFMTE9D
CituYW1lc3BhY2UgR2lnYWNhZ2UgeworY29uc3RleHByIHNpemVfdCByZXNlcnZlZFNsb3RzRm9y
R2lnYWNhZ2VDb25maWcgPSAwOworY29uc3RleHByIHNpemVfdCByZXNlcnZlZEJ5dGVzRm9yR2ln
YWNhZ2VDb25maWcgPSAwOworfQorI2Vsc2UKKyNpbmNsdWRlIDxibWFsbG9jL0dpZ2FjYWdlQ29u
ZmlnLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvbmZpZyB7CisKK3VzaW5nIFNsb3QgPSB1
aW50NjRfdDsKK2V4dGVybiAiQyIgV1RGX0VYUE9SVF9QUklWQVRFIFNsb3QgZ19jb25maWdbXTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29uZmlnCisKIG5hbWVzcGFjZSBXVEYgewogCiBjb25zdGV4
cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSBDZWlsaW5nT25QYWdlU2l6ZTsKQEAgLTQ1
LDI4ICs2MSwzMSBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgfkFzc2VydE5vdEZyb3plblNj
b3BlKCk7CiAgICAgfTsKIAotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAg
ICAgIC8vIEFsbCB0aGUgZmllbGRzIGluIHRoaXMgc3RydWN0IHNob3VsZCBiZSBjaG9zZW4gc3Vj
aCB0aGF0IHRoZWlyCi0gICAgICAgICAgICAvLyBpbml0aWFsIHZhbHVlIGlzIDAgLyBudWxsIC8g
ZmFsc3kgYmVjYXVzZSBDb25maWcgaXMgaW5zdGFudGlhdGVkCi0gICAgICAgICAgICAvLyBhcyBh
IGdsb2JhbCBzaW5nbGV0b24uCisgICAgLy8gQWxsIHRoZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3Qg
c2hvdWxkIGJlIGNob3NlbiBzdWNoIHRoYXQgdGhlaXIKKyAgICAvLyBpbml0aWFsIHZhbHVlIGlz
IDAgLyBudWxsIC8gZmFsc3kgYmVjYXVzZSBDb25maWcgaXMgaW5zdGFudGlhdGVkCisgICAgLy8g
YXMgYSBnbG9iYWwgc2luZ2xldG9uLgogCi0gICAgICAgICAgICBib29sIGlzUGVybWFuZW50bHlG
cm96ZW47CisgICAgYm9vbCBpc1Blcm1hbmVudGx5RnJvemVuOwogCiAjaWYgVVNFKFBUSFJFQURT
KSAmJiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKLSAgICAgICAgICAgIFNpZ25hbEhhbmRsZXJzIHNp
Z25hbEhhbmRsZXJzOworICAgIFNpZ25hbEhhbmRsZXJzIHNpZ25hbEhhbmRsZXJzOwogI2VuZGlm
Ci0gICAgICAgICAgICBQdHJUYWdMb29rdXAqIHB0clRhZ0xvb2t1cEhlYWQ7CisgICAgUHRyVGFn
TG9va3VwKiBwdHJUYWdMb29rdXBIZWFkOwogCi0gICAgICAgICAgICB1aW50NjRfdCBzcGFjZUZv
ckV4dGVuc2lvbnNbMV07Ci0gICAgICAgIH07Ci0gICAgICAgIGNoYXIgZW5zdXJlU2l6ZVtDb25m
aWdTaXplVG9Qcm90ZWN0XTsKLSAgICB9OworICAgIHVpbnQ2NF90IHNwYWNlRm9yRXh0ZW5zaW9u
c1sxXTsKIH07CiAKLWV4dGVybiAiQyIgYWxpZ25hcyhDb25maWdTaXplVG9Qcm90ZWN0KSBXVEZf
RVhQT1JUX1BSSVZBVEUgQ29uZmlnIGdfd3RmQ29uZmlnOworY29uc3RleHByIHNpemVfdCBzdGFy
dFNsb3RPZldURkNvbmZpZyA9IEdpZ2FjYWdlOjpyZXNlcnZlZFNsb3RzRm9yR2lnYWNhZ2VDb25m
aWc7Citjb25zdGV4cHIgc2l6ZV90IHN0YXJ0T2Zmc2V0T2ZXVEZDb25maWcgPSBzdGFydFNsb3RP
ZldURkNvbmZpZyAqIHNpemVvZihXZWJDb25maWc6OlNsb3QpOworCitjb25zdGV4cHIgc2l6ZV90
IG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uID0gc3RhcnRPZmZzZXRPZldURkNvbmZpZyArIG9m
ZnNldG9mKFdURjo6Q29uZmlnLCBzcGFjZUZvckV4dGVuc2lvbnMpOworCitjb25zdGV4cHIgc2l6
ZV90IGFsaWdubWVudE9mV1RGQ29uZmlnID0gc3RkOjphbGlnbm1lbnRfb2Y8V1RGOjpDb25maWc+
Ojp2YWx1ZTsKKworc3RhdGljX2Fzc2VydChHaWdhY2FnZTo6cmVzZXJ2ZWRCeXRlc0ZvckdpZ2Fj
YWdlQ29uZmlnICsgc2l6ZW9mKFdURjo6Q29uZmlnKSA8PSBDb25maWdTaXplVG9Qcm90ZWN0KTsK
K3N0YXRpY19hc3NlcnQocm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZldURkNvbmZpZz4o
c3RhcnRPZmZzZXRPZldURkNvbmZpZykgPT0gc3RhcnRPZmZzZXRPZldURkNvbmZpZyk7CiAKLXN0
YXRpY19hc3NlcnQoc2l6ZW9mKENvbmZpZykgPT0gQ29uZmlnU2l6ZVRvUHJvdGVjdCk7CisjZGVm
aW5lIGdfd3RmQ29uZmlnICgqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKQogCiBBTFdBWVNfSU5MSU5FIENv
bmZpZzo6QXNzZXJ0Tm90RnJvemVuU2NvcGU6OkFzc2VydE5vdEZyb3plblNjb3BlKCkKIHsKSW5k
ZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxv
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjM2NSkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA1LTMxICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0
byB1c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29uZmlnIGluc3RlYWQgb2YgaXRzIG93bi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjU4NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gR2lnYWNhZ2U6OkNvbmZpZyBub3cgcmVzZXJ2
ZXMgYW5kIGV4cGVjdCBzcGFjZSB0byBiZSBhdmFpbGFibGUgaW4gYW4gZXh0ZXJuYWwKKyAgICAg
ICAgICAgV2ViQ29uZmlnOjpnX2NvbmZpZyBidWZmZXIuICBHaWdhY2FnZSBkb2VzIG5vdCBhbGxv
Y2F0ZSB0aGF0IGJ1ZmZlci4KKworICAgICAgICAyLiBNb3ZlZCBHaWdhY2FnZTo6Q29uZmlnIHRv
IEdpZ2FjYWdlQ29uZmlnLmguCisgICAgICAgICAgIFRoaXMgYWxsb3dzIFdURkNvbmZpZy5oIHRv
IGluY2x1ZGUgR2lnYWNhZ2VDb25maWcuaCBpbnN0ZWFkIG9mIGFsbCBvZiBHaWdhY2FnZS5oLgor
CisgICAgICAgIDMuIE1vdmVkIEdpZ2FjYWdlOjpLaW5kIHRvIEdpZ2FjYWdlS2luZC5oLgorICAg
ICAgICAgICBPdGhlcndpc2UsIEdpZ2FjYWdlOjpLaW5kIHdvdWxkIG5lZWQgdG8gbW92ZSB0byBH
aWdhY2FnZUNvbmZpZy5oIHdoaWNoIGlzIGEKKyAgICAgICAgICAgd2VpcmQgcGxhY2UgdG8gcHV0
IGl0LgorCisgICAgICAgIDQuIFJlbW92ZWQgZnJlZXplR2lnYWNhZ2VDb25maWcoKSwgdW5mcmVl
emVHaWdhY2FnZUNvbmZpZygpLCBhbmQKKyAgICAgICAgICAgcGVybWFuZW50bHlGcmVlemVHaWdh
Y2FnZUNvbmZpZygpLgorCisgICAgICAgICAgIEl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSB0byB0
ZW1wb3JhcmlseSBmcmVlemUgYW5kIHVuZnJlZXplIHRoZSBHaWdhY2FnZTo6Q29uZmlnCisgICAg
ICAgICAgIGJlY2F1c2UgaXQgbm93IHNoYXJlIHRoZSBzYW1lIG1lbW9yeSBwYWdlIHdpdGggaGln
aGVyIGxldmVsIENvbmZpZ3MuCisKKyAgICAgICAgICAgcGVybWFuZW50bHlGcmVlemVHaWdhY2Fn
ZUNvbmZpZygpIGlzIG5vIGxvbmdlciBuZWVkZWQgYmVjYXVzZSBpdCBpcyBzdWJzdW1lZAorICAg
ICAgICAgICBieSBXVEY6OkNvbmZpZzo6cGVybWFuZW50bHlGcmVlemUoKSwgd2hpY2ggd2lsbCBm
cmVlemUgdGhlIGVudGlyZSBXZWJDb25maWc6OmdfY29uZmlnCisgICAgICAgICAgIGJ1ZmZlci4K
KworICAgICAgICAgICBPbmUgZGlmZmVyZW5jZSBpbiBiZWhhdmlvciBoZXJlIGlzIHRoYXQgR2ln
YWNhZ2U6OkNvbmZpZyBkYXRhIHVzZWQgdG8gYmUgcGVybWFuZW50bHkKKyAgICAgICAgICAgZnJv
emVuIGFzIHNvb24gYXMgZm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKSBpcyBjYWxs
ZWQuICBOb3csIGl0IGlzbid0CisgICAgICAgICAgIHBlcm1hbmVudGx5IGZyb3plbiB1bnRpbCB0
aGUgZW5kIG9mIHRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlIGZpcnN0IEpTQzo6Vk0gaW5zdGFuY2UK
KyAgICAgICAgICAgaW4gdGhlIHByb2Nlc3MgKGp1c3QgbGlrZSB0aGUgb3RoZXIgQ29uZmlnIHJl
Y29yZHMpLiAgVGhpcyBzdGlsbCBndWFyYW50ZWVzIHRoYXQKKyAgICAgICAgICAgaXQgaXMgZnJv
emVuIGJlZm9yZSBhbnkgSlMgc2NyaXB0IGNhbiBydW4uCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYm1hbGxvYy9HaWdhY2FnZS5jcHA6CisgICAgICAgIChHaWdhY2FnZTo6ZW5zdXJlR2ln
YWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSk6Cisg
ICAgICAgIChHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UpOgorICAg
ICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKTogRGVsZXRlZC4K
KyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjp1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKTogRGVs
ZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpwZXJtYW5lbnRseUZyZWV6ZUdpZ2Fj
YWdlQ29uZmlnKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpVbmZyZWV6
ZUdpZ2FjYWdlQ29uZmlnU2NvcGU6OlVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSk6IERlbGV0
ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Nj
b3BlOjp+VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
bWFsbG9jL0dpZ2FjYWdlLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNh
Z2U6OkNvbmZpZzo6YmFzZVB0ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6
Q29uZmlnOjpzZXRCYXNlUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdl
Q29uZmlnLmg6IEFkZGVkLgorICAgICAgICAoR2lnYWNhZ2U6OkNvbmZpZzo6YmFzZVB0ciBjb25z
dCk6CisgICAgICAgIChHaWdhY2FnZTo6Q29uZmlnOjpzZXRCYXNlUHRyKToKKyAgICAgICAgKiBi
bWFsbG9jL0dpZ2FjYWdlS2luZC5oOiBBZGRlZC4KKwogMjAyMC0wNS0yMyAgQ2FpbyBMaW1hICA8
dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW2JtYWxsb2NdIEZpeCBPT00gZXJyb3Jz
IG9uIE1JUFMgYWZ0ZXIgcjI2MTY2NwpJbmRleDogU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDI2MjM2MSkKKysrIFNvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC02OSw2ICs2OSw4IEBAIHNldChibWFsbG9jX1BVQkxJQ19IRUFERVJTCiAgICAgYm1hbGxv
Yy9GcmVlTGlzdC5oCiAgICAgYm1hbGxvYy9GcmVlTGlzdElubGluZXMuaAogICAgIGJtYWxsb2Mv
R2lnYWNhZ2UuaAorICAgIGJtYWxsb2MvR2lnYWNhZ2VDb25maWcuaAorICAgIGJtYWxsb2MvR2ln
YWNhZ2VLaW5kLmgKICAgICBibWFsbG9jL0hlYXAuaAogICAgIGJtYWxsb2MvSGVhcENvbnN0YW50
cy5oCiAgICAgYm1hbGxvYy9IZWFwS2luZC5oCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjIzNjEpCisrKyBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MSw2ICsxNTEsOCBAQAogCQlFQjE3RDExMTIzQkZDRDQyMDAyMDkzQTcgLyog
SGVhcENvbnN0YW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFQjE3RDExMDIzQkZDOEM0MDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5jcHAgKi87
IH07CiAJCUVCMTdEMTEyMjNCRkNEN0EwMDIwOTNBNyAvKiBIZWFwQ29uc3RhbnRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjE3RDEwRTIzQkU2OTFE
MDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUZFNDhCRDNCMjMyMUU4RDcwMEYxMzZEMCAvKiBGYWlsdXJl
QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTQ4QkQzQTIzMjFFOENDMDBGMTM2RDAgLyogRmFpbHVyZUFjdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFQzNBMzkzMjQ4NDZBODEwMDM5
NUI1NCAvKiBHaWdhY2FnZUNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkVDM0EzOTIyNDg0NkE2RDAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29uZmln
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVD
M0EzOTUyNDg0NzFGRTAwMzk1QjU0IC8qIEdpZ2FjYWdlS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDM0EzOTQyNDg0NzFGRTAwMzk1QjU0IC8q
IEdpZ2FjYWdlS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTMwNyw2ICszMDksOCBAQAogCQlFQjE3RDEw
RTIzQkU2OTFEMDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBIZWFwQ29uc3RhbnRzLmg7IHBhdGggPSBibWFsbG9jL0hlYXBDb25zdGFu
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUIxN0QxMTAyM0JGQzhDNDAwMjA5
M0E3IC8qIEhlYXBDb25zdGFudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gSGVhcENvbnN0YW50cy5jcHA7IHBhdGggPSBibWFsbG9jL0hlYXBDb25zdGFudHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTQ4QkQzQTIzMjFFOENDMDBGMTM2RDAg
LyogRmFpbHVyZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGYWls
dXJlQWN0aW9uLmg7IHBhdGggPSBibWFsbG9jL0ZhaWx1cmVBY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkVDM0EzOTIyNDg0NkE2RDAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29u
ZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdpZ2FjYWdlQ29uZmlnLmg7
IHBhdGggPSBibWFsbG9jL0dpZ2FjYWdlQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFQzNBMzk0MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR2lnYWNhZ2VLaW5kLmg7IHBhdGggPSBibWFsbG9j
L0dpZ2FjYWdlS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCkBAIC00ODYsNiArNDkwLDggQEAKIAkJCQlGRTQ4QkQzQTIzMjFFOENDMDBG
MTM2RDAgLyogRmFpbHVyZUFjdGlvbi5oICovLAogCQkJCTBGNUJGMTRFMUYyMkRFQUYwMDI5RDkx
RCAvKiBHaWdhY2FnZS5jcHAgKi8sCiAJCQkJMEY1QkYxNEMxRjIyQjBDMzAwMjlEOTFEIC8qIEdp
Z2FjYWdlLmggKi8sCisJCQkJRkVDM0EzOTIyNDg0NkE2RDAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29u
ZmlnLmggKi8sCisJCQkJRkVDM0EzOTQyNDg0NzFGRTAwMzk1QjU0IC8qIEdpZ2FjYWdlS2luZC5o
ICovLAogCQkJCTE0REEzMjBFMTg4NzVEOUYwMDcyNjlFMCAvKiBIZWFwLmNwcCAqLywKIAkJCQkx
NERBMzIwQzE4ODc1QjA5MDA3MjY5RTAgLyogSGVhcC5oICovLAogCQkJCUVCMTdEMTEwMjNCRkM4
QzQwMDIwOTNBNyAvKiBIZWFwQ29uc3RhbnRzLmNwcCAqLywKQEAgLTYwNiw2ICs2MTIsNyBAQAog
CQkJCUZFNDhCRDNCMjMyMUU4RDcwMEYxMzZEMCAvKiBGYWlsdXJlQWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNERENzhDODE4RjQ4RDc1MDA5NTA3MDIgLyogRml4ZWRWZWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGN0VCODQ0MUY5NTQxQjAwMEYxQUJDQiAvKiBGcmVlTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkVDM0EzOTMyNDg0NkE4MTAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29u
ZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdFQjgyOTFGOTU0MUIwMDBGMUFCQ0IgLyogRnJl
ZUxpc3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVCRjE0RDFGMjJCMEMzMDAyOUQ5
MUQgLyogR2lnYWNhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MDAyNzQ5MThGODlDMTMwMDEx
NUM5NyAvKiBIZWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTY1NCw2ICs2NjEsNyBAQAogCQkJCUUz
NzhBOUUwMjQ2QjY4NzUwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzMjhEODREMjNDRUIzODkwMDU0NUIxOCAvKiBQYWNrZWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNUJGMTQ5MUYyMkE4RDgwMDI5RDkxRCAvKiBQZXJIZWFwS2luZC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkVDM0EzOTUyNDg0NzFGRTAwMzk1QjU0IC8qIEdpZ2FjYWdlS2luZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4Q0IxOEY0OEQ3NTAwOTUwNzAyIC8qIFBlclByb2Nlc3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OENDMThGNDhENzUwMDk1MDcwMiAvKiBQZXJUaHJl
YWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5NUFCM0M3MjA2RTBEMzQwMDc0RkU3NiAvKiBQaHlz
aWNhbFBhZ2VNYXAuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9HaWdhY2FnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdh
Y2FnZS5jcHAJKHJldmlzaW9uIDI2MjM2MSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2ln
YWNhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBDYWxsYmFj
ayB7CiAgICAgdm9pZCogYXJndW1lbnQgeyBudWxscHRyIH07CiB9OwogCi19Cit9IC8vIG5hbWVz
cGFjZSBHaWdhY2FnZQogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKQEAgLTc5LDc1ICs3OSwxMCBA
QCBuYW1lc3BhY2UgR2lnYWNhZ2UgewogLy8gSWYgdGhpcyB3ZXJlIGxlc3MgdGhhbiAzMkdCLCB0
aG9zZSBPT0IgYWNjZXNzZXMgY291bGQgcmVhY2ggb3V0c2lkZSBvZiB0aGUgY2FnZS4KIGNvbnN0
ZXhwciBzaXplX3QgZ2lnYWNhZ2VSdW53YXkgPSAzMmxsdSAqIGJtYWxsb2M6OlNpemVzOjpHQjsK
IAotYWxpZ25hcyhjb25maWdTaXplVG9Qcm90ZWN0KSBDb25maWcgZ19naWdhY2FnZUNvbmZpZzsK
LQogdXNpbmcgbmFtZXNwYWNlIGJtYWxsb2M7CiAKIG5hbWVzcGFjZSB7CiAKLSNpZiBCT1MoREFS
V0lOKQotZW51bSB7Ci0gICAgQWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcyA9IGZhbHNl
LAotICAgIERpc2FsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMgPSB0cnVlCi19OwotI2Vu
ZGlmCi0KLXN0YXRpYyB2b2lkIGZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCkKLXsKLSAgICBpbnQgcmVz
dWx0OwotI2lmIEJPUyhEQVJXSU4pCi0gICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tf
c2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfZ2lnYWNhZ2VDb25maWcp
LCBjb25maWdTaXplVG9Qcm90ZWN0LCBBbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzLCBW
TV9QUk9UX1JFQUQpOwotI2Vsc2UKLSAgICByZXN1bHQgPSBtcHJvdGVjdCgmZ19naWdhY2FnZUNv
bmZpZywgY29uZmlnU2l6ZVRvUHJvdGVjdCwgUFJPVF9SRUFEKTsKLSNlbmRpZgotICAgIFJFTEVB
U0VfQkFTU0VSVCghcmVzdWx0KTsKLX0KLQotc3RhdGljIHZvaWQgdW5mcmVlemVHaWdhY2FnZUNv
bmZpZygpCi17Ci0gICAgUkVMRUFTRV9CQVNTRVJUKCFnX2dpZ2FjYWdlQ29uZmlnLmlzUGVybWFu
ZW50bHlGcm96ZW4pOwotICAgIGludCByZXN1bHQ7Ci0jaWYgQk9TKERBUldJTikKLSAgICByZXN1
bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRk
cmVzc190PigmZ19naWdhY2FnZUNvbmZpZyksIGNvbmZpZ1NpemVUb1Byb3RlY3QsIEFsbG93UGVy
bWlzc2lvbkNoYW5nZXNBZnRlclRoaXMsIFZNX1BST1RfUkVBRCB8IFZNX1BST1RfV1JJVEUpOwot
I2Vsc2UKLSAgICByZXN1bHQgPSBtcHJvdGVjdCgmZ19naWdhY2FnZUNvbmZpZywgY29uZmlnU2l6
ZVRvUHJvdGVjdCwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7Ci0jZW5kaWYKLSAgICBSRUxFQVNF
X0JBU1NFUlQoIXJlc3VsdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHBlcm1hbmVudGx5RnJlZXplR2ln
YWNhZ2VDb25maWcoKQotewotICAgIHN0YXRpYyBNdXRleCBjb25maWdMb2NrOwotICAgIExvY2tI
b2xkZXIgbG9ja2luZyhjb25maWdMb2NrKTsKLQotICAgIGlmICghZ19naWdhY2FnZUNvbmZpZy5p
c1Blcm1hbmVudGx5RnJvemVuKSB7Ci0gICAgICAgIHVuZnJlZXplR2lnYWNhZ2VDb25maWcoKTsK
LSAgICAgICAgZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuID0gdHJ1ZTsKLSAg
ICB9Ci0KLSAgICAvLyBUaGVyZSdzIG5vIGdvaW5nIGJhY2sgbm93IQotICAgIGludCByZXN1bHQ7
Ci0jaWYgQk9TKERBUldJTikKLSAgICByZXN1bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFza19zZWxm
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190PigmZ19naWdhY2FnZUNvbmZpZyksIGNv
bmZpZ1NpemVUb1Byb3RlY3QsIERpc2FsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMsIFZN
X1BST1RfUkVBRCk7Ci0jZWxzZQotICAgIHJlc3VsdCA9IG1wcm90ZWN0KCZnX2dpZ2FjYWdlQ29u
ZmlnLCBjb25maWdTaXplVG9Qcm90ZWN0LCBQUk9UX1JFQUQpOwotI2VuZGlmCi0gICAgUkVMRUFT
RV9CQVNTRVJUKCFyZXN1bHQpOwotfQotCi1jbGFzcyBVbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2Nv
cGUgewotcHVibGljOgotICAgIFVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSgpCi0gICAgewot
ICAgICAgICB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7Ci0gICAgfQotICAgIAotICAgIH5VbmZy
ZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGUoKQotICAgIHsKLSAgICAgICAgZnJlZXplR2lnYWNhZ2VD
b25maWcoKTsKLSAgICB9Ci19OwotCiBzaXplX3QgcnVud2F5U2l6ZShLaW5kIGtpbmQpCiB7CiAg
ICAgc3dpdGNoIChraW5kKSB7CkBAIC0yNDAsNyArMTc1LDYgQEAgdm9pZCBlbnN1cmVHaWdhY2Fn
ZSgpCiAgICAgICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLnRvdGFsU2l6ZSA9IHRvdGFsU2l6ZTsK
ICAgICAgICAgICAgIHZtRGVhbGxvY2F0ZVBoeXNpY2FsUGFnZXMoYmFzZSwgdG90YWxTaXplKTsK
ICAgICAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuaXNFbmFibGVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7CiAgICAgICAgIH0pOwogfQogCkBAIC0yNjQsNyAr
MTk4LDYgQEAgdm9pZCBkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UoKQogICAgIGZvciAoQ2FsbGJh
Y2smIGNhbGxiYWNrIDogY2FsbGJhY2tzLmNhbGxiYWNrcykKICAgICAgICAgY2FsbGJhY2suZnVu
Y3Rpb24oY2FsbGJhY2suYXJndW1lbnQpOwogICAgIGNhbGxiYWNrcy5jYWxsYmFja3Muc2hyaW5r
KDApOwotICAgIFVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSB1bmZyZWV6ZVNjb3BlOwogICAg
IGdfZ2lnYWNhZ2VDb25maWcuYmFzZVB0cnNbUHJpbWl0aXZlXSA9IG51bGxwdHI7CiB9CiAKQEAg
LTMxMywxMCArMjQ2LDggQEAgdm9pZCBmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgp
CiAgICAgICAgICYmIChHSUdBQ0FHRV9BTExPQ0FUSU9OX0NBTl9GQUlMIHx8ICFnX2dpZ2FjYWdl
Q29uZmlnLnNob3VsZEJlRW5hYmxlZCB8fCB2ZXJpZnlHaWdhY2FnZUlzRW5hYmxlZCgpKSk7CiAK
ICAgICBpZiAoIWdfZ2lnYWNhZ2VDb25maWcuZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0Zv
cmJpZGRlbikgewotICAgICAgICB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7CiAgICAgICAgIGdf
Z2lnYWNhZ2VDb25maWcuZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbiA9IHRy
dWU7CiAgICAgfQotICAgIHBlcm1hbmVudGx5RnJlZXplR2lnYWNhZ2VDb25maWcoKTsKICAgICBS
RUxFQVNFX0JBU1NFUlQoaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbigpKTsK
IH0KIApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAkocmV2aXNpb24gMjYyMzYxKQor
KysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjUsMTEgKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWxnb3JpdGhtLmgi
CiAjaW5jbHVkZSAiQkFzc2VydC5oIgogI2luY2x1ZGUgIkJFeHBvcnQuaCIKICNpbmNsdWRlICJC
SW5saW5lLmgiCiAjaW5jbHVkZSAiQlBsYXRmb3JtLmgiCisjaW5jbHVkZSAiR2lnYWNhZ2VDb25m
aWcuaCIKICNpbmNsdWRlICJTaXplcy5oIgogI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVkZSA8
aW50dHlwZXMuaD4KQEAgLTQ0LDEyICs0NCw2IEBACiAKIG5hbWVzcGFjZSBHaWdhY2FnZSB7CiAK
LWVudW0gS2luZCB7Ci0gICAgUHJpbWl0aXZlLAotICAgIEpTVmFsdWUsCi0gICAgTnVtYmVyT2ZL
aW5kcwotfTsKLQogQklOTElORSBjb25zdCBjaGFyKiBuYW1lKEtpbmQga2luZCkKIHsKICAgICBz
d2l0Y2ggKGtpbmQpIHsKQEAgLTY2LDggKzYwLDYgQEAgQklOTElORSBjb25zdCBjaGFyKiBuYW1l
KEtpbmQga2luZCkKIAogI2lmIEdJR0FDQUdFX0VOQUJMRUQKIAotY29uc3RleHByIHNpemVfdCBj
b25maWdTaXplVG9Qcm90ZWN0ID0gMTYgKiBibWFsbG9jOjpTaXplczo6a0I7Ci0KICNpZiBCT1Nf
RUZGRUNUSVZFX0FERFJFU1NfV0lEVEggPCA0OAogY29uc3RleHByIHNpemVfdCBwcmltaXRpdmVH
aWdhY2FnZVNpemUgPSAyICogYm1hbGxvYzo6U2l6ZXM6OkdCOwogY29uc3RleHByIHNpemVfdCBq
c1ZhbHVlR2lnYWNhZ2VTaXplID0gMiAqIGJtYWxsb2M6OlNpemVzOjpHQjsKQEAgLTk3LDQ3ICs4
OSw2IEBAIGNvbnN0ZXhwciBzaXplX3QgZ2lnYWNhZ2VTaXplVG9NYXNrKHNpemUKIGNvbnN0ZXhw
ciBzaXplX3QgcHJpbWl0aXZlR2lnYWNhZ2VNYXNrID0gZ2lnYWNhZ2VTaXplVG9NYXNrKHByaW1p
dGl2ZUdpZ2FjYWdlU2l6ZSk7CiBjb25zdGV4cHIgc2l6ZV90IGpzVmFsdWVHaWdhY2FnZU1hc2sg
PSBnaWdhY2FnZVNpemVUb01hc2soanNWYWx1ZUdpZ2FjYWdlU2l6ZSk7CiAKLXN0cnVjdCBDb25m
aWcgewotICAgIHZvaWQqIGJhc2VQdHIoS2luZCBraW5kKSBjb25zdAotICAgIHsKLSAgICAgICAg
UkVMRUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRzKTsKLSAgICAgICAgcmV0dXJuIGJh
c2VQdHJzW2tpbmRdOwotICAgIH0KLQotICAgIHZvaWQgc2V0QmFzZVB0cihLaW5kIGtpbmQsIHZv
aWQqIHB0cikKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQkFTU0VSVChraW5kIDwgTnVtYmVyT2ZL
aW5kcyk7Ci0gICAgICAgIGJhc2VQdHJzW2tpbmRdID0gcHRyOwotICAgIH0KLQotICAgIHVuaW9u
IHsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIC8vIEFsbCB0aGUgZmllbGRzIGluIHRo
aXMgc3RydWN0IHNob3VsZCBiZSBjaG9zZW4gc3VjaCB0aGF0IHRoZWlyCi0gICAgICAgICAgICAv
LyBpbml0aWFsIHZhbHVlIGlzIDAgLyBudWxsIC8gZmFsc3kgYmVjYXVzZSBDb25maWcgaXMgaW5z
dGFudGlhdGVkCi0gICAgICAgICAgICAvLyBhcyBhIGdsb2JhbCBzaW5nbGV0b24uCi0KLSAgICAg
ICAgICAgIGJvb2wgaXNFbmFibGVkOwotICAgICAgICAgICAgYm9vbCBpc1Blcm1hbmVudGx5RnJv
emVuOwotICAgICAgICAgICAgYm9vbCBkaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlk
ZGVuOwotICAgICAgICAgICAgYm9vbCBzaG91bGRCZUVuYWJsZWQ7Ci0KLSAgICAgICAgICAgIC8v
IFdlIHdvdWxkIGxpa2UgdG8ganVzdCBwdXQgdGhlIHN0ZDo6b25jZV9mbGFnIGZvciB0aGVzZSBm
dW5jdGlvbnMKLSAgICAgICAgICAgIC8vIGhlcmUsIGJ1dCB3ZSBjYW4ndCBiZWNhdXNlIHN0ZDo6
b25jZV9mbGFnIGhhcyBhIGltcGxpY2l0bHktZGVsZXRlZAotICAgICAgICAgICAgLy8gZGVmYXVs
dCBjb25zdHJ1Y3Rvci4gU28sIHdlIHVzZSBhIGJvb2xlYW4gaW5zdGVhZC4KLSAgICAgICAgICAg
IGJvb2wgc2hvdWxkQmVFbmFibGVkSGFzQmVlbkNhbGxlZDsKLSAgICAgICAgICAgIGJvb2wgZW5z
dXJlR2lnYWNhZ2VIYXNCZWVuQ2FsbGVkOwotCi0gICAgICAgICAgICB2b2lkKiBzdGFydDsKLSAg
ICAgICAgICAgIHNpemVfdCB0b3RhbFNpemU7Ci0gICAgICAgICAgICB2b2lkKiBiYXNlUHRyc1tO
dW1iZXJPZktpbmRzXTsKLSAgICAgICAgfTsKLSAgICAgICAgY2hhciBlbnN1cmVTaXplW2NvbmZp
Z1NpemVUb1Byb3RlY3RdOwotICAgIH07Ci19Owotc3RhdGljX2Fzc2VydChzaXplb2YoQ29uZmln
KSA9PSBjb25maWdTaXplVG9Qcm90ZWN0LCAiR2lnYWNhZ2UgQ29uZmlnIG11c3QgZml0IGluIGNv
bmZpZ1NpemVUb1Byb3RlY3QiKTsKLQotZXh0ZXJuICJDIiBhbGlnbmFzKGNvbmZpZ1NpemVUb1By
b3RlY3QpIEJFWFBPUlQgQ29uZmlnIGdfZ2lnYWNhZ2VDb25maWc7Ci0KIC8vIFRoZXNlIGNvbnN0
YW50cyBhcmUgbmVlZGVkIGJ5IHRoZSBMTEludC4KIGNvbnN0ZXhwciBwdHJkaWZmX3Qgb2Zmc2V0
T2ZQcmltaXRpdmVHaWdhY2FnZUJhc2VQdHIgPSBLaW5kOjpQcmltaXRpdmUgKiBzaXplb2Yodm9p
ZCopOwogY29uc3RleHByIHB0cmRpZmZfdCBvZmZzZXRPZkpTVmFsdWVHaWdhY2FnZUJhc2VQdHIg
PSBLaW5kOjpKU1ZhbHVlICogc2l6ZW9mKHZvaWQqKTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvR2lnYWNhZ2VDb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0dpZ2FjYWdlQ29uZmlnLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9HaWdhY2FnZUNvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkFsZ29yaXRobS5oIgorI2luY2x1ZGUgIkdpZ2FjYWdlS2luZC5oIgorI2lu
Y2x1ZGUgIlN0ZExpYkV4dHJhcy5oIgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisKK25hbWVzcGFj
ZSBXZWJDb25maWcgeworCit1c2luZyBTbG90ID0gdWludDY0X3Q7CitleHRlcm4gIkMiIFNsb3Qg
Z19jb25maWdbXTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29uZmlnCisKK25hbWVzcGFjZSBHaWdh
Y2FnZSB7CisKK3N0cnVjdCBDb25maWcgeworICAgIHZvaWQqIGJhc2VQdHIoS2luZCBraW5kKSBj
b25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRz
KTsKKyAgICAgICAgcmV0dXJuIGJhc2VQdHJzW2tpbmRdOworICAgIH0KKworICAgIHZvaWQgc2V0
QmFzZVB0cihLaW5kIGtpbmQsIHZvaWQqIHB0cikKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQkFT
U0VSVChraW5kIDwgTnVtYmVyT2ZLaW5kcyk7CisgICAgICAgIGJhc2VQdHJzW2tpbmRdID0gcHRy
OworICAgIH0KKworICAgIC8vIEFsbCB0aGUgZmllbGRzIGluIHRoaXMgc3RydWN0IHNob3VsZCBi
ZSBjaG9zZW4gc3VjaCB0aGF0IHRoZWlyCisgICAgLy8gaW5pdGlhbCB2YWx1ZSBpcyAwIC8gbnVs
bCAvIGZhbHN5IGJlY2F1c2UgQ29uZmlnIGlzIGluc3RhbnRpYXRlZAorICAgIC8vIGFzIGEgZ2xv
YmFsIHNpbmdsZXRvbi4KKworICAgIGJvb2wgaXNQZXJtYW5lbnRseUZyb3plbjsgLy8gV2lsbCBi
ZSBzZXQgYnkgdGhlIGNsaWVudCBpZiB0aGUgQ29uZmlnIGdldHMgZnJvemVuLgorICAgIGJvb2wg
aXNFbmFibGVkOworICAgIGJvb2wgZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRl
bjsKKyAgICBib29sIHNob3VsZEJlRW5hYmxlZDsKKworICAgIC8vIFdlIHdvdWxkIGxpa2UgdG8g
anVzdCBwdXQgdGhlIHN0ZDo6b25jZV9mbGFnIGZvciB0aGVzZSBmdW5jdGlvbnMKKyAgICAvLyBo
ZXJlLCBidXQgd2UgY2FuJ3QgYmVjYXVzZSBzdGQ6Om9uY2VfZmxhZyBoYXMgYSBpbXBsaWNpdGx5
LWRlbGV0ZWQKKyAgICAvLyBkZWZhdWx0IGNvbnN0cnVjdG9yLiBTbywgd2UgdXNlIGEgYm9vbGVh
biBpbnN0ZWFkLgorICAgIGJvb2wgc2hvdWxkQmVFbmFibGVkSGFzQmVlbkNhbGxlZDsKKyAgICBi
b29sIGVuc3VyZUdpZ2FjYWdlSGFzQmVlbkNhbGxlZDsKKworICAgIHZvaWQqIHN0YXJ0OworICAg
IHNpemVfdCB0b3RhbFNpemU7CisgICAgdm9pZCogYmFzZVB0cnNbTnVtYmVyT2ZLaW5kc107Cit9
OworCitjb25zdGV4cHIgc2l6ZV90IHN0YXJ0U2xvdE9mR2lnYWNhZ2VDb25maWcgPSAwOworY29u
c3RleHByIHNpemVfdCBzdGFydE9mZnNldE9mR2lnYWNhZ2VDb25maWcgPSBzdGFydFNsb3RPZkdp
Z2FjYWdlQ29uZmlnICogc2l6ZW9mKFdlYkNvbmZpZzo6U2xvdCk7CisKK2NvbnN0ZXhwciBzaXpl
X3QgcmVzZXJ2ZWRTbG90c0ZvckdpZ2FjYWdlQ29uZmlnID0gNjsKK2NvbnN0ZXhwciBzaXplX3Qg
cmVzZXJ2ZWRCeXRlc0ZvckdpZ2FjYWdlQ29uZmlnID0gcmVzZXJ2ZWRTbG90c0ZvckdpZ2FjYWdl
Q29uZmlnICogc2l6ZW9mKFdlYkNvbmZpZzo6U2xvdCk7CisKK2NvbnN0ZXhwciBzaXplX3QgYWxp
Z25tZW50T2ZHaWdhY2FnZUNvbmZpZyA9IHN0ZDo6YWxpZ25tZW50X29mPEdpZ2FjYWdlOjpDb25m
aWc+Ojp2YWx1ZTsKKworc3RhdGljX2Fzc2VydChzaXplb2YoR2lnYWNhZ2U6OkNvbmZpZykgPD0g
cmVzZXJ2ZWRCeXRlc0ZvckdpZ2FjYWdlQ29uZmlnKTsKK3N0YXRpY19hc3NlcnQoYm1hbGxvYzo6
cm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkdpZ2FjYWdlQ29uZmlnPihzdGFydE9mZnNl
dE9mR2lnYWNhZ2VDb25maWcpID09IHN0YXJ0T2Zmc2V0T2ZHaWdhY2FnZUNvbmZpZyk7CisKKyNk
ZWZpbmUgZ19naWdhY2FnZUNvbmZpZyAoKmJtYWxsb2M6OmJpdHdpc2VfY2FzdDxHaWdhY2FnZTo6
Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbR2lnYWNhZ2U6OnN0YXJ0U2xvdE9mR2lnYWNh
Z2VDb25maWddKSkKKworfSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UKSW5kZXg6IFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvR2lnYWNhZ2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9HaWdhY2FnZUtpbmQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0dpZ2FjYWdlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIEdpZ2FjYWdlIHsKKworZW51bSBLaW5kIHsKKyAgICBQcmltaXRpdmUsCisg
ICAgSlNWYWx1ZSwKKyAgICBOdW1iZXJPZktpbmRzCit9OworCit9IC8vIG5hbWVzcGFjZSBHaWdh
Y2FnZQpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9tYm1hbGxvYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9tYm1hbGxvYy5jcHAJKHJldmlzaW9uIDI2MjM2
MSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvbWJtYWxsb2MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiwxNSBAQAogI2luY2x1ZGUgImJtYWxsb2MuaCIKIAogI2luY2x1ZGUgIkJF
eHBvcnQuaCIKKyNpbmNsdWRlICJHaWdhY2FnZUNvbmZpZy5oIgorCituYW1lc3BhY2UgV2ViQ29u
ZmlnIHsKKworc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSAxNiAqIDEwMjQ7CisKK2FsaWdu
YXMoQ29uZmlnU2l6ZVRvUHJvdGVjdCkgQkVYUE9SVCBTbG90IGdfY29uZmlnW0NvbmZpZ1NpemVU
b1Byb3RlY3QgLyBzaXplb2YoU2xvdCldOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb25maWcKIAog
ZXh0ZXJuICJDIiB7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400715</attachid>
            <date>2020-05-31 18:40:33 -0700</date>
            <delta_ts>2020-05-31 22:59:53 -0700</delta_ts>
            <desc>work in progress for EWS testing.</desc>
            <filename>bug-212585.patch</filename>
            <type>text/plain</type>
            <size>29494</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDIwLTA1LTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29u
ZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMjU4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvSlNDQ29uZmln
Lmg6CisgICAgICAgIChKU0M6OkNvbmZpZzo6aXNQZXJtYW5lbnRseUZyb3plbik6CisKIDIwMjAt
MDUtMzEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBK
U0M6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXVEY6OkNvbmZpZyBpbnN0ZWFkIG9mIGl0cyBv
d24uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTQzMiw3ICs0MzIsNyBAQCBtYWNybyBjYWdlZFByaW1pdGl2ZShwdHIsIGxlbmd0aCwgc2NyYXRj
CiAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHB0cgogICAgIGVuZAogICAgIGlmIEdJR0FDQUdFX0VO
QUJMRUQKLSAgICAgICAgY2FnZShfZ19naWdhY2FnZUNvbmZpZyArIEdpZ2FjYWdlOjpDb25maWc6
OmJhc2VQdHJzICsgR2lnYWNhZ2VQcmltaXRpdmVCYXNlUHRyT2Zmc2V0LCBjb25zdGV4cHIgR2ln
YWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgc291cmNlLCBzY3JhdGNoKQorICAgICAgICBj
YWdlKF9nX2NvbmZpZyArIChjb25zdGV4cHIgR2lnYWNhZ2U6OnN0YXJ0T2Zmc2V0T2ZHaWdhY2Fn
ZUNvbmZpZykgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2FjYWdlUHJpbWl0aXZl
QmFzZVB0ck9mZnNldCwgY29uc3RleHByIEdpZ2FjYWdlOjpwcmltaXRpdmVHaWdhY2FnZU1hc2ss
IHNvdXJjZSwgc2NyYXRjaCkKICAgICAgICAgaWYgQVJNNjRFCiAgICAgICAgICAgICBjb25zdCBu
dW1iZXJPZlBBQ0JpdHMgPSBjb25zdGV4cHIgTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUEFDQml0
cwogICAgICAgICAgICAgYmZpcSBzY3JhdGNoMiwgMCwgNjQgLSBudW1iZXJPZlBBQ0JpdHMsIHB0
cgpAQCAtNDQ2LDcgKzQ0Niw3IEBAIGVuZAogbWFjcm8gbG9hZENhZ2VkSlNWYWx1ZShzb3VyY2Us
IGRlc3QsIHNjcmF0Y2hPckxlbmd0aCkKICAgICBsb2FkcCBzb3VyY2UsIGRlc3QKICAgICBpZiBH
SUdBQ0FHRV9FTkFCTEVECi0gICAgICAgIGNhZ2UoX2dfZ2lnYWNhZ2VDb25maWcgKyBHaWdhY2Fn
ZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2FjYWdlSlNWYWx1ZUJhc2VQdHJPZmZzZXQsIGNvbnN0
ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2FjYWdlTWFzaywgZGVzdCwgc2NyYXRjaE9yTGVuZ3Ro
KQorICAgICAgICBjYWdlKF9nX2NvbmZpZyArIChjb25zdGV4cHIgR2lnYWNhZ2U6OnN0YXJ0T2Zm
c2V0T2ZHaWdhY2FnZUNvbmZpZykgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2Fj
YWdlSlNWYWx1ZUJhc2VQdHJPZmZzZXQsIGNvbnN0ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2Fj
YWdlTWFzaywgZGVzdCwgc2NyYXRjaE9yTGVuZ3RoKQogICAgIGVuZAogZW5kCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCShyZXZpc2lvbiAyNjIzNjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgZW5hYmxlUmVz
dHJpY3RlZE9wdGlvbnMoKTsKICAgICB9CiAKLSAgICBib29sIGlzUGVybWFuZW50bHlGcm96ZW4o
KSB7IHJldHVybiBXVEY6Omdfd3RmQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW47IH0KKyAgICBi
b29sIGlzUGVybWFuZW50bHlGcm96ZW4oKSB7IHJldHVybiBnX3d0ZkNvbmZpZy5pc1Blcm1hbmVu
dGx5RnJvemVuOyB9CiAKICAgICAvLyBBbGwgdGhlIGZpZWxkcyBpbiB0aGlzIHN0cnVjdCBzaG91
bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgogICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAv
IG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKQEAgLTgyLDEyICs4
MiwxMSBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICBXVEY6OlB0clRhZ0xvb2t1cCBwdHJUYWdMb29r
dXBSZWNvcmQ7CiB9OwogCi1jb25zdGV4cHIgc2l6ZV90IG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5z
aW9uID0gb2Zmc2V0b2YoV1RGOjpDb25maWcsIHNwYWNlRm9yRXh0ZW5zaW9ucyk7CiBjb25zdGV4
cHIgc2l6ZV90IGFsaWdubWVudE9mSlNDQ29uZmlnID0gc3RkOjphbGlnbm1lbnRfb2Y8SlNDOjpD
b25maWc+Ojp2YWx1ZTsKIAotc3RhdGljX2Fzc2VydChzaXplb2YoSlNDOjpDb25maWcpIDw9IChz
aXplb2YoV1RGOjpDb25maWcpIC0gb2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24pKTsKLXN0YXRp
Y19hc3NlcnQocm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkpTQ0NvbmZpZz4ob2Zmc2V0
T2ZXVEZDb25maWdFeHRlbnNpb24pID09IG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uKTsKK3N0
YXRpY19hc3NlcnQoV1RGOjpvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbiArIHNpemVvZihKU0M6
OkNvbmZpZykgPD0gV1RGOjpDb25maWdTaXplVG9Qcm90ZWN0KTsKK3N0YXRpY19hc3NlcnQocm91
bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkpTQ0NvbmZpZz4oV1RGOjpvZmZzZXRPZldURkNv
bmZpZ0V4dGVuc2lvbikgPT0gV1RGOjpvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbik7CiAKLSNk
ZWZpbmUgZ19qc2NDb25maWcgKCpiaXR3aXNlX2Nhc3Q8Q29uZmlnKj4oJldURjo6Z193dGZDb25m
aWcuc3BhY2VGb3JFeHRlbnNpb25zKSkKKyNkZWZpbmUgZ19qc2NDb25maWcgKCpiaXR3aXNlX2Nh
c3Q8SlNDOjpDb25maWcqPigmZ193dGZDb25maWcuc3BhY2VGb3JFeHRlbnNpb25zKSkKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL1dURi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0wNS0zMSAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIEdpZ2FjYWdlOjpD
b25maWcgdG8gdXNlIHN0b3JhZ2UgaW4gV2ViQ29uZmlnOjpnX2NvbmZpZyBpbnN0ZWFkIG9mIGl0
cyBvd24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTI1ODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzODEyNDg3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5vdyB0aGluayBvZiB0aGUgdmFy
aW91cyBDb25maWcgcmVjb3JkcyBhcyBiZWluZyBhbGxvY2F0ZWQgZnJvbSBwYXJ0cyBvZiBhCisg
ICAgICAgIFdlYkNvbmZpZzo6Z19jb25maWcgYnVmZmVyLiAgV1RGOjpDb25maWcgd2lsbCBtYW5h
Z2UgdGhlIG1lY2hhbmljcyBvZiBmcmVlemluZworICAgICAgICB0aGF0IGJ1ZmZlci4gIEFuZCB0
aGUgSlNDIFZNIGlzIHN0aWxsIHRoZSBkZXRlcm1pbmVyIG9mIGlmL3doZW4gdG8gZnJlZXplIHRo
ZQorICAgICAgICBidWZmZXIsIGFuZCBpdCB3aWxsIGRvIHRoaXMgYXQgdGhlIGVuZCBvZiB0aGUg
Y29uc3RydWN0aW9uIG9mIHRoZSB2ZXJ5IGZpcnN0CisgICAgICAgIFZNIGluc3RhbmNlIChhcyBi
ZWZvcmUpLgorCisgICAgICAgIEdpZ2FjYWdlOjpDb25maWcgcmVzZXJ2ZXMgc3BhY2UgaW4gV2Vi
Q29uZmlnOjpnX2NvbmZpZy4KKyAgICAgICAgV1RGOjpDb25maWcgd2lsbCBob25vciB0aGF0IHJl
c2VydmF0aW9uIGFuZCBwbGFjZSBpdHNlbGYgYWZ0ZXIgdGhhdC4KKyAgICAgICAgSlNDOjpDb25m
aWcgd2lsbCBjb250aW51ZSB0byBwbGFjZSBpdHNlbGYgYXQgV1RGOjpDb25maWc6OnNwYWNlRm9y
RXh0ZW5zaW9ucy4KKworICAgICAgICBUaGUgdXBzaWRlIG9mIHRoaXMgYXBwcm9hY2ggdGhpcyBp
cyB0aGF0IHdlIGNhbiBub3cgc2hhcmUgdGhlIHNhbWUgbWVtb3J5IHBhZ2UKKyAgICAgICAgZm9y
IGFsbCB0aGUgQ29uZmlncywgYW5kIGNhbiBmcmVlemUgdGhlbSBpbiBvbmUgZ28uCisKKyAgICAg
ICAgVGhlIGRvd25zaWRlIGlzIHRoYXQgZ19naWdhY2FnZUNvbmZpZywgZ193dGZDb25maWcsIGFu
ZCBnX2pzY0NvbmZpZyBub3cgaGF2ZSB0bworICAgICAgICBiZSBtYWNyb3MuICBUaGlzIHJlc3Vs
dHMgaW4gc29tZSB3ZWlyZG5lc3MgZS5nLiB0aGV5IGFyZSBubyBsb25nZXIgcXVhbGlmaWVkIGJ5
CisgICAgICAgIG5hbWVzcGFjZXM6IHJlZmVycmluZyB0byBXVEY6Omdfd3RmQ29uZmlnIGlzIG5v
dyBpbmNvcnJlY3QuCisKKyAgICAgICAgKiB3dGYvV1RGQ29uZmlnLmNwcDoKKyAgICAgICAgKFdU
Rjo6Q29uZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSk6CisgICAgICAgICogd3RmL1dURkNvbmZpZy5o
OgorICAgICAgICAoKTogRGVsZXRlZC4KKwogMjAyMC0wNS0zMSAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIEpTQzo6Q29uZmlnIHRvIHVzZSBzdG9yYWdl
IGluIFdURjo6Q29uZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1dURkNvbmZpZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmNw
cAkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgPHd0Zi9XVEZDb25maWcuaD4KIAorI2luY2x1ZGUgPHd0Zi9HaWdhY2FnZS5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNSw5
ICszNiwxMyBAQAogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiAjZW5kaWYKIAotbmFtZXNwYWNlIFdU
RiB7CituYW1lc3BhY2UgV2ViQ29uZmlnIHsKKworYWxpZ25hcyhXVEY6OkNvbmZpZ1NpemVUb1By
b3RlY3QpIFdURl9FWFBPUlRfUFJJVkFURSBTbG90IGdfY29uZmlnW1dURjo6Q29uZmlnU2l6ZVRv
UHJvdGVjdCAvIHNpemVvZihTbG90KV07CiAKLWFsaWduYXMoQ29uZmlnU2l6ZVRvUHJvdGVjdCkg
V1RGX0VYUE9SVF9QUklWQVRFIENvbmZpZyBnX3d0ZkNvbmZpZzsKK30gLy8gbmFtZXNwYWNlIFdl
YkNvbmZpZworCituYW1lc3BhY2UgV1RGIHsKIAogdm9pZCBDb25maWc6OnBlcm1hbmVudGx5RnJl
ZXplKCkKIHsKQEAgLTQ2LDggKzUxLDEyIEBAIHZvaWQgQ29uZmlnOjpwZXJtYW5lbnRseUZyZWV6
ZSgpCiAKICAgICBSRUxFQVNFX0FTU0VSVChyb3VuZFVwVG9NdWx0aXBsZU9mKHBhZ2VTaXplKCks
IENvbmZpZ1NpemVUb1Byb3RlY3QpID09IENvbmZpZ1NpemVUb1Byb3RlY3QpOwogCi0gICAgaWYg
KCFnX3d0ZkNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuKQorICAgIGlmICghZ193dGZDb25maWcu
aXNQZXJtYW5lbnRseUZyb3plbikgewogICAgICAgICBnX3d0ZkNvbmZpZy5pc1Blcm1hbmVudGx5
RnJvemVuID0gdHJ1ZTsKKyNpZiBHSUdBQ0FHRV9FTkFCTEVECisgICAgICAgIGdfZ2lnYWNhZ2VD
b25maWcuaXNQZXJtYW5lbnRseUZyb3plbiA9IHRydWU7CisjZW5kaWYKKyAgICB9CiAKICAgICBp
bnQgcmVzdWx0ID0gMDsKICNpZiBPUyhEQVJXSU4pCkBAIC01Nyw5ICs2Niw5IEBAIHZvaWQgQ29u
ZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSgpCiAgICAgfTsKIAogICAgIC8vIFRoZXJlJ3Mgbm8gZ29p
bmcgYmFjayBub3chCi0gICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tfc2VsZigpLCBy
ZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfd3RmQ29uZmlnKSwgQ29uZmlnU2l6ZVRv
UHJvdGVjdCwgRGlzYWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcywgVk1fUFJPVF9SRUFE
KTsKKyAgICByZXN1bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0
X2Nhc3Q8dm1fYWRkcmVzc190PigmV2ViQ29uZmlnOjpnX2NvbmZpZyksIENvbmZpZ1NpemVUb1By
b3RlY3QsIERpc2FsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMsIFZNX1BST1RfUkVBRCk7
CiAjZWxpZiBPUyhMSU5VWCkKLSAgICByZXN1bHQgPSBtcHJvdGVjdCgmZ193dGZDb25maWcsIENv
bmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7CisgICAgcmVzdWx0ID0gbXByb3RlY3QoJldl
YkNvbmZpZzo6Z19jb25maWcsIENvbmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7CiAjZWxp
ZiBPUyhXSU5ET1dTKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXF1aXZhbGVudCwgbWF5YmUg
d2l0aCBWaXJ0dWFsUHJvdGVjdC4KICAgICAvLyBBbHNvIG5lZWQgdG8gZml4IFdlYktpdFRlc3RS
dW5uZXIuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9XVEZDb25maWcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9XVEZDb25maWcuaAkocmV2aXNpb24gMjYyMzYxKQorKysgU291cmNlL1dU
Ri93dGYvV1RGQ29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDIyIEBACiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMu
aD4KIAorI2lmIGRlZmluZWQoVVNFX1NZU1RFTV9NQUxMT0MpICYmIFVTRV9TWVNURU1fTUFMTE9D
CituYW1lc3BhY2UgR2lnYWNhZ2UgeworY29uc3RleHByIHNpemVfdCByZXNlcnZlZFNsb3RzRm9y
R2lnYWNhZ2VDb25maWcgPSAwOworY29uc3RleHByIHNpemVfdCByZXNlcnZlZEJ5dGVzRm9yR2ln
YWNhZ2VDb25maWcgPSAwOworfQorI2Vsc2UKKyNpbmNsdWRlIDxibWFsbG9jL0dpZ2FjYWdlQ29u
ZmlnLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvbmZpZyB7CisKK3VzaW5nIFNsb3QgPSB1
aW50NjRfdDsKK2V4dGVybiAiQyIgV1RGX0VYUE9SVF9QUklWQVRFIFNsb3QgZ19jb25maWdbXTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29uZmlnCisKIG5hbWVzcGFjZSBXVEYgewogCiBjb25zdGV4
cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSBDZWlsaW5nT25QYWdlU2l6ZTsKQEAgLTQ1
LDI4ICs2MSwzMSBAQCBzdHJ1Y3QgQ29uZmlnIHsKICAgICAgICAgfkFzc2VydE5vdEZyb3plblNj
b3BlKCk7CiAgICAgfTsKIAotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAg
ICAgIC8vIEFsbCB0aGUgZmllbGRzIGluIHRoaXMgc3RydWN0IHNob3VsZCBiZSBjaG9zZW4gc3Vj
aCB0aGF0IHRoZWlyCi0gICAgICAgICAgICAvLyBpbml0aWFsIHZhbHVlIGlzIDAgLyBudWxsIC8g
ZmFsc3kgYmVjYXVzZSBDb25maWcgaXMgaW5zdGFudGlhdGVkCi0gICAgICAgICAgICAvLyBhcyBh
IGdsb2JhbCBzaW5nbGV0b24uCisgICAgLy8gQWxsIHRoZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3Qg
c2hvdWxkIGJlIGNob3NlbiBzdWNoIHRoYXQgdGhlaXIKKyAgICAvLyBpbml0aWFsIHZhbHVlIGlz
IDAgLyBudWxsIC8gZmFsc3kgYmVjYXVzZSBDb25maWcgaXMgaW5zdGFudGlhdGVkCisgICAgLy8g
YXMgYSBnbG9iYWwgc2luZ2xldG9uLgogCi0gICAgICAgICAgICBib29sIGlzUGVybWFuZW50bHlG
cm96ZW47CisgICAgYm9vbCBpc1Blcm1hbmVudGx5RnJvemVuOwogCiAjaWYgVVNFKFBUSFJFQURT
KSAmJiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKLSAgICAgICAgICAgIFNpZ25hbEhhbmRsZXJzIHNp
Z25hbEhhbmRsZXJzOworICAgIFNpZ25hbEhhbmRsZXJzIHNpZ25hbEhhbmRsZXJzOwogI2VuZGlm
Ci0gICAgICAgICAgICBQdHJUYWdMb29rdXAqIHB0clRhZ0xvb2t1cEhlYWQ7CisgICAgUHRyVGFn
TG9va3VwKiBwdHJUYWdMb29rdXBIZWFkOwogCi0gICAgICAgICAgICB1aW50NjRfdCBzcGFjZUZv
ckV4dGVuc2lvbnNbMV07Ci0gICAgICAgIH07Ci0gICAgICAgIGNoYXIgZW5zdXJlU2l6ZVtDb25m
aWdTaXplVG9Qcm90ZWN0XTsKLSAgICB9OworICAgIHVpbnQ2NF90IHNwYWNlRm9yRXh0ZW5zaW9u
c1sxXTsKIH07CiAKLWV4dGVybiAiQyIgYWxpZ25hcyhDb25maWdTaXplVG9Qcm90ZWN0KSBXVEZf
RVhQT1JUX1BSSVZBVEUgQ29uZmlnIGdfd3RmQ29uZmlnOworY29uc3RleHByIHNpemVfdCBzdGFy
dFNsb3RPZldURkNvbmZpZyA9IEdpZ2FjYWdlOjpyZXNlcnZlZFNsb3RzRm9yR2lnYWNhZ2VDb25m
aWc7Citjb25zdGV4cHIgc2l6ZV90IHN0YXJ0T2Zmc2V0T2ZXVEZDb25maWcgPSBzdGFydFNsb3RP
ZldURkNvbmZpZyAqIHNpemVvZihXZWJDb25maWc6OlNsb3QpOworCitjb25zdGV4cHIgc2l6ZV90
IG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uID0gc3RhcnRPZmZzZXRPZldURkNvbmZpZyArIG9m
ZnNldG9mKFdURjo6Q29uZmlnLCBzcGFjZUZvckV4dGVuc2lvbnMpOworCitjb25zdGV4cHIgc2l6
ZV90IGFsaWdubWVudE9mV1RGQ29uZmlnID0gc3RkOjphbGlnbm1lbnRfb2Y8V1RGOjpDb25maWc+
Ojp2YWx1ZTsKKworc3RhdGljX2Fzc2VydChHaWdhY2FnZTo6cmVzZXJ2ZWRCeXRlc0ZvckdpZ2Fj
YWdlQ29uZmlnICsgc2l6ZW9mKFdURjo6Q29uZmlnKSA8PSBDb25maWdTaXplVG9Qcm90ZWN0KTsK
K3N0YXRpY19hc3NlcnQocm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZldURkNvbmZpZz4o
c3RhcnRPZmZzZXRPZldURkNvbmZpZykgPT0gc3RhcnRPZmZzZXRPZldURkNvbmZpZyk7CiAKLXN0
YXRpY19hc3NlcnQoc2l6ZW9mKENvbmZpZykgPT0gQ29uZmlnU2l6ZVRvUHJvdGVjdCk7CisjZGVm
aW5lIGdfd3RmQ29uZmlnICgqYml0d2lzZV9jYXN0PFdURjo6Q29uZmlnKj4oJldlYkNvbmZpZzo6
Z19jb25maWdbV1RGOjpzdGFydFNsb3RPZldURkNvbmZpZ10pKQogCiBBTFdBWVNfSU5MSU5FIENv
bmZpZzo6QXNzZXJ0Tm90RnJvemVuU2NvcGU6OkFzc2VydE5vdEZyb3plblNjb3BlKCkKIHsKSW5k
ZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxv
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjM2NSkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDIwLTA1LTMxICBNYXJrIExhbSAg
PG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0
byB1c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29uZmlnIGluc3RlYWQgb2YgaXRzIG93bi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjU4NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gR2lnYWNhZ2U6OkNvbmZpZyBub3cgcmVzZXJ2
ZXMgYW5kIGV4cGVjdCBzcGFjZSB0byBiZSBhdmFpbGFibGUgaW4gYW4gZXh0ZXJuYWwKKyAgICAg
ICAgICAgV2ViQ29uZmlnOjpnX2NvbmZpZyBidWZmZXIuICBHaWdhY2FnZSBkb2VzIG5vdCBhbGxv
Y2F0ZSB0aGF0IGJ1ZmZlci4KKworICAgICAgICAyLiBNb3ZlZCBHaWdhY2FnZTo6Q29uZmlnIHRv
IEdpZ2FjYWdlQ29uZmlnLmguCisgICAgICAgICAgIFRoaXMgYWxsb3dzIFdURkNvbmZpZy5oIHRv
IGluY2x1ZGUgR2lnYWNhZ2VDb25maWcuaCBpbnN0ZWFkIG9mIGFsbCBvZiBHaWdhY2FnZS5oLgor
CisgICAgICAgIDMuIE1vdmVkIEdpZ2FjYWdlOjpLaW5kIHRvIEdpZ2FjYWdlS2luZC5oLgorICAg
ICAgICAgICBPdGhlcndpc2UsIEdpZ2FjYWdlOjpLaW5kIHdvdWxkIG5lZWQgdG8gbW92ZSB0byBH
aWdhY2FnZUNvbmZpZy5oIHdoaWNoIGlzIGEKKyAgICAgICAgICAgd2VpcmQgcGxhY2UgdG8gcHV0
IGl0LgorCisgICAgICAgIDQuIFJlbW92ZWQgZnJlZXplR2lnYWNhZ2VDb25maWcoKSwgdW5mcmVl
emVHaWdhY2FnZUNvbmZpZygpLCBhbmQKKyAgICAgICAgICAgcGVybWFuZW50bHlGcmVlemVHaWdh
Y2FnZUNvbmZpZygpLgorCisgICAgICAgICAgIEl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSB0byB0
ZW1wb3JhcmlseSBmcmVlemUgYW5kIHVuZnJlZXplIHRoZSBHaWdhY2FnZTo6Q29uZmlnCisgICAg
ICAgICAgIGJlY2F1c2UgaXQgbm93IHNoYXJlIHRoZSBzYW1lIG1lbW9yeSBwYWdlIHdpdGggaGln
aGVyIGxldmVsIENvbmZpZ3MuCisKKyAgICAgICAgICAgcGVybWFuZW50bHlGcmVlemVHaWdhY2Fn
ZUNvbmZpZygpIGlzIG5vIGxvbmdlciBuZWVkZWQgYmVjYXVzZSBpdCBpcyBzdWJzdW1lZAorICAg
ICAgICAgICBieSBXVEY6OkNvbmZpZzo6cGVybWFuZW50bHlGcmVlemUoKSwgd2hpY2ggd2lsbCBm
cmVlemUgdGhlIGVudGlyZSBXZWJDb25maWc6OmdfY29uZmlnCisgICAgICAgICAgIGJ1ZmZlci4K
KworICAgICAgICAgICBPbmUgZGlmZmVyZW5jZSBpbiBiZWhhdmlvciBoZXJlIGlzIHRoYXQgR2ln
YWNhZ2U6OkNvbmZpZyBkYXRhIHVzZWQgdG8gYmUgcGVybWFuZW50bHkKKyAgICAgICAgICAgZnJv
emVuIGFzIHNvb24gYXMgZm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKSBpcyBjYWxs
ZWQuICBOb3csIGl0IGlzbid0CisgICAgICAgICAgIHBlcm1hbmVudGx5IGZyb3plbiB1bnRpbCB0
aGUgZW5kIG9mIHRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlIGZpcnN0IEpTQzo6Vk0gaW5zdGFuY2UK
KyAgICAgICAgICAgaW4gdGhlIHByb2Nlc3MgKGp1c3QgbGlrZSB0aGUgb3RoZXIgQ29uZmlnIHJl
Y29yZHMpLiAgVGhpcyBzdGlsbCBndWFyYW50ZWVzIHRoYXQKKyAgICAgICAgICAgaXQgaXMgZnJv
emVuIGJlZm9yZSBhbnkgSlMgc2NyaXB0IGNhbiBydW4uCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYm1hbGxvYy9HaWdhY2FnZS5jcHA6CisgICAgICAgIChHaWdhY2FnZTo6ZW5zdXJlR2ln
YWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSk6Cisg
ICAgICAgIChHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UpOgorICAg
ICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKTogRGVsZXRlZC4K
KyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjp1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKTogRGVs
ZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpwZXJtYW5lbnRseUZyZWV6ZUdpZ2Fj
YWdlQ29uZmlnKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpVbmZyZWV6
ZUdpZ2FjYWdlQ29uZmlnU2NvcGU6OlVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSk6IERlbGV0
ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Nj
b3BlOjp+VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
bWFsbG9jL0dpZ2FjYWdlLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNh
Z2U6OkNvbmZpZzo6YmFzZVB0ciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6
Q29uZmlnOjpzZXRCYXNlUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdl
Q29uZmlnLmg6IEFkZGVkLgorICAgICAgICAoR2lnYWNhZ2U6OkNvbmZpZzo6YmFzZVB0ciBjb25z
dCk6CisgICAgICAgIChHaWdhY2FnZTo6Q29uZmlnOjpzZXRCYXNlUHRyKToKKyAgICAgICAgKiBi
bWFsbG9jL0dpZ2FjYWdlS2luZC5oOiBBZGRlZC4KKwogMjAyMC0wNS0yMyAgQ2FpbyBMaW1hICA8
dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW2JtYWxsb2NdIEZpeCBPT00gZXJyb3Jz
IG9uIE1JUFMgYWZ0ZXIgcjI2MTY2NwpJbmRleDogU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDI2MjM2MSkKKysrIFNvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC02OSw2ICs2OSw4IEBAIHNldChibWFsbG9jX1BVQkxJQ19IRUFERVJTCiAgICAgYm1hbGxv
Yy9GcmVlTGlzdC5oCiAgICAgYm1hbGxvYy9GcmVlTGlzdElubGluZXMuaAogICAgIGJtYWxsb2Mv
R2lnYWNhZ2UuaAorICAgIGJtYWxsb2MvR2lnYWNhZ2VDb25maWcuaAorICAgIGJtYWxsb2MvR2ln
YWNhZ2VLaW5kLmgKICAgICBibWFsbG9jL0hlYXAuaAogICAgIGJtYWxsb2MvSGVhcENvbnN0YW50
cy5oCiAgICAgYm1hbGxvYy9IZWFwS2luZC5oCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjIzNjEpCisrKyBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MSw2ICsxNTEsOCBAQAogCQlFQjE3RDExMTIzQkZDRDQyMDAyMDkzQTcgLyog
SGVhcENvbnN0YW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFQjE3RDExMDIzQkZDOEM0MDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5jcHAgKi87
IH07CiAJCUVCMTdEMTEyMjNCRkNEN0EwMDIwOTNBNyAvKiBIZWFwQ29uc3RhbnRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjE3RDEwRTIzQkU2OTFE
MDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUZFNDhCRDNCMjMyMUU4RDcwMEYxMzZEMCAvKiBGYWlsdXJl
QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTQ4QkQzQTIzMjFFOENDMDBGMTM2RDAgLyogRmFpbHVyZUFjdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZFQzNBMzkzMjQ4NDZBODEwMDM5
NUI1NCAvKiBHaWdhY2FnZUNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkVDM0EzOTIyNDg0NkE2RDAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29uZmln
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkVD
M0EzOTUyNDg0NzFGRTAwMzk1QjU0IC8qIEdpZ2FjYWdlS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDM0EzOTQyNDg0NzFGRTAwMzk1QjU0IC8q
IEdpZ2FjYWdlS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTMwNyw2ICszMDksOCBAQAogCQlFQjE3RDEw
RTIzQkU2OTFEMDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBIZWFwQ29uc3RhbnRzLmg7IHBhdGggPSBibWFsbG9jL0hlYXBDb25zdGFu
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUIxN0QxMTAyM0JGQzhDNDAwMjA5
M0E3IC8qIEhlYXBDb25zdGFudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gSGVhcENvbnN0YW50cy5jcHA7IHBhdGggPSBibWFsbG9jL0hlYXBDb25zdGFudHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTQ4QkQzQTIzMjFFOENDMDBGMTM2RDAg
LyogRmFpbHVyZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGYWls
dXJlQWN0aW9uLmg7IHBhdGggPSBibWFsbG9jL0ZhaWx1cmVBY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkVDM0EzOTIyNDg0NkE2RDAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29u
ZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdpZ2FjYWdlQ29uZmlnLmg7
IHBhdGggPSBibWFsbG9jL0dpZ2FjYWdlQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFQzNBMzk0MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR2lnYWNhZ2VLaW5kLmg7IHBhdGggPSBibWFsbG9j
L0dpZ2FjYWdlS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCkBAIC00ODYsNiArNDkwLDggQEAKIAkJCQlGRTQ4QkQzQTIzMjFFOENDMDBG
MTM2RDAgLyogRmFpbHVyZUFjdGlvbi5oICovLAogCQkJCTBGNUJGMTRFMUYyMkRFQUYwMDI5RDkx
RCAvKiBHaWdhY2FnZS5jcHAgKi8sCiAJCQkJMEY1QkYxNEMxRjIyQjBDMzAwMjlEOTFEIC8qIEdp
Z2FjYWdlLmggKi8sCisJCQkJRkVDM0EzOTIyNDg0NkE2RDAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29u
ZmlnLmggKi8sCisJCQkJRkVDM0EzOTQyNDg0NzFGRTAwMzk1QjU0IC8qIEdpZ2FjYWdlS2luZC5o
ICovLAogCQkJCTE0REEzMjBFMTg4NzVEOUYwMDcyNjlFMCAvKiBIZWFwLmNwcCAqLywKIAkJCQkx
NERBMzIwQzE4ODc1QjA5MDA3MjY5RTAgLyogSGVhcC5oICovLAogCQkJCUVCMTdEMTEwMjNCRkM4
QzQwMDIwOTNBNyAvKiBIZWFwQ29uc3RhbnRzLmNwcCAqLywKQEAgLTYwNiw2ICs2MTIsNyBAQAog
CQkJCUZFNDhCRDNCMjMyMUU4RDcwMEYxMzZEMCAvKiBGYWlsdXJlQWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNERENzhDODE4RjQ4RDc1MDA5NTA3MDIgLyogRml4ZWRWZWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGN0VCODQ0MUY5NTQxQjAwMEYxQUJDQiAvKiBGcmVlTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkVDM0EzOTMyNDg0NkE4MTAwMzk1QjU0IC8qIEdpZ2FjYWdlQ29u
ZmlnLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdFQjgyOTFGOTU0MUIwMDBGMUFCQ0IgLyogRnJl
ZUxpc3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVCRjE0RDFGMjJCMEMzMDAyOUQ5
MUQgLyogR2lnYWNhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MDAyNzQ5MThGODlDMTMwMDEx
NUM5NyAvKiBIZWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTY1NCw2ICs2NjEsNyBAQAogCQkJCUUz
NzhBOUUwMjQ2QjY4NzUwMDI5QzJCQiAvKiBPYmplY3RUeXBlVGFibGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzMjhEODREMjNDRUIzODkwMDU0NUIxOCAvKiBQYWNrZWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNUJGMTQ5MUYyMkE4RDgwMDI5RDkxRCAvKiBQZXJIZWFwS2luZC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkVDM0EzOTUyNDg0NzFGRTAwMzk1QjU0IC8qIEdpZ2FjYWdlS2luZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4Q0IxOEY0OEQ3NTAwOTUwNzAyIC8qIFBlclByb2Nlc3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OENDMThGNDhENzUwMDk1MDcwMiAvKiBQZXJUaHJl
YWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5NUFCM0M3MjA2RTBEMzQwMDc0RkU3NiAvKiBQaHlz
aWNhbFBhZ2VNYXAuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9HaWdhY2FnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdh
Y2FnZS5jcHAJKHJldmlzaW9uIDI2MjM2MSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2ln
YWNhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBDYWxsYmFj
ayB7CiAgICAgdm9pZCogYXJndW1lbnQgeyBudWxscHRyIH07CiB9OwogCi19Cit9IC8vIG5hbWVz
cGFjZSBHaWdhY2FnZQogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKQEAgLTc5LDc1ICs3OSwxMCBA
QCBuYW1lc3BhY2UgR2lnYWNhZ2UgewogLy8gSWYgdGhpcyB3ZXJlIGxlc3MgdGhhbiAzMkdCLCB0
aG9zZSBPT0IgYWNjZXNzZXMgY291bGQgcmVhY2ggb3V0c2lkZSBvZiB0aGUgY2FnZS4KIGNvbnN0
ZXhwciBzaXplX3QgZ2lnYWNhZ2VSdW53YXkgPSAzMmxsdSAqIGJtYWxsb2M6OlNpemVzOjpHQjsK
IAotYWxpZ25hcyhjb25maWdTaXplVG9Qcm90ZWN0KSBDb25maWcgZ19naWdhY2FnZUNvbmZpZzsK
LQogdXNpbmcgbmFtZXNwYWNlIGJtYWxsb2M7CiAKIG5hbWVzcGFjZSB7CiAKLSNpZiBCT1MoREFS
V0lOKQotZW51bSB7Ci0gICAgQWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcyA9IGZhbHNl
LAotICAgIERpc2FsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMgPSB0cnVlCi19OwotI2Vu
ZGlmCi0KLXN0YXRpYyB2b2lkIGZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCkKLXsKLSAgICBpbnQgcmVz
dWx0OwotI2lmIEJPUyhEQVJXSU4pCi0gICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tf
c2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfZ2lnYWNhZ2VDb25maWcp
LCBjb25maWdTaXplVG9Qcm90ZWN0LCBBbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzLCBW
TV9QUk9UX1JFQUQpOwotI2Vsc2UKLSAgICByZXN1bHQgPSBtcHJvdGVjdCgmZ19naWdhY2FnZUNv
bmZpZywgY29uZmlnU2l6ZVRvUHJvdGVjdCwgUFJPVF9SRUFEKTsKLSNlbmRpZgotICAgIFJFTEVB
U0VfQkFTU0VSVCghcmVzdWx0KTsKLX0KLQotc3RhdGljIHZvaWQgdW5mcmVlemVHaWdhY2FnZUNv
bmZpZygpCi17Ci0gICAgUkVMRUFTRV9CQVNTRVJUKCFnX2dpZ2FjYWdlQ29uZmlnLmlzUGVybWFu
ZW50bHlGcm96ZW4pOwotICAgIGludCByZXN1bHQ7Ci0jaWYgQk9TKERBUldJTikKLSAgICByZXN1
bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRk
cmVzc190PigmZ19naWdhY2FnZUNvbmZpZyksIGNvbmZpZ1NpemVUb1Byb3RlY3QsIEFsbG93UGVy
bWlzc2lvbkNoYW5nZXNBZnRlclRoaXMsIFZNX1BST1RfUkVBRCB8IFZNX1BST1RfV1JJVEUpOwot
I2Vsc2UKLSAgICByZXN1bHQgPSBtcHJvdGVjdCgmZ19naWdhY2FnZUNvbmZpZywgY29uZmlnU2l6
ZVRvUHJvdGVjdCwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7Ci0jZW5kaWYKLSAgICBSRUxFQVNF
X0JBU1NFUlQoIXJlc3VsdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHBlcm1hbmVudGx5RnJlZXplR2ln
YWNhZ2VDb25maWcoKQotewotICAgIHN0YXRpYyBNdXRleCBjb25maWdMb2NrOwotICAgIExvY2tI
b2xkZXIgbG9ja2luZyhjb25maWdMb2NrKTsKLQotICAgIGlmICghZ19naWdhY2FnZUNvbmZpZy5p
c1Blcm1hbmVudGx5RnJvemVuKSB7Ci0gICAgICAgIHVuZnJlZXplR2lnYWNhZ2VDb25maWcoKTsK
LSAgICAgICAgZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuID0gdHJ1ZTsKLSAg
ICB9Ci0KLSAgICAvLyBUaGVyZSdzIG5vIGdvaW5nIGJhY2sgbm93IQotICAgIGludCByZXN1bHQ7
Ci0jaWYgQk9TKERBUldJTikKLSAgICByZXN1bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFza19zZWxm
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190PigmZ19naWdhY2FnZUNvbmZpZyksIGNv
bmZpZ1NpemVUb1Byb3RlY3QsIERpc2FsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMsIFZN
X1BST1RfUkVBRCk7Ci0jZWxzZQotICAgIHJlc3VsdCA9IG1wcm90ZWN0KCZnX2dpZ2FjYWdlQ29u
ZmlnLCBjb25maWdTaXplVG9Qcm90ZWN0LCBQUk9UX1JFQUQpOwotI2VuZGlmCi0gICAgUkVMRUFT
RV9CQVNTRVJUKCFyZXN1bHQpOwotfQotCi1jbGFzcyBVbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2Nv
cGUgewotcHVibGljOgotICAgIFVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSgpCi0gICAgewot
ICAgICAgICB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7Ci0gICAgfQotICAgIAotICAgIH5VbmZy
ZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGUoKQotICAgIHsKLSAgICAgICAgZnJlZXplR2lnYWNhZ2VD
b25maWcoKTsKLSAgICB9Ci19OwotCiBzaXplX3QgcnVud2F5U2l6ZShLaW5kIGtpbmQpCiB7CiAg
ICAgc3dpdGNoIChraW5kKSB7CkBAIC0yNDAsNyArMTc1LDYgQEAgdm9pZCBlbnN1cmVHaWdhY2Fn
ZSgpCiAgICAgICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLnRvdGFsU2l6ZSA9IHRvdGFsU2l6ZTsK
ICAgICAgICAgICAgIHZtRGVhbGxvY2F0ZVBoeXNpY2FsUGFnZXMoYmFzZSwgdG90YWxTaXplKTsK
ICAgICAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuaXNFbmFibGVkID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7CiAgICAgICAgIH0pOwogfQogCkBAIC0yNjQsNyAr
MTk4LDYgQEAgdm9pZCBkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UoKQogICAgIGZvciAoQ2FsbGJh
Y2smIGNhbGxiYWNrIDogY2FsbGJhY2tzLmNhbGxiYWNrcykKICAgICAgICAgY2FsbGJhY2suZnVu
Y3Rpb24oY2FsbGJhY2suYXJndW1lbnQpOwogICAgIGNhbGxiYWNrcy5jYWxsYmFja3Muc2hyaW5r
KDApOwotICAgIFVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSB1bmZyZWV6ZVNjb3BlOwogICAg
IGdfZ2lnYWNhZ2VDb25maWcuYmFzZVB0cnNbUHJpbWl0aXZlXSA9IG51bGxwdHI7CiB9CiAKQEAg
LTMxMywxMCArMjQ2LDggQEAgdm9pZCBmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgp
CiAgICAgICAgICYmIChHSUdBQ0FHRV9BTExPQ0FUSU9OX0NBTl9GQUlMIHx8ICFnX2dpZ2FjYWdl
Q29uZmlnLnNob3VsZEJlRW5hYmxlZCB8fCB2ZXJpZnlHaWdhY2FnZUlzRW5hYmxlZCgpKSk7CiAK
ICAgICBpZiAoIWdfZ2lnYWNhZ2VDb25maWcuZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0Zv
cmJpZGRlbikgewotICAgICAgICB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7CiAgICAgICAgIGdf
Z2lnYWNhZ2VDb25maWcuZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbiA9IHRy
dWU7CiAgICAgfQotICAgIHBlcm1hbmVudGx5RnJlZXplR2lnYWNhZ2VDb25maWcoKTsKICAgICBS
RUxFQVNFX0JBU1NFUlQoaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbigpKTsK
IH0KIApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAkocmV2aXNpb24gMjYyMzYxKQor
KysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjUsMTEgKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWxnb3JpdGhtLmgi
CiAjaW5jbHVkZSAiQkFzc2VydC5oIgogI2luY2x1ZGUgIkJFeHBvcnQuaCIKICNpbmNsdWRlICJC
SW5saW5lLmgiCiAjaW5jbHVkZSAiQlBsYXRmb3JtLmgiCisjaW5jbHVkZSAiR2lnYWNhZ2VDb25m
aWcuaCIKICNpbmNsdWRlICJTaXplcy5oIgogI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVkZSA8
aW50dHlwZXMuaD4KQEAgLTQ0LDEyICs0NCw2IEBACiAKIG5hbWVzcGFjZSBHaWdhY2FnZSB7CiAK
LWVudW0gS2luZCB7Ci0gICAgUHJpbWl0aXZlLAotICAgIEpTVmFsdWUsCi0gICAgTnVtYmVyT2ZL
aW5kcwotfTsKLQogQklOTElORSBjb25zdCBjaGFyKiBuYW1lKEtpbmQga2luZCkKIHsKICAgICBz
d2l0Y2ggKGtpbmQpIHsKQEAgLTY2LDggKzYwLDYgQEAgQklOTElORSBjb25zdCBjaGFyKiBuYW1l
KEtpbmQga2luZCkKIAogI2lmIEdJR0FDQUdFX0VOQUJMRUQKIAotY29uc3RleHByIHNpemVfdCBj
b25maWdTaXplVG9Qcm90ZWN0ID0gMTYgKiBibWFsbG9jOjpTaXplczo6a0I7Ci0KICNpZiBCT1Nf
RUZGRUNUSVZFX0FERFJFU1NfV0lEVEggPCA0OAogY29uc3RleHByIHNpemVfdCBwcmltaXRpdmVH
aWdhY2FnZVNpemUgPSAyICogYm1hbGxvYzo6U2l6ZXM6OkdCOwogY29uc3RleHByIHNpemVfdCBq
c1ZhbHVlR2lnYWNhZ2VTaXplID0gMiAqIGJtYWxsb2M6OlNpemVzOjpHQjsKQEAgLTk3LDQ3ICs4
OSw2IEBAIGNvbnN0ZXhwciBzaXplX3QgZ2lnYWNhZ2VTaXplVG9NYXNrKHNpemUKIGNvbnN0ZXhw
ciBzaXplX3QgcHJpbWl0aXZlR2lnYWNhZ2VNYXNrID0gZ2lnYWNhZ2VTaXplVG9NYXNrKHByaW1p
dGl2ZUdpZ2FjYWdlU2l6ZSk7CiBjb25zdGV4cHIgc2l6ZV90IGpzVmFsdWVHaWdhY2FnZU1hc2sg
PSBnaWdhY2FnZVNpemVUb01hc2soanNWYWx1ZUdpZ2FjYWdlU2l6ZSk7CiAKLXN0cnVjdCBDb25m
aWcgewotICAgIHZvaWQqIGJhc2VQdHIoS2luZCBraW5kKSBjb25zdAotICAgIHsKLSAgICAgICAg
UkVMRUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRzKTsKLSAgICAgICAgcmV0dXJuIGJh
c2VQdHJzW2tpbmRdOwotICAgIH0KLQotICAgIHZvaWQgc2V0QmFzZVB0cihLaW5kIGtpbmQsIHZv
aWQqIHB0cikKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQkFTU0VSVChraW5kIDwgTnVtYmVyT2ZL
aW5kcyk7Ci0gICAgICAgIGJhc2VQdHJzW2tpbmRdID0gcHRyOwotICAgIH0KLQotICAgIHVuaW9u
IHsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIC8vIEFsbCB0aGUgZmllbGRzIGluIHRo
aXMgc3RydWN0IHNob3VsZCBiZSBjaG9zZW4gc3VjaCB0aGF0IHRoZWlyCi0gICAgICAgICAgICAv
LyBpbml0aWFsIHZhbHVlIGlzIDAgLyBudWxsIC8gZmFsc3kgYmVjYXVzZSBDb25maWcgaXMgaW5z
dGFudGlhdGVkCi0gICAgICAgICAgICAvLyBhcyBhIGdsb2JhbCBzaW5nbGV0b24uCi0KLSAgICAg
ICAgICAgIGJvb2wgaXNFbmFibGVkOwotICAgICAgICAgICAgYm9vbCBpc1Blcm1hbmVudGx5RnJv
emVuOwotICAgICAgICAgICAgYm9vbCBkaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlk
ZGVuOwotICAgICAgICAgICAgYm9vbCBzaG91bGRCZUVuYWJsZWQ7Ci0KLSAgICAgICAgICAgIC8v
IFdlIHdvdWxkIGxpa2UgdG8ganVzdCBwdXQgdGhlIHN0ZDo6b25jZV9mbGFnIGZvciB0aGVzZSBm
dW5jdGlvbnMKLSAgICAgICAgICAgIC8vIGhlcmUsIGJ1dCB3ZSBjYW4ndCBiZWNhdXNlIHN0ZDo6
b25jZV9mbGFnIGhhcyBhIGltcGxpY2l0bHktZGVsZXRlZAotICAgICAgICAgICAgLy8gZGVmYXVs
dCBjb25zdHJ1Y3Rvci4gU28sIHdlIHVzZSBhIGJvb2xlYW4gaW5zdGVhZC4KLSAgICAgICAgICAg
IGJvb2wgc2hvdWxkQmVFbmFibGVkSGFzQmVlbkNhbGxlZDsKLSAgICAgICAgICAgIGJvb2wgZW5z
dXJlR2lnYWNhZ2VIYXNCZWVuQ2FsbGVkOwotCi0gICAgICAgICAgICB2b2lkKiBzdGFydDsKLSAg
ICAgICAgICAgIHNpemVfdCB0b3RhbFNpemU7Ci0gICAgICAgICAgICB2b2lkKiBiYXNlUHRyc1tO
dW1iZXJPZktpbmRzXTsKLSAgICAgICAgfTsKLSAgICAgICAgY2hhciBlbnN1cmVTaXplW2NvbmZp
Z1NpemVUb1Byb3RlY3RdOwotICAgIH07Ci19Owotc3RhdGljX2Fzc2VydChzaXplb2YoQ29uZmln
KSA9PSBjb25maWdTaXplVG9Qcm90ZWN0LCAiR2lnYWNhZ2UgQ29uZmlnIG11c3QgZml0IGluIGNv
bmZpZ1NpemVUb1Byb3RlY3QiKTsKLQotZXh0ZXJuICJDIiBhbGlnbmFzKGNvbmZpZ1NpemVUb1By
b3RlY3QpIEJFWFBPUlQgQ29uZmlnIGdfZ2lnYWNhZ2VDb25maWc7Ci0KIC8vIFRoZXNlIGNvbnN0
YW50cyBhcmUgbmVlZGVkIGJ5IHRoZSBMTEludC4KIGNvbnN0ZXhwciBwdHJkaWZmX3Qgb2Zmc2V0
T2ZQcmltaXRpdmVHaWdhY2FnZUJhc2VQdHIgPSBLaW5kOjpQcmltaXRpdmUgKiBzaXplb2Yodm9p
ZCopOwogY29uc3RleHByIHB0cmRpZmZfdCBvZmZzZXRPZkpTVmFsdWVHaWdhY2FnZUJhc2VQdHIg
PSBLaW5kOjpKU1ZhbHVlICogc2l6ZW9mKHZvaWQqKTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvR2lnYWNhZ2VDb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0dpZ2FjYWdlQ29uZmlnLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9HaWdhY2FnZUNvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkFsZ29yaXRobS5oIgorI2luY2x1ZGUgIkdpZ2FjYWdlS2luZC5oIgorI2lu
Y2x1ZGUgIlN0ZExpYkV4dHJhcy5oIgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisKK25hbWVzcGFj
ZSBXZWJDb25maWcgeworCit1c2luZyBTbG90ID0gdWludDY0X3Q7CitleHRlcm4gIkMiIFNsb3Qg
Z19jb25maWdbXTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29uZmlnCisKK25hbWVzcGFjZSBHaWdh
Y2FnZSB7CisKK3N0cnVjdCBDb25maWcgeworICAgIHZvaWQqIGJhc2VQdHIoS2luZCBraW5kKSBj
b25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRz
KTsKKyAgICAgICAgcmV0dXJuIGJhc2VQdHJzW2tpbmRdOworICAgIH0KKworICAgIHZvaWQgc2V0
QmFzZVB0cihLaW5kIGtpbmQsIHZvaWQqIHB0cikKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQkFT
U0VSVChraW5kIDwgTnVtYmVyT2ZLaW5kcyk7CisgICAgICAgIGJhc2VQdHJzW2tpbmRdID0gcHRy
OworICAgIH0KKworICAgIC8vIEFsbCB0aGUgZmllbGRzIGluIHRoaXMgc3RydWN0IHNob3VsZCBi
ZSBjaG9zZW4gc3VjaCB0aGF0IHRoZWlyCisgICAgLy8gaW5pdGlhbCB2YWx1ZSBpcyAwIC8gbnVs
bCAvIGZhbHN5IGJlY2F1c2UgQ29uZmlnIGlzIGluc3RhbnRpYXRlZAorICAgIC8vIGFzIGEgZ2xv
YmFsIHNpbmdsZXRvbi4KKworICAgIGJvb2wgaXNQZXJtYW5lbnRseUZyb3plbjsgLy8gV2lsbCBi
ZSBzZXQgYnkgdGhlIGNsaWVudCBpZiB0aGUgQ29uZmlnIGdldHMgZnJvemVuLgorICAgIGJvb2wg
aXNFbmFibGVkOworICAgIGJvb2wgZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRl
bjsKKyAgICBib29sIHNob3VsZEJlRW5hYmxlZDsKKworICAgIC8vIFdlIHdvdWxkIGxpa2UgdG8g
anVzdCBwdXQgdGhlIHN0ZDo6b25jZV9mbGFnIGZvciB0aGVzZSBmdW5jdGlvbnMKKyAgICAvLyBo
ZXJlLCBidXQgd2UgY2FuJ3QgYmVjYXVzZSBzdGQ6Om9uY2VfZmxhZyBoYXMgYSBpbXBsaWNpdGx5
LWRlbGV0ZWQKKyAgICAvLyBkZWZhdWx0IGNvbnN0cnVjdG9yLiBTbywgd2UgdXNlIGEgYm9vbGVh
biBpbnN0ZWFkLgorICAgIGJvb2wgc2hvdWxkQmVFbmFibGVkSGFzQmVlbkNhbGxlZDsKKyAgICBi
b29sIGVuc3VyZUdpZ2FjYWdlSGFzQmVlbkNhbGxlZDsKKworICAgIHZvaWQqIHN0YXJ0OworICAg
IHNpemVfdCB0b3RhbFNpemU7CisgICAgdm9pZCogYmFzZVB0cnNbTnVtYmVyT2ZLaW5kc107Cit9
OworCitjb25zdGV4cHIgc2l6ZV90IHN0YXJ0U2xvdE9mR2lnYWNhZ2VDb25maWcgPSAwOworY29u
c3RleHByIHNpemVfdCBzdGFydE9mZnNldE9mR2lnYWNhZ2VDb25maWcgPSBzdGFydFNsb3RPZkdp
Z2FjYWdlQ29uZmlnICogc2l6ZW9mKFdlYkNvbmZpZzo6U2xvdCk7CisKK2NvbnN0ZXhwciBzaXpl
X3QgcmVzZXJ2ZWRTbG90c0ZvckdpZ2FjYWdlQ29uZmlnID0gNjsKK2NvbnN0ZXhwciBzaXplX3Qg
cmVzZXJ2ZWRCeXRlc0ZvckdpZ2FjYWdlQ29uZmlnID0gcmVzZXJ2ZWRTbG90c0ZvckdpZ2FjYWdl
Q29uZmlnICogc2l6ZW9mKFdlYkNvbmZpZzo6U2xvdCk7CisKK2NvbnN0ZXhwciBzaXplX3QgYWxp
Z25tZW50T2ZHaWdhY2FnZUNvbmZpZyA9IHN0ZDo6YWxpZ25tZW50X29mPEdpZ2FjYWdlOjpDb25m
aWc+Ojp2YWx1ZTsKKworc3RhdGljX2Fzc2VydChzaXplb2YoR2lnYWNhZ2U6OkNvbmZpZykgPD0g
cmVzZXJ2ZWRCeXRlc0ZvckdpZ2FjYWdlQ29uZmlnKTsKK3N0YXRpY19hc3NlcnQoYm1hbGxvYzo6
cm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm1lbnRPZkdpZ2FjYWdlQ29uZmlnPihzdGFydE9mZnNl
dE9mR2lnYWNhZ2VDb25maWcpID09IHN0YXJ0T2Zmc2V0T2ZHaWdhY2FnZUNvbmZpZyk7CisKKyNk
ZWZpbmUgZ19naWdhY2FnZUNvbmZpZyAoKmJtYWxsb2M6OmJpdHdpc2VfY2FzdDxHaWdhY2FnZTo6
Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19jb25maWdbR2lnYWNhZ2U6OnN0YXJ0U2xvdE9mR2lnYWNh
Z2VDb25maWddKSkKKworfSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UKSW5kZXg6IFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvR2lnYWNhZ2VLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9HaWdhY2FnZUtpbmQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0dpZ2FjYWdlS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIEdpZ2FjYWdlIHsKKworZW51bSBLaW5kIHsKKyAgICBQcmltaXRpdmUsCisg
ICAgSlNWYWx1ZSwKKyAgICBOdW1iZXJPZktpbmRzCit9OworCit9IC8vIG5hbWVzcGFjZSBHaWdh
Y2FnZQpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9tYm1hbGxvYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9tYm1hbGxvYy5jcHAJKHJldmlzaW9uIDI2MjM2
MSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvbWJtYWxsb2MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiwxNSBAQAogI2luY2x1ZGUgImJtYWxsb2MuaCIKIAogI2luY2x1ZGUgIkJF
eHBvcnQuaCIKKyNpbmNsdWRlICJHaWdhY2FnZUNvbmZpZy5oIgorCituYW1lc3BhY2UgV2ViQ29u
ZmlnIHsKKworY29uc3RleHByIHNpemVfdCBDb25maWdTaXplVG9Qcm90ZWN0ID0gMTYgKiAxMDI0
OworCithbGlnbmFzKENvbmZpZ1NpemVUb1Byb3RlY3QpIEJFWFBPUlQgU2xvdCBnX2NvbmZpZ1tD
b25maWdTaXplVG9Qcm90ZWN0IC8gc2l6ZW9mKFNsb3QpXTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29uZmlnCiAKIGV4dGVybiAiQyIgewogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400720</attachid>
            <date>2020-05-31 21:41:19 -0700</date>
            <delta_ts>2020-05-31 22:09:56 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-212585.patch</filename>
            <type>text/plain</type>
            <size>29498</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMzY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDIwLTA1LTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29u
ZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMjU4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvSlNDQ29uZmln
Lmg6CisgICAgICAgIChKU0M6OkNvbmZpZzo6aXNQZXJtYW5lbnRseUZyb3plbik6CisKIDIwMjAt
MDUtMzEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29u
c2lkZXIgYSBUaHJlYWQgU3BlY2lmaWMgQ2FjaGUgZm9yIEFzc2VtYmxlckJ1ZmZlcnMKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCShyZXZpc2lvbiAyNjIzNjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtNDMyLDcgKzQz
Miw3IEBAIG1hY3JvIGNhZ2VkUHJpbWl0aXZlKHB0ciwgbGVuZ3RoLCBzY3JhdGMKICAgICAgICAg
Y29uc3Qgc291cmNlID0gcHRyCiAgICAgZW5kCiAgICAgaWYgR0lHQUNBR0VfRU5BQkxFRAotICAg
ICAgICBjYWdlKF9nX2dpZ2FjYWdlQ29uZmlnICsgR2lnYWNhZ2U6OkNvbmZpZzo6YmFzZVB0cnMg
KyBHaWdhY2FnZVByaW1pdGl2ZUJhc2VQdHJPZmZzZXQsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJp
bWl0aXZlR2lnYWNhZ2VNYXNrLCBzb3VyY2UsIHNjcmF0Y2gpCisgICAgICAgIGNhZ2UoX2dfY29u
ZmlnICsgKGNvbnN0ZXhwciBHaWdhY2FnZTo6c3RhcnRPZmZzZXRPZkdpZ2FjYWdlQ29uZmlnKSAr
IEdpZ2FjYWdlOjpDb25maWc6OmJhc2VQdHJzICsgR2lnYWNhZ2VQcmltaXRpdmVCYXNlUHRyT2Zm
c2V0LCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgc291cmNlLCBz
Y3JhdGNoKQogICAgICAgICBpZiBBUk02NEUKICAgICAgICAgICAgIGNvbnN0IG51bWJlck9mUEFD
Qml0cyA9IGNvbnN0ZXhwciBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZQQUNCaXRzCiAgICAgICAg
ICAgICBiZmlxIHNjcmF0Y2gyLCAwLCA2NCAtIG51bWJlck9mUEFDQml0cywgcHRyCkBAIC00NDYs
NyArNDQ2LDcgQEAgZW5kCiBtYWNybyBsb2FkQ2FnZWRKU1ZhbHVlKHNvdXJjZSwgZGVzdCwgc2Ny
YXRjaE9yTGVuZ3RoKQogICAgIGxvYWRwIHNvdXJjZSwgZGVzdAogICAgIGlmIEdJR0FDQUdFX0VO
QUJMRUQKLSAgICAgICAgY2FnZShfZ19naWdhY2FnZUNvbmZpZyArIEdpZ2FjYWdlOjpDb25maWc6
OmJhc2VQdHJzICsgR2lnYWNhZ2VKU1ZhbHVlQmFzZVB0ck9mZnNldCwgY29uc3RleHByIEdpZ2Fj
YWdlOjpqc1ZhbHVlR2lnYWNhZ2VNYXNrLCBkZXN0LCBzY3JhdGNoT3JMZW5ndGgpCisgICAgICAg
IGNhZ2UoX2dfY29uZmlnICsgKGNvbnN0ZXhwciBHaWdhY2FnZTo6c3RhcnRPZmZzZXRPZkdpZ2Fj
YWdlQ29uZmlnKSArIEdpZ2FjYWdlOjpDb25maWc6OmJhc2VQdHJzICsgR2lnYWNhZ2VKU1ZhbHVl
QmFzZVB0ck9mZnNldCwgY29uc3RleHByIEdpZ2FjYWdlOjpqc1ZhbHVlR2lnYWNhZ2VNYXNrLCBk
ZXN0LCBzY3JhdGNoT3JMZW5ndGgpCiAgICAgZW5kCiBlbmQKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgJKHJldmlzaW9uIDI2MjM2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw3ICs1MSw3IEBAIHN0cnVjdCBDb25maWcgewogICAgICAgICBlbmFibGVSZXN0cmljdGVkT3B0
aW9ucygpOwogICAgIH0KIAotICAgIGJvb2wgaXNQZXJtYW5lbnRseUZyb3plbigpIHsgcmV0dXJu
IFdURjo6Z193dGZDb25maWcuaXNQZXJtYW5lbnRseUZyb3plbjsgfQorICAgIGJvb2wgaXNQZXJt
YW5lbnRseUZyb3plbigpIHsgcmV0dXJuIGdfd3RmQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW47
IH0KIAogICAgIC8vIEFsbCB0aGUgZmllbGRzIGluIHRoaXMgc3RydWN0IHNob3VsZCBiZSBjaG9z
ZW4gc3VjaCB0aGF0IHRoZWlyCiAgICAgLy8gaW5pdGlhbCB2YWx1ZSBpcyAwIC8gbnVsbCAvIGZh
bHN5IGJlY2F1c2UgQ29uZmlnIGlzIGluc3RhbnRpYXRlZApAQCAtODIsMTIgKzgyLDExIEBAIHN0
cnVjdCBDb25maWcgewogICAgIFdURjo6UHRyVGFnTG9va3VwIHB0clRhZ0xvb2t1cFJlY29yZDsK
IH07CiAKLWNvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24gPSBvZmZz
ZXRvZihXVEY6OkNvbmZpZywgc3BhY2VGb3JFeHRlbnNpb25zKTsKIGNvbnN0ZXhwciBzaXplX3Qg
YWxpZ25tZW50T2ZKU0NDb25maWcgPSBzdGQ6OmFsaWdubWVudF9vZjxKU0M6OkNvbmZpZz46OnZh
bHVlOwogCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihKU0M6OkNvbmZpZykgPD0gKHNpemVvZihXVEY6
OkNvbmZpZykgLSBvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbikpOwotc3RhdGljX2Fzc2VydChy
b3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdubWVudE9mSlNDQ29uZmlnPihvZmZzZXRPZldURkNvbmZp
Z0V4dGVuc2lvbikgPT0gb2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24pOworc3RhdGljX2Fzc2Vy
dChXVEY6Om9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uICsgc2l6ZW9mKEpTQzo6Q29uZmlnKSA8
PSBXVEY6OkNvbmZpZ1NpemVUb1Byb3RlY3QpOworc3RhdGljX2Fzc2VydChyb3VuZFVwVG9NdWx0
aXBsZU9mPGFsaWdubWVudE9mSlNDQ29uZmlnPihXVEY6Om9mZnNldE9mV1RGQ29uZmlnRXh0ZW5z
aW9uKSA9PSBXVEY6Om9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uKTsKIAotI2RlZmluZSBnX2pz
Y0NvbmZpZyAoKmJpdHdpc2VfY2FzdDxDb25maWcqPigmV1RGOjpnX3d0ZkNvbmZpZy5zcGFjZUZv
ckV4dGVuc2lvbnMpKQorI2RlZmluZSBnX2pzY0NvbmZpZyAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCZnX3d0ZkNvbmZpZy5zcGFjZUZvckV4dGVuc2lvbnMpKQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjIzNjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA1LTMxICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0byB1
c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29uZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjU4NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugbm93IHRoaW5rIG9mIHRoZSB2YXJpb3VzIENvbmZp
ZyByZWNvcmRzIGFzIGJlaW5nIGFsbG9jYXRlZCBmcm9tIHBhcnRzIG9mIGEKKyAgICAgICAgV2Vi
Q29uZmlnOjpnX2NvbmZpZyBidWZmZXIuICBXVEY6OkNvbmZpZyB3aWxsIG1hbmFnZSB0aGUgbWVj
aGFuaWNzIG9mIGZyZWV6aW5nCisgICAgICAgIHRoYXQgYnVmZmVyLiAgQW5kIHRoZSBKU0MgVk0g
aXMgc3RpbGwgdGhlIGRldGVybWluZXIgb2YgaWYvd2hlbiB0byBmcmVlemUgdGhlCisgICAgICAg
IGJ1ZmZlciwgYW5kIGl0IHdpbGwgZG8gdGhpcyBhdCB0aGUgZW5kIG9mIHRoZSBjb25zdHJ1Y3Rp
b24gb2YgdGhlIHZlcnkgZmlyc3QKKyAgICAgICAgVk0gaW5zdGFuY2UgKGFzIGJlZm9yZSkuCisK
KyAgICAgICAgR2lnYWNhZ2U6OkNvbmZpZyByZXNlcnZlcyBzcGFjZSBpbiBXZWJDb25maWc6Omdf
Y29uZmlnLgorICAgICAgICBXVEY6OkNvbmZpZyB3aWxsIGhvbm9yIHRoYXQgcmVzZXJ2YXRpb24g
YW5kIHBsYWNlIGl0c2VsZiBhZnRlciB0aGF0LgorICAgICAgICBKU0M6OkNvbmZpZyB3aWxsIGNv
bnRpbnVlIHRvIHBsYWNlIGl0c2VsZiBhdCBXVEY6OkNvbmZpZzo6c3BhY2VGb3JFeHRlbnNpb25z
LgorCisgICAgICAgIFRoZSB1cHNpZGUgb2YgdGhpcyBhcHByb2FjaCB0aGlzIGlzIHRoYXQgd2Ug
Y2FuIG5vdyBzaGFyZSB0aGUgc2FtZSBtZW1vcnkgcGFnZQorICAgICAgICBmb3IgYWxsIHRoZSBD
b25maWdzLCBhbmQgY2FuIGZyZWV6ZSB0aGVtIGluIG9uZSBnby4KKworICAgICAgICBUaGUgZG93
bnNpZGUgaXMgdGhhdCBnX2dpZ2FjYWdlQ29uZmlnLCBnX3d0ZkNvbmZpZywgYW5kIGdfanNjQ29u
ZmlnIG5vdyBoYXZlIHRvCisgICAgICAgIGJlIG1hY3Jvcy4gIFRoaXMgcmVzdWx0cyBpbiBzb21l
IHdlaXJkbmVzcyBlLmcuIHRoZXkgYXJlIG5vIGxvbmdlciBxdWFsaWZpZWQgYnkKKyAgICAgICAg
bmFtZXNwYWNlczogcmVmZXJyaW5nIHRvIFdURjo6Z193dGZDb25maWcgaXMgbm93IGluY29ycmVj
dC4KKworICAgICAgICAqIHd0Zi9XVEZDb25maWcuY3BwOgorICAgICAgICAoV1RGOjpDb25maWc6
OnBlcm1hbmVudGx5RnJlZXplKToKKyAgICAgICAgKiB3dGYvV1RGQ29uZmlnLmg6CisgICAgICAg
ICgpOiBEZWxldGVkLgorCiAyMDIwLTA1LTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBDaGFuZ2UgSlNDOjpDb25maWcgdG8gdXNlIHN0b3JhZ2UgaW4gV1RGOjpD
b25maWcgaW5zdGVhZCBvZiBpdHMgb3duLgpJbmRleDogU291cmNlL1dURi93dGYvV1RGQ29uZmln
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9XVEZDb25maWcuY3BwCShyZXZpc2lv
biAyNjIzNjcpCisrKyBTb3VyY2UvV1RGL3d0Zi9XVEZDb25maWcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSA8d3RmL1dU
RkNvbmZpZy5oPgogCisjaW5jbHVkZSA8d3RmL0dpZ2FjYWdlLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTM1LDkgKzM2LDEzIEBA
CiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KICNlbmRpZgogCi1uYW1lc3BhY2UgV1RGIHsKK25hbWVz
cGFjZSBXZWJDb25maWcgeworCithbGlnbmFzKFdURjo6Q29uZmlnU2l6ZVRvUHJvdGVjdCkgU2xv
dCBnX2NvbmZpZ1tXVEY6OkNvbmZpZ1NpemVUb1Byb3RlY3QgLyBzaXplb2YoU2xvdCldOwogCi1h
bGlnbmFzKENvbmZpZ1NpemVUb1Byb3RlY3QpIFdURl9FWFBPUlRfUFJJVkFURSBDb25maWcgZ193
dGZDb25maWc7Cit9IC8vIG5hbWVzcGFjZSBXZWJDb25maWcKKworbmFtZXNwYWNlIFdURiB7CiAK
IHZvaWQgQ29uZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSgpCiB7CkBAIC00Niw4ICs1MSwxMiBAQCB2
b2lkIENvbmZpZzo6cGVybWFuZW50bHlGcmVlemUoKQogCiAgICAgUkVMRUFTRV9BU1NFUlQocm91
bmRVcFRvTXVsdGlwbGVPZihwYWdlU2l6ZSgpLCBDb25maWdTaXplVG9Qcm90ZWN0KSA9PSBDb25m
aWdTaXplVG9Qcm90ZWN0KTsKIAotICAgIGlmICghZ193dGZDb25maWcuaXNQZXJtYW5lbnRseUZy
b3plbikKKyAgICBpZiAoIWdfd3RmQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4pIHsKICAgICAg
ICAgZ193dGZDb25maWcuaXNQZXJtYW5lbnRseUZyb3plbiA9IHRydWU7CisjaWYgR0lHQUNBR0Vf
RU5BQkxFRAorICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4gPSB0
cnVlOworI2VuZGlmCisgICAgfQogCiAgICAgaW50IHJlc3VsdCA9IDA7CiAjaWYgT1MoREFSV0lO
KQpAQCAtNTcsOSArNjYsOSBAQCB2b2lkIENvbmZpZzo6cGVybWFuZW50bHlGcmVlemUoKQogICAg
IH07CiAKICAgICAvLyBUaGVyZSdzIG5vIGdvaW5nIGJhY2sgbm93IQotICAgIHJlc3VsdCA9IHZt
X3Byb3RlY3QobWFjaF90YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+
KCZnX3d0ZkNvbmZpZyksIENvbmZpZ1NpemVUb1Byb3RlY3QsIERpc2FsbG93UGVybWlzc2lvbkNo
YW5nZXNBZnRlclRoaXMsIFZNX1BST1RfUkVBRCk7CisgICAgcmVzdWx0ID0gdm1fcHJvdGVjdCht
YWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJldlYkNvbmZp
Zzo6Z19jb25maWcpLCBDb25maWdTaXplVG9Qcm90ZWN0LCBEaXNhbGxvd1Blcm1pc3Npb25DaGFu
Z2VzQWZ0ZXJUaGlzLCBWTV9QUk9UX1JFQUQpOwogI2VsaWYgT1MoTElOVVgpCi0gICAgcmVzdWx0
ID0gbXByb3RlY3QoJmdfd3RmQ29uZmlnLCBDb25maWdTaXplVG9Qcm90ZWN0LCBQUk9UX1JFQUQp
OworICAgIHJlc3VsdCA9IG1wcm90ZWN0KCZXZWJDb25maWc6OmdfY29uZmlnLCBDb25maWdTaXpl
VG9Qcm90ZWN0LCBQUk9UX1JFQUQpOwogI2VsaWYgT1MoV0lORE9XUykKICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IGVxdWl2YWxlbnQsIG1heWJlIHdpdGggVmlydHVhbFByb3RlY3QuCiAgICAgLy8g
QWxzbyBuZWVkIHRvIGZpeCBXZWJLaXRUZXN0UnVubmVyLgpJbmRleDogU291cmNlL1dURi93dGYv
V1RGQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmgJKHJl
dmlzaW9uIDI2MjM2NykKKysrIFNvdXJjZS9XVEYvd3RmL1dURkNvbmZpZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvdGhyZWFkcy9TaWduYWxzLmg+CiAKKyNpZiBkZWZpbmVkKFVTRV9TWVNURU1f
TUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExPQworbmFtZXNwYWNlIEdpZ2FjYWdlIHsKK2NvbnN0
ZXhwciBzaXplX3QgcmVzZXJ2ZWRTbG90c0ZvckdpZ2FjYWdlQ29uZmlnID0gMDsKK2NvbnN0ZXhw
ciBzaXplX3QgcmVzZXJ2ZWRCeXRlc0ZvckdpZ2FjYWdlQ29uZmlnID0gMDsKK30KKyNlbHNlCisj
aW5jbHVkZSA8Ym1hbGxvYy9HaWdhY2FnZUNvbmZpZy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJDb25maWcgeworCit1c2luZyBTbG90ID0gdWludDY0X3Q7CitleHRlcm4gIkMiIFdURl9FWFBP
UlRfUFJJVkFURSBTbG90IGdfY29uZmlnW107CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvbmZpZwor
CiBuYW1lc3BhY2UgV1RGIHsKIAogY29uc3RleHByIHNpemVfdCBDb25maWdTaXplVG9Qcm90ZWN0
ID0gQ2VpbGluZ09uUGFnZVNpemU7CkBAIC00NSwyOCArNjEsMzEgQEAgc3RydWN0IENvbmZpZyB7
CiAgICAgICAgIH5Bc3NlcnROb3RGcm96ZW5TY29wZSgpOwogICAgIH07CiAKLSAgICB1bmlvbiB7
Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAvLyBBbGwgdGhlIGZpZWxkcyBpbiB0aGlz
IHN0cnVjdCBzaG91bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgotICAgICAgICAgICAgLy8g
aW5pdGlhbCB2YWx1ZSBpcyAwIC8gbnVsbCAvIGZhbHN5IGJlY2F1c2UgQ29uZmlnIGlzIGluc3Rh
bnRpYXRlZAotICAgICAgICAgICAgLy8gYXMgYSBnbG9iYWwgc2luZ2xldG9uLgorICAgIC8vIEFs
bCB0aGUgZmllbGRzIGluIHRoaXMgc3RydWN0IHNob3VsZCBiZSBjaG9zZW4gc3VjaCB0aGF0IHRo
ZWlyCisgICAgLy8gaW5pdGlhbCB2YWx1ZSBpcyAwIC8gbnVsbCAvIGZhbHN5IGJlY2F1c2UgQ29u
ZmlnIGlzIGluc3RhbnRpYXRlZAorICAgIC8vIGFzIGEgZ2xvYmFsIHNpbmdsZXRvbi4KIAotICAg
ICAgICAgICAgYm9vbCBpc1Blcm1hbmVudGx5RnJvemVuOworICAgIGJvb2wgaXNQZXJtYW5lbnRs
eUZyb3plbjsKIAogI2lmIFVTRShQVEhSRUFEUykgJiYgSEFWRShNQUNISU5FX0NPTlRFWFQpCi0g
ICAgICAgICAgICBTaWduYWxIYW5kbGVycyBzaWduYWxIYW5kbGVyczsKKyAgICBTaWduYWxIYW5k
bGVycyBzaWduYWxIYW5kbGVyczsKICNlbmRpZgotICAgICAgICAgICAgUHRyVGFnTG9va3VwKiBw
dHJUYWdMb29rdXBIZWFkOworICAgIFB0clRhZ0xvb2t1cCogcHRyVGFnTG9va3VwSGVhZDsKIAot
ICAgICAgICAgICAgdWludDY0X3Qgc3BhY2VGb3JFeHRlbnNpb25zWzFdOwotICAgICAgICB9Owot
ICAgICAgICBjaGFyIGVuc3VyZVNpemVbQ29uZmlnU2l6ZVRvUHJvdGVjdF07Ci0gICAgfTsKKyAg
ICB1aW50NjRfdCBzcGFjZUZvckV4dGVuc2lvbnNbMV07CiB9OwogCi1leHRlcm4gIkMiIGFsaWdu
YXMoQ29uZmlnU2l6ZVRvUHJvdGVjdCkgV1RGX0VYUE9SVF9QUklWQVRFIENvbmZpZyBnX3d0ZkNv
bmZpZzsKK2NvbnN0ZXhwciBzaXplX3Qgc3RhcnRTbG90T2ZXVEZDb25maWcgPSBHaWdhY2FnZTo6
cmVzZXJ2ZWRTbG90c0ZvckdpZ2FjYWdlQ29uZmlnOworY29uc3RleHByIHNpemVfdCBzdGFydE9m
ZnNldE9mV1RGQ29uZmlnID0gc3RhcnRTbG90T2ZXVEZDb25maWcgKiBzaXplb2YoV2ViQ29uZmln
OjpTbG90KTsKKworY29uc3RleHByIHNpemVfdCBvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbiA9
IHN0YXJ0T2Zmc2V0T2ZXVEZDb25maWcgKyBvZmZzZXRvZihXVEY6OkNvbmZpZywgc3BhY2VGb3JF
eHRlbnNpb25zKTsKKworY29uc3RleHByIHNpemVfdCBhbGlnbm1lbnRPZldURkNvbmZpZyA9IHN0
ZDo6YWxpZ25tZW50X29mPFdURjo6Q29uZmlnPjo6dmFsdWU7CisKK3N0YXRpY19hc3NlcnQoR2ln
YWNhZ2U6OnJlc2VydmVkQnl0ZXNGb3JHaWdhY2FnZUNvbmZpZyArIHNpemVvZihXVEY6OkNvbmZp
ZykgPD0gQ29uZmlnU2l6ZVRvUHJvdGVjdCk7CitzdGF0aWNfYXNzZXJ0KHJvdW5kVXBUb011bHRp
cGxlT2Y8YWxpZ25tZW50T2ZXVEZDb25maWc+KHN0YXJ0T2Zmc2V0T2ZXVEZDb25maWcpID09IHN0
YXJ0T2Zmc2V0T2ZXVEZDb25maWcpOwogCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihDb25maWcpID09
IENvbmZpZ1NpemVUb1Byb3RlY3QpOworI2RlZmluZSBnX3d0ZkNvbmZpZyAoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkKIAogQUxXQVlTX0lOTElORSBDb25maWc6OkFzc2VydE5vdEZyb3plblNjb3BlOjpB
c3NlcnROb3RGcm96ZW5TY29wZSgpCiB7CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjIzNjcp
CisrKyBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1
OCBAQAorMjAyMC0wNS0zMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgQ2hhbmdlIEdpZ2FjYWdlOjpDb25maWcgdG8gdXNlIHN0b3JhZ2UgaW4gV2ViQ29uZmlnOjpn
X2NvbmZpZyBpbnN0ZWFkIG9mIGl0cyBvd24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI1ODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzODEy
NDg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDEu
IEdpZ2FjYWdlOjpDb25maWcgbm93IHJlc2VydmVzIGFuZCBleHBlY3Qgc3BhY2UgdG8gYmUgYXZh
aWxhYmxlIGluIGFuIGV4dGVybmFsCisgICAgICAgICAgIFdlYkNvbmZpZzo6Z19jb25maWcgYnVm
ZmVyLiAgR2lnYWNhZ2UgZG9lcyBub3QgYWxsb2NhdGUgdGhhdCBidWZmZXIuCisKKyAgICAgICAg
Mi4gTW92ZWQgR2lnYWNhZ2U6OkNvbmZpZyB0byBHaWdhY2FnZUNvbmZpZy5oLgorICAgICAgICAg
ICBUaGlzIGFsbG93cyBXVEZDb25maWcuaCB0byBpbmNsdWRlIEdpZ2FjYWdlQ29uZmlnLmggaW5z
dGVhZCBvZiBhbGwgb2YgR2lnYWNhZ2UuaC4KKworICAgICAgICAzLiBNb3ZlZCBHaWdhY2FnZTo6
S2luZCB0byBHaWdhY2FnZUtpbmQuaC4KKyAgICAgICAgICAgT3RoZXJ3aXNlLCBHaWdhY2FnZTo6
S2luZCB3b3VsZCBuZWVkIHRvIG1vdmUgdG8gR2lnYWNhZ2VDb25maWcuaCB3aGljaCBpcyBhCisg
ICAgICAgICAgIHdlaXJkIHBsYWNlIHRvIHB1dCBpdC4KKworICAgICAgICA0LiBSZW1vdmVkIGZy
ZWV6ZUdpZ2FjYWdlQ29uZmlnKCksIHVuZnJlZXplR2lnYWNhZ2VDb25maWcoKSwgYW5kCisgICAg
ICAgICAgIHBlcm1hbmVudGx5RnJlZXplR2lnYWNhZ2VDb25maWcoKS4KKworICAgICAgICAgICBJ
dCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8gdGVtcG9yYXJpbHkgZnJlZXplIGFuZCB1bmZyZWV6
ZSB0aGUgR2lnYWNhZ2U6OkNvbmZpZworICAgICAgICAgICBiZWNhdXNlIGl0IG5vdyBzaGFyZSB0
aGUgc2FtZSBtZW1vcnkgcGFnZSB3aXRoIGhpZ2hlciBsZXZlbCBDb25maWdzLgorCisgICAgICAg
ICAgIHBlcm1hbmVudGx5RnJlZXplR2lnYWNhZ2VDb25maWcoKSBpcyBubyBsb25nZXIgbmVlZGVk
IGJlY2F1c2UgaXQgaXMgc3Vic3VtZWQKKyAgICAgICAgICAgYnkgV1RGOjpDb25maWc6OnBlcm1h
bmVudGx5RnJlZXplKCksIHdoaWNoIHdpbGwgZnJlZXplIHRoZSBlbnRpcmUgV2ViQ29uZmlnOjpn
X2NvbmZpZworICAgICAgICAgICBidWZmZXIuCisKKyAgICAgICAgICAgT25lIGRpZmZlcmVuY2Ug
aW4gYmVoYXZpb3IgaGVyZSBpcyB0aGF0IEdpZ2FjYWdlOjpDb25maWcgZGF0YSB1c2VkIHRvIGJl
IHBlcm1hbmVudGx5CisgICAgICAgICAgIGZyb3plbiBhcyBzb29uIGFzIGZvcmJpZERpc2FibGlu
Z1ByaW1pdGl2ZUdpZ2FjYWdlKCkgaXMgY2FsbGVkLiAgTm93LCBpdCBpc24ndAorICAgICAgICAg
ICBwZXJtYW5lbnRseSBmcm96ZW4gdW50aWwgdGhlIGVuZCBvZiB0aGUgY29uc3RydWN0aW9uIG9m
IHRoZSBmaXJzdCBKU0M6OlZNIGluc3RhbmNlCisgICAgICAgICAgIGluIHRoZSBwcm9jZXNzIChq
dXN0IGxpa2UgdGhlIG90aGVyIENvbmZpZyByZWNvcmRzKS4gIFRoaXMgc3RpbGwgZ3VhcmFudGVl
cyB0aGF0CisgICAgICAgICAgIGl0IGlzIGZyb3plbiBiZWZvcmUgYW55IEpTIHNjcmlwdCBjYW4g
cnVuLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogYm1hbGxvYy54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuY3BwOgor
ICAgICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpk
aXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6OmZvcmJpZERpc2Fi
bGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpmcmVl
emVHaWdhY2FnZUNvbmZpZyk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6
dW5mcmVlemVHaWdhY2FnZUNvbmZpZyk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Ym1h
bGxvYzo6cGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZyk6IERlbGV0ZWQuCisgICAgICAg
IChHaWdhY2FnZTo6Ym1hbGxvYzo6VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlOjpVbmZyZWV6
ZUdpZ2FjYWdlQ29uZmlnU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxs
b2M6OlVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZTo6flVuZnJlZXplR2lnYWNhZ2VDb25maWdT
Y29wZSk6IERlbGV0ZWQuCisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZS5oOgorICAgICAgICAo
KTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpDb25maWc6OmJhc2VQdHIgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OkNvbmZpZzo6c2V0QmFzZVB0cik6IERlbGV0ZWQu
CisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKEdp
Z2FjYWdlOjpDb25maWc6OmJhc2VQdHIgY29uc3QpOgorICAgICAgICAoR2lnYWNhZ2U6OkNvbmZp
Zzo6c2V0QmFzZVB0cik6CisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZUtpbmQuaDogQWRkZWQu
CisgICAgICAgICogYm1hbGxvYy9tYm1hbGxvYy5jcHA6CisKIDIwMjAtMDUtMjMgIENhaW8gTGlt
YSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIFtibWFsbG9jXSBGaXggT09NIGVy
cm9ycyBvbiBNSVBTIGFmdGVyIHIyNjE2NjcKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAyNjIzNjcpCisrKyBTb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNjksNiArNjksOCBAQCBzZXQoYm1hbGxvY19QVUJMSUNfSEVBREVSUwogICAgIGJt
YWxsb2MvRnJlZUxpc3QuaAogICAgIGJtYWxsb2MvRnJlZUxpc3RJbmxpbmVzLmgKICAgICBibWFs
bG9jL0dpZ2FjYWdlLmgKKyAgICBibWFsbG9jL0dpZ2FjYWdlQ29uZmlnLmgKKyAgICBibWFsbG9j
L0dpZ2FjYWdlS2luZC5oCiAgICAgYm1hbGxvYy9IZWFwLmgKICAgICBibWFsbG9jL0hlYXBDb25z
dGFudHMuaAogICAgIGJtYWxsb2MvSGVhcEtpbmQuaApJbmRleDogU291cmNlL2JtYWxsb2MvYm1h
bGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYyMzY3KQor
KysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTEsNiArMTUxLDggQEAKIAkJRUIxN0QxMTEyM0JGQ0Q0MjAwMjA5M0E3
IC8qIEhlYXBDb25zdGFudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRUIxN0QxMTAyM0JGQzhDNDAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuY3Bw
ICovOyB9OwogCQlFQjE3RDExMjIzQkZDRDdBMDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIxN0QxMEUyM0JF
NjkxRDAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTQ4QkQzQjIzMjFFOEQ3MDBGMTM2RDAgLyogRmFp
bHVyZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU0OEJEM0EyMzIxRThDQzAwRjEzNkQwIC8qIEZhaWx1cmVBY3Rpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRUMzQTM5MzI0ODQ2QTgx
MDAzOTVCNTQgLyogR2lnYWNhZ2VDb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzNBMzkyMjQ4NDZBNkQwMDM5NUI1NCAvKiBHaWdhY2FnZUNv
bmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUZFQzNBMzk1MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzNBMzk0MjQ4NDcxRkUwMDM5NUI1
NCAvKiBHaWdhY2FnZUtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0zMDcsNiArMzA5LDggQEAKIAkJRUIx
N0QxMEUyM0JFNjkxRDAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gSGVhcENvbnN0YW50cy5oOyBwYXRoID0gYm1hbGxvYy9IZWFwQ29u
c3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMTdEMTEwMjNCRkM4QzQw
MDIwOTNBNyAvKiBIZWFwQ29uc3RhbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEhlYXBDb25zdGFudHMuY3BwOyBwYXRoID0gYm1hbGxvYy9IZWFwQ29uc3RhbnRz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0OEJEM0EyMzIxRThDQzAwRjEz
NkQwIC8qIEZhaWx1cmVBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
RmFpbHVyZUFjdGlvbi5oOyBwYXRoID0gYm1hbGxvYy9GYWlsdXJlQWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQzNBMzkyMjQ4NDZBNkQwMDM5NUI1NCAvKiBHaWdhY2Fn
ZUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHaWdhY2FnZUNvbmZp
Zy5oOyBwYXRoID0gYm1hbGxvYy9HaWdhY2FnZUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRUMzQTM5NDI0ODQ3MUZFMDAzOTVCNTQgLyogR2lnYWNhZ2VLaW5kLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdpZ2FjYWdlS2luZC5oOyBwYXRoID0gYm1h
bGxvYy9HaWdhY2FnZUtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQ
QlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDg2LDYgKzQ5MCw4IEBACiAJCQkJRkU0OEJEM0EyMzIxRThD
QzAwRjEzNkQwIC8qIEZhaWx1cmVBY3Rpb24uaCAqLywKIAkJCQkwRjVCRjE0RTFGMjJERUFGMDAy
OUQ5MUQgLyogR2lnYWNhZ2UuY3BwICovLAogCQkJCTBGNUJGMTRDMUYyMkIwQzMwMDI5RDkxRCAv
KiBHaWdhY2FnZS5oICovLAorCQkJCUZFQzNBMzkyMjQ4NDZBNkQwMDM5NUI1NCAvKiBHaWdhY2Fn
ZUNvbmZpZy5oICovLAorCQkJCUZFQzNBMzk0MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtp
bmQuaCAqLywKIAkJCQkxNERBMzIwRTE4ODc1RDlGMDA3MjY5RTAgLyogSGVhcC5jcHAgKi8sCiAJ
CQkJMTREQTMyMEMxODg3NUIwOTAwNzI2OUUwIC8qIEhlYXAuaCAqLywKIAkJCQlFQjE3RDExMDIz
QkZDOEM0MDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5jcHAgKi8sCkBAIC02MDYsNiArNjEyLDcg
QEAKIAkJCQlGRTQ4QkQzQjIzMjFFOEQ3MDBGMTM2RDAgLyogRmFpbHVyZUFjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRERDc4QzgxOEY0OEQ3NTAwOTUwNzAyIC8qIEZpeGVkVmVjdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjdFQjg0NDFGOTU0MUIwMDBGMUFCQ0IgLyogRnJlZUxpc3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZFQzNBMzkzMjQ4NDZBODEwMDM5NUI1NCAvKiBHaWdhY2Fn
ZUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3RUI4MjkxRjk1NDFCMDAwRjFBQkNCIC8q
IEZyZWVMaXN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QkYxNEQxRjIyQjBDMzAw
MjlEOTFEIC8qIEdpZ2FjYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDAwMjc0OTE4Rjg5QzEz
MDAxMTVDOTcgLyogSGVhcC5oIGluIEhlYWRlcnMgKi8sCkBAIC02NTQsNiArNjYxLDcgQEAKIAkJ
CQlFMzc4QTlFMDI0NkI2ODc1MDAyOUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMzI4RDg0RDIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjVCRjE0OTFGMjJBOEQ4MDAyOUQ5MUQgLyogUGVySGVhcEtpbmQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUZFQzNBMzk1MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OENCMThGNDhENzUwMDk1MDcwMiAvKiBQZXJQcm9j
ZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhDQzE4RjQ4RDc1MDA5NTA3MDIgLyogUGVy
VGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTVBQjNDNzIwNkUwRDM0MDA3NEZFNzYgLyog
UGh5c2ljYWxQYWdlTWFwLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvR2lnYWNhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
R2lnYWNhZ2UuY3BwCShyZXZpc2lvbiAyNjIzNjcpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0dpZ2FjYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgQ2Fs
bGJhY2sgewogICAgIHZvaWQqIGFyZ3VtZW50IHsgbnVsbHB0ciB9OwogfTsKIAotfQorfSAvLyBu
YW1lc3BhY2UgR2lnYWNhZ2UKIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCkBAIC03OSw3NSArNzks
MTAgQEAgbmFtZXNwYWNlIEdpZ2FjYWdlIHsKIC8vIElmIHRoaXMgd2VyZSBsZXNzIHRoYW4gMzJH
QiwgdGhvc2UgT09CIGFjY2Vzc2VzIGNvdWxkIHJlYWNoIG91dHNpZGUgb2YgdGhlIGNhZ2UuCiBj
b25zdGV4cHIgc2l6ZV90IGdpZ2FjYWdlUnVud2F5ID0gMzJsbHUgKiBibWFsbG9jOjpTaXplczo6
R0I7CiAKLWFsaWduYXMoY29uZmlnU2l6ZVRvUHJvdGVjdCkgQ29uZmlnIGdfZ2lnYWNhZ2VDb25m
aWc7Ci0KIHVzaW5nIG5hbWVzcGFjZSBibWFsbG9jOwogCiBuYW1lc3BhY2UgewogCi0jaWYgQk9T
KERBUldJTikKLWVudW0gewotICAgIEFsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMgPSBm
YWxzZSwKLSAgICBEaXNhbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzID0gdHJ1ZQotfTsK
LSNlbmRpZgotCi1zdGF0aWMgdm9pZCBmcmVlemVHaWdhY2FnZUNvbmZpZygpCi17Ci0gICAgaW50
IHJlc3VsdDsKLSNpZiBCT1MoREFSV0lOKQotICAgIHJlc3VsdCA9IHZtX3Byb3RlY3QobWFjaF90
YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KCZnX2dpZ2FjYWdlQ29u
ZmlnKSwgY29uZmlnU2l6ZVRvUHJvdGVjdCwgQWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhp
cywgVk1fUFJPVF9SRUFEKTsKLSNlbHNlCi0gICAgcmVzdWx0ID0gbXByb3RlY3QoJmdfZ2lnYWNh
Z2VDb25maWcsIGNvbmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7Ci0jZW5kaWYKLSAgICBS
RUxFQVNFX0JBU1NFUlQoIXJlc3VsdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHVuZnJlZXplR2lnYWNh
Z2VDb25maWcoKQotewotICAgIFJFTEVBU0VfQkFTU0VSVCghZ19naWdhY2FnZUNvbmZpZy5pc1Bl
cm1hbmVudGx5RnJvemVuKTsKLSAgICBpbnQgcmVzdWx0OwotI2lmIEJPUyhEQVJXSU4pCi0gICAg
cmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZt
X2FkZHJlc3NfdD4oJmdfZ2lnYWNhZ2VDb25maWcpLCBjb25maWdTaXplVG9Qcm90ZWN0LCBBbGxv
d1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzLCBWTV9QUk9UX1JFQUQgfCBWTV9QUk9UX1dSSVRF
KTsKLSNlbHNlCi0gICAgcmVzdWx0ID0gbXByb3RlY3QoJmdfZ2lnYWNhZ2VDb25maWcsIGNvbmZp
Z1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwotI2VuZGlmCi0gICAgUkVM
RUFTRV9CQVNTRVJUKCFyZXN1bHQpOwotfQotCi1zdGF0aWMgdm9pZCBwZXJtYW5lbnRseUZyZWV6
ZUdpZ2FjYWdlQ29uZmlnKCkKLXsKLSAgICBzdGF0aWMgTXV0ZXggY29uZmlnTG9jazsKLSAgICBM
b2NrSG9sZGVyIGxvY2tpbmcoY29uZmlnTG9jayk7Ci0KLSAgICBpZiAoIWdfZ2lnYWNhZ2VDb25m
aWcuaXNQZXJtYW5lbnRseUZyb3plbikgewotICAgICAgICB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmln
KCk7Ci0gICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuaXNQZXJtYW5lbnRseUZyb3plbiA9IHRydWU7
Ci0gICAgfQotCi0gICAgLy8gVGhlcmUncyBubyBnb2luZyBiYWNrIG5vdyEKLSAgICBpbnQgcmVz
dWx0OwotI2lmIEJPUyhEQVJXSU4pCi0gICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tf
c2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfZ2lnYWNhZ2VDb25maWcp
LCBjb25maWdTaXplVG9Qcm90ZWN0LCBEaXNhbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlz
LCBWTV9QUk9UX1JFQUQpOwotI2Vsc2UKLSAgICByZXN1bHQgPSBtcHJvdGVjdCgmZ19naWdhY2Fn
ZUNvbmZpZywgY29uZmlnU2l6ZVRvUHJvdGVjdCwgUFJPVF9SRUFEKTsKLSNlbmRpZgotICAgIFJF
TEVBU0VfQkFTU0VSVCghcmVzdWx0KTsKLX0KLQotY2xhc3MgVW5mcmVlemVHaWdhY2FnZUNvbmZp
Z1Njb3BlIHsKLXB1YmxpYzoKLSAgICBVbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGUoKQotICAg
IHsKLSAgICAgICAgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpOwotICAgIH0KLSAgICAKLSAgICB+
VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlKCkKLSAgICB7Ci0gICAgICAgIGZyZWV6ZUdpZ2Fj
YWdlQ29uZmlnKCk7Ci0gICAgfQotfTsKLQogc2l6ZV90IHJ1bndheVNpemUoS2luZCBraW5kKQog
ewogICAgIHN3aXRjaCAoa2luZCkgewpAQCAtMjQwLDcgKzE3NSw2IEBAIHZvaWQgZW5zdXJlR2ln
YWNhZ2UoKQogICAgICAgICAgICAgZ19naWdhY2FnZUNvbmZpZy50b3RhbFNpemUgPSB0b3RhbFNp
emU7CiAgICAgICAgICAgICB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2VzKGJhc2UsIHRvdGFsU2l6
ZSk7CiAgICAgICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmlzRW5hYmxlZCA9IHRydWU7Ci0gICAg
ICAgICAgICBmcmVlemVHaWdhY2FnZUNvbmZpZygpOwogICAgICAgICB9KTsKIH0KIApAQCAtMjY0
LDcgKzE5OCw2IEBAIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCkKICAgICBmb3IgKENh
bGxiYWNrJiBjYWxsYmFjayA6IGNhbGxiYWNrcy5jYWxsYmFja3MpCiAgICAgICAgIGNhbGxiYWNr
LmZ1bmN0aW9uKGNhbGxiYWNrLmFyZ3VtZW50KTsKICAgICBjYWxsYmFja3MuY2FsbGJhY2tzLnNo
cmluaygwKTsKLSAgICBVbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGUgdW5mcmVlemVTY29wZTsK
ICAgICBnX2dpZ2FjYWdlQ29uZmlnLmJhc2VQdHJzW1ByaW1pdGl2ZV0gPSBudWxscHRyOwogfQog
CkBAIC0zMTMsMTAgKzI0Niw4IEBAIHZvaWQgZm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2UoKQogICAgICAgICAmJiAoR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCB8fCAhZ19naWdh
Y2FnZUNvbmZpZy5zaG91bGRCZUVuYWJsZWQgfHwgdmVyaWZ5R2lnYWNhZ2VJc0VuYWJsZWQoKSkp
OwogCiAgICAgaWYgKCFnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdl
SXNGb3JiaWRkZW4pIHsKLSAgICAgICAgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpOwogICAgICAg
ICBnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4g
PSB0cnVlOwogICAgIH0KLSAgICBwZXJtYW5lbnRseUZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7CiAg
ICAgUkVMRUFTRV9CQVNTRVJUKGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VGb3JiaWRkZW4o
KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgJKHJldmlzaW9uIDI2MjM2
NykKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI1LDExICsyNSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFsZ29yaXRo
bS5oIgogI2luY2x1ZGUgIkJBc3NlcnQuaCIKICNpbmNsdWRlICJCRXhwb3J0LmgiCiAjaW5jbHVk
ZSAiQklubGluZS5oIgogI2luY2x1ZGUgIkJQbGF0Zm9ybS5oIgorI2luY2x1ZGUgIkdpZ2FjYWdl
Q29uZmlnLmgiCiAjaW5jbHVkZSAiU2l6ZXMuaCIKICNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1
ZGUgPGludHR5cGVzLmg+CkBAIC00NCwxMiArNDQsNiBAQAogCiBuYW1lc3BhY2UgR2lnYWNhZ2Ug
ewogCi1lbnVtIEtpbmQgewotICAgIFByaW1pdGl2ZSwKLSAgICBKU1ZhbHVlLAotICAgIE51bWJl
ck9mS2luZHMKLX07Ci0KIEJJTkxJTkUgY29uc3QgY2hhciogbmFtZShLaW5kIGtpbmQpCiB7CiAg
ICAgc3dpdGNoIChraW5kKSB7CkBAIC02Niw4ICs2MCw2IEBAIEJJTkxJTkUgY29uc3QgY2hhciog
bmFtZShLaW5kIGtpbmQpCiAKICNpZiBHSUdBQ0FHRV9FTkFCTEVECiAKLWNvbnN0ZXhwciBzaXpl
X3QgY29uZmlnU2l6ZVRvUHJvdGVjdCA9IDE2ICogYm1hbGxvYzo6U2l6ZXM6OmtCOwotCiAjaWYg
Qk9TX0VGRkVDVElWRV9BRERSRVNTX1dJRFRIIDwgNDgKIGNvbnN0ZXhwciBzaXplX3QgcHJpbWl0
aXZlR2lnYWNhZ2VTaXplID0gMiAqIGJtYWxsb2M6OlNpemVzOjpHQjsKIGNvbnN0ZXhwciBzaXpl
X3QganNWYWx1ZUdpZ2FjYWdlU2l6ZSA9IDIgKiBibWFsbG9jOjpTaXplczo6R0I7CkBAIC05Nyw0
NyArODksNiBAQCBjb25zdGV4cHIgc2l6ZV90IGdpZ2FjYWdlU2l6ZVRvTWFzayhzaXplCiBjb25z
dGV4cHIgc2l6ZV90IHByaW1pdGl2ZUdpZ2FjYWdlTWFzayA9IGdpZ2FjYWdlU2l6ZVRvTWFzayhw
cmltaXRpdmVHaWdhY2FnZVNpemUpOwogY29uc3RleHByIHNpemVfdCBqc1ZhbHVlR2lnYWNhZ2VN
YXNrID0gZ2lnYWNhZ2VTaXplVG9NYXNrKGpzVmFsdWVHaWdhY2FnZVNpemUpOwogCi1zdHJ1Y3Qg
Q29uZmlnIHsKLSAgICB2b2lkKiBiYXNlUHRyKEtpbmQga2luZCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIFJFTEVBU0VfQkFTU0VSVChraW5kIDwgTnVtYmVyT2ZLaW5kcyk7Ci0gICAgICAgIHJldHVy
biBiYXNlUHRyc1traW5kXTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldEJhc2VQdHIoS2luZCBraW5k
LCB2b2lkKiBwdHIpCi0gICAgewotICAgICAgICBSRUxFQVNFX0JBU1NFUlQoa2luZCA8IE51bWJl
ck9mS2luZHMpOwotICAgICAgICBiYXNlUHRyc1traW5kXSA9IHB0cjsKLSAgICB9Ci0KLSAgICB1
bmlvbiB7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAvLyBBbGwgdGhlIGZpZWxkcyBp
biB0aGlzIHN0cnVjdCBzaG91bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgotICAgICAgICAg
ICAgLy8gaW5pdGlhbCB2YWx1ZSBpcyAwIC8gbnVsbCAvIGZhbHN5IGJlY2F1c2UgQ29uZmlnIGlz
IGluc3RhbnRpYXRlZAotICAgICAgICAgICAgLy8gYXMgYSBnbG9iYWwgc2luZ2xldG9uLgotCi0g
ICAgICAgICAgICBib29sIGlzRW5hYmxlZDsKLSAgICAgICAgICAgIGJvb2wgaXNQZXJtYW5lbnRs
eUZyb3plbjsKLSAgICAgICAgICAgIGJvb2wgZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0Zv
cmJpZGRlbjsKLSAgICAgICAgICAgIGJvb2wgc2hvdWxkQmVFbmFibGVkOwotCi0gICAgICAgICAg
ICAvLyBXZSB3b3VsZCBsaWtlIHRvIGp1c3QgcHV0IHRoZSBzdGQ6Om9uY2VfZmxhZyBmb3IgdGhl
c2UgZnVuY3Rpb25zCi0gICAgICAgICAgICAvLyBoZXJlLCBidXQgd2UgY2FuJ3QgYmVjYXVzZSBz
dGQ6Om9uY2VfZmxhZyBoYXMgYSBpbXBsaWNpdGx5LWRlbGV0ZWQKLSAgICAgICAgICAgIC8vIGRl
ZmF1bHQgY29uc3RydWN0b3IuIFNvLCB3ZSB1c2UgYSBib29sZWFuIGluc3RlYWQuCi0gICAgICAg
ICAgICBib29sIHNob3VsZEJlRW5hYmxlZEhhc0JlZW5DYWxsZWQ7Ci0gICAgICAgICAgICBib29s
IGVuc3VyZUdpZ2FjYWdlSGFzQmVlbkNhbGxlZDsKLQotICAgICAgICAgICAgdm9pZCogc3RhcnQ7
Ci0gICAgICAgICAgICBzaXplX3QgdG90YWxTaXplOwotICAgICAgICAgICAgdm9pZCogYmFzZVB0
cnNbTnVtYmVyT2ZLaW5kc107Ci0gICAgICAgIH07Ci0gICAgICAgIGNoYXIgZW5zdXJlU2l6ZVtj
b25maWdTaXplVG9Qcm90ZWN0XTsKLSAgICB9OwotfTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKENv
bmZpZykgPT0gY29uZmlnU2l6ZVRvUHJvdGVjdCwgIkdpZ2FjYWdlIENvbmZpZyBtdXN0IGZpdCBp
biBjb25maWdTaXplVG9Qcm90ZWN0Iik7Ci0KLWV4dGVybiAiQyIgYWxpZ25hcyhjb25maWdTaXpl
VG9Qcm90ZWN0KSBCRVhQT1JUIENvbmZpZyBnX2dpZ2FjYWdlQ29uZmlnOwotCiAvLyBUaGVzZSBj
b25zdGFudHMgYXJlIG5lZWRlZCBieSB0aGUgTExJbnQuCiBjb25zdGV4cHIgcHRyZGlmZl90IG9m
ZnNldE9mUHJpbWl0aXZlR2lnYWNhZ2VCYXNlUHRyID0gS2luZDo6UHJpbWl0aXZlICogc2l6ZW9m
KHZvaWQqKTsKIGNvbnN0ZXhwciBwdHJkaWZmX3Qgb2Zmc2V0T2ZKU1ZhbHVlR2lnYWNhZ2VCYXNl
UHRyID0gS2luZDo6SlNWYWx1ZSAqIHNpemVvZih2b2lkKik7CkluZGV4OiBTb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0dpZ2FjYWdlQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9HaWdhY2FnZUNvbmZpZy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvR2lnYWNhZ2VDb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJBbGdvcml0aG0uaCIKKyNpbmNsdWRlICJHaWdhY2FnZUtpbmQuaCIK
KyNpbmNsdWRlICJTdGRMaWJFeHRyYXMuaCIKKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorCituYW1l
c3BhY2UgV2ViQ29uZmlnIHsKKwordXNpbmcgU2xvdCA9IHVpbnQ2NF90OworZXh0ZXJuICJDIiBT
bG90IGdfY29uZmlnW107CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvbmZpZworCituYW1lc3BhY2Ug
R2lnYWNhZ2UgeworCitzdHJ1Y3QgQ29uZmlnIHsKKyAgICB2b2lkKiBiYXNlUHRyKEtpbmQga2lu
ZCkgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQkFTU0VSVChraW5kIDwgTnVtYmVyT2ZL
aW5kcyk7CisgICAgICAgIHJldHVybiBiYXNlUHRyc1traW5kXTsKKyAgICB9CisKKyAgICB2b2lk
IHNldEJhc2VQdHIoS2luZCBraW5kLCB2b2lkKiBwdHIpCisgICAgeworICAgICAgICBSRUxFQVNF
X0JBU1NFUlQoa2luZCA8IE51bWJlck9mS2luZHMpOworICAgICAgICBiYXNlUHRyc1traW5kXSA9
IHB0cjsKKyAgICB9CisKKyAgICAvLyBBbGwgdGhlIGZpZWxkcyBpbiB0aGlzIHN0cnVjdCBzaG91
bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgorICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAv
IG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKKyAgICAvLyBhcyBh
IGdsb2JhbCBzaW5nbGV0b24uCisKKyAgICBib29sIGlzUGVybWFuZW50bHlGcm96ZW47IC8vIFdp
bGwgYmUgc2V0IGJ5IHRoZSBjbGllbnQgaWYgdGhlIENvbmZpZyBnZXRzIGZyb3plbi4KKyAgICBi
b29sIGlzRW5hYmxlZDsKKyAgICBib29sIGRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3Ji
aWRkZW47CisgICAgYm9vbCBzaG91bGRCZUVuYWJsZWQ7CisKKyAgICAvLyBXZSB3b3VsZCBsaWtl
IHRvIGp1c3QgcHV0IHRoZSBzdGQ6Om9uY2VfZmxhZyBmb3IgdGhlc2UgZnVuY3Rpb25zCisgICAg
Ly8gaGVyZSwgYnV0IHdlIGNhbid0IGJlY2F1c2Ugc3RkOjpvbmNlX2ZsYWcgaGFzIGEgaW1wbGlj
aXRseS1kZWxldGVkCisgICAgLy8gZGVmYXVsdCBjb25zdHJ1Y3Rvci4gU28sIHdlIHVzZSBhIGJv
b2xlYW4gaW5zdGVhZC4KKyAgICBib29sIHNob3VsZEJlRW5hYmxlZEhhc0JlZW5DYWxsZWQ7Cisg
ICAgYm9vbCBlbnN1cmVHaWdhY2FnZUhhc0JlZW5DYWxsZWQ7CisKKyAgICB2b2lkKiBzdGFydDsK
KyAgICBzaXplX3QgdG90YWxTaXplOworICAgIHZvaWQqIGJhc2VQdHJzW051bWJlck9mS2luZHNd
OworfTsKKworY29uc3RleHByIHNpemVfdCBzdGFydFNsb3RPZkdpZ2FjYWdlQ29uZmlnID0gMDsK
K2NvbnN0ZXhwciBzaXplX3Qgc3RhcnRPZmZzZXRPZkdpZ2FjYWdlQ29uZmlnID0gc3RhcnRTbG90
T2ZHaWdhY2FnZUNvbmZpZyAqIHNpemVvZihXZWJDb25maWc6OlNsb3QpOworCitjb25zdGV4cHIg
c2l6ZV90IHJlc2VydmVkU2xvdHNGb3JHaWdhY2FnZUNvbmZpZyA9IDY7Citjb25zdGV4cHIgc2l6
ZV90IHJlc2VydmVkQnl0ZXNGb3JHaWdhY2FnZUNvbmZpZyA9IHJlc2VydmVkU2xvdHNGb3JHaWdh
Y2FnZUNvbmZpZyAqIHNpemVvZihXZWJDb25maWc6OlNsb3QpOworCitjb25zdGV4cHIgc2l6ZV90
IGFsaWdubWVudE9mR2lnYWNhZ2VDb25maWcgPSBzdGQ6OmFsaWdubWVudF9vZjxHaWdhY2FnZTo6
Q29uZmlnPjo6dmFsdWU7CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdpZ2FjYWdlOjpDb25maWcp
IDw9IHJlc2VydmVkQnl0ZXNGb3JHaWdhY2FnZUNvbmZpZyk7CitzdGF0aWNfYXNzZXJ0KGJtYWxs
b2M6OnJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25tZW50T2ZHaWdhY2FnZUNvbmZpZz4oc3RhcnRP
ZmZzZXRPZkdpZ2FjYWdlQ29uZmlnKSA9PSBzdGFydE9mZnNldE9mR2lnYWNhZ2VDb25maWcpOwor
CisjZGVmaW5lIGdfZ2lnYWNhZ2VDb25maWcgKCpibWFsbG9jOjpiaXR3aXNlX2Nhc3Q8R2lnYWNh
Z2U6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW0dpZ2FjYWdlOjpzdGFydFNsb3RPZkdp
Z2FjYWdlQ29uZmlnXSkpCisKK30gLy8gbmFtZXNwYWNlIEdpZ2FjYWdlCkluZGV4OiBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvR2lnYWNhZ2VLaW5kLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9HaWdhY2FnZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKK25hbWVzcGFjZSBHaWdhY2FnZSB7CisKK2VudW0gS2luZCB7CisgICAgUHJpbWl0aXZl
LAorICAgIEpTVmFsdWUsCisgICAgTnVtYmVyT2ZLaW5kcworfTsKKworfSAvLyBuYW1lc3BhY2Ug
R2lnYWNhZ2UKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvbWJtYWxsb2MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvbWJtYWxsb2MuY3BwCShyZXZpc2lvbiAy
NjIzNjcpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL21ibWFsbG9jLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsMTUgQEAKICNpbmNsdWRlICJibWFsbG9jLmgiCiAKICNpbmNsdWRl
ICJCRXhwb3J0LmgiCisjaW5jbHVkZSAiR2lnYWNhZ2VDb25maWcuaCIKKworbmFtZXNwYWNlIFdl
YkNvbmZpZyB7CisKK2NvbnN0ZXhwciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJvdGVjdCA9IDE2ICog
MTAyNDsKKworYWxpZ25hcyhDb25maWdTaXplVG9Qcm90ZWN0KSBCRVhQT1JUIFNsb3QgZ19jb25m
aWdbQ29uZmlnU2l6ZVRvUHJvdGVjdCAvIHNpemVvZihTbG90KV07CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvbmZpZwogCiBleHRlcm4gIkMiIHsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400721</attachid>
            <date>2020-05-31 22:10:26 -0700</date>
            <delta_ts>2020-06-02 00:58:21 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-212585.patch</filename>
            <type>text/plain</type>
            <size>29512</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyMzY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDIwLTA1LTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29u
ZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMjU4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvSlNDQ29uZmln
Lmg6CisgICAgICAgIChKU0M6OkNvbmZpZzo6aXNQZXJtYW5lbnRseUZyb3plbik6CisKIDIwMjAt
MDUtMzEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29u
c2lkZXIgYSBUaHJlYWQgU3BlY2lmaWMgQ2FjaGUgZm9yIEFzc2VtYmxlckJ1ZmZlcnMKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCShyZXZpc2lvbiAyNjIzNjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtNDMyLDcgKzQz
Miw3IEBAIG1hY3JvIGNhZ2VkUHJpbWl0aXZlKHB0ciwgbGVuZ3RoLCBzY3JhdGMKICAgICAgICAg
Y29uc3Qgc291cmNlID0gcHRyCiAgICAgZW5kCiAgICAgaWYgR0lHQUNBR0VfRU5BQkxFRAotICAg
ICAgICBjYWdlKF9nX2dpZ2FjYWdlQ29uZmlnICsgR2lnYWNhZ2U6OkNvbmZpZzo6YmFzZVB0cnMg
KyBHaWdhY2FnZVByaW1pdGl2ZUJhc2VQdHJPZmZzZXQsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJp
bWl0aXZlR2lnYWNhZ2VNYXNrLCBzb3VyY2UsIHNjcmF0Y2gpCisgICAgICAgIGNhZ2UoX2dfY29u
ZmlnICsgKGNvbnN0ZXhwciBHaWdhY2FnZTo6c3RhcnRPZmZzZXRPZkdpZ2FjYWdlQ29uZmlnKSAr
IEdpZ2FjYWdlOjpDb25maWc6OmJhc2VQdHJzICsgR2lnYWNhZ2VQcmltaXRpdmVCYXNlUHRyT2Zm
c2V0LCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgc291cmNlLCBz
Y3JhdGNoKQogICAgICAgICBpZiBBUk02NEUKICAgICAgICAgICAgIGNvbnN0IG51bWJlck9mUEFD
Qml0cyA9IGNvbnN0ZXhwciBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZQQUNCaXRzCiAgICAgICAg
ICAgICBiZmlxIHNjcmF0Y2gyLCAwLCA2NCAtIG51bWJlck9mUEFDQml0cywgcHRyCkBAIC00NDYs
NyArNDQ2LDcgQEAgZW5kCiBtYWNybyBsb2FkQ2FnZWRKU1ZhbHVlKHNvdXJjZSwgZGVzdCwgc2Ny
YXRjaE9yTGVuZ3RoKQogICAgIGxvYWRwIHNvdXJjZSwgZGVzdAogICAgIGlmIEdJR0FDQUdFX0VO
QUJMRUQKLSAgICAgICAgY2FnZShfZ19naWdhY2FnZUNvbmZpZyArIEdpZ2FjYWdlOjpDb25maWc6
OmJhc2VQdHJzICsgR2lnYWNhZ2VKU1ZhbHVlQmFzZVB0ck9mZnNldCwgY29uc3RleHByIEdpZ2Fj
YWdlOjpqc1ZhbHVlR2lnYWNhZ2VNYXNrLCBkZXN0LCBzY3JhdGNoT3JMZW5ndGgpCisgICAgICAg
IGNhZ2UoX2dfY29uZmlnICsgKGNvbnN0ZXhwciBHaWdhY2FnZTo6c3RhcnRPZmZzZXRPZkdpZ2Fj
YWdlQ29uZmlnKSArIEdpZ2FjYWdlOjpDb25maWc6OmJhc2VQdHJzICsgR2lnYWNhZ2VKU1ZhbHVl
QmFzZVB0ck9mZnNldCwgY29uc3RleHByIEdpZ2FjYWdlOjpqc1ZhbHVlR2lnYWNhZ2VNYXNrLCBk
ZXN0LCBzY3JhdGNoT3JMZW5ndGgpCiAgICAgZW5kCiBlbmQKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgJKHJldmlzaW9uIDI2MjM2NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw3ICs1MSw3IEBAIHN0cnVjdCBDb25maWcgewogICAgICAgICBlbmFibGVSZXN0cmljdGVkT3B0
aW9ucygpOwogICAgIH0KIAotICAgIGJvb2wgaXNQZXJtYW5lbnRseUZyb3plbigpIHsgcmV0dXJu
IFdURjo6Z193dGZDb25maWcuaXNQZXJtYW5lbnRseUZyb3plbjsgfQorICAgIGJvb2wgaXNQZXJt
YW5lbnRseUZyb3plbigpIHsgcmV0dXJuIGdfd3RmQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW47
IH0KIAogICAgIC8vIEFsbCB0aGUgZmllbGRzIGluIHRoaXMgc3RydWN0IHNob3VsZCBiZSBjaG9z
ZW4gc3VjaCB0aGF0IHRoZWlyCiAgICAgLy8gaW5pdGlhbCB2YWx1ZSBpcyAwIC8gbnVsbCAvIGZh
bHN5IGJlY2F1c2UgQ29uZmlnIGlzIGluc3RhbnRpYXRlZApAQCAtODIsMTIgKzgyLDExIEBAIHN0
cnVjdCBDb25maWcgewogICAgIFdURjo6UHRyVGFnTG9va3VwIHB0clRhZ0xvb2t1cFJlY29yZDsK
IH07CiAKLWNvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24gPSBvZmZz
ZXRvZihXVEY6OkNvbmZpZywgc3BhY2VGb3JFeHRlbnNpb25zKTsKIGNvbnN0ZXhwciBzaXplX3Qg
YWxpZ25tZW50T2ZKU0NDb25maWcgPSBzdGQ6OmFsaWdubWVudF9vZjxKU0M6OkNvbmZpZz46OnZh
bHVlOwogCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihKU0M6OkNvbmZpZykgPD0gKHNpemVvZihXVEY6
OkNvbmZpZykgLSBvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbikpOwotc3RhdGljX2Fzc2VydChy
b3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdubWVudE9mSlNDQ29uZmlnPihvZmZzZXRPZldURkNvbmZp
Z0V4dGVuc2lvbikgPT0gb2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24pOworc3RhdGljX2Fzc2Vy
dChXVEY6Om9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uICsgc2l6ZW9mKEpTQzo6Q29uZmlnKSA8
PSBXVEY6OkNvbmZpZ1NpemVUb1Byb3RlY3QpOworc3RhdGljX2Fzc2VydChyb3VuZFVwVG9NdWx0
aXBsZU9mPGFsaWdubWVudE9mSlNDQ29uZmlnPihXVEY6Om9mZnNldE9mV1RGQ29uZmlnRXh0ZW5z
aW9uKSA9PSBXVEY6Om9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uKTsKIAotI2RlZmluZSBnX2pz
Y0NvbmZpZyAoKmJpdHdpc2VfY2FzdDxDb25maWcqPigmV1RGOjpnX3d0ZkNvbmZpZy5zcGFjZUZv
ckV4dGVuc2lvbnMpKQorI2RlZmluZSBnX2pzY0NvbmZpZyAoKmJpdHdpc2VfY2FzdDxKU0M6OkNv
bmZpZyo+KCZnX3d0ZkNvbmZpZy5zcGFjZUZvckV4dGVuc2lvbnMpKQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjIzNjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA1LTMxICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0byB1
c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29uZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjU4NQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugbm93IHRoaW5rIG9mIHRoZSB2YXJpb3VzIENvbmZp
ZyByZWNvcmRzIGFzIGJlaW5nIGFsbG9jYXRlZCBmcm9tIHBhcnRzIG9mIGEKKyAgICAgICAgV2Vi
Q29uZmlnOjpnX2NvbmZpZyBidWZmZXIuICBXVEY6OkNvbmZpZyB3aWxsIG1hbmFnZSB0aGUgbWVj
aGFuaWNzIG9mIGZyZWV6aW5nCisgICAgICAgIHRoYXQgYnVmZmVyLiAgQW5kIHRoZSBKU0MgVk0g
aXMgc3RpbGwgdGhlIGRldGVybWluZXIgb2YgaWYvd2hlbiB0byBmcmVlemUgdGhlCisgICAgICAg
IGJ1ZmZlciwgYW5kIGl0IHdpbGwgZG8gdGhpcyBhdCB0aGUgZW5kIG9mIHRoZSBjb25zdHJ1Y3Rp
b24gb2YgdGhlIHZlcnkgZmlyc3QKKyAgICAgICAgVk0gaW5zdGFuY2UgKGFzIGJlZm9yZSkuCisK
KyAgICAgICAgR2lnYWNhZ2U6OkNvbmZpZyByZXNlcnZlcyBzcGFjZSBpbiBXZWJDb25maWc6Omdf
Y29uZmlnLgorICAgICAgICBXVEY6OkNvbmZpZyB3aWxsIGhvbm9yIHRoYXQgcmVzZXJ2YXRpb24g
YW5kIHBsYWNlIGl0c2VsZiBhZnRlciB0aGF0LgorICAgICAgICBKU0M6OkNvbmZpZyB3aWxsIGNv
bnRpbnVlIHRvIHBsYWNlIGl0c2VsZiBhdCBXVEY6OkNvbmZpZzo6c3BhY2VGb3JFeHRlbnNpb25z
LgorCisgICAgICAgIFRoZSB1cHNpZGUgb2YgdGhpcyBhcHByb2FjaCB0aGlzIGlzIHRoYXQgd2Ug
Y2FuIG5vdyBzaGFyZSB0aGUgc2FtZSBtZW1vcnkgcGFnZQorICAgICAgICBmb3IgYWxsIHRoZSBD
b25maWdzLCBhbmQgY2FuIGZyZWV6ZSB0aGVtIGluIG9uZSBnby4KKworICAgICAgICBUaGUgZG93
bnNpZGUgaXMgdGhhdCBnX2dpZ2FjYWdlQ29uZmlnLCBnX3d0ZkNvbmZpZywgYW5kIGdfanNjQ29u
ZmlnIG5vdyBoYXZlIHRvCisgICAgICAgIGJlIG1hY3Jvcy4gIFRoaXMgcmVzdWx0cyBpbiBzb21l
IHdlaXJkbmVzcyBlLmcuIHRoZXkgYXJlIG5vIGxvbmdlciBxdWFsaWZpZWQgYnkKKyAgICAgICAg
bmFtZXNwYWNlczogcmVmZXJyaW5nIHRvIFdURjo6Z193dGZDb25maWcgaXMgbm93IGluY29ycmVj
dC4KKworICAgICAgICAqIHd0Zi9XVEZDb25maWcuY3BwOgorICAgICAgICAoV1RGOjpDb25maWc6
OnBlcm1hbmVudGx5RnJlZXplKToKKyAgICAgICAgKiB3dGYvV1RGQ29uZmlnLmg6CisgICAgICAg
ICgpOiBEZWxldGVkLgorCiAyMDIwLTA1LTMxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBDaGFuZ2UgSlNDOjpDb25maWcgdG8gdXNlIHN0b3JhZ2UgaW4gV1RGOjpD
b25maWcgaW5zdGVhZCBvZiBpdHMgb3duLgpJbmRleDogU291cmNlL1dURi93dGYvV1RGQ29uZmln
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9XVEZDb25maWcuY3BwCShyZXZpc2lv
biAyNjIzNjcpCisrKyBTb3VyY2UvV1RGL3d0Zi9XVEZDb25maWcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSA8d3RmL1dU
RkNvbmZpZy5oPgogCisjaW5jbHVkZSA8d3RmL0dpZ2FjYWdlLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTM1LDkgKzM2LDEzIEBA
CiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KICNlbmRpZgogCi1uYW1lc3BhY2UgV1RGIHsKK25hbWVz
cGFjZSBXZWJDb25maWcgeworCithbGlnbmFzKFdURjo6Q29uZmlnU2l6ZVRvUHJvdGVjdCkgU2xv
dCBnX2NvbmZpZ1tXVEY6OkNvbmZpZ1NpemVUb1Byb3RlY3QgLyBzaXplb2YoU2xvdCldOwogCi1h
bGlnbmFzKENvbmZpZ1NpemVUb1Byb3RlY3QpIFdURl9FWFBPUlRfUFJJVkFURSBDb25maWcgZ193
dGZDb25maWc7Cit9IC8vIG5hbWVzcGFjZSBXZWJDb25maWcKKworbmFtZXNwYWNlIFdURiB7CiAK
IHZvaWQgQ29uZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSgpCiB7CkBAIC00Niw4ICs1MSwxMiBAQCB2
b2lkIENvbmZpZzo6cGVybWFuZW50bHlGcmVlemUoKQogCiAgICAgUkVMRUFTRV9BU1NFUlQocm91
bmRVcFRvTXVsdGlwbGVPZihwYWdlU2l6ZSgpLCBDb25maWdTaXplVG9Qcm90ZWN0KSA9PSBDb25m
aWdTaXplVG9Qcm90ZWN0KTsKIAotICAgIGlmICghZ193dGZDb25maWcuaXNQZXJtYW5lbnRseUZy
b3plbikKKyAgICBpZiAoIWdfd3RmQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4pIHsKICAgICAg
ICAgZ193dGZDb25maWcuaXNQZXJtYW5lbnRseUZyb3plbiA9IHRydWU7CisjaWYgR0lHQUNBR0Vf
RU5BQkxFRAorICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4gPSB0
cnVlOworI2VuZGlmCisgICAgfQogCiAgICAgaW50IHJlc3VsdCA9IDA7CiAjaWYgT1MoREFSV0lO
KQpAQCAtNTcsOSArNjYsOSBAQCB2b2lkIENvbmZpZzo6cGVybWFuZW50bHlGcmVlemUoKQogICAg
IH07CiAKICAgICAvLyBUaGVyZSdzIG5vIGdvaW5nIGJhY2sgbm93IQotICAgIHJlc3VsdCA9IHZt
X3Byb3RlY3QobWFjaF90YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+
KCZnX3d0ZkNvbmZpZyksIENvbmZpZ1NpemVUb1Byb3RlY3QsIERpc2FsbG93UGVybWlzc2lvbkNo
YW5nZXNBZnRlclRoaXMsIFZNX1BST1RfUkVBRCk7CisgICAgcmVzdWx0ID0gdm1fcHJvdGVjdCht
YWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJldlYkNvbmZp
Zzo6Z19jb25maWcpLCBDb25maWdTaXplVG9Qcm90ZWN0LCBEaXNhbGxvd1Blcm1pc3Npb25DaGFu
Z2VzQWZ0ZXJUaGlzLCBWTV9QUk9UX1JFQUQpOwogI2VsaWYgT1MoTElOVVgpCi0gICAgcmVzdWx0
ID0gbXByb3RlY3QoJmdfd3RmQ29uZmlnLCBDb25maWdTaXplVG9Qcm90ZWN0LCBQUk9UX1JFQUQp
OworICAgIHJlc3VsdCA9IG1wcm90ZWN0KCZXZWJDb25maWc6OmdfY29uZmlnLCBDb25maWdTaXpl
VG9Qcm90ZWN0LCBQUk9UX1JFQUQpOwogI2VsaWYgT1MoV0lORE9XUykKICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IGVxdWl2YWxlbnQsIG1heWJlIHdpdGggVmlydHVhbFByb3RlY3QuCiAgICAgLy8g
QWxzbyBuZWVkIHRvIGZpeCBXZWJLaXRUZXN0UnVubmVyLgpJbmRleDogU291cmNlL1dURi93dGYv
V1RGQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmgJKHJl
dmlzaW9uIDI2MjM2NykKKysrIFNvdXJjZS9XVEYvd3RmL1dURkNvbmZpZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvdGhyZWFkcy9TaWduYWxzLmg+CiAKKyNpZiBkZWZpbmVkKFVTRV9TWVNURU1f
TUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExPQworbmFtZXNwYWNlIEdpZ2FjYWdlIHsKK2NvbnN0
ZXhwciBzaXplX3QgcmVzZXJ2ZWRTbG90c0ZvckdpZ2FjYWdlQ29uZmlnID0gMDsKK2NvbnN0ZXhw
ciBzaXplX3QgcmVzZXJ2ZWRCeXRlc0ZvckdpZ2FjYWdlQ29uZmlnID0gMDsKK30KKyNlbHNlCisj
aW5jbHVkZSA8Ym1hbGxvYy9HaWdhY2FnZUNvbmZpZy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJDb25maWcgeworCit1c2luZyBTbG90ID0gdWludDY0X3Q7CitleHRlcm4gIkMiIFdURl9FWFBP
UlRfUFJJVkFURSBTbG90IGdfY29uZmlnW107CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvbmZpZwor
CiBuYW1lc3BhY2UgV1RGIHsKIAogY29uc3RleHByIHNpemVfdCBDb25maWdTaXplVG9Qcm90ZWN0
ID0gQ2VpbGluZ09uUGFnZVNpemU7CkBAIC00NSwyOCArNjEsMzEgQEAgc3RydWN0IENvbmZpZyB7
CiAgICAgICAgIH5Bc3NlcnROb3RGcm96ZW5TY29wZSgpOwogICAgIH07CiAKLSAgICB1bmlvbiB7
Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAvLyBBbGwgdGhlIGZpZWxkcyBpbiB0aGlz
IHN0cnVjdCBzaG91bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgotICAgICAgICAgICAgLy8g
aW5pdGlhbCB2YWx1ZSBpcyAwIC8gbnVsbCAvIGZhbHN5IGJlY2F1c2UgQ29uZmlnIGlzIGluc3Rh
bnRpYXRlZAotICAgICAgICAgICAgLy8gYXMgYSBnbG9iYWwgc2luZ2xldG9uLgorICAgIC8vIEFs
bCB0aGUgZmllbGRzIGluIHRoaXMgc3RydWN0IHNob3VsZCBiZSBjaG9zZW4gc3VjaCB0aGF0IHRo
ZWlyCisgICAgLy8gaW5pdGlhbCB2YWx1ZSBpcyAwIC8gbnVsbCAvIGZhbHN5IGJlY2F1c2UgQ29u
ZmlnIGlzIGluc3RhbnRpYXRlZAorICAgIC8vIGFzIGEgZ2xvYmFsIHNpbmdsZXRvbi4KIAotICAg
ICAgICAgICAgYm9vbCBpc1Blcm1hbmVudGx5RnJvemVuOworICAgIGJvb2wgaXNQZXJtYW5lbnRs
eUZyb3plbjsKIAogI2lmIFVTRShQVEhSRUFEUykgJiYgSEFWRShNQUNISU5FX0NPTlRFWFQpCi0g
ICAgICAgICAgICBTaWduYWxIYW5kbGVycyBzaWduYWxIYW5kbGVyczsKKyAgICBTaWduYWxIYW5k
bGVycyBzaWduYWxIYW5kbGVyczsKICNlbmRpZgotICAgICAgICAgICAgUHRyVGFnTG9va3VwKiBw
dHJUYWdMb29rdXBIZWFkOworICAgIFB0clRhZ0xvb2t1cCogcHRyVGFnTG9va3VwSGVhZDsKIAot
ICAgICAgICAgICAgdWludDY0X3Qgc3BhY2VGb3JFeHRlbnNpb25zWzFdOwotICAgICAgICB9Owot
ICAgICAgICBjaGFyIGVuc3VyZVNpemVbQ29uZmlnU2l6ZVRvUHJvdGVjdF07Ci0gICAgfTsKKyAg
ICB1aW50NjRfdCBzcGFjZUZvckV4dGVuc2lvbnNbMV07CiB9OwogCi1leHRlcm4gIkMiIGFsaWdu
YXMoQ29uZmlnU2l6ZVRvUHJvdGVjdCkgV1RGX0VYUE9SVF9QUklWQVRFIENvbmZpZyBnX3d0ZkNv
bmZpZzsKK2NvbnN0ZXhwciBzaXplX3Qgc3RhcnRTbG90T2ZXVEZDb25maWcgPSBHaWdhY2FnZTo6
cmVzZXJ2ZWRTbG90c0ZvckdpZ2FjYWdlQ29uZmlnOworY29uc3RleHByIHNpemVfdCBzdGFydE9m
ZnNldE9mV1RGQ29uZmlnID0gc3RhcnRTbG90T2ZXVEZDb25maWcgKiBzaXplb2YoV2ViQ29uZmln
OjpTbG90KTsKKworY29uc3RleHByIHNpemVfdCBvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbiA9
IHN0YXJ0T2Zmc2V0T2ZXVEZDb25maWcgKyBvZmZzZXRvZihXVEY6OkNvbmZpZywgc3BhY2VGb3JF
eHRlbnNpb25zKTsKKworY29uc3RleHByIHNpemVfdCBhbGlnbm1lbnRPZldURkNvbmZpZyA9IHN0
ZDo6YWxpZ25tZW50X29mPFdURjo6Q29uZmlnPjo6dmFsdWU7CisKK3N0YXRpY19hc3NlcnQoR2ln
YWNhZ2U6OnJlc2VydmVkQnl0ZXNGb3JHaWdhY2FnZUNvbmZpZyArIHNpemVvZihXVEY6OkNvbmZp
ZykgPD0gQ29uZmlnU2l6ZVRvUHJvdGVjdCk7CitzdGF0aWNfYXNzZXJ0KHJvdW5kVXBUb011bHRp
cGxlT2Y8YWxpZ25tZW50T2ZXVEZDb25maWc+KHN0YXJ0T2Zmc2V0T2ZXVEZDb25maWcpID09IHN0
YXJ0T2Zmc2V0T2ZXVEZDb25maWcpOwogCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihDb25maWcpID09
IENvbmZpZ1NpemVUb1Byb3RlY3QpOworI2RlZmluZSBnX3d0ZkNvbmZpZyAoKmJpdHdpc2VfY2Fz
dDxXVEY6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW1dURjo6c3RhcnRTbG90T2ZXVEZD
b25maWddKSkKIAogQUxXQVlTX0lOTElORSBDb25maWc6OkFzc2VydE5vdEZyb3plblNjb3BlOjpB
c3NlcnROb3RGcm96ZW5TY29wZSgpCiB7CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjIzNjcp
CisrKyBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1
OCBAQAorMjAyMC0wNS0zMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgQ2hhbmdlIEdpZ2FjYWdlOjpDb25maWcgdG8gdXNlIHN0b3JhZ2UgaW4gV2ViQ29uZmlnOjpn
X2NvbmZpZyBpbnN0ZWFkIG9mIGl0cyBvd24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI1ODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzODEy
NDg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDEu
IEdpZ2FjYWdlOjpDb25maWcgbm93IHJlc2VydmVzIGFuZCBleHBlY3Qgc3BhY2UgdG8gYmUgYXZh
aWxhYmxlIGluIGFuIGV4dGVybmFsCisgICAgICAgICAgIFdlYkNvbmZpZzo6Z19jb25maWcgYnVm
ZmVyLiAgR2lnYWNhZ2UgZG9lcyBub3QgYWxsb2NhdGUgdGhhdCBidWZmZXIuCisKKyAgICAgICAg
Mi4gTW92ZWQgR2lnYWNhZ2U6OkNvbmZpZyB0byBHaWdhY2FnZUNvbmZpZy5oLgorICAgICAgICAg
ICBUaGlzIGFsbG93cyBXVEZDb25maWcuaCB0byBpbmNsdWRlIEdpZ2FjYWdlQ29uZmlnLmggaW5z
dGVhZCBvZiBhbGwgb2YgR2lnYWNhZ2UuaC4KKworICAgICAgICAzLiBNb3ZlZCBHaWdhY2FnZTo6
S2luZCB0byBHaWdhY2FnZUtpbmQuaC4KKyAgICAgICAgICAgT3RoZXJ3aXNlLCBHaWdhY2FnZTo6
S2luZCB3b3VsZCBuZWVkIHRvIG1vdmUgdG8gR2lnYWNhZ2VDb25maWcuaCB3aGljaCBpcyBhCisg
ICAgICAgICAgIHdlaXJkIHBsYWNlIHRvIHB1dCBpdC4KKworICAgICAgICA0LiBSZW1vdmVkIGZy
ZWV6ZUdpZ2FjYWdlQ29uZmlnKCksIHVuZnJlZXplR2lnYWNhZ2VDb25maWcoKSwgYW5kCisgICAg
ICAgICAgIHBlcm1hbmVudGx5RnJlZXplR2lnYWNhZ2VDb25maWcoKS4KKworICAgICAgICAgICBJ
dCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8gdGVtcG9yYXJpbHkgZnJlZXplIGFuZCB1bmZyZWV6
ZSB0aGUgR2lnYWNhZ2U6OkNvbmZpZworICAgICAgICAgICBiZWNhdXNlIGl0IG5vdyBzaGFyZSB0
aGUgc2FtZSBtZW1vcnkgcGFnZSB3aXRoIGhpZ2hlciBsZXZlbCBDb25maWdzLgorCisgICAgICAg
ICAgIHBlcm1hbmVudGx5RnJlZXplR2lnYWNhZ2VDb25maWcoKSBpcyBubyBsb25nZXIgbmVlZGVk
IGJlY2F1c2UgaXQgaXMgc3Vic3VtZWQKKyAgICAgICAgICAgYnkgV1RGOjpDb25maWc6OnBlcm1h
bmVudGx5RnJlZXplKCksIHdoaWNoIHdpbGwgZnJlZXplIHRoZSBlbnRpcmUgV2ViQ29uZmlnOjpn
X2NvbmZpZworICAgICAgICAgICBidWZmZXIuCisKKyAgICAgICAgICAgT25lIGRpZmZlcmVuY2Ug
aW4gYmVoYXZpb3IgaGVyZSBpcyB0aGF0IEdpZ2FjYWdlOjpDb25maWcgZGF0YSB1c2VkIHRvIGJl
IHBlcm1hbmVudGx5CisgICAgICAgICAgIGZyb3plbiBhcyBzb29uIGFzIGZvcmJpZERpc2FibGlu
Z1ByaW1pdGl2ZUdpZ2FjYWdlKCkgaXMgY2FsbGVkLiAgTm93LCBpdCBpc24ndAorICAgICAgICAg
ICBwZXJtYW5lbnRseSBmcm96ZW4gdW50aWwgdGhlIGVuZCBvZiB0aGUgY29uc3RydWN0aW9uIG9m
IHRoZSBmaXJzdCBKU0M6OlZNIGluc3RhbmNlCisgICAgICAgICAgIGluIHRoZSBwcm9jZXNzIChq
dXN0IGxpa2UgdGhlIG90aGVyIENvbmZpZyByZWNvcmRzKS4gIFRoaXMgc3RpbGwgZ3VhcmFudGVl
cyB0aGF0CisgICAgICAgICAgIGl0IGlzIGZyb3plbiBiZWZvcmUgYW55IEpTIHNjcmlwdCBjYW4g
cnVuLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogYm1hbGxvYy54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuY3BwOgor
ICAgICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpk
aXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UpOgorICAgICAgICAoR2lnYWNhZ2U6OmZvcmJpZERpc2Fi
bGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpmcmVl
emVHaWdhY2FnZUNvbmZpZyk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6
dW5mcmVlemVHaWdhY2FnZUNvbmZpZyk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Ym1h
bGxvYzo6cGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZyk6IERlbGV0ZWQuCisgICAgICAg
IChHaWdhY2FnZTo6Ym1hbGxvYzo6VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlOjpVbmZyZWV6
ZUdpZ2FjYWdlQ29uZmlnU2NvcGUpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxs
b2M6OlVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZTo6flVuZnJlZXplR2lnYWNhZ2VDb25maWdT
Y29wZSk6IERlbGV0ZWQuCisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZS5oOgorICAgICAgICAo
KTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpDb25maWc6OmJhc2VQdHIgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OkNvbmZpZzo6c2V0QmFzZVB0cik6IERlbGV0ZWQu
CisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKEdp
Z2FjYWdlOjpDb25maWc6OmJhc2VQdHIgY29uc3QpOgorICAgICAgICAoR2lnYWNhZ2U6OkNvbmZp
Zzo6c2V0QmFzZVB0cik6CisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZUtpbmQuaDogQWRkZWQu
CisgICAgICAgICogYm1hbGxvYy9tYm1hbGxvYy5jcHA6CisKIDIwMjAtMDUtMjMgIENhaW8gTGlt
YSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIFtibWFsbG9jXSBGaXggT09NIGVy
cm9ycyBvbiBNSVBTIGFmdGVyIHIyNjE2NjcKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAyNjIzNjcpCisrKyBTb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNjksNiArNjksOCBAQCBzZXQoYm1hbGxvY19QVUJMSUNfSEVBREVSUwogICAgIGJt
YWxsb2MvRnJlZUxpc3QuaAogICAgIGJtYWxsb2MvRnJlZUxpc3RJbmxpbmVzLmgKICAgICBibWFs
bG9jL0dpZ2FjYWdlLmgKKyAgICBibWFsbG9jL0dpZ2FjYWdlQ29uZmlnLmgKKyAgICBibWFsbG9j
L0dpZ2FjYWdlS2luZC5oCiAgICAgYm1hbGxvYy9IZWFwLmgKICAgICBibWFsbG9jL0hlYXBDb25z
dGFudHMuaAogICAgIGJtYWxsb2MvSGVhcEtpbmQuaApJbmRleDogU291cmNlL2JtYWxsb2MvYm1h
bGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYyMzY3KQor
KysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTEsNiArMTUxLDggQEAKIAkJRUIxN0QxMTEyM0JGQ0Q0MjAwMjA5M0E3
IC8qIEhlYXBDb25zdGFudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRUIxN0QxMTAyM0JGQzhDNDAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuY3Bw
ICovOyB9OwogCQlFQjE3RDExMjIzQkZDRDdBMDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIxN0QxMEUyM0JF
NjkxRDAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTQ4QkQzQjIzMjFFOEQ3MDBGMTM2RDAgLyogRmFp
bHVyZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU0OEJEM0EyMzIxRThDQzAwRjEzNkQwIC8qIEZhaWx1cmVBY3Rpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRUMzQTM5MzI0ODQ2QTgx
MDAzOTVCNTQgLyogR2lnYWNhZ2VDb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzNBMzkyMjQ4NDZBNkQwMDM5NUI1NCAvKiBHaWdhY2FnZUNv
bmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUZFQzNBMzk1MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzNBMzk0MjQ4NDcxRkUwMDM5NUI1
NCAvKiBHaWdhY2FnZUtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0zMDcsNiArMzA5LDggQEAKIAkJRUIx
N0QxMEUyM0JFNjkxRDAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gSGVhcENvbnN0YW50cy5oOyBwYXRoID0gYm1hbGxvYy9IZWFwQ29u
c3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMTdEMTEwMjNCRkM4QzQw
MDIwOTNBNyAvKiBIZWFwQ29uc3RhbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEhlYXBDb25zdGFudHMuY3BwOyBwYXRoID0gYm1hbGxvYy9IZWFwQ29uc3RhbnRz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0OEJEM0EyMzIxRThDQzAwRjEz
NkQwIC8qIEZhaWx1cmVBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
RmFpbHVyZUFjdGlvbi5oOyBwYXRoID0gYm1hbGxvYy9GYWlsdXJlQWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQzNBMzkyMjQ4NDZBNkQwMDM5NUI1NCAvKiBHaWdhY2Fn
ZUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHaWdhY2FnZUNvbmZp
Zy5oOyBwYXRoID0gYm1hbGxvYy9HaWdhY2FnZUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRUMzQTM5NDI0ODQ3MUZFMDAzOTVCNTQgLyogR2lnYWNhZ2VLaW5kLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdpZ2FjYWdlS2luZC5oOyBwYXRoID0gYm1h
bGxvYy9HaWdhY2FnZUtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQ
QlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwpAQCAtNDg2LDYgKzQ5MCw4IEBACiAJCQkJRkU0OEJEM0EyMzIxRThD
QzAwRjEzNkQwIC8qIEZhaWx1cmVBY3Rpb24uaCAqLywKIAkJCQkwRjVCRjE0RTFGMjJERUFGMDAy
OUQ5MUQgLyogR2lnYWNhZ2UuY3BwICovLAogCQkJCTBGNUJGMTRDMUYyMkIwQzMwMDI5RDkxRCAv
KiBHaWdhY2FnZS5oICovLAorCQkJCUZFQzNBMzkyMjQ4NDZBNkQwMDM5NUI1NCAvKiBHaWdhY2Fn
ZUNvbmZpZy5oICovLAorCQkJCUZFQzNBMzk0MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtp
bmQuaCAqLywKIAkJCQkxNERBMzIwRTE4ODc1RDlGMDA3MjY5RTAgLyogSGVhcC5jcHAgKi8sCiAJ
CQkJMTREQTMyMEMxODg3NUIwOTAwNzI2OUUwIC8qIEhlYXAuaCAqLywKIAkJCQlFQjE3RDExMDIz
QkZDOEM0MDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5jcHAgKi8sCkBAIC02MDYsNiArNjEyLDcg
QEAKIAkJCQlGRTQ4QkQzQjIzMjFFOEQ3MDBGMTM2RDAgLyogRmFpbHVyZUFjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTRERDc4QzgxOEY0OEQ3NTAwOTUwNzAyIC8qIEZpeGVkVmVjdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjdFQjg0NDFGOTU0MUIwMDBGMUFCQ0IgLyogRnJlZUxpc3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZFQzNBMzkzMjQ4NDZBODEwMDM5NUI1NCAvKiBHaWdhY2Fn
ZUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3RUI4MjkxRjk1NDFCMDAwRjFBQkNCIC8q
IEZyZWVMaXN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QkYxNEQxRjIyQjBDMzAw
MjlEOTFEIC8qIEdpZ2FjYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDAwMjc0OTE4Rjg5QzEz
MDAxMTVDOTcgLyogSGVhcC5oIGluIEhlYWRlcnMgKi8sCkBAIC02NTQsNiArNjYxLDcgQEAKIAkJ
CQlFMzc4QTlFMDI0NkI2ODc1MDAyOUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMzI4RDg0RDIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjVCRjE0OTFGMjJBOEQ4MDAyOUQ5MUQgLyogUGVySGVhcEtpbmQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUZFQzNBMzk1MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OENCMThGNDhENzUwMDk1MDcwMiAvKiBQZXJQcm9j
ZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhDQzE4RjQ4RDc1MDA5NTA3MDIgLyogUGVy
VGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTVBQjNDNzIwNkUwRDM0MDA3NEZFNzYgLyog
UGh5c2ljYWxQYWdlTWFwLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvR2lnYWNhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
R2lnYWNhZ2UuY3BwCShyZXZpc2lvbiAyNjIzNjcpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0dpZ2FjYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgQ2Fs
bGJhY2sgewogICAgIHZvaWQqIGFyZ3VtZW50IHsgbnVsbHB0ciB9OwogfTsKIAotfQorfSAvLyBu
YW1lc3BhY2UgR2lnYWNhZ2UKIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCkBAIC03OSw3NSArNzks
MTAgQEAgbmFtZXNwYWNlIEdpZ2FjYWdlIHsKIC8vIElmIHRoaXMgd2VyZSBsZXNzIHRoYW4gMzJH
QiwgdGhvc2UgT09CIGFjY2Vzc2VzIGNvdWxkIHJlYWNoIG91dHNpZGUgb2YgdGhlIGNhZ2UuCiBj
b25zdGV4cHIgc2l6ZV90IGdpZ2FjYWdlUnVud2F5ID0gMzJsbHUgKiBibWFsbG9jOjpTaXplczo6
R0I7CiAKLWFsaWduYXMoY29uZmlnU2l6ZVRvUHJvdGVjdCkgQ29uZmlnIGdfZ2lnYWNhZ2VDb25m
aWc7Ci0KIHVzaW5nIG5hbWVzcGFjZSBibWFsbG9jOwogCiBuYW1lc3BhY2UgewogCi0jaWYgQk9T
KERBUldJTikKLWVudW0gewotICAgIEFsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMgPSBm
YWxzZSwKLSAgICBEaXNhbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzID0gdHJ1ZQotfTsK
LSNlbmRpZgotCi1zdGF0aWMgdm9pZCBmcmVlemVHaWdhY2FnZUNvbmZpZygpCi17Ci0gICAgaW50
IHJlc3VsdDsKLSNpZiBCT1MoREFSV0lOKQotICAgIHJlc3VsdCA9IHZtX3Byb3RlY3QobWFjaF90
YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KCZnX2dpZ2FjYWdlQ29u
ZmlnKSwgY29uZmlnU2l6ZVRvUHJvdGVjdCwgQWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhp
cywgVk1fUFJPVF9SRUFEKTsKLSNlbHNlCi0gICAgcmVzdWx0ID0gbXByb3RlY3QoJmdfZ2lnYWNh
Z2VDb25maWcsIGNvbmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7Ci0jZW5kaWYKLSAgICBS
RUxFQVNFX0JBU1NFUlQoIXJlc3VsdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHVuZnJlZXplR2lnYWNh
Z2VDb25maWcoKQotewotICAgIFJFTEVBU0VfQkFTU0VSVCghZ19naWdhY2FnZUNvbmZpZy5pc1Bl
cm1hbmVudGx5RnJvemVuKTsKLSAgICBpbnQgcmVzdWx0OwotI2lmIEJPUyhEQVJXSU4pCi0gICAg
cmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZt
X2FkZHJlc3NfdD4oJmdfZ2lnYWNhZ2VDb25maWcpLCBjb25maWdTaXplVG9Qcm90ZWN0LCBBbGxv
d1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzLCBWTV9QUk9UX1JFQUQgfCBWTV9QUk9UX1dSSVRF
KTsKLSNlbHNlCi0gICAgcmVzdWx0ID0gbXByb3RlY3QoJmdfZ2lnYWNhZ2VDb25maWcsIGNvbmZp
Z1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwotI2VuZGlmCi0gICAgUkVM
RUFTRV9CQVNTRVJUKCFyZXN1bHQpOwotfQotCi1zdGF0aWMgdm9pZCBwZXJtYW5lbnRseUZyZWV6
ZUdpZ2FjYWdlQ29uZmlnKCkKLXsKLSAgICBzdGF0aWMgTXV0ZXggY29uZmlnTG9jazsKLSAgICBM
b2NrSG9sZGVyIGxvY2tpbmcoY29uZmlnTG9jayk7Ci0KLSAgICBpZiAoIWdfZ2lnYWNhZ2VDb25m
aWcuaXNQZXJtYW5lbnRseUZyb3plbikgewotICAgICAgICB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmln
KCk7Ci0gICAgICAgIGdfZ2lnYWNhZ2VDb25maWcuaXNQZXJtYW5lbnRseUZyb3plbiA9IHRydWU7
Ci0gICAgfQotCi0gICAgLy8gVGhlcmUncyBubyBnb2luZyBiYWNrIG5vdyEKLSAgICBpbnQgcmVz
dWx0OwotI2lmIEJPUyhEQVJXSU4pCi0gICAgcmVzdWx0ID0gdm1fcHJvdGVjdChtYWNoX3Rhc2tf
c2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4oJmdfZ2lnYWNhZ2VDb25maWcp
LCBjb25maWdTaXplVG9Qcm90ZWN0LCBEaXNhbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlz
LCBWTV9QUk9UX1JFQUQpOwotI2Vsc2UKLSAgICByZXN1bHQgPSBtcHJvdGVjdCgmZ19naWdhY2Fn
ZUNvbmZpZywgY29uZmlnU2l6ZVRvUHJvdGVjdCwgUFJPVF9SRUFEKTsKLSNlbmRpZgotICAgIFJF
TEVBU0VfQkFTU0VSVCghcmVzdWx0KTsKLX0KLQotY2xhc3MgVW5mcmVlemVHaWdhY2FnZUNvbmZp
Z1Njb3BlIHsKLXB1YmxpYzoKLSAgICBVbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGUoKQotICAg
IHsKLSAgICAgICAgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpOwotICAgIH0KLSAgICAKLSAgICB+
VW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlKCkKLSAgICB7Ci0gICAgICAgIGZyZWV6ZUdpZ2Fj
YWdlQ29uZmlnKCk7Ci0gICAgfQotfTsKLQogc2l6ZV90IHJ1bndheVNpemUoS2luZCBraW5kKQog
ewogICAgIHN3aXRjaCAoa2luZCkgewpAQCAtMjQwLDcgKzE3NSw2IEBAIHZvaWQgZW5zdXJlR2ln
YWNhZ2UoKQogICAgICAgICAgICAgZ19naWdhY2FnZUNvbmZpZy50b3RhbFNpemUgPSB0b3RhbFNp
emU7CiAgICAgICAgICAgICB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2VzKGJhc2UsIHRvdGFsU2l6
ZSk7CiAgICAgICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmlzRW5hYmxlZCA9IHRydWU7Ci0gICAg
ICAgICAgICBmcmVlemVHaWdhY2FnZUNvbmZpZygpOwogICAgICAgICB9KTsKIH0KIApAQCAtMjY0
LDcgKzE5OCw2IEBAIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCkKICAgICBmb3IgKENh
bGxiYWNrJiBjYWxsYmFjayA6IGNhbGxiYWNrcy5jYWxsYmFja3MpCiAgICAgICAgIGNhbGxiYWNr
LmZ1bmN0aW9uKGNhbGxiYWNrLmFyZ3VtZW50KTsKICAgICBjYWxsYmFja3MuY2FsbGJhY2tzLnNo
cmluaygwKTsKLSAgICBVbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGUgdW5mcmVlemVTY29wZTsK
ICAgICBnX2dpZ2FjYWdlQ29uZmlnLmJhc2VQdHJzW1ByaW1pdGl2ZV0gPSBudWxscHRyOwogfQog
CkBAIC0zMTMsMTAgKzI0Niw4IEBAIHZvaWQgZm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2UoKQogICAgICAgICAmJiAoR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCB8fCAhZ19naWdh
Y2FnZUNvbmZpZy5zaG91bGRCZUVuYWJsZWQgfHwgdmVyaWZ5R2lnYWNhZ2VJc0VuYWJsZWQoKSkp
OwogCiAgICAgaWYgKCFnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdl
SXNGb3JiaWRkZW4pIHsKLSAgICAgICAgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpOwogICAgICAg
ICBnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4g
PSB0cnVlOwogICAgIH0KLSAgICBwZXJtYW5lbnRseUZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCk7CiAg
ICAgUkVMRUFTRV9CQVNTRVJUKGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VGb3JiaWRkZW4o
KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgJKHJldmlzaW9uIDI2MjM2
NykKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI1LDExICsyNSwxMSBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFsZ29yaXRo
bS5oIgogI2luY2x1ZGUgIkJBc3NlcnQuaCIKICNpbmNsdWRlICJCRXhwb3J0LmgiCiAjaW5jbHVk
ZSAiQklubGluZS5oIgogI2luY2x1ZGUgIkJQbGF0Zm9ybS5oIgorI2luY2x1ZGUgIkdpZ2FjYWdl
Q29uZmlnLmgiCiAjaW5jbHVkZSAiU2l6ZXMuaCIKICNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1
ZGUgPGludHR5cGVzLmg+CkBAIC00NCwxMiArNDQsNiBAQAogCiBuYW1lc3BhY2UgR2lnYWNhZ2Ug
ewogCi1lbnVtIEtpbmQgewotICAgIFByaW1pdGl2ZSwKLSAgICBKU1ZhbHVlLAotICAgIE51bWJl
ck9mS2luZHMKLX07Ci0KIEJJTkxJTkUgY29uc3QgY2hhciogbmFtZShLaW5kIGtpbmQpCiB7CiAg
ICAgc3dpdGNoIChraW5kKSB7CkBAIC02Niw4ICs2MCw2IEBAIEJJTkxJTkUgY29uc3QgY2hhciog
bmFtZShLaW5kIGtpbmQpCiAKICNpZiBHSUdBQ0FHRV9FTkFCTEVECiAKLWNvbnN0ZXhwciBzaXpl
X3QgY29uZmlnU2l6ZVRvUHJvdGVjdCA9IDE2ICogYm1hbGxvYzo6U2l6ZXM6OmtCOwotCiAjaWYg
Qk9TX0VGRkVDVElWRV9BRERSRVNTX1dJRFRIIDwgNDgKIGNvbnN0ZXhwciBzaXplX3QgcHJpbWl0
aXZlR2lnYWNhZ2VTaXplID0gMiAqIGJtYWxsb2M6OlNpemVzOjpHQjsKIGNvbnN0ZXhwciBzaXpl
X3QganNWYWx1ZUdpZ2FjYWdlU2l6ZSA9IDIgKiBibWFsbG9jOjpTaXplczo6R0I7CkBAIC05Nyw0
NyArODksNiBAQCBjb25zdGV4cHIgc2l6ZV90IGdpZ2FjYWdlU2l6ZVRvTWFzayhzaXplCiBjb25z
dGV4cHIgc2l6ZV90IHByaW1pdGl2ZUdpZ2FjYWdlTWFzayA9IGdpZ2FjYWdlU2l6ZVRvTWFzayhw
cmltaXRpdmVHaWdhY2FnZVNpemUpOwogY29uc3RleHByIHNpemVfdCBqc1ZhbHVlR2lnYWNhZ2VN
YXNrID0gZ2lnYWNhZ2VTaXplVG9NYXNrKGpzVmFsdWVHaWdhY2FnZVNpemUpOwogCi1zdHJ1Y3Qg
Q29uZmlnIHsKLSAgICB2b2lkKiBiYXNlUHRyKEtpbmQga2luZCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIFJFTEVBU0VfQkFTU0VSVChraW5kIDwgTnVtYmVyT2ZLaW5kcyk7Ci0gICAgICAgIHJldHVy
biBiYXNlUHRyc1traW5kXTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldEJhc2VQdHIoS2luZCBraW5k
LCB2b2lkKiBwdHIpCi0gICAgewotICAgICAgICBSRUxFQVNFX0JBU1NFUlQoa2luZCA8IE51bWJl
ck9mS2luZHMpOwotICAgICAgICBiYXNlUHRyc1traW5kXSA9IHB0cjsKLSAgICB9Ci0KLSAgICB1
bmlvbiB7Ci0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAvLyBBbGwgdGhlIGZpZWxkcyBp
biB0aGlzIHN0cnVjdCBzaG91bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgotICAgICAgICAg
ICAgLy8gaW5pdGlhbCB2YWx1ZSBpcyAwIC8gbnVsbCAvIGZhbHN5IGJlY2F1c2UgQ29uZmlnIGlz
IGluc3RhbnRpYXRlZAotICAgICAgICAgICAgLy8gYXMgYSBnbG9iYWwgc2luZ2xldG9uLgotCi0g
ICAgICAgICAgICBib29sIGlzRW5hYmxlZDsKLSAgICAgICAgICAgIGJvb2wgaXNQZXJtYW5lbnRs
eUZyb3plbjsKLSAgICAgICAgICAgIGJvb2wgZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0Zv
cmJpZGRlbjsKLSAgICAgICAgICAgIGJvb2wgc2hvdWxkQmVFbmFibGVkOwotCi0gICAgICAgICAg
ICAvLyBXZSB3b3VsZCBsaWtlIHRvIGp1c3QgcHV0IHRoZSBzdGQ6Om9uY2VfZmxhZyBmb3IgdGhl
c2UgZnVuY3Rpb25zCi0gICAgICAgICAgICAvLyBoZXJlLCBidXQgd2UgY2FuJ3QgYmVjYXVzZSBz
dGQ6Om9uY2VfZmxhZyBoYXMgYSBpbXBsaWNpdGx5LWRlbGV0ZWQKLSAgICAgICAgICAgIC8vIGRl
ZmF1bHQgY29uc3RydWN0b3IuIFNvLCB3ZSB1c2UgYSBib29sZWFuIGluc3RlYWQuCi0gICAgICAg
ICAgICBib29sIHNob3VsZEJlRW5hYmxlZEhhc0JlZW5DYWxsZWQ7Ci0gICAgICAgICAgICBib29s
IGVuc3VyZUdpZ2FjYWdlSGFzQmVlbkNhbGxlZDsKLQotICAgICAgICAgICAgdm9pZCogc3RhcnQ7
Ci0gICAgICAgICAgICBzaXplX3QgdG90YWxTaXplOwotICAgICAgICAgICAgdm9pZCogYmFzZVB0
cnNbTnVtYmVyT2ZLaW5kc107Ci0gICAgICAgIH07Ci0gICAgICAgIGNoYXIgZW5zdXJlU2l6ZVtj
b25maWdTaXplVG9Qcm90ZWN0XTsKLSAgICB9OwotfTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKENv
bmZpZykgPT0gY29uZmlnU2l6ZVRvUHJvdGVjdCwgIkdpZ2FjYWdlIENvbmZpZyBtdXN0IGZpdCBp
biBjb25maWdTaXplVG9Qcm90ZWN0Iik7Ci0KLWV4dGVybiAiQyIgYWxpZ25hcyhjb25maWdTaXpl
VG9Qcm90ZWN0KSBCRVhQT1JUIENvbmZpZyBnX2dpZ2FjYWdlQ29uZmlnOwotCiAvLyBUaGVzZSBj
b25zdGFudHMgYXJlIG5lZWRlZCBieSB0aGUgTExJbnQuCiBjb25zdGV4cHIgcHRyZGlmZl90IG9m
ZnNldE9mUHJpbWl0aXZlR2lnYWNhZ2VCYXNlUHRyID0gS2luZDo6UHJpbWl0aXZlICogc2l6ZW9m
KHZvaWQqKTsKIGNvbnN0ZXhwciBwdHJkaWZmX3Qgb2Zmc2V0T2ZKU1ZhbHVlR2lnYWNhZ2VCYXNl
UHRyID0gS2luZDo6SlNWYWx1ZSAqIHNpemVvZih2b2lkKik7CkluZGV4OiBTb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0dpZ2FjYWdlQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9HaWdhY2FnZUNvbmZpZy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvR2lnYWNhZ2VDb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJBbGdvcml0aG0uaCIKKyNpbmNsdWRlICJHaWdhY2FnZUtpbmQuaCIK
KyNpbmNsdWRlICJTdGRMaWJFeHRyYXMuaCIKKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorCituYW1l
c3BhY2UgV2ViQ29uZmlnIHsKKwordXNpbmcgU2xvdCA9IHVpbnQ2NF90OworZXh0ZXJuICJDIiBT
bG90IGdfY29uZmlnW107CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvbmZpZworCituYW1lc3BhY2Ug
R2lnYWNhZ2UgeworCitzdHJ1Y3QgQ29uZmlnIHsKKyAgICB2b2lkKiBiYXNlUHRyKEtpbmQga2lu
ZCkgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQkFTU0VSVChraW5kIDwgTnVtYmVyT2ZL
aW5kcyk7CisgICAgICAgIHJldHVybiBiYXNlUHRyc1traW5kXTsKKyAgICB9CisKKyAgICB2b2lk
IHNldEJhc2VQdHIoS2luZCBraW5kLCB2b2lkKiBwdHIpCisgICAgeworICAgICAgICBSRUxFQVNF
X0JBU1NFUlQoa2luZCA8IE51bWJlck9mS2luZHMpOworICAgICAgICBiYXNlUHRyc1traW5kXSA9
IHB0cjsKKyAgICB9CisKKyAgICAvLyBBbGwgdGhlIGZpZWxkcyBpbiB0aGlzIHN0cnVjdCBzaG91
bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgorICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAv
IG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKKyAgICAvLyBhcyBh
IGdsb2JhbCBzaW5nbGV0b24uCisKKyAgICBib29sIGlzUGVybWFuZW50bHlGcm96ZW47IC8vIFdp
bGwgYmUgc2V0IGJ5IHRoZSBjbGllbnQgaWYgdGhlIENvbmZpZyBnZXRzIGZyb3plbi4KKyAgICBi
b29sIGlzRW5hYmxlZDsKKyAgICBib29sIGRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3Ji
aWRkZW47CisgICAgYm9vbCBzaG91bGRCZUVuYWJsZWQ7CisKKyAgICAvLyBXZSB3b3VsZCBsaWtl
IHRvIGp1c3QgcHV0IHRoZSBzdGQ6Om9uY2VfZmxhZyBmb3IgdGhlc2UgZnVuY3Rpb25zCisgICAg
Ly8gaGVyZSwgYnV0IHdlIGNhbid0IGJlY2F1c2Ugc3RkOjpvbmNlX2ZsYWcgaGFzIGEgaW1wbGlj
aXRseS1kZWxldGVkCisgICAgLy8gZGVmYXVsdCBjb25zdHJ1Y3Rvci4gU28sIHdlIHVzZSBhIGJv
b2xlYW4gaW5zdGVhZC4KKyAgICBib29sIHNob3VsZEJlRW5hYmxlZEhhc0JlZW5DYWxsZWQ7Cisg
ICAgYm9vbCBlbnN1cmVHaWdhY2FnZUhhc0JlZW5DYWxsZWQ7CisKKyAgICB2b2lkKiBzdGFydDsK
KyAgICBzaXplX3QgdG90YWxTaXplOworICAgIHZvaWQqIGJhc2VQdHJzW051bWJlck9mS2luZHNd
OworfTsKKworY29uc3RleHByIHNpemVfdCBzdGFydFNsb3RPZkdpZ2FjYWdlQ29uZmlnID0gMDsK
K2NvbnN0ZXhwciBzaXplX3Qgc3RhcnRPZmZzZXRPZkdpZ2FjYWdlQ29uZmlnID0gc3RhcnRTbG90
T2ZHaWdhY2FnZUNvbmZpZyAqIHNpemVvZihXZWJDb25maWc6OlNsb3QpOworCitjb25zdGV4cHIg
c2l6ZV90IHJlc2VydmVkU2xvdHNGb3JHaWdhY2FnZUNvbmZpZyA9IDY7Citjb25zdGV4cHIgc2l6
ZV90IHJlc2VydmVkQnl0ZXNGb3JHaWdhY2FnZUNvbmZpZyA9IHJlc2VydmVkU2xvdHNGb3JHaWdh
Y2FnZUNvbmZpZyAqIHNpemVvZihXZWJDb25maWc6OlNsb3QpOworCitjb25zdGV4cHIgc2l6ZV90
IGFsaWdubWVudE9mR2lnYWNhZ2VDb25maWcgPSBzdGQ6OmFsaWdubWVudF9vZjxHaWdhY2FnZTo6
Q29uZmlnPjo6dmFsdWU7CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdpZ2FjYWdlOjpDb25maWcp
IDw9IHJlc2VydmVkQnl0ZXNGb3JHaWdhY2FnZUNvbmZpZyk7CitzdGF0aWNfYXNzZXJ0KGJtYWxs
b2M6OnJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25tZW50T2ZHaWdhY2FnZUNvbmZpZz4oc3RhcnRP
ZmZzZXRPZkdpZ2FjYWdlQ29uZmlnKSA9PSBzdGFydE9mZnNldE9mR2lnYWNhZ2VDb25maWcpOwor
CisjZGVmaW5lIGdfZ2lnYWNhZ2VDb25maWcgKCpibWFsbG9jOjpiaXR3aXNlX2Nhc3Q8R2lnYWNh
Z2U6OkNvbmZpZyo+KCZXZWJDb25maWc6OmdfY29uZmlnW0dpZ2FjYWdlOjpzdGFydFNsb3RPZkdp
Z2FjYWdlQ29uZmlnXSkpCisKK30gLy8gbmFtZXNwYWNlIEdpZ2FjYWdlCkluZGV4OiBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvR2lnYWNhZ2VLaW5kLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9HaWdhY2FnZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKK25hbWVzcGFjZSBHaWdhY2FnZSB7CisKK2VudW0gS2luZCB7CisgICAgUHJpbWl0aXZl
LAorICAgIEpTVmFsdWUsCisgICAgTnVtYmVyT2ZLaW5kcworfTsKKworfSAvLyBuYW1lc3BhY2Ug
R2lnYWNhZ2UKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvbWJtYWxsb2MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvbWJtYWxsb2MuY3BwCShyZXZpc2lvbiAy
NjIzNjcpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL21ibWFsbG9jLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsMTUgQEAKICNpbmNsdWRlICJibWFsbG9jLmgiCiAKICNpbmNsdWRl
ICJCRXhwb3J0LmgiCisjaW5jbHVkZSAiR2lnYWNhZ2VDb25maWcuaCIKKworbmFtZXNwYWNlIFdl
YkNvbmZpZyB7CisKK2NvbnN0ZXhwciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJvdGVjdCA9IDE2ICog
Ym1hbGxvYzo6U2l6ZXM6OmtCOworCithbGlnbmFzKENvbmZpZ1NpemVUb1Byb3RlY3QpIEJFWFBP
UlQgU2xvdCBnX2NvbmZpZ1tDb25maWdTaXplVG9Qcm90ZWN0IC8gc2l6ZW9mKFNsb3QpXTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29uZmlnCiAKIGV4dGVybiAiQyIgewogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400792</attachid>
            <date>2020-06-02 00:58:21 -0700</date>
            <delta_ts>2020-06-02 06:43:32 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-212585.patch</filename>
            <type>text/plain</type>
            <size>43535</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyNDAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDIwLTA2LTAyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29u
ZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMjU4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3Nl
bWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0Q2FnZVByZXNlcnZlc1BBQ0Zh
aWx1cmVCaXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNhZ2VkKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2FnZUNvbmRpdGlvbmFsbHkpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9K
U0NDb25maWcuaDoKKyAgICAgICAgKEpTQzo6Q29uZmlnOjppc1Blcm1hbmVudGx5RnJvemVuKToK
KwogMjAyMC0wNi0wMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDb3JyZWN0IG1pc3VuZGVyc3RhbmRpbmdzIG9uIGhvdyBUaHJlYWRTcGVjaWZpYyB3b3JrCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkocmV2
aXNpb24gMjYyNDAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFz
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMDcsNyArMjMwNyw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RDYWdlUHJlc2VydmVzUEFDRmFpbHVyZUIKICAgICBpZiAoIUdpZ2FjYWdlOjpzaG91bGRCZUVu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9BU1NFUlQoIUdpZ2FjYWdl
Ojppc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRm9yYmlkZGVuKCkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKCFHaWdhY2FnZTo6ZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbigp
KTsKICAgICBhdXRvIGNhZ2UgPSBjb21waWxlKFtdIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAg
ICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjYy
NDAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcyNDcsNyArNzI0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhZ2VUeXBlZEFycmF5U3RvcmEKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBp
ZiAoR2lnYWNhZ2U6OmNhblByaW1pdGl2ZUdpZ2FjYWdlQmVEaXNhYmxlZCgpKSB7CisgICAgaWYg
KCFHaWdhY2FnZTo6ZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbigpKSB7CiAg
ICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgICAgIGlmICh2bS5wcmltaXRpdmVHaWdh
Y2FnZUVuYWJsZWQoKS5pc1N0aWxsVmFsaWQoKSkKICAgICAgICAgICAgIG1faml0LmdyYXBoKCku
d2F0Y2hwb2ludHMoKS5hZGRMYXppbHkodm0ucHJpbWl0aXZlR2lnYWNhZ2VFbmFibGVkKCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
cmV2aXNpb24gMjYyNDAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgzMSw3ICsxNTgzMSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGlmICghR2lnYWNhZ2U6OmlzRW5hYmxlZChraW5kKSkKICAgICAgICAgICAgIHJl
dHVybiBkb1VudGFnQXJyYXlQdHIocHRyKTsKICAgICAgICAgCi0gICAgICAgIGlmIChraW5kID09
IEdpZ2FjYWdlOjpQcmltaXRpdmUgJiYgR2lnYWNhZ2U6OmNhblByaW1pdGl2ZUdpZ2FjYWdlQmVE
aXNhYmxlZCgpKSB7CisgICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmltaXRpdmUgJiYg
IUdpZ2FjYWdlOjpkaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuKCkpIHsKICAg
ICAgICAgICAgIGlmICh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZCgpLmlzU3RpbGxWYWxp
ZCgpKQogICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkodm0o
KS5wcmltaXRpdmVHaWdhY2FnZUVuYWJsZWQoKSk7CiAgICAgICAgICAgICBlbHNlCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDI2
MjQwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE2OTksMTUgKzE2OTksMTggQEAgcHVibGljOgogICAgIHsKICNpZiBH
SUdBQ0FHRV9FTkFCTEVECiAgICAgICAgIGlmIChHaWdhY2FnZTo6aXNFbmFibGVkKGtpbmQpKSB7
Ci0gICAgICAgICAgICBpZiAoa2luZCAhPSBHaWdhY2FnZTo6UHJpbWl0aXZlIHx8IEdpZ2FjYWdl
Ojppc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRm9yYmlkZGVuKCkpCisgICAgICAgICAgICBp
ZiAoa2luZCAhPSBHaWdhY2FnZTo6UHJpbWl0aXZlIHx8IEdpZ2FjYWdlOjpkaXNhYmxpbmdQcmlt
aXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuKCkpCiAgICAgICAgICAgICAgICAgY2FnZVdpdGhvdXRV
bnRhZ2dpbmcoa2luZCwgc3RvcmFnZSk7CiAgICAgICAgICAgICBlbHNlIHsKICNpZiBDUFUoQVJN
NjRFKQogICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gc2NyYXRjaCkKICAgICAgICAgICAg
ICAgICAgICAgc2NyYXRjaCA9IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpOwogI2VuZGlmCisgICAgICAgICAgICAgICAgSnVtcExpc3QgZG9uZTsKKyAgICAgICAg
ICAgICAgICBkb25lLmFwcGVuZChicmFuY2hUZXN0OChOb25aZXJvLCBBYnNvbHV0ZUFkZHJlc3Mo
JkdpZ2FjYWdlOjpkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2VSZXF1ZXN0ZWQpKSk7CisKICAgICAg
ICAgICAgICAgICBsb2FkUHRyKEdpZ2FjYWdlOjphZGRyZXNzT2ZCYXNlUHRyKGtpbmQpLCBzY3Jh
dGNoKTsKLSAgICAgICAgICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2hUZXN0NjQoWmVybywgc2Ny
YXRjaCk7CisgICAgICAgICAgICAgICAgZG9uZS5hcHBlbmQoYnJhbmNoVGVzdDY0KFplcm8sIHNj
cmF0Y2gpKTsKICNpZiBDUFUoQVJNNjRFKQogICAgICAgICAgICAgICAgIEdQUlJlZyB0ZW1wUmVn
ID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICAg
ICAgICAgIG1vdmUoc3RvcmFnZSwgdGVtcFJlZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24g
MjYyNDAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTQyNCw2ICs0MjQsMjAgQEAgbWFjcm8gY2FnZShi
YXNlUHRyLCBtYXNrLCBwdHIsIHNjcmF0Y2gpCiAgICAgZW5kCiBlbmQKIAorbWFjcm8gY2FnZVBy
aW1pdGl2ZShiYXNlUHRyLCBtYXNrLCBwdHIsIHNjcmF0Y2gpCisgICAgaWYgR0lHQUNBR0VfRU5B
QkxFRCBhbmQgbm90IChDX0xPT1Agb3IgQ19MT09QX1dJTikKKyAgICAgICAgbG9hZGIgX2dfY29u
ZmlnICsgKGNvbnN0ZXhwciBHaWdhY2FnZTo6c3RhcnRPZmZzZXRPZkdpZ2FjYWdlQ29uZmlnKSAr
IEdpZ2FjYWdlOjpDb25maWc6OmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4s
IHNjcmF0Y2gKKyAgICAgICAgYnRibnogc2NyYXRjaCwgLmRvQ2FnaW5nCisKKyAgICAgICAgbG9h
ZGIgX2Rpc2FibGVQcmltaXRpdmVHaWdhY2FnZVJlcXVlc3RlZCwgc2NyYXRjaAorICAgICAgICBi
dGJueiBzY3JhdGNoLCAuZG9uZQorCisgICAgLmRvQ2FnaW5nOgorICAgICAgICBjYWdlKGJhc2VQ
dHIsIG1hc2ssIHB0ciwgc2NyYXRjaCkKKyAgICAuZG9uZToKKyAgICBlbmQKK2VuZAorCiBtYWNy
byBjYWdlZFByaW1pdGl2ZShwdHIsIGxlbmd0aCwgc2NyYXRjaCwgc2NyYXRjaDIpCiAgICAgaWYg
QVJNNjRFCiAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHNjcmF0Y2gyCkBAIC00MzIsNyArNDQ2LDcg
QEAgbWFjcm8gY2FnZWRQcmltaXRpdmUocHRyLCBsZW5ndGgsIHNjcmF0YwogICAgICAgICBjb25z
dCBzb3VyY2UgPSBwdHIKICAgICBlbmQKICAgICBpZiBHSUdBQ0FHRV9FTkFCTEVECi0gICAgICAg
IGNhZ2UoX2dfZ2lnYWNhZ2VDb25maWcgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyArIEdp
Z2FjYWdlUHJpbWl0aXZlQmFzZVB0ck9mZnNldCwgY29uc3RleHByIEdpZ2FjYWdlOjpwcmltaXRp
dmVHaWdhY2FnZU1hc2ssIHNvdXJjZSwgc2NyYXRjaCkKKyAgICAgICAgY2FnZVByaW1pdGl2ZShf
Z19jb25maWcgKyAoY29uc3RleHByIEdpZ2FjYWdlOjpzdGFydE9mZnNldE9mR2lnYWNhZ2VDb25m
aWcpICsgR2lnYWNhZ2U6OkNvbmZpZzo6YmFzZVB0cnMgKyBHaWdhY2FnZVByaW1pdGl2ZUJhc2VQ
dHJPZmZzZXQsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBzb3Vy
Y2UsIHNjcmF0Y2gpCiAgICAgICAgIGlmIEFSTTY0RQogICAgICAgICAgICAgY29uc3QgbnVtYmVy
T2ZQQUNCaXRzID0gY29uc3RleHByIE1hY3JvQXNzZW1ibGVyOjpudW1iZXJPZlBBQ0JpdHMKICAg
ICAgICAgICAgIGJmaXEgc2NyYXRjaDIsIDAsIDY0IC0gbnVtYmVyT2ZQQUNCaXRzLCBwdHIKQEAg
LTQ0Niw3ICs0NjAsNyBAQCBlbmQKIG1hY3JvIGxvYWRDYWdlZEpTVmFsdWUoc291cmNlLCBkZXN0
LCBzY3JhdGNoT3JMZW5ndGgpCiAgICAgbG9hZHAgc291cmNlLCBkZXN0CiAgICAgaWYgR0lHQUNB
R0VfRU5BQkxFRAotICAgICAgICBjYWdlKF9nX2dpZ2FjYWdlQ29uZmlnICsgR2lnYWNhZ2U6OkNv
bmZpZzo6YmFzZVB0cnMgKyBHaWdhY2FnZUpTVmFsdWVCYXNlUHRyT2Zmc2V0LCBjb25zdGV4cHIg
R2lnYWNhZ2U6OmpzVmFsdWVHaWdhY2FnZU1hc2ssIGRlc3QsIHNjcmF0Y2hPckxlbmd0aCkKKyAg
ICAgICAgY2FnZShfZ19jb25maWcgKyAoY29uc3RleHByIEdpZ2FjYWdlOjpzdGFydE9mZnNldE9m
R2lnYWNhZ2VDb25maWcpICsgR2lnYWNhZ2U6OkNvbmZpZzo6YmFzZVB0cnMgKyBHaWdhY2FnZUpT
VmFsdWVCYXNlUHRyT2Zmc2V0LCBjb25zdGV4cHIgR2lnYWNhZ2U6OmpzVmFsdWVHaWdhY2FnZU1h
c2ssIGRlc3QsIHNjcmF0Y2hPckxlbmd0aCkKICAgICBlbmQKIGVuZAogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAkocmV2aXNpb24gMjYyNDAyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDcgKzUxLDcgQEAgc3RydWN0IENvbmZpZyB7CiAgICAgICAgIGVuYWJsZVJlc3RyaWN0
ZWRPcHRpb25zKCk7CiAgICAgfQogCi0gICAgYm9vbCBpc1Blcm1hbmVudGx5RnJvemVuKCkgeyBy
ZXR1cm4gV1RGOjpnX3d0ZkNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuOyB9CisgICAgYm9vbCBp
c1Blcm1hbmVudGx5RnJvemVuKCkgeyByZXR1cm4gZ193dGZDb25maWcuaXNQZXJtYW5lbnRseUZy
b3plbjsgfQogCiAgICAgLy8gQWxsIHRoZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3Qgc2hvdWxkIGJl
IGNob3NlbiBzdWNoIHRoYXQgdGhlaXIKICAgICAvLyBpbml0aWFsIHZhbHVlIGlzIDAgLyBudWxs
IC8gZmFsc3kgYmVjYXVzZSBDb25maWcgaXMgaW5zdGFudGlhdGVkCkBAIC04MiwxMiArODIsMTEg
QEAgc3RydWN0IENvbmZpZyB7CiAgICAgV1RGOjpQdHJUYWdMb29rdXAgcHRyVGFnTG9va3VwUmVj
b3JkOwogfTsKIAotY29uc3RleHByIHNpemVfdCBvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbiA9
IG9mZnNldG9mKFdURjo6Q29uZmlnLCBzcGFjZUZvckV4dGVuc2lvbnMpOwogY29uc3RleHByIHNp
emVfdCBhbGlnbm1lbnRPZkpTQ0NvbmZpZyA9IHN0ZDo6YWxpZ25tZW50X29mPEpTQzo6Q29uZmln
Pjo6dmFsdWU7CiAKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKEpTQzo6Q29uZmlnKSA8PSAoc2l6ZW9m
KFdURjo6Q29uZmlnKSAtIG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uKSk7Ci1zdGF0aWNfYXNz
ZXJ0KHJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25tZW50T2ZKU0NDb25maWc+KG9mZnNldE9mV1RG
Q29uZmlnRXh0ZW5zaW9uKSA9PSBvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbik7CitzdGF0aWNf
YXNzZXJ0KFdURjo6b2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24gKyBzaXplb2YoSlNDOjpDb25m
aWcpIDw9IFdURjo6Q29uZmlnU2l6ZVRvUHJvdGVjdCk7CitzdGF0aWNfYXNzZXJ0KHJvdW5kVXBU
b011bHRpcGxlT2Y8YWxpZ25tZW50T2ZKU0NDb25maWc+KFdURjo6b2Zmc2V0T2ZXVEZDb25maWdF
eHRlbnNpb24pID09IFdURjo6b2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24pOwogCi0jZGVmaW5l
IGdfanNjQ29uZmlnICgqYml0d2lzZV9jYXN0PENvbmZpZyo+KCZXVEY6Omdfd3RmQ29uZmlnLnNw
YWNlRm9yRXh0ZW5zaW9ucykpCisjZGVmaW5lIGdfanNjQ29uZmlnICgqYml0d2lzZV9jYXN0PEpT
Qzo6Q29uZmlnKj4oJmdfd3RmQ29uZmlnLnNwYWNlRm9yRXh0ZW5zaW9ucykpCiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjQwMikKKysrIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDYtMDIgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIENoYW5nZSBHaWdhY2FnZTo6Q29uZmln
IHRvIHVzZSBzdG9yYWdlIGluIFdlYkNvbmZpZzo6Z19jb25maWcgaW5zdGVhZCBvZiBpdHMgb3du
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNTg1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzgxMjQ4Nz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBub3cgdGhpbmsgb2YgdGhlIHZhcmlvdXMg
Q29uZmlnIHJlY29yZHMgYXMgYmVpbmcgYWxsb2NhdGVkIGZyb20gcGFydHMgb2YgYQorICAgICAg
ICBXZWJDb25maWc6OmdfY29uZmlnIGJ1ZmZlci4gIFdURjo6Q29uZmlnIHdpbGwgbWFuYWdlIHRo
ZSBtZWNoYW5pY3Mgb2YgZnJlZXppbmcKKyAgICAgICAgdGhhdCBidWZmZXIuICBBbmQgdGhlIEpT
QyBWTSBpcyBzdGlsbCB0aGUgZGV0ZXJtaW5lciBvZiBpZi93aGVuIHRvIGZyZWV6ZSB0aGUKKyAg
ICAgICAgYnVmZmVyLCBhbmQgaXQgd2lsbCBkbyB0aGlzIGF0IHRoZSBlbmQgb2YgdGhlIGNvbnN0
cnVjdGlvbiBvZiB0aGUgdmVyeSBmaXJzdAorICAgICAgICBWTSBpbnN0YW5jZSAoYXMgYmVmb3Jl
KS4KKworICAgICAgICBHaWdhY2FnZTo6Q29uZmlnIHJlc2VydmVzIHNwYWNlIGluIFdlYkNvbmZp
Zzo6Z19jb25maWcuCisgICAgICAgIFdURjo6Q29uZmlnIHdpbGwgaG9ub3IgdGhhdCByZXNlcnZh
dGlvbiBhbmQgcGxhY2UgaXRzZWxmIGFmdGVyIHRoYXQuCisgICAgICAgIEpTQzo6Q29uZmlnIHdp
bGwgY29udGludWUgdG8gcGxhY2UgaXRzZWxmIGF0IFdURjo6Q29uZmlnOjpzcGFjZUZvckV4dGVu
c2lvbnMuCisKKyAgICAgICAgVGhlIHVwc2lkZSBvZiB0aGlzIGFwcHJvYWNoIHRoaXMgaXMgdGhh
dCB3ZSBjYW4gbm93IHNoYXJlIHRoZSBzYW1lIG1lbW9yeSBwYWdlCisgICAgICAgIGZvciBhbGwg
dGhlIENvbmZpZ3MsIGFuZCBjYW4gZnJlZXplIHRoZW0gaW4gb25lIGdvLgorCisgICAgICAgIFRo
ZSBkb3duc2lkZSBpcyB0aGF0IGdfZ2lnYWNhZ2VDb25maWcsIGdfd3RmQ29uZmlnLCBhbmQgZ19q
c2NDb25maWcgbm93IGhhdmUgdG8KKyAgICAgICAgYmUgbWFjcm9zLiAgVGhpcyByZXN1bHRzIGlu
IHNvbWUgd2VpcmRuZXNzIGUuZy4gdGhleSBhcmUgbm8gbG9uZ2VyIHF1YWxpZmllZCBieQorICAg
ICAgICBuYW1lc3BhY2VzOiByZWZlcnJpbmcgdG8gV1RGOjpnX3d0ZkNvbmZpZyBpcyBub3cgaW5j
b3JyZWN0LgorCisgICAgICAgICogd3RmL0dpZ2FjYWdlLmg6CisgICAgICAgIChHaWdhY2FnZTo6
ZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbik6CisgICAgICAgIChHaWdhY2Fn
ZTo6aXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbik6IERlbGV0ZWQuCisgICAg
ICAgIChHaWdhY2FnZTo6aXNQcmltaXRpdmVHaWdhY2FnZVBlcm1hbmVudGx5RW5hYmxlZCk6IERl
bGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Y2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvV1RGQ29uZmlnLmNwcDoKKyAgICAgICAgKFdURjo6
Q29uZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSk6CisgICAgICAgICogd3RmL1dURkNvbmZpZy5oOgor
ICAgICAgICAoKTogRGVsZXRlZC4KKwogMjAyMC0wNi0wMSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgRU5BQkxFKFRPVUNIX0FDVElPTl9SRUdJ
T05TKSB0byB3cmFwIGNvZGUgdGhhdCdzIG9ubHkgcmVsZXZhbnQgZm9yIHBsYXRmb3JtcyB0aGF0
IGNvbnN1bHQgdG91Y2gtYWN0aW9uIGZvciBldmVudCBoYW5kbGluZwpJbmRleDogU291cmNlL1dU
Ri93dGYvR2lnYWNhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5o
CShyZXZpc2lvbiAyNjI0MDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MSwxMCArNTEsNiBAQCBpbmxpbmUgdm9pZCByZW1vdmVQcmltaXRpdmVEaXNh
YmxlQ2FsbGJhCiAKIGlubGluZSB2b2lkIGZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdl
KCkgeyB9CiAKLWlubGluZSBib29sIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VGb3JiaWRk
ZW4oKSB7IHJldHVybiBmYWxzZTsgfQotaW5saW5lIGJvb2wgaXNQcmltaXRpdmVHaWdhY2FnZVBl
cm1hbmVudGx5RW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci1pbmxpbmUgYm9vbCBjYW5Qcmlt
aXRpdmVHaWdhY2FnZUJlRGlzYWJsZWQoKSB7IHJldHVybiB0cnVlOyB9Ci0KIEFMV0FZU19JTkxJ
TkUgY29uc3QgY2hhciogbmFtZShLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CkBA
IC03MCw2ICs2Niw3IEBAIEFMV0FZU19JTkxJTkUgY29uc3QgY2hhciogbmFtZShLaW5kIGtpbmQK
IH0KIAogQUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNvbnN0IHZvaWQqKSB7IHJldHVybiBm
YWxzZTsgfQorQUxXQVlTX0lOTElORSBib29sIGRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNG
b3JiaWRkZW4oKSB7IHJldHVybiBmYWxzZTsgfQogQUxXQVlTX0lOTElORSBib29sIGlzRW5hYmxl
ZChLaW5kKSB7IHJldHVybiBmYWxzZTsgfQogQUxXQVlTX0lOTElORSBzaXplX3QgbWFzayhLaW5k
KSB7IHJldHVybiAwOyB9CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dURkNvbmZpZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmNwcAkocmV2aXNpb24gMjYyNDAy
KQorKysgU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgPHd0Zi9XVEZDb25maWcu
aD4KIAorI2luY2x1ZGUgPHd0Zi9HaWdhY2FnZS5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNSw5ICszNiwxMyBAQAogI2luY2x1
ZGUgPHN5cy9tbWFuLmg+CiAjZW5kaWYKIAotbmFtZXNwYWNlIFdURiB7CituYW1lc3BhY2UgV2Vi
Q29uZmlnIHsKKworYWxpZ25hcyhXVEY6OkNvbmZpZ1NpemVUb1Byb3RlY3QpIFNsb3QgZ19jb25m
aWdbV1RGOjpDb25maWdTaXplVG9Qcm90ZWN0IC8gc2l6ZW9mKFNsb3QpXTsKIAotYWxpZ25hcyhD
b25maWdTaXplVG9Qcm90ZWN0KSBXVEZfRVhQT1JUX1BSSVZBVEUgQ29uZmlnIGdfd3RmQ29uZmln
OworfSAvLyBuYW1lc3BhY2UgV2ViQ29uZmlnCisKK25hbWVzcGFjZSBXVEYgewogCiB2b2lkIENv
bmZpZzo6cGVybWFuZW50bHlGcmVlemUoKQogewpAQCAtNDYsOCArNTEsMTIgQEAgdm9pZCBDb25m
aWc6OnBlcm1hbmVudGx5RnJlZXplKCkKIAogICAgIFJFTEVBU0VfQVNTRVJUKHJvdW5kVXBUb011
bHRpcGxlT2YocGFnZVNpemUoKSwgQ29uZmlnU2l6ZVRvUHJvdGVjdCkgPT0gQ29uZmlnU2l6ZVRv
UHJvdGVjdCk7CiAKLSAgICBpZiAoIWdfd3RmQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4pCisg
ICAgaWYgKCFnX3d0ZkNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuKSB7CiAgICAgICAgIGdfd3Rm
Q29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4gPSB0cnVlOworI2lmIEdJR0FDQUdFX0VOQUJMRUQK
KyAgICAgICAgZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuID0gdHJ1ZTsKKyNl
bmRpZgorICAgIH0KIAogICAgIGludCByZXN1bHQgPSAwOwogI2lmIE9TKERBUldJTikKQEAgLTU3
LDkgKzY2LDkgQEAgdm9pZCBDb25maWc6OnBlcm1hbmVudGx5RnJlZXplKCkKICAgICB9OwogCiAg
ICAgLy8gVGhlcmUncyBubyBnb2luZyBiYWNrIG5vdyEKLSAgICByZXN1bHQgPSB2bV9wcm90ZWN0
KG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190PigmZ193dGZD
b25maWcpLCBDb25maWdTaXplVG9Qcm90ZWN0LCBEaXNhbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0
ZXJUaGlzLCBWTV9QUk9UX1JFQUQpOworICAgIHJlc3VsdCA9IHZtX3Byb3RlY3QobWFjaF90YXNr
X3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KCZXZWJDb25maWc6OmdfY29u
ZmlnKSwgQ29uZmlnU2l6ZVRvUHJvdGVjdCwgRGlzYWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVy
VGhpcywgVk1fUFJPVF9SRUFEKTsKICNlbGlmIE9TKExJTlVYKQotICAgIHJlc3VsdCA9IG1wcm90
ZWN0KCZnX3d0ZkNvbmZpZywgQ29uZmlnU2l6ZVRvUHJvdGVjdCwgUFJPVF9SRUFEKTsKKyAgICBy
ZXN1bHQgPSBtcHJvdGVjdCgmV2ViQ29uZmlnOjpnX2NvbmZpZywgQ29uZmlnU2l6ZVRvUHJvdGVj
dCwgUFJPVF9SRUFEKTsKICNlbGlmIE9TKFdJTkRPV1MpCiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBlcXVpdmFsZW50LCBtYXliZSB3aXRoIFZpcnR1YWxQcm90ZWN0LgogICAgIC8vIEFsc28gbmVl
ZCB0byBmaXggV2ViS2l0VGVzdFJ1bm5lci4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dURkNvbmZp
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dURkNvbmZpZy5oCShyZXZpc2lvbiAy
NjI0MDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9XVEZDb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsMjIgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL3RocmVhZHMvU2lnbmFscy5oPgogCisjaWYgZGVmaW5lZChVU0VfU1lTVEVNX01BTExPQykg
JiYgVVNFX1NZU1RFTV9NQUxMT0MKK25hbWVzcGFjZSBHaWdhY2FnZSB7Citjb25zdGV4cHIgc2l6
ZV90IHJlc2VydmVkU2xvdHNGb3JHaWdhY2FnZUNvbmZpZyA9IDA7Citjb25zdGV4cHIgc2l6ZV90
IHJlc2VydmVkQnl0ZXNGb3JHaWdhY2FnZUNvbmZpZyA9IDA7Cit9CisjZWxzZQorI2luY2x1ZGUg
PGJtYWxsb2MvR2lnYWNhZ2VDb25maWcuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29uZmln
IHsKKwordXNpbmcgU2xvdCA9IHVpbnQ2NF90OworZXh0ZXJuICJDIiBXVEZfRVhQT1JUX1BSSVZB
VEUgU2xvdCBnX2NvbmZpZ1tdOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb25maWcKKwogbmFtZXNw
YWNlIFdURiB7CiAKIGNvbnN0ZXhwciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJvdGVjdCA9IENlaWxp
bmdPblBhZ2VTaXplOwpAQCAtNDUsMjggKzYxLDMxIEBAIHN0cnVjdCBDb25maWcgewogICAgICAg
ICB+QXNzZXJ0Tm90RnJvemVuU2NvcGUoKTsKICAgICB9OwogCi0gICAgdW5pb24gewotICAgICAg
ICBzdHJ1Y3QgewotICAgICAgICAgICAgLy8gQWxsIHRoZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3Qg
c2hvdWxkIGJlIGNob3NlbiBzdWNoIHRoYXQgdGhlaXIKLSAgICAgICAgICAgIC8vIGluaXRpYWwg
dmFsdWUgaXMgMCAvIG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQK
LSAgICAgICAgICAgIC8vIGFzIGEgZ2xvYmFsIHNpbmdsZXRvbi4KKyAgICAvLyBBbGwgdGhlIGZp
ZWxkcyBpbiB0aGlzIHN0cnVjdCBzaG91bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgorICAg
IC8vIGluaXRpYWwgdmFsdWUgaXMgMCAvIG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBp
bnN0YW50aWF0ZWQKKyAgICAvLyBhcyBhIGdsb2JhbCBzaW5nbGV0b24uCiAKLSAgICAgICAgICAg
IGJvb2wgaXNQZXJtYW5lbnRseUZyb3plbjsKKyAgICBib29sIGlzUGVybWFuZW50bHlGcm96ZW47
CiAKICNpZiBVU0UoUFRIUkVBRFMpICYmIEhBVkUoTUFDSElORV9DT05URVhUKQotICAgICAgICAg
ICAgU2lnbmFsSGFuZGxlcnMgc2lnbmFsSGFuZGxlcnM7CisgICAgU2lnbmFsSGFuZGxlcnMgc2ln
bmFsSGFuZGxlcnM7CiAjZW5kaWYKLSAgICAgICAgICAgIFB0clRhZ0xvb2t1cCogcHRyVGFnTG9v
a3VwSGVhZDsKKyAgICBQdHJUYWdMb29rdXAqIHB0clRhZ0xvb2t1cEhlYWQ7CiAKLSAgICAgICAg
ICAgIHVpbnQ2NF90IHNwYWNlRm9yRXh0ZW5zaW9uc1sxXTsKLSAgICAgICAgfTsKLSAgICAgICAg
Y2hhciBlbnN1cmVTaXplW0NvbmZpZ1NpemVUb1Byb3RlY3RdOwotICAgIH07CisgICAgdWludDY0
X3Qgc3BhY2VGb3JFeHRlbnNpb25zWzFdOwogfTsKIAotZXh0ZXJuICJDIiBhbGlnbmFzKENvbmZp
Z1NpemVUb1Byb3RlY3QpIFdURl9FWFBPUlRfUFJJVkFURSBDb25maWcgZ193dGZDb25maWc7Citj
b25zdGV4cHIgc2l6ZV90IHN0YXJ0U2xvdE9mV1RGQ29uZmlnID0gR2lnYWNhZ2U6OnJlc2VydmVk
U2xvdHNGb3JHaWdhY2FnZUNvbmZpZzsKK2NvbnN0ZXhwciBzaXplX3Qgc3RhcnRPZmZzZXRPZldU
RkNvbmZpZyA9IHN0YXJ0U2xvdE9mV1RGQ29uZmlnICogc2l6ZW9mKFdlYkNvbmZpZzo6U2xvdCk7
CisKK2NvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24gPSBzdGFydE9m
ZnNldE9mV1RGQ29uZmlnICsgb2Zmc2V0b2YoV1RGOjpDb25maWcsIHNwYWNlRm9yRXh0ZW5zaW9u
cyk7CisKK2NvbnN0ZXhwciBzaXplX3QgYWxpZ25tZW50T2ZXVEZDb25maWcgPSBzdGQ6OmFsaWdu
bWVudF9vZjxXVEY6OkNvbmZpZz46OnZhbHVlOworCitzdGF0aWNfYXNzZXJ0KEdpZ2FjYWdlOjpy
ZXNlcnZlZEJ5dGVzRm9yR2lnYWNhZ2VDb25maWcgKyBzaXplb2YoV1RGOjpDb25maWcpIDw9IENv
bmZpZ1NpemVUb1Byb3RlY3QpOworc3RhdGljX2Fzc2VydChyb3VuZFVwVG9NdWx0aXBsZU9mPGFs
aWdubWVudE9mV1RGQ29uZmlnPihzdGFydE9mZnNldE9mV1RGQ29uZmlnKSA9PSBzdGFydE9mZnNl
dE9mV1RGQ29uZmlnKTsKIAotc3RhdGljX2Fzc2VydChzaXplb2YoQ29uZmlnKSA9PSBDb25maWdT
aXplVG9Qcm90ZWN0KTsKKyNkZWZpbmUgZ193dGZDb25maWcgKCpiaXR3aXNlX2Nhc3Q8V1RGOjpD
b25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkp
CiAKIEFMV0FZU19JTkxJTkUgQ29uZmlnOjpBc3NlcnROb3RGcm96ZW5TY29wZTo6QXNzZXJ0Tm90
RnJvemVuU2NvcGUoKQogewpJbmRleDogU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyNDA3KQorKysgU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE1IEBACisy
MDIwLTA2LTAyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFu
Z2UgR2lnYWNhZ2U6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29uZmln
IGluc3RlYWQgb2YgaXRzIG93bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjU4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gR2lnYWNh
Z2U6OkNvbmZpZyBub3cgcmVzZXJ2ZXMgYW5kIGV4cGVjdCBzcGFjZSB0byBiZSBhdmFpbGFibGUg
aW4gYW4gZXh0ZXJuYWwKKyAgICAgICAgICAgV2ViQ29uZmlnOjpnX2NvbmZpZyBidWZmZXIuICBH
aWdhY2FnZSBkb2VzIG5vdCBhbGxvY2F0ZSB0aGF0IGJ1ZmZlci4KKworICAgICAgICAyLiBNb3Zl
ZCBHaWdhY2FnZTo6Q29uZmlnIHRvIEdpZ2FjYWdlQ29uZmlnLmguCisgICAgICAgICAgIFRoaXMg
YWxsb3dzIFdURkNvbmZpZy5oIHRvIGluY2x1ZGUgR2lnYWNhZ2VDb25maWcuaCBpbnN0ZWFkIG9m
IGFsbCBvZiBHaWdhY2FnZS5oLgorCisgICAgICAgIDMuIE1vdmVkIEdpZ2FjYWdlOjpLaW5kIHRv
IEdpZ2FjYWdlS2luZC5oLgorICAgICAgICAgICBPdGhlcndpc2UsIEdpZ2FjYWdlOjpLaW5kIHdv
dWxkIG5lZWQgdG8gbW92ZSB0byBHaWdhY2FnZUNvbmZpZy5oIHdoaWNoIGlzIGEKKyAgICAgICAg
ICAgd2VpcmQgcGxhY2UgdG8gcHV0IGl0LgorCisgICAgICAgIDQuIFJlbW92ZWQgZnJlZXplR2ln
YWNhZ2VDb25maWcoKSwgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpLCBhbmQKKyAgICAgICAgICAg
cGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZygpLgorCisgICAgICAgICAgIEl0IGlzIG5v
IGxvbmdlciBwb3NzaWJsZSB0byB0ZW1wb3JhcmlseSBmcmVlemUgYW5kIHVuZnJlZXplIHRoZSBH
aWdhY2FnZTo6Q29uZmlnCisgICAgICAgICAgIGJlY2F1c2UgaXQgbm93IHNoYXJlIHRoZSBzYW1l
IG1lbW9yeSBwYWdlIHdpdGggaGlnaGVyIGxldmVsIENvbmZpZ3MuCisKKyAgICAgICAgICAgcGVy
bWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZygpIGlzIG5vIGxvbmdlciBuZWVkZWQgYmVjYXVz
ZSBpdCBpcyBzdWJzdW1lZAorICAgICAgICAgICBieSBXVEY6OkNvbmZpZzo6cGVybWFuZW50bHlG
cmVlemUoKSwgd2hpY2ggd2lsbCBmcmVlemUgdGhlIGVudGlyZSBXZWJDb25maWc6OmdfY29uZmln
CisgICAgICAgICAgIGJ1ZmZlci4KKworICAgICAgICAgICBPbmUgZGlmZmVyZW5jZSBpbiBiZWhh
dmlvciBoZXJlIGlzIHRoYXQgR2lnYWNhZ2U6OkNvbmZpZyBkYXRhIHVzZWQgdG8gYmUgcGVybWFu
ZW50bHkKKyAgICAgICAgICAgZnJvemVuIGFzIHNvb24gYXMgZm9yYmlkRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2UoKSBpcyBjYWxsZWQuICBOb3csIGl0IGlzbid0CisgICAgICAgICAgIHBlcm1h
bmVudGx5IGZyb3plbiB1bnRpbCB0aGUgZW5kIG9mIHRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlIGZp
cnN0IEpTQzo6Vk0gaW5zdGFuY2UKKyAgICAgICAgICAgaW4gdGhlIHByb2Nlc3MgKGp1c3QgbGlr
ZSB0aGUgb3RoZXIgQ29uZmlnIHJlY29yZHMpLiAgVGhpcyBzdGlsbCBndWFyYW50ZWVzIHRoYXQK
KyAgICAgICAgICAgaXQgaXMgZnJvemVuIGJlZm9yZSBhbnkgSlMgc2NyaXB0IGNhbiBydW4uCisK
KyAgICAgICAgNS4gUHJldmlvdXNseSwgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCkgd29ya3Mg
YnkgbnVsbGlmeWluZyB0aGUgUHJpbWl0aXZlIGdpZ2FjYWdlCisgICAgICAgICAgIGJhc2UgcG9p
bnRlci4gIFdlIGNhbiBsb25nZXIgZG8gdGhhdCBiZWNhdXNlIHRoZSBiYXNlIHBvaW50ZXIgd2ls
bCBiZSBmcm96ZW4KKyAgICAgICAgICAgb24gVk0gaW5zdGFudGlhdGlvbi4gIEluc3RlYWQsIGlm
IG5vdCBmb3JiaWRkZW4sIHdlIG5vdyBkaXNhYmxlIHRoZSBQcmltaXRpdmUKKyAgICAgICAgICAg
Z2lnYWNhZ2UgYnkgc2V0dGluZyBhIGRpc2FibGVQcmltaXRpdmVHaWdhY2FnZVJlcXVlc3RlZCBi
b29sIHZhcmlhYmxlIHRoYXQgaXMKKyAgICAgICAgICAgbm90IGZyb3plbiBpbiB0aGUgR2lnYWNh
Z2U6OkNvbmZpZy4KKworICAgICAgICAgICBUbyBjaGVjayBpZiB0aGUgUHJpbWl0aXZlIGdpZ2Fj
YWdlIGlzIGVuYWJsZWQsIHRoZSBMTEludCwgQXNzZW1ibHlIZWxwZXJzOjpjYWdlQ29uZGl0aW9u
YWxseSgpLAorICAgICAgICAgICBhbmQgcnVudGltZSBmdW5jdGlvbnMgd2lsbCBjaGVjayB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICAgICAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcu
YmFzZVB0cihQcmltaXRpdmUpICYmCisgICAgICAgICAgICAgICAgICAgKGRpc2FibGluZ1ByaW1p
dGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4oKSB8fCBkaXNhYmxlTm90UmVxdWVzdGVkRm9yUHJpbWl0
aXZlR2lnYWNhZ2UoKSkKKworICAgICAgICAgICAgICAgVGhlIGJhc2UgcG9pbnRlciBiZWluZyBu
dWxsIG1lYW5zIHRoZSBnaWdhY2FnZSB3YXMgbmV2ZXIgc2V0IHVwLgorCisgICAgICAgICAgICAg
ICBJZiBkaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuKCkgaXMgdHJ1ZSwgdGhl
biB3ZSBkb24ndCBjYXJlCisgICAgICAgICAgICAgICB3aGV0aGVyIGEgZGlzYWJsZSByZXF1ZXN0
IGhhcyBiZWVuIHJlY2VpdmVkLgorCisgICAgICAgICAgICAgICBPdGhlcndpc2UsIHRoZSBnaWdh
Y2FnZSBpcyBvbmx5IGVuYWJsZWQgaWYgaXQgaGFzIGJlZW4gc2V0IHVwLCBhbmQgYQorICAgICAg
ICAgICAgICAgZGlzYWJsZSByZXF1ZXN0IGhhcyBub3QgYmVlbiByZWNlaXZlZC4KKworICAgICAg
ICAgICAgICAgTm90ZSB0aGF0IHRoZSBmaXJzdCAyIHRlcm1zIGFyZSBmcm96ZW4gaW4gdGhlIEdp
Z2FjYWdlOjpDb25maWcuICBPbmx5IHRoZQorICAgICAgICAgICAgICAgbGFzdCB0ZXJtIGlzIGEg
cnVudGltZSB2YXJpYWJsZS4gIElmIGRpc2FibGluZyBpcyBmb3JiaWRkZW4sIHRoZW4gdGhlCisg
ICAgICAgICAgICAgICBydW50aW1lIHZhcmlhYmxlIG5ldmVyIGNvbWVzIGludG8gcGxheS4KKwor
ICAgICAgICAgICBUaGUgRlRMIGRvZXMgbm90IHJlbHkgb24gYSBydW50aW1lIGNoZWNrIGZvciB3
aGV0aGVyIHRoZSBQcmltaXRpdmUgZ2lnYWNhZ2UgaXMKKyAgICAgICAgICAgZW5hYmxlZCBvciBu
b3QuICBJbnN0ZWFkLCBpdCByZWxpZXMgb24gYSB3YXRjaHBvaW50IHRvIGhhbmRsZSB0aGlzLiAg
U28sIGl0CisgICAgICAgICAgIGp1c3Qgd29ya3MsIGFuZCB0aGVyZSdzIG5vIHBlcmZvcm1hbmNl
IHBlbmFsdHkgd2l0aCBhZGRpbmcgdGhlIDIgZXh0cmEgdGVybXMKKyAgICAgICAgICAgdG8gY2hl
Y2suCisKKyAgICAgICAgICAgTm90ZSBhbHNvIHRoYXQgdGhlIGpzYyBzaGVsbCBhbmQgdGhlIFdl
YlByb2Nlc3Mgd2lsbCBmb3JiaWQgZGlzYWJsaW5nIG9mIHRoZQorICAgICAgICAgICBQcmltaXRp
dmUgZ2lnYWNhZ2UuICBUaGlzIG1lYW5zIHRoZSBBc3NlbWJseUhlbHBlcnM6OmNhZ2VDb25kaXRp
b25hbGx5KCkgd2lsbAorICAgICAgICAgICBhbHNvIG5vdCBnZW5lcmF0ZSB0aGUgcnVudGltZSBj
aGVja3MgZm9yIHRoZSAyIGV4dHJhIHRlcm1zLgorCisgICAgICAgICAgIE9ubHkgdGhlIExMSW50
IGFuZCBydW50aW1lIGZ1bmN0aW9ucyB3aWxsIGhhdmUgdG8gZG8gd29yayB0byBjaGVjayB0aGUg
MiBleHRyYQorICAgICAgICAgICB0ZXJtcy4gIEJ1dCBiZWNhdXNlIHRoZXNlIGFyZSBub3QgaW4g
cGVyZiBjcml0aWNhbCBwYXRocywgdGhpcyBpcyBvay4KKworICAgICAgICAgICBOb3RlIHRoYXQg
d2UncmUgZGVsaWJlcmF0ZWx5IGdhdGluZyB0aGUgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlUmVx
dWVzdGVkCisgICAgICAgICAgIHZhcmlhYmxlIGNoZWNrIG9uIGRpc2FibGluZ1ByaW1pdGl2ZUdp
Z2FjYWdlSXNGb3JiaWRkZW4gdGhvdWdoLCBsb2dpY2FsbHksIHRoZQorICAgICAgICAgICBpc0Vu
YWJsZSBjaGVjayBkb2VzIG5vdCByZWFsbHkgZGVwZW5kIG9uIHdoZXRoZXIgZGlzYWJsaW5nIGlz
IGZvcmJpZGRlbiBvciBub3QuCisgICAgICAgICAgIFdlIGRvIHRoaXMgYmVjYXVzZSBkaXNhYmxp
bmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuIGlzIGZyb3plbiBpbiB0aGUgQ29uZmlnLAor
ICAgICAgICAgICBhbmQgaXQgaXMsIHRoZXJlZm9yZSwgYSBzdHJvbmdlciBndWFyYW50ZWUgb2Yg
Y29ycmVjdG5lc3Mgd2hlcmVhcyB0aGUgdmFyaWFibGUKKyAgICAgICAgICAgY2FuIGJlIGNvcnJ1
cHRlZC4KKworICAgICAgICA2LiBSZXBsYWNlZCBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdl
Rm9yYmlkZGVuKCksIGNhblByaW1pdGl2ZUdpZ2FjYWdlQmVEaXNhYmxlZCgpLAorICAgICAgICAg
ICBhbmQgaXNQcmltaXRpdmVHaWdhY2FnZVBlcm1hbmVudGx5RW5hYmxlZCgpIHdpdGggZGlzYWJs
aW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbigpLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuY3BwOgorICAgICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdp
Z2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UpOgor
ICAgICAgICAoR2lnYWNhZ2U6OmZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKToKKyAg
ICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpmcmVlemVHaWdhY2FnZUNvbmZpZyk6IERlbGV0ZWQu
CisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6dW5mcmVlemVHaWdhY2FnZUNvbmZpZyk6IERl
bGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6cGVybWFuZW50bHlGcmVlemVHaWdh
Y2FnZUNvbmZpZyk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6VW5mcmVl
emVHaWdhY2FnZUNvbmZpZ1Njb3BlOjpVbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGUpOiBEZWxl
dGVkLgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OlVuZnJlZXplR2lnYWNhZ2VDb25maWdT
Y29wZTo6flVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChH
aWdhY2FnZTo6aXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbik6IERlbGV0ZWQu
CisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZS5oOgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2Fi
bGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4pOgorICAgICAgICAoR2lnYWNhZ2U6OmRp
c2FibGVOb3RSZXF1ZXN0ZWRGb3JQcmltaXRpdmVHaWdhY2FnZSk6CisgICAgICAgIChHaWdhY2Fn
ZTo6aXNFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdlOjpiYXNlUHRyKToKKyAgICAgICAgKEdp
Z2FjYWdlOjpjYWdlZCk6CisgICAgICAgIChHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2UpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpD
b25maWc6OmJhc2VQdHIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OkNvbmZp
Zzo6c2V0QmFzZVB0cik6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6aXNQcmltaXRpdmVH
aWdhY2FnZVBlcm1hbmVudGx5RW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6
Y2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFs
bG9jL0dpZ2FjYWdlQ29uZmlnLmg6IEFkZGVkLgorICAgICAgICAoR2lnYWNhZ2U6OkNvbmZpZzo6
YmFzZVB0ciBjb25zdCk6CisgICAgICAgIChHaWdhY2FnZTo6Q29uZmlnOjpzZXRCYXNlUHRyKToK
KyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdlS2luZC5oOiBBZGRlZC4KKyAgICAgICAgKiBibWFs
bG9jL0hlYXAuY3BwOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6dXNpbmdHaWdhY2FnZSk6Cisg
ICAgICAgICogYm1hbGxvYy9tYm1hbGxvYy5jcHA6CisKIDIwMjAtMDUtMjMgIENhaW8gTGltYSAg
PHRpY2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIFtibWFsbG9jXSBGaXggT09NIGVycm9y
cyBvbiBNSVBTIGFmdGVyIHIyNjE2NjcKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAyNjI0MDIpCisrKyBTb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNjksNiArNjksOCBAQCBzZXQoYm1hbGxvY19QVUJMSUNfSEVBREVSUwogICAgIGJtYWxs
b2MvRnJlZUxpc3QuaAogICAgIGJtYWxsb2MvRnJlZUxpc3RJbmxpbmVzLmgKICAgICBibWFsbG9j
L0dpZ2FjYWdlLmgKKyAgICBibWFsbG9jL0dpZ2FjYWdlQ29uZmlnLmgKKyAgICBibWFsbG9jL0dp
Z2FjYWdlS2luZC5oCiAgICAgYm1hbGxvYy9IZWFwLmgKICAgICBibWFsbG9jL0hlYXBDb25zdGFu
dHMuaAogICAgIGJtYWxsb2MvSGVhcEtpbmQuaApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYyNDAyKQorKysg
U291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTEsNiArMTUxLDggQEAKIAkJRUIxN0QxMTEyM0JGQ0Q0MjAwMjA5M0E3IC8q
IEhlYXBDb25zdGFudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRUIxN0QxMTAyM0JGQzhDNDAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuY3BwICov
OyB9OwogCQlFQjE3RDExMjIzQkZDRDdBMDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIxN0QxMEUyM0JFNjkx
RDAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTQ4QkQzQjIzMjFFOEQ3MDBGMTM2RDAgLyogRmFpbHVy
ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU0OEJEM0EyMzIxRThDQzAwRjEzNkQwIC8qIEZhaWx1cmVBY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRUMzQTM5MzI0ODQ2QTgxMDAz
OTVCNTQgLyogR2lnYWNhZ2VDb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFQzNBMzkyMjQ4NDZBNkQwMDM5NUI1NCAvKiBHaWdhY2FnZUNvbmZp
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZF
QzNBMzk1MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzNBMzk0MjQ4NDcxRkUwMDM5NUI1NCAv
KiBHaWdhY2FnZUtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0zMDcsNiArMzA5LDggQEAKIAkJRUIxN0Qx
MEUyM0JFNjkxRDAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gSGVhcENvbnN0YW50cy5oOyBwYXRoID0gYm1hbGxvYy9IZWFwQ29uc3Rh
bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMTdEMTEwMjNCRkM4QzQwMDIw
OTNBNyAvKiBIZWFwQ29uc3RhbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEhlYXBDb25zdGFudHMuY3BwOyBwYXRoID0gYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0OEJEM0EyMzIxRThDQzAwRjEzNkQw
IC8qIEZhaWx1cmVBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmFp
bHVyZUFjdGlvbi5oOyBwYXRoID0gYm1hbGxvYy9GYWlsdXJlQWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFQzNBMzkyMjQ4NDZBNkQwMDM5NUI1NCAvKiBHaWdhY2FnZUNv
bmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHaWdhY2FnZUNvbmZpZy5o
OyBwYXRoID0gYm1hbGxvYy9HaWdhY2FnZUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRUMzQTM5NDI0ODQ3MUZFMDAzOTVCNTQgLyogR2lnYWNhZ2VLaW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdpZ2FjYWdlS2luZC5oOyBwYXRoID0gYm1hbGxv
Yy9HaWdhY2FnZUtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwpAQCAtNDg2LDYgKzQ5MCw4IEBACiAJCQkJRkU0OEJEM0EyMzIxRThDQzAw
RjEzNkQwIC8qIEZhaWx1cmVBY3Rpb24uaCAqLywKIAkJCQkwRjVCRjE0RTFGMjJERUFGMDAyOUQ5
MUQgLyogR2lnYWNhZ2UuY3BwICovLAogCQkJCTBGNUJGMTRDMUYyMkIwQzMwMDI5RDkxRCAvKiBH
aWdhY2FnZS5oICovLAorCQkJCUZFQzNBMzkyMjQ4NDZBNkQwMDM5NUI1NCAvKiBHaWdhY2FnZUNv
bmZpZy5oICovLAorCQkJCUZFQzNBMzk0MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQu
aCAqLywKIAkJCQkxNERBMzIwRTE4ODc1RDlGMDA3MjY5RTAgLyogSGVhcC5jcHAgKi8sCiAJCQkJ
MTREQTMyMEMxODg3NUIwOTAwNzI2OUUwIC8qIEhlYXAuaCAqLywKIAkJCQlFQjE3RDExMDIzQkZD
OEM0MDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5jcHAgKi8sCkBAIC02MDYsNiArNjEyLDcgQEAK
IAkJCQlGRTQ4QkQzQjIzMjFFOEQ3MDBGMTM2RDAgLyogRmFpbHVyZUFjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTRERDc4QzgxOEY0OEQ3NTAwOTUwNzAyIC8qIEZpeGVkVmVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjdFQjg0NDFGOTU0MUIwMDBGMUFCQ0IgLyogRnJlZUxpc3QuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFQzNBMzkzMjQ4NDZBODEwMDM5NUI1NCAvKiBHaWdhY2FnZUNv
bmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3RUI4MjkxRjk1NDFCMDAwRjFBQkNCIC8qIEZy
ZWVMaXN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QkYxNEQxRjIyQjBDMzAwMjlE
OTFEIC8qIEdpZ2FjYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDAwMjc0OTE4Rjg5QzEzMDAx
MTVDOTcgLyogSGVhcC5oIGluIEhlYWRlcnMgKi8sCkBAIC02NTQsNiArNjYxLDcgQEAKIAkJCQlF
Mzc4QTlFMDI0NkI2ODc1MDAyOUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMzI4RDg0RDIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjVCRjE0OTFGMjJBOEQ4MDAyOUQ5MUQgLyogUGVySGVhcEtpbmQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUZFQzNBMzk1MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0REQ3OENCMThGNDhENzUwMDk1MDcwMiAvKiBQZXJQcm9jZXNz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhDQzE4RjQ4RDc1MDA5NTA3MDIgLyogUGVyVGhy
ZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTVBQjNDNzIwNkUwRDM0MDA3NEZFNzYgLyogUGh5
c2ljYWxQYWdlTWFwLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvR2lnYWNhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2ln
YWNhZ2UuY3BwCShyZXZpc2lvbiAyNjI0MDIpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dp
Z2FjYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgQ2FsbGJh
Y2sgewogICAgIHZvaWQqIGFyZ3VtZW50IHsgbnVsbHB0ciB9OwogfTsKIAotfQorfSAvLyBuYW1l
c3BhY2UgR2lnYWNhZ2UKIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCkBAIC03OSw3NSArNzksMTIg
QEAgbmFtZXNwYWNlIEdpZ2FjYWdlIHsKIC8vIElmIHRoaXMgd2VyZSBsZXNzIHRoYW4gMzJHQiwg
dGhvc2UgT09CIGFjY2Vzc2VzIGNvdWxkIHJlYWNoIG91dHNpZGUgb2YgdGhlIGNhZ2UuCiBjb25z
dGV4cHIgc2l6ZV90IGdpZ2FjYWdlUnVud2F5ID0gMzJsbHUgKiBibWFsbG9jOjpTaXplczo6R0I7
CiAKLWFsaWduYXMoY29uZmlnU2l6ZVRvUHJvdGVjdCkgQ29uZmlnIGdfZ2lnYWNhZ2VDb25maWc7
Citib29sIGRpc2FibGVQcmltaXRpdmVHaWdhY2FnZVJlcXVlc3RlZCA9IGZhbHNlOwogCiB1c2lu
ZyBuYW1lc3BhY2UgYm1hbGxvYzsKIAogbmFtZXNwYWNlIHsKIAotI2lmIEJPUyhEQVJXSU4pCi1l
bnVtIHsKLSAgICBBbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzID0gZmFsc2UsCi0gICAg
RGlzYWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcyA9IHRydWUKLX07Ci0jZW5kaWYKLQot
c3RhdGljIHZvaWQgZnJlZXplR2lnYWNhZ2VDb25maWcoKQotewotICAgIGludCByZXN1bHQ7Ci0j
aWYgQk9TKERBUldJTikKLSAgICByZXN1bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFza19zZWxmKCks
IHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190PigmZ19naWdhY2FnZUNvbmZpZyksIGNvbmZp
Z1NpemVUb1Byb3RlY3QsIEFsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMsIFZNX1BST1Rf
UkVBRCk7Ci0jZWxzZQotICAgIHJlc3VsdCA9IG1wcm90ZWN0KCZnX2dpZ2FjYWdlQ29uZmlnLCBj
b25maWdTaXplVG9Qcm90ZWN0LCBQUk9UX1JFQUQpOwotI2VuZGlmCi0gICAgUkVMRUFTRV9CQVNT
RVJUKCFyZXN1bHQpOwotfQotCi1zdGF0aWMgdm9pZCB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCkK
LXsKLSAgICBSRUxFQVNFX0JBU1NFUlQoIWdfZ2lnYWNhZ2VDb25maWcuaXNQZXJtYW5lbnRseUZy
b3plbik7Ci0gICAgaW50IHJlc3VsdDsKLSNpZiBCT1MoREFSV0lOKQotICAgIHJlc3VsdCA9IHZt
X3Byb3RlY3QobWFjaF90YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+
KCZnX2dpZ2FjYWdlQ29uZmlnKSwgY29uZmlnU2l6ZVRvUHJvdGVjdCwgQWxsb3dQZXJtaXNzaW9u
Q2hhbmdlc0FmdGVyVGhpcywgVk1fUFJPVF9SRUFEIHwgVk1fUFJPVF9XUklURSk7Ci0jZWxzZQot
ICAgIHJlc3VsdCA9IG1wcm90ZWN0KCZnX2dpZ2FjYWdlQ29uZmlnLCBjb25maWdTaXplVG9Qcm90
ZWN0LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKLSNlbmRpZgotICAgIFJFTEVBU0VfQkFTU0VS
VCghcmVzdWx0KTsKLX0KLQotc3RhdGljIHZvaWQgcGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNv
bmZpZygpCi17Ci0gICAgc3RhdGljIE11dGV4IGNvbmZpZ0xvY2s7Ci0gICAgTG9ja0hvbGRlciBs
b2NraW5nKGNvbmZpZ0xvY2spOwotCi0gICAgaWYgKCFnX2dpZ2FjYWdlQ29uZmlnLmlzUGVybWFu
ZW50bHlGcm96ZW4pIHsKLSAgICAgICAgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpOwotICAgICAg
ICBnX2dpZ2FjYWdlQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4gPSB0cnVlOwotICAgIH0KLQot
ICAgIC8vIFRoZXJlJ3Mgbm8gZ29pbmcgYmFjayBub3chCi0gICAgaW50IHJlc3VsdDsKLSNpZiBC
T1MoREFSV0lOKQotICAgIHJlc3VsdCA9IHZtX3Byb3RlY3QobWFjaF90YXNrX3NlbGYoKSwgcmVp
bnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KCZnX2dpZ2FjYWdlQ29uZmlnKSwgY29uZmlnU2l6
ZVRvUHJvdGVjdCwgRGlzYWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcywgVk1fUFJPVF9S
RUFEKTsKLSNlbHNlCi0gICAgcmVzdWx0ID0gbXByb3RlY3QoJmdfZ2lnYWNhZ2VDb25maWcsIGNv
bmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7Ci0jZW5kaWYKLSAgICBSRUxFQVNFX0JBU1NF
UlQoIXJlc3VsdCk7Ci19Ci0KLWNsYXNzIFVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSB7Ci1w
dWJsaWM6Ci0gICAgVW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlKCkKLSAgICB7Ci0gICAgICAg
IHVuZnJlZXplR2lnYWNhZ2VDb25maWcoKTsKLSAgICB9Ci0gICAgCi0gICAgflVuZnJlZXplR2ln
YWNhZ2VDb25maWdTY29wZSgpCi0gICAgewotICAgICAgICBmcmVlemVHaWdhY2FnZUNvbmZpZygp
OwotICAgIH0KLX07Ci0KIHNpemVfdCBydW53YXlTaXplKEtpbmQga2luZCkKIHsKICAgICBzd2l0
Y2ggKGtpbmQpIHsKQEAgLTI0MCw3ICsxNzcsNiBAQCB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkKICAg
ICAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcudG90YWxTaXplID0gdG90YWxTaXplOwogICAgICAg
ICAgICAgdm1EZWFsbG9jYXRlUGh5c2ljYWxQYWdlcyhiYXNlLCB0b3RhbFNpemUpOwogICAgICAg
ICAgICAgZ19naWdhY2FnZUNvbmZpZy5pc0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgZnJl
ZXplR2lnYWNhZ2VDb25maWcoKTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTI1MCw5ICsxODYsOSBA
QCB2b2lkIGRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpCiAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiRkFUQUw6IERpc2FibGluZyBQcmltaXRpdmUgZ2lnYWNhZ2UgaXMgZm9yYmlkZGVuLCBidXQg
d2UgZG9uJ3Qgd2FudCB0aGF0IGluIHRoaXMgcHJvY2Vzcy5cbiIpOwogCiAgICAgUkVMRUFTRV9C
QVNTRVJUKCFnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3Ji
aWRkZW4pOwotICAgIFJFTEVBU0VfQkFTU0VSVCghZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVu
dGx5RnJvemVuKTsKIAogICAgIGVuc3VyZUdpZ2FjYWdlKCk7CisgICAgZGlzYWJsZVByaW1pdGl2
ZUdpZ2FjYWdlUmVxdWVzdGVkID0gdHJ1ZTsKICAgICBpZiAoIWdfZ2lnYWNhZ2VDb25maWcuYmFz
ZVB0cnNbUHJpbWl0aXZlXSkgewogICAgICAgICAvLyBJdCB3YXMgbmV2ZXIgZW5hYmxlZC4gVGhh
dCBtZWFucyB0aGF0IHdlIG5ldmVyIGV2ZW4gc2F2ZWQgYW55IGNhbGxiYWNrcy4gT3IsIHdlIGhh
ZCBhbHJlYWR5IGRpc2FibGVkCiAgICAgICAgIC8vIGl0IGJlZm9yZSwgYW5kIGFscmVhZHkgY2Fs
bGVkIHRoZSBjYWxsYmFja3MuCkBAIC0yNjQsOCArMjAwLDYgQEAgdm9pZCBkaXNhYmxlUHJpbWl0
aXZlR2lnYWNhZ2UoKQogICAgIGZvciAoQ2FsbGJhY2smIGNhbGxiYWNrIDogY2FsbGJhY2tzLmNh
bGxiYWNrcykKICAgICAgICAgY2FsbGJhY2suZnVuY3Rpb24oY2FsbGJhY2suYXJndW1lbnQpOwog
ICAgIGNhbGxiYWNrcy5jYWxsYmFja3Muc2hyaW5rKDApOwotICAgIFVuZnJlZXplR2lnYWNhZ2VD
b25maWdTY29wZSB1bmZyZWV6ZVNjb3BlOwotICAgIGdfZ2lnYWNhZ2VDb25maWcuYmFzZVB0cnNb
UHJpbWl0aXZlXSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgYWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxi
YWNrKHZvaWQgKCpmdW5jdGlvbikodm9pZCopLCB2b2lkKiBhcmd1bWVudCkKQEAgLTMxMiwxNyAr
MjQ2LDkgQEAgdm9pZCBmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpCiAgICAgUkVM
RUFTRV9CQVNTRVJUKGdfZ2lnYWNhZ2VDb25maWcuc2hvdWxkQmVFbmFibGVkSGFzQmVlbkNhbGxl
ZAogICAgICAgICAmJiAoR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCB8fCAhZ19naWdhY2Fn
ZUNvbmZpZy5zaG91bGRCZUVuYWJsZWQgfHwgdmVyaWZ5R2lnYWNhZ2VJc0VuYWJsZWQoKSkpOwog
Ci0gICAgaWYgKCFnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNG
b3JiaWRkZW4pIHsKLSAgICAgICAgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpOworICAgIGlmICgh
Z19naWdhY2FnZUNvbmZpZy5kaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuKQog
ICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3Ji
aWRkZW4gPSB0cnVlOwotICAgIH0KLSAgICBwZXJtYW5lbnRseUZyZWV6ZUdpZ2FjYWdlQ29uZmln
KCk7Ci0gICAgUkVMRUFTRV9CQVNTRVJUKGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VGb3Ji
aWRkZW4oKSk7Ci19Ci0KLUJOT19JTkxJTkUgYm9vbCBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2Fj
YWdlRm9yYmlkZGVuKCkKLXsKLSAgICByZXR1cm4gZ19naWdhY2FnZUNvbmZpZy5kaXNhYmxpbmdQ
cmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuOworICAgIFJFTEVBU0VfQkFTU0VSVChkaXNhYmxp
bmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuKCkpOwogfQogCiBib29sIHNob3VsZEJlRW5h
YmxlZCgpCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCShyZXZpc2lvbiAyNjI0MDIp
CisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNSwxMiArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBbGdvcml0aG0u
aCIKICNpbmNsdWRlICJCQXNzZXJ0LmgiCiAjaW5jbHVkZSAiQkV4cG9ydC5oIgogI2luY2x1ZGUg
IkJJbmxpbmUuaCIKICNpbmNsdWRlICJCUGxhdGZvcm0uaCIKKyNpbmNsdWRlICJHaWdhY2FnZUNv
bmZpZy5oIgogI2luY2x1ZGUgIlNpemVzLmgiCisjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCiAj
aW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogCkBAIC00NCwxMiArNDUs
NiBAQAogCiBuYW1lc3BhY2UgR2lnYWNhZ2UgewogCi1lbnVtIEtpbmQgewotICAgIFByaW1pdGl2
ZSwKLSAgICBKU1ZhbHVlLAotICAgIE51bWJlck9mS2luZHMKLX07Ci0KIEJJTkxJTkUgY29uc3Qg
Y2hhciogbmFtZShLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CkBAIC02Niw4ICs2
MSw2IEBAIEJJTkxJTkUgY29uc3QgY2hhciogbmFtZShLaW5kIGtpbmQpCiAKICNpZiBHSUdBQ0FH
RV9FTkFCTEVECiAKLWNvbnN0ZXhwciBzaXplX3QgY29uZmlnU2l6ZVRvUHJvdGVjdCA9IDE2ICog
Ym1hbGxvYzo6U2l6ZXM6OmtCOwotCiAjaWYgQk9TX0VGRkVDVElWRV9BRERSRVNTX1dJRFRIIDwg
NDgKIGNvbnN0ZXhwciBzaXplX3QgcHJpbWl0aXZlR2lnYWNhZ2VTaXplID0gMiAqIGJtYWxsb2M6
OlNpemVzOjpHQjsKIGNvbnN0ZXhwciBzaXplX3QganNWYWx1ZUdpZ2FjYWdlU2l6ZSA9IDIgKiBi
bWFsbG9jOjpTaXplczo6R0I7CkBAIC05Nyw1MSArOTAsMTEgQEAgY29uc3RleHByIHNpemVfdCBn
aWdhY2FnZVNpemVUb01hc2soc2l6ZQogY29uc3RleHByIHNpemVfdCBwcmltaXRpdmVHaWdhY2Fn
ZU1hc2sgPSBnaWdhY2FnZVNpemVUb01hc2socHJpbWl0aXZlR2lnYWNhZ2VTaXplKTsKIGNvbnN0
ZXhwciBzaXplX3QganNWYWx1ZUdpZ2FjYWdlTWFzayA9IGdpZ2FjYWdlU2l6ZVRvTWFzayhqc1Zh
bHVlR2lnYWNhZ2VTaXplKTsKIAotc3RydWN0IENvbmZpZyB7Ci0gICAgdm9pZCogYmFzZVB0cihL
aW5kIGtpbmQpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0JBU1NFUlQoa2luZCA8IE51
bWJlck9mS2luZHMpOwotICAgICAgICByZXR1cm4gYmFzZVB0cnNba2luZF07Ci0gICAgfQotCi0g
ICAgdm9pZCBzZXRCYXNlUHRyKEtpbmQga2luZCwgdm9pZCogcHRyKQotICAgIHsKLSAgICAgICAg
UkVMRUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRzKTsKLSAgICAgICAgYmFzZVB0cnNb
a2luZF0gPSBwdHI7Ci0gICAgfQotCi0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgewotICAg
ICAgICAgICAgLy8gQWxsIHRoZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3Qgc2hvdWxkIGJlIGNob3Nl
biBzdWNoIHRoYXQgdGhlaXIKLSAgICAgICAgICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAvIG51
bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKLSAgICAgICAgICAgIC8v
IGFzIGEgZ2xvYmFsIHNpbmdsZXRvbi4KLQotICAgICAgICAgICAgYm9vbCBpc0VuYWJsZWQ7Ci0g
ICAgICAgICAgICBib29sIGlzUGVybWFuZW50bHlGcm96ZW47Ci0gICAgICAgICAgICBib29sIGRp
c2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW47Ci0gICAgICAgICAgICBib29sIHNo
b3VsZEJlRW5hYmxlZDsKLQotICAgICAgICAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBqdXN0IHB1
dCB0aGUgc3RkOjpvbmNlX2ZsYWcgZm9yIHRoZXNlIGZ1bmN0aW9ucwotICAgICAgICAgICAgLy8g
aGVyZSwgYnV0IHdlIGNhbid0IGJlY2F1c2Ugc3RkOjpvbmNlX2ZsYWcgaGFzIGEgaW1wbGljaXRs
eS1kZWxldGVkCi0gICAgICAgICAgICAvLyBkZWZhdWx0IGNvbnN0cnVjdG9yLiBTbywgd2UgdXNl
IGEgYm9vbGVhbiBpbnN0ZWFkLgotICAgICAgICAgICAgYm9vbCBzaG91bGRCZUVuYWJsZWRIYXNC
ZWVuQ2FsbGVkOwotICAgICAgICAgICAgYm9vbCBlbnN1cmVHaWdhY2FnZUhhc0JlZW5DYWxsZWQ7
Ci0KLSAgICAgICAgICAgIHZvaWQqIHN0YXJ0OwotICAgICAgICAgICAgc2l6ZV90IHRvdGFsU2l6
ZTsKLSAgICAgICAgICAgIHZvaWQqIGJhc2VQdHJzW051bWJlck9mS2luZHNdOwotICAgICAgICB9
OwotICAgICAgICBjaGFyIGVuc3VyZVNpemVbY29uZmlnU2l6ZVRvUHJvdGVjdF07Ci0gICAgfTsK
LX07Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihDb25maWcpID09IGNvbmZpZ1NpemVUb1Byb3RlY3Qs
ICJHaWdhY2FnZSBDb25maWcgbXVzdCBmaXQgaW4gY29uZmlnU2l6ZVRvUHJvdGVjdCIpOwotCi1l
eHRlcm4gIkMiIGFsaWduYXMoY29uZmlnU2l6ZVRvUHJvdGVjdCkgQkVYUE9SVCBDb25maWcgZ19n
aWdhY2FnZUNvbmZpZzsKLQogLy8gVGhlc2UgY29uc3RhbnRzIGFyZSBuZWVkZWQgYnkgdGhlIExM
SW50LgogY29uc3RleHByIHB0cmRpZmZfdCBvZmZzZXRPZlByaW1pdGl2ZUdpZ2FjYWdlQmFzZVB0
ciA9IEtpbmQ6OlByaW1pdGl2ZSAqIHNpemVvZih2b2lkKik7CiBjb25zdGV4cHIgcHRyZGlmZl90
IG9mZnNldE9mSlNWYWx1ZUdpZ2FjYWdlQmFzZVB0ciA9IEtpbmQ6OkpTVmFsdWUgKiBzaXplb2Yo
dm9pZCopOwogCitleHRlcm4gIkMiIEJFWFBPUlQgYm9vbCBkaXNhYmxlUHJpbWl0aXZlR2lnYWNh
Z2VSZXF1ZXN0ZWQ7CiAKIEJJTkxJTkUgYm9vbCBpc0VuYWJsZWQoKSB7IHJldHVybiBnX2dpZ2Fj
YWdlQ29uZmlnLmlzRW5hYmxlZDsgfQogCkBAIC0xNTUsMTIgKzEwOCwyNiBAQCBCRVhQT1JUIHZv
aWQgcmVtb3ZlUHJpbWl0aXZlRGlzYWJsZUNhbGxiCiAKIEJFWFBPUlQgdm9pZCBmb3JiaWREaXNh
YmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOwogCi1CRVhQT1JUIGJvb2wgaXNEaXNhYmxpbmdQcmlt
aXRpdmVHaWdhY2FnZUZvcmJpZGRlbigpOwotaW5saW5lIGJvb2wgaXNQcmltaXRpdmVHaWdhY2Fn
ZVBlcm1hbmVudGx5RW5hYmxlZCgpIHsgcmV0dXJuIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2VGb3JiaWRkZW4oKTsgfQotaW5saW5lIGJvb2wgY2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2Fi
bGVkKCkgeyByZXR1cm4gIWlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VGb3JiaWRkZW4oKTsg
fQorQklOTElORSBib29sIGRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4oKQor
eworICAgIHJldHVybiBnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdl
SXNGb3JiaWRkZW47Cit9CisKK0JJTkxJTkUgYm9vbCBkaXNhYmxlTm90UmVxdWVzdGVkRm9yUHJp
bWl0aXZlR2lnYWNhZ2UoKQoreworICAgIHJldHVybiAhZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdl
UmVxdWVzdGVkOworfQorCitCSU5MSU5FIGJvb2wgaXNFbmFibGVkKEtpbmQga2luZCkKK3sKKyAg
ICBpZiAoa2luZCA9PSBQcmltaXRpdmUpCisgICAgICAgIHJldHVybiBnX2dpZ2FjYWdlQ29uZmln
LmJhc2VQdHIoUHJpbWl0aXZlKSAmJiAoZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJp
ZGRlbigpIHx8IGRpc2FibGVOb3RSZXF1ZXN0ZWRGb3JQcmltaXRpdmVHaWdhY2FnZSgpKTsKKyAg
ICByZXR1cm4gZ19naWdhY2FnZUNvbmZpZy5iYXNlUHRyKGtpbmQpOworfQogCiBCSU5MSU5FIHZv
aWQqIGJhc2VQdHIoS2luZCBraW5kKQogeworICAgIEJBU1NFUlQoaXNFbmFibGVkKGtpbmQpKTsK
ICAgICByZXR1cm4gZ19naWdhY2FnZUNvbmZpZy5iYXNlUHRyKGtpbmQpOwogfQogCkBAIC0xNzAs
MTEgKzEzNyw2IEBAIEJJTkxJTkUgdm9pZCogYWRkcmVzc09mQmFzZVB0cihLaW5kIGtpbmQKICAg
ICByZXR1cm4gJmdfZ2lnYWNhZ2VDb25maWcuYmFzZVB0cnNba2luZF07CiB9CiAKLUJJTkxJTkUg
Ym9vbCBpc0VuYWJsZWQoS2luZCBraW5kKQotewotICAgIHJldHVybiAhIWdfZ2lnYWNhZ2VDb25m
aWcuYmFzZVB0cihraW5kKTsKLX0KLQogQklOTElORSBzaXplX3Qgc2l6ZShLaW5kIGtpbmQpCiB7
CiAgICAgc3dpdGNoIChraW5kKSB7CkBAIC0yMTAsOSArMTcyLDkgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KIEJJTkxJTkUgVCogY2FnZWQoS2luZCBraW5kLCBUKiBwdHIpCiB7CiAgICAgQkFTU0VS
VChwdHIpOwotICAgIHZvaWQqIGdpZ2FjYWdlQmFzZVB0ciA9IGdfZ2lnYWNhZ2VDb25maWcuYmFz
ZVB0cihraW5kKTsKLSAgICBpZiAoIWdpZ2FjYWdlQmFzZVB0cikKKyAgICBpZiAoIWlzRW5hYmxl
ZChraW5kKSkKICAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB2b2lkKiBnaWdhY2FnZUJhc2VQdHIg
PSBiYXNlUHRyKGtpbmQpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPigKICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGdpZ2FjYWdlQmFzZVB0cikgKyAoCiAgICAg
ICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSAmIG1hc2soa2luZCkpKTsK
QEAgLTI1MSwxMyArMjEzLDEzIEBAIEJJTkxJTkUgdm9pZCogYmFzZVB0cihLaW5kKQogQklOTElO
RSBzaXplX3Qgc2l6ZShLaW5kKSB7IEJDUkFTSCgpOyByZXR1cm4gMDsgfQogQklOTElORSB2b2lk
IGVuc3VyZUdpZ2FjYWdlKCkgeyB9CiBCSU5MSU5FIGJvb2wgY29udGFpbnMoY29uc3Qgdm9pZCop
IHsgcmV0dXJuIGZhbHNlOyB9CitCSU5MSU5FIGJvb2wgZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2VJc0ZvcmJpZGRlbigpIHsgcmV0dXJuIGZhbHNlIH0KIEJJTkxJTkUgYm9vbCBpc0VuYWJsZWQo
KSB7IHJldHVybiBmYWxzZTsgfQogQklOTElORSBib29sIGlzQ2FnZWQoS2luZCwgY29uc3Qgdm9p
ZCopIHsgcmV0dXJuIHRydWU7IH0KIEJJTkxJTkUgYm9vbCBpc0VuYWJsZWQoS2luZCkgeyByZXR1
cm4gZmFsc2U7IH0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEJJTkxJTkUgVCogY2FnZWQoS2luZCwg
VCogcHRyKSB7IHJldHVybiBwdHI7IH0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEJJTkxJTkUgVCog
Y2FnZWRNYXlCZU51bGwoS2luZCwgVCogcHRyKSB7IHJldHVybiBwdHI7IH0KIEJJTkxJTkUgdm9p
ZCBmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpIHsgfQotQklOTElORSBib29sIGNh
blByaW1pdGl2ZUdpZ2FjYWdlQmVEaXNhYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiBCSU5MSU5F
IHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCkgeyB9CiBCSU5MSU5FIHZvaWQgYWRkUHJp
bWl0aXZlRGlzYWJsZUNhbGxiYWNrKHZvaWQgKCopKHZvaWQqKSwgdm9pZCopIHsgfQogQklOTElO
RSB2b2lkIHJlbW92ZVByaW1pdGl2ZURpc2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZv
aWQqKSB7IH0KSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2VDb25maWcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlQ29uZmlnLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZUNvbmZpZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFsZ29yaXRobS5o
IgorI2luY2x1ZGUgIkdpZ2FjYWdlS2luZC5oIgorI2luY2x1ZGUgIlN0ZExpYkV4dHJhcy5oIgor
I2luY2x1ZGUgPGludHR5cGVzLmg+CisKK25hbWVzcGFjZSBXZWJDb25maWcgeworCit1c2luZyBT
bG90ID0gdWludDY0X3Q7CitleHRlcm4gIkMiIFNsb3QgZ19jb25maWdbXTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29uZmlnCisKK25hbWVzcGFjZSBHaWdhY2FnZSB7CisKK3N0cnVjdCBDb25maWcg
eworICAgIHZvaWQqIGJhc2VQdHIoS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgUkVM
RUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRzKTsKKyAgICAgICAgcmV0dXJuIGJhc2VQ
dHJzW2tpbmRdOworICAgIH0KKworICAgIHZvaWQgc2V0QmFzZVB0cihLaW5kIGtpbmQsIHZvaWQq
IHB0cikKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQkFTU0VSVChraW5kIDwgTnVtYmVyT2ZLaW5k
cyk7CisgICAgICAgIGJhc2VQdHJzW2tpbmRdID0gcHRyOworICAgIH0KKworICAgIC8vIEFsbCB0
aGUgZmllbGRzIGluIHRoaXMgc3RydWN0IHNob3VsZCBiZSBjaG9zZW4gc3VjaCB0aGF0IHRoZWly
CisgICAgLy8gaW5pdGlhbCB2YWx1ZSBpcyAwIC8gbnVsbCAvIGZhbHN5IGJlY2F1c2UgQ29uZmln
IGlzIGluc3RhbnRpYXRlZAorICAgIC8vIGFzIGEgZ2xvYmFsIHNpbmdsZXRvbi4KKworICAgIGJv
b2wgaXNQZXJtYW5lbnRseUZyb3plbjsgLy8gV2lsbCBiZSBzZXQgYnkgdGhlIGNsaWVudCBpZiB0
aGUgQ29uZmlnIGdldHMgZnJvemVuLgorICAgIGJvb2wgaXNFbmFibGVkOworICAgIGJvb2wgZGlz
YWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbjsKKyAgICBib29sIHNob3VsZEJlRW5h
YmxlZDsKKworICAgIC8vIFdlIHdvdWxkIGxpa2UgdG8ganVzdCBwdXQgdGhlIHN0ZDo6b25jZV9m
bGFnIGZvciB0aGVzZSBmdW5jdGlvbnMKKyAgICAvLyBoZXJlLCBidXQgd2UgY2FuJ3QgYmVjYXVz
ZSBzdGQ6Om9uY2VfZmxhZyBoYXMgYSBpbXBsaWNpdGx5LWRlbGV0ZWQKKyAgICAvLyBkZWZhdWx0
IGNvbnN0cnVjdG9yLiBTbywgd2UgdXNlIGEgYm9vbGVhbiBpbnN0ZWFkLgorICAgIGJvb2wgc2hv
dWxkQmVFbmFibGVkSGFzQmVlbkNhbGxlZDsKKyAgICBib29sIGVuc3VyZUdpZ2FjYWdlSGFzQmVl
bkNhbGxlZDsKKworICAgIHZvaWQqIHN0YXJ0OworICAgIHNpemVfdCB0b3RhbFNpemU7CisgICAg
dm9pZCogYmFzZVB0cnNbTnVtYmVyT2ZLaW5kc107Cit9OworCitjb25zdGV4cHIgc2l6ZV90IHN0
YXJ0U2xvdE9mR2lnYWNhZ2VDb25maWcgPSAwOworY29uc3RleHByIHNpemVfdCBzdGFydE9mZnNl
dE9mR2lnYWNhZ2VDb25maWcgPSBzdGFydFNsb3RPZkdpZ2FjYWdlQ29uZmlnICogc2l6ZW9mKFdl
YkNvbmZpZzo6U2xvdCk7CisKK2NvbnN0ZXhwciBzaXplX3QgcmVzZXJ2ZWRTbG90c0ZvckdpZ2Fj
YWdlQ29uZmlnID0gNjsKK2NvbnN0ZXhwciBzaXplX3QgcmVzZXJ2ZWRCeXRlc0ZvckdpZ2FjYWdl
Q29uZmlnID0gcmVzZXJ2ZWRTbG90c0ZvckdpZ2FjYWdlQ29uZmlnICogc2l6ZW9mKFdlYkNvbmZp
Zzo6U2xvdCk7CisKK2NvbnN0ZXhwciBzaXplX3QgYWxpZ25tZW50T2ZHaWdhY2FnZUNvbmZpZyA9
IHN0ZDo6YWxpZ25tZW50X29mPEdpZ2FjYWdlOjpDb25maWc+Ojp2YWx1ZTsKKworc3RhdGljX2Fz
c2VydChzaXplb2YoR2lnYWNhZ2U6OkNvbmZpZykgPD0gcmVzZXJ2ZWRCeXRlc0ZvckdpZ2FjYWdl
Q29uZmlnKTsKK3N0YXRpY19hc3NlcnQoYm1hbGxvYzo6cm91bmRVcFRvTXVsdGlwbGVPZjxhbGln
bm1lbnRPZkdpZ2FjYWdlQ29uZmlnPihzdGFydE9mZnNldE9mR2lnYWNhZ2VDb25maWcpID09IHN0
YXJ0T2Zmc2V0T2ZHaWdhY2FnZUNvbmZpZyk7CisKKyNkZWZpbmUgZ19naWdhY2FnZUNvbmZpZyAo
KmJtYWxsb2M6OmJpdHdpc2VfY2FzdDxHaWdhY2FnZTo6Q29uZmlnKj4oJldlYkNvbmZpZzo6Z19j
b25maWdbR2lnYWNhZ2U6OnN0YXJ0U2xvdE9mR2lnYWNhZ2VDb25maWddKSkKKworfSAvLyBuYW1l
c3BhY2UgR2lnYWNhZ2UKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2VLaW5k
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZUtpbmQuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlS2luZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEdpZ2FjYWdlIHsK
KworZW51bSBLaW5kIHsKKyAgICBQcmltaXRpdmUsCisgICAgSlNWYWx1ZSwKKyAgICBOdW1iZXJP
ZktpbmRzCit9OworCit9IC8vIG5hbWVzcGFjZSBHaWdhY2FnZQpJbmRleDogU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0hlYXAuY3BwCShyZXZpc2lvbiAyNjI0MDIpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hl
YXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMiArNTYsMTMgQEAgSGVhcDo6SGVhcChIZWFw
S2luZCBraW5kLCBMb2NrSG9sZGVyJikKICAgICBHaWdhY2FnZTo6ZW5zdXJlR2lnYWNhZ2UoKTsK
ICNpZiBHSUdBQ0FHRV9FTkFCTEVECiAgICAgaWYgKHVzaW5nR2lnYWNhZ2UoKSkgewotICAgICAg
ICBSRUxFQVNFX0JBU1NFUlQoZ2lnYWNhZ2VCYXNlUHRyKCkpOworICAgICAgICB2b2lkKiBnaWdh
Y2FnZUJhc2VQdHIgPSB0aGlzLT5naWdhY2FnZUJhc2VQdHIoKTsKKyAgICAgICAgUkVMRUFTRV9C
QVNTRVJUKGdpZ2FjYWdlQmFzZVB0cik7CiAgICAgICAgIHVpbnQ2NF90IHJhbmRvbVsyXTsKICAg
ICAgICAgY3J5cHRvUmFuZG9tKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KHJhbmRv
bSksIHNpemVvZihyYW5kb20pKTsKICAgICAgICAgc2l6ZV90IHNpemUgPSByb3VuZERvd25Ub011
bHRpcGxlT2Yodm1QYWdlU2l6ZSgpLCBnaWdhY2FnZVNpemUoKSAtIChyYW5kb21bMF0gJSBHaWdh
Y2FnZTo6bWF4aW11bUNhZ2VTaXplUmVkdWN0aW9uRm9yU2xpZGUpKTsKICAgICAgICAgcHRyZGlm
Zl90IG9mZnNldCA9IHJvdW5kRG93blRvTXVsdGlwbGVPZih2bVBhZ2VTaXplKCksIHJhbmRvbVsx
XSAlIChnaWdhY2FnZVNpemUoKSAtIHNpemUpKTsKLSAgICAgICAgdm9pZCogYmFzZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGdpZ2FjYWdlQmFzZVB0cigpKSArIG9mZnNldDsK
KyAgICAgICAgdm9pZCogYmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGdp
Z2FjYWdlQmFzZVB0cikgKyBvZmZzZXQ7CiAgICAgICAgIG1fbGFyZ2VGcmVlLmFkZChMYXJnZVJh
bmdlKGJhc2UsIHNpemUsIDAsIDApKTsKICAgICB9CiAjZW5kaWYKQEAgLTcxLDcgKzcyLDcgQEAg
SGVhcDo6SGVhcChIZWFwS2luZCBraW5kLCBMb2NrSG9sZGVyJikKIAogYm9vbCBIZWFwOjp1c2lu
Z0dpZ2FjYWdlKCkKIHsKLSAgICByZXR1cm4gaXNHaWdhY2FnZShtX2tpbmQpICYmIGdpZ2FjYWdl
QmFzZVB0cigpOworICAgIHJldHVybiBpc0dpZ2FjYWdlKG1fa2luZCkgJiYgR2lnYWNhZ2U6Omlz
RW5hYmxlZChnaWdhY2FnZUtpbmQobV9raW5kKSk7CiB9CiAKIHZvaWQqIEhlYXA6OmdpZ2FjYWdl
QmFzZVB0cigpCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL21ibWFsbG9jLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL21ibWFsbG9jLmNwcAkocmV2aXNpb24g
MjYyNDAyKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9tYm1hbGxvYy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDE1IEBACiAjaW5jbHVkZSAiYm1hbGxvYy5oIgogCiAjaW5jbHVk
ZSAiQkV4cG9ydC5oIgorI2luY2x1ZGUgIkdpZ2FjYWdlQ29uZmlnLmgiCisKK25hbWVzcGFjZSBX
ZWJDb25maWcgeworCitjb25zdGV4cHIgc2l6ZV90IENvbmZpZ1NpemVUb1Byb3RlY3QgPSAxNiAq
IGJtYWxsb2M6OlNpemVzOjprQjsKKworYWxpZ25hcyhDb25maWdTaXplVG9Qcm90ZWN0KSBCRVhQ
T1JUIFNsb3QgZ19jb25maWdbQ29uZmlnU2l6ZVRvUHJvdGVjdCAvIHNpemVvZihTbG90KV07CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvbmZpZwogCiBleHRlcm4gIkMiIHsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400813</attachid>
            <date>2020-06-02 06:43:32 -0700</date>
            <delta_ts>2020-06-02 12:19:29 -0700</delta_ts>
            <desc>propose patch.</desc>
            <filename>bug-212585.patch</filename>
            <type>text/plain</type>
            <size>43536</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyNDAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDIwLTA2LTAyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBD
aGFuZ2UgR2lnYWNhZ2U6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29u
ZmlnIGluc3RlYWQgb2YgaXRzIG93bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxMjU4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhc3Nl
bWJsZXIvdGVzdG1hc20uY3BwOgorICAgICAgICAoSlNDOjp0ZXN0Q2FnZVByZXNlcnZlc1BBQ0Zh
aWx1cmVCaXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhZ2VUeXBlZEFycmF5U3RvcmFnZSk6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNhZ2VkKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6Cisg
ICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2FnZUNvbmRpdGlvbmFsbHkpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9K
U0NDb25maWcuaDoKKyAgICAgICAgKEpTQzo6Q29uZmlnOjppc1Blcm1hbmVudGx5RnJvemVuKToK
KwogMjAyMC0wNi0wMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDb3JyZWN0IG1pc3VuZGVyc3RhbmRpbmdzIG9uIGhvdyBUaHJlYWRTcGVjaWZpYyB3b3JrCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL3Rlc3RtYXNtLmNwcAkocmV2
aXNpb24gMjYyNDAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci90ZXN0bWFz
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMDcsNyArMjMwNyw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RDYWdlUHJlc2VydmVzUEFDRmFpbHVyZUIKICAgICBpZiAoIUdpZ2FjYWdlOjpzaG91bGRCZUVu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9BU1NFUlQoIUdpZ2FjYWdl
Ojppc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRm9yYmlkZGVuKCkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKCFHaWdhY2FnZTo6ZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbigp
KTsKICAgICBhdXRvIGNhZ2UgPSBjb21waWxlKFtdIChDQ2FsbEhlbHBlcnMmIGppdCkgewogICAg
ICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZShqaXQpOwogICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjYy
NDAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcyNDcsNyArNzI0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNhZ2VUeXBlZEFycmF5U3RvcmEKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBp
ZiAoR2lnYWNhZ2U6OmNhblByaW1pdGl2ZUdpZ2FjYWdlQmVEaXNhYmxlZCgpKSB7CisgICAgaWYg
KCFHaWdhY2FnZTo6ZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbigpKSB7CiAg
ICAgICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgICAgIGlmICh2bS5wcmltaXRpdmVHaWdh
Y2FnZUVuYWJsZWQoKS5pc1N0aWxsVmFsaWQoKSkKICAgICAgICAgICAgIG1faml0LmdyYXBoKCku
d2F0Y2hwb2ludHMoKS5hZGRMYXppbHkodm0ucHJpbWl0aXZlR2lnYWNhZ2VFbmFibGVkKCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
cmV2aXNpb24gMjYyNDAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgzMSw3ICsxNTgzMSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGlmICghR2lnYWNhZ2U6OmlzRW5hYmxlZChraW5kKSkKICAgICAgICAgICAgIHJl
dHVybiBkb1VudGFnQXJyYXlQdHIocHRyKTsKICAgICAgICAgCi0gICAgICAgIGlmIChraW5kID09
IEdpZ2FjYWdlOjpQcmltaXRpdmUgJiYgR2lnYWNhZ2U6OmNhblByaW1pdGl2ZUdpZ2FjYWdlQmVE
aXNhYmxlZCgpKSB7CisgICAgICAgIGlmIChraW5kID09IEdpZ2FjYWdlOjpQcmltaXRpdmUgJiYg
IUdpZ2FjYWdlOjpkaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuKCkpIHsKICAg
ICAgICAgICAgIGlmICh2bSgpLnByaW1pdGl2ZUdpZ2FjYWdlRW5hYmxlZCgpLmlzU3RpbGxWYWxp
ZCgpKQogICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkodm0o
KS5wcmltaXRpdmVHaWdhY2FnZUVuYWJsZWQoKSk7CiAgICAgICAgICAgICBlbHNlCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDI2
MjQwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE2OTksMTUgKzE2OTksMTggQEAgcHVibGljOgogICAgIHsKICNpZiBH
SUdBQ0FHRV9FTkFCTEVECiAgICAgICAgIGlmIChHaWdhY2FnZTo6aXNFbmFibGVkKGtpbmQpKSB7
Ci0gICAgICAgICAgICBpZiAoa2luZCAhPSBHaWdhY2FnZTo6UHJpbWl0aXZlIHx8IEdpZ2FjYWdl
Ojppc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRm9yYmlkZGVuKCkpCisgICAgICAgICAgICBp
ZiAoa2luZCAhPSBHaWdhY2FnZTo6UHJpbWl0aXZlIHx8IEdpZ2FjYWdlOjpkaXNhYmxpbmdQcmlt
aXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuKCkpCiAgICAgICAgICAgICAgICAgY2FnZVdpdGhvdXRV
bnRhZ2dpbmcoa2luZCwgc3RvcmFnZSk7CiAgICAgICAgICAgICBlbHNlIHsKICNpZiBDUFUoQVJN
NjRFKQogICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gc2NyYXRjaCkKICAgICAgICAgICAg
ICAgICAgICAgc2NyYXRjaCA9IGdldENhY2hlZE1lbW9yeVRlbXBSZWdpc3RlcklEQW5kSW52YWxp
ZGF0ZSgpOwogI2VuZGlmCisgICAgICAgICAgICAgICAgSnVtcExpc3QgZG9uZTsKKyAgICAgICAg
ICAgICAgICBkb25lLmFwcGVuZChicmFuY2hUZXN0OChOb25aZXJvLCBBYnNvbHV0ZUFkZHJlc3Mo
JkdpZ2FjYWdlOjpkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2VSZXF1ZXN0ZWQpKSk7CisKICAgICAg
ICAgICAgICAgICBsb2FkUHRyKEdpZ2FjYWdlOjphZGRyZXNzT2ZCYXNlUHRyKGtpbmQpLCBzY3Jh
dGNoKTsKLSAgICAgICAgICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2hUZXN0NjQoWmVybywgc2Ny
YXRjaCk7CisgICAgICAgICAgICAgICAgZG9uZS5hcHBlbmQoYnJhbmNoVGVzdDY0KFplcm8sIHNj
cmF0Y2gpKTsKICNpZiBDUFUoQVJNNjRFKQogICAgICAgICAgICAgICAgIEdQUlJlZyB0ZW1wUmVn
ID0gZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpOwogICAgICAgICAg
ICAgICAgIG1vdmUoc3RvcmFnZSwgdGVtcFJlZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24g
MjYyNDAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTQyNCw2ICs0MjQsMjAgQEAgbWFjcm8gY2FnZShi
YXNlUHRyLCBtYXNrLCBwdHIsIHNjcmF0Y2gpCiAgICAgZW5kCiBlbmQKIAorbWFjcm8gY2FnZVBy
aW1pdGl2ZShiYXNlUHRyLCBtYXNrLCBwdHIsIHNjcmF0Y2gpCisgICAgaWYgR0lHQUNBR0VfRU5B
QkxFRCBhbmQgbm90IChDX0xPT1Agb3IgQ19MT09QX1dJTikKKyAgICAgICAgbG9hZGIgX2dfY29u
ZmlnICsgKGNvbnN0ZXhwciBHaWdhY2FnZTo6c3RhcnRPZmZzZXRPZkdpZ2FjYWdlQ29uZmlnKSAr
IEdpZ2FjYWdlOjpDb25maWc6OmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4s
IHNjcmF0Y2gKKyAgICAgICAgYnRibnogc2NyYXRjaCwgLmRvQ2FnaW5nCisKKyAgICAgICAgbG9h
ZGIgX2Rpc2FibGVQcmltaXRpdmVHaWdhY2FnZVJlcXVlc3RlZCwgc2NyYXRjaAorICAgICAgICBi
dGJueiBzY3JhdGNoLCAuZG9uZQorCisgICAgLmRvQ2FnaW5nOgorICAgICAgICBjYWdlKGJhc2VQ
dHIsIG1hc2ssIHB0ciwgc2NyYXRjaCkKKyAgICAuZG9uZToKKyAgICBlbmQKK2VuZAorCiBtYWNy
byBjYWdlZFByaW1pdGl2ZShwdHIsIGxlbmd0aCwgc2NyYXRjaCwgc2NyYXRjaDIpCiAgICAgaWYg
QVJNNjRFCiAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHNjcmF0Y2gyCkBAIC00MzIsNyArNDQ2LDcg
QEAgbWFjcm8gY2FnZWRQcmltaXRpdmUocHRyLCBsZW5ndGgsIHNjcmF0YwogICAgICAgICBjb25z
dCBzb3VyY2UgPSBwdHIKICAgICBlbmQKICAgICBpZiBHSUdBQ0FHRV9FTkFCTEVECi0gICAgICAg
IGNhZ2UoX2dfZ2lnYWNhZ2VDb25maWcgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyArIEdp
Z2FjYWdlUHJpbWl0aXZlQmFzZVB0ck9mZnNldCwgY29uc3RleHByIEdpZ2FjYWdlOjpwcmltaXRp
dmVHaWdhY2FnZU1hc2ssIHNvdXJjZSwgc2NyYXRjaCkKKyAgICAgICAgY2FnZVByaW1pdGl2ZShf
Z19jb25maWcgKyAoY29uc3RleHByIEdpZ2FjYWdlOjpzdGFydE9mZnNldE9mR2lnYWNhZ2VDb25m
aWcpICsgR2lnYWNhZ2U6OkNvbmZpZzo6YmFzZVB0cnMgKyBHaWdhY2FnZVByaW1pdGl2ZUJhc2VQ
dHJPZmZzZXQsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBzb3Vy
Y2UsIHNjcmF0Y2gpCiAgICAgICAgIGlmIEFSTTY0RQogICAgICAgICAgICAgY29uc3QgbnVtYmVy
T2ZQQUNCaXRzID0gY29uc3RleHByIE1hY3JvQXNzZW1ibGVyOjpudW1iZXJPZlBBQ0JpdHMKICAg
ICAgICAgICAgIGJmaXEgc2NyYXRjaDIsIDAsIDY0IC0gbnVtYmVyT2ZQQUNCaXRzLCBwdHIKQEAg
LTQ0Niw3ICs0NjAsNyBAQCBlbmQKIG1hY3JvIGxvYWRDYWdlZEpTVmFsdWUoc291cmNlLCBkZXN0
LCBzY3JhdGNoT3JMZW5ndGgpCiAgICAgbG9hZHAgc291cmNlLCBkZXN0CiAgICAgaWYgR0lHQUNB
R0VfRU5BQkxFRAotICAgICAgICBjYWdlKF9nX2dpZ2FjYWdlQ29uZmlnICsgR2lnYWNhZ2U6OkNv
bmZpZzo6YmFzZVB0cnMgKyBHaWdhY2FnZUpTVmFsdWVCYXNlUHRyT2Zmc2V0LCBjb25zdGV4cHIg
R2lnYWNhZ2U6OmpzVmFsdWVHaWdhY2FnZU1hc2ssIGRlc3QsIHNjcmF0Y2hPckxlbmd0aCkKKyAg
ICAgICAgY2FnZShfZ19jb25maWcgKyAoY29uc3RleHByIEdpZ2FjYWdlOjpzdGFydE9mZnNldE9m
R2lnYWNhZ2VDb25maWcpICsgR2lnYWNhZ2U6OkNvbmZpZzo6YmFzZVB0cnMgKyBHaWdhY2FnZUpT
VmFsdWVCYXNlUHRyT2Zmc2V0LCBjb25zdGV4cHIgR2lnYWNhZ2U6OmpzVmFsdWVHaWdhY2FnZU1h
c2ssIGRlc3QsIHNjcmF0Y2hPckxlbmd0aCkKICAgICBlbmQKIGVuZAogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NDb25maWcuaAkocmV2aXNpb24gMjYyNDAyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDcgKzUxLDcgQEAgc3RydWN0IENvbmZpZyB7CiAgICAgICAgIGVuYWJsZVJlc3RyaWN0
ZWRPcHRpb25zKCk7CiAgICAgfQogCi0gICAgYm9vbCBpc1Blcm1hbmVudGx5RnJvemVuKCkgeyBy
ZXR1cm4gV1RGOjpnX3d0ZkNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuOyB9CisgICAgYm9vbCBp
c1Blcm1hbmVudGx5RnJvemVuKCkgeyByZXR1cm4gZ193dGZDb25maWcuaXNQZXJtYW5lbnRseUZy
b3plbjsgfQogCiAgICAgLy8gQWxsIHRoZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3Qgc2hvdWxkIGJl
IGNob3NlbiBzdWNoIHRoYXQgdGhlaXIKICAgICAvLyBpbml0aWFsIHZhbHVlIGlzIDAgLyBudWxs
IC8gZmFsc3kgYmVjYXVzZSBDb25maWcgaXMgaW5zdGFudGlhdGVkCkBAIC04MiwxMiArODIsMTEg
QEAgc3RydWN0IENvbmZpZyB7CiAgICAgV1RGOjpQdHJUYWdMb29rdXAgcHRyVGFnTG9va3VwUmVj
b3JkOwogfTsKIAotY29uc3RleHByIHNpemVfdCBvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbiA9
IG9mZnNldG9mKFdURjo6Q29uZmlnLCBzcGFjZUZvckV4dGVuc2lvbnMpOwogY29uc3RleHByIHNp
emVfdCBhbGlnbm1lbnRPZkpTQ0NvbmZpZyA9IHN0ZDo6YWxpZ25tZW50X29mPEpTQzo6Q29uZmln
Pjo6dmFsdWU7CiAKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKEpTQzo6Q29uZmlnKSA8PSAoc2l6ZW9m
KFdURjo6Q29uZmlnKSAtIG9mZnNldE9mV1RGQ29uZmlnRXh0ZW5zaW9uKSk7Ci1zdGF0aWNfYXNz
ZXJ0KHJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25tZW50T2ZKU0NDb25maWc+KG9mZnNldE9mV1RG
Q29uZmlnRXh0ZW5zaW9uKSA9PSBvZmZzZXRPZldURkNvbmZpZ0V4dGVuc2lvbik7CitzdGF0aWNf
YXNzZXJ0KFdURjo6b2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24gKyBzaXplb2YoSlNDOjpDb25m
aWcpIDw9IFdURjo6Q29uZmlnU2l6ZVRvUHJvdGVjdCk7CitzdGF0aWNfYXNzZXJ0KHJvdW5kVXBU
b011bHRpcGxlT2Y8YWxpZ25tZW50T2ZKU0NDb25maWc+KFdURjo6b2Zmc2V0T2ZXVEZDb25maWdF
eHRlbnNpb24pID09IFdURjo6b2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24pOwogCi0jZGVmaW5l
IGdfanNjQ29uZmlnICgqYml0d2lzZV9jYXN0PENvbmZpZyo+KCZXVEY6Omdfd3RmQ29uZmlnLnNw
YWNlRm9yRXh0ZW5zaW9ucykpCisjZGVmaW5lIGdfanNjQ29uZmlnICgqYml0d2lzZV9jYXN0PEpT
Qzo6Q29uZmlnKj4oJmdfd3RmQ29uZmlnLnNwYWNlRm9yRXh0ZW5zaW9ucykpCiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MjQwMikKKysrIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDYtMDIgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIENoYW5nZSBHaWdhY2FnZTo6Q29uZmln
IHRvIHVzZSBzdG9yYWdlIGluIFdlYkNvbmZpZzo6Z19jb25maWcgaW5zdGVhZCBvZiBpdHMgb3du
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNTg1
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzgxMjQ4Nz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBub3cgdGhpbmsgb2YgdGhlIHZhcmlvdXMg
Q29uZmlnIHJlY29yZHMgYXMgYmVpbmcgYWxsb2NhdGVkIGZyb20gcGFydHMgb2YgYQorICAgICAg
ICBXZWJDb25maWc6OmdfY29uZmlnIGJ1ZmZlci4gIFdURjo6Q29uZmlnIHdpbGwgbWFuYWdlIHRo
ZSBtZWNoYW5pY3Mgb2YgZnJlZXppbmcKKyAgICAgICAgdGhhdCBidWZmZXIuICBBbmQgdGhlIEpT
QyBWTSBpcyBzdGlsbCB0aGUgZGV0ZXJtaW5lciBvZiBpZi93aGVuIHRvIGZyZWV6ZSB0aGUKKyAg
ICAgICAgYnVmZmVyLCBhbmQgaXQgd2lsbCBkbyB0aGlzIGF0IHRoZSBlbmQgb2YgdGhlIGNvbnN0
cnVjdGlvbiBvZiB0aGUgdmVyeSBmaXJzdAorICAgICAgICBWTSBpbnN0YW5jZSAoYXMgYmVmb3Jl
KS4KKworICAgICAgICBHaWdhY2FnZTo6Q29uZmlnIHJlc2VydmVzIHNwYWNlIGluIFdlYkNvbmZp
Zzo6Z19jb25maWcuCisgICAgICAgIFdURjo6Q29uZmlnIHdpbGwgaG9ub3IgdGhhdCByZXNlcnZh
dGlvbiBhbmQgcGxhY2UgaXRzZWxmIGFmdGVyIHRoYXQuCisgICAgICAgIEpTQzo6Q29uZmlnIHdp
bGwgY29udGludWUgdG8gcGxhY2UgaXRzZWxmIGF0IFdURjo6Q29uZmlnOjpzcGFjZUZvckV4dGVu
c2lvbnMuCisKKyAgICAgICAgVGhlIHVwc2lkZSBvZiB0aGlzIGFwcHJvYWNoIHRoaXMgaXMgdGhh
dCB3ZSBjYW4gbm93IHNoYXJlIHRoZSBzYW1lIG1lbW9yeSBwYWdlCisgICAgICAgIGZvciBhbGwg
dGhlIENvbmZpZ3MsIGFuZCBjYW4gZnJlZXplIHRoZW0gaW4gb25lIGdvLgorCisgICAgICAgIFRo
ZSBkb3duc2lkZSBpcyB0aGF0IGdfZ2lnYWNhZ2VDb25maWcsIGdfd3RmQ29uZmlnLCBhbmQgZ19q
c2NDb25maWcgbm93IGhhdmUgdG8KKyAgICAgICAgYmUgbWFjcm9zLiAgVGhpcyByZXN1bHRzIGlu
IHNvbWUgd2VpcmRuZXNzIGUuZy4gdGhleSBhcmUgbm8gbG9uZ2VyIHF1YWxpZmllZCBieQorICAg
ICAgICBuYW1lc3BhY2VzOiByZWZlcnJpbmcgdG8gV1RGOjpnX3d0ZkNvbmZpZyBpcyBub3cgaW5j
b3JyZWN0LgorCisgICAgICAgICogd3RmL0dpZ2FjYWdlLmg6CisgICAgICAgIChHaWdhY2FnZTo6
ZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbik6CisgICAgICAgIChHaWdhY2Fn
ZTo6aXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbik6IERlbGV0ZWQuCisgICAg
ICAgIChHaWdhY2FnZTo6aXNQcmltaXRpdmVHaWdhY2FnZVBlcm1hbmVudGx5RW5hYmxlZCk6IERl
bGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Y2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvV1RGQ29uZmlnLmNwcDoKKyAgICAgICAgKFdURjo6
Q29uZmlnOjpwZXJtYW5lbnRseUZyZWV6ZSk6CisgICAgICAgICogd3RmL1dURkNvbmZpZy5oOgor
ICAgICAgICAoKTogRGVsZXRlZC4KKwogMjAyMC0wNi0wMSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgRU5BQkxFKFRPVUNIX0FDVElPTl9SRUdJ
T05TKSB0byB3cmFwIGNvZGUgdGhhdCdzIG9ubHkgcmVsZXZhbnQgZm9yIHBsYXRmb3JtcyB0aGF0
IGNvbnN1bHQgdG91Y2gtYWN0aW9uIGZvciBldmVudCBoYW5kbGluZwpJbmRleDogU291cmNlL1dU
Ri93dGYvR2lnYWNhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5o
CShyZXZpc2lvbiAyNjI0MDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MSwxMCArNTEsNiBAQCBpbmxpbmUgdm9pZCByZW1vdmVQcmltaXRpdmVEaXNh
YmxlQ2FsbGJhCiAKIGlubGluZSB2b2lkIGZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdl
KCkgeyB9CiAKLWlubGluZSBib29sIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VGb3JiaWRk
ZW4oKSB7IHJldHVybiBmYWxzZTsgfQotaW5saW5lIGJvb2wgaXNQcmltaXRpdmVHaWdhY2FnZVBl
cm1hbmVudGx5RW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci1pbmxpbmUgYm9vbCBjYW5Qcmlt
aXRpdmVHaWdhY2FnZUJlRGlzYWJsZWQoKSB7IHJldHVybiB0cnVlOyB9Ci0KIEFMV0FZU19JTkxJ
TkUgY29uc3QgY2hhciogbmFtZShLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CkBA
IC03MCw2ICs2Niw3IEBAIEFMV0FZU19JTkxJTkUgY29uc3QgY2hhciogbmFtZShLaW5kIGtpbmQK
IH0KIAogQUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNvbnN0IHZvaWQqKSB7IHJldHVybiBm
YWxzZTsgfQorQUxXQVlTX0lOTElORSBib29sIGRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNG
b3JiaWRkZW4oKSB7IHJldHVybiBmYWxzZTsgfQogQUxXQVlTX0lOTElORSBib29sIGlzRW5hYmxl
ZChLaW5kKSB7IHJldHVybiBmYWxzZTsgfQogQUxXQVlTX0lOTElORSBzaXplX3QgbWFzayhLaW5k
KSB7IHJldHVybiAwOyB9CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dURkNvbmZpZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmNwcAkocmV2aXNpb24gMjYyNDAy
KQorKysgU291cmNlL1dURi93dGYvV1RGQ29uZmlnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgPHd0Zi9XVEZDb25maWcu
aD4KIAorI2luY2x1ZGUgPHd0Zi9HaWdhY2FnZS5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNSw5ICszNiwxMyBAQAogI2luY2x1
ZGUgPHN5cy9tbWFuLmg+CiAjZW5kaWYKIAotbmFtZXNwYWNlIFdURiB7CituYW1lc3BhY2UgV2Vi
Q29uZmlnIHsKKworYWxpZ25hcyhXVEY6OkNvbmZpZ1NpemVUb1Byb3RlY3QpIFNsb3QgZ19jb25m
aWdbV1RGOjpDb25maWdTaXplVG9Qcm90ZWN0IC8gc2l6ZW9mKFNsb3QpXTsKIAotYWxpZ25hcyhD
b25maWdTaXplVG9Qcm90ZWN0KSBXVEZfRVhQT1JUX1BSSVZBVEUgQ29uZmlnIGdfd3RmQ29uZmln
OworfSAvLyBuYW1lc3BhY2UgV2ViQ29uZmlnCisKK25hbWVzcGFjZSBXVEYgewogCiB2b2lkIENv
bmZpZzo6cGVybWFuZW50bHlGcmVlemUoKQogewpAQCAtNDYsOCArNTEsMTIgQEAgdm9pZCBDb25m
aWc6OnBlcm1hbmVudGx5RnJlZXplKCkKIAogICAgIFJFTEVBU0VfQVNTRVJUKHJvdW5kVXBUb011
bHRpcGxlT2YocGFnZVNpemUoKSwgQ29uZmlnU2l6ZVRvUHJvdGVjdCkgPT0gQ29uZmlnU2l6ZVRv
UHJvdGVjdCk7CiAKLSAgICBpZiAoIWdfd3RmQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4pCisg
ICAgaWYgKCFnX3d0ZkNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuKSB7CiAgICAgICAgIGdfd3Rm
Q29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4gPSB0cnVlOworI2lmIEdJR0FDQUdFX0VOQUJMRUQK
KyAgICAgICAgZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVudGx5RnJvemVuID0gdHJ1ZTsKKyNl
bmRpZgorICAgIH0KIAogICAgIGludCByZXN1bHQgPSAwOwogI2lmIE9TKERBUldJTikKQEAgLTU3
LDkgKzY2LDkgQEAgdm9pZCBDb25maWc6OnBlcm1hbmVudGx5RnJlZXplKCkKICAgICB9OwogCiAg
ICAgLy8gVGhlcmUncyBubyBnb2luZyBiYWNrIG5vdyEKLSAgICByZXN1bHQgPSB2bV9wcm90ZWN0
KG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190PigmZ193dGZD
b25maWcpLCBDb25maWdTaXplVG9Qcm90ZWN0LCBEaXNhbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0
ZXJUaGlzLCBWTV9QUk9UX1JFQUQpOworICAgIHJlc3VsdCA9IHZtX3Byb3RlY3QobWFjaF90YXNr
X3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KCZXZWJDb25maWc6OmdfY29u
ZmlnKSwgQ29uZmlnU2l6ZVRvUHJvdGVjdCwgRGlzYWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVy
VGhpcywgVk1fUFJPVF9SRUFEKTsKICNlbGlmIE9TKExJTlVYKQotICAgIHJlc3VsdCA9IG1wcm90
ZWN0KCZnX3d0ZkNvbmZpZywgQ29uZmlnU2l6ZVRvUHJvdGVjdCwgUFJPVF9SRUFEKTsKKyAgICBy
ZXN1bHQgPSBtcHJvdGVjdCgmV2ViQ29uZmlnOjpnX2NvbmZpZywgQ29uZmlnU2l6ZVRvUHJvdGVj
dCwgUFJPVF9SRUFEKTsKICNlbGlmIE9TKFdJTkRPV1MpCiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBlcXVpdmFsZW50LCBtYXliZSB3aXRoIFZpcnR1YWxQcm90ZWN0LgogICAgIC8vIEFsc28gbmVl
ZCB0byBmaXggV2ViS2l0VGVzdFJ1bm5lci4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dURkNvbmZp
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dURkNvbmZpZy5oCShyZXZpc2lvbiAy
NjI0MDIpCisrKyBTb3VyY2UvV1RGL3d0Zi9XVEZDb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsMjIgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8
d3RmL3RocmVhZHMvU2lnbmFscy5oPgogCisjaWYgZGVmaW5lZChVU0VfU1lTVEVNX01BTExPQykg
JiYgVVNFX1NZU1RFTV9NQUxMT0MKK25hbWVzcGFjZSBHaWdhY2FnZSB7Citjb25zdGV4cHIgc2l6
ZV90IHJlc2VydmVkU2xvdHNGb3JHaWdhY2FnZUNvbmZpZyA9IDA7Citjb25zdGV4cHIgc2l6ZV90
IHJlc2VydmVkQnl0ZXNGb3JHaWdhY2FnZUNvbmZpZyA9IDA7Cit9CisjZWxzZQorI2luY2x1ZGUg
PGJtYWxsb2MvR2lnYWNhZ2VDb25maWcuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29uZmln
IHsKKwordXNpbmcgU2xvdCA9IHVpbnQ2NF90OworZXh0ZXJuICJDIiBXVEZfRVhQT1JUX1BSSVZB
VEUgU2xvdCBnX2NvbmZpZ1tdOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb25maWcKKwogbmFtZXNw
YWNlIFdURiB7CiAKIGNvbnN0ZXhwciBzaXplX3QgQ29uZmlnU2l6ZVRvUHJvdGVjdCA9IENlaWxp
bmdPblBhZ2VTaXplOwpAQCAtNDUsMjggKzYxLDMxIEBAIHN0cnVjdCBDb25maWcgewogICAgICAg
ICB+QXNzZXJ0Tm90RnJvemVuU2NvcGUoKTsKICAgICB9OwogCi0gICAgdW5pb24gewotICAgICAg
ICBzdHJ1Y3QgewotICAgICAgICAgICAgLy8gQWxsIHRoZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3Qg
c2hvdWxkIGJlIGNob3NlbiBzdWNoIHRoYXQgdGhlaXIKLSAgICAgICAgICAgIC8vIGluaXRpYWwg
dmFsdWUgaXMgMCAvIG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQK
LSAgICAgICAgICAgIC8vIGFzIGEgZ2xvYmFsIHNpbmdsZXRvbi4KKyAgICAvLyBBbGwgdGhlIGZp
ZWxkcyBpbiB0aGlzIHN0cnVjdCBzaG91bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVpcgorICAg
IC8vIGluaXRpYWwgdmFsdWUgaXMgMCAvIG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBp
bnN0YW50aWF0ZWQKKyAgICAvLyBhcyBhIGdsb2JhbCBzaW5nbGV0b24uCiAKLSAgICAgICAgICAg
IGJvb2wgaXNQZXJtYW5lbnRseUZyb3plbjsKKyAgICBib29sIGlzUGVybWFuZW50bHlGcm96ZW47
CiAKICNpZiBVU0UoUFRIUkVBRFMpICYmIEhBVkUoTUFDSElORV9DT05URVhUKQotICAgICAgICAg
ICAgU2lnbmFsSGFuZGxlcnMgc2lnbmFsSGFuZGxlcnM7CisgICAgU2lnbmFsSGFuZGxlcnMgc2ln
bmFsSGFuZGxlcnM7CiAjZW5kaWYKLSAgICAgICAgICAgIFB0clRhZ0xvb2t1cCogcHRyVGFnTG9v
a3VwSGVhZDsKKyAgICBQdHJUYWdMb29rdXAqIHB0clRhZ0xvb2t1cEhlYWQ7CiAKLSAgICAgICAg
ICAgIHVpbnQ2NF90IHNwYWNlRm9yRXh0ZW5zaW9uc1sxXTsKLSAgICAgICAgfTsKLSAgICAgICAg
Y2hhciBlbnN1cmVTaXplW0NvbmZpZ1NpemVUb1Byb3RlY3RdOwotICAgIH07CisgICAgdWludDY0
X3Qgc3BhY2VGb3JFeHRlbnNpb25zWzFdOwogfTsKIAotZXh0ZXJuICJDIiBhbGlnbmFzKENvbmZp
Z1NpemVUb1Byb3RlY3QpIFdURl9FWFBPUlRfUFJJVkFURSBDb25maWcgZ193dGZDb25maWc7Citj
b25zdGV4cHIgc2l6ZV90IHN0YXJ0U2xvdE9mV1RGQ29uZmlnID0gR2lnYWNhZ2U6OnJlc2VydmVk
U2xvdHNGb3JHaWdhY2FnZUNvbmZpZzsKK2NvbnN0ZXhwciBzaXplX3Qgc3RhcnRPZmZzZXRPZldU
RkNvbmZpZyA9IHN0YXJ0U2xvdE9mV1RGQ29uZmlnICogc2l6ZW9mKFdlYkNvbmZpZzo6U2xvdCk7
CisKK2NvbnN0ZXhwciBzaXplX3Qgb2Zmc2V0T2ZXVEZDb25maWdFeHRlbnNpb24gPSBzdGFydE9m
ZnNldE9mV1RGQ29uZmlnICsgb2Zmc2V0b2YoV1RGOjpDb25maWcsIHNwYWNlRm9yRXh0ZW5zaW9u
cyk7CisKK2NvbnN0ZXhwciBzaXplX3QgYWxpZ25tZW50T2ZXVEZDb25maWcgPSBzdGQ6OmFsaWdu
bWVudF9vZjxXVEY6OkNvbmZpZz46OnZhbHVlOworCitzdGF0aWNfYXNzZXJ0KEdpZ2FjYWdlOjpy
ZXNlcnZlZEJ5dGVzRm9yR2lnYWNhZ2VDb25maWcgKyBzaXplb2YoV1RGOjpDb25maWcpIDw9IENv
bmZpZ1NpemVUb1Byb3RlY3QpOworc3RhdGljX2Fzc2VydChyb3VuZFVwVG9NdWx0aXBsZU9mPGFs
aWdubWVudE9mV1RGQ29uZmlnPihzdGFydE9mZnNldE9mV1RGQ29uZmlnKSA9PSBzdGFydE9mZnNl
dE9mV1RGQ29uZmlnKTsKIAotc3RhdGljX2Fzc2VydChzaXplb2YoQ29uZmlnKSA9PSBDb25maWdT
aXplVG9Qcm90ZWN0KTsKKyNkZWZpbmUgZ193dGZDb25maWcgKCpiaXR3aXNlX2Nhc3Q8V1RGOjpD
b25maWcqPigmV2ViQ29uZmlnOjpnX2NvbmZpZ1tXVEY6OnN0YXJ0U2xvdE9mV1RGQ29uZmlnXSkp
CiAKIEFMV0FZU19JTkxJTkUgQ29uZmlnOjpBc3NlcnROb3RGcm96ZW5TY29wZTo6QXNzZXJ0Tm90
RnJvemVuU2NvcGUoKQogewpJbmRleDogU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyNDA3KQorKysgU291
cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE1IEBACisy
MDIwLTA2LTAyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFu
Z2UgR2lnYWNhZ2U6OkNvbmZpZyB0byB1c2Ugc3RvcmFnZSBpbiBXZWJDb25maWc6OmdfY29uZmln
IGluc3RlYWQgb2YgaXRzIG93bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxMjU4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM4MTI0ODc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gR2lnYWNh
Z2U6OkNvbmZpZyBub3cgcmVzZXJ2ZXMgYW5kIGV4cGVjdCBzcGFjZSB0byBiZSBhdmFpbGFibGUg
aW4gYW4gZXh0ZXJuYWwKKyAgICAgICAgICAgV2ViQ29uZmlnOjpnX2NvbmZpZyBidWZmZXIuICBH
aWdhY2FnZSBkb2VzIG5vdCBhbGxvY2F0ZSB0aGF0IGJ1ZmZlci4KKworICAgICAgICAyLiBNb3Zl
ZCBHaWdhY2FnZTo6Q29uZmlnIHRvIEdpZ2FjYWdlQ29uZmlnLmguCisgICAgICAgICAgIFRoaXMg
YWxsb3dzIFdURkNvbmZpZy5oIHRvIGluY2x1ZGUgR2lnYWNhZ2VDb25maWcuaCBpbnN0ZWFkIG9m
IGFsbCBvZiBHaWdhY2FnZS5oLgorCisgICAgICAgIDMuIE1vdmVkIEdpZ2FjYWdlOjpLaW5kIHRv
IEdpZ2FjYWdlS2luZC5oLgorICAgICAgICAgICBPdGhlcndpc2UsIEdpZ2FjYWdlOjpLaW5kIHdv
dWxkIG5lZWQgdG8gbW92ZSB0byBHaWdhY2FnZUNvbmZpZy5oIHdoaWNoIGlzIGEKKyAgICAgICAg
ICAgd2VpcmQgcGxhY2UgdG8gcHV0IGl0LgorCisgICAgICAgIDQuIFJlbW92ZWQgZnJlZXplR2ln
YWNhZ2VDb25maWcoKSwgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpLCBhbmQKKyAgICAgICAgICAg
cGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZygpLgorCisgICAgICAgICAgIEl0IGlzIG5v
IGxvbmdlciBwb3NzaWJsZSB0byB0ZW1wb3JhcmlseSBmcmVlemUgYW5kIHVuZnJlZXplIHRoZSBH
aWdhY2FnZTo6Q29uZmlnCisgICAgICAgICAgIGJlY2F1c2UgaXQgbm93IHNoYXJlIHRoZSBzYW1l
IG1lbW9yeSBwYWdlIHdpdGggaGlnaGVyIGxldmVsIENvbmZpZ3MuCisKKyAgICAgICAgICAgcGVy
bWFuZW50bHlGcmVlemVHaWdhY2FnZUNvbmZpZygpIGlzIG5vIGxvbmdlciBuZWVkZWQgYmVjYXVz
ZSBpdCBpcyBzdWJzdW1lZAorICAgICAgICAgICBieSBXVEY6OkNvbmZpZzo6cGVybWFuZW50bHlG
cmVlemUoKSwgd2hpY2ggd2lsbCBmcmVlemUgdGhlIGVudGlyZSBXZWJDb25maWc6OmdfY29uZmln
CisgICAgICAgICAgIGJ1ZmZlci4KKworICAgICAgICAgICBPbmUgZGlmZmVyZW5jZSBpbiBiZWhh
dmlvciBoZXJlIGlzIHRoYXQgR2lnYWNhZ2U6OkNvbmZpZyBkYXRhIHVzZWQgdG8gYmUgcGVybWFu
ZW50bHkKKyAgICAgICAgICAgZnJvemVuIGFzIHNvb24gYXMgZm9yYmlkRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2UoKSBpcyBjYWxsZWQuICBOb3csIGl0IGlzbid0CisgICAgICAgICAgIHBlcm1h
bmVudGx5IGZyb3plbiB1bnRpbCB0aGUgZW5kIG9mIHRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlIGZp
cnN0IEpTQzo6Vk0gaW5zdGFuY2UKKyAgICAgICAgICAgaW4gdGhlIHByb2Nlc3MgKGp1c3QgbGlr
ZSB0aGUgb3RoZXIgQ29uZmlnIHJlY29yZHMpLiAgVGhpcyBzdGlsbCBndWFyYW50ZWVzIHRoYXQK
KyAgICAgICAgICAgaXQgaXMgZnJvemVuIGJlZm9yZSBhbnkgSlMgc2NyaXB0IGNhbiBydW4uCisK
KyAgICAgICAgNS4gUHJldmlvdXNseSwgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCkgd29ya3Mg
YnkgbnVsbGlmeWluZyB0aGUgUHJpbWl0aXZlIGdpZ2FjYWdlCisgICAgICAgICAgIGJhc2UgcG9p
bnRlci4gIFdlIGNhbiBsb25nZXIgZG8gdGhhdCBiZWNhdXNlIHRoZSBiYXNlIHBvaW50ZXIgd2ls
bCBiZSBmcm96ZW4KKyAgICAgICAgICAgb24gVk0gaW5zdGFudGlhdGlvbi4gIEluc3RlYWQsIGlm
IG5vdCBmb3JiaWRkZW4sIHdlIG5vdyBkaXNhYmxlIHRoZSBQcmltaXRpdmUKKyAgICAgICAgICAg
Z2lnYWNhZ2UgYnkgc2V0dGluZyBhIGRpc2FibGVQcmltaXRpdmVHaWdhY2FnZVJlcXVlc3RlZCBi
b29sIHZhcmlhYmxlIHRoYXQgaXMKKyAgICAgICAgICAgbm90IGZyb3plbiBpbiB0aGUgR2lnYWNh
Z2U6OkNvbmZpZy4KKworICAgICAgICAgICBUbyBjaGVjayBpZiB0aGUgUHJpbWl0aXZlIGdpZ2Fj
YWdlIGlzIGVuYWJsZWQsIHRoZSBMTEludCwgQXNzZW1ibHlIZWxwZXJzOjpjYWdlQ29uZGl0aW9u
YWxseSgpLAorICAgICAgICAgICBhbmQgcnVudGltZSBmdW5jdGlvbnMgd2lsbCBjaGVjayB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICAgICAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcu
YmFzZVB0cihQcmltaXRpdmUpICYmCisgICAgICAgICAgICAgICAgICAgKGRpc2FibGluZ1ByaW1p
dGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4oKSB8fCBkaXNhYmxlTm90UmVxdWVzdGVkRm9yUHJpbWl0
aXZlR2lnYWNhZ2UoKSkKKworICAgICAgICAgICAgICAgVGhlIGJhc2UgcG9pbnRlciBiZWluZyBu
dWxsIG1lYW5zIHRoZSBnaWdhY2FnZSB3YXMgbmV2ZXIgc2V0IHVwLgorCisgICAgICAgICAgICAg
ICBJZiBkaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuKCkgaXMgdHJ1ZSwgdGhl
biB3ZSBkb24ndCBjYXJlCisgICAgICAgICAgICAgICB3aGV0aGVyIGEgZGlzYWJsZSByZXF1ZXN0
IGhhcyBiZWVuIHJlY2VpdmVkLgorCisgICAgICAgICAgICAgICBPdGhlcndpc2UsIHRoZSBnaWdh
Y2FnZSBpcyBvbmx5IGVuYWJsZWQgaWYgaXQgaGFzIGJlZW4gc2V0IHVwLCBhbmQgYQorICAgICAg
ICAgICAgICAgZGlzYWJsZSByZXF1ZXN0IGhhcyBub3QgYmVlbiByZWNlaXZlZC4KKworICAgICAg
ICAgICAgICAgTm90ZSB0aGF0IHRoZSBmaXJzdCAyIHRlcm1zIGFyZSBmcm96ZW4gaW4gdGhlIEdp
Z2FjYWdlOjpDb25maWcuICBPbmx5IHRoZQorICAgICAgICAgICAgICAgbGFzdCB0ZXJtIGlzIGEg
cnVudGltZSB2YXJpYWJsZS4gIElmIGRpc2FibGluZyBpcyBmb3JiaWRkZW4sIHRoZW4gdGhlCisg
ICAgICAgICAgICAgICBydW50aW1lIHZhcmlhYmxlIG5ldmVyIGNvbWVzIGludG8gcGxheS4KKwor
ICAgICAgICAgICBUaGUgRlRMIGRvZXMgbm90IHJlbHkgb24gYSBydW50aW1lIGNoZWNrIGZvciB3
aGV0aGVyIHRoZSBQcmltaXRpdmUgZ2lnYWNhZ2UgaXMKKyAgICAgICAgICAgZW5hYmxlZCBvciBu
b3QuICBJbnN0ZWFkLCBpdCByZWxpZXMgb24gYSB3YXRjaHBvaW50IHRvIGhhbmRsZSB0aGlzLiAg
U28sIGl0CisgICAgICAgICAgIGp1c3Qgd29ya3MsIGFuZCB0aGVyZSdzIG5vIHBlcmZvcm1hbmNl
IHBlbmFsdHkgd2l0aCBhZGRpbmcgdGhlIDIgZXh0cmEgdGVybXMKKyAgICAgICAgICAgdG8gY2hl
Y2suCisKKyAgICAgICAgICAgTm90ZSBhbHNvIHRoYXQgdGhlIGpzYyBzaGVsbCBhbmQgdGhlIFdl
YlByb2Nlc3Mgd2lsbCBmb3JiaWQgZGlzYWJsaW5nIG9mIHRoZQorICAgICAgICAgICBQcmltaXRp
dmUgZ2lnYWNhZ2UuICBUaGlzIG1lYW5zIHRoZSBBc3NlbWJseUhlbHBlcnM6OmNhZ2VDb25kaXRp
b25hbGx5KCkgd2lsbAorICAgICAgICAgICBhbHNvIG5vdCBnZW5lcmF0ZSB0aGUgcnVudGltZSBj
aGVja3MgZm9yIHRoZSAyIGV4dHJhIHRlcm1zLgorCisgICAgICAgICAgIE9ubHkgdGhlIExMSW50
IGFuZCBydW50aW1lIGZ1bmN0aW9ucyB3aWxsIGhhdmUgdG8gZG8gd29yayB0byBjaGVjayB0aGUg
MiBleHRyYQorICAgICAgICAgICB0ZXJtcy4gIEJ1dCBiZWNhdXNlIHRoZXNlIGFyZSBub3QgaW4g
cGVyZiBjcml0aWNhbCBwYXRocywgdGhpcyBpcyBvay4KKworICAgICAgICAgICBOb3RlIHRoYXQg
d2UncmUgZGVsaWJlcmF0ZWx5IGdhdGluZyB0aGUgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlUmVx
dWVzdGVkCisgICAgICAgICAgIHZhcmlhYmxlIGNoZWNrIG9uIGRpc2FibGluZ1ByaW1pdGl2ZUdp
Z2FjYWdlSXNGb3JiaWRkZW4gdGhvdWdoLCBsb2dpY2FsbHksIHRoZQorICAgICAgICAgICBpc0Vu
YWJsZSBjaGVjayBkb2VzIG5vdCByZWFsbHkgZGVwZW5kIG9uIHdoZXRoZXIgZGlzYWJsaW5nIGlz
IGZvcmJpZGRlbiBvciBub3QuCisgICAgICAgICAgIFdlIGRvIHRoaXMgYmVjYXVzZSBkaXNhYmxp
bmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuIGlzIGZyb3plbiBpbiB0aGUgQ29uZmlnLAor
ICAgICAgICAgICBhbmQgaXQgaXMsIHRoZXJlZm9yZSwgYSBzdHJvbmdlciBndWFyYW50ZWUgb2Yg
Y29ycmVjdG5lc3Mgd2hlcmVhcyB0aGUgdmFyaWFibGUKKyAgICAgICAgICAgY2FuIGJlIGNvcnJ1
cHRlZC4KKworICAgICAgICA2LiBSZXBsYWNlZCBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdl
Rm9yYmlkZGVuKCksIGNhblByaW1pdGl2ZUdpZ2FjYWdlQmVEaXNhYmxlZCgpLAorICAgICAgICAg
ICBhbmQgaXNQcmltaXRpdmVHaWdhY2FnZVBlcm1hbmVudGx5RW5hYmxlZCgpIHdpdGggZGlzYWJs
aW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJpZGRlbigpLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuY3BwOgorICAgICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdp
Z2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UpOgor
ICAgICAgICAoR2lnYWNhZ2U6OmZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKToKKyAg
ICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpmcmVlemVHaWdhY2FnZUNvbmZpZyk6IERlbGV0ZWQu
CisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6dW5mcmVlemVHaWdhY2FnZUNvbmZpZyk6IERl
bGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6cGVybWFuZW50bHlGcmVlemVHaWdh
Y2FnZUNvbmZpZyk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6VW5mcmVl
emVHaWdhY2FnZUNvbmZpZ1Njb3BlOjpVbmZyZWV6ZUdpZ2FjYWdlQ29uZmlnU2NvcGUpOiBEZWxl
dGVkLgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OlVuZnJlZXplR2lnYWNhZ2VDb25maWdT
Y29wZTo6flVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChH
aWdhY2FnZTo6aXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUZvcmJpZGRlbik6IERlbGV0ZWQu
CisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZS5oOgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2Fi
bGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4pOgorICAgICAgICAoR2lnYWNhZ2U6OmRp
c2FibGVOb3RSZXF1ZXN0ZWRGb3JQcmltaXRpdmVHaWdhY2FnZSk6CisgICAgICAgIChHaWdhY2Fn
ZTo6aXNFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdlOjpiYXNlUHRyKToKKyAgICAgICAgKEdp
Z2FjYWdlOjpjYWdlZCk6CisgICAgICAgIChHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2UpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKEdpZ2FjYWdlOjpD
b25maWc6OmJhc2VQdHIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoR2lnYWNhZ2U6OkNvbmZp
Zzo6c2V0QmFzZVB0cik6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6aXNQcmltaXRpdmVH
aWdhY2FnZVBlcm1hbmVudGx5RW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6
Y2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFs
bG9jL0dpZ2FjYWdlQ29uZmlnLmg6IEFkZGVkLgorICAgICAgICAoR2lnYWNhZ2U6OkNvbmZpZzo6
YmFzZVB0ciBjb25zdCk6CisgICAgICAgIChHaWdhY2FnZTo6Q29uZmlnOjpzZXRCYXNlUHRyKToK
KyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdlS2luZC5oOiBBZGRlZC4KKyAgICAgICAgKiBibWFs
bG9jL0hlYXAuY3BwOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6dXNpbmdHaWdhY2FnZSk6Cisg
ICAgICAgICogYm1hbGxvYy9tYm1hbGxvYy5jcHA6CisKIDIwMjAtMDUtMjMgIENhaW8gTGltYSAg
PHRpY2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIFtibWFsbG9jXSBGaXggT09NIGVycm9y
cyBvbiBNSVBTIGFmdGVyIHIyNjE2NjcKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAyNjI0MDIpCisrKyBTb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNjksNiArNjksOCBAQCBzZXQoYm1hbGxvY19QVUJMSUNfSEVBREVSUwogICAgIGJtYWxs
b2MvRnJlZUxpc3QuaAogICAgIGJtYWxsb2MvRnJlZUxpc3RJbmxpbmVzLmgKICAgICBibWFsbG9j
L0dpZ2FjYWdlLmgKKyAgICBibWFsbG9jL0dpZ2FjYWdlQ29uZmlnLmgKKyAgICBibWFsbG9jL0dp
Z2FjYWdlS2luZC5oCiAgICAgYm1hbGxvYy9IZWFwLmgKICAgICBibWFsbG9jL0hlYXBDb25zdGFu
dHMuaAogICAgIGJtYWxsb2MvSGVhcEtpbmQuaApJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYyNDAyKQorKysg
U291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTEsNiArMTUxLDggQEAKIAkJRUIxN0QxMTEyM0JGQ0Q0MjAwMjA5M0E3IC8q
IEhlYXBDb25zdGFudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRUIxN0QxMTAyM0JGQzhDNDAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuY3BwICov
OyB9OwogCQlFQjE3RDExMjIzQkZDRDdBMDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIxN0QxMEUyM0JFNjkx
RDAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTQ4QkQzQjIzMjFFOEQ3MDBGMTM2RDAgLyogRmFpbHVy
ZUFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU0OEJEM0EyMzIxRThDQzAwRjEzNkQwIC8qIEZhaWx1cmVBY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRUMzQTM5MzI0ODQ2QTgxMDAz
OTVCNTQgLyogR2lnYWNhZ2VDb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFQzNBMzkyMjQ4NDZBNkQwMDM5NUI1NCAvKiBHaWdhY2FnZUNvbmZp
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZF
QzNBMzk1MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzNBMzk0MjQ4NDcxRkUwMDM5NUI1NCAv
KiBHaWdhY2FnZUtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0zMDcsNiArMzA5LDggQEAKIAkJRUIxN0Qx
MEUyM0JFNjkxRDAwMjA5M0E3IC8qIEhlYXBDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gSGVhcENvbnN0YW50cy5oOyBwYXRoID0gYm1hbGxvYy9IZWFwQ29uc3Rh
bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMTdEMTEwMjNCRkM4QzQwMDIw
OTNBNyAvKiBIZWFwQ29uc3RhbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEhlYXBDb25zdGFudHMuY3BwOyBwYXRoID0gYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0OEJEM0EyMzIxRThDQzAwRjEzNkQw
IC8qIEZhaWx1cmVBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmFp
bHVyZUFjdGlvbi5oOyBwYXRoID0gYm1hbGxvYy9GYWlsdXJlQWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFQzNBMzkyMjQ4NDZBNkQwMDM5NUI1NCAvKiBHaWdhY2FnZUNv
bmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHaWdhY2FnZUNvbmZpZy5o
OyBwYXRoID0gYm1hbGxvYy9HaWdhY2FnZUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRUMzQTM5NDI0ODQ3MUZFMDAzOTVCNTQgLyogR2lnYWNhZ2VLaW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdpZ2FjYWdlS2luZC5oOyBwYXRoID0gYm1hbGxv
Yy9HaWdhY2FnZUtpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwpAQCAtNDg2LDYgKzQ5MCw4IEBACiAJCQkJRkU0OEJEM0EyMzIxRThDQzAw
RjEzNkQwIC8qIEZhaWx1cmVBY3Rpb24uaCAqLywKIAkJCQkwRjVCRjE0RTFGMjJERUFGMDAyOUQ5
MUQgLyogR2lnYWNhZ2UuY3BwICovLAogCQkJCTBGNUJGMTRDMUYyMkIwQzMwMDI5RDkxRCAvKiBH
aWdhY2FnZS5oICovLAorCQkJCUZFQzNBMzkyMjQ4NDZBNkQwMDM5NUI1NCAvKiBHaWdhY2FnZUNv
bmZpZy5oICovLAorCQkJCUZFQzNBMzk0MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQu
aCAqLywKIAkJCQkxNERBMzIwRTE4ODc1RDlGMDA3MjY5RTAgLyogSGVhcC5jcHAgKi8sCiAJCQkJ
MTREQTMyMEMxODg3NUIwOTAwNzI2OUUwIC8qIEhlYXAuaCAqLywKIAkJCQlFQjE3RDExMDIzQkZD
OEM0MDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5jcHAgKi8sCkBAIC02MDYsNiArNjEyLDcgQEAK
IAkJCQlGRTQ4QkQzQjIzMjFFOEQ3MDBGMTM2RDAgLyogRmFpbHVyZUFjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTRERDc4QzgxOEY0OEQ3NTAwOTUwNzAyIC8qIEZpeGVkVmVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjdFQjg0NDFGOTU0MUIwMDBGMUFCQ0IgLyogRnJlZUxpc3QuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFQzNBMzkzMjQ4NDZBODEwMDM5NUI1NCAvKiBHaWdhY2FnZUNv
bmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3RUI4MjkxRjk1NDFCMDAwRjFBQkNCIC8qIEZy
ZWVMaXN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QkYxNEQxRjIyQjBDMzAwMjlE
OTFEIC8qIEdpZ2FjYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDAwMjc0OTE4Rjg5QzEzMDAx
MTVDOTcgLyogSGVhcC5oIGluIEhlYWRlcnMgKi8sCkBAIC02NTQsNiArNjYxLDcgQEAKIAkJCQlF
Mzc4QTlFMDI0NkI2ODc1MDAyOUMyQkIgLyogT2JqZWN0VHlwZVRhYmxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMzI4RDg0RDIzQ0VCMzg5MDA1NDVCMTggLyogUGFja2VkLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjVCRjE0OTFGMjJBOEQ4MDAyOUQ5MUQgLyogUGVySGVhcEtpbmQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUZFQzNBMzk1MjQ4NDcxRkUwMDM5NUI1NCAvKiBHaWdhY2FnZUtpbmQuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0REQ3OENCMThGNDhENzUwMDk1MDcwMiAvKiBQZXJQcm9jZXNz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhDQzE4RjQ4RDc1MDA5NTA3MDIgLyogUGVyVGhy
ZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3OTVBQjNDNzIwNkUwRDM0MDA3NEZFNzYgLyogUGh5
c2ljYWxQYWdlTWFwLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvR2lnYWNhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2ln
YWNhZ2UuY3BwCShyZXZpc2lvbiAyNjI0MDIpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dp
Z2FjYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgQ2FsbGJh
Y2sgewogICAgIHZvaWQqIGFyZ3VtZW50IHsgbnVsbHB0ciB9OwogfTsKIAotfQorfSAvLyBuYW1l
c3BhY2UgR2lnYWNhZ2UKIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCkBAIC03OSw3NSArNzksMTIg
QEAgbmFtZXNwYWNlIEdpZ2FjYWdlIHsKIC8vIElmIHRoaXMgd2VyZSBsZXNzIHRoYW4gMzJHQiwg
dGhvc2UgT09CIGFjY2Vzc2VzIGNvdWxkIHJlYWNoIG91dHNpZGUgb2YgdGhlIGNhZ2UuCiBjb25z
dGV4cHIgc2l6ZV90IGdpZ2FjYWdlUnVud2F5ID0gMzJsbHUgKiBibWFsbG9jOjpTaXplczo6R0I7
CiAKLWFsaWduYXMoY29uZmlnU2l6ZVRvUHJvdGVjdCkgQ29uZmlnIGdfZ2lnYWNhZ2VDb25maWc7
Citib29sIGRpc2FibGVQcmltaXRpdmVHaWdhY2FnZVJlcXVlc3RlZCA9IGZhbHNlOwogCiB1c2lu
ZyBuYW1lc3BhY2UgYm1hbGxvYzsKIAogbmFtZXNwYWNlIHsKIAotI2lmIEJPUyhEQVJXSU4pCi1l
bnVtIHsKLSAgICBBbGxvd1Blcm1pc3Npb25DaGFuZ2VzQWZ0ZXJUaGlzID0gZmFsc2UsCi0gICAg
RGlzYWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcyA9IHRydWUKLX07Ci0jZW5kaWYKLQot
c3RhdGljIHZvaWQgZnJlZXplR2lnYWNhZ2VDb25maWcoKQotewotICAgIGludCByZXN1bHQ7Ci0j
aWYgQk9TKERBUldJTikKLSAgICByZXN1bHQgPSB2bV9wcm90ZWN0KG1hY2hfdGFza19zZWxmKCks
IHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190PigmZ19naWdhY2FnZUNvbmZpZyksIGNvbmZp
Z1NpemVUb1Byb3RlY3QsIEFsbG93UGVybWlzc2lvbkNoYW5nZXNBZnRlclRoaXMsIFZNX1BST1Rf
UkVBRCk7Ci0jZWxzZQotICAgIHJlc3VsdCA9IG1wcm90ZWN0KCZnX2dpZ2FjYWdlQ29uZmlnLCBj
b25maWdTaXplVG9Qcm90ZWN0LCBQUk9UX1JFQUQpOwotI2VuZGlmCi0gICAgUkVMRUFTRV9CQVNT
RVJUKCFyZXN1bHQpOwotfQotCi1zdGF0aWMgdm9pZCB1bmZyZWV6ZUdpZ2FjYWdlQ29uZmlnKCkK
LXsKLSAgICBSRUxFQVNFX0JBU1NFUlQoIWdfZ2lnYWNhZ2VDb25maWcuaXNQZXJtYW5lbnRseUZy
b3plbik7Ci0gICAgaW50IHJlc3VsdDsKLSNpZiBCT1MoREFSV0lOKQotICAgIHJlc3VsdCA9IHZt
X3Byb3RlY3QobWFjaF90YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+
KCZnX2dpZ2FjYWdlQ29uZmlnKSwgY29uZmlnU2l6ZVRvUHJvdGVjdCwgQWxsb3dQZXJtaXNzaW9u
Q2hhbmdlc0FmdGVyVGhpcywgVk1fUFJPVF9SRUFEIHwgVk1fUFJPVF9XUklURSk7Ci0jZWxzZQot
ICAgIHJlc3VsdCA9IG1wcm90ZWN0KCZnX2dpZ2FjYWdlQ29uZmlnLCBjb25maWdTaXplVG9Qcm90
ZWN0LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKLSNlbmRpZgotICAgIFJFTEVBU0VfQkFTU0VS
VCghcmVzdWx0KTsKLX0KLQotc3RhdGljIHZvaWQgcGVybWFuZW50bHlGcmVlemVHaWdhY2FnZUNv
bmZpZygpCi17Ci0gICAgc3RhdGljIE11dGV4IGNvbmZpZ0xvY2s7Ci0gICAgTG9ja0hvbGRlciBs
b2NraW5nKGNvbmZpZ0xvY2spOwotCi0gICAgaWYgKCFnX2dpZ2FjYWdlQ29uZmlnLmlzUGVybWFu
ZW50bHlGcm96ZW4pIHsKLSAgICAgICAgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpOwotICAgICAg
ICBnX2dpZ2FjYWdlQ29uZmlnLmlzUGVybWFuZW50bHlGcm96ZW4gPSB0cnVlOwotICAgIH0KLQot
ICAgIC8vIFRoZXJlJ3Mgbm8gZ29pbmcgYmFjayBub3chCi0gICAgaW50IHJlc3VsdDsKLSNpZiBC
T1MoREFSV0lOKQotICAgIHJlc3VsdCA9IHZtX3Byb3RlY3QobWFjaF90YXNrX3NlbGYoKSwgcmVp
bnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KCZnX2dpZ2FjYWdlQ29uZmlnKSwgY29uZmlnU2l6
ZVRvUHJvdGVjdCwgRGlzYWxsb3dQZXJtaXNzaW9uQ2hhbmdlc0FmdGVyVGhpcywgVk1fUFJPVF9S
RUFEKTsKLSNlbHNlCi0gICAgcmVzdWx0ID0gbXByb3RlY3QoJmdfZ2lnYWNhZ2VDb25maWcsIGNv
bmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCk7Ci0jZW5kaWYKLSAgICBSRUxFQVNFX0JBU1NF
UlQoIXJlc3VsdCk7Ci19Ci0KLWNsYXNzIFVuZnJlZXplR2lnYWNhZ2VDb25maWdTY29wZSB7Ci1w
dWJsaWM6Ci0gICAgVW5mcmVlemVHaWdhY2FnZUNvbmZpZ1Njb3BlKCkKLSAgICB7Ci0gICAgICAg
IHVuZnJlZXplR2lnYWNhZ2VDb25maWcoKTsKLSAgICB9Ci0gICAgCi0gICAgflVuZnJlZXplR2ln
YWNhZ2VDb25maWdTY29wZSgpCi0gICAgewotICAgICAgICBmcmVlemVHaWdhY2FnZUNvbmZpZygp
OwotICAgIH0KLX07Ci0KIHNpemVfdCBydW53YXlTaXplKEtpbmQga2luZCkKIHsKICAgICBzd2l0
Y2ggKGtpbmQpIHsKQEAgLTI0MCw3ICsxNzcsNiBAQCB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkKICAg
ICAgICAgICAgIGdfZ2lnYWNhZ2VDb25maWcudG90YWxTaXplID0gdG90YWxTaXplOwogICAgICAg
ICAgICAgdm1EZWFsbG9jYXRlUGh5c2ljYWxQYWdlcyhiYXNlLCB0b3RhbFNpemUpOwogICAgICAg
ICAgICAgZ19naWdhY2FnZUNvbmZpZy5pc0VuYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgZnJl
ZXplR2lnYWNhZ2VDb25maWcoKTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTI1MCw5ICsxODYsOSBA
QCB2b2lkIGRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpCiAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiRkFUQUw6IERpc2FibGluZyBQcmltaXRpdmUgZ2lnYWNhZ2UgaXMgZm9yYmlkZGVuLCBidXQg
d2UgZG9uJ3Qgd2FudCB0aGF0IGluIHRoaXMgcHJvY2Vzcy5cbiIpOwogCiAgICAgUkVMRUFTRV9C
QVNTRVJUKCFnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3Ji
aWRkZW4pOwotICAgIFJFTEVBU0VfQkFTU0VSVCghZ19naWdhY2FnZUNvbmZpZy5pc1Blcm1hbmVu
dGx5RnJvemVuKTsKIAogICAgIGVuc3VyZUdpZ2FjYWdlKCk7CisgICAgZGlzYWJsZVByaW1pdGl2
ZUdpZ2FjYWdlUmVxdWVzdGVkID0gdHJ1ZTsKICAgICBpZiAoIWdfZ2lnYWNhZ2VDb25maWcuYmFz
ZVB0cnNbUHJpbWl0aXZlXSkgewogICAgICAgICAvLyBJdCB3YXMgbmV2ZXIgZW5hYmxlZC4gVGhh
dCBtZWFucyB0aGF0IHdlIG5ldmVyIGV2ZW4gc2F2ZWQgYW55IGNhbGxiYWNrcy4gT3IsIHdlIGhh
ZCBhbHJlYWR5IGRpc2FibGVkCiAgICAgICAgIC8vIGl0IGJlZm9yZSwgYW5kIGFscmVhZHkgY2Fs
bGVkIHRoZSBjYWxsYmFja3MuCkBAIC0yNjQsOCArMjAwLDYgQEAgdm9pZCBkaXNhYmxlUHJpbWl0
aXZlR2lnYWNhZ2UoKQogICAgIGZvciAoQ2FsbGJhY2smIGNhbGxiYWNrIDogY2FsbGJhY2tzLmNh
bGxiYWNrcykKICAgICAgICAgY2FsbGJhY2suZnVuY3Rpb24oY2FsbGJhY2suYXJndW1lbnQpOwog
ICAgIGNhbGxiYWNrcy5jYWxsYmFja3Muc2hyaW5rKDApOwotICAgIFVuZnJlZXplR2lnYWNhZ2VD
b25maWdTY29wZSB1bmZyZWV6ZVNjb3BlOwotICAgIGdfZ2lnYWNhZ2VDb25maWcuYmFzZVB0cnNb
UHJpbWl0aXZlXSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgYWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxi
YWNrKHZvaWQgKCpmdW5jdGlvbikodm9pZCopLCB2b2lkKiBhcmd1bWVudCkKQEAgLTMxMiwxNyAr
MjQ2LDkgQEAgdm9pZCBmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpCiAgICAgUkVM
RUFTRV9CQVNTRVJUKGdfZ2lnYWNhZ2VDb25maWcuc2hvdWxkQmVFbmFibGVkSGFzQmVlbkNhbGxl
ZAogICAgICAgICAmJiAoR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCB8fCAhZ19naWdhY2Fn
ZUNvbmZpZy5zaG91bGRCZUVuYWJsZWQgfHwgdmVyaWZ5R2lnYWNhZ2VJc0VuYWJsZWQoKSkpOwog
Ci0gICAgaWYgKCFnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNG
b3JiaWRkZW4pIHsKLSAgICAgICAgdW5mcmVlemVHaWdhY2FnZUNvbmZpZygpOworICAgIGlmICgh
Z19naWdhY2FnZUNvbmZpZy5kaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuKQog
ICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3Ji
aWRkZW4gPSB0cnVlOwotICAgIH0KLSAgICBwZXJtYW5lbnRseUZyZWV6ZUdpZ2FjYWdlQ29uZmln
KCk7Ci0gICAgUkVMRUFTRV9CQVNTRVJUKGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VGb3Ji
aWRkZW4oKSk7Ci19Ci0KLUJOT19JTkxJTkUgYm9vbCBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2Fj
YWdlRm9yYmlkZGVuKCkKLXsKLSAgICByZXR1cm4gZ19naWdhY2FnZUNvbmZpZy5kaXNhYmxpbmdQ
cmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuOworICAgIFJFTEVBU0VfQkFTU0VSVChkaXNhYmxp
bmdQcmltaXRpdmVHaWdhY2FnZUlzRm9yYmlkZGVuKCkpOwogfQogCiBib29sIHNob3VsZEJlRW5h
YmxlZCgpCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCShyZXZpc2lvbiAyNjI0MDIp
CisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNSwxMiArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJBbGdvcml0aG0u
aCIKICNpbmNsdWRlICJCQXNzZXJ0LmgiCiAjaW5jbHVkZSAiQkV4cG9ydC5oIgogI2luY2x1ZGUg
IkJJbmxpbmUuaCIKICNpbmNsdWRlICJCUGxhdGZvcm0uaCIKKyNpbmNsdWRlICJHaWdhY2FnZUNv
bmZpZy5oIgogI2luY2x1ZGUgIlNpemVzLmgiCisjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCiAj
aW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogCkBAIC00NCwxMiArNDUs
NiBAQAogCiBuYW1lc3BhY2UgR2lnYWNhZ2UgewogCi1lbnVtIEtpbmQgewotICAgIFByaW1pdGl2
ZSwKLSAgICBKU1ZhbHVlLAotICAgIE51bWJlck9mS2luZHMKLX07Ci0KIEJJTkxJTkUgY29uc3Qg
Y2hhciogbmFtZShLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CkBAIC02Niw4ICs2
MSw2IEBAIEJJTkxJTkUgY29uc3QgY2hhciogbmFtZShLaW5kIGtpbmQpCiAKICNpZiBHSUdBQ0FH
RV9FTkFCTEVECiAKLWNvbnN0ZXhwciBzaXplX3QgY29uZmlnU2l6ZVRvUHJvdGVjdCA9IDE2ICog
Ym1hbGxvYzo6U2l6ZXM6OmtCOwotCiAjaWYgQk9TX0VGRkVDVElWRV9BRERSRVNTX1dJRFRIIDwg
NDgKIGNvbnN0ZXhwciBzaXplX3QgcHJpbWl0aXZlR2lnYWNhZ2VTaXplID0gMiAqIGJtYWxsb2M6
OlNpemVzOjpHQjsKIGNvbnN0ZXhwciBzaXplX3QganNWYWx1ZUdpZ2FjYWdlU2l6ZSA9IDIgKiBi
bWFsbG9jOjpTaXplczo6R0I7CkBAIC05Nyw1MSArOTAsMTEgQEAgY29uc3RleHByIHNpemVfdCBn
aWdhY2FnZVNpemVUb01hc2soc2l6ZQogY29uc3RleHByIHNpemVfdCBwcmltaXRpdmVHaWdhY2Fn
ZU1hc2sgPSBnaWdhY2FnZVNpemVUb01hc2socHJpbWl0aXZlR2lnYWNhZ2VTaXplKTsKIGNvbnN0
ZXhwciBzaXplX3QganNWYWx1ZUdpZ2FjYWdlTWFzayA9IGdpZ2FjYWdlU2l6ZVRvTWFzayhqc1Zh
bHVlR2lnYWNhZ2VTaXplKTsKIAotc3RydWN0IENvbmZpZyB7Ci0gICAgdm9pZCogYmFzZVB0cihL
aW5kIGtpbmQpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0JBU1NFUlQoa2luZCA8IE51
bWJlck9mS2luZHMpOwotICAgICAgICByZXR1cm4gYmFzZVB0cnNba2luZF07Ci0gICAgfQotCi0g
ICAgdm9pZCBzZXRCYXNlUHRyKEtpbmQga2luZCwgdm9pZCogcHRyKQotICAgIHsKLSAgICAgICAg
UkVMRUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRzKTsKLSAgICAgICAgYmFzZVB0cnNb
a2luZF0gPSBwdHI7Ci0gICAgfQotCi0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgewotICAg
ICAgICAgICAgLy8gQWxsIHRoZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3Qgc2hvdWxkIGJlIGNob3Nl
biBzdWNoIHRoYXQgdGhlaXIKLSAgICAgICAgICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAvIG51
bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZpZyBpcyBpbnN0YW50aWF0ZWQKLSAgICAgICAgICAgIC8v
IGFzIGEgZ2xvYmFsIHNpbmdsZXRvbi4KLQotICAgICAgICAgICAgYm9vbCBpc0VuYWJsZWQ7Ci0g
ICAgICAgICAgICBib29sIGlzUGVybWFuZW50bHlGcm96ZW47Ci0gICAgICAgICAgICBib29sIGRp
c2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW47Ci0gICAgICAgICAgICBib29sIHNo
b3VsZEJlRW5hYmxlZDsKLQotICAgICAgICAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBqdXN0IHB1
dCB0aGUgc3RkOjpvbmNlX2ZsYWcgZm9yIHRoZXNlIGZ1bmN0aW9ucwotICAgICAgICAgICAgLy8g
aGVyZSwgYnV0IHdlIGNhbid0IGJlY2F1c2Ugc3RkOjpvbmNlX2ZsYWcgaGFzIGEgaW1wbGljaXRs
eS1kZWxldGVkCi0gICAgICAgICAgICAvLyBkZWZhdWx0IGNvbnN0cnVjdG9yLiBTbywgd2UgdXNl
IGEgYm9vbGVhbiBpbnN0ZWFkLgotICAgICAgICAgICAgYm9vbCBzaG91bGRCZUVuYWJsZWRIYXNC
ZWVuQ2FsbGVkOwotICAgICAgICAgICAgYm9vbCBlbnN1cmVHaWdhY2FnZUhhc0JlZW5DYWxsZWQ7
Ci0KLSAgICAgICAgICAgIHZvaWQqIHN0YXJ0OwotICAgICAgICAgICAgc2l6ZV90IHRvdGFsU2l6
ZTsKLSAgICAgICAgICAgIHZvaWQqIGJhc2VQdHJzW051bWJlck9mS2luZHNdOwotICAgICAgICB9
OwotICAgICAgICBjaGFyIGVuc3VyZVNpemVbY29uZmlnU2l6ZVRvUHJvdGVjdF07Ci0gICAgfTsK
LX07Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihDb25maWcpID09IGNvbmZpZ1NpemVUb1Byb3RlY3Qs
ICJHaWdhY2FnZSBDb25maWcgbXVzdCBmaXQgaW4gY29uZmlnU2l6ZVRvUHJvdGVjdCIpOwotCi1l
eHRlcm4gIkMiIGFsaWduYXMoY29uZmlnU2l6ZVRvUHJvdGVjdCkgQkVYUE9SVCBDb25maWcgZ19n
aWdhY2FnZUNvbmZpZzsKLQogLy8gVGhlc2UgY29uc3RhbnRzIGFyZSBuZWVkZWQgYnkgdGhlIExM
SW50LgogY29uc3RleHByIHB0cmRpZmZfdCBvZmZzZXRPZlByaW1pdGl2ZUdpZ2FjYWdlQmFzZVB0
ciA9IEtpbmQ6OlByaW1pdGl2ZSAqIHNpemVvZih2b2lkKik7CiBjb25zdGV4cHIgcHRyZGlmZl90
IG9mZnNldE9mSlNWYWx1ZUdpZ2FjYWdlQmFzZVB0ciA9IEtpbmQ6OkpTVmFsdWUgKiBzaXplb2Yo
dm9pZCopOwogCitleHRlcm4gIkMiIEJFWFBPUlQgYm9vbCBkaXNhYmxlUHJpbWl0aXZlR2lnYWNh
Z2VSZXF1ZXN0ZWQ7CiAKIEJJTkxJTkUgYm9vbCBpc0VuYWJsZWQoKSB7IHJldHVybiBnX2dpZ2Fj
YWdlQ29uZmlnLmlzRW5hYmxlZDsgfQogCkBAIC0xNTUsMTIgKzEwOCwyNiBAQCBCRVhQT1JUIHZv
aWQgcmVtb3ZlUHJpbWl0aXZlRGlzYWJsZUNhbGxiCiAKIEJFWFBPUlQgdm9pZCBmb3JiaWREaXNh
YmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOwogCi1CRVhQT1JUIGJvb2wgaXNEaXNhYmxpbmdQcmlt
aXRpdmVHaWdhY2FnZUZvcmJpZGRlbigpOwotaW5saW5lIGJvb2wgaXNQcmltaXRpdmVHaWdhY2Fn
ZVBlcm1hbmVudGx5RW5hYmxlZCgpIHsgcmV0dXJuIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2VGb3JiaWRkZW4oKTsgfQotaW5saW5lIGJvb2wgY2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2Fi
bGVkKCkgeyByZXR1cm4gIWlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VGb3JiaWRkZW4oKTsg
fQorQklOTElORSBib29sIGRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW4oKQor
eworICAgIHJldHVybiBnX2dpZ2FjYWdlQ29uZmlnLmRpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdl
SXNGb3JiaWRkZW47Cit9CisKK0JJTkxJTkUgYm9vbCBkaXNhYmxlTm90UmVxdWVzdGVkRm9yUHJp
bWl0aXZlR2lnYWNhZ2UoKQoreworICAgIHJldHVybiAhZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdl
UmVxdWVzdGVkOworfQorCitCSU5MSU5FIGJvb2wgaXNFbmFibGVkKEtpbmQga2luZCkKK3sKKyAg
ICBpZiAoa2luZCA9PSBQcmltaXRpdmUpCisgICAgICAgIHJldHVybiBnX2dpZ2FjYWdlQ29uZmln
LmJhc2VQdHIoUHJpbWl0aXZlKSAmJiAoZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VJc0ZvcmJp
ZGRlbigpIHx8IGRpc2FibGVOb3RSZXF1ZXN0ZWRGb3JQcmltaXRpdmVHaWdhY2FnZSgpKTsKKyAg
ICByZXR1cm4gZ19naWdhY2FnZUNvbmZpZy5iYXNlUHRyKGtpbmQpOworfQogCiBCSU5MSU5FIHZv
aWQqIGJhc2VQdHIoS2luZCBraW5kKQogeworICAgIEJBU1NFUlQoaXNFbmFibGVkKGtpbmQpKTsK
ICAgICByZXR1cm4gZ19naWdhY2FnZUNvbmZpZy5iYXNlUHRyKGtpbmQpOwogfQogCkBAIC0xNzAs
MTEgKzEzNyw2IEBAIEJJTkxJTkUgdm9pZCogYWRkcmVzc09mQmFzZVB0cihLaW5kIGtpbmQKICAg
ICByZXR1cm4gJmdfZ2lnYWNhZ2VDb25maWcuYmFzZVB0cnNba2luZF07CiB9CiAKLUJJTkxJTkUg
Ym9vbCBpc0VuYWJsZWQoS2luZCBraW5kKQotewotICAgIHJldHVybiAhIWdfZ2lnYWNhZ2VDb25m
aWcuYmFzZVB0cihraW5kKTsKLX0KLQogQklOTElORSBzaXplX3Qgc2l6ZShLaW5kIGtpbmQpCiB7
CiAgICAgc3dpdGNoIChraW5kKSB7CkBAIC0yMTAsOSArMTcyLDkgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KIEJJTkxJTkUgVCogY2FnZWQoS2luZCBraW5kLCBUKiBwdHIpCiB7CiAgICAgQkFTU0VS
VChwdHIpOwotICAgIHZvaWQqIGdpZ2FjYWdlQmFzZVB0ciA9IGdfZ2lnYWNhZ2VDb25maWcuYmFz
ZVB0cihraW5kKTsKLSAgICBpZiAoIWdpZ2FjYWdlQmFzZVB0cikKKyAgICBpZiAoIWlzRW5hYmxl
ZChraW5kKSkKICAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB2b2lkKiBnaWdhY2FnZUJhc2VQdHIg
PSBiYXNlUHRyKGtpbmQpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPigKICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGdpZ2FjYWdlQmFzZVB0cikgKyAoCiAgICAg
ICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSAmIG1hc2soa2luZCkpKTsK
QEAgLTI1MSwxMyArMjEzLDEzIEBAIEJJTkxJTkUgdm9pZCogYmFzZVB0cihLaW5kKQogQklOTElO
RSBzaXplX3Qgc2l6ZShLaW5kKSB7IEJDUkFTSCgpOyByZXR1cm4gMDsgfQogQklOTElORSB2b2lk
IGVuc3VyZUdpZ2FjYWdlKCkgeyB9CiBCSU5MSU5FIGJvb2wgY29udGFpbnMoY29uc3Qgdm9pZCop
IHsgcmV0dXJuIGZhbHNlOyB9CitCSU5MSU5FIGJvb2wgZGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2VJc0ZvcmJpZGRlbigpIHsgcmV0dXJuIGZhbHNlOyB9CiBCSU5MSU5FIGJvb2wgaXNFbmFibGVk
KCkgeyByZXR1cm4gZmFsc2U7IH0KIEJJTkxJTkUgYm9vbCBpc0NhZ2VkKEtpbmQsIGNvbnN0IHZv
aWQqKSB7IHJldHVybiB0cnVlOyB9CiBCSU5MSU5FIGJvb2wgaXNFbmFibGVkKEtpbmQpIHsgcmV0
dXJuIGZhbHNlOyB9CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBCSU5MSU5FIFQqIGNhZ2VkKEtpbmQs
IFQqIHB0cikgeyByZXR1cm4gcHRyOyB9CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBCSU5MSU5FIFQq
IGNhZ2VkTWF5QmVOdWxsKEtpbmQsIFQqIHB0cikgeyByZXR1cm4gcHRyOyB9CiBCSU5MSU5FIHZv
aWQgZm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKSB7IH0KLUJJTkxJTkUgYm9vbCBj
YW5QcmltaXRpdmVHaWdhY2FnZUJlRGlzYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQogQklOTElO
RSB2b2lkIGRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpIHsgfQogQklOTElORSB2b2lkIGFkZFBy
aW1pdGl2ZURpc2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KIEJJTkxJ
TkUgdm9pZCByZW1vdmVQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2sodm9pZCAoKikodm9pZCopLCB2
b2lkKikgeyB9CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlQ29uZmlnLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZUNvbmZpZy5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2VDb25maWcuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBbGdvcml0aG0u
aCIKKyNpbmNsdWRlICJHaWdhY2FnZUtpbmQuaCIKKyNpbmNsdWRlICJTdGRMaWJFeHRyYXMuaCIK
KyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorCituYW1lc3BhY2UgV2ViQ29uZmlnIHsKKwordXNpbmcg
U2xvdCA9IHVpbnQ2NF90OworZXh0ZXJuICJDIiBTbG90IGdfY29uZmlnW107CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvbmZpZworCituYW1lc3BhY2UgR2lnYWNhZ2UgeworCitzdHJ1Y3QgQ29uZmln
IHsKKyAgICB2b2lkKiBiYXNlUHRyKEtpbmQga2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIFJF
TEVBU0VfQkFTU0VSVChraW5kIDwgTnVtYmVyT2ZLaW5kcyk7CisgICAgICAgIHJldHVybiBiYXNl
UHRyc1traW5kXTsKKyAgICB9CisKKyAgICB2b2lkIHNldEJhc2VQdHIoS2luZCBraW5kLCB2b2lk
KiBwdHIpCisgICAgeworICAgICAgICBSRUxFQVNFX0JBU1NFUlQoa2luZCA8IE51bWJlck9mS2lu
ZHMpOworICAgICAgICBiYXNlUHRyc1traW5kXSA9IHB0cjsKKyAgICB9CisKKyAgICAvLyBBbGwg
dGhlIGZpZWxkcyBpbiB0aGlzIHN0cnVjdCBzaG91bGQgYmUgY2hvc2VuIHN1Y2ggdGhhdCB0aGVp
cgorICAgIC8vIGluaXRpYWwgdmFsdWUgaXMgMCAvIG51bGwgLyBmYWxzeSBiZWNhdXNlIENvbmZp
ZyBpcyBpbnN0YW50aWF0ZWQKKyAgICAvLyBhcyBhIGdsb2JhbCBzaW5nbGV0b24uCisKKyAgICBi
b29sIGlzUGVybWFuZW50bHlGcm96ZW47IC8vIFdpbGwgYmUgc2V0IGJ5IHRoZSBjbGllbnQgaWYg
dGhlIENvbmZpZyBnZXRzIGZyb3plbi4KKyAgICBib29sIGlzRW5hYmxlZDsKKyAgICBib29sIGRp
c2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSXNGb3JiaWRkZW47CisgICAgYm9vbCBzaG91bGRCZUVu
YWJsZWQ7CisKKyAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIGp1c3QgcHV0IHRoZSBzdGQ6Om9uY2Vf
ZmxhZyBmb3IgdGhlc2UgZnVuY3Rpb25zCisgICAgLy8gaGVyZSwgYnV0IHdlIGNhbid0IGJlY2F1
c2Ugc3RkOjpvbmNlX2ZsYWcgaGFzIGEgaW1wbGljaXRseS1kZWxldGVkCisgICAgLy8gZGVmYXVs
dCBjb25zdHJ1Y3Rvci4gU28sIHdlIHVzZSBhIGJvb2xlYW4gaW5zdGVhZC4KKyAgICBib29sIHNo
b3VsZEJlRW5hYmxlZEhhc0JlZW5DYWxsZWQ7CisgICAgYm9vbCBlbnN1cmVHaWdhY2FnZUhhc0Jl
ZW5DYWxsZWQ7CisKKyAgICB2b2lkKiBzdGFydDsKKyAgICBzaXplX3QgdG90YWxTaXplOworICAg
IHZvaWQqIGJhc2VQdHJzW051bWJlck9mS2luZHNdOworfTsKKworY29uc3RleHByIHNpemVfdCBz
dGFydFNsb3RPZkdpZ2FjYWdlQ29uZmlnID0gMDsKK2NvbnN0ZXhwciBzaXplX3Qgc3RhcnRPZmZz
ZXRPZkdpZ2FjYWdlQ29uZmlnID0gc3RhcnRTbG90T2ZHaWdhY2FnZUNvbmZpZyAqIHNpemVvZihX
ZWJDb25maWc6OlNsb3QpOworCitjb25zdGV4cHIgc2l6ZV90IHJlc2VydmVkU2xvdHNGb3JHaWdh
Y2FnZUNvbmZpZyA9IDY7Citjb25zdGV4cHIgc2l6ZV90IHJlc2VydmVkQnl0ZXNGb3JHaWdhY2Fn
ZUNvbmZpZyA9IHJlc2VydmVkU2xvdHNGb3JHaWdhY2FnZUNvbmZpZyAqIHNpemVvZihXZWJDb25m
aWc6OlNsb3QpOworCitjb25zdGV4cHIgc2l6ZV90IGFsaWdubWVudE9mR2lnYWNhZ2VDb25maWcg
PSBzdGQ6OmFsaWdubWVudF9vZjxHaWdhY2FnZTo6Q29uZmlnPjo6dmFsdWU7CisKK3N0YXRpY19h
c3NlcnQoc2l6ZW9mKEdpZ2FjYWdlOjpDb25maWcpIDw9IHJlc2VydmVkQnl0ZXNGb3JHaWdhY2Fn
ZUNvbmZpZyk7CitzdGF0aWNfYXNzZXJ0KGJtYWxsb2M6OnJvdW5kVXBUb011bHRpcGxlT2Y8YWxp
Z25tZW50T2ZHaWdhY2FnZUNvbmZpZz4oc3RhcnRPZmZzZXRPZkdpZ2FjYWdlQ29uZmlnKSA9PSBz
dGFydE9mZnNldE9mR2lnYWNhZ2VDb25maWcpOworCisjZGVmaW5lIGdfZ2lnYWNhZ2VDb25maWcg
KCpibWFsbG9jOjpiaXR3aXNlX2Nhc3Q8R2lnYWNhZ2U6OkNvbmZpZyo+KCZXZWJDb25maWc6Omdf
Y29uZmlnW0dpZ2FjYWdlOjpzdGFydFNsb3RPZkdpZ2FjYWdlQ29uZmlnXSkpCisKK30gLy8gbmFt
ZXNwYWNlIEdpZ2FjYWdlCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlS2lu
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2VLaW5kLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZUtpbmQuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBHaWdhY2FnZSB7
CisKK2VudW0gS2luZCB7CisgICAgUHJpbWl0aXZlLAorICAgIEpTVmFsdWUsCisgICAgTnVtYmVy
T2ZLaW5kcworfTsKKworfSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UKSW5kZXg6IFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9IZWFwLmNwcAkocmV2aXNpb24gMjYyNDAyKQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9I
ZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTIgKzU2LDEzIEBAIEhlYXA6OkhlYXAoSGVh
cEtpbmQga2luZCwgTG9ja0hvbGRlciYpCiAgICAgR2lnYWNhZ2U6OmVuc3VyZUdpZ2FjYWdlKCk7
CiAjaWYgR0lHQUNBR0VfRU5BQkxFRAogICAgIGlmICh1c2luZ0dpZ2FjYWdlKCkpIHsKLSAgICAg
ICAgUkVMRUFTRV9CQVNTRVJUKGdpZ2FjYWdlQmFzZVB0cigpKTsKKyAgICAgICAgdm9pZCogZ2ln
YWNhZ2VCYXNlUHRyID0gdGhpcy0+Z2lnYWNhZ2VCYXNlUHRyKCk7CisgICAgICAgIFJFTEVBU0Vf
QkFTU0VSVChnaWdhY2FnZUJhc2VQdHIpOwogICAgICAgICB1aW50NjRfdCByYW5kb21bMl07CiAg
ICAgICAgIGNyeXB0b1JhbmRvbShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihyYW5k
b20pLCBzaXplb2YocmFuZG9tKSk7CiAgICAgICAgIHNpemVfdCBzaXplID0gcm91bmREb3duVG9N
dWx0aXBsZU9mKHZtUGFnZVNpemUoKSwgZ2lnYWNhZ2VTaXplKCkgLSAocmFuZG9tWzBdICUgR2ln
YWNhZ2U6Om1heGltdW1DYWdlU2l6ZVJlZHVjdGlvbkZvclNsaWRlKSk7CiAgICAgICAgIHB0cmRp
ZmZfdCBvZmZzZXQgPSByb3VuZERvd25Ub011bHRpcGxlT2Yodm1QYWdlU2l6ZSgpLCByYW5kb21b
MV0gJSAoZ2lnYWNhZ2VTaXplKCkgLSBzaXplKSk7Ci0gICAgICAgIHZvaWQqIGJhc2UgPSByZWlu
dGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihnaWdhY2FnZUJhc2VQdHIoKSkgKyBvZmZzZXQ7
CisgICAgICAgIHZvaWQqIGJhc2UgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihn
aWdhY2FnZUJhc2VQdHIpICsgb2Zmc2V0OwogICAgICAgICBtX2xhcmdlRnJlZS5hZGQoTGFyZ2VS
YW5nZShiYXNlLCBzaXplLCAwLCAwKSk7CiAgICAgfQogI2VuZGlmCkBAIC03MSw3ICs3Miw3IEBA
IEhlYXA6OkhlYXAoSGVhcEtpbmQga2luZCwgTG9ja0hvbGRlciYpCiAKIGJvb2wgSGVhcDo6dXNp
bmdHaWdhY2FnZSgpCiB7Ci0gICAgcmV0dXJuIGlzR2lnYWNhZ2UobV9raW5kKSAmJiBnaWdhY2Fn
ZUJhc2VQdHIoKTsKKyAgICByZXR1cm4gaXNHaWdhY2FnZShtX2tpbmQpICYmIEdpZ2FjYWdlOjpp
c0VuYWJsZWQoZ2lnYWNhZ2VLaW5kKG1fa2luZCkpOwogfQogCiB2b2lkKiBIZWFwOjpnaWdhY2Fn
ZUJhc2VQdHIoKQpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9tYm1hbGxvYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9tYm1hbGxvYy5jcHAJKHJldmlzaW9u
IDI2MjQwMikKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvbWJtYWxsb2MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw2ICsyNiwxNSBAQAogI2luY2x1ZGUgImJtYWxsb2MuaCIKIAogI2luY2x1
ZGUgIkJFeHBvcnQuaCIKKyNpbmNsdWRlICJHaWdhY2FnZUNvbmZpZy5oIgorCituYW1lc3BhY2Ug
V2ViQ29uZmlnIHsKKworY29uc3RleHByIHNpemVfdCBDb25maWdTaXplVG9Qcm90ZWN0ID0gMTYg
KiBibWFsbG9jOjpTaXplczo6a0I7CisKK2FsaWduYXMoQ29uZmlnU2l6ZVRvUHJvdGVjdCkgQkVY
UE9SVCBTbG90IGdfY29uZmlnW0NvbmZpZ1NpemVUb1Byb3RlY3QgLyBzaXplb2YoU2xvdCldOwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb25maWcKIAogZXh0ZXJuICJDIiB7CiAK
</data>
<flag name="review"
          id="416209"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>